[llvm] 5515188 - [AMDGPU] Select S_CSELECT_B32/64 for uniform extensions from i1 (#204238)

via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 30 03:24:03 PDT 2026


Author: Jay Foad
Date: 2026-06-30T11:23:34+01:00
New Revision: 5515188560107ef07fe1085d6779915ed47b32c0

URL: https://github.com/llvm/llvm-project/commit/5515188560107ef07fe1085d6779915ed47b32c0
DIFF: https://github.com/llvm/llvm-project/commit/5515188560107ef07fe1085d6779915ed47b32c0.diff

LOG: [AMDGPU] Select S_CSELECT_B32/64 for uniform extensions from i1 (#204238)

Fixes #59869

Added: 
    

Modified: 
    llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
    llvm/lib/Target/AMDGPU/SIInstructions.td
    llvm/test/CodeGen/AMDGPU/a-v-flat-atomicrmw.ll
    llvm/test/CodeGen/AMDGPU/add.ll
    llvm/test/CodeGen/AMDGPU/add_i1.ll
    llvm/test/CodeGen/AMDGPU/addsub64_carry.ll
    llvm/test/CodeGen/AMDGPU/agpr-copy-no-free-registers.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.128bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.160bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.16bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.192bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.224bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.256bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.288bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.320bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.32bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.352bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.384bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.448bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.48bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.576bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.640bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.64bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.704bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.768bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.832bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.896bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.960bit.ll
    llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.96bit.ll
    llvm/test/CodeGen/AMDGPU/amdgpu-miscellaneous-uniform-intrinsic.ll
    llvm/test/CodeGen/AMDGPU/anyext.ll
    llvm/test/CodeGen/AMDGPU/atomic_optimizations_pixelshader.ll
    llvm/test/CodeGen/AMDGPU/av-split-dead-valno-crash.ll
    llvm/test/CodeGen/AMDGPU/blender-no-live-segment-at-def-implicit-def.ll
    llvm/test/CodeGen/AMDGPU/branch-folding-implicit-def-subreg.ll
    llvm/test/CodeGen/AMDGPU/branch-relaxation-gfx1250.ll
    llvm/test/CodeGen/AMDGPU/branch-relaxation.ll
    llvm/test/CodeGen/AMDGPU/bug-cselect-b64.ll
    llvm/test/CodeGen/AMDGPU/carryout-selection.ll
    llvm/test/CodeGen/AMDGPU/coalescer_distribute.ll
    llvm/test/CodeGen/AMDGPU/coexec-scheduler.ll
    llvm/test/CodeGen/AMDGPU/combine-add-zext-xor.ll
    llvm/test/CodeGen/AMDGPU/combine_andor_with_cmps.ll
    llvm/test/CodeGen/AMDGPU/commute-compares-scalar-float.ll
    llvm/test/CodeGen/AMDGPU/ctpop.ll
    llvm/test/CodeGen/AMDGPU/ctpop16.ll
    llvm/test/CodeGen/AMDGPU/ctpop64.ll
    llvm/test/CodeGen/AMDGPU/dagcombine-fma-crash.ll
    llvm/test/CodeGen/AMDGPU/dagcombine-lshr-and-cmp.ll
    llvm/test/CodeGen/AMDGPU/dagcombine-select.ll
    llvm/test/CodeGen/AMDGPU/divergence-driven-trunc-to-i1.ll
    llvm/test/CodeGen/AMDGPU/dynamic_stackalloc.ll
    llvm/test/CodeGen/AMDGPU/exec-mask-opt-cannot-create-empty-or-backward-segment.ll
    llvm/test/CodeGen/AMDGPU/expand-scalar-carry-out-select-user.ll
    llvm/test/CodeGen/AMDGPU/extract-subvector-16bit.ll
    llvm/test/CodeGen/AMDGPU/extract_vector_dynelt.ll
    llvm/test/CodeGen/AMDGPU/fcmp.f16.ll
    llvm/test/CodeGen/AMDGPU/fcopysign.f16.ll
    llvm/test/CodeGen/AMDGPU/fix-sgpr-copies-phi-regression-issue130646-issue130119.ll
    llvm/test/CodeGen/AMDGPU/flat-saddr-atomics.ll
    llvm/test/CodeGen/AMDGPU/flat_atomics_i64.ll
    llvm/test/CodeGen/AMDGPU/flat_atomics_i64_system.ll
    llvm/test/CodeGen/AMDGPU/float-sopc-vopc.ll
    llvm/test/CodeGen/AMDGPU/fneg-modifier-casting.ll
    llvm/test/CodeGen/AMDGPU/fp-classify.ll
    llvm/test/CodeGen/AMDGPU/fp_to_sint.ll
    llvm/test/CodeGen/AMDGPU/fp_to_uint.ll
    llvm/test/CodeGen/AMDGPU/fptosi.f16.ll
    llvm/test/CodeGen/AMDGPU/fptoui.f16.ll
    llvm/test/CodeGen/AMDGPU/fptrunc.f16.ll
    llvm/test/CodeGen/AMDGPU/fptrunc.ll
    llvm/test/CodeGen/AMDGPU/freeze.ll
    llvm/test/CodeGen/AMDGPU/frem.ll
    llvm/test/CodeGen/AMDGPU/gep-const-address-space.ll
    llvm/test/CodeGen/AMDGPU/implicit-kernarg-backend-usage.ll
    llvm/test/CodeGen/AMDGPU/indirect-addressing-si.ll
    llvm/test/CodeGen/AMDGPU/infer-addrspace-flat-atomic.ll
    llvm/test/CodeGen/AMDGPU/insert-delay-alu-bug.ll
    llvm/test/CodeGen/AMDGPU/insert-waitcnts-merge.ll
    llvm/test/CodeGen/AMDGPU/insert_vector_dynelt.ll
    llvm/test/CodeGen/AMDGPU/insert_vector_elt.ll
    llvm/test/CodeGen/AMDGPU/intrinsic-amdgcn-s-alloc-vgpr.ll
    llvm/test/CodeGen/AMDGPU/issue176578.ll
    llvm/test/CodeGen/AMDGPU/large-phi-search.ll
    llvm/test/CodeGen/AMDGPU/literal64.ll
    llvm/test/CodeGen/AMDGPU/llvm.amdgcn.class.f16.ll
    llvm/test/CodeGen/AMDGPU/llvm.amdgcn.class.ll
    llvm/test/CodeGen/AMDGPU/llvm.amdgcn.is.private.ll
    llvm/test/CodeGen/AMDGPU/llvm.amdgcn.is.shared.ll
    llvm/test/CodeGen/AMDGPU/llvm.amdgcn.kill.ll
    llvm/test/CodeGen/AMDGPU/llvm.amdgcn.quadmask.ll
    llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.barrier.signal.isfirst.ll
    llvm/test/CodeGen/AMDGPU/llvm.amdgcn.set.inactive.ll
    llvm/test/CodeGen/AMDGPU/llvm.amdgcn.tensor.load.store.ll
    llvm/test/CodeGen/AMDGPU/llvm.fma.f16.ll
    llvm/test/CodeGen/AMDGPU/llvm.is.fpclass.bf16.ll
    llvm/test/CodeGen/AMDGPU/llvm.is.fpclass.f16.ll
    llvm/test/CodeGen/AMDGPU/llvm.is.fpclass.ll
    llvm/test/CodeGen/AMDGPU/llvm.set.rounding.ll
    llvm/test/CodeGen/AMDGPU/long-branch-reserve-register.ll
    llvm/test/CodeGen/AMDGPU/mad-combine.ll
    llvm/test/CodeGen/AMDGPU/mad-mix-bf16.ll
    llvm/test/CodeGen/AMDGPU/memcpy-crash-issue63986.ll
    llvm/test/CodeGen/AMDGPU/min.ll
    llvm/test/CodeGen/AMDGPU/mixed-vmem-types.ll
    llvm/test/CodeGen/AMDGPU/mul.ll
    llvm/test/CodeGen/AMDGPU/no-fold-accvgpr-mov.ll
    llvm/test/CodeGen/AMDGPU/noclobber-barrier.ll
    llvm/test/CodeGen/AMDGPU/optimize-negated-cond.ll
    llvm/test/CodeGen/AMDGPU/or.ll
    llvm/test/CodeGen/AMDGPU/rewrite-vgpr-mfma-to-agpr-phi.ll
    llvm/test/CodeGen/AMDGPU/s-cluster-barrier.ll
    llvm/test/CodeGen/AMDGPU/s_cmp_0.ll
    llvm/test/CodeGen/AMDGPU/saddo.ll
    llvm/test/CodeGen/AMDGPU/sdiv64.ll
    llvm/test/CodeGen/AMDGPU/select-undef.ll
    llvm/test/CodeGen/AMDGPU/selectcc-opt.ll
    llvm/test/CodeGen/AMDGPU/setcc-opt.ll
    llvm/test/CodeGen/AMDGPU/setcc.ll
    llvm/test/CodeGen/AMDGPU/setcc64.ll
    llvm/test/CodeGen/AMDGPU/sgpr-control-flow.ll
    llvm/test/CodeGen/AMDGPU/sgpr-copy.ll
    llvm/test/CodeGen/AMDGPU/sgpr-to-vreg1-copy.ll
    llvm/test/CodeGen/AMDGPU/si-unify-exit-multiple-unreachables.ll
    llvm/test/CodeGen/AMDGPU/si-unify-exit-return-unreachable.ll
    llvm/test/CodeGen/AMDGPU/sign_extend.ll
    llvm/test/CodeGen/AMDGPU/simplifydemandedbits-recursion.ll
    llvm/test/CodeGen/AMDGPU/sink-addr-memory-intrinsics.ll
    llvm/test/CodeGen/AMDGPU/sminmax.v2i16.ll
    llvm/test/CodeGen/AMDGPU/srem.ll
    llvm/test/CodeGen/AMDGPU/srem64.ll
    llvm/test/CodeGen/AMDGPU/ssubo.ll
    llvm/test/CodeGen/AMDGPU/structurize-hoist.ll
    llvm/test/CodeGen/AMDGPU/sub-zext-cc-zext-cc.ll
    llvm/test/CodeGen/AMDGPU/sub_i1.ll
    llvm/test/CodeGen/AMDGPU/trunc-cmp-constant.ll
    llvm/test/CodeGen/AMDGPU/tuple-allocation-failure.ll
    llvm/test/CodeGen/AMDGPU/uaddo.ll
    llvm/test/CodeGen/AMDGPU/udiv64.ll
    llvm/test/CodeGen/AMDGPU/undefined-subreg-liverange.ll
    llvm/test/CodeGen/AMDGPU/uniform-cfg.ll
    llvm/test/CodeGen/AMDGPU/unstructured-cfg-def-use-issue.ll
    llvm/test/CodeGen/AMDGPU/urem64.ll
    llvm/test/CodeGen/AMDGPU/usubo.ll
    llvm/test/CodeGen/AMDGPU/v_cmp_gfx11.ll
    llvm/test/CodeGen/AMDGPU/wave32.ll
    llvm/test/CodeGen/AMDGPU/widen-vselect-and-mask.ll
    llvm/test/CodeGen/AMDGPU/workitem-intrinsic-opts.ll
    llvm/test/CodeGen/AMDGPU/wqm.ll
    llvm/test/CodeGen/AMDGPU/xor.ll
    llvm/test/CodeGen/AMDGPU/zero_extend.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
index 48953cee43956..48a85fdc01ea6 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
@@ -8697,14 +8697,30 @@ void SIInstrInfo::lowerSelect(SIInstrWorklist &Worklist, MachineInstr &Inst,
   Register CondReg = Cond.getReg();
   bool IsSCC = (CondReg == AMDGPU::SCC);
 
-  // If this is a trivial select where the condition is effectively not SCC
-  // (CondReg is a source of copy to SCC), then the select is semantically
-  // equivalent to copying CondReg. Hence, there is no need to create
-  // V_CNDMASK, we can just use that and bail out.
+  // Remove S_CSELECT instructions that we previously inserted to feed the SCC
+  // condition output from S_CMP into the SGPR condition input of V_CNDMASK. If
+  // the S_CMP has been promoted to V_CMP then we can feed its SGPR condition
+  // output directly into the V_CNDMASK.
   if (!IsSCC && Src0.isImm() && (Src0.getImm() == -1) && Src1.isImm() &&
       (Src1.getImm() == 0)) {
-    MRI.replaceRegWith(Dest.getReg(), CondReg);
-    return;
+    for (MachineOperand &UseMO :
+         make_early_inc_range(MRI.use_nodbg_operands(Dest.getReg()))) {
+      MachineInstr &UseMI = *UseMO.getParent();
+      switch (UseMI.getOpcode()) {
+      case AMDGPU::V_CNDMASK_B16_fake16_e32:
+      case AMDGPU::V_CNDMASK_B16_fake16_e64:
+      case AMDGPU::V_CNDMASK_B16_t16_e32:
+      case AMDGPU::V_CNDMASK_B16_t16_e64:
+      case AMDGPU::V_CNDMASK_B32_e32:
+      case AMDGPU::V_CNDMASK_B32_e64:
+      case AMDGPU::V_CNDMASK_B64_PSEUDO:
+        if (UseMO.isImplicit() ||
+            &UseMO == getNamedOperand(UseMI, AMDGPU::OpName::src2))
+          UseMO.setReg(CondReg);
+      }
+    }
+    if (MRI.use_nodbg_empty(Dest.getReg()))
+      return;
   }
 
   Register NewCondReg = CondReg;

diff  --git a/llvm/lib/Target/AMDGPU/SIInstructions.td b/llvm/lib/Target/AMDGPU/SIInstructions.td
index 86f78762d36eb..15bc6704e076b 100644
--- a/llvm/lib/Target/AMDGPU/SIInstructions.td
+++ b/llvm/lib/Target/AMDGPU/SIInstructions.td
@@ -2795,6 +2795,23 @@ class Ext32Pat <SDNode ext> : GCNPat <
 def : Ext32Pat <zext>;
 def : Ext32Pat <anyext>;
 
+// Uniform extensions from i1
+
+foreach ext = [sext, zext, anyext] in {
+  defvar extone = !switch(ext, sext: -1, 1);
+
+  foreach vt = [i16, i32] in
+    def : GCNPat <
+      (vt (UniformUnaryFrag<ext> SCC)),
+      (S_CSELECT_B32 (vt extone), (vt 0))
+    >;
+
+  def : GCNPat <
+    (i64 (UniformUnaryFrag<ext> SCC)),
+    (S_CSELECT_B64 (i64 extone), (i64 0))
+  >;
+}
+
 // The multiplication scales from [0,1) to the unsigned integer range,
 // rounding down a bit to avoid unwanted overflow.
 def : GCNPat <

diff  --git a/llvm/test/CodeGen/AMDGPU/a-v-flat-atomicrmw.ll b/llvm/test/CodeGen/AMDGPU/a-v-flat-atomicrmw.ll
index 7d0d6eb3f7c91..241050c7bb926 100644
--- a/llvm/test/CodeGen/AMDGPU/a-v-flat-atomicrmw.ll
+++ b/llvm/test/CodeGen/AMDGPU/a-v-flat-atomicrmw.ll
@@ -14483,26 +14483,32 @@ define void @flat_atomic_xchg_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB193_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB193_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v1, a1
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a3, v1
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a2, v0
-; GFX90A-NEXT:    s_cbranch_execz .LBB193_3
-; GFX90A-NEXT:    s_branch .LBB193_4
+; GFX90A-NEXT:    s_branch .LBB193_3
 ; GFX90A-NEXT:  .LBB193_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr2_agpr3
-; GFX90A-NEXT:  .LBB193_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB193_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB193_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v0, s4
@@ -14511,7 +14517,7 @@ define void @flat_atomic_xchg_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_nop 0
 ; GFX90A-NEXT:    buffer_store_dword a0, v0, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword a1, v0, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB193_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB193_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(2)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a[2:3]
@@ -14526,32 +14532,38 @@ define void @flat_atomic_xchg_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB193_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB193_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v1, a1
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a3, v1
 ; GFX950-NEXT:    v_accvgpr_write_b32 a2, v0
-; GFX950-NEXT:    s_cbranch_execz .LBB193_3
-; GFX950-NEXT:    s_branch .LBB193_4
+; GFX950-NEXT:    s_branch .LBB193_3
 ; GFX950-NEXT:  .LBB193_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr2_agpr3
-; GFX950-NEXT:  .LBB193_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB193_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB193_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 a[2:3], off, s0
 ; GFX950-NEXT:    s_nop 0
 ; GFX950-NEXT:    scratch_store_dwordx2 off, a[0:1], s0
-; GFX950-NEXT:  .LBB193_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB193_5: ; %atomicrmw.end
 ; GFX950-NEXT:    s_waitcnt vmcnt(1)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use a[2:3]
@@ -14573,21 +14585,27 @@ define void @flat_atomic_xchg_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB194_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB194_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_swap_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:    s_cbranch_execz .LBB194_3
-; GFX90A-NEXT:    s_branch .LBB194_4
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB194_3
 ; GFX90A-NEXT:  .LBB194_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX90A-NEXT:  .LBB194_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB194_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB194_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -14596,7 +14614,7 @@ define void @flat_atomic_xchg_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_nop 0
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB194_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB194_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v[2:3]
@@ -14610,27 +14628,33 @@ define void @flat_atomic_xchg_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB194_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB194_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_swap_x2 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-NEXT:    s_cbranch_execz .LBB194_3
-; GFX950-NEXT:    s_branch .LBB194_4
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:    s_branch .LBB194_3
 ; GFX950-NEXT:  .LBB194_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX950-NEXT:  .LBB194_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB194_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB194_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
 ; GFX950-NEXT:    s_nop 0
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-NEXT:  .LBB194_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB194_5: ; %atomicrmw.end
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use v[2:3]
@@ -14654,23 +14678,29 @@ define void @flat_atomic_add_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX90A-NEXT:    s_cbranch_vccz .LBB195_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB195_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_add_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX90A-NEXT:    s_cbranch_execz .LBB195_3
-; GFX90A-NEXT:    s_branch .LBB195_4
+; GFX90A-NEXT:    s_branch .LBB195_3
 ; GFX90A-NEXT:  .LBB195_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX90A-NEXT:  .LBB195_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB195_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB195_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v2, s4
@@ -14684,7 +14714,7 @@ define void @flat_atomic_add_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, v4, v1, vcc
 ; GFX90A-NEXT:    buffer_store_dword v0, v2, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB195_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB195_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
@@ -14701,23 +14731,29 @@ define void @flat_atomic_add_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX950-NEXT:    s_cbranch_vccz .LBB195_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB195_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_add_x2 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX950-NEXT:    s_cbranch_execz .LBB195_3
-; GFX950-NEXT:    s_branch .LBB195_4
+; GFX950-NEXT:    s_branch .LBB195_3
 ; GFX950-NEXT:  .LBB195_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX950-NEXT:  .LBB195_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB195_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB195_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -14726,7 +14762,7 @@ define void @flat_atomic_add_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 0, v[0:1]
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-NEXT:  .LBB195_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB195_5: ; %atomicrmw.end
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
@@ -14747,21 +14783,27 @@ define void @flat_atomic_add_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB196_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB196_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_add_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:    s_cbranch_execz .LBB196_3
-; GFX90A-NEXT:    s_branch .LBB196_4
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB196_3
 ; GFX90A-NEXT:  .LBB196_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX90A-NEXT:  .LBB196_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB196_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB196_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -14772,7 +14814,7 @@ define void @flat_atomic_add_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB196_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB196_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v[2:3]
@@ -14786,28 +14828,34 @@ define void @flat_atomic_add_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB196_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB196_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_add_x2 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-NEXT:    s_cbranch_execz .LBB196_3
-; GFX950-NEXT:    s_branch .LBB196_4
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:    s_branch .LBB196_3
 ; GFX950-NEXT:  .LBB196_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX950-NEXT:  .LBB196_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB196_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB196_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 0, v[0:1]
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-NEXT:  .LBB196_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB196_5: ; %atomicrmw.end
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use v[2:3]
@@ -14831,23 +14879,29 @@ define void @flat_atomic_sub_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX90A-NEXT:    s_cbranch_vccz .LBB197_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB197_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_sub_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX90A-NEXT:    s_cbranch_execz .LBB197_3
-; GFX90A-NEXT:    s_branch .LBB197_4
+; GFX90A-NEXT:    s_branch .LBB197_3
 ; GFX90A-NEXT:  .LBB197_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX90A-NEXT:  .LBB197_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB197_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB197_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v2, s4
@@ -14861,7 +14915,7 @@ define void @flat_atomic_sub_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_subb_co_u32_e32 v1, vcc, v4, v1, vcc
 ; GFX90A-NEXT:    buffer_store_dword v0, v2, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB197_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB197_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
@@ -14878,23 +14932,29 @@ define void @flat_atomic_sub_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX950-NEXT:    s_cbranch_vccz .LBB197_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB197_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_sub_x2 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX950-NEXT:    s_cbranch_execz .LBB197_3
-; GFX950-NEXT:    s_branch .LBB197_4
+; GFX950-NEXT:    s_branch .LBB197_3
 ; GFX950-NEXT:  .LBB197_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX950-NEXT:  .LBB197_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB197_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB197_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -14905,7 +14965,7 @@ define void @flat_atomic_sub_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_subb_co_u32_e32 v1, vcc, v3, v1, vcc
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-NEXT:  .LBB197_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB197_5: ; %atomicrmw.end
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
@@ -14926,21 +14986,27 @@ define void @flat_atomic_sub_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB198_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB198_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_sub_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:    s_cbranch_execz .LBB198_3
-; GFX90A-NEXT:    s_branch .LBB198_4
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB198_3
 ; GFX90A-NEXT:  .LBB198_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX90A-NEXT:  .LBB198_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB198_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB198_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -14951,7 +15017,7 @@ define void @flat_atomic_sub_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_subb_co_u32_e32 v1, vcc, v3, v1, vcc
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB198_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB198_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v[2:3]
@@ -14965,21 +15031,27 @@ define void @flat_atomic_sub_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[2:3]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB198_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB198_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
 ; GFX950-NEXT:    flat_atomic_sub_x2 v[0:1], v[0:1], v[2:3] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-NEXT:    s_cbranch_execz .LBB198_3
-; GFX950-NEXT:    s_branch .LBB198_4
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:    s_branch .LBB198_3
 ; GFX950-NEXT:  .LBB198_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX950-NEXT:  .LBB198_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB198_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB198_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[0:1], off, s0
@@ -14988,7 +15060,7 @@ define void @flat_atomic_sub_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_nop 1
 ; GFX950-NEXT:    v_subb_co_u32_e32 v3, vcc, v1, v3, vcc
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[2:3], s0
-; GFX950-NEXT:  .LBB198_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB198_5: ; %atomicrmw.end
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use v[0:1]
@@ -15012,23 +15084,29 @@ define void @flat_atomic_and_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX90A-NEXT:    s_cbranch_vccz .LBB199_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB199_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_and_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX90A-NEXT:    s_cbranch_execz .LBB199_3
-; GFX90A-NEXT:    s_branch .LBB199_4
+; GFX90A-NEXT:    s_branch .LBB199_3
 ; GFX90A-NEXT:  .LBB199_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX90A-NEXT:  .LBB199_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB199_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB199_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v2, s4
@@ -15042,7 +15120,7 @@ define void @flat_atomic_and_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_and_b32_e32 v1, v4, v1
 ; GFX90A-NEXT:    buffer_store_dword v0, v2, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB199_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB199_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
@@ -15059,23 +15137,29 @@ define void @flat_atomic_and_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX950-NEXT:    s_cbranch_vccz .LBB199_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB199_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_and_x2 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX950-NEXT:    s_cbranch_execz .LBB199_3
-; GFX950-NEXT:    s_branch .LBB199_4
+; GFX950-NEXT:    s_branch .LBB199_3
 ; GFX950-NEXT:  .LBB199_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX950-NEXT:  .LBB199_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB199_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB199_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -15085,7 +15169,7 @@ define void @flat_atomic_and_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_and_b32_e32 v0, v2, v0
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-NEXT:  .LBB199_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB199_5: ; %atomicrmw.end
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
@@ -15106,21 +15190,27 @@ define void @flat_atomic_and_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB200_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB200_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_and_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:    s_cbranch_execz .LBB200_3
-; GFX90A-NEXT:    s_branch .LBB200_4
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB200_3
 ; GFX90A-NEXT:  .LBB200_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX90A-NEXT:  .LBB200_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB200_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB200_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -15131,7 +15221,7 @@ define void @flat_atomic_and_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_and_b32_e32 v0, v2, v0
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB200_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB200_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v[2:3]
@@ -15145,21 +15235,27 @@ define void @flat_atomic_and_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[2:3]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB200_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB200_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
 ; GFX950-NEXT:    flat_atomic_and_x2 v[0:1], v[0:1], v[2:3] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-NEXT:    s_cbranch_execz .LBB200_3
-; GFX950-NEXT:    s_branch .LBB200_4
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:    s_branch .LBB200_3
 ; GFX950-NEXT:  .LBB200_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX950-NEXT:  .LBB200_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB200_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB200_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[0:1], off, s0
@@ -15167,7 +15263,7 @@ define void @flat_atomic_and_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_and_b32_e32 v3, v1, v3
 ; GFX950-NEXT:    v_and_b32_e32 v2, v0, v2
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[2:3], s0
-; GFX950-NEXT:  .LBB200_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB200_5: ; %atomicrmw.end
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use v[0:1]
@@ -15191,11 +15287,11 @@ define void @flat_atomic_nand_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v5, a1
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v4, a0
-; GFX90A-NEXT:    s_cbranch_vccz .LBB201_4
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB201_4
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -15255,11 +15351,11 @@ define void @flat_atomic_nand_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v5, a1
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v4, a0
-; GFX950-NEXT:    s_cbranch_vccz .LBB201_4
+; GFX950-NEXT:    s_cbranch_scc0 .LBB201_4
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[6:7], s[0:1]
 ; GFX950-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -15319,12 +15415,12 @@ define void @flat_atomic_nand_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[4:5]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB202_4
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB202_4
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -15377,12 +15473,12 @@ define void @flat_atomic_nand_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[4:5]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB202_4
+; GFX950-NEXT:    s_cbranch_scc0 .LBB202_4
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[6:7], s[0:1]
 ; GFX950-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -15441,23 +15537,29 @@ define void @flat_atomic_or_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX90A-NEXT:    s_cbranch_vccz .LBB203_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB203_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_or_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX90A-NEXT:    s_cbranch_execz .LBB203_3
-; GFX90A-NEXT:    s_branch .LBB203_4
+; GFX90A-NEXT:    s_branch .LBB203_3
 ; GFX90A-NEXT:  .LBB203_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX90A-NEXT:  .LBB203_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB203_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB203_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v2, s4
@@ -15471,7 +15573,7 @@ define void @flat_atomic_or_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_or_b32_e32 v1, v4, v1
 ; GFX90A-NEXT:    buffer_store_dword v0, v2, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB203_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB203_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
@@ -15488,23 +15590,29 @@ define void @flat_atomic_or_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX950-NEXT:    s_cbranch_vccz .LBB203_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB203_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_or_x2 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX950-NEXT:    s_cbranch_execz .LBB203_3
-; GFX950-NEXT:    s_branch .LBB203_4
+; GFX950-NEXT:    s_branch .LBB203_3
 ; GFX950-NEXT:  .LBB203_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX950-NEXT:  .LBB203_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB203_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB203_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -15514,7 +15622,7 @@ define void @flat_atomic_or_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_or_b32_e32 v0, v2, v0
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-NEXT:  .LBB203_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB203_5: ; %atomicrmw.end
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
@@ -15535,21 +15643,27 @@ define void @flat_atomic_or_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB204_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB204_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_or_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:    s_cbranch_execz .LBB204_3
-; GFX90A-NEXT:    s_branch .LBB204_4
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB204_3
 ; GFX90A-NEXT:  .LBB204_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX90A-NEXT:  .LBB204_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB204_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB204_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -15560,7 +15674,7 @@ define void @flat_atomic_or_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_or_b32_e32 v0, v2, v0
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB204_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB204_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v[2:3]
@@ -15574,21 +15688,27 @@ define void @flat_atomic_or_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[2:3]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB204_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB204_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
 ; GFX950-NEXT:    flat_atomic_or_x2 v[0:1], v[0:1], v[2:3] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-NEXT:    s_cbranch_execz .LBB204_3
-; GFX950-NEXT:    s_branch .LBB204_4
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:    s_branch .LBB204_3
 ; GFX950-NEXT:  .LBB204_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX950-NEXT:  .LBB204_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB204_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB204_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[0:1], off, s0
@@ -15596,7 +15716,7 @@ define void @flat_atomic_or_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_or_b32_e32 v3, v1, v3
 ; GFX950-NEXT:    v_or_b32_e32 v2, v0, v2
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[2:3], s0
-; GFX950-NEXT:  .LBB204_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB204_5: ; %atomicrmw.end
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use v[0:1]
@@ -15620,23 +15740,29 @@ define void @flat_atomic_xor_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX90A-NEXT:    s_cbranch_vccz .LBB205_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB205_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_xor_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX90A-NEXT:    s_cbranch_execz .LBB205_3
-; GFX90A-NEXT:    s_branch .LBB205_4
+; GFX90A-NEXT:    s_branch .LBB205_3
 ; GFX90A-NEXT:  .LBB205_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX90A-NEXT:  .LBB205_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB205_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB205_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v2, s4
@@ -15650,7 +15776,7 @@ define void @flat_atomic_xor_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_xor_b32_e32 v1, v4, v1
 ; GFX90A-NEXT:    buffer_store_dword v0, v2, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB205_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB205_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
@@ -15667,23 +15793,29 @@ define void @flat_atomic_xor_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX950-NEXT:    s_cbranch_vccz .LBB205_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB205_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_xor_x2 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX950-NEXT:    s_cbranch_execz .LBB205_3
-; GFX950-NEXT:    s_branch .LBB205_4
+; GFX950-NEXT:    s_branch .LBB205_3
 ; GFX950-NEXT:  .LBB205_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX950-NEXT:  .LBB205_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB205_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB205_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -15693,7 +15825,7 @@ define void @flat_atomic_xor_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_xor_b32_e32 v0, v2, v0
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-NEXT:  .LBB205_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB205_5: ; %atomicrmw.end
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
@@ -15714,21 +15846,27 @@ define void @flat_atomic_xor_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB206_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB206_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_xor_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:    s_cbranch_execz .LBB206_3
-; GFX90A-NEXT:    s_branch .LBB206_4
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB206_3
 ; GFX90A-NEXT:  .LBB206_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX90A-NEXT:  .LBB206_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB206_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB206_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -15739,7 +15877,7 @@ define void @flat_atomic_xor_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_xor_b32_e32 v0, v2, v0
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB206_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB206_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v[2:3]
@@ -15753,21 +15891,27 @@ define void @flat_atomic_xor_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[2:3]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB206_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB206_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
 ; GFX950-NEXT:    flat_atomic_xor_x2 v[0:1], v[0:1], v[2:3] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-NEXT:    s_cbranch_execz .LBB206_3
-; GFX950-NEXT:    s_branch .LBB206_4
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:    s_branch .LBB206_3
 ; GFX950-NEXT:  .LBB206_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX950-NEXT:  .LBB206_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB206_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB206_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[0:1], off, s0
@@ -15775,7 +15919,7 @@ define void @flat_atomic_xor_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_xor_b32_e32 v3, v1, v3
 ; GFX950-NEXT:    v_xor_b32_e32 v2, v0, v2
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[2:3], s0
-; GFX950-NEXT:  .LBB206_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB206_5: ; %atomicrmw.end
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use v[0:1]
@@ -15799,23 +15943,29 @@ define void @flat_atomic_max_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX90A-NEXT:    s_cbranch_vccz .LBB207_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB207_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_smax_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX90A-NEXT:    s_cbranch_execz .LBB207_3
-; GFX90A-NEXT:    s_branch .LBB207_4
+; GFX90A-NEXT:    s_branch .LBB207_3
 ; GFX90A-NEXT:  .LBB207_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX90A-NEXT:  .LBB207_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB207_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB207_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -15830,7 +15980,7 @@ define void @flat_atomic_max_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
-; GFX90A-NEXT:  .LBB207_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB207_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
@@ -15847,23 +15997,29 @@ define void @flat_atomic_max_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX950-NEXT:    s_cbranch_vccz .LBB207_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB207_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_smax_x2 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX950-NEXT:    s_cbranch_execz .LBB207_3
-; GFX950-NEXT:    s_branch .LBB207_4
+; GFX950-NEXT:    s_branch .LBB207_3
 ; GFX950-NEXT:  .LBB207_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX950-NEXT:  .LBB207_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB207_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB207_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -15874,7 +16030,7 @@ define void @flat_atomic_max_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc
 ; GFX950-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-NEXT:  .LBB207_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB207_5: ; %atomicrmw.end
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
@@ -15895,21 +16051,27 @@ define void @flat_atomic_max_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB208_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB208_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_smax_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:    s_cbranch_execz .LBB208_3
-; GFX90A-NEXT:    s_branch .LBB208_4
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB208_3
 ; GFX90A-NEXT:  .LBB208_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX90A-NEXT:  .LBB208_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB208_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB208_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -15921,7 +16083,7 @@ define void @flat_atomic_max_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB208_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB208_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v[2:3]
@@ -15935,21 +16097,27 @@ define void @flat_atomic_max_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[2:3]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB208_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB208_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
 ; GFX950-NEXT:    flat_atomic_smax_x2 v[0:1], v[0:1], v[2:3] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-NEXT:    s_cbranch_execz .LBB208_3
-; GFX950-NEXT:    s_branch .LBB208_4
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:    s_branch .LBB208_3
 ; GFX950-NEXT:  .LBB208_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX950-NEXT:  .LBB208_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB208_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB208_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[0:1], off, s0
@@ -15959,7 +16127,7 @@ define void @flat_atomic_max_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_cndmask_b32_e32 v3, v3, v1, vcc
 ; GFX950-NEXT:    v_cndmask_b32_e32 v2, v2, v0, vcc
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[2:3], s0
-; GFX950-NEXT:  .LBB208_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB208_5: ; %atomicrmw.end
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use v[0:1]
@@ -15983,23 +16151,29 @@ define void @flat_atomic_min_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX90A-NEXT:    s_cbranch_vccz .LBB209_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB209_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_smin_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX90A-NEXT:    s_cbranch_execz .LBB209_3
-; GFX90A-NEXT:    s_branch .LBB209_4
+; GFX90A-NEXT:    s_branch .LBB209_3
 ; GFX90A-NEXT:  .LBB209_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX90A-NEXT:  .LBB209_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB209_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB209_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -16014,7 +16188,7 @@ define void @flat_atomic_min_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
-; GFX90A-NEXT:  .LBB209_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB209_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
@@ -16031,23 +16205,29 @@ define void @flat_atomic_min_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX950-NEXT:    s_cbranch_vccz .LBB209_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB209_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_smin_x2 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX950-NEXT:    s_cbranch_execz .LBB209_3
-; GFX950-NEXT:    s_branch .LBB209_4
+; GFX950-NEXT:    s_branch .LBB209_3
 ; GFX950-NEXT:  .LBB209_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX950-NEXT:  .LBB209_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB209_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB209_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -16058,7 +16238,7 @@ define void @flat_atomic_min_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc
 ; GFX950-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-NEXT:  .LBB209_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB209_5: ; %atomicrmw.end
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
@@ -16079,21 +16259,27 @@ define void @flat_atomic_min_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB210_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB210_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_smin_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:    s_cbranch_execz .LBB210_3
-; GFX90A-NEXT:    s_branch .LBB210_4
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB210_3
 ; GFX90A-NEXT:  .LBB210_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX90A-NEXT:  .LBB210_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB210_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB210_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -16105,7 +16291,7 @@ define void @flat_atomic_min_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB210_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB210_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v[2:3]
@@ -16119,21 +16305,27 @@ define void @flat_atomic_min_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[2:3]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB210_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB210_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
 ; GFX950-NEXT:    flat_atomic_smin_x2 v[0:1], v[0:1], v[2:3] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-NEXT:    s_cbranch_execz .LBB210_3
-; GFX950-NEXT:    s_branch .LBB210_4
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:    s_branch .LBB210_3
 ; GFX950-NEXT:  .LBB210_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX950-NEXT:  .LBB210_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB210_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB210_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[0:1], off, s0
@@ -16143,7 +16335,7 @@ define void @flat_atomic_min_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_cndmask_b32_e32 v3, v3, v1, vcc
 ; GFX950-NEXT:    v_cndmask_b32_e32 v2, v2, v0, vcc
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[2:3], s0
-; GFX950-NEXT:  .LBB210_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB210_5: ; %atomicrmw.end
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use v[0:1]
@@ -16167,23 +16359,29 @@ define void @flat_atomic_umax_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX90A-NEXT:    s_cbranch_vccz .LBB211_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB211_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_umax_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX90A-NEXT:    s_cbranch_execz .LBB211_3
-; GFX90A-NEXT:    s_branch .LBB211_4
+; GFX90A-NEXT:    s_branch .LBB211_3
 ; GFX90A-NEXT:  .LBB211_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX90A-NEXT:  .LBB211_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB211_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB211_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -16198,7 +16396,7 @@ define void @flat_atomic_umax_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
-; GFX90A-NEXT:  .LBB211_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB211_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
@@ -16215,23 +16413,29 @@ define void @flat_atomic_umax_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX950-NEXT:    s_cbranch_vccz .LBB211_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB211_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_umax_x2 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX950-NEXT:    s_cbranch_execz .LBB211_3
-; GFX950-NEXT:    s_branch .LBB211_4
+; GFX950-NEXT:    s_branch .LBB211_3
 ; GFX950-NEXT:  .LBB211_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX950-NEXT:  .LBB211_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB211_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB211_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -16242,7 +16446,7 @@ define void @flat_atomic_umax_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc
 ; GFX950-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-NEXT:  .LBB211_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB211_5: ; %atomicrmw.end
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
@@ -16263,21 +16467,27 @@ define void @flat_atomic_umax_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB212_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB212_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_umax_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:    s_cbranch_execz .LBB212_3
-; GFX90A-NEXT:    s_branch .LBB212_4
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB212_3
 ; GFX90A-NEXT:  .LBB212_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX90A-NEXT:  .LBB212_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB212_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB212_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -16289,7 +16499,7 @@ define void @flat_atomic_umax_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB212_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB212_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v[2:3]
@@ -16303,21 +16513,27 @@ define void @flat_atomic_umax_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[2:3]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB212_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB212_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
 ; GFX950-NEXT:    flat_atomic_umax_x2 v[0:1], v[0:1], v[2:3] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-NEXT:    s_cbranch_execz .LBB212_3
-; GFX950-NEXT:    s_branch .LBB212_4
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:    s_branch .LBB212_3
 ; GFX950-NEXT:  .LBB212_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX950-NEXT:  .LBB212_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB212_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB212_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[0:1], off, s0
@@ -16327,7 +16543,7 @@ define void @flat_atomic_umax_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_cndmask_b32_e32 v3, v3, v1, vcc
 ; GFX950-NEXT:    v_cndmask_b32_e32 v2, v2, v0, vcc
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[2:3], s0
-; GFX950-NEXT:  .LBB212_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB212_5: ; %atomicrmw.end
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use v[0:1]
@@ -16351,23 +16567,29 @@ define void @flat_atomic_umin_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX90A-NEXT:    s_cbranch_vccz .LBB213_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB213_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_umin_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX90A-NEXT:    s_cbranch_execz .LBB213_3
-; GFX90A-NEXT:    s_branch .LBB213_4
+; GFX90A-NEXT:    s_branch .LBB213_3
 ; GFX90A-NEXT:  .LBB213_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX90A-NEXT:  .LBB213_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB213_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB213_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -16382,7 +16604,7 @@ define void @flat_atomic_umin_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
-; GFX90A-NEXT:  .LBB213_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB213_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
@@ -16399,23 +16621,29 @@ define void @flat_atomic_umin_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX950-NEXT:    s_cbranch_vccz .LBB213_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB213_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_umin_x2 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX950-NEXT:    s_cbranch_execz .LBB213_3
-; GFX950-NEXT:    s_branch .LBB213_4
+; GFX950-NEXT:    s_branch .LBB213_3
 ; GFX950-NEXT:  .LBB213_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX950-NEXT:  .LBB213_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB213_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB213_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -16426,7 +16654,7 @@ define void @flat_atomic_umin_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc
 ; GFX950-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-NEXT:  .LBB213_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB213_5: ; %atomicrmw.end
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
@@ -16447,21 +16675,27 @@ define void @flat_atomic_umin_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB214_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB214_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_umin_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:    s_cbranch_execz .LBB214_3
-; GFX90A-NEXT:    s_branch .LBB214_4
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB214_3
 ; GFX90A-NEXT:  .LBB214_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX90A-NEXT:  .LBB214_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB214_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB214_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -16473,7 +16707,7 @@ define void @flat_atomic_umin_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB214_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB214_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v[2:3]
@@ -16487,21 +16721,27 @@ define void @flat_atomic_umin_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[2:3]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB214_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB214_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
 ; GFX950-NEXT:    flat_atomic_umin_x2 v[0:1], v[0:1], v[2:3] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-NEXT:    s_cbranch_execz .LBB214_3
-; GFX950-NEXT:    s_branch .LBB214_4
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:    s_branch .LBB214_3
 ; GFX950-NEXT:  .LBB214_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX950-NEXT:  .LBB214_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB214_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB214_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[0:1], off, s0
@@ -16511,7 +16751,7 @@ define void @flat_atomic_umin_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_cndmask_b32_e32 v3, v3, v1, vcc
 ; GFX950-NEXT:    v_cndmask_b32_e32 v2, v2, v0, vcc
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[2:3], s0
-; GFX950-NEXT:  .LBB214_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB214_5: ; %atomicrmw.end
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use v[0:1]
@@ -16535,23 +16775,29 @@ define void @flat_atomic_uinc_wrap_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX90A-NEXT:    s_cbranch_vccz .LBB215_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB215_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_inc_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX90A-NEXT:    s_cbranch_execz .LBB215_3
-; GFX90A-NEXT:    s_branch .LBB215_4
+; GFX90A-NEXT:    s_branch .LBB215_3
 ; GFX90A-NEXT:  .LBB215_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX90A-NEXT:  .LBB215_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB215_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB215_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -16568,7 +16814,7 @@ define void @flat_atomic_uinc_wrap_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_cndmask_b32_e32 v0, 0, v6, vcc
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB215_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB215_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
@@ -16585,23 +16831,29 @@ define void @flat_atomic_uinc_wrap_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX950-NEXT:    s_cbranch_vccz .LBB215_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB215_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_inc_x2 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX950-NEXT:    s_cbranch_execz .LBB215_3
-; GFX950-NEXT:    s_branch .LBB215_4
+; GFX950-NEXT:    s_branch .LBB215_3
 ; GFX950-NEXT:  .LBB215_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX950-NEXT:  .LBB215_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB215_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB215_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -16613,7 +16865,7 @@ define void @flat_atomic_uinc_wrap_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_cndmask_b32_e32 v1, 0, v5, vcc
 ; GFX950-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-NEXT:  .LBB215_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB215_5: ; %atomicrmw.end
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
@@ -16634,21 +16886,27 @@ define void @flat_atomic_uinc_wrap_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[2:3]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB216_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB216_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_inc_x2 v[0:1], v[0:1], v[2:3] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:    s_cbranch_execz .LBB216_3
-; GFX90A-NEXT:    s_branch .LBB216_4
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB216_3
 ; GFX90A-NEXT:  .LBB216_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX90A-NEXT:  .LBB216_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB216_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB216_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -16662,7 +16920,7 @@ define void @flat_atomic_uinc_wrap_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_cndmask_b32_e32 v2, 0, v6, vcc
 ; GFX90A-NEXT:    buffer_store_dword v3, v4, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v2, v4, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB216_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB216_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v[0:1]
@@ -16676,21 +16934,27 @@ define void @flat_atomic_uinc_wrap_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[2:3]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB216_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB216_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
 ; GFX950-NEXT:    flat_atomic_inc_x2 v[0:1], v[0:1], v[2:3] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-NEXT:    s_cbranch_execz .LBB216_3
-; GFX950-NEXT:    s_branch .LBB216_4
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:    s_branch .LBB216_3
 ; GFX950-NEXT:  .LBB216_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX950-NEXT:  .LBB216_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB216_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB216_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[0:1], off, s0
@@ -16701,7 +16965,7 @@ define void @flat_atomic_uinc_wrap_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_cndmask_b32_e32 v3, 0, v5, vcc
 ; GFX950-NEXT:    v_cndmask_b32_e32 v2, 0, v4, vcc
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[2:3], s0
-; GFX950-NEXT:  .LBB216_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB216_5: ; %atomicrmw.end
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use v[0:1]
@@ -16725,23 +16989,29 @@ define void @flat_atomic_udec_wrap_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX90A-NEXT:    s_cbranch_vccz .LBB217_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB217_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_dec_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX90A-NEXT:    s_cbranch_execz .LBB217_3
-; GFX90A-NEXT:    s_branch .LBB217_4
+; GFX90A-NEXT:    s_branch .LBB217_3
 ; GFX90A-NEXT:  .LBB217_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX90A-NEXT:  .LBB217_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB217_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB217_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -16759,7 +17029,7 @@ define void @flat_atomic_udec_wrap_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_cndmask_b32_e32 v0, v5, v0, vcc
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
-; GFX90A-NEXT:  .LBB217_4: ; %atomicrmw.phi
+; GFX90A-NEXT:  .LBB217_5: ; %atomicrmw.phi
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
@@ -16776,23 +17046,29 @@ define void @flat_atomic_udec_wrap_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX950-NEXT:    s_cbranch_vccz .LBB217_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB217_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_dec_x2 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX950-NEXT:    s_cbranch_execz .LBB217_3
-; GFX950-NEXT:    s_branch .LBB217_4
+; GFX950-NEXT:    s_branch .LBB217_3
 ; GFX950-NEXT:  .LBB217_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX950-NEXT:  .LBB217_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB217_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB217_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s2, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s2
@@ -16807,7 +17083,7 @@ define void @flat_atomic_udec_wrap_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[0:1], s2
-; GFX950-NEXT:  .LBB217_4: ; %atomicrmw.phi
+; GFX950-NEXT:  .LBB217_5: ; %atomicrmw.phi
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
@@ -16828,21 +17104,27 @@ define void @flat_atomic_udec_wrap_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB218_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB218_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_dec_x2 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:    s_cbranch_execz .LBB218_3
-; GFX90A-NEXT:    s_branch .LBB218_4
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB218_3
 ; GFX90A-NEXT:  .LBB218_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX90A-NEXT:  .LBB218_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB218_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB218_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v4, s4
@@ -16857,7 +17139,7 @@ define void @flat_atomic_udec_wrap_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_cndmask_b32_e32 v1, v6, v1, vcc
 ; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB218_4: ; %atomicrmw.phi
+; GFX90A-NEXT:  .LBB218_5: ; %atomicrmw.phi
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v[2:3]
@@ -16871,21 +17153,27 @@ define void @flat_atomic_udec_wrap_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[2:3]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB218_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB218_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
 ; GFX950-NEXT:    flat_atomic_dec_x2 v[0:1], v[0:1], v[2:3] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-NEXT:    s_cbranch_execz .LBB218_3
-; GFX950-NEXT:    s_branch .LBB218_4
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:    s_branch .LBB218_3
 ; GFX950-NEXT:  .LBB218_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX950-NEXT:  .LBB218_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB218_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB218_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s2, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[0:1], off, s2
@@ -16899,7 +17187,7 @@ define void @flat_atomic_udec_wrap_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_cndmask_b32_e32 v3, v5, v3, vcc
 ; GFX950-NEXT:    v_cndmask_b32_e32 v2, v4, v2, vcc
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[2:3], s2
-; GFX950-NEXT:  .LBB218_4: ; %atomicrmw.phi
+; GFX950-NEXT:  .LBB218_5: ; %atomicrmw.phi
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use v[0:1]
@@ -16923,11 +17211,11 @@ define void @flat_atomic_usub_cond_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v5, a1
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v4, a0
-; GFX90A-NEXT:    s_cbranch_vccz .LBB219_4
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB219_4
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -16989,11 +17277,11 @@ define void @flat_atomic_usub_cond_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v5, a1
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v4, a0
-; GFX950-NEXT:    s_cbranch_vccz .LBB219_4
+; GFX950-NEXT:    s_cbranch_scc0 .LBB219_4
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[6:7], s[0:1]
 ; GFX950-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -17059,12 +17347,12 @@ define void @flat_atomic_usub_cond_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[4:5]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB220_4
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB220_4
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -17119,12 +17407,12 @@ define void @flat_atomic_usub_cond_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[4:5]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB220_4
+; GFX950-NEXT:    s_cbranch_scc0 .LBB220_4
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[6:7], s[0:1]
 ; GFX950-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -17189,11 +17477,11 @@ define void @flat_atomic_usub_sat_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v5, a1
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v4, a0
-; GFX90A-NEXT:    s_cbranch_vccz .LBB221_4
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB221_4
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -17253,11 +17541,11 @@ define void @flat_atomic_usub_sat_i64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v5, a1
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v4, a0
-; GFX950-NEXT:    s_cbranch_vccz .LBB221_4
+; GFX950-NEXT:    s_cbranch_scc0 .LBB221_4
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[6:7], s[0:1]
 ; GFX950-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -17321,12 +17609,12 @@ define void @flat_atomic_usub_sat_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[4:5]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB222_4
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB222_4
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -17379,12 +17667,12 @@ define void @flat_atomic_usub_sat_i64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[4:5]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB222_4
+; GFX950-NEXT:    s_cbranch_scc0 .LBB222_4
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[6:7], s[0:1]
 ; GFX950-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -17448,32 +17736,39 @@ define void @flat_atomic_fadd_f32_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_shared_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a0
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX90A-NEXT:    s_cbranch_vccz .LBB223_3
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB223_3
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.check.private
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GFX90A-NEXT:    s_cbranch_vccz .LBB223_4
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB223_4
 ; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX90A-NEXT:    global_atomic_add_f32 v1, v1, v0, s[4:5] glc
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v1
-; GFX90A-NEXT:    s_cbranch_execz .LBB223_5
-; GFX90A-NEXT:    s_branch .LBB223_6
+; GFX90A-NEXT:    s_branch .LBB223_5
 ; GFX90A-NEXT:  .LBB223_3:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0
-; GFX90A-NEXT:    s_branch .LBB223_7
+; GFX90A-NEXT:    s_branch .LBB223_8
 ; GFX90A-NEXT:  .LBB223_4:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0
-; GFX90A-NEXT:  .LBB223_5: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB223_5: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB223_7
+; GFX90A-NEXT:  ; %bb.6: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s6, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v1, s6
@@ -17482,16 +17777,21 @@ define void @flat_atomic_fadd_f32_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_add_f32_e32 v3, v2, v0
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX90A-NEXT:    buffer_store_dword v3, v1, s[0:3], 0 offen
-; GFX90A-NEXT:  .LBB223_6: ; %Flow1
-; GFX90A-NEXT:    s_cbranch_execnz .LBB223_8
-; GFX90A-NEXT:  .LBB223_7: ; %atomicrmw.shared
+; GFX90A-NEXT:  .LBB223_7: ; %Flow1
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:  .LBB223_8: ; %Flow2
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB223_10
+; GFX90A-NEXT:  ; %bb.9: ; %atomicrmw.shared
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v1, s4
 ; GFX90A-NEXT:    ds_add_rtn_f32 v0, v1, v0
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v0
-; GFX90A-NEXT:  .LBB223_8: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB223_10: ; %atomicrmw.end
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a0
 ; GFX90A-NEXT:    ;;#ASMEND
@@ -17530,29 +17830,36 @@ define void @flat_atomic_fadd_f32_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_shared_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v0
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB224_3
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB224_3
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.check.private
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GFX90A-NEXT:    s_cbranch_vccz .LBB224_4
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB224_4
 ; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX90A-NEXT:    global_atomic_add_f32 v1, v1, v0, s[4:5] glc
-; GFX90A-NEXT:    s_cbranch_execz .LBB224_5
-; GFX90A-NEXT:    s_branch .LBB224_6
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB224_5
 ; GFX90A-NEXT:  .LBB224_3:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr1
-; GFX90A-NEXT:    s_branch .LBB224_7
+; GFX90A-NEXT:    s_branch .LBB224_8
 ; GFX90A-NEXT:  .LBB224_4:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr1
-; GFX90A-NEXT:  .LBB224_5: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB224_5: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB224_7
+; GFX90A-NEXT:  ; %bb.6: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s6, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v2, s6
@@ -17560,16 +17867,21 @@ define void @flat_atomic_fadd_f32_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_add_f32_e32 v3, v1, v0
 ; GFX90A-NEXT:    buffer_store_dword v3, v2, s[0:3], 0 offen
-; GFX90A-NEXT:  .LBB224_6: ; %Flow1
-; GFX90A-NEXT:    s_cbranch_execnz .LBB224_8
-; GFX90A-NEXT:  .LBB224_7: ; %atomicrmw.shared
+; GFX90A-NEXT:  .LBB224_7: ; %Flow1
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:  .LBB224_8: ; %Flow2
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB224_10
+; GFX90A-NEXT:  ; %bb.9: ; %atomicrmw.shared
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_mov_b32_e32 v1, s4
 ; GFX90A-NEXT:    ds_add_rtn_f32 v1, v1, v0
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:  .LBB224_8: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB224_10: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v1
@@ -18294,31 +18606,38 @@ define void @flat_atomic_fadd_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX90A-NEXT:    s_cbranch_vccz .LBB235_3
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB235_3
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.check.private
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GFX90A-NEXT:    s_cbranch_vccz .LBB235_4
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB235_4
 ; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX90A-NEXT:    global_atomic_add_f64 v[2:3], v2, v[0:1], s[4:5] glc
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX90A-NEXT:    s_cbranch_execz .LBB235_5
-; GFX90A-NEXT:    s_branch .LBB235_6
+; GFX90A-NEXT:    s_branch .LBB235_5
 ; GFX90A-NEXT:  .LBB235_3:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX90A-NEXT:    s_branch .LBB235_7
+; GFX90A-NEXT:    s_branch .LBB235_8
 ; GFX90A-NEXT:  .LBB235_4:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX90A-NEXT:  .LBB235_5: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB235_5: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB235_7
+; GFX90A-NEXT:  ; %bb.6: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s6, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v6, s6
@@ -18330,9 +18649,14 @@ define void @flat_atomic_fadd_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
 ; GFX90A-NEXT:    buffer_store_dword v4, v6, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v5, v6, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB235_6: ; %Flow1
-; GFX90A-NEXT:    s_cbranch_execnz .LBB235_8
-; GFX90A-NEXT:  .LBB235_7: ; %atomicrmw.shared
+; GFX90A-NEXT:  .LBB235_7: ; %Flow1
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:  .LBB235_8: ; %Flow2
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB235_10
+; GFX90A-NEXT:  ; %bb.9: ; %atomicrmw.shared
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v2, s4
@@ -18340,7 +18664,7 @@ define void @flat_atomic_fadd_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v0
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v1
-; GFX90A-NEXT:  .LBB235_8: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB235_10: ; %atomicrmw.end
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
@@ -18357,31 +18681,38 @@ define void @flat_atomic_fadd_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX950-NEXT:    s_cbranch_vccz .LBB235_3
+; GFX950-NEXT:    s_cbranch_scc0 .LBB235_3
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.check.private
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GFX950-NEXT:    s_cbranch_vccz .LBB235_4
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc0 .LBB235_4
 ; GFX950-NEXT:  ; %bb.2: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX950-NEXT:    global_atomic_add_f64 v[2:3], v2, v[0:1], s[0:1] sc0
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX950-NEXT:    s_cbranch_execz .LBB235_5
-; GFX950-NEXT:    s_branch .LBB235_6
+; GFX950-NEXT:    s_branch .LBB235_5
 ; GFX950-NEXT:  .LBB235_3:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX950-NEXT:    s_branch .LBB235_7
+; GFX950-NEXT:    s_branch .LBB235_8
 ; GFX950-NEXT:  .LBB235_4:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX950-NEXT:  .LBB235_5: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB235_5: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB235_7
+; GFX950-NEXT:  ; %bb.6: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s2, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s2
@@ -18390,9 +18721,14 @@ define void @flat_atomic_fadd_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_add_f64 v[4:5], v[2:3], v[0:1]
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[4:5], s2
-; GFX950-NEXT:  .LBB235_6: ; %Flow1
-; GFX950-NEXT:    s_cbranch_execnz .LBB235_8
-; GFX950-NEXT:  .LBB235_7: ; %atomicrmw.shared
+; GFX950-NEXT:  .LBB235_7: ; %Flow1
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:  .LBB235_8: ; %Flow2
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB235_10
+; GFX950-NEXT:  ; %bb.9: ; %atomicrmw.shared
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    v_mov_b32_e32 v2, s0
@@ -18400,7 +18736,7 @@ define void @flat_atomic_fadd_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a0, v0
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v1
-; GFX950-NEXT:  .LBB235_8: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB235_10: ; %atomicrmw.end
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
@@ -18421,29 +18757,36 @@ define void @flat_atomic_fadd_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_shared_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB236_3
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB236_3
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.check.private
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GFX90A-NEXT:    s_cbranch_vccz .LBB236_4
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB236_4
 ; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX90A-NEXT:    global_atomic_add_f64 v[2:3], v2, v[0:1], s[4:5] glc
-; GFX90A-NEXT:    s_cbranch_execz .LBB236_5
-; GFX90A-NEXT:    s_branch .LBB236_6
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB236_5
 ; GFX90A-NEXT:  .LBB236_3:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX90A-NEXT:    s_branch .LBB236_7
+; GFX90A-NEXT:    s_branch .LBB236_8
 ; GFX90A-NEXT:  .LBB236_4:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX90A-NEXT:  .LBB236_5: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB236_5: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB236_7
+; GFX90A-NEXT:  ; %bb.6: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s6, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v6, s6
@@ -18453,16 +18796,21 @@ define void @flat_atomic_fadd_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_add_f64 v[4:5], v[2:3], v[0:1]
 ; GFX90A-NEXT:    buffer_store_dword v4, v6, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v5, v6, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB236_6: ; %Flow1
-; GFX90A-NEXT:    s_cbranch_execnz .LBB236_8
-; GFX90A-NEXT:  .LBB236_7: ; %atomicrmw.shared
+; GFX90A-NEXT:  .LBB236_7: ; %Flow1
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:  .LBB236_8: ; %Flow2
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB236_10
+; GFX90A-NEXT:  ; %bb.9: ; %atomicrmw.shared
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_mov_b32_e32 v2, s4
 ; GFX90A-NEXT:    ds_add_rtn_f64 v[2:3], v2, v[0:1]
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:  .LBB236_8: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB236_10: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v[2:3]
@@ -18476,45 +18824,57 @@ define void @flat_atomic_fadd_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_shared_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB236_3
+; GFX950-NEXT:    s_cbranch_scc0 .LBB236_3
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.check.private
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GFX950-NEXT:    s_cbranch_vccz .LBB236_4
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc0 .LBB236_4
 ; GFX950-NEXT:  ; %bb.2: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX950-NEXT:    global_atomic_add_f64 v[2:3], v2, v[0:1], s[0:1] sc0
-; GFX950-NEXT:    s_cbranch_execz .LBB236_5
-; GFX950-NEXT:    s_branch .LBB236_6
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:    s_branch .LBB236_5
 ; GFX950-NEXT:  .LBB236_3:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX950-NEXT:    s_branch .LBB236_7
+; GFX950-NEXT:    s_branch .LBB236_8
 ; GFX950-NEXT:  .LBB236_4:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX950-NEXT:  .LBB236_5: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB236_5: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB236_7
+; GFX950-NEXT:  ; %bb.6: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s2, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s2
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_add_f64 v[4:5], v[2:3], v[0:1]
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[4:5], s2
-; GFX950-NEXT:  .LBB236_6: ; %Flow1
-; GFX950-NEXT:    s_cbranch_execnz .LBB236_8
-; GFX950-NEXT:  .LBB236_7: ; %atomicrmw.shared
+; GFX950-NEXT:  .LBB236_7: ; %Flow1
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:  .LBB236_8: ; %Flow2
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB236_10
+; GFX950-NEXT:  ; %bb.9: ; %atomicrmw.shared
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX950-NEXT:    ds_add_rtn_f64 v[2:3], v2, v[0:1]
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-NEXT:  .LBB236_8: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB236_10: ; %atomicrmw.end
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use v[2:3]
@@ -18538,11 +18898,11 @@ define void @flat_atomic_fsub_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v5, a1
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v4, a0
-; GFX90A-NEXT:    s_cbranch_vccz .LBB237_4
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB237_4
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -18595,11 +18955,11 @@ define void @flat_atomic_fsub_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v5, a1
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v4, a0
-; GFX950-NEXT:    s_cbranch_vccz .LBB237_4
+; GFX950-NEXT:    s_cbranch_scc0 .LBB237_4
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[6:7], s[0:1]
 ; GFX950-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -18654,12 +19014,12 @@ define void @flat_atomic_fsub_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[4:5]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB238_4
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB238_4
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -18705,12 +19065,12 @@ define void @flat_atomic_fsub_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[4:5]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB238_4
+; GFX950-NEXT:    s_cbranch_scc0 .LBB238_4
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[6:7], s[0:1]
 ; GFX950-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -18764,23 +19124,29 @@ define void @flat_atomic_fmax_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX90A-NEXT:    s_cbranch_vccz .LBB239_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB239_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_max_f64 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX90A-NEXT:    s_cbranch_execz .LBB239_3
-; GFX90A-NEXT:    s_branch .LBB239_4
+; GFX90A-NEXT:    s_branch .LBB239_3
 ; GFX90A-NEXT:  .LBB239_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX90A-NEXT:  .LBB239_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB239_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB239_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v6, s4
@@ -18794,7 +19160,7 @@ define void @flat_atomic_fmax_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
 ; GFX90A-NEXT:    buffer_store_dword v0, v6, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v6, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB239_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB239_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
@@ -18811,23 +19177,29 @@ define void @flat_atomic_fmax_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX950-NEXT:    s_cbranch_vccz .LBB239_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB239_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_max_f64 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX950-NEXT:    s_cbranch_execz .LBB239_3
-; GFX950-NEXT:    s_branch .LBB239_4
+; GFX950-NEXT:    s_branch .LBB239_3
 ; GFX950-NEXT:  .LBB239_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX950-NEXT:  .LBB239_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB239_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB239_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -18838,7 +19210,7 @@ define void @flat_atomic_fmax_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_max_f64 v[0:1], v[4:5], v[0:1]
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-NEXT:  .LBB239_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB239_5: ; %atomicrmw.end
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
@@ -18859,21 +19231,27 @@ define void @flat_atomic_fmax_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[2:3]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB240_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB240_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_max_f64 v[0:1], v[0:1], v[2:3] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:    s_cbranch_execz .LBB240_3
-; GFX90A-NEXT:    s_branch .LBB240_4
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB240_3
 ; GFX90A-NEXT:  .LBB240_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX90A-NEXT:  .LBB240_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB240_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB240_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v6, s4
@@ -18885,7 +19263,7 @@ define void @flat_atomic_fmax_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]
 ; GFX90A-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v3, v6, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB240_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB240_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v[0:1]
@@ -18899,21 +19277,27 @@ define void @flat_atomic_fmax_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[2:3]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB240_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB240_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
 ; GFX950-NEXT:    flat_atomic_max_f64 v[0:1], v[0:1], v[2:3] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-NEXT:    s_cbranch_execz .LBB240_3
-; GFX950-NEXT:    s_branch .LBB240_4
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:    s_branch .LBB240_3
 ; GFX950-NEXT:  .LBB240_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX950-NEXT:  .LBB240_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB240_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB240_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[0:1], off, s0
@@ -18922,7 +19306,7 @@ define void @flat_atomic_fmax_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]
 ; GFX950-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[2:3], s0
-; GFX950-NEXT:  .LBB240_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB240_5: ; %atomicrmw.end
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use v[0:1]
@@ -18946,23 +19330,29 @@ define void @flat_atomic_fmin_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX90A-NEXT:    s_cbranch_vccz .LBB241_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB241_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_min_f64 v[2:3], v[2:3], v[0:1] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX90A-NEXT:    s_cbranch_execz .LBB241_3
-; GFX90A-NEXT:    s_branch .LBB241_4
+; GFX90A-NEXT:    s_branch .LBB241_3
 ; GFX90A-NEXT:  .LBB241_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX90A-NEXT:  .LBB241_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB241_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB241_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v6, s4
@@ -18976,7 +19366,7 @@ define void @flat_atomic_fmin_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_accvgpr_write_b32 a1, v3
 ; GFX90A-NEXT:    buffer_store_dword v0, v6, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v1, v6, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB241_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB241_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
@@ -18993,23 +19383,29 @@ define void @flat_atomic_fmin_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v1, a1
-; GFX950-NEXT:    s_cbranch_vccz .LBB241_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB241_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-NEXT:    flat_atomic_min_f64 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    v_accvgpr_write_b32 a0, v2
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
-; GFX950-NEXT:    s_cbranch_execz .LBB241_3
-; GFX950-NEXT:    s_branch .LBB241_4
+; GFX950-NEXT:    s_branch .LBB241_3
 ; GFX950-NEXT:  .LBB241_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $agpr0_agpr1
-; GFX950-NEXT:  .LBB241_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB241_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB241_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -19020,7 +19416,7 @@ define void @flat_atomic_fmin_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_min_f64 v[0:1], v[4:5], v[0:1]
 ; GFX950-NEXT:    v_accvgpr_write_b32 a1, v3
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-NEXT:  .LBB241_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB241_5: ; %atomicrmw.end
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
@@ -19041,21 +19437,27 @@ define void @flat_atomic_fmin_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[2:3]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB242_2
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB242_2
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_atomic_min_f64 v[0:1], v[0:1], v[2:3] glc
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:    s_cbranch_execz .LBB242_3
-; GFX90A-NEXT:    s_branch .LBB242_4
+; GFX90A-NEXT:    s_mov_b64 s[6:7], 0
+; GFX90A-NEXT:    s_branch .LBB242_3
 ; GFX90A-NEXT:  .LBB242_2:
+; GFX90A-NEXT:    s_mov_b64 s[6:7], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX90A-NEXT:  .LBB242_3: ; %atomicrmw.private
+; GFX90A-NEXT:  .LBB242_3: ; %Flow
+; GFX90A-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB242_5
+; GFX90A-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX90A-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX90A-NEXT:    s_cselect_b32 s4, s4, -1
 ; GFX90A-NEXT:    v_mov_b32_e32 v6, s4
@@ -19067,7 +19469,7 @@ define void @flat_atomic_fmin_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    v_min_f64 v[2:3], v[4:5], v[2:3]
 ; GFX90A-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen
 ; GFX90A-NEXT:    buffer_store_dword v3, v6, s[0:3], 0 offen offset:4
-; GFX90A-NEXT:  .LBB242_4: ; %atomicrmw.end
+; GFX90A-NEXT:  .LBB242_5: ; %atomicrmw.end
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; use v[0:1]
@@ -19081,21 +19483,27 @@ define void @flat_atomic_fmin_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[2:3]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB242_2
+; GFX950-NEXT:    s_cbranch_scc0 .LBB242_2
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
 ; GFX950-NEXT:    flat_atomic_min_f64 v[0:1], v[0:1], v[2:3] sc0
 ; GFX950-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-NEXT:    s_cbranch_execz .LBB242_3
-; GFX950-NEXT:    s_branch .LBB242_4
+; GFX950-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-NEXT:    s_branch .LBB242_3
 ; GFX950-NEXT:  .LBB242_2:
+; GFX950-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX950-NEXT:  .LBB242_3: ; %atomicrmw.private
+; GFX950-NEXT:  .LBB242_3: ; %Flow
+; GFX950-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-NEXT:    s_cbranch_scc1 .LBB242_5
+; GFX950-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-NEXT:    scratch_load_dwordx2 v[0:1], off, s0
@@ -19104,7 +19512,7 @@ define void @flat_atomic_fmin_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]
 ; GFX950-NEXT:    v_min_f64 v[2:3], v[4:5], v[2:3]
 ; GFX950-NEXT:    scratch_store_dwordx2 off, v[2:3], s0
-; GFX950-NEXT:  .LBB242_4: ; %atomicrmw.end
+; GFX950-NEXT:  .LBB242_5: ; %atomicrmw.end
 ; GFX950-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; use v[0:1]
@@ -19128,11 +19536,11 @@ define void @flat_atomic_fmaximum_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v5, a1
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v4, a0
-; GFX90A-NEXT:    s_cbranch_vccz .LBB243_4
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB243_4
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -19193,11 +19601,11 @@ define void @flat_atomic_fmaximum_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v5, a1
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v4, a0
-; GFX950-NEXT:    s_cbranch_vccz .LBB243_4
+; GFX950-NEXT:    s_cbranch_scc0 .LBB243_4
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[6:7], s[0:1]
 ; GFX950-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -19261,12 +19669,12 @@ define void @flat_atomic_fmaximum_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[4:5]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB244_4
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB244_4
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -19320,12 +19728,12 @@ define void @flat_atomic_fmaximum_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[4:5]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB244_4
+; GFX950-NEXT:    s_cbranch_scc0 .LBB244_4
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[6:7], s[0:1]
 ; GFX950-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -19389,11 +19797,11 @@ define void @flat_atomic_fminimum_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def a[0:1]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v5, a1
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    v_accvgpr_read_b32 v4, a0
-; GFX90A-NEXT:    s_cbranch_vccz .LBB245_4
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB245_4
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -19454,11 +19862,11 @@ define void @flat_atomic_fminimum_f64_saddr_ret_a_a(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def a[0:1]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX950-NEXT:    v_accvgpr_read_b32 v5, a1
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    v_accvgpr_read_b32 v4, a0
-; GFX950-NEXT:    s_cbranch_vccz .LBB245_4
+; GFX950-NEXT:    s_cbranch_scc0 .LBB245_4
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[6:7], s[0:1]
 ; GFX950-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -19522,12 +19930,12 @@ define void @flat_atomic_fminimum_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX90A-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX90A-NEXT:    s_addc_u32 s5, s17, 0
 ; GFX90A-NEXT:    s_cmp_eq_u32 s5, s7
-; GFX90A-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GFX90A-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX90A-NEXT:    ;;#ASMSTART
 ; GFX90A-NEXT:    ; def v[4:5]
 ; GFX90A-NEXT:    ;;#ASMEND
-; GFX90A-NEXT:    s_cbranch_vccz .LBB246_4
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB246_4
 ; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], s[4:5], s[4:5] op_sel:[0,1]
 ; GFX90A-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]
@@ -19581,12 +19989,12 @@ define void @flat_atomic_fminimum_f64_saddr_ret_av_av(ptr inreg %ptr) #0 {
 ; GFX950-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-NEXT:    ;;#ASMSTART
 ; GFX950-NEXT:    ; def v[4:5]
 ; GFX950-NEXT:    ;;#ASMEND
-; GFX950-NEXT:    s_cbranch_vccz .LBB246_4
+; GFX950-NEXT:    s_cbranch_scc0 .LBB246_4
 ; GFX950-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-NEXT:    v_mov_b64_e32 v[6:7], s[0:1]
 ; GFX950-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]

diff  --git a/llvm/test/CodeGen/AMDGPU/add.ll b/llvm/test/CodeGen/AMDGPU/add.ll
index b8814b64735e6..6e832df650204 100644
--- a/llvm/test/CodeGen/AMDGPU/add.ll
+++ b/llvm/test/CodeGen/AMDGPU/add.ll
@@ -1157,15 +1157,22 @@ define amdgpu_kernel void @add64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX6-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX6-NEXT:    v_cmp_ne_u64_e64 s[10:11], s[4:5], 0
 ; GFX6-NEXT:    s_and_b64 vcc, exec, s[10:11]
-; GFX6-NEXT:    s_cbranch_vccz .LBB9_4
+; GFX6-NEXT:    s_cbranch_vccz .LBB9_2
 ; GFX6-NEXT:  ; %bb.1: ; %else
 ; GFX6-NEXT:    s_add_u32 s4, s4, s6
 ; GFX6-NEXT:    s_addc_u32 s5, s5, s7
-; GFX6-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
-; GFX6-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX6-NEXT:  .LBB9_2: ; %if
+; GFX6-NEXT:    s_branch .LBB9_3
+; GFX6-NEXT:  .LBB9_2:
+; GFX6-NEXT:    s_mov_b64 s[8:9], -1
+; GFX6-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; GFX6-NEXT:  .LBB9_3: ; %Flow
+; GFX6-NEXT:    s_and_b64 s[6:7], s[8:9], exec
+; GFX6-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX6-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX6-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX6-NEXT:  ; %bb.4: ; %if
 ; GFX6-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
-; GFX6-NEXT:  .LBB9_3: ; %endif
+; GFX6-NEXT:  .LBB9_5: ; %endif
 ; GFX6-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX6-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX6-NEXT:    s_mov_b32 s3, 0xf000
@@ -1173,9 +1180,6 @@ define amdgpu_kernel void @add64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX6-NEXT:    v_mov_b32_e32 v1, s5
 ; GFX6-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
 ; GFX6-NEXT:    s_endpgm
-; GFX6-NEXT:  .LBB9_4:
-; GFX6-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; GFX6-NEXT:    s_branch .LBB9_2
 ;
 ; GFX8-LABEL: add64_in_branch:
 ; GFX8:       ; %bb.0: ; %entry
@@ -1183,15 +1187,22 @@ define amdgpu_kernel void @add64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX8-NEXT:    s_mov_b64 s[8:9], 0
 ; GFX8-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX8-NEXT:    s_cmp_lg_u64 s[4:5], 0
-; GFX8-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX8-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX8-NEXT:  ; %bb.1: ; %else
 ; GFX8-NEXT:    s_add_u32 s4, s4, s6
 ; GFX8-NEXT:    s_addc_u32 s5, s5, s7
-; GFX8-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
-; GFX8-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX8-NEXT:  .LBB9_2: ; %if
+; GFX8-NEXT:    s_branch .LBB9_3
+; GFX8-NEXT:  .LBB9_2:
+; GFX8-NEXT:    s_mov_b64 s[8:9], -1
+; GFX8-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; GFX8-NEXT:  .LBB9_3: ; %Flow
+; GFX8-NEXT:    s_and_b64 s[6:7], s[8:9], exec
+; GFX8-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX8-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX8-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX8-NEXT:  ; %bb.4: ; %if
 ; GFX8-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
-; GFX8-NEXT:  .LBB9_3: ; %endif
+; GFX8-NEXT:  .LBB9_5: ; %endif
 ; GFX8-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX8-NEXT:    v_mov_b32_e32 v2, s4
 ; GFX8-NEXT:    v_mov_b32_e32 v0, s0
@@ -1199,9 +1210,6 @@ define amdgpu_kernel void @add64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX8-NEXT:    v_mov_b32_e32 v3, s5
 ; GFX8-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
 ; GFX8-NEXT:    s_endpgm
-; GFX8-NEXT:  .LBB9_4:
-; GFX8-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; GFX8-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: add64_in_branch:
 ; GFX9:       ; %bb.0: ; %entry
@@ -1209,90 +1217,114 @@ define amdgpu_kernel void @add64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX9-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u64 s[12:13], 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %else
 ; GFX9-NEXT:    s_add_u32 s0, s12, s14
 ; GFX9-NEXT:    s_addc_u32 s1, s13, s15
-; GFX9-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GFX9-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %if
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr0_sgpr1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %if
 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[10:11], 0x0
-; GFX9-NEXT:  .LBB9_3: ; %endif
+; GFX9-NEXT:  .LBB9_5: ; %endif
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]
 ; GFX9-NEXT:    s_endpgm
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr0_sgpr1
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX10-LABEL: add64_in_branch:
 ; GFX10:       ; %bb.0: ; %entry
 ; GFX10-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX10-NEXT:    s_cmp_lg_u64 s[12:13], 0
-; GFX10-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX10-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX10-NEXT:  ; %bb.1: ; %else
 ; GFX10-NEXT:    s_add_u32 s0, s12, s14
 ; GFX10-NEXT:    s_addc_u32 s1, s13, s15
-; GFX10-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX10-NEXT:  .LBB9_2: ; %if
+; GFX10-NEXT:    s_mov_b32 s2, 0
+; GFX10-NEXT:    s_branch .LBB9_3
+; GFX10-NEXT:  .LBB9_2:
+; GFX10-NEXT:    s_mov_b32 s2, -1
+; GFX10-NEXT:    ; implicit-def: $sgpr0_sgpr1
+; GFX10-NEXT:  .LBB9_3: ; %Flow
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX10-NEXT:  ; %bb.4: ; %if
 ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[10:11], 0x0
-; GFX10-NEXT:  .LBB9_3: ; %endif
+; GFX10-NEXT:  .LBB9_5: ; %endif
 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX10-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX10-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX10-NEXT:    v_mov_b32_e32 v1, s1
 ; GFX10-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]
 ; GFX10-NEXT:    s_endpgm
-; GFX10-NEXT:  .LBB9_4:
-; GFX10-NEXT:    ; implicit-def: $sgpr0_sgpr1
-; GFX10-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: add64_in_branch:
 ; GFX11:       ; %bb.0: ; %entry
 ; GFX11-NEXT:    s_load_b256 s[0:7], s[4:5], 0x24
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u64 s[4:5], 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX11-NEXT:  ; %bb.1: ; %else
 ; GFX11-NEXT:    s_add_u32 s4, s4, s6
 ; GFX11-NEXT:    s_addc_u32 s5, s5, s7
-; GFX11-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %if
+; GFX11-NEXT:    s_mov_b32 s6, 0
+; GFX11-NEXT:    s_branch .LBB9_3
+; GFX11-NEXT:  .LBB9_2:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; GFX11-NEXT:  .LBB9_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX11-NEXT:  ; %bb.4: ; %if
 ; GFX11-NEXT:    s_load_b64 s[4:5], s[2:3], 0x0
-; GFX11-NEXT:  .LBB9_3: ; %endif
+; GFX11-NEXT:  .LBB9_5: ; %endif
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX11-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, s5
 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
 ; GFX11-NEXT:    s_endpgm
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; GFX11-NEXT:    s_branch .LBB9_2
 ;
 ; GFX12-LABEL: add64_in_branch:
 ; GFX12:       ; %bb.0: ; %entry
 ; GFX12-NEXT:    s_load_b256 s[0:7], s[4:5], 0x24
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_lg_u64 s[4:5], 0
-; GFX12-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX12-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX12-NEXT:  ; %bb.1: ; %else
 ; GFX12-NEXT:    s_add_nc_u64 s[4:5], s[4:5], s[6:7]
-; GFX12-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX12-NEXT:  .LBB9_2: ; %if
+; GFX12-NEXT:    s_mov_b32 s6, 0
+; GFX12-NEXT:    s_branch .LBB9_3
+; GFX12-NEXT:  .LBB9_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
+; GFX12-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; GFX12-NEXT:  .LBB9_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX12-NEXT:  ; %bb.4: ; %if
 ; GFX12-NEXT:    s_load_b64 s[4:5], s[2:3], 0x0
-; GFX12-NEXT:  .LBB9_3: ; %endif
+; GFX12-NEXT:  .LBB9_5: ; %endif
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX12-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, s5
 ; GFX12-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
 ; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB9_4:
-; GFX12-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; GFX12-NEXT:    s_branch .LBB9_2
 entry:
   %0 = icmp eq i64 %a, 0
   br i1 %0, label %if, label %else

diff  --git a/llvm/test/CodeGen/AMDGPU/add_i1.ll b/llvm/test/CodeGen/AMDGPU/add_i1.ll
index ac5386bdfc06f..a7a63f2d8d551 100644
--- a/llvm/test/CodeGen/AMDGPU/add_i1.ll
+++ b/llvm/test/CodeGen/AMDGPU/add_i1.ll
@@ -69,7 +69,9 @@ define amdgpu_kernel void @add_var_imm_i1(ptr addrspace(1) %out, ptr addrspace(1
 ; GFX9-NEXT:    v_and_b32_e32 v1, 1, v1
 ; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v1
 ; GFX9-NEXT:    s_xor_b64 s[2:3], vcc, -1
-; GFX9-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[2:3]
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX9-NEXT:    global_store_byte v0, v1, s[0:1]
 ; GFX9-NEXT:    s_endpgm
 ;
@@ -83,7 +85,9 @@ define amdgpu_kernel void @add_var_imm_i1(ptr addrspace(1) %out, ptr addrspace(1
 ; GFX10-NEXT:    v_and_b32_e32 v1, 1, v1
 ; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v1
 ; GFX10-NEXT:    s_xor_b32 s2, vcc_lo, -1
-; GFX10-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX10-NEXT:    global_store_byte v0, v1, s[0:1]
 ; GFX10-NEXT:    s_endpgm
 ;
@@ -98,7 +102,10 @@ define amdgpu_kernel void @add_var_imm_i1(ptr addrspace(1) %out, ptr addrspace(1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v1
 ; GFX11-NEXT:    s_xor_b32 s2, vcc_lo, -1
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX11-NEXT:    global_store_b8 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %a = load volatile i1, ptr addrspace(1) %in

diff  --git a/llvm/test/CodeGen/AMDGPU/addsub64_carry.ll b/llvm/test/CodeGen/AMDGPU/addsub64_carry.ll
index c26f1a4d93802..30e275a02b334 100644
--- a/llvm/test/CodeGen/AMDGPU/addsub64_carry.ll
+++ b/llvm/test/CodeGen/AMDGPU/addsub64_carry.ll
@@ -197,19 +197,17 @@ define amdgpu_ps <2 x i64> @s_uadd_v2i64(<2 x i64> inreg %val0, <2 x i64> inreg
 ; CHECK-NEXT:    s_add_u32 s6, s2, s6
 ; CHECK-NEXT:    s_addc_u32 s7, s3, s7
 ; CHECK-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; CHECK-NEXT:    s_add_u32 s0, s0, s4
-; CHECK-NEXT:    s_addc_u32 s1, s1, s5
-; CHECK-NEXT:    v_mov_b32_e32 v2, s0
-; CHECK-NEXT:    v_mov_b32_e32 v3, s1
+; CHECK-NEXT:    s_add_u32 s4, s0, s4
+; CHECK-NEXT:    s_addc_u32 s5, s1, s5
 ; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, -1, s[2:3]
-; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, -1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v7
-; CHECK-NEXT:    v_readfirstlane_b32 s2, v6
+; CHECK-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; CHECK-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; CHECK-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CHECK-NEXT:    v_mov_b32_e32 v2, s4
+; CHECK-NEXT:    v_mov_b32_e32 v3, s5
 ; CHECK-NEXT:    v_mov_b32_e32 v4, s6
 ; CHECK-NEXT:    v_mov_b32_e32 v5, s7
-; CHECK-NEXT:    s_mov_b32 s1, s0
-; CHECK-NEXT:    s_mov_b32 s3, s2
+; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]
 ; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; CHECK-NEXT:    ; return to shader part epilog
@@ -227,19 +225,17 @@ define amdgpu_ps <2 x i64> @s_usub_v2i64(<2 x i64> inreg %val0, <2 x i64> inreg
 ; CHECK-NEXT:    s_sub_u32 s6, s2, s6
 ; CHECK-NEXT:    s_subb_u32 s7, s3, s7
 ; CHECK-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; CHECK-NEXT:    s_sub_u32 s0, s0, s4
-; CHECK-NEXT:    s_subb_u32 s1, s1, s5
-; CHECK-NEXT:    v_mov_b32_e32 v2, s0
-; CHECK-NEXT:    v_mov_b32_e32 v3, s1
+; CHECK-NEXT:    s_sub_u32 s4, s0, s4
+; CHECK-NEXT:    s_subb_u32 s5, s1, s5
 ; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, -1, s[2:3]
-; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, -1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v7
-; CHECK-NEXT:    v_readfirstlane_b32 s2, v6
+; CHECK-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; CHECK-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; CHECK-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CHECK-NEXT:    v_mov_b32_e32 v2, s4
+; CHECK-NEXT:    v_mov_b32_e32 v3, s5
 ; CHECK-NEXT:    v_mov_b32_e32 v4, s6
 ; CHECK-NEXT:    v_mov_b32_e32 v5, s7
-; CHECK-NEXT:    s_mov_b32 s1, s0
-; CHECK-NEXT:    s_mov_b32 s3, s2
+; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]
 ; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; CHECK-NEXT:    ; return to shader part epilog
@@ -254,15 +250,15 @@ define amdgpu_ps <2 x i64> @s_usub_v2i64(<2 x i64> inreg %val0, <2 x i64> inreg
 define amdgpu_ps i64 @s_uadd_i64(i64 inreg %val0, i64 inreg %val1, ptr %ptrval) {
 ; CHECK-LABEL: s_uadd_i64:
 ; CHECK:       ; %bb.0:
-; CHECK-NEXT:    s_add_u32 s0, s0, s2
-; CHECK-NEXT:    s_addc_u32 s1, s1, s3
-; CHECK-NEXT:    v_mov_b32_e32 v2, s0
-; CHECK-NEXT:    v_mov_b32_e32 v3, s1
+; CHECK-NEXT:    s_add_u32 s2, s0, s2
+; CHECK-NEXT:    s_addc_u32 s3, s1, s3
 ; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CHECK-NEXT:    s_cselect_b32 s0, -1, 0
+; CHECK-NEXT:    v_mov_b32_e32 v2, s2
+; CHECK-NEXT:    v_mov_b32_e32 v3, s3
 ; CHECK-NEXT:    s_mov_b32 s1, s0
+; CHECK-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
 ; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; CHECK-NEXT:    ; return to shader part epilog
   %pair = call {i64, i1} @llvm.uadd.with.overflow.i64(i64 %val0, i64 %val1)
@@ -276,15 +272,15 @@ define amdgpu_ps i64 @s_uadd_i64(i64 inreg %val0, i64 inreg %val1, ptr %ptrval)
 define amdgpu_ps i64 @s_uadd_p1(i64 inreg %val0, i64 inreg %val1, ptr %ptrval) {
 ; CHECK-LABEL: s_uadd_p1:
 ; CHECK:       ; %bb.0:
-; CHECK-NEXT:    s_add_u32 s0, s0, 1
-; CHECK-NEXT:    s_addc_u32 s1, s1, 0
-; CHECK-NEXT:    v_mov_b32_e32 v2, s0
-; CHECK-NEXT:    v_mov_b32_e32 v3, s1
+; CHECK-NEXT:    s_add_u32 s2, s0, 1
+; CHECK-NEXT:    s_addc_u32 s3, s1, 0
 ; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CHECK-NEXT:    s_cselect_b32 s0, -1, 0
+; CHECK-NEXT:    v_mov_b32_e32 v2, s2
+; CHECK-NEXT:    v_mov_b32_e32 v3, s3
 ; CHECK-NEXT:    s_mov_b32 s1, s0
+; CHECK-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
 ; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; CHECK-NEXT:    ; return to shader part epilog
   %pair = call {i64, i1} @llvm.uadd.with.overflow.i64(i64 %val0, i64 1)
@@ -298,15 +294,15 @@ define amdgpu_ps i64 @s_uadd_p1(i64 inreg %val0, i64 inreg %val1, ptr %ptrval) {
 define amdgpu_ps i64 @s_uadd_n1(i64 inreg %val0, i64 inreg %val1, ptr %ptrval) {
 ; CHECK-LABEL: s_uadd_n1:
 ; CHECK:       ; %bb.0:
-; CHECK-NEXT:    s_add_u32 s0, s0, -1
-; CHECK-NEXT:    s_addc_u32 s1, s1, -1
-; CHECK-NEXT:    v_mov_b32_e32 v2, s0
-; CHECK-NEXT:    v_mov_b32_e32 v3, s1
+; CHECK-NEXT:    s_add_u32 s2, s0, -1
+; CHECK-NEXT:    s_addc_u32 s3, s1, -1
 ; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CHECK-NEXT:    s_cselect_b32 s0, -1, 0
+; CHECK-NEXT:    v_mov_b32_e32 v2, s2
+; CHECK-NEXT:    v_mov_b32_e32 v3, s3
 ; CHECK-NEXT:    s_mov_b32 s1, s0
+; CHECK-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
 ; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; CHECK-NEXT:    ; return to shader part epilog
   %pair = call {i64, i1} @llvm.uadd.with.overflow.i64(i64 %val0, i64 -1)
@@ -320,15 +316,15 @@ define amdgpu_ps i64 @s_uadd_n1(i64 inreg %val0, i64 inreg %val1, ptr %ptrval) {
 define amdgpu_ps i64 @s_usub_p1(i64 inreg %val0, i64 inreg %val1, ptr %ptrval) {
 ; CHECK-LABEL: s_usub_p1:
 ; CHECK:       ; %bb.0:
-; CHECK-NEXT:    s_sub_u32 s0, s0, 1
-; CHECK-NEXT:    s_subb_u32 s1, s1, 0
-; CHECK-NEXT:    v_mov_b32_e32 v2, s0
-; CHECK-NEXT:    v_mov_b32_e32 v3, s1
+; CHECK-NEXT:    s_sub_u32 s2, s0, 1
+; CHECK-NEXT:    s_subb_u32 s3, s1, 0
 ; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CHECK-NEXT:    s_cselect_b32 s0, -1, 0
+; CHECK-NEXT:    v_mov_b32_e32 v2, s2
+; CHECK-NEXT:    v_mov_b32_e32 v3, s3
 ; CHECK-NEXT:    s_mov_b32 s1, s0
+; CHECK-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
 ; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; CHECK-NEXT:    ; return to shader part epilog
   %pair = call {i64, i1} @llvm.usub.with.overflow.i64(i64 %val0, i64 1)
@@ -342,15 +338,15 @@ define amdgpu_ps i64 @s_usub_p1(i64 inreg %val0, i64 inreg %val1, ptr %ptrval) {
 define amdgpu_ps i64 @s_usub_n1(i64 inreg %val0, i64 inreg %val1, ptr %ptrval) {
 ; CHECK-LABEL: s_usub_n1:
 ; CHECK:       ; %bb.0:
-; CHECK-NEXT:    s_sub_u32 s0, s0, -1
-; CHECK-NEXT:    s_subb_u32 s1, s1, -1
-; CHECK-NEXT:    v_mov_b32_e32 v2, s0
-; CHECK-NEXT:    v_mov_b32_e32 v3, s1
+; CHECK-NEXT:    s_sub_u32 s2, s0, -1
+; CHECK-NEXT:    s_subb_u32 s3, s1, -1
 ; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CHECK-NEXT:    s_cselect_b32 s0, -1, 0
+; CHECK-NEXT:    v_mov_b32_e32 v2, s2
+; CHECK-NEXT:    v_mov_b32_e32 v3, s3
 ; CHECK-NEXT:    s_mov_b32 s1, s0
+; CHECK-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
 ; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; CHECK-NEXT:    ; return to shader part epilog
   %pair = call {i64, i1} @llvm.usub.with.overflow.i64(i64 %val0, i64 -1)

diff  --git a/llvm/test/CodeGen/AMDGPU/agpr-copy-no-free-registers.ll b/llvm/test/CodeGen/AMDGPU/agpr-copy-no-free-registers.ll
index 727728145dfe0..bd4e24d96b612 100644
--- a/llvm/test/CodeGen/AMDGPU/agpr-copy-no-free-registers.ll
+++ b/llvm/test/CodeGen/AMDGPU/agpr-copy-no-free-registers.ll
@@ -512,10 +512,10 @@ define amdgpu_kernel void @introduced_copy_to_sgpr(i64 %arg, i32 %arg1, i32 %arg
 ; GFX908:       ; %bb.0: ; %bb
 ; GFX908-NEXT:    global_load_ushort v16, v[0:1], off glc
 ; GFX908-NEXT:    s_load_dwordx4 s[4:7], s[8:9], 0x0
-; GFX908-NEXT:    s_load_dwordx2 s[10:11], s[8:9], 0x10
+; GFX908-NEXT:    s_load_dwordx2 s[2:3], s[8:9], 0x10
 ; GFX908-NEXT:    s_load_dword s0, s[8:9], 0x18
-; GFX908-NEXT:    s_mov_b32 s12, 0
-; GFX908-NEXT:    s_mov_b32 s9, s12
+; GFX908-NEXT:    s_mov_b32 s10, 0
+; GFX908-NEXT:    s_mov_b32 s9, s10
 ; GFX908-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX908-NEXT:    v_cvt_f32_u32_e32 v0, s7
 ; GFX908-NEXT:    s_sub_i32 s1, 0, s7
@@ -525,93 +525,97 @@ define amdgpu_kernel void @introduced_copy_to_sgpr(i64 %arg, i32 %arg1, i32 %arg
 ; GFX908-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX908-NEXT:    v_mul_f32_e32 v0, 0x4f7ffffe, v0
 ; GFX908-NEXT:    v_cvt_u32_f32_e32 v0, v0
-; GFX908-NEXT:    v_readfirstlane_b32 s2, v0
-; GFX908-NEXT:    s_mul_i32 s1, s1, s2
-; GFX908-NEXT:    s_mul_hi_u32 s1, s2, s1
-; GFX908-NEXT:    s_add_i32 s2, s2, s1
-; GFX908-NEXT:    s_mul_hi_u32 s1, s6, s2
-; GFX908-NEXT:    s_mul_i32 s2, s1, s7
-; GFX908-NEXT:    s_sub_i32 s2, s6, s2
-; GFX908-NEXT:    s_add_i32 s3, s1, 1
-; GFX908-NEXT:    s_sub_i32 s6, s2, s7
-; GFX908-NEXT:    s_cmp_ge_u32 s2, s7
-; GFX908-NEXT:    s_cselect_b32 s1, s3, s1
-; GFX908-NEXT:    s_cselect_b32 s2, s6, s2
-; GFX908-NEXT:    s_add_i32 s3, s1, 1
-; GFX908-NEXT:    s_cmp_ge_u32 s2, s7
-; GFX908-NEXT:    s_cselect_b32 s8, s3, s1
-; GFX908-NEXT:    s_lshr_b32 s2, s0, 16
-; GFX908-NEXT:    v_cvt_f32_f16_e32 v19, s2
+; GFX908-NEXT:    v_readfirstlane_b32 s8, v0
+; GFX908-NEXT:    s_mul_i32 s1, s1, s8
+; GFX908-NEXT:    s_mul_hi_u32 s1, s8, s1
+; GFX908-NEXT:    s_add_i32 s8, s8, s1
+; GFX908-NEXT:    s_mul_hi_u32 s1, s6, s8
+; GFX908-NEXT:    s_mul_i32 s8, s1, s7
+; GFX908-NEXT:    s_sub_i32 s6, s6, s8
+; GFX908-NEXT:    s_add_i32 s11, s1, 1
+; GFX908-NEXT:    s_sub_i32 s8, s6, s7
+; GFX908-NEXT:    s_cmp_ge_u32 s6, s7
+; GFX908-NEXT:    s_cselect_b32 s1, s11, s1
+; GFX908-NEXT:    s_cselect_b32 s6, s8, s6
+; GFX908-NEXT:    s_add_i32 s8, s1, 1
+; GFX908-NEXT:    s_cmp_ge_u32 s6, s7
+; GFX908-NEXT:    s_cselect_b32 s8, s8, s1
+; GFX908-NEXT:    s_lshr_b32 s11, s0, 16
+; GFX908-NEXT:    s_lshl_b64 s[14:15], s[8:9], 5
+; GFX908-NEXT:    v_cvt_f32_f16_e32 v19, s11
 ; GFX908-NEXT:    s_lshl_b64 s[6:7], s[4:5], 5
-; GFX908-NEXT:    s_lshl_b64 s[14:15], s[10:11], 5
+; GFX908-NEXT:    s_lshl_b64 s[12:13], s[2:3], 5
 ; GFX908-NEXT:    s_and_b64 s[0:1], exec, s[0:1]
-; GFX908-NEXT:    s_lshl_b64 s[16:17], s[8:9], 5
 ; GFX908-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX908-NEXT:    s_waitcnt vmcnt(0)
-; GFX908-NEXT:    v_readfirstlane_b32 s2, v16
-; GFX908-NEXT:    s_and_b32 s2, 0xffff, s2
-; GFX908-NEXT:    s_mul_i32 s3, s5, s2
-; GFX908-NEXT:    s_mul_hi_u32 s5, s4, s2
-; GFX908-NEXT:    s_mul_i32 s2, s4, s2
-; GFX908-NEXT:    s_add_i32 s3, s5, s3
-; GFX908-NEXT:    s_lshl_b64 s[4:5], s[2:3], 5
+; GFX908-NEXT:    v_readfirstlane_b32 s9, v16
+; GFX908-NEXT:    s_and_b32 s9, 0xffff, s9
+; GFX908-NEXT:    s_mul_i32 s5, s5, s9
+; GFX908-NEXT:    s_mul_hi_u32 s11, s4, s9
+; GFX908-NEXT:    s_mul_i32 s4, s4, s9
+; GFX908-NEXT:    s_add_i32 s5, s11, s5
+; GFX908-NEXT:    s_lshl_b64 s[4:5], s[4:5], 5
 ; GFX908-NEXT:    s_branch .LBB3_2
 ; GFX908-NEXT:  .LBB3_1: ; %Flow20
 ; GFX908-NEXT:    ; in Loop: Header=BB3_2 Depth=1
-; GFX908-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GFX908-NEXT:    s_cbranch_vccz .LBB3_12
+; GFX908-NEXT:    s_and_b64 s[16:17], s[16:17], exec
+; GFX908-NEXT:    s_cselect_b32 s9, 1, 0
+; GFX908-NEXT:    s_cmp_lg_u32 s9, 1
+; GFX908-NEXT:    s_cbranch_scc0 .LBB3_14
 ; GFX908-NEXT:  .LBB3_2: ; %bb9
 ; GFX908-NEXT:    ; =>This Loop Header: Depth=1
-; GFX908-NEXT:    ; Child Loop BB3_5 Depth 2
+; GFX908-NEXT:    ; Child Loop BB3_6 Depth 2
 ; GFX908-NEXT:    s_mov_b64 s[18:19], -1
 ; GFX908-NEXT:    s_mov_b64 vcc, s[0:1]
-; GFX908-NEXT:    s_cbranch_vccz .LBB3_10
+; GFX908-NEXT:    s_cbranch_vccz .LBB3_12
 ; GFX908-NEXT:  ; %bb.3: ; %bb14
 ; GFX908-NEXT:    ; in Loop: Header=BB3_2 Depth=1
 ; GFX908-NEXT:    global_load_dwordx2 v[2:3], v[0:1], off
-; GFX908-NEXT:    s_cmp_lt_i32 s11, 0
-; GFX908-NEXT:    s_mov_b32 s13, s12
-; GFX908-NEXT:    s_cselect_b64 s[18:19], -1, 0
-; GFX908-NEXT:    s_cmp_gt_i32 s11, -1
-; GFX908-NEXT:    v_mov_b32_e32 v4, s12
-; GFX908-NEXT:    v_mov_b32_e32 v6, s12
-; GFX908-NEXT:    v_mov_b32_e32 v8, s12
-; GFX908-NEXT:    v_mov_b32_e32 v5, s13
-; GFX908-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX908-NEXT:    v_mov_b32_e32 v7, s13
-; GFX908-NEXT:    v_mov_b32_e32 v9, s13
-; GFX908-NEXT:    v_cndmask_b32_e64 v10, 0, 1, s[2:3]
-; GFX908-NEXT:    v_cmp_ne_u32_e64 s[2:3], 1, v10
+; GFX908-NEXT:    s_cmp_lt_i32 s3, 0
+; GFX908-NEXT:    s_mov_b32 s11, s10
+; GFX908-NEXT:    s_cselect_b64 s[16:17], -1, 0
+; GFX908-NEXT:    s_cmp_gt_i32 s3, -1
+; GFX908-NEXT:    v_mov_b32_e32 v4, s10
+; GFX908-NEXT:    v_mov_b32_e32 v6, s10
+; GFX908-NEXT:    v_mov_b32_e32 v8, s10
+; GFX908-NEXT:    v_mov_b32_e32 v5, s11
+; GFX908-NEXT:    s_cselect_b64 s[20:21], -1, 0
+; GFX908-NEXT:    v_mov_b32_e32 v7, s11
+; GFX908-NEXT:    v_mov_b32_e32 v9, s11
 ; GFX908-NEXT:    v_mov_b32_e32 v11, v5
-; GFX908-NEXT:    s_mov_b64 s[20:21], s[14:15]
+; GFX908-NEXT:    s_mov_b64 s[18:19], s[12:13]
 ; GFX908-NEXT:    v_mov_b32_e32 v10, v4
 ; GFX908-NEXT:    s_waitcnt vmcnt(0)
 ; GFX908-NEXT:    v_readfirstlane_b32 s9, v2
-; GFX908-NEXT:    v_readfirstlane_b32 s13, v3
+; GFX908-NEXT:    v_readfirstlane_b32 s11, v3
 ; GFX908-NEXT:    s_add_u32 s9, s9, 1
-; GFX908-NEXT:    s_addc_u32 s13, s13, 0
+; GFX908-NEXT:    s_addc_u32 s11, s11, 0
 ; GFX908-NEXT:    s_mul_hi_u32 s22, s6, s9
-; GFX908-NEXT:    s_mul_i32 s13, s6, s13
+; GFX908-NEXT:    s_mul_i32 s11, s6, s11
 ; GFX908-NEXT:    s_mul_i32 s23, s7, s9
-; GFX908-NEXT:    s_add_i32 s13, s22, s13
+; GFX908-NEXT:    s_add_i32 s11, s22, s11
 ; GFX908-NEXT:    s_mul_i32 s9, s6, s9
-; GFX908-NEXT:    s_add_i32 s13, s13, s23
-; GFX908-NEXT:    s_branch .LBB3_5
+; GFX908-NEXT:    s_add_i32 s11, s11, s23
+; GFX908-NEXT:    s_branch .LBB3_6
 ; GFX908-NEXT:  .LBB3_4: ; %bb58
-; GFX908-NEXT:    ; in Loop: Header=BB3_5 Depth=2
+; GFX908-NEXT:    ; in Loop: Header=BB3_6 Depth=2
 ; GFX908-NEXT:    v_add_co_u32_sdwa v2, vcc, v2, v16 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; GFX908-NEXT:    v_addc_co_u32_e32 v3, vcc, 0, v3, vcc
-; GFX908-NEXT:    s_add_u32 s20, s20, s4
-; GFX908-NEXT:    s_addc_u32 s21, s21, s5
+; GFX908-NEXT:    s_add_u32 s18, s18, s4
+; GFX908-NEXT:    s_addc_u32 s19, s19, s5
 ; GFX908-NEXT:    s_mov_b64 s[22:23], 0
 ; GFX908-NEXT:    v_cmp_lt_i32_e64 s[24:25], -1, v3
-; GFX908-NEXT:    s_andn2_b64 vcc, exec, s[24:25]
-; GFX908-NEXT:    s_cbranch_vccz .LBB3_9
-; GFX908-NEXT:  .LBB3_5: ; %bb16
+; GFX908-NEXT:  .LBB3_5: ; %Flow18
+; GFX908-NEXT:    ; in Loop: Header=BB3_6 Depth=2
+; GFX908-NEXT:    s_and_b64 s[24:25], s[24:25], exec
+; GFX908-NEXT:    s_cselect_b32 s24, 1, 0
+; GFX908-NEXT:    s_cmp_lg_u32 s24, 1
+; GFX908-NEXT:    s_cbranch_scc0 .LBB3_11
+; GFX908-NEXT:  .LBB3_6: ; %bb16
 ; GFX908-NEXT:    ; Parent Loop BB3_2 Depth=1
 ; GFX908-NEXT:    ; => This Inner Loop Header: Depth=2
-; GFX908-NEXT:    s_add_u32 s22, s20, s9
-; GFX908-NEXT:    s_addc_u32 s23, s21, s13
+; GFX908-NEXT:    s_add_u32 s22, s18, s9
+; GFX908-NEXT:    s_addc_u32 s23, s19, s11
 ; GFX908-NEXT:    global_load_dword v21, v17, s[22:23] offset:16 glc
 ; GFX908-NEXT:    s_waitcnt vmcnt(0)
 ; GFX908-NEXT:    global_load_dword v20, v17, s[22:23] offset:20 glc
@@ -622,11 +626,13 @@ define amdgpu_kernel void @introduced_copy_to_sgpr(i64 %arg, i32 %arg1, i32 %arg
 ; GFX908-NEXT:    s_waitcnt vmcnt(0)
 ; GFX908-NEXT:    ds_read_b64 v[12:13], v17
 ; GFX908-NEXT:    ds_read_b64 v[14:15], v0
-; GFX908-NEXT:    s_and_b64 vcc, exec, s[2:3]
+; GFX908-NEXT:    s_and_b64 s[22:23], s[20:21], exec
+; GFX908-NEXT:    s_cselect_b32 s22, 1, 0
+; GFX908-NEXT:    s_cmp_lg_u32 s22, 1
 ; GFX908-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX908-NEXT:    s_cbranch_vccnz .LBB3_7
-; GFX908-NEXT:  ; %bb.6: ; %bb51
-; GFX908-NEXT:    ; in Loop: Header=BB3_5 Depth=2
+; GFX908-NEXT:    s_cbranch_scc1 .LBB3_8
+; GFX908-NEXT:  ; %bb.7: ; %bb51
+; GFX908-NEXT:    ; in Loop: Header=BB3_6 Depth=2
 ; GFX908-NEXT:    v_add_f32_e32 v22, v18, v12
 ; GFX908-NEXT:    v_add_f32_e32 v23, v19, v13
 ; GFX908-NEXT:    v_add_f32_e32 v24, 0, v12
@@ -643,42 +649,49 @@ define amdgpu_kernel void @introduced_copy_to_sgpr(i64 %arg, i32 %arg1, i32 %arg
 ; GFX908-NEXT:    v_add_f32_e32 v8, v8, v14
 ; GFX908-NEXT:    v_add_f32_e32 v11, v11, v13
 ; GFX908-NEXT:    v_add_f32_e32 v10, v10, v12
-; GFX908-NEXT:    s_branch .LBB3_4
-; GFX908-NEXT:  .LBB3_7: ; in Loop: Header=BB3_5 Depth=2
-; GFX908-NEXT:    s_mov_b64 s[22:23], s[18:19]
-; GFX908-NEXT:    s_andn2_b64 vcc, exec, s[22:23]
-; GFX908-NEXT:    s_cbranch_vccz .LBB3_4
-; GFX908-NEXT:  ; %bb.8: ; in Loop: Header=BB3_2 Depth=1
+; GFX908-NEXT:    s_mov_b64 s[22:23], -1
+; GFX908-NEXT:    s_branch .LBB3_9
+; GFX908-NEXT:  .LBB3_8: ; in Loop: Header=BB3_6 Depth=2
+; GFX908-NEXT:    s_mov_b64 s[22:23], s[16:17]
+; GFX908-NEXT:  .LBB3_9: ; %Flow
+; GFX908-NEXT:    ; in Loop: Header=BB3_6 Depth=2
+; GFX908-NEXT:    s_and_b64 s[22:23], s[22:23], exec
+; GFX908-NEXT:    s_cselect_b32 s22, 1, 0
+; GFX908-NEXT:    s_cmp_lg_u32 s22, 1
+; GFX908-NEXT:    s_cbranch_scc0 .LBB3_4
+; GFX908-NEXT:  ; %bb.10: ; in Loop: Header=BB3_6 Depth=2
 ; GFX908-NEXT:    s_mov_b64 s[22:23], -1
 ; GFX908-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX908-NEXT:    ; implicit-def: $sgpr20_sgpr21
-; GFX908-NEXT:  .LBB3_9: ; %loop.exit.guard
+; GFX908-NEXT:    ; implicit-def: $sgpr18_sgpr19
+; GFX908-NEXT:    s_mov_b64 s[24:25], -1
+; GFX908-NEXT:    s_branch .LBB3_5
+; GFX908-NEXT:  .LBB3_11: ; %loop.exit.guard
 ; GFX908-NEXT:    ; in Loop: Header=BB3_2 Depth=1
 ; GFX908-NEXT:    s_xor_b64 s[18:19], s[22:23], -1
-; GFX908-NEXT:  .LBB3_10: ; %Flow19
+; GFX908-NEXT:  .LBB3_12: ; %Flow19
 ; GFX908-NEXT:    ; in Loop: Header=BB3_2 Depth=1
-; GFX908-NEXT:    s_mov_b64 s[2:3], -1
+; GFX908-NEXT:    s_mov_b64 s[16:17], -1
 ; GFX908-NEXT:    s_and_b64 vcc, exec, s[18:19]
 ; GFX908-NEXT:    s_cbranch_vccz .LBB3_1
-; GFX908-NEXT:  ; %bb.11: ; %bb12
+; GFX908-NEXT:  ; %bb.13: ; %bb12
 ; GFX908-NEXT:    ; in Loop: Header=BB3_2 Depth=1
-; GFX908-NEXT:    s_add_u32 s10, s10, s8
-; GFX908-NEXT:    s_addc_u32 s11, s11, 0
-; GFX908-NEXT:    s_add_u32 s14, s14, s16
-; GFX908-NEXT:    s_addc_u32 s15, s15, s17
-; GFX908-NEXT:    s_mov_b64 s[2:3], 0
+; GFX908-NEXT:    s_add_u32 s2, s2, s8
+; GFX908-NEXT:    s_addc_u32 s3, s3, 0
+; GFX908-NEXT:    s_add_u32 s12, s12, s14
+; GFX908-NEXT:    s_addc_u32 s13, s13, s15
+; GFX908-NEXT:    s_mov_b64 s[16:17], 0
 ; GFX908-NEXT:    s_branch .LBB3_1
-; GFX908-NEXT:  .LBB3_12: ; %DummyReturnBlock
+; GFX908-NEXT:  .LBB3_14: ; %DummyReturnBlock
 ; GFX908-NEXT:    s_endpgm
 ;
 ; GFX90A-LABEL: introduced_copy_to_sgpr:
 ; GFX90A:       ; %bb.0: ; %bb
 ; GFX90A-NEXT:    global_load_ushort v18, v[0:1], off glc
 ; GFX90A-NEXT:    s_load_dwordx4 s[4:7], s[8:9], 0x0
-; GFX90A-NEXT:    s_load_dwordx2 s[10:11], s[8:9], 0x10
+; GFX90A-NEXT:    s_load_dwordx2 s[2:3], s[8:9], 0x10
 ; GFX90A-NEXT:    s_load_dword s0, s[8:9], 0x18
-; GFX90A-NEXT:    s_mov_b32 s12, 0
-; GFX90A-NEXT:    s_mov_b32 s9, s12
+; GFX90A-NEXT:    s_mov_b32 s10, 0
+; GFX90A-NEXT:    s_mov_b32 s9, s10
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX90A-NEXT:    v_cvt_f32_u32_e32 v0, s7
 ; GFX90A-NEXT:    s_sub_i32 s1, 0, s7
@@ -688,88 +701,92 @@ define amdgpu_kernel void @introduced_copy_to_sgpr(i64 %arg, i32 %arg1, i32 %arg
 ; GFX90A-NEXT:    v_mul_f32_e32 v0, 0x4f7ffffe, v0
 ; GFX90A-NEXT:    v_cvt_u32_f32_e32 v1, v0
 ; GFX90A-NEXT:    v_cvt_f32_f16_e32 v0, s0
-; GFX90A-NEXT:    v_readfirstlane_b32 s2, v1
-; GFX90A-NEXT:    s_mul_i32 s1, s1, s2
-; GFX90A-NEXT:    s_mul_hi_u32 s1, s2, s1
-; GFX90A-NEXT:    s_add_i32 s2, s2, s1
-; GFX90A-NEXT:    s_mul_hi_u32 s1, s6, s2
-; GFX90A-NEXT:    s_mul_i32 s2, s1, s7
-; GFX90A-NEXT:    s_sub_i32 s2, s6, s2
-; GFX90A-NEXT:    s_add_i32 s3, s1, 1
-; GFX90A-NEXT:    s_sub_i32 s6, s2, s7
-; GFX90A-NEXT:    s_cmp_ge_u32 s2, s7
-; GFX90A-NEXT:    s_cselect_b32 s1, s3, s1
-; GFX90A-NEXT:    s_cselect_b32 s2, s6, s2
-; GFX90A-NEXT:    s_add_i32 s3, s1, 1
-; GFX90A-NEXT:    s_cmp_ge_u32 s2, s7
-; GFX90A-NEXT:    s_cselect_b32 s8, s3, s1
-; GFX90A-NEXT:    s_lshr_b32 s2, s0, 16
-; GFX90A-NEXT:    v_cvt_f32_f16_e32 v1, s2
+; GFX90A-NEXT:    v_readfirstlane_b32 s8, v1
+; GFX90A-NEXT:    s_mul_i32 s1, s1, s8
+; GFX90A-NEXT:    s_mul_hi_u32 s1, s8, s1
+; GFX90A-NEXT:    s_add_i32 s8, s8, s1
+; GFX90A-NEXT:    s_mul_hi_u32 s1, s6, s8
+; GFX90A-NEXT:    s_mul_i32 s8, s1, s7
+; GFX90A-NEXT:    s_sub_i32 s6, s6, s8
+; GFX90A-NEXT:    s_add_i32 s11, s1, 1
+; GFX90A-NEXT:    s_sub_i32 s8, s6, s7
+; GFX90A-NEXT:    s_cmp_ge_u32 s6, s7
+; GFX90A-NEXT:    s_cselect_b32 s1, s11, s1
+; GFX90A-NEXT:    s_cselect_b32 s6, s8, s6
+; GFX90A-NEXT:    s_add_i32 s8, s1, 1
+; GFX90A-NEXT:    s_cmp_ge_u32 s6, s7
+; GFX90A-NEXT:    s_cselect_b32 s8, s8, s1
+; GFX90A-NEXT:    s_lshr_b32 s11, s0, 16
+; GFX90A-NEXT:    s_lshl_b64 s[14:15], s[8:9], 5
+; GFX90A-NEXT:    v_cvt_f32_f16_e32 v1, s11
 ; GFX90A-NEXT:    s_lshl_b64 s[6:7], s[4:5], 5
-; GFX90A-NEXT:    s_lshl_b64 s[14:15], s[10:11], 5
+; GFX90A-NEXT:    s_lshl_b64 s[12:13], s[2:3], 5
 ; GFX90A-NEXT:    s_and_b64 s[0:1], exec, s[0:1]
-; GFX90A-NEXT:    s_lshl_b64 s[16:17], s[8:9], 5
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
-; GFX90A-NEXT:    v_readfirstlane_b32 s2, v18
-; GFX90A-NEXT:    s_and_b32 s2, 0xffff, s2
-; GFX90A-NEXT:    s_mul_i32 s3, s5, s2
-; GFX90A-NEXT:    s_mul_hi_u32 s5, s4, s2
-; GFX90A-NEXT:    s_mul_i32 s2, s4, s2
-; GFX90A-NEXT:    s_add_i32 s3, s5, s3
-; GFX90A-NEXT:    s_lshl_b64 s[4:5], s[2:3], 5
+; GFX90A-NEXT:    v_readfirstlane_b32 s9, v18
+; GFX90A-NEXT:    s_and_b32 s9, 0xffff, s9
+; GFX90A-NEXT:    s_mul_i32 s5, s5, s9
+; GFX90A-NEXT:    s_mul_hi_u32 s11, s4, s9
+; GFX90A-NEXT:    s_mul_i32 s4, s4, s9
+; GFX90A-NEXT:    s_add_i32 s5, s11, s5
+; GFX90A-NEXT:    s_lshl_b64 s[4:5], s[4:5], 5
 ; GFX90A-NEXT:    s_branch .LBB3_2
 ; GFX90A-NEXT:  .LBB3_1: ; %Flow20
 ; GFX90A-NEXT:    ; in Loop: Header=BB3_2 Depth=1
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GFX90A-NEXT:    s_cbranch_vccz .LBB3_12
+; GFX90A-NEXT:    s_and_b64 s[16:17], s[16:17], exec
+; GFX90A-NEXT:    s_cselect_b32 s9, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s9, 1
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB3_14
 ; GFX90A-NEXT:  .LBB3_2: ; %bb9
 ; GFX90A-NEXT:    ; =>This Loop Header: Depth=1
-; GFX90A-NEXT:    ; Child Loop BB3_5 Depth 2
+; GFX90A-NEXT:    ; Child Loop BB3_6 Depth 2
 ; GFX90A-NEXT:    s_mov_b64 s[18:19], -1
 ; GFX90A-NEXT:    s_mov_b64 vcc, s[0:1]
-; GFX90A-NEXT:    s_cbranch_vccz .LBB3_10
+; GFX90A-NEXT:    s_cbranch_vccz .LBB3_12
 ; GFX90A-NEXT:  ; %bb.3: ; %bb14
 ; GFX90A-NEXT:    ; in Loop: Header=BB3_2 Depth=1
 ; GFX90A-NEXT:    global_load_dwordx2 v[4:5], v[2:3], off
-; GFX90A-NEXT:    s_cmp_lt_i32 s11, 0
-; GFX90A-NEXT:    s_mov_b32 s13, s12
-; GFX90A-NEXT:    s_cselect_b64 s[18:19], -1, 0
-; GFX90A-NEXT:    s_cmp_gt_i32 s11, -1
-; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], s[12:13], s[12:13] op_sel:[0,1]
-; GFX90A-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX90A-NEXT:    v_pk_mov_b32 v[8:9], s[12:13], s[12:13] op_sel:[0,1]
-; GFX90A-NEXT:    v_pk_mov_b32 v[10:11], s[12:13], s[12:13] op_sel:[0,1]
-; GFX90A-NEXT:    v_cndmask_b32_e64 v12, 0, 1, s[2:3]
-; GFX90A-NEXT:    s_mov_b64 s[20:21], s[14:15]
-; GFX90A-NEXT:    v_cmp_ne_u32_e64 s[2:3], 1, v12
+; GFX90A-NEXT:    s_cmp_lt_i32 s3, 0
+; GFX90A-NEXT:    s_mov_b32 s11, s10
+; GFX90A-NEXT:    s_cselect_b64 s[16:17], -1, 0
+; GFX90A-NEXT:    s_cmp_gt_i32 s3, -1
+; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], s[10:11], s[10:11] op_sel:[0,1]
+; GFX90A-NEXT:    s_cselect_b64 s[20:21], -1, 0
+; GFX90A-NEXT:    v_pk_mov_b32 v[8:9], s[10:11], s[10:11] op_sel:[0,1]
+; GFX90A-NEXT:    v_pk_mov_b32 v[10:11], s[10:11], s[10:11] op_sel:[0,1]
+; GFX90A-NEXT:    s_mov_b64 s[18:19], s[12:13]
 ; GFX90A-NEXT:    v_pk_mov_b32 v[12:13], v[6:7], v[6:7] op_sel:[0,1]
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    v_readfirstlane_b32 s9, v4
-; GFX90A-NEXT:    v_readfirstlane_b32 s13, v5
+; GFX90A-NEXT:    v_readfirstlane_b32 s11, v5
 ; GFX90A-NEXT:    s_add_u32 s9, s9, 1
-; GFX90A-NEXT:    s_addc_u32 s13, s13, 0
+; GFX90A-NEXT:    s_addc_u32 s11, s11, 0
 ; GFX90A-NEXT:    s_mul_hi_u32 s22, s6, s9
-; GFX90A-NEXT:    s_mul_i32 s13, s6, s13
+; GFX90A-NEXT:    s_mul_i32 s11, s6, s11
 ; GFX90A-NEXT:    s_mul_i32 s23, s7, s9
-; GFX90A-NEXT:    s_add_i32 s13, s22, s13
+; GFX90A-NEXT:    s_add_i32 s11, s22, s11
 ; GFX90A-NEXT:    s_mul_i32 s9, s6, s9
-; GFX90A-NEXT:    s_add_i32 s13, s13, s23
-; GFX90A-NEXT:    s_branch .LBB3_5
+; GFX90A-NEXT:    s_add_i32 s11, s11, s23
+; GFX90A-NEXT:    s_branch .LBB3_6
 ; GFX90A-NEXT:  .LBB3_4: ; %bb58
-; GFX90A-NEXT:    ; in Loop: Header=BB3_5 Depth=2
+; GFX90A-NEXT:    ; in Loop: Header=BB3_6 Depth=2
 ; GFX90A-NEXT:    v_add_co_u32_sdwa v4, vcc, v4, v18 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; GFX90A-NEXT:    v_addc_co_u32_e32 v5, vcc, 0, v5, vcc
-; GFX90A-NEXT:    s_add_u32 s20, s20, s4
-; GFX90A-NEXT:    s_addc_u32 s21, s21, s5
+; GFX90A-NEXT:    s_add_u32 s18, s18, s4
+; GFX90A-NEXT:    s_addc_u32 s19, s19, s5
 ; GFX90A-NEXT:    s_mov_b64 s[22:23], 0
 ; GFX90A-NEXT:    v_cmp_lt_i32_e64 s[24:25], -1, v5
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[24:25]
-; GFX90A-NEXT:    s_cbranch_vccz .LBB3_9
-; GFX90A-NEXT:  .LBB3_5: ; %bb16
+; GFX90A-NEXT:  .LBB3_5: ; %Flow18
+; GFX90A-NEXT:    ; in Loop: Header=BB3_6 Depth=2
+; GFX90A-NEXT:    s_and_b64 s[24:25], s[24:25], exec
+; GFX90A-NEXT:    s_cselect_b32 s24, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s24, 1
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB3_11
+; GFX90A-NEXT:  .LBB3_6: ; %bb16
 ; GFX90A-NEXT:    ; Parent Loop BB3_2 Depth=1
 ; GFX90A-NEXT:    ; => This Inner Loop Header: Depth=2
-; GFX90A-NEXT:    s_add_u32 s22, s20, s9
-; GFX90A-NEXT:    s_addc_u32 s23, s21, s13
+; GFX90A-NEXT:    s_add_u32 s22, s18, s9
+; GFX90A-NEXT:    s_addc_u32 s23, s19, s11
 ; GFX90A-NEXT:    global_load_dword v21, v19, s[22:23] offset:16 glc
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    global_load_dword v20, v19, s[22:23] offset:20 glc
@@ -780,12 +797,14 @@ define amdgpu_kernel void @introduced_copy_to_sgpr(i64 %arg, i32 %arg1, i32 %arg
 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
 ; GFX90A-NEXT:    ds_read_b64 v[14:15], v19
 ; GFX90A-NEXT:    ds_read_b64 v[16:17], v0
-; GFX90A-NEXT:    s_and_b64 vcc, exec, s[2:3]
 ; GFX90A-NEXT:    ; kill: killed $sgpr22 killed $sgpr23
+; GFX90A-NEXT:    s_and_b64 s[22:23], s[20:21], exec
+; GFX90A-NEXT:    s_cselect_b32 s22, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s22, 1
 ; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX90A-NEXT:    s_cbranch_vccnz .LBB3_7
-; GFX90A-NEXT:  ; %bb.6: ; %bb51
-; GFX90A-NEXT:    ; in Loop: Header=BB3_5 Depth=2
+; GFX90A-NEXT:    s_cbranch_scc1 .LBB3_8
+; GFX90A-NEXT:  ; %bb.7: ; %bb51
+; GFX90A-NEXT:    ; in Loop: Header=BB3_6 Depth=2
 ; GFX90A-NEXT:    v_cvt_f32_f16_sdwa v23, v21 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1
 ; GFX90A-NEXT:    v_cvt_f32_f16_e32 v22, v21
 ; GFX90A-NEXT:    v_cvt_f32_f16_sdwa v21, v20 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1
@@ -798,32 +817,39 @@ define amdgpu_kernel void @introduced_copy_to_sgpr(i64 %arg, i32 %arg1, i32 %arg
 ; GFX90A-NEXT:    v_pk_add_f32 v[8:9], v[8:9], v[26:27]
 ; GFX90A-NEXT:    v_pk_add_f32 v[10:11], v[10:11], v[16:17]
 ; GFX90A-NEXT:    v_pk_add_f32 v[12:13], v[12:13], v[14:15]
-; GFX90A-NEXT:    s_branch .LBB3_4
-; GFX90A-NEXT:  .LBB3_7: ; in Loop: Header=BB3_5 Depth=2
-; GFX90A-NEXT:    s_mov_b64 s[22:23], s[18:19]
-; GFX90A-NEXT:    s_andn2_b64 vcc, exec, s[22:23]
-; GFX90A-NEXT:    s_cbranch_vccz .LBB3_4
-; GFX90A-NEXT:  ; %bb.8: ; in Loop: Header=BB3_2 Depth=1
+; GFX90A-NEXT:    s_mov_b64 s[22:23], -1
+; GFX90A-NEXT:    s_branch .LBB3_9
+; GFX90A-NEXT:  .LBB3_8: ; in Loop: Header=BB3_6 Depth=2
+; GFX90A-NEXT:    s_mov_b64 s[22:23], s[16:17]
+; GFX90A-NEXT:  .LBB3_9: ; %Flow
+; GFX90A-NEXT:    ; in Loop: Header=BB3_6 Depth=2
+; GFX90A-NEXT:    s_and_b64 s[22:23], s[22:23], exec
+; GFX90A-NEXT:    s_cselect_b32 s22, 1, 0
+; GFX90A-NEXT:    s_cmp_lg_u32 s22, 1
+; GFX90A-NEXT:    s_cbranch_scc0 .LBB3_4
+; GFX90A-NEXT:  ; %bb.10: ; in Loop: Header=BB3_6 Depth=2
 ; GFX90A-NEXT:    s_mov_b64 s[22:23], -1
 ; GFX90A-NEXT:    ; implicit-def: $vgpr4_vgpr5
-; GFX90A-NEXT:    ; implicit-def: $sgpr20_sgpr21
-; GFX90A-NEXT:  .LBB3_9: ; %loop.exit.guard
+; GFX90A-NEXT:    ; implicit-def: $sgpr18_sgpr19
+; GFX90A-NEXT:    s_mov_b64 s[24:25], -1
+; GFX90A-NEXT:    s_branch .LBB3_5
+; GFX90A-NEXT:  .LBB3_11: ; %loop.exit.guard
 ; GFX90A-NEXT:    ; in Loop: Header=BB3_2 Depth=1
 ; GFX90A-NEXT:    s_xor_b64 s[18:19], s[22:23], -1
-; GFX90A-NEXT:  .LBB3_10: ; %Flow19
+; GFX90A-NEXT:  .LBB3_12: ; %Flow19
 ; GFX90A-NEXT:    ; in Loop: Header=BB3_2 Depth=1
-; GFX90A-NEXT:    s_mov_b64 s[2:3], -1
+; GFX90A-NEXT:    s_mov_b64 s[16:17], -1
 ; GFX90A-NEXT:    s_and_b64 vcc, exec, s[18:19]
 ; GFX90A-NEXT:    s_cbranch_vccz .LBB3_1
-; GFX90A-NEXT:  ; %bb.11: ; %bb12
+; GFX90A-NEXT:  ; %bb.13: ; %bb12
 ; GFX90A-NEXT:    ; in Loop: Header=BB3_2 Depth=1
-; GFX90A-NEXT:    s_add_u32 s10, s10, s8
-; GFX90A-NEXT:    s_addc_u32 s11, s11, 0
-; GFX90A-NEXT:    s_add_u32 s14, s14, s16
-; GFX90A-NEXT:    s_addc_u32 s15, s15, s17
-; GFX90A-NEXT:    s_mov_b64 s[2:3], 0
+; GFX90A-NEXT:    s_add_u32 s2, s2, s8
+; GFX90A-NEXT:    s_addc_u32 s3, s3, 0
+; GFX90A-NEXT:    s_add_u32 s12, s12, s14
+; GFX90A-NEXT:    s_addc_u32 s13, s13, s15
+; GFX90A-NEXT:    s_mov_b64 s[16:17], 0
 ; GFX90A-NEXT:    s_branch .LBB3_1
-; GFX90A-NEXT:  .LBB3_12: ; %DummyReturnBlock
+; GFX90A-NEXT:  .LBB3_14: ; %DummyReturnBlock
 ; GFX90A-NEXT:    s_endpgm
 bb:
   %i = load volatile i16, ptr addrspace(4) poison, align 2

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
index 2d5fc5cf22425..0960d74b18522 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
@@ -251,10 +251,18 @@ define inreg <32 x float> @bitcast_v32i32_to_v32f32_scalar(<32 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s46, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s47, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -287,7 +295,7 @@ define inreg <32 x float> @bitcast_v32i32_to_v32f32_scalar(<32 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -321,8 +329,6 @@ define inreg <32 x float> @bitcast_v32i32_to_v32f32_scalar(<32 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v30, s7
 ; SI-NEXT:    v_mov_b32_e32 v31, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v32i32_to_v32f32_scalar:
 ; VI:       ; %bb.0:
@@ -347,10 +353,18 @@ define inreg <32 x float> @bitcast_v32i32_to_v32f32_scalar(<32 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -383,7 +397,7 @@ define inreg <32 x float> @bitcast_v32i32_to_v32f32_scalar(<32 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -417,8 +431,6 @@ define inreg <32 x float> @bitcast_v32i32_to_v32f32_scalar(<32 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v32i32_to_v32f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -443,10 +455,18 @@ define inreg <32 x float> @bitcast_v32i32_to_v32f32_scalar(<32 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -479,7 +499,7 @@ define inreg <32 x float> @bitcast_v32i32_to_v32f32_scalar(<32 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -513,8 +533,6 @@ define inreg <32 x float> @bitcast_v32i32_to_v32f32_scalar(<32 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v32i32_to_v32f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -536,11 +554,16 @@ define inreg <32 x float> @bitcast_v32i32_to_v32f32_scalar(<32 x i32> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -573,7 +596,7 @@ define inreg <32 x float> @bitcast_v32i32_to_v32f32_scalar(<32 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -592,8 +615,6 @@ define inreg <32 x float> @bitcast_v32i32_to_v32f32_scalar(<32 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s7 :: v_dual_mov_b32 v29, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v30, s5 :: v_dual_mov_b32 v31, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -872,10 +893,18 @@ define inreg <32 x i32> @bitcast_v32f32_to_v32i32_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v31, s67, 1.0
 ; SI-NEXT:    v_add_f32_e64 v30, s66, 1.0
 ; SI-NEXT:    v_add_f32_e64 v29, s65, 1.0
@@ -908,10 +937,8 @@ define inreg <32 x i32> @bitcast_v32f32_to_v32i32_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB3_5
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:    s_branch .LBB3_6
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -944,7 +971,7 @@ define inreg <32 x i32> @bitcast_v32f32_to_v32i32_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB3_5: ; %end
+; SI-NEXT:  .LBB3_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s67, v32, 15
 ; SI-NEXT:    v_readlane_b32 s66, v32, 14
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -1023,10 +1050,18 @@ define inreg <32 x i32> @bitcast_v32f32_to_v32i32_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v31, s67, 1.0
 ; VI-NEXT:    v_add_f32_e64 v30, s66, 1.0
 ; VI-NEXT:    v_add_f32_e64 v29, s65, 1.0
@@ -1059,10 +1094,8 @@ define inreg <32 x i32> @bitcast_v32f32_to_v32i32_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB3_5
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:    s_branch .LBB3_6
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -1095,7 +1128,7 @@ define inreg <32 x i32> @bitcast_v32f32_to_v32i32_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB3_5: ; %end
+; VI-NEXT:  .LBB3_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v32, 15
 ; VI-NEXT:    v_readlane_b32 s66, v32, 14
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -1174,10 +1207,18 @@ define inreg <32 x i32> @bitcast_v32f32_to_v32i32_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v31, s67, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v30, s66, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v29, s65, 1.0
@@ -1210,10 +1251,8 @@ define inreg <32 x i32> @bitcast_v32f32_to_v32i32_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB3_5
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:    s_branch .LBB3_6
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -1246,7 +1285,7 @@ define inreg <32 x i32> @bitcast_v32f32_to_v32i32_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB3_5: ; %end
+; GFX9-NEXT:  .LBB3_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v32, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v32, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
@@ -1326,11 +1365,16 @@ define inreg <32 x i32> @bitcast_v32f32_to_v32i32_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v31, s67, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v30, s66, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v29, s65, 1.0
@@ -1364,8 +1408,6 @@ define inreg <32 x i32> @bitcast_v32f32_to_v32i32_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB3_5
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -1665,10 +1707,18 @@ define inreg <16 x i64> @bitcast_v32i32_to_v16i64_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s46, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s47, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -1701,7 +1751,7 @@ define inreg <16 x i64> @bitcast_v32i32_to_v16i64_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1735,8 +1785,6 @@ define inreg <16 x i64> @bitcast_v32i32_to_v16i64_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v30, s7
 ; SI-NEXT:    v_mov_b32_e32 v31, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v32i32_to_v16i64_scalar:
 ; VI:       ; %bb.0:
@@ -1761,10 +1809,18 @@ define inreg <16 x i64> @bitcast_v32i32_to_v16i64_scalar(<32 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -1797,7 +1853,7 @@ define inreg <16 x i64> @bitcast_v32i32_to_v16i64_scalar(<32 x i32> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1831,8 +1887,6 @@ define inreg <16 x i64> @bitcast_v32i32_to_v16i64_scalar(<32 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v32i32_to_v16i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -1857,10 +1911,18 @@ define inreg <16 x i64> @bitcast_v32i32_to_v16i64_scalar(<32 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -1893,7 +1955,7 @@ define inreg <16 x i64> @bitcast_v32i32_to_v16i64_scalar(<32 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1927,8 +1989,6 @@ define inreg <16 x i64> @bitcast_v32i32_to_v16i64_scalar(<32 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v32i32_to_v16i64_scalar:
 ; GFX11:       ; %bb.0:
@@ -1950,11 +2010,16 @@ define inreg <16 x i64> @bitcast_v32i32_to_v16i64_scalar(<32 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -1987,7 +2052,7 @@ define inreg <16 x i64> @bitcast_v32i32_to_v16i64_scalar(<32 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2006,8 +2071,6 @@ define inreg <16 x i64> @bitcast_v32i32_to_v16i64_scalar(<32 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s7 :: v_dual_mov_b32 v29, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v30, s5 :: v_dual_mov_b32 v31, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2276,10 +2339,18 @@ define inreg <32 x i32> @bitcast_v16i64_to_v32i32_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s46, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s47, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -2312,7 +2383,7 @@ define inreg <32 x i32> @bitcast_v16i64_to_v32i32_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2346,8 +2417,6 @@ define inreg <32 x i32> @bitcast_v16i64_to_v32i32_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v30, s7
 ; SI-NEXT:    v_mov_b32_e32 v31, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v16i64_to_v32i32_scalar:
 ; VI:       ; %bb.0:
@@ -2372,10 +2441,18 @@ define inreg <32 x i32> @bitcast_v16i64_to_v32i32_scalar(<16 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -2408,7 +2485,7 @@ define inreg <32 x i32> @bitcast_v16i64_to_v32i32_scalar(<16 x i64> inreg %a, i3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2442,8 +2519,6 @@ define inreg <32 x i32> @bitcast_v16i64_to_v32i32_scalar(<16 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v16i64_to_v32i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -2468,10 +2543,18 @@ define inreg <32 x i32> @bitcast_v16i64_to_v32i32_scalar(<16 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -2504,7 +2587,7 @@ define inreg <32 x i32> @bitcast_v16i64_to_v32i32_scalar(<16 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB7_3: ; %end
+; GFX9-NEXT:  .LBB7_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2538,8 +2621,6 @@ define inreg <32 x i32> @bitcast_v16i64_to_v32i32_scalar(<16 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_4:
-; GFX9-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-LABEL: bitcast_v16i64_to_v32i32_scalar:
 ; GFX11:       ; %bb.0:
@@ -2561,11 +2642,16 @@ define inreg <32 x i32> @bitcast_v16i64_to_v32i32_scalar(<16 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_3
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -2598,7 +2684,7 @@ define inreg <32 x i32> @bitcast_v16i64_to_v32i32_scalar(<16 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB7_3: ; %end
+; GFX11-NEXT:  .LBB7_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2617,8 +2703,6 @@ define inreg <32 x i32> @bitcast_v16i64_to_v32i32_scalar(<16 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s7 :: v_dual_mov_b32 v29, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v30, s5 :: v_dual_mov_b32 v31, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_4:
-; GFX11-NEXT:    s_branch .LBB7_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2879,10 +2963,18 @@ define inreg <16 x double> @bitcast_v32i32_to_v16f64_scalar(<32 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s46, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s47, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -2915,7 +3007,7 @@ define inreg <16 x double> @bitcast_v32i32_to_v16f64_scalar(<32 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2949,8 +3041,6 @@ define inreg <16 x double> @bitcast_v32i32_to_v16f64_scalar(<32 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v30, s7
 ; SI-NEXT:    v_mov_b32_e32 v31, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v32i32_to_v16f64_scalar:
 ; VI:       ; %bb.0:
@@ -2975,10 +3065,18 @@ define inreg <16 x double> @bitcast_v32i32_to_v16f64_scalar(<32 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -3011,7 +3109,7 @@ define inreg <16 x double> @bitcast_v32i32_to_v16f64_scalar(<32 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3045,8 +3143,6 @@ define inreg <16 x double> @bitcast_v32i32_to_v16f64_scalar(<32 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v32i32_to_v16f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -3071,10 +3167,18 @@ define inreg <16 x double> @bitcast_v32i32_to_v16f64_scalar(<32 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -3107,7 +3211,7 @@ define inreg <16 x double> @bitcast_v32i32_to_v16f64_scalar(<32 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3141,8 +3245,6 @@ define inreg <16 x double> @bitcast_v32i32_to_v16f64_scalar(<32 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v32i32_to_v16f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -3164,11 +3266,16 @@ define inreg <16 x double> @bitcast_v32i32_to_v16f64_scalar(<32 x i32> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -3201,7 +3308,7 @@ define inreg <16 x double> @bitcast_v32i32_to_v16f64_scalar(<32 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -3220,8 +3327,6 @@ define inreg <16 x double> @bitcast_v32i32_to_v16f64_scalar(<32 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s7 :: v_dual_mov_b32 v29, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v30, s5 :: v_dual_mov_b32 v31, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -3452,10 +3557,18 @@ define inreg <32 x i32> @bitcast_v16f64_to_v32i32_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[30:31], s[66:67], 1.0
 ; SI-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; SI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
@@ -3472,10 +3585,8 @@ define inreg <32 x i32> @bitcast_v16f64_to_v32i32_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB11_5
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:    s_branch .LBB11_6
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -3508,7 +3619,7 @@ define inreg <32 x i32> @bitcast_v16f64_to_v32i32_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB11_5: ; %end
+; SI-NEXT:  .LBB11_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s67, v32, 15
 ; SI-NEXT:    v_readlane_b32 s66, v32, 14
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -3587,10 +3698,18 @@ define inreg <32 x i32> @bitcast_v16f64_to_v32i32_scalar(<16 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[30:31], s[66:67], 1.0
 ; VI-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; VI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
@@ -3607,10 +3726,8 @@ define inreg <32 x i32> @bitcast_v16f64_to_v32i32_scalar(<16 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB11_5
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:    s_branch .LBB11_6
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -3643,7 +3760,7 @@ define inreg <32 x i32> @bitcast_v16f64_to_v32i32_scalar(<16 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB11_5: ; %end
+; VI-NEXT:  .LBB11_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v32, 15
 ; VI-NEXT:    v_readlane_b32 s66, v32, 14
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -3722,10 +3839,18 @@ define inreg <32 x i32> @bitcast_v16f64_to_v32i32_scalar(<16 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[30:31], s[66:67], 1.0
 ; GFX9-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; GFX9-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
@@ -3742,10 +3867,8 @@ define inreg <32 x i32> @bitcast_v16f64_to_v32i32_scalar(<16 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB11_5
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:    s_branch .LBB11_6
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -3778,7 +3901,7 @@ define inreg <32 x i32> @bitcast_v16f64_to_v32i32_scalar(<16 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB11_5: ; %end
+; GFX9-NEXT:  .LBB11_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v32, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v32, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
@@ -3858,11 +3981,16 @@ define inreg <32 x i32> @bitcast_v16f64_to_v32i32_scalar(<16 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[30:31], s[66:67], 1.0
 ; GFX11-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; GFX11-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
@@ -3880,8 +4008,6 @@ define inreg <32 x i32> @bitcast_v16f64_to_v32i32_scalar(<16 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB11_5
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -7962,607 +8088,597 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s45, v2
 ; SI-NEXT:    s_cmp_lg_u32 s44, 0
 ; SI-NEXT:    v_readfirstlane_b32 s44, v1
-; SI-NEXT:    ; implicit-def: $vgpr21 : SGPR spill to VGPR lane
 ; SI-NEXT:    ; implicit-def: $vgpr22 : SGPR spill to VGPR lane
+; SI-NEXT:    ; implicit-def: $vgpr21 : SGPR spill to VGPR lane
 ; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s46, s5, 24
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v22, s46, 6
+; SI-NEXT:    v_writelane_b32 v22, s46, 60
 ; SI-NEXT:    s_lshr_b32 s46, s5, 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 7
+; SI-NEXT:    v_writelane_b32 v22, s46, 61
+; SI-NEXT:    s_lshr_b32 s46, s13, 8
+; SI-NEXT:    v_writelane_b32 v22, s46, 62
 ; SI-NEXT:    s_lshr_b32 s46, s15, 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 8
-; SI-NEXT:    s_lshr_b64 s[46:47], s[4:5], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 2
-; SI-NEXT:    v_writelane_b32 v22, s47, 3
-; SI-NEXT:    s_lshr_b64 s[46:47], s[4:5], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 4
-; SI-NEXT:    v_writelane_b32 v22, s47, 5
-; SI-NEXT:    s_lshr_b64 s[46:47], s[4:5], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 0
-; SI-NEXT:    v_writelane_b32 v22, s47, 1
-; SI-NEXT:    s_lshr_b64 s[46:47], s[6:7], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 62
-; SI-NEXT:    v_writelane_b32 v21, s47, 63
-; SI-NEXT:    s_lshr_b64 s[46:47], s[6:7], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 60
-; SI-NEXT:    v_writelane_b32 v21, s47, 61
-; SI-NEXT:    s_lshr_b64 s[46:47], s[6:7], 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 58
-; SI-NEXT:    v_writelane_b32 v21, s47, 59
+; SI-NEXT:    v_writelane_b32 v22, s46, 63
+; SI-NEXT:    s_lshr_b32 s46, s15, 16
+; SI-NEXT:    v_writelane_b32 v21, s46, 0
+; SI-NEXT:    s_lshr_b32 s46, s15, 8
+; SI-NEXT:    v_writelane_b32 v21, s46, 1
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 56
-; SI-NEXT:    v_writelane_b32 v21, s47, 57
+; SI-NEXT:    v_writelane_b32 v22, s46, 58
+; SI-NEXT:    v_writelane_b32 v22, s47, 59
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 54
-; SI-NEXT:    v_writelane_b32 v21, s47, 55
+; SI-NEXT:    v_writelane_b32 v22, s46, 56
+; SI-NEXT:    v_writelane_b32 v22, s47, 57
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 52
-; SI-NEXT:    v_writelane_b32 v21, s47, 53
+; SI-NEXT:    v_writelane_b32 v22, s46, 54
+; SI-NEXT:    v_writelane_b32 v22, s47, 55
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[10:11], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 50
-; SI-NEXT:    v_writelane_b32 v21, s47, 51
+; SI-NEXT:    v_writelane_b32 v22, s46, 52
+; SI-NEXT:    v_writelane_b32 v22, s47, 53
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[10:11], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 48
-; SI-NEXT:    v_writelane_b32 v21, s47, 49
+; SI-NEXT:    v_writelane_b32 v22, s46, 50
+; SI-NEXT:    v_writelane_b32 v22, s47, 51
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[10:11], 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 46
-; SI-NEXT:    v_writelane_b32 v21, s47, 47
+; SI-NEXT:    v_writelane_b32 v22, s46, 48
+; SI-NEXT:    v_writelane_b32 v22, s47, 49
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[12:13], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 44
-; SI-NEXT:    v_writelane_b32 v21, s47, 45
+; SI-NEXT:    v_writelane_b32 v22, s46, 46
+; SI-NEXT:    v_writelane_b32 v22, s47, 47
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[12:13], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 42
-; SI-NEXT:    v_writelane_b32 v21, s47, 43
+; SI-NEXT:    v_writelane_b32 v22, s46, 44
+; SI-NEXT:    v_writelane_b32 v22, s47, 45
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[12:13], 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 40
-; SI-NEXT:    v_writelane_b32 v21, s47, 41
+; SI-NEXT:    v_writelane_b32 v22, s46, 42
+; SI-NEXT:    v_writelane_b32 v22, s47, 43
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[14:15], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 38
-; SI-NEXT:    v_writelane_b32 v21, s47, 39
+; SI-NEXT:    v_writelane_b32 v22, s46, 40
+; SI-NEXT:    v_writelane_b32 v22, s47, 41
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[14:15], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 36
-; SI-NEXT:    v_writelane_b32 v21, s47, 37
+; SI-NEXT:    v_writelane_b32 v22, s46, 38
+; SI-NEXT:    v_writelane_b32 v22, s47, 39
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[14:15], 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 34
-; SI-NEXT:    v_writelane_b32 v21, s47, 35
+; SI-NEXT:    v_writelane_b32 v22, s46, 36
+; SI-NEXT:    v_writelane_b32 v22, s47, 37
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[40:41], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 32
-; SI-NEXT:    v_writelane_b32 v21, s47, 33
+; SI-NEXT:    v_writelane_b32 v22, s46, 34
+; SI-NEXT:    v_writelane_b32 v22, s47, 35
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[40:41], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 30
-; SI-NEXT:    v_writelane_b32 v21, s47, 31
+; SI-NEXT:    v_writelane_b32 v22, s46, 32
+; SI-NEXT:    v_writelane_b32 v22, s47, 33
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[40:41], 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 28
-; SI-NEXT:    v_writelane_b32 v21, s47, 29
-; SI-NEXT:    s_lshr_b64 s[46:47], s[42:43], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 26
-; SI-NEXT:    v_writelane_b32 v21, s47, 27
-; SI-NEXT:    s_lshr_b64 s[46:47], s[42:43], 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 24
-; SI-NEXT:    v_writelane_b32 v21, s47, 25
+; SI-NEXT:    v_writelane_b32 v22, s46, 30
+; SI-NEXT:    v_writelane_b32 v22, s47, 31
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[44:45], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 22
-; SI-NEXT:    v_writelane_b32 v21, s47, 23
+; SI-NEXT:    v_writelane_b32 v22, s46, 28
+; SI-NEXT:    v_writelane_b32 v22, s47, 29
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[44:45], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 20
-; SI-NEXT:    v_writelane_b32 v21, s47, 21
+; SI-NEXT:    v_writelane_b32 v22, s46, 26
+; SI-NEXT:    v_writelane_b32 v22, s47, 27
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[44:45], 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 18
-; SI-NEXT:    v_writelane_b32 v21, s47, 19
+; SI-NEXT:    v_writelane_b32 v22, s46, 24
+; SI-NEXT:    v_writelane_b32 v22, s47, 25
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[28:29], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 16
-; SI-NEXT:    v_writelane_b32 v21, s47, 17
+; SI-NEXT:    v_writelane_b32 v22, s46, 22
+; SI-NEXT:    v_writelane_b32 v22, s47, 23
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[28:29], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 14
-; SI-NEXT:    v_writelane_b32 v21, s47, 15
+; SI-NEXT:    v_writelane_b32 v22, s46, 20
+; SI-NEXT:    v_writelane_b32 v22, s47, 21
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[28:29], 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 12
-; SI-NEXT:    v_writelane_b32 v21, s47, 13
+; SI-NEXT:    v_writelane_b32 v22, s46, 18
+; SI-NEXT:    v_writelane_b32 v22, s47, 19
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[26:27], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 10
-; SI-NEXT:    v_writelane_b32 v21, s47, 11
-; SI-NEXT:    s_lshr_b64 s[46:47], s[26:27], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 8
+; SI-NEXT:    v_writelane_b32 v22, s46, 16
+; SI-NEXT:    v_writelane_b32 v22, s47, 17
+; SI-NEXT:    s_lshr_b64 s[58:59], s[26:27], 8
+; SI-NEXT:    v_writelane_b32 v22, s58, 14
+; SI-NEXT:    v_writelane_b32 v22, s59, 15
+; SI-NEXT:    s_lshr_b64 s[58:59], s[24:25], 24
+; SI-NEXT:    v_writelane_b32 v22, s58, 12
+; SI-NEXT:    v_writelane_b32 v22, s59, 13
+; SI-NEXT:    s_lshr_b64 s[58:59], s[24:25], 16
+; SI-NEXT:    v_writelane_b32 v22, s58, 10
+; SI-NEXT:    v_writelane_b32 v22, s59, 11
+; SI-NEXT:    s_lshr_b64 s[58:59], s[24:25], 8
+; SI-NEXT:    v_writelane_b32 v22, s58, 8
+; SI-NEXT:    v_writelane_b32 v22, s59, 9
+; SI-NEXT:    s_lshr_b64 s[58:59], s[22:23], 24
+; SI-NEXT:    v_writelane_b32 v22, s58, 6
+; SI-NEXT:    v_writelane_b32 v22, s59, 7
+; SI-NEXT:    s_lshr_b64 s[58:59], s[22:23], 16
+; SI-NEXT:    v_writelane_b32 v22, s58, 4
+; SI-NEXT:    v_writelane_b32 v22, s59, 5
+; SI-NEXT:    s_lshr_b64 s[58:59], s[22:23], 8
+; SI-NEXT:    s_lshr_b32 s72, s5, 8
 ; SI-NEXT:    s_lshr_b32 s74, s7, 24
-; SI-NEXT:    v_writelane_b32 v21, s47, 9
-; SI-NEXT:    s_lshr_b64 s[46:47], s[26:27], 8
-; SI-NEXT:    s_lshr_b64 s[72:73], s[22:23], 24
-; SI-NEXT:    s_lshr_b32 s76, s7, 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 6
-; SI-NEXT:    s_mov_b32 s73, s74
-; SI-NEXT:    s_lshr_b64 s[74:75], s[22:23], 16
-; SI-NEXT:    s_lshr_b32 s78, s7, 8
-; SI-NEXT:    v_writelane_b32 v21, s47, 7
-; SI-NEXT:    s_lshr_b64 s[46:47], s[24:25], 24
-; SI-NEXT:    s_mov_b32 s75, s76
-; SI-NEXT:    s_lshr_b64 s[76:77], s[22:23], 8
-; SI-NEXT:    s_lshr_b32 s88, s9, 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 4
-; SI-NEXT:    s_mov_b32 s77, s78
-; SI-NEXT:    s_lshr_b64 s[78:79], s[20:21], 24
+; SI-NEXT:    s_lshr_b32 s75, s45, 24
+; SI-NEXT:    s_lshr_b64 s[84:85], s[4:5], 16
+; SI-NEXT:    s_lshr_b64 s[66:67], s[42:43], 16
+; SI-NEXT:    v_writelane_b32 v22, s58, 2
+; SI-NEXT:    s_lshr_b32 s63, s43, 8
+; SI-NEXT:    s_lshr_b32 s62, s21, 8
+; SI-NEXT:    s_lshr_b64 s[64:65], s[42:43], 24
+; SI-NEXT:    s_mov_b32 s85, s72
+; SI-NEXT:    s_mov_b32 s67, s75
+; SI-NEXT:    s_mov_b32 s72, s74
+; SI-NEXT:    v_writelane_b32 v22, s59, 3
+; SI-NEXT:    s_lshr_b64 s[74:75], s[20:21], 24
+; SI-NEXT:    s_lshr_b64 s[58:59], s[20:21], 16
 ; SI-NEXT:    s_lshr_b32 s90, s9, 16
-; SI-NEXT:    v_writelane_b32 v21, s47, 5
-; SI-NEXT:    s_lshr_b64 s[46:47], s[24:25], 16
-; SI-NEXT:    s_mov_b32 s79, s88
-; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
 ; SI-NEXT:    s_lshr_b32 s92, s9, 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 2
-; SI-NEXT:    s_mov_b32 s89, s90
-; SI-NEXT:    s_lshr_b64 s[90:91], s[20:21], 8
+; SI-NEXT:    s_lshr_b32 s93, s25, 16
+; SI-NEXT:    s_lshr_b64 s[96:97], s[6:7], 24
+; SI-NEXT:    s_mov_b32 s65, s63
+; SI-NEXT:    s_mov_b32 s75, s62
+; SI-NEXT:    v_writelane_b32 v22, s58, 0
+; SI-NEXT:    s_lshr_b64 s[62:63], s[20:21], 8
+; SI-NEXT:    s_lshr_b32 s76, s7, 16
 ; SI-NEXT:    s_lshr_b32 s94, s11, 24
-; SI-NEXT:    s_lshr_b32 s36, s13, 24
-; SI-NEXT:    v_writelane_b32 v21, s47, 3
-; SI-NEXT:    s_lshr_b64 s[46:47], s[24:25], 8
-; SI-NEXT:    s_mov_b32 s91, s92
-; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 24
-; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 24
 ; SI-NEXT:    s_lshr_b32 vcc_lo, s11, 16
 ; SI-NEXT:    s_lshr_b32 vcc_hi, s11, 8
-; SI-NEXT:    s_lshr_b32 s38, s13, 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 0
+; SI-NEXT:    s_lshr_b32 s77, s45, 16
+; SI-NEXT:    s_lshr_b32 s30, s21, 24
+; SI-NEXT:    s_lshr_b64 s[54:55], s[6:7], 16
+; SI-NEXT:    s_lshr_b64 s[68:69], s[42:43], 8
+; SI-NEXT:    v_writelane_b32 v22, s59, 1
+; SI-NEXT:    s_mov_b32 s97, s90
+; SI-NEXT:    s_mov_b32 s63, s93
+; SI-NEXT:    s_mov_b32 s90, s92
+; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 24
+; SI-NEXT:    s_lshr_b64 s[58:59], s[18:19], 16
+; SI-NEXT:    s_lshr_b32 s78, s7, 8
+; SI-NEXT:    s_lshr_b32 s88, s9, 24
+; SI-NEXT:    s_lshr_b32 s61, s41, 24
+; SI-NEXT:    s_lshr_b32 s89, s27, 24
+; SI-NEXT:    s_lshr_b32 s34, s19, 8
+; SI-NEXT:    s_lshr_b32 s35, s17, 24
+; SI-NEXT:    s_lshr_b64 s[86:87], s[4:5], 8
+; SI-NEXT:    s_lshr_b64 s[98:99], s[6:7], 8
+; SI-NEXT:    s_mov_b32 s69, s77
+; SI-NEXT:    s_mov_b32 s55, s76
 ; SI-NEXT:    s_mov_b32 s93, s94
-; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[18:19], 8
+; SI-NEXT:    s_mov_b32 s59, s30
+; SI-NEXT:    s_mov_b32 s94, vcc_lo
+; SI-NEXT:    s_lshr_b64 s[76:77], s[18:19], 8
+; SI-NEXT:    s_mov_b32 s30, vcc_hi
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 24
+; SI-NEXT:    s_lshr_b32 s36, s13, 24
+; SI-NEXT:    s_lshr_b32 s38, s13, 16
+; SI-NEXT:    s_lshr_b32 s39, s17, 8
+; SI-NEXT:    s_mov_b32 s99, s61
+; SI-NEXT:    s_mov_b32 s87, s78
+; SI-NEXT:    s_mov_b32 s61, s89
+; SI-NEXT:    s_mov_b32 s78, s88
+; SI-NEXT:    s_mov_b32 s77, s34
+; SI-NEXT:    s_mov_b32 vcc_hi, s35
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[88:89], s[16:17], 8
+; SI-NEXT:    s_lshr_b32 s53, s41, 16
+; SI-NEXT:    s_lshr_b32 s49, s41, 8
+; SI-NEXT:    s_lshr_b32 s73, s43, 24
+; SI-NEXT:    s_lshr_b32 s48, s43, 16
+; SI-NEXT:    s_lshr_b32 s50, s45, 8
+; SI-NEXT:    s_lshr_b32 s51, s29, 24
+; SI-NEXT:    s_lshr_b32 s70, s29, 16
+; SI-NEXT:    s_lshr_b32 s79, s29, 8
+; SI-NEXT:    s_lshr_b32 s71, s27, 16
+; SI-NEXT:    s_lshr_b32 s80, s27, 8
+; SI-NEXT:    s_lshr_b32 s91, s25, 24
+; SI-NEXT:    s_lshr_b32 s81, s25, 8
+; SI-NEXT:    s_lshr_b32 s82, s23, 24
+; SI-NEXT:    s_lshr_b32 s83, s23, 16
+; SI-NEXT:    s_lshr_b32 s95, s23, 8
+; SI-NEXT:    s_lshr_b32 s60, s21, 16
+; SI-NEXT:    s_lshr_b32 s52, s19, 24
+; SI-NEXT:    s_lshr_b32 s31, s19, 16
+; SI-NEXT:    s_lshr_b32 s37, s17, 16
+; SI-NEXT:    s_lshr_b64 s[56:57], s[4:5], 24
+; SI-NEXT:    s_lshr_b64 s[46:47], s[26:27], 16
 ; SI-NEXT:    s_mov_b32 s35, s36
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 16
-; SI-NEXT:    s_lshr_b32 s63, s5, 8
-; SI-NEXT:    s_lshr_b32 s39, s13, 8
-; SI-NEXT:    s_lshr_b32 s87, s15, 16
-; SI-NEXT:    s_lshr_b32 s55, s15, 8
-; SI-NEXT:    s_lshr_b32 s97, s41, 24
-; SI-NEXT:    s_lshr_b32 s54, s41, 16
-; SI-NEXT:    s_lshr_b32 s99, s41, 8
-; SI-NEXT:    s_lshr_b32 s85, s43, 24
-; SI-NEXT:    s_lshr_b32 s98, s43, 16
-; SI-NEXT:    s_lshr_b32 s53, s43, 8
-; SI-NEXT:    s_lshr_b32 s96, s45, 24
-; SI-NEXT:    s_lshr_b32 s86, s45, 16
-; SI-NEXT:    s_lshr_b32 s49, s45, 8
-; SI-NEXT:    s_lshr_b32 s64, s29, 24
-; SI-NEXT:    s_lshr_b32 s65, s29, 16
-; SI-NEXT:    s_lshr_b32 s66, s29, 8
-; SI-NEXT:    s_lshr_b32 s67, s27, 24
-; SI-NEXT:    s_lshr_b32 s58, s27, 16
-; SI-NEXT:    s_lshr_b32 s59, s27, 8
-; SI-NEXT:    s_lshr_b32 s60, s25, 24
-; SI-NEXT:    s_lshr_b32 s61, s25, 16
-; SI-NEXT:    s_lshr_b32 s62, s25, 8
-; SI-NEXT:    s_lshr_b32 s68, s23, 24
-; SI-NEXT:    s_lshr_b32 s69, s23, 16
-; SI-NEXT:    s_lshr_b32 s48, s23, 8
-; SI-NEXT:    s_lshr_b32 s50, s21, 24
-; SI-NEXT:    s_lshr_b32 s51, s21, 16
-; SI-NEXT:    s_lshr_b32 s70, s21, 8
-; SI-NEXT:    s_lshr_b32 s71, s19, 24
-; SI-NEXT:    s_lshr_b32 s80, s19, 16
-; SI-NEXT:    s_lshr_b32 s81, s19, 8
-; SI-NEXT:    s_lshr_b32 s82, s17, 24
-; SI-NEXT:    s_lshr_b32 s83, s17, 16
-; SI-NEXT:    s_lshr_b32 s52, s17, 8
-; SI-NEXT:    s_lshr_b64 s[56:57], s[42:43], 24
-; SI-NEXT:    v_writelane_b32 v21, s47, 1
-; SI-NEXT:    s_mov_b32 s95, vcc_lo
-; SI-NEXT:    s_mov_b32 s31, vcc_hi
-; SI-NEXT:    s_mov_b32 s37, s38
-; SI-NEXT:    s_lshr_b64 s[46:47], s[16:17], 8
-; SI-NEXT:    s_mov_b64 vcc, 0
+; SI-NEXT:    s_mov_b32 s89, s39
+; SI-NEXT:    s_mov_b32 s36, s38
+; SI-NEXT:    s_mov_b64 s[38:39], 0
 ; SI-NEXT:    s_branch .LBB13_3
 ; SI-NEXT:  .LBB13_2:
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr85
-; SI-NEXT:    ; implicit-def: $sgpr84
 ; SI-NEXT:    ; implicit-def: $sgpr46
 ; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    s_mov_b64 vcc, -1
-; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_writelane_b32 v21, s56, 0
-; SI-NEXT:    v_writelane_b32 v21, s57, 1
 ; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    s_mov_b64 s[38:39], -1
 ; SI-NEXT:    ; implicit-def: $sgpr46
 ; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v21, s56, 2
-; SI-NEXT:    v_writelane_b32 v21, s57, 3
-; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr31
 ; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr95
 ; SI-NEXT:    ; implicit-def: $sgpr83
 ; SI-NEXT:    ; implicit-def: $sgpr82
 ; SI-NEXT:    ; implicit-def: $sgpr81
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr91
 ; SI-NEXT:    ; implicit-def: $sgpr80
 ; SI-NEXT:    ; implicit-def: $sgpr71
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr79
 ; SI-NEXT:    ; implicit-def: $sgpr70
 ; SI-NEXT:    ; implicit-def: $sgpr51
 ; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr48
 ; SI-NEXT:    ; implicit-def: $sgpr69
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr58
 ; SI-NEXT:    ; implicit-def: $sgpr67
-; SI-NEXT:    ; implicit-def: $sgpr66
 ; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr73
 ; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr86
-; SI-NEXT:    ; implicit-def: $sgpr96
 ; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr98
 ; SI-NEXT:    ; implicit-def: $sgpr99
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr97
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr87
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
 ; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr35
 ; SI-NEXT:    ; implicit-def: $sgpr30
 ; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr93
 ; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr97
 ; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr87
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr85
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $vcc_lo
 ; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr62
 ; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    v_writelane_b32 v21, s56, 4
-; SI-NEXT:    v_writelane_b32 v21, s57, 5
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr96
+; SI-NEXT:    ; implicit-def: $sgpr86
+; SI-NEXT:    ; implicit-def: $sgpr84
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v22, s46, 0
+; SI-NEXT:    v_writelane_b32 v22, s47, 1
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v22, s46, 2
+; SI-NEXT:    v_writelane_b32 v22, s47, 3
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v22, s46, 4
+; SI-NEXT:    v_writelane_b32 v22, s47, 5
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v22, s46, 6
+; SI-NEXT:    v_writelane_b32 v22, s47, 7
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v22, s46, 8
+; SI-NEXT:    v_writelane_b32 v22, s47, 9
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v22, s46, 10
+; SI-NEXT:    v_writelane_b32 v22, s47, 11
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v22, s46, 12
+; SI-NEXT:    v_writelane_b32 v22, s47, 13
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v22, s46, 14
+; SI-NEXT:    v_writelane_b32 v22, s47, 15
+; SI-NEXT:    v_writelane_b32 v22, s56, 16
+; SI-NEXT:    v_writelane_b32 v22, s57, 17
 ; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    v_writelane_b32 v21, s56, 6
-; SI-NEXT:    v_writelane_b32 v21, s57, 7
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v22, s56, 18
+; SI-NEXT:    v_writelane_b32 v22, s57, 19
 ; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    v_writelane_b32 v21, s56, 8
-; SI-NEXT:    v_writelane_b32 v21, s57, 9
+; SI-NEXT:    v_writelane_b32 v22, s56, 20
+; SI-NEXT:    v_writelane_b32 v22, s57, 21
 ; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    v_writelane_b32 v21, s56, 10
-; SI-NEXT:    v_writelane_b32 v21, s57, 11
+; SI-NEXT:    v_writelane_b32 v22, s56, 22
+; SI-NEXT:    v_writelane_b32 v22, s57, 23
 ; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    v_writelane_b32 v21, s56, 12
-; SI-NEXT:    v_writelane_b32 v21, s57, 13
+; SI-NEXT:    v_writelane_b32 v22, s56, 24
+; SI-NEXT:    v_writelane_b32 v22, s57, 25
 ; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    v_writelane_b32 v21, s56, 14
-; SI-NEXT:    v_writelane_b32 v21, s57, 15
+; SI-NEXT:    v_writelane_b32 v22, s56, 26
+; SI-NEXT:    v_writelane_b32 v22, s57, 27
 ; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    v_writelane_b32 v21, s56, 16
-; SI-NEXT:    v_writelane_b32 v21, s57, 17
+; SI-NEXT:    v_writelane_b32 v22, s56, 28
+; SI-NEXT:    v_writelane_b32 v22, s57, 29
 ; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    v_writelane_b32 v21, s56, 18
-; SI-NEXT:    v_writelane_b32 v21, s57, 19
+; SI-NEXT:    v_writelane_b32 v22, s56, 30
+; SI-NEXT:    v_writelane_b32 v22, s57, 31
 ; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    v_writelane_b32 v21, s56, 20
-; SI-NEXT:    v_writelane_b32 v21, s57, 21
+; SI-NEXT:    v_writelane_b32 v22, s56, 32
+; SI-NEXT:    v_writelane_b32 v22, s57, 33
 ; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    v_writelane_b32 v21, s56, 22
-; SI-NEXT:    v_writelane_b32 v21, s57, 23
+; SI-NEXT:    v_writelane_b32 v22, s56, 34
+; SI-NEXT:    v_writelane_b32 v22, s57, 35
 ; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    v_writelane_b32 v21, s56, 24
-; SI-NEXT:    v_writelane_b32 v21, s57, 25
+; SI-NEXT:    v_writelane_b32 v22, s56, 36
+; SI-NEXT:    v_writelane_b32 v22, s57, 37
 ; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    v_writelane_b32 v21, s56, 26
-; SI-NEXT:    v_writelane_b32 v21, s57, 27
-; SI-NEXT:    v_writelane_b32 v21, s38, 28
-; SI-NEXT:    v_writelane_b32 v21, s39, 29
-; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    v_writelane_b32 v22, s56, 38
+; SI-NEXT:    v_writelane_b32 v22, s57, 39
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    v_writelane_b32 v22, s56, 40
+; SI-NEXT:    v_writelane_b32 v22, s57, 41
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    v_writelane_b32 v22, s56, 42
+; SI-NEXT:    v_writelane_b32 v22, s57, 43
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    v_writelane_b32 v22, s56, 44
+; SI-NEXT:    v_writelane_b32 v22, s57, 45
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    v_writelane_b32 v22, s56, 46
+; SI-NEXT:    v_writelane_b32 v22, s57, 47
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    v_writelane_b32 v22, s56, 48
+; SI-NEXT:    v_writelane_b32 v22, s57, 49
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    v_writelane_b32 v22, s56, 50
+; SI-NEXT:    v_writelane_b32 v22, s57, 51
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    v_writelane_b32 v22, s56, 52
+; SI-NEXT:    v_writelane_b32 v22, s57, 53
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    v_writelane_b32 v22, s56, 54
+; SI-NEXT:    v_writelane_b32 v22, s57, 55
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    v_writelane_b32 v22, s56, 56
+; SI-NEXT:    v_writelane_b32 v22, s57, 57
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    v_writelane_b32 v22, s56, 58
+; SI-NEXT:    v_writelane_b32 v22, s57, 59
 ; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    v_writelane_b32 v21, s38, 30
-; SI-NEXT:    v_writelane_b32 v21, s39, 31
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    v_writelane_b32 v21, s38, 32
-; SI-NEXT:    v_writelane_b32 v21, s39, 33
-; SI-NEXT:    v_writelane_b32 v21, s84, 34
-; SI-NEXT:    v_writelane_b32 v21, s85, 35
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    v_writelane_b32 v21, s84, 36
-; SI-NEXT:    v_writelane_b32 v21, s85, 37
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    v_writelane_b32 v21, s84, 38
-; SI-NEXT:    v_writelane_b32 v21, s85, 39
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    v_writelane_b32 v21, s84, 40
-; SI-NEXT:    v_writelane_b32 v21, s85, 41
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    v_writelane_b32 v21, s84, 42
-; SI-NEXT:    v_writelane_b32 v21, s85, 43
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    v_writelane_b32 v21, s84, 44
-; SI-NEXT:    v_writelane_b32 v21, s85, 45
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    v_writelane_b32 v21, s84, 46
-; SI-NEXT:    v_writelane_b32 v21, s85, 47
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    v_writelane_b32 v21, s84, 48
-; SI-NEXT:    v_writelane_b32 v21, s85, 49
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    v_writelane_b32 v21, s84, 50
-; SI-NEXT:    v_writelane_b32 v21, s85, 51
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    v_writelane_b32 v21, s84, 52
-; SI-NEXT:    v_writelane_b32 v21, s85, 53
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    v_writelane_b32 v21, s84, 54
-; SI-NEXT:    v_writelane_b32 v21, s85, 55
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    v_writelane_b32 v21, s84, 56
-; SI-NEXT:    v_writelane_b32 v21, s85, 57
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    v_writelane_b32 v21, s84, 58
-; SI-NEXT:    v_writelane_b32 v21, s85, 59
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    v_writelane_b32 v21, s84, 60
-; SI-NEXT:    v_writelane_b32 v21, s85, 61
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    v_writelane_b32 v21, s84, 62
-; SI-NEXT:    v_writelane_b32 v21, s85, 63
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v22, s84, 0
-; SI-NEXT:    v_writelane_b32 v22, s85, 1
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    v_writelane_b32 v22, s84, 2
-; SI-NEXT:    v_writelane_b32 v22, s85, 3
-; SI-NEXT:    v_writelane_b32 v22, s38, 4
-; SI-NEXT:    v_writelane_b32 v22, s39, 5
 ; SI-NEXT:  .LBB13_3: ; %Flow
-; SI-NEXT:    s_andn2_b64 vcc, exec, vcc
-; SI-NEXT:    s_mov_b32 s38, s98
-; SI-NEXT:    s_mov_b32 s98, s85
-; SI-NEXT:    s_mov_b32 s84, s56
+; SI-NEXT:    s_and_b64 s[38:39], s[38:39], exec
+; SI-NEXT:    s_cselect_b32 s47, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s47, 1
+; SI-NEXT:    s_mov_b32 s38, s56
 ; SI-NEXT:    s_mov_b32 s56, s53
-; SI-NEXT:    s_mov_b32 s85, s86
-; SI-NEXT:    s_mov_b32 s86, s49
-; SI-NEXT:    s_mov_b32 s49, s64
-; SI-NEXT:    s_mov_b32 s64, s65
-; SI-NEXT:    s_mov_b32 s65, s66
-; SI-NEXT:    s_mov_b32 s66, s67
-; SI-NEXT:    s_mov_b32 s67, s58
-; SI-NEXT:    s_cbranch_vccnz .LBB13_5
+; SI-NEXT:    s_mov_b32 s39, s49
+; SI-NEXT:    s_mov_b32 s49, s73
+; SI-NEXT:    s_mov_b32 s53, s48
+; SI-NEXT:    s_mov_b32 s73, s50
+; SI-NEXT:    s_mov_b32 s48, s51
+; SI-NEXT:    s_mov_b32 s50, s70
+; SI-NEXT:    s_mov_b32 s51, s79
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
 ; SI-NEXT:  ; %bb.4: ; %cmp.true
-; SI-NEXT:    s_add_i32 s5, s5, 3
-; SI-NEXT:    s_add_i32 s4, s4, 3
-; SI-NEXT:    s_lshr_b64 s[46:47], s[4:5], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 2
-; SI-NEXT:    v_writelane_b32 v22, s47, 3
-; SI-NEXT:    s_lshr_b64 s[46:47], s[4:5], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 4
-; SI-NEXT:    v_writelane_b32 v22, s47, 5
-; SI-NEXT:    s_lshr_b64 s[46:47], s[4:5], 8
-; SI-NEXT:    s_add_i32 s7, s7, 3
-; SI-NEXT:    s_add_i32 s6, s6, 3
-; SI-NEXT:    v_writelane_b32 v22, s46, 0
-; SI-NEXT:    v_writelane_b32 v22, s47, 1
-; SI-NEXT:    s_lshr_b64 s[46:47], s[6:7], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 62
-; SI-NEXT:    v_writelane_b32 v21, s47, 63
-; SI-NEXT:    s_lshr_b64 s[46:47], s[6:7], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 60
-; SI-NEXT:    v_writelane_b32 v21, s47, 61
-; SI-NEXT:    s_lshr_b64 s[46:47], s[6:7], 8
 ; SI-NEXT:    s_add_i32 s9, s9, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
-; SI-NEXT:    v_writelane_b32 v21, s46, 58
-; SI-NEXT:    v_writelane_b32 v21, s47, 59
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 56
-; SI-NEXT:    v_writelane_b32 v21, s47, 57
+; SI-NEXT:    v_writelane_b32 v22, s46, 58
+; SI-NEXT:    v_writelane_b32 v22, s47, 59
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 54
-; SI-NEXT:    v_writelane_b32 v21, s47, 55
+; SI-NEXT:    v_writelane_b32 v22, s46, 56
+; SI-NEXT:    v_writelane_b32 v22, s47, 57
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 8
 ; SI-NEXT:    s_add_i32 s11, s11, 3
 ; SI-NEXT:    s_add_i32 s10, s10, 3
-; SI-NEXT:    v_writelane_b32 v21, s46, 52
-; SI-NEXT:    v_writelane_b32 v21, s47, 53
+; SI-NEXT:    v_writelane_b32 v22, s46, 54
+; SI-NEXT:    v_writelane_b32 v22, s47, 55
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[10:11], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 50
-; SI-NEXT:    v_writelane_b32 v21, s47, 51
+; SI-NEXT:    v_writelane_b32 v22, s46, 52
+; SI-NEXT:    v_writelane_b32 v22, s47, 53
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[10:11], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 48
-; SI-NEXT:    v_writelane_b32 v21, s47, 49
+; SI-NEXT:    v_writelane_b32 v22, s46, 50
+; SI-NEXT:    v_writelane_b32 v22, s47, 51
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[10:11], 8
 ; SI-NEXT:    s_add_i32 s13, s13, 3
 ; SI-NEXT:    s_add_i32 s12, s12, 3
-; SI-NEXT:    v_writelane_b32 v21, s46, 46
-; SI-NEXT:    v_writelane_b32 v21, s47, 47
+; SI-NEXT:    v_writelane_b32 v22, s46, 48
+; SI-NEXT:    v_writelane_b32 v22, s47, 49
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[12:13], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 44
-; SI-NEXT:    v_writelane_b32 v21, s47, 45
+; SI-NEXT:    v_writelane_b32 v22, s46, 46
+; SI-NEXT:    v_writelane_b32 v22, s47, 47
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[12:13], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 42
-; SI-NEXT:    v_writelane_b32 v21, s47, 43
+; SI-NEXT:    v_writelane_b32 v22, s46, 44
+; SI-NEXT:    v_writelane_b32 v22, s47, 45
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[12:13], 8
 ; SI-NEXT:    s_add_i32 s15, s15, 3
 ; SI-NEXT:    s_add_i32 s14, s14, 3
-; SI-NEXT:    v_writelane_b32 v21, s46, 40
-; SI-NEXT:    v_writelane_b32 v21, s47, 41
+; SI-NEXT:    v_writelane_b32 v22, s46, 42
+; SI-NEXT:    v_writelane_b32 v22, s47, 43
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[14:15], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 38
-; SI-NEXT:    v_writelane_b32 v21, s47, 39
+; SI-NEXT:    v_writelane_b32 v22, s46, 40
+; SI-NEXT:    v_writelane_b32 v22, s47, 41
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[14:15], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 36
-; SI-NEXT:    v_writelane_b32 v21, s47, 37
+; SI-NEXT:    v_writelane_b32 v22, s46, 38
+; SI-NEXT:    v_writelane_b32 v22, s47, 39
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[14:15], 8
 ; SI-NEXT:    s_add_i32 s41, s41, 3
 ; SI-NEXT:    s_add_i32 s40, s40, 3
-; SI-NEXT:    v_writelane_b32 v21, s46, 34
-; SI-NEXT:    v_writelane_b32 v21, s47, 35
+; SI-NEXT:    v_writelane_b32 v22, s46, 36
+; SI-NEXT:    v_writelane_b32 v22, s47, 37
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[40:41], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 32
-; SI-NEXT:    v_writelane_b32 v21, s47, 33
+; SI-NEXT:    v_writelane_b32 v22, s46, 34
+; SI-NEXT:    v_writelane_b32 v22, s47, 35
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[40:41], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 30
-; SI-NEXT:    v_writelane_b32 v21, s47, 31
+; SI-NEXT:    v_writelane_b32 v22, s46, 32
+; SI-NEXT:    v_writelane_b32 v22, s47, 33
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[40:41], 8
-; SI-NEXT:    s_add_i32 s43, s43, 3
-; SI-NEXT:    s_add_i32 s42, s42, 3
-; SI-NEXT:    v_writelane_b32 v21, s46, 28
-; SI-NEXT:    v_writelane_b32 v21, s47, 29
-; SI-NEXT:    s_lshr_b64 s[46:47], s[42:43], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 26
-; SI-NEXT:    v_writelane_b32 v21, s47, 27
-; SI-NEXT:    s_lshr_b64 s[46:47], s[42:43], 8
 ; SI-NEXT:    s_add_i32 s45, s45, 3
 ; SI-NEXT:    s_add_i32 s44, s44, 3
-; SI-NEXT:    v_writelane_b32 v21, s46, 24
-; SI-NEXT:    v_writelane_b32 v21, s47, 25
+; SI-NEXT:    v_writelane_b32 v22, s46, 30
+; SI-NEXT:    v_writelane_b32 v22, s47, 31
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[44:45], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 22
-; SI-NEXT:    v_writelane_b32 v21, s47, 23
+; SI-NEXT:    v_writelane_b32 v22, s46, 28
+; SI-NEXT:    v_writelane_b32 v22, s47, 29
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[44:45], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 20
-; SI-NEXT:    v_writelane_b32 v21, s47, 21
+; SI-NEXT:    v_writelane_b32 v22, s46, 26
+; SI-NEXT:    v_writelane_b32 v22, s47, 27
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[44:45], 8
 ; SI-NEXT:    s_add_i32 s29, s29, 3
 ; SI-NEXT:    s_add_i32 s28, s28, 3
-; SI-NEXT:    v_writelane_b32 v21, s46, 18
-; SI-NEXT:    v_writelane_b32 v21, s47, 19
+; SI-NEXT:    v_writelane_b32 v22, s46, 24
+; SI-NEXT:    v_writelane_b32 v22, s47, 25
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[28:29], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 16
-; SI-NEXT:    v_writelane_b32 v21, s47, 17
+; SI-NEXT:    v_writelane_b32 v22, s46, 22
+; SI-NEXT:    v_writelane_b32 v22, s47, 23
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[28:29], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 14
-; SI-NEXT:    v_writelane_b32 v21, s47, 15
+; SI-NEXT:    v_writelane_b32 v22, s46, 20
+; SI-NEXT:    v_writelane_b32 v22, s47, 21
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[28:29], 8
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s26, s26, 3
-; SI-NEXT:    v_writelane_b32 v21, s46, 12
-; SI-NEXT:    v_writelane_b32 v21, s47, 13
+; SI-NEXT:    v_writelane_b32 v22, s46, 18
+; SI-NEXT:    v_writelane_b32 v22, s47, 19
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[26:27], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 10
-; SI-NEXT:    v_writelane_b32 v21, s47, 11
-; SI-NEXT:    s_lshr_b64 s[46:47], s[26:27], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 8
-; SI-NEXT:    v_writelane_b32 v21, s47, 9
-; SI-NEXT:    s_lshr_b64 s[46:47], s[26:27], 8
+; SI-NEXT:    v_writelane_b32 v22, s46, 16
+; SI-NEXT:    v_writelane_b32 v22, s47, 17
+; SI-NEXT:    s_lshr_b64 s[56:57], s[26:27], 8
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s24, s24, 3
-; SI-NEXT:    v_writelane_b32 v21, s46, 6
-; SI-NEXT:    v_writelane_b32 v21, s47, 7
-; SI-NEXT:    s_lshr_b64 s[46:47], s[24:25], 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 4
-; SI-NEXT:    v_writelane_b32 v21, s47, 5
-; SI-NEXT:    s_lshr_b64 s[46:47], s[24:25], 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 2
-; SI-NEXT:    v_writelane_b32 v21, s47, 3
-; SI-NEXT:    s_lshr_b64 s[46:47], s[24:25], 8
+; SI-NEXT:    v_writelane_b32 v22, s56, 14
+; SI-NEXT:    v_writelane_b32 v22, s57, 15
+; SI-NEXT:    s_lshr_b64 s[56:57], s[24:25], 24
+; SI-NEXT:    v_writelane_b32 v22, s56, 12
+; SI-NEXT:    v_writelane_b32 v22, s57, 13
+; SI-NEXT:    s_lshr_b64 s[56:57], s[24:25], 16
+; SI-NEXT:    v_writelane_b32 v22, s56, 10
+; SI-NEXT:    v_writelane_b32 v22, s57, 11
+; SI-NEXT:    s_lshr_b64 s[56:57], s[24:25], 8
+; SI-NEXT:    s_add_i32 s23, s23, 3
+; SI-NEXT:    s_add_i32 s22, s22, 3
+; SI-NEXT:    v_writelane_b32 v22, s56, 8
+; SI-NEXT:    v_writelane_b32 v22, s57, 9
+; SI-NEXT:    s_lshr_b64 s[56:57], s[22:23], 24
+; SI-NEXT:    v_writelane_b32 v22, s56, 6
+; SI-NEXT:    v_writelane_b32 v22, s57, 7
+; SI-NEXT:    s_lshr_b64 s[56:57], s[22:23], 16
+; SI-NEXT:    v_writelane_b32 v22, s56, 4
+; SI-NEXT:    v_writelane_b32 v22, s57, 5
+; SI-NEXT:    s_lshr_b64 s[56:57], s[22:23], 8
+; SI-NEXT:    s_add_i32 s21, s21, 3
+; SI-NEXT:    s_add_i32 s20, s20, 3
+; SI-NEXT:    v_writelane_b32 v22, s56, 2
+; SI-NEXT:    v_writelane_b32 v22, s57, 3
+; SI-NEXT:    s_lshr_b64 s[56:57], s[20:21], 16
+; SI-NEXT:    s_add_i32 s5, s5, 3
+; SI-NEXT:    s_lshr_b64 s[46:47], s[26:27], 16
+; SI-NEXT:    v_writelane_b32 v22, s56, 0
+; SI-NEXT:    v_writelane_b32 v22, s57, 1
+; SI-NEXT:    s_lshr_b32 s47, s5, 24
+; SI-NEXT:    v_writelane_b32 v22, s47, 60
+; SI-NEXT:    s_lshr_b32 s47, s5, 16
+; SI-NEXT:    v_writelane_b32 v22, s47, 61
+; SI-NEXT:    s_lshr_b32 s47, s13, 8
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_writelane_b32 v21, s46, 0
-; SI-NEXT:    v_writelane_b32 v21, s47, 1
-; SI-NEXT:    s_lshr_b64 s[46:47], s[16:17], 8
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
-; SI-NEXT:    s_add_i32 s21, s21, 3
-; SI-NEXT:    s_add_i32 s20, s20, 3
-; SI-NEXT:    s_add_i32 s23, s23, 3
-; SI-NEXT:    s_add_i32 s22, s22, 3
-; SI-NEXT:    s_lshr_b32 s47, s5, 24
-; SI-NEXT:    s_lshr_b64 s[84:85], s[42:43], 24
-; SI-NEXT:    s_lshr_b64 s[72:73], s[22:23], 24
-; SI-NEXT:    s_lshr_b64 s[74:75], s[22:23], 16
-; SI-NEXT:    s_lshr_b64 s[76:77], s[22:23], 8
-; SI-NEXT:    s_lshr_b64 s[78:79], s[20:21], 24
-; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
-; SI-NEXT:    s_lshr_b64 s[90:91], s[20:21], 8
+; SI-NEXT:    s_add_i32 s43, s43, 3
+; SI-NEXT:    s_add_i32 s42, s42, 3
+; SI-NEXT:    s_add_i32 s7, s7, 3
+; SI-NEXT:    s_add_i32 s6, s6, 3
+; SI-NEXT:    s_add_i32 s4, s4, 3
+; SI-NEXT:    v_writelane_b32 v22, s47, 62
+; SI-NEXT:    s_lshr_b32 s47, s15, 24
+; SI-NEXT:    s_lshr_b64 s[38:39], s[4:5], 24
+; SI-NEXT:    s_lshr_b64 s[84:85], s[4:5], 16
+; SI-NEXT:    s_lshr_b64 s[86:87], s[4:5], 8
+; SI-NEXT:    s_lshr_b64 s[96:97], s[6:7], 24
+; SI-NEXT:    s_lshr_b64 s[54:55], s[6:7], 16
+; SI-NEXT:    s_lshr_b64 s[98:99], s[6:7], 8
+; SI-NEXT:    s_lshr_b64 s[64:65], s[42:43], 24
+; SI-NEXT:    s_lshr_b64 s[66:67], s[42:43], 16
+; SI-NEXT:    s_lshr_b64 s[68:69], s[42:43], 8
+; SI-NEXT:    s_lshr_b64 s[74:75], s[20:21], 24
+; SI-NEXT:    s_lshr_b64 s[62:63], s[20:21], 8
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 24
-; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[18:19], 8
-; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 24
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 16
-; SI-NEXT:    v_writelane_b32 v22, s47, 6
-; SI-NEXT:    s_lshr_b32 s47, s5, 16
-; SI-NEXT:    v_writelane_b32 v22, s47, 7
-; SI-NEXT:    s_lshr_b32 s63, s5, 8
-; SI-NEXT:    s_lshr_b32 s73, s7, 24
-; SI-NEXT:    s_lshr_b32 s75, s7, 16
-; SI-NEXT:    s_lshr_b32 s77, s7, 8
-; SI-NEXT:    s_lshr_b32 s79, s9, 24
-; SI-NEXT:    s_lshr_b32 s89, s9, 16
-; SI-NEXT:    s_lshr_b32 s91, s9, 8
+; SI-NEXT:    s_lshr_b64 s[58:59], s[18:19], 16
+; SI-NEXT:    s_lshr_b64 s[76:77], s[18:19], 8
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 24
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[88:89], s[16:17], 8
+; SI-NEXT:    v_writelane_b32 v22, s47, 63
+; SI-NEXT:    s_lshr_b32 s47, s15, 16
+; SI-NEXT:    s_lshr_b32 s85, s5, 8
+; SI-NEXT:    s_lshr_b32 s72, s7, 24
+; SI-NEXT:    s_lshr_b32 s55, s7, 16
+; SI-NEXT:    s_lshr_b32 s87, s7, 8
+; SI-NEXT:    s_lshr_b32 s78, s9, 24
+; SI-NEXT:    s_lshr_b32 s97, s9, 16
+; SI-NEXT:    s_lshr_b32 s90, s9, 8
 ; SI-NEXT:    s_lshr_b32 s93, s11, 24
-; SI-NEXT:    s_lshr_b32 s95, s11, 16
-; SI-NEXT:    s_lshr_b32 s31, s11, 8
+; SI-NEXT:    s_lshr_b32 s94, s11, 16
+; SI-NEXT:    s_lshr_b32 s30, s11, 8
 ; SI-NEXT:    s_lshr_b32 s35, s13, 24
-; SI-NEXT:    s_lshr_b32 s37, s13, 16
-; SI-NEXT:    s_lshr_b32 s39, s13, 8
-; SI-NEXT:    s_lshr_b32 s47, s15, 24
-; SI-NEXT:    s_lshr_b32 s87, s15, 16
-; SI-NEXT:    s_lshr_b32 s55, s15, 8
-; SI-NEXT:    s_lshr_b32 s97, s41, 24
-; SI-NEXT:    s_lshr_b32 s54, s41, 16
-; SI-NEXT:    s_lshr_b32 s99, s41, 8
-; SI-NEXT:    s_lshr_b32 s98, s43, 24
-; SI-NEXT:    s_lshr_b32 s38, s43, 16
-; SI-NEXT:    s_lshr_b32 s56, s43, 8
-; SI-NEXT:    s_lshr_b32 s96, s45, 24
-; SI-NEXT:    s_lshr_b32 s85, s45, 16
-; SI-NEXT:    s_lshr_b32 s86, s45, 8
-; SI-NEXT:    s_lshr_b32 s49, s29, 24
-; SI-NEXT:    s_lshr_b32 s64, s29, 16
-; SI-NEXT:    s_lshr_b32 s65, s29, 8
-; SI-NEXT:    s_lshr_b32 s66, s27, 24
-; SI-NEXT:    s_lshr_b32 s67, s27, 16
-; SI-NEXT:    s_lshr_b32 s59, s27, 8
-; SI-NEXT:    s_lshr_b32 s60, s25, 24
-; SI-NEXT:    s_lshr_b32 s61, s25, 16
-; SI-NEXT:    s_lshr_b32 s62, s25, 8
-; SI-NEXT:    s_lshr_b32 s68, s23, 24
-; SI-NEXT:    s_lshr_b32 s69, s23, 16
-; SI-NEXT:    s_lshr_b32 s48, s23, 8
-; SI-NEXT:    s_lshr_b32 s50, s21, 24
-; SI-NEXT:    s_lshr_b32 s51, s21, 16
-; SI-NEXT:    s_lshr_b32 s70, s21, 8
-; SI-NEXT:    s_lshr_b32 s71, s19, 24
-; SI-NEXT:    s_lshr_b32 s80, s19, 16
-; SI-NEXT:    s_lshr_b32 s81, s19, 8
-; SI-NEXT:    s_lshr_b32 s82, s17, 24
-; SI-NEXT:    s_lshr_b32 s83, s17, 16
-; SI-NEXT:    s_lshr_b32 s52, s17, 8
-; SI-NEXT:    v_writelane_b32 v22, s47, 8
+; SI-NEXT:    s_lshr_b32 s36, s13, 16
+; SI-NEXT:    v_writelane_b32 v21, s47, 0
+; SI-NEXT:    s_lshr_b32 s47, s15, 8
+; SI-NEXT:    s_lshr_b32 s99, s41, 24
+; SI-NEXT:    s_lshr_b32 s56, s41, 16
+; SI-NEXT:    s_lshr_b32 s39, s41, 8
+; SI-NEXT:    s_lshr_b32 s49, s43, 24
+; SI-NEXT:    s_lshr_b32 s53, s43, 16
+; SI-NEXT:    s_lshr_b32 s65, s43, 8
+; SI-NEXT:    s_lshr_b32 s67, s45, 24
+; SI-NEXT:    s_lshr_b32 s69, s45, 16
+; SI-NEXT:    s_lshr_b32 s73, s45, 8
+; SI-NEXT:    s_lshr_b32 s48, s29, 24
+; SI-NEXT:    s_lshr_b32 s50, s29, 16
+; SI-NEXT:    s_lshr_b32 s51, s29, 8
+; SI-NEXT:    s_lshr_b32 s61, s27, 24
+; SI-NEXT:    s_lshr_b32 s71, s27, 16
+; SI-NEXT:    s_lshr_b32 s80, s27, 8
+; SI-NEXT:    s_lshr_b32 s91, s25, 24
+; SI-NEXT:    s_lshr_b32 s63, s25, 16
+; SI-NEXT:    s_lshr_b32 s81, s25, 8
+; SI-NEXT:    s_lshr_b32 s82, s23, 24
+; SI-NEXT:    s_lshr_b32 s83, s23, 16
+; SI-NEXT:    s_lshr_b32 s95, s23, 8
+; SI-NEXT:    s_lshr_b32 s59, s21, 24
+; SI-NEXT:    s_lshr_b32 s60, s21, 16
+; SI-NEXT:    s_lshr_b32 s75, s21, 8
+; SI-NEXT:    s_lshr_b32 s52, s19, 24
+; SI-NEXT:    s_lshr_b32 s31, s19, 16
+; SI-NEXT:    s_lshr_b32 s77, s19, 8
+; SI-NEXT:    s_lshr_b32 vcc_hi, s17, 24
+; SI-NEXT:    s_lshr_b32 s37, s17, 16
+; SI-NEXT:    s_lshr_b32 s89, s17, 8
+; SI-NEXT:    v_writelane_b32 v21, s47, 1
 ; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s47, s46, 8
+; SI-NEXT:    s_lshl_b32 s47, s88, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s47
-; SI-NEXT:    s_and_b32 s47, s36, 0xff
+; SI-NEXT:    s_and_b32 s47, s34, 0xff
 ; SI-NEXT:    s_lshl_b32 s47, s47, 16
-; SI-NEXT:    s_lshl_b32 s57, s34, 24
+; SI-NEXT:    s_lshl_b32 s57, vcc_lo, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s47, s57, s47
 ; SI-NEXT:    s_or_b32 s16, s16, s47
 ; SI-NEXT:    v_mov_b32_e32 v1, s16
 ; SI-NEXT:    s_and_b32 s16, s17, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s52, 8
+; SI-NEXT:    s_lshl_b32 s17, s89, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s83, 0xff
+; SI-NEXT:    s_and_b32 s17, s37, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s47, s82, 24
+; SI-NEXT:    s_lshl_b32 s47, vcc_hi, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s47, s17
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s18, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s30, 8
+; SI-NEXT:    s_lshl_b32 s17, s76, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s94, 0xff
+; SI-NEXT:    s_and_b32 s17, s58, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s92, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
@@ -8575,11 +8691,11 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s19, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s81, 8
+; SI-NEXT:    s_lshl_b32 s17, s77, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s80, 0xff
+; SI-NEXT:    s_and_b32 s17, s31, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s71, 24
+; SI-NEXT:    s_lshl_b32 s18, s52, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 8, v0
@@ -8588,11 +8704,12 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s20, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s90, 8
+; SI-NEXT:    s_lshl_b32 s17, s62, 8
+; SI-NEXT:    v_readlane_b32 s18, v22, 0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s88, 0xff
+; SI-NEXT:    s_and_b32 s17, s18, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s78, 24
+; SI-NEXT:    s_lshl_b32 s18, s74, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 12, v0
@@ -8601,24 +8718,30 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s21, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s70, 8
+; SI-NEXT:    s_lshl_b32 s17, s75, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s51, 0xff
+; SI-NEXT:    s_and_b32 s17, s60, 0xff
+; SI-NEXT:    v_readlane_b32 s19, v22, 1
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s50, 24
-; SI-NEXT:    s_and_b32 s16, s16, 0xffff
+; SI-NEXT:    s_lshl_b32 s18, s59, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
+; SI-NEXT:    v_readlane_b32 s18, v22, 2
+; SI-NEXT:    s_and_b32 s16, s16, 0xffff
+; SI-NEXT:    v_readlane_b32 s19, v22, 3
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 16, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
+; SI-NEXT:    s_lshl_b32 s17, s18, 8
+; SI-NEXT:    v_readlane_b32 s18, v22, 4
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s22, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s76, 8
+; SI-NEXT:    v_readlane_b32 s19, v22, 5
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s74, 0xff
+; SI-NEXT:    s_and_b32 s17, s18, 0xff
+; SI-NEXT:    v_readlane_b32 s18, v22, 6
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s72, 24
+; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 20, v0
@@ -8627,27 +8750,28 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s23, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s48, 8
+; SI-NEXT:    s_lshl_b32 s17, s95, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s69, 0xff
+; SI-NEXT:    s_and_b32 s17, s83, 0xff
+; SI-NEXT:    v_readlane_b32 s19, v22, 7
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s68, 24
+; SI-NEXT:    s_lshl_b32 s18, s82, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v21, 0
+; SI-NEXT:    v_readlane_b32 s18, v22, 8
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v21, 1
+; SI-NEXT:    v_readlane_b32 s19, v22, 9
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 24, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 2
+; SI-NEXT:    v_readlane_b32 s18, v22, 10
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s24, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 3
+; SI-NEXT:    v_readlane_b32 s19, v22, 11
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 4
+; SI-NEXT:    v_readlane_b32 s18, v22, 12
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
@@ -8658,28 +8782,26 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s25, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s62, 8
+; SI-NEXT:    s_lshl_b32 s17, s81, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s61, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 5
+; SI-NEXT:    s_and_b32 s17, s63, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s60, 24
-; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v21, 6
+; SI-NEXT:    s_lshl_b32 s18, s91, 24
+; SI-NEXT:    v_readlane_b32 s19, v22, 13
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v21, 7
+; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 32, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 8
+; SI-NEXT:    v_readlane_b32 s18, v22, 14
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s26, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 9
+; SI-NEXT:    v_readlane_b32 s19, v22, 15
+; SI-NEXT:    s_lshl_b32 s17, s18, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 10
+; SI-NEXT:    s_and_b32 s17, s46, 0xff
+; SI-NEXT:    v_readlane_b32 s18, v22, 16
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
@@ -8690,28 +8812,28 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s27, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s59, 8
+; SI-NEXT:    s_lshl_b32 s17, s80, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s67, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 11
+; SI-NEXT:    s_and_b32 s17, s71, 0xff
+; SI-NEXT:    v_readlane_b32 s19, v22, 17
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s66, 24
+; SI-NEXT:    s_lshl_b32 s18, s61, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v21, 12
+; SI-NEXT:    v_readlane_b32 s18, v22, 18
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v21, 13
+; SI-NEXT:    v_readlane_b32 s19, v22, 19
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 40, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 14
+; SI-NEXT:    v_readlane_b32 s18, v22, 20
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s28, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 15
+; SI-NEXT:    v_readlane_b32 s19, v22, 21
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 16
+; SI-NEXT:    v_readlane_b32 s18, v22, 22
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
@@ -8722,28 +8844,28 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s29, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s65, 8
+; SI-NEXT:    s_lshl_b32 s17, s51, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s64, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 17
+; SI-NEXT:    s_and_b32 s17, s50, 0xff
+; SI-NEXT:    v_readlane_b32 s19, v22, 23
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s49, 24
+; SI-NEXT:    s_lshl_b32 s18, s48, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v21, 18
+; SI-NEXT:    v_readlane_b32 s18, v22, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v21, 19
+; SI-NEXT:    v_readlane_b32 s19, v22, 25
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 48, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 20
+; SI-NEXT:    v_readlane_b32 s18, v22, 26
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s44, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 21
+; SI-NEXT:    v_readlane_b32 s19, v22, 27
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 22
+; SI-NEXT:    v_readlane_b32 s18, v22, 28
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
@@ -8754,28 +8876,24 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s45, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s86, 8
+; SI-NEXT:    s_lshl_b32 s17, s73, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s85, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 23
+; SI-NEXT:    s_and_b32 s17, s69, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s96, 24
+; SI-NEXT:    s_lshl_b32 s18, s67, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v21, 24
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 56, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s19, v21, 25
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s42, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 26
+; SI-NEXT:    s_lshl_b32 s17, s68, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s18, 0xff
+; SI-NEXT:    s_and_b32 s17, s66, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s84, 24
+; SI-NEXT:    s_lshl_b32 s18, s64, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 60, v0
@@ -8784,28 +8902,28 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s43, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s56, 8
+; SI-NEXT:    s_lshl_b32 s17, s65, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s38, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 27
+; SI-NEXT:    s_and_b32 s17, s53, 0xff
+; SI-NEXT:    v_readlane_b32 s19, v22, 29
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s98, 24
+; SI-NEXT:    s_lshl_b32 s18, s49, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v21, 28
+; SI-NEXT:    v_readlane_b32 s18, v22, 30
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v21, 29
+; SI-NEXT:    v_readlane_b32 s19, v22, 31
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 64, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 30
+; SI-NEXT:    v_readlane_b32 s18, v22, 32
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s40, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 31
+; SI-NEXT:    v_readlane_b32 s19, v22, 33
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 32
+; SI-NEXT:    v_readlane_b32 s18, v22, 34
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
@@ -8816,11 +8934,11 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s41, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s99, 8
+; SI-NEXT:    s_lshl_b32 s17, s39, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s54, 0xff
+; SI-NEXT:    s_and_b32 s17, s56, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s97, 24
+; SI-NEXT:    s_lshl_b32 s18, s99, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x48, v0
@@ -8828,16 +8946,16 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
-; SI-NEXT:    v_readlane_b32 s16, v21, 34
+; SI-NEXT:    v_readlane_b32 s16, v22, 36
 ; SI-NEXT:    s_and_b32 s14, s14, 0xff
-; SI-NEXT:    v_readlane_b32 s17, v21, 35
+; SI-NEXT:    v_readlane_b32 s17, v22, 37
 ; SI-NEXT:    s_lshl_b32 s16, s16, 8
-; SI-NEXT:    v_readlane_b32 s19, v21, 33
+; SI-NEXT:    v_readlane_b32 s19, v22, 35
 ; SI-NEXT:    s_or_b32 s14, s14, s16
-; SI-NEXT:    v_readlane_b32 s16, v21, 36
-; SI-NEXT:    v_readlane_b32 s17, v21, 37
+; SI-NEXT:    v_readlane_b32 s16, v22, 38
+; SI-NEXT:    v_readlane_b32 s17, v22, 39
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 38
+; SI-NEXT:    v_readlane_b32 s18, v22, 40
 ; SI-NEXT:    s_lshl_b32 s16, s16, 16
 ; SI-NEXT:    s_lshl_b32 s17, s18, 24
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
@@ -8848,10 +8966,12 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s14
 ; SI-NEXT:    s_and_b32 s14, s15, 0xff
-; SI-NEXT:    s_lshl_b32 s15, s55, 8
+; SI-NEXT:    v_readlane_b32 s15, v21, 1
+; SI-NEXT:    s_lshl_b32 s15, s15, 8
 ; SI-NEXT:    s_or_b32 s14, s14, s15
-; SI-NEXT:    s_and_b32 s15, s87, 0xff
-; SI-NEXT:    v_readlane_b32 s16, v22, 8
+; SI-NEXT:    v_readlane_b32 s15, v21, 0
+; SI-NEXT:    s_and_b32 s15, s15, 0xff
+; SI-NEXT:    v_readlane_b32 s16, v22, 63
 ; SI-NEXT:    s_lshl_b32 s15, s15, 16
 ; SI-NEXT:    s_lshl_b32 s16, s16, 24
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
@@ -8861,15 +8981,15 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s14
-; SI-NEXT:    v_readlane_b32 s14, v21, 40
+; SI-NEXT:    v_readlane_b32 s14, v22, 42
 ; SI-NEXT:    s_and_b32 s12, s12, 0xff
-; SI-NEXT:    v_readlane_b32 s15, v21, 41
+; SI-NEXT:    v_readlane_b32 s15, v22, 43
 ; SI-NEXT:    s_lshl_b32 s14, s14, 8
 ; SI-NEXT:    s_or_b32 s12, s12, s14
-; SI-NEXT:    v_readlane_b32 s14, v21, 42
-; SI-NEXT:    v_readlane_b32 s15, v21, 43
+; SI-NEXT:    v_readlane_b32 s14, v22, 44
+; SI-NEXT:    v_readlane_b32 s15, v22, 45
 ; SI-NEXT:    s_and_b32 s14, s14, 0xff
-; SI-NEXT:    v_readlane_b32 s16, v21, 44
+; SI-NEXT:    v_readlane_b32 s16, v22, 46
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_lshl_b32 s15, s16, 24
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
@@ -8880,9 +9000,10 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s12
 ; SI-NEXT:    s_and_b32 s12, s13, 0xff
-; SI-NEXT:    s_lshl_b32 s13, s39, 8
+; SI-NEXT:    v_readlane_b32 s13, v22, 62
+; SI-NEXT:    s_lshl_b32 s13, s13, 8
 ; SI-NEXT:    s_or_b32 s12, s12, s13
-; SI-NEXT:    s_and_b32 s13, s37, 0xff
+; SI-NEXT:    s_and_b32 s13, s36, 0xff
 ; SI-NEXT:    s_lshl_b32 s13, s13, 16
 ; SI-NEXT:    s_lshl_b32 s14, s35, 24
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
@@ -8892,15 +9013,15 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s12
-; SI-NEXT:    v_readlane_b32 s12, v21, 46
+; SI-NEXT:    v_readlane_b32 s12, v22, 48
 ; SI-NEXT:    s_and_b32 s10, s10, 0xff
-; SI-NEXT:    v_readlane_b32 s13, v21, 47
+; SI-NEXT:    v_readlane_b32 s13, v22, 49
 ; SI-NEXT:    s_lshl_b32 s12, s12, 8
 ; SI-NEXT:    s_or_b32 s10, s10, s12
-; SI-NEXT:    v_readlane_b32 s12, v21, 48
-; SI-NEXT:    v_readlane_b32 s13, v21, 49
+; SI-NEXT:    v_readlane_b32 s12, v22, 50
+; SI-NEXT:    v_readlane_b32 s13, v22, 51
 ; SI-NEXT:    s_and_b32 s12, s12, 0xff
-; SI-NEXT:    v_readlane_b32 s14, v21, 50
+; SI-NEXT:    v_readlane_b32 s14, v22, 52
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_lshl_b32 s13, s14, 24
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
@@ -8911,9 +9032,9 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s10
 ; SI-NEXT:    s_and_b32 s10, s11, 0xff
-; SI-NEXT:    s_lshl_b32 s11, s31, 8
+; SI-NEXT:    s_lshl_b32 s11, s30, 8
 ; SI-NEXT:    s_or_b32 s10, s10, s11
-; SI-NEXT:    s_and_b32 s11, s95, 0xff
+; SI-NEXT:    s_and_b32 s11, s94, 0xff
 ; SI-NEXT:    s_lshl_b32 s11, s11, 16
 ; SI-NEXT:    s_lshl_b32 s12, s93, 24
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
@@ -8923,15 +9044,15 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s10
-; SI-NEXT:    v_readlane_b32 s10, v21, 52
+; SI-NEXT:    v_readlane_b32 s10, v22, 54
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s11, v21, 53
+; SI-NEXT:    v_readlane_b32 s11, v22, 55
 ; SI-NEXT:    s_lshl_b32 s10, s10, 8
 ; SI-NEXT:    s_or_b32 s8, s8, s10
-; SI-NEXT:    v_readlane_b32 s10, v21, 54
-; SI-NEXT:    v_readlane_b32 s11, v21, 55
+; SI-NEXT:    v_readlane_b32 s10, v22, 56
+; SI-NEXT:    v_readlane_b32 s11, v22, 57
 ; SI-NEXT:    s_and_b32 s10, s10, 0xff
-; SI-NEXT:    v_readlane_b32 s12, v21, 56
+; SI-NEXT:    v_readlane_b32 s12, v22, 58
 ; SI-NEXT:    s_lshl_b32 s10, s10, 16
 ; SI-NEXT:    s_lshl_b32 s11, s12, 24
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
@@ -8942,11 +9063,11 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s8
 ; SI-NEXT:    s_and_b32 s8, s9, 0xff
-; SI-NEXT:    s_lshl_b32 s9, s91, 8
+; SI-NEXT:    s_lshl_b32 s9, s90, 8
 ; SI-NEXT:    s_or_b32 s8, s8, s9
-; SI-NEXT:    s_and_b32 s9, s89, 0xff
+; SI-NEXT:    s_and_b32 s9, s97, 0xff
 ; SI-NEXT:    s_lshl_b32 s9, s9, 16
-; SI-NEXT:    s_lshl_b32 s10, s79, 24
+; SI-NEXT:    s_lshl_b32 s10, s78, 24
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
 ; SI-NEXT:    s_or_b32 s9, s10, s9
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x68, v0
@@ -8954,17 +9075,12 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s8
-; SI-NEXT:    v_readlane_b32 s8, v21, 58
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v21, 59
-; SI-NEXT:    s_lshl_b32 s8, s8, 8
+; SI-NEXT:    s_lshl_b32 s8, s98, 8
 ; SI-NEXT:    s_or_b32 s6, s6, s8
-; SI-NEXT:    v_readlane_b32 s8, v21, 60
-; SI-NEXT:    v_readlane_b32 s9, v21, 61
-; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s10, v21, 62
+; SI-NEXT:    s_and_b32 s8, s54, 0xff
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
-; SI-NEXT:    s_lshl_b32 s9, s10, 24
+; SI-NEXT:    s_lshl_b32 s9, s96, 24
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x6c, v0
@@ -8973,11 +9089,11 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    s_and_b32 s6, s7, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s77, 8
+; SI-NEXT:    s_lshl_b32 s7, s87, 8
 ; SI-NEXT:    s_or_b32 s6, s6, s7
-; SI-NEXT:    s_and_b32 s7, s75, 0xff
+; SI-NEXT:    s_and_b32 s7, s55, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s8, s73, 24
+; SI-NEXT:    s_lshl_b32 s8, s72, 24
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_or_b32 s7, s8, s7
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x70, v0
@@ -8985,17 +9101,12 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
-; SI-NEXT:    v_readlane_b32 s6, v22, 0
 ; SI-NEXT:    s_and_b32 s4, s4, 0xff
-; SI-NEXT:    v_readlane_b32 s7, v22, 1
-; SI-NEXT:    s_lshl_b32 s6, s6, 8
+; SI-NEXT:    s_lshl_b32 s6, s86, 8
 ; SI-NEXT:    s_or_b32 s4, s4, s6
-; SI-NEXT:    v_readlane_b32 s6, v22, 4
-; SI-NEXT:    v_readlane_b32 s7, v22, 5
-; SI-NEXT:    s_and_b32 s6, s6, 0xff
-; SI-NEXT:    v_readlane_b32 s8, v22, 2
+; SI-NEXT:    s_and_b32 s6, s84, 0xff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_lshl_b32 s7, s8, 24
+; SI-NEXT:    s_lshl_b32 s7, s38, 24
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x74, v0
@@ -9004,11 +9115,11 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
 ; SI-NEXT:    s_and_b32 s4, s5, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s63, 8
+; SI-NEXT:    s_lshl_b32 s5, s85, 8
 ; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_readlane_b32 s5, v22, 7
+; SI-NEXT:    v_readlane_b32 s5, v22, 61
 ; SI-NEXT:    s_and_b32 s5, s5, 0xff
-; SI-NEXT:    v_readlane_b32 s6, v22, 6
+; SI-NEXT:    v_readlane_b32 s6, v22, 60
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_lshl_b32 s6, s6, 24
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
@@ -9019,12 +9130,10 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    v_add_i32_e32 v0, vcc, 0x7c, v0
 ; SI-NEXT:    v_mov_b32_e32 v1, s4
 ; SI-NEXT:    v_readlane_b32 s30, v20, 34
-; SI-NEXT:    v_readlane_b32 s19, v21, 39
-; SI-NEXT:    v_readlane_b32 s17, v21, 45
-; SI-NEXT:    v_readlane_b32 s15, v21, 51
-; SI-NEXT:    v_readlane_b32 s13, v21, 57
-; SI-NEXT:    v_readlane_b32 s11, v21, 63
-; SI-NEXT:    v_readlane_b32 s9, v22, 3
+; SI-NEXT:    v_readlane_b32 s19, v22, 41
+; SI-NEXT:    v_readlane_b32 s17, v22, 47
+; SI-NEXT:    v_readlane_b32 s15, v22, 53
+; SI-NEXT:    v_readlane_b32 s13, v22, 59
 ; SI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; SI-NEXT:    v_readlane_b32 s31, v20, 35
 ; SI-NEXT:    v_readlane_b32 s99, v20, 33
@@ -9129,665 +9238,833 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; VI-NEXT:    s_cmp_lg_u32 s44, 0
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s46, s5, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 2
-; VI-NEXT:    s_lshr_b32 s46, s5, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 3
-; VI-NEXT:    s_lshr_b32 s46, s5, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 4
-; VI-NEXT:    s_lshr_b32 s46, s4, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 5
-; VI-NEXT:    s_lshr_b32 s46, s4, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 6
-; VI-NEXT:    s_lshr_b32 s46, s7, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 7
-; VI-NEXT:    s_lshr_b32 s46, s7, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 8
-; VI-NEXT:    s_lshr_b32 s46, s7, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 9
-; VI-NEXT:    s_lshr_b32 s46, s6, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 10
-; VI-NEXT:    s_lshr_b32 s46, s6, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 11
-; VI-NEXT:    s_lshr_b32 s46, s9, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 12
-; VI-NEXT:    s_lshr_b32 s46, s9, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 13
-; VI-NEXT:    s_lshr_b32 s46, s9, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 14
-; VI-NEXT:    s_lshr_b32 s46, s8, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 15
-; VI-NEXT:    s_lshr_b32 s46, s8, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 16
-; VI-NEXT:    s_lshr_b32 s46, s11, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 17
-; VI-NEXT:    s_lshr_b32 s46, s11, 16
 ; VI-NEXT:    v_writelane_b32 v33, s46, 18
-; VI-NEXT:    s_lshr_b32 s46, s11, 8
+; VI-NEXT:    s_lshr_b32 s46, s4, 16
 ; VI-NEXT:    v_writelane_b32 v33, s46, 19
-; VI-NEXT:    s_lshr_b32 s46, s10, 16
+; VI-NEXT:    s_lshr_b32 s46, s7, 24
 ; VI-NEXT:    v_writelane_b32 v33, s46, 20
-; VI-NEXT:    s_lshr_b32 s46, s10, 8
+; VI-NEXT:    s_lshr_b32 s46, s6, 16
 ; VI-NEXT:    v_writelane_b32 v33, s46, 21
-; VI-NEXT:    s_lshr_b32 s46, s13, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 22
-; VI-NEXT:    s_lshr_b32 s46, s13, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 23
-; VI-NEXT:    s_lshr_b32 s46, s13, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 24
-; VI-NEXT:    s_lshr_b32 s46, s12, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 25
-; VI-NEXT:    s_lshr_b32 s46, s12, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 26
-; VI-NEXT:    s_lshr_b32 s46, s15, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 27
-; VI-NEXT:    s_lshr_b32 s46, s15, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 28
-; VI-NEXT:    s_lshr_b32 s46, s15, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 29
-; VI-NEXT:    s_lshr_b32 s46, s14, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 30
-; VI-NEXT:    s_lshr_b32 s46, s14, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 31
-; VI-NEXT:    s_lshr_b32 s46, s41, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 32
-; VI-NEXT:    s_lshr_b32 s46, s41, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 33
-; VI-NEXT:    s_lshr_b32 s46, s41, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 34
-; VI-NEXT:    s_lshr_b32 s46, s40, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 35
-; VI-NEXT:    s_lshr_b32 s46, s40, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 36
-; VI-NEXT:    s_lshr_b32 s46, s43, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 37
-; VI-NEXT:    s_lshr_b32 s46, s43, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 38
-; VI-NEXT:    s_lshr_b32 s46, s43, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 39
-; VI-NEXT:    s_lshr_b32 s46, s42, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 40
-; VI-NEXT:    s_lshr_b32 s46, s42, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 41
-; VI-NEXT:    s_lshr_b32 s46, s45, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 42
-; VI-NEXT:    s_lshr_b32 s46, s45, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 43
-; VI-NEXT:    s_lshr_b32 s46, s45, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 44
-; VI-NEXT:    s_lshr_b32 s46, s44, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 45
-; VI-NEXT:    s_lshr_b32 s46, s44, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 46
-; VI-NEXT:    s_lshr_b32 s46, s29, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 47
-; VI-NEXT:    s_lshr_b32 s46, s29, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 48
-; VI-NEXT:    s_lshr_b32 s46, s28, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 49
-; VI-NEXT:    s_lshr_b32 s46, s27, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 50
-; VI-NEXT:    s_lshr_b32 s46, s27, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 51
-; VI-NEXT:    s_lshr_b32 s46, s26, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 52
-; VI-NEXT:    s_lshr_b32 s46, s25, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 53
-; VI-NEXT:    s_lshr_b32 s46, s25, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 54
-; VI-NEXT:    s_lshr_b32 s46, s24, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 55
-; VI-NEXT:    s_lshr_b32 s46, s22, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 56
-; VI-NEXT:    s_lshr_b32 s46, s21, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 57
-; VI-NEXT:    s_lshr_b64 s[56:57], s[4:5], 24
+; VI-NEXT:    s_lshr_b32 s57, s45, 8
+; VI-NEXT:    v_writelane_b32 v33, s57, 22
+; VI-NEXT:    s_lshr_b32 s57, s44, 16
+; VI-NEXT:    v_writelane_b32 v33, s57, 23
+; VI-NEXT:    s_lshr_b32 s57, s44, 8
+; VI-NEXT:    v_writelane_b32 v33, s57, 24
+; VI-NEXT:    s_lshr_b32 s57, s29, 24
+; VI-NEXT:    v_writelane_b32 v33, s57, 25
+; VI-NEXT:    s_lshr_b32 s57, s29, 16
+; VI-NEXT:    v_writelane_b32 v33, s57, 26
+; VI-NEXT:    s_lshr_b32 s56, s29, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 27
+; VI-NEXT:    s_lshr_b32 s57, s28, 16
+; VI-NEXT:    v_writelane_b32 v33, s57, 28
+; VI-NEXT:    s_lshr_b32 s56, s28, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 29
+; VI-NEXT:    s_lshr_b32 s57, s27, 24
+; VI-NEXT:    v_writelane_b32 v33, s57, 30
+; VI-NEXT:    s_lshr_b32 s57, s27, 16
+; VI-NEXT:    v_writelane_b32 v33, s57, 31
+; VI-NEXT:    s_lshr_b32 s56, s27, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 32
+; VI-NEXT:    s_lshr_b32 s57, s26, 16
+; VI-NEXT:    v_writelane_b32 v33, s57, 33
+; VI-NEXT:    s_lshr_b32 s56, s26, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 34
+; VI-NEXT:    s_lshr_b32 s57, s25, 24
+; VI-NEXT:    v_writelane_b32 v33, s57, 35
+; VI-NEXT:    s_lshr_b32 s57, s25, 16
+; VI-NEXT:    v_writelane_b32 v33, s57, 36
+; VI-NEXT:    s_lshr_b32 s56, s25, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 37
+; VI-NEXT:    s_lshr_b32 s57, s24, 16
+; VI-NEXT:    v_writelane_b32 v33, s57, 38
+; VI-NEXT:    s_lshr_b32 s56, s24, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 39
+; VI-NEXT:    s_lshr_b32 s56, s23, 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 40
+; VI-NEXT:    s_lshr_b32 s56, s23, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 41
+; VI-NEXT:    s_lshr_b32 s56, s23, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 42
+; VI-NEXT:    s_lshr_b32 s56, s22, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 43
+; VI-NEXT:    s_lshr_b32 s56, s22, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 44
+; VI-NEXT:    s_lshr_b32 s56, s21, 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 45
+; VI-NEXT:    s_lshr_b32 s56, s21, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 46
+; VI-NEXT:    s_lshr_b32 s56, s21, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 47
+; VI-NEXT:    s_lshr_b32 s56, s20, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 48
+; VI-NEXT:    s_lshr_b32 s56, s20, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 49
+; VI-NEXT:    s_lshr_b32 s56, s19, 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 50
+; VI-NEXT:    s_lshr_b32 s56, s19, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 51
+; VI-NEXT:    s_lshr_b32 s56, s19, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 52
+; VI-NEXT:    s_lshr_b32 s56, s18, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 53
+; VI-NEXT:    s_lshr_b32 s56, s18, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 54
+; VI-NEXT:    s_lshr_b32 s56, s17, 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 55
+; VI-NEXT:    s_lshr_b32 s56, s17, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 56
+; VI-NEXT:    s_lshr_b32 s56, s17, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 57
+; VI-NEXT:    s_lshr_b32 s56, s16, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 58
+; VI-NEXT:    s_lshr_b32 s56, s16, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 59
+; VI-NEXT:    s_lshr_b64 s[88:89], s[4:5], 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 16
+; VI-NEXT:    v_writelane_b32 v33, s89, 17
+; VI-NEXT:    s_lshr_b64 s[56:57], s[6:7], 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 14
+; VI-NEXT:    v_writelane_b32 v33, s57, 15
+; VI-NEXT:    s_lshr_b64 s[56:57], s[8:9], 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 12
+; VI-NEXT:    v_writelane_b32 v33, s57, 13
+; VI-NEXT:    s_lshr_b64 s[56:57], s[10:11], 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 10
+; VI-NEXT:    v_writelane_b32 v33, s57, 11
+; VI-NEXT:    s_lshr_b64 s[56:57], s[12:13], 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 8
+; VI-NEXT:    v_writelane_b32 v33, s57, 9
+; VI-NEXT:    s_lshr_b64 s[56:57], s[14:15], 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 6
+; VI-NEXT:    v_writelane_b32 v33, s57, 7
+; VI-NEXT:    s_lshr_b64 s[56:57], s[40:41], 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 4
+; VI-NEXT:    v_writelane_b32 v33, s57, 5
+; VI-NEXT:    s_lshr_b64 s[56:57], s[42:43], 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 2
+; VI-NEXT:    v_writelane_b32 v33, s57, 3
+; VI-NEXT:    s_lshr_b64 s[56:57], s[44:45], 24
 ; VI-NEXT:    v_writelane_b32 v33, s56, 0
-; VI-NEXT:    s_lshr_b32 s64, s29, 8
-; VI-NEXT:    s_lshr_b32 s50, s28, 8
-; VI-NEXT:    s_lshr_b32 s86, s27, 8
-; VI-NEXT:    s_lshr_b32 s51, s26, 8
-; VI-NEXT:    s_lshr_b32 s66, s25, 8
-; VI-NEXT:    s_lshr_b32 s54, s24, 8
-; VI-NEXT:    s_lshr_b32 s71, s23, 24
-; VI-NEXT:    s_lshr_b32 s70, s23, 16
-; VI-NEXT:    s_lshr_b32 s52, s23, 8
-; VI-NEXT:    s_lshr_b32 s55, s22, 8
-; VI-NEXT:    s_lshr_b32 s68, s21, 24
-; VI-NEXT:    s_lshr_b32 s65, s21, 8
-; VI-NEXT:    s_lshr_b32 s84, s20, 16
-; VI-NEXT:    s_lshr_b32 s69, s20, 8
-; VI-NEXT:    s_lshr_b32 s80, s19, 24
-; VI-NEXT:    s_lshr_b32 s87, s19, 16
-; VI-NEXT:    s_lshr_b32 s46, s19, 8
-; VI-NEXT:    s_lshr_b32 s81, s18, 16
-; VI-NEXT:    s_lshr_b32 s47, s18, 8
-; VI-NEXT:    s_lshr_b32 s83, s17, 24
-; VI-NEXT:    s_lshr_b32 s85, s17, 16
-; VI-NEXT:    s_lshr_b32 s67, s17, 8
-; VI-NEXT:    s_lshr_b32 s53, s16, 16
-; VI-NEXT:    s_lshr_b32 s82, s16, 8
+; VI-NEXT:    s_lshr_b32 s59, s5, 16
+; VI-NEXT:    s_lshr_b32 s70, s5, 8
+; VI-NEXT:    s_lshr_b32 s68, s4, 8
+; VI-NEXT:    s_lshr_b32 s71, s7, 16
+; VI-NEXT:    s_lshr_b32 s81, s7, 8
+; VI-NEXT:    s_lshr_b32 s58, s6, 8
+; VI-NEXT:    s_lshr_b32 s80, s9, 24
+; VI-NEXT:    s_lshr_b32 s84, s9, 16
+; VI-NEXT:    s_lshr_b32 s53, s9, 8
+; VI-NEXT:    s_lshr_b32 s83, s8, 16
+; VI-NEXT:    s_lshr_b32 s61, s8, 8
+; VI-NEXT:    s_lshr_b32 s60, s11, 24
+; VI-NEXT:    s_lshr_b32 s64, s11, 16
+; VI-NEXT:    s_lshr_b32 s63, s11, 8
+; VI-NEXT:    s_lshr_b32 s62, s10, 16
+; VI-NEXT:    s_lshr_b32 s50, s10, 8
+; VI-NEXT:    s_lshr_b32 s73, s13, 24
+; VI-NEXT:    s_lshr_b32 s72, s13, 16
+; VI-NEXT:    s_lshr_b32 s85, s13, 8
+; VI-NEXT:    s_lshr_b32 s51, s12, 16
+; VI-NEXT:    s_lshr_b32 s75, s12, 8
+; VI-NEXT:    s_lshr_b32 s74, s15, 24
+; VI-NEXT:    s_lshr_b32 s66, s15, 16
+; VI-NEXT:    s_lshr_b32 s77, s15, 8
+; VI-NEXT:    s_lshr_b32 s76, s14, 16
+; VI-NEXT:    s_lshr_b32 s54, s14, 8
+; VI-NEXT:    s_lshr_b32 s52, s41, 24
+; VI-NEXT:    s_lshr_b32 s55, s41, 16
+; VI-NEXT:    s_lshr_b32 s65, s41, 8
+; VI-NEXT:    s_lshr_b32 s69, s40, 16
+; VI-NEXT:    s_lshr_b32 s46, s40, 8
+; VI-NEXT:    s_lshr_b32 s78, s43, 24
+; VI-NEXT:    s_lshr_b32 s67, s43, 16
+; VI-NEXT:    s_lshr_b32 s79, s43, 8
+; VI-NEXT:    s_lshr_b32 s82, s42, 16
+; VI-NEXT:    s_lshr_b32 s47, s42, 8
+; VI-NEXT:    s_lshr_b32 s86, s45, 24
+; VI-NEXT:    s_lshr_b32 s87, s45, 16
 ; VI-NEXT:    v_writelane_b32 v33, s57, 1
-; VI-NEXT:    s_lshr_b64 s[56:57], s[6:7], 24
-; VI-NEXT:    s_lshr_b64 s[58:59], s[8:9], 24
-; VI-NEXT:    s_lshr_b64 s[60:61], s[10:11], 24
-; VI-NEXT:    s_lshr_b64 s[62:63], s[12:13], 24
-; VI-NEXT:    s_lshr_b64 s[72:73], s[14:15], 24
-; VI-NEXT:    s_lshr_b64 s[74:75], s[40:41], 24
-; VI-NEXT:    s_lshr_b64 s[76:77], s[42:43], 24
-; VI-NEXT:    s_lshr_b64 s[78:79], s[44:45], 24
 ; VI-NEXT:    s_lshr_b64 s[88:89], s[28:29], 24
 ; VI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 24
-; VI-NEXT:    s_lshr_b64 s[30:31], s[24:25], 24
-; VI-NEXT:    s_lshr_b64 s[34:35], s[22:23], 24
-; VI-NEXT:    s_lshr_b64 s[36:37], s[20:21], 24
-; VI-NEXT:    s_lshr_b64 s[38:39], s[18:19], 24
-; VI-NEXT:    s_lshr_b64 s[48:49], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b64 vcc, s[24:25], 24
+; VI-NEXT:    s_lshr_b64 s[30:31], s[22:23], 24
+; VI-NEXT:    s_lshr_b64 s[34:35], s[20:21], 24
+; VI-NEXT:    s_lshr_b64 s[36:37], s[18:19], 24
+; VI-NEXT:    s_lshr_b64 s[38:39], s[16:17], 24
+; VI-NEXT:    s_mov_b64 s[48:49], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; kill: killed $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; kill: killed $sgpr57
+; VI-NEXT:    s_mov_b64 s[48:49], -1
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; kill: killed $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr87
+; VI-NEXT:    ; implicit-def: $sgpr86
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr82
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr67
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr69
+; VI-NEXT:    ; implicit-def: $sgpr65
+; VI-NEXT:    ; implicit-def: $sgpr55
+; VI-NEXT:    ; implicit-def: $sgpr52
+; VI-NEXT:    ; implicit-def: $sgpr54
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr66
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr51
+; VI-NEXT:    ; implicit-def: $sgpr85
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr50
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr64
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr83
+; VI-NEXT:    ; implicit-def: $sgpr53
+; VI-NEXT:    ; implicit-def: $sgpr84
+; VI-NEXT:    ; implicit-def: $sgpr80
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr81
+; VI-NEXT:    ; implicit-def: $sgpr71
+; VI-NEXT:    ; implicit-def: $sgpr68
+; VI-NEXT:    ; implicit-def: $sgpr70
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr38
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; kill: killed $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 0
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 1
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 2
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 3
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 4
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 5
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 6
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 7
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 8
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 9
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 10
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 11
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 12
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 13
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 14
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 15
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 16
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 17
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[48:49], s[48:49], exec
+; VI-NEXT:    s_cselect_b32 s57, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s57, 1
+; VI-NEXT:    v_readlane_b32 s48, v33, 18
+; VI-NEXT:    s_mov_b32 s49, s59
+; VI-NEXT:    v_readlane_b32 s56, v33, 19
+; VI-NEXT:    s_mov_b32 s57, s68
+; VI-NEXT:    v_readlane_b32 s68, v33, 20
+; VI-NEXT:    v_readlane_b32 s59, v33, 21
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
+; VI-NEXT:    s_add_i32 s45, s45, 3
+; VI-NEXT:    s_add_i32 s44, s44, 3
+; VI-NEXT:    s_lshr_b32 s88, s45, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 22
+; VI-NEXT:    s_lshr_b32 s88, s44, 16
+; VI-NEXT:    s_add_i32 s29, s29, 3
+; VI-NEXT:    v_writelane_b32 v33, s88, 23
+; VI-NEXT:    s_lshr_b32 s88, s44, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 24
+; VI-NEXT:    s_lshr_b32 s88, s29, 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 25
+; VI-NEXT:    s_lshr_b32 s88, s29, 16
+; VI-NEXT:    s_add_i32 s28, s28, 3
+; VI-NEXT:    v_writelane_b32 v33, s88, 26
+; VI-NEXT:    s_lshr_b32 s88, s29, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 27
+; VI-NEXT:    s_lshr_b32 s88, s28, 16
+; VI-NEXT:    s_add_i32 s27, s27, 3
+; VI-NEXT:    v_writelane_b32 v33, s88, 28
+; VI-NEXT:    s_lshr_b32 s88, s28, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 29
+; VI-NEXT:    s_lshr_b32 s88, s27, 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 30
+; VI-NEXT:    s_lshr_b32 s88, s27, 16
+; VI-NEXT:    s_add_i32 s26, s26, 3
+; VI-NEXT:    v_writelane_b32 v33, s88, 31
+; VI-NEXT:    s_lshr_b32 s88, s27, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 32
+; VI-NEXT:    s_lshr_b32 s88, s26, 16
+; VI-NEXT:    s_add_i32 s25, s25, 3
+; VI-NEXT:    v_writelane_b32 v33, s88, 33
+; VI-NEXT:    s_lshr_b32 s88, s26, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 34
+; VI-NEXT:    s_lshr_b32 s88, s25, 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 35
+; VI-NEXT:    s_lshr_b32 s88, s25, 16
+; VI-NEXT:    s_add_i32 s24, s24, 3
+; VI-NEXT:    v_writelane_b32 v33, s88, 36
+; VI-NEXT:    s_lshr_b32 s88, s25, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 37
+; VI-NEXT:    s_lshr_b32 s88, s24, 16
+; VI-NEXT:    s_add_i32 s23, s23, 3
+; VI-NEXT:    v_writelane_b32 v33, s88, 38
+; VI-NEXT:    s_lshr_b32 s88, s24, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 39
+; VI-NEXT:    s_lshr_b32 s88, s23, 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 40
+; VI-NEXT:    s_lshr_b32 s88, s23, 16
+; VI-NEXT:    s_add_i32 s22, s22, 3
+; VI-NEXT:    v_writelane_b32 v33, s88, 41
+; VI-NEXT:    s_lshr_b32 s88, s23, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 42
+; VI-NEXT:    s_lshr_b32 s88, s22, 16
+; VI-NEXT:    s_add_i32 s21, s21, 3
+; VI-NEXT:    v_writelane_b32 v33, s88, 43
+; VI-NEXT:    s_lshr_b32 s88, s22, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 44
+; VI-NEXT:    s_lshr_b32 s88, s21, 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 45
+; VI-NEXT:    s_lshr_b32 s88, s21, 16
+; VI-NEXT:    s_add_i32 s20, s20, 3
+; VI-NEXT:    v_writelane_b32 v33, s88, 46
+; VI-NEXT:    s_lshr_b32 s88, s21, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 47
+; VI-NEXT:    s_lshr_b32 s88, s20, 16
+; VI-NEXT:    s_add_i32 s19, s19, 3
+; VI-NEXT:    v_writelane_b32 v33, s88, 48
+; VI-NEXT:    s_lshr_b32 s88, s20, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 49
+; VI-NEXT:    s_lshr_b32 s88, s19, 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 50
+; VI-NEXT:    s_lshr_b32 s88, s19, 16
+; VI-NEXT:    s_add_i32 s18, s18, 3
+; VI-NEXT:    v_writelane_b32 v33, s88, 51
+; VI-NEXT:    s_lshr_b32 s88, s19, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 52
+; VI-NEXT:    s_lshr_b32 s88, s18, 16
+; VI-NEXT:    s_add_i32 s17, s17, 3
+; VI-NEXT:    v_writelane_b32 v33, s88, 53
+; VI-NEXT:    s_lshr_b32 s88, s18, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 54
+; VI-NEXT:    s_lshr_b32 s88, s17, 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 55
+; VI-NEXT:    s_lshr_b32 s88, s17, 16
+; VI-NEXT:    s_add_i32 s16, s16, 3
+; VI-NEXT:    v_writelane_b32 v33, s88, 56
+; VI-NEXT:    s_lshr_b32 s88, s17, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 57
+; VI-NEXT:    s_lshr_b32 s88, s16, 16
 ; VI-NEXT:    s_add_i32 s5, s5, 3
-; VI-NEXT:    s_lshr_b32 s46, s5, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 2
-; VI-NEXT:    s_lshr_b32 s46, s5, 16
 ; VI-NEXT:    s_add_i32 s4, s4, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 3
-; VI-NEXT:    s_lshr_b32 s46, s5, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 4
-; VI-NEXT:    s_lshr_b32 s46, s4, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 58
+; VI-NEXT:    s_lshr_b32 s88, s16, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 59
+; VI-NEXT:    s_lshr_b64 s[88:89], s[4:5], 24
 ; VI-NEXT:    s_add_i32 s7, s7, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 5
-; VI-NEXT:    s_lshr_b32 s46, s4, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 6
-; VI-NEXT:    s_lshr_b32 s46, s7, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 7
-; VI-NEXT:    s_lshr_b32 s46, s7, 16
 ; VI-NEXT:    s_add_i32 s6, s6, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 8
-; VI-NEXT:    s_lshr_b32 s46, s7, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 9
-; VI-NEXT:    s_lshr_b32 s46, s6, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 16
+; VI-NEXT:    v_writelane_b32 v33, s89, 17
+; VI-NEXT:    s_lshr_b64 s[88:89], s[6:7], 24
 ; VI-NEXT:    s_add_i32 s9, s9, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 10
-; VI-NEXT:    s_lshr_b32 s46, s6, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 11
-; VI-NEXT:    s_lshr_b32 s46, s9, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 12
-; VI-NEXT:    s_lshr_b32 s46, s9, 16
 ; VI-NEXT:    s_add_i32 s8, s8, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 13
-; VI-NEXT:    s_lshr_b32 s46, s9, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 14
-; VI-NEXT:    s_lshr_b32 s46, s8, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 14
+; VI-NEXT:    v_writelane_b32 v33, s89, 15
+; VI-NEXT:    s_lshr_b64 s[88:89], s[8:9], 24
 ; VI-NEXT:    s_add_i32 s11, s11, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 15
-; VI-NEXT:    s_lshr_b32 s46, s8, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 16
-; VI-NEXT:    s_lshr_b32 s46, s11, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 17
-; VI-NEXT:    s_lshr_b32 s46, s11, 16
 ; VI-NEXT:    s_add_i32 s10, s10, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 18
-; VI-NEXT:    s_lshr_b32 s46, s11, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 19
-; VI-NEXT:    s_lshr_b32 s46, s10, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 12
+; VI-NEXT:    v_writelane_b32 v33, s89, 13
+; VI-NEXT:    s_lshr_b64 s[88:89], s[10:11], 24
 ; VI-NEXT:    s_add_i32 s13, s13, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 20
-; VI-NEXT:    s_lshr_b32 s46, s10, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 21
-; VI-NEXT:    s_lshr_b32 s46, s13, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 22
-; VI-NEXT:    s_lshr_b32 s46, s13, 16
 ; VI-NEXT:    s_add_i32 s12, s12, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 23
-; VI-NEXT:    s_lshr_b32 s46, s13, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 24
-; VI-NEXT:    s_lshr_b32 s46, s12, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 10
+; VI-NEXT:    v_writelane_b32 v33, s89, 11
+; VI-NEXT:    s_lshr_b64 s[88:89], s[12:13], 24
 ; VI-NEXT:    s_add_i32 s15, s15, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 25
-; VI-NEXT:    s_lshr_b32 s46, s12, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 26
-; VI-NEXT:    s_lshr_b32 s46, s15, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 27
-; VI-NEXT:    s_lshr_b32 s46, s15, 16
 ; VI-NEXT:    s_add_i32 s14, s14, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 28
-; VI-NEXT:    s_lshr_b32 s46, s15, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 29
-; VI-NEXT:    s_lshr_b32 s46, s14, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 8
+; VI-NEXT:    v_writelane_b32 v33, s89, 9
+; VI-NEXT:    s_lshr_b64 s[88:89], s[14:15], 24
 ; VI-NEXT:    s_add_i32 s41, s41, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 30
-; VI-NEXT:    s_lshr_b32 s46, s14, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 31
-; VI-NEXT:    s_lshr_b32 s46, s41, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 32
-; VI-NEXT:    s_lshr_b32 s46, s41, 16
 ; VI-NEXT:    s_add_i32 s40, s40, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 33
-; VI-NEXT:    s_lshr_b32 s46, s41, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 34
-; VI-NEXT:    s_lshr_b32 s46, s40, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 6
+; VI-NEXT:    v_writelane_b32 v33, s89, 7
+; VI-NEXT:    s_lshr_b64 s[88:89], s[40:41], 24
 ; VI-NEXT:    s_add_i32 s43, s43, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 35
-; VI-NEXT:    s_lshr_b32 s46, s40, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 36
-; VI-NEXT:    s_lshr_b32 s46, s43, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 37
-; VI-NEXT:    s_lshr_b32 s46, s43, 16
 ; VI-NEXT:    s_add_i32 s42, s42, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 38
-; VI-NEXT:    s_lshr_b32 s46, s43, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 39
-; VI-NEXT:    s_lshr_b32 s46, s42, 16
-; VI-NEXT:    s_add_i32 s45, s45, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 40
-; VI-NEXT:    s_lshr_b32 s46, s42, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 41
-; VI-NEXT:    s_lshr_b32 s46, s45, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 42
-; VI-NEXT:    s_lshr_b32 s46, s45, 16
-; VI-NEXT:    s_add_i32 s44, s44, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 43
-; VI-NEXT:    s_lshr_b32 s46, s45, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 44
-; VI-NEXT:    s_lshr_b32 s46, s44, 16
-; VI-NEXT:    s_add_i32 s29, s29, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 45
-; VI-NEXT:    s_lshr_b32 s46, s44, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 46
-; VI-NEXT:    s_lshr_b32 s46, s29, 24
-; VI-NEXT:    s_add_i32 s28, s28, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 47
-; VI-NEXT:    s_lshr_b32 s46, s29, 16
-; VI-NEXT:    s_add_i32 s27, s27, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 48
-; VI-NEXT:    s_lshr_b32 s46, s28, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 49
-; VI-NEXT:    s_lshr_b32 s46, s27, 24
-; VI-NEXT:    s_add_i32 s26, s26, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 50
-; VI-NEXT:    s_lshr_b32 s46, s27, 16
-; VI-NEXT:    s_add_i32 s25, s25, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 51
-; VI-NEXT:    s_lshr_b32 s46, s26, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 52
-; VI-NEXT:    s_lshr_b32 s46, s25, 24
-; VI-NEXT:    s_add_i32 s24, s24, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 53
-; VI-NEXT:    s_lshr_b32 s46, s25, 16
-; VI-NEXT:    s_add_i32 s22, s22, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 54
-; VI-NEXT:    s_lshr_b32 s46, s24, 16
-; VI-NEXT:    s_add_i32 s21, s21, 3
-; VI-NEXT:    v_writelane_b32 v33, s46, 55
-; VI-NEXT:    s_lshr_b32 s46, s22, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 56
-; VI-NEXT:    s_lshr_b32 s46, s21, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 57
-; VI-NEXT:    s_lshr_b64 s[56:57], s[4:5], 24
-; VI-NEXT:    s_add_i32 s17, s17, 3
-; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:    s_add_i32 s19, s19, 3
-; VI-NEXT:    s_add_i32 s18, s18, 3
-; VI-NEXT:    s_add_i32 s20, s20, 3
-; VI-NEXT:    s_add_i32 s23, s23, 3
-; VI-NEXT:    v_writelane_b32 v33, s56, 0
-; VI-NEXT:    s_lshr_b32 s64, s29, 8
-; VI-NEXT:    s_lshr_b32 s50, s28, 8
-; VI-NEXT:    s_lshr_b32 s86, s27, 8
-; VI-NEXT:    s_lshr_b32 s51, s26, 8
-; VI-NEXT:    s_lshr_b32 s66, s25, 8
-; VI-NEXT:    s_lshr_b32 s54, s24, 8
-; VI-NEXT:    s_lshr_b32 s71, s23, 24
-; VI-NEXT:    s_lshr_b32 s70, s23, 16
-; VI-NEXT:    s_lshr_b32 s52, s23, 8
-; VI-NEXT:    s_lshr_b32 s55, s22, 8
-; VI-NEXT:    s_lshr_b32 s68, s21, 24
-; VI-NEXT:    s_lshr_b32 s65, s21, 8
-; VI-NEXT:    s_lshr_b32 s84, s20, 16
-; VI-NEXT:    s_lshr_b32 s69, s20, 8
-; VI-NEXT:    s_lshr_b32 s80, s19, 24
-; VI-NEXT:    s_lshr_b32 s87, s19, 16
-; VI-NEXT:    s_lshr_b32 s46, s19, 8
-; VI-NEXT:    s_lshr_b32 s81, s18, 16
-; VI-NEXT:    s_lshr_b32 s47, s18, 8
-; VI-NEXT:    s_lshr_b32 s83, s17, 24
-; VI-NEXT:    s_lshr_b32 s85, s17, 16
-; VI-NEXT:    s_lshr_b32 s67, s17, 8
-; VI-NEXT:    s_lshr_b32 s53, s16, 16
-; VI-NEXT:    s_lshr_b32 s82, s16, 8
-; VI-NEXT:    v_writelane_b32 v33, s57, 1
-; VI-NEXT:    s_lshr_b64 s[56:57], s[6:7], 24
-; VI-NEXT:    s_lshr_b64 s[58:59], s[8:9], 24
-; VI-NEXT:    s_lshr_b64 s[60:61], s[10:11], 24
-; VI-NEXT:    s_lshr_b64 s[62:63], s[12:13], 24
-; VI-NEXT:    s_lshr_b64 s[72:73], s[14:15], 24
-; VI-NEXT:    s_lshr_b64 s[74:75], s[40:41], 24
-; VI-NEXT:    s_lshr_b64 s[76:77], s[42:43], 24
-; VI-NEXT:    s_lshr_b64 s[78:79], s[44:45], 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 4
+; VI-NEXT:    v_writelane_b32 v33, s89, 5
+; VI-NEXT:    s_lshr_b64 s[88:89], s[42:43], 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 2
+; VI-NEXT:    v_writelane_b32 v33, s89, 3
+; VI-NEXT:    s_lshr_b64 s[88:89], s[44:45], 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 0
+; VI-NEXT:    s_lshr_b32 s48, s5, 24
+; VI-NEXT:    s_lshr_b32 s49, s5, 16
+; VI-NEXT:    s_lshr_b32 s70, s5, 8
+; VI-NEXT:    s_lshr_b32 s56, s4, 16
+; VI-NEXT:    s_lshr_b32 s57, s4, 8
+; VI-NEXT:    s_lshr_b32 s68, s7, 24
+; VI-NEXT:    s_lshr_b32 s71, s7, 16
+; VI-NEXT:    s_lshr_b32 s81, s7, 8
+; VI-NEXT:    s_lshr_b32 s59, s6, 16
+; VI-NEXT:    s_lshr_b32 s58, s6, 8
+; VI-NEXT:    s_lshr_b32 s80, s9, 24
+; VI-NEXT:    s_lshr_b32 s84, s9, 16
+; VI-NEXT:    s_lshr_b32 s53, s9, 8
+; VI-NEXT:    s_lshr_b32 s83, s8, 16
+; VI-NEXT:    s_lshr_b32 s61, s8, 8
+; VI-NEXT:    s_lshr_b32 s60, s11, 24
+; VI-NEXT:    s_lshr_b32 s64, s11, 16
+; VI-NEXT:    s_lshr_b32 s63, s11, 8
+; VI-NEXT:    s_lshr_b32 s62, s10, 16
+; VI-NEXT:    s_lshr_b32 s50, s10, 8
+; VI-NEXT:    s_lshr_b32 s73, s13, 24
+; VI-NEXT:    s_lshr_b32 s72, s13, 16
+; VI-NEXT:    s_lshr_b32 s85, s13, 8
+; VI-NEXT:    s_lshr_b32 s51, s12, 16
+; VI-NEXT:    s_lshr_b32 s75, s12, 8
+; VI-NEXT:    s_lshr_b32 s74, s15, 24
+; VI-NEXT:    s_lshr_b32 s66, s15, 16
+; VI-NEXT:    s_lshr_b32 s77, s15, 8
+; VI-NEXT:    s_lshr_b32 s76, s14, 16
+; VI-NEXT:    s_lshr_b32 s54, s14, 8
+; VI-NEXT:    s_lshr_b32 s52, s41, 24
+; VI-NEXT:    s_lshr_b32 s55, s41, 16
+; VI-NEXT:    s_lshr_b32 s65, s41, 8
+; VI-NEXT:    s_lshr_b32 s69, s40, 16
+; VI-NEXT:    s_lshr_b32 s46, s40, 8
+; VI-NEXT:    s_lshr_b32 s78, s43, 24
+; VI-NEXT:    s_lshr_b32 s67, s43, 16
+; VI-NEXT:    s_lshr_b32 s79, s43, 8
+; VI-NEXT:    s_lshr_b32 s82, s42, 16
+; VI-NEXT:    s_lshr_b32 s47, s42, 8
+; VI-NEXT:    s_lshr_b32 s86, s45, 24
+; VI-NEXT:    s_lshr_b32 s87, s45, 16
+; VI-NEXT:    v_writelane_b32 v33, s89, 1
 ; VI-NEXT:    s_lshr_b64 s[88:89], s[28:29], 24
 ; VI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 24
-; VI-NEXT:    s_lshr_b64 s[30:31], s[24:25], 24
-; VI-NEXT:    s_lshr_b64 s[34:35], s[22:23], 24
-; VI-NEXT:    s_lshr_b64 s[36:37], s[20:21], 24
-; VI-NEXT:    s_lshr_b64 s[38:39], s[18:19], 24
-; VI-NEXT:    s_lshr_b64 s[48:49], s[16:17], 24
-; VI-NEXT:  .LBB13_3: ; %end
-; VI-NEXT:    v_mov_b32_e32 v9, s48
+; VI-NEXT:    s_lshr_b64 vcc, s[24:25], 24
+; VI-NEXT:    s_lshr_b64 s[30:31], s[22:23], 24
+; VI-NEXT:    s_lshr_b64 s[34:35], s[20:21], 24
+; VI-NEXT:    s_lshr_b64 s[36:37], s[18:19], 24
+; VI-NEXT:    s_lshr_b64 s[38:39], s[16:17], 24
+; VI-NEXT:  .LBB13_5: ; %end
+; VI-NEXT:    v_readlane_b32 s89, v33, 59
+; VI-NEXT:    v_mov_b32_e32 v2, s89
+; VI-NEXT:    v_readlane_b32 s89, v33, 57
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
-; VI-NEXT:    v_mov_b32_e32 v2, s82
-; VI-NEXT:    v_perm_b32 v9, s53, v9, v1
+; VI-NEXT:    v_mov_b32_e32 v4, s89
 ; VI-NEXT:    v_perm_b32 v3, s16, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v24, s83
+; VI-NEXT:    v_readlane_b32 s16, v33, 54
+; VI-NEXT:    v_perm_b32 v2, s17, v4, v1
+; VI-NEXT:    v_mov_b32_e32 v4, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 52
+; VI-NEXT:    v_mov_b32_e32 v6, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 49
+; VI-NEXT:    v_perm_b32 v5, s18, v4, v1
+; VI-NEXT:    v_perm_b32 v4, s19, v6, v1
+; VI-NEXT:    v_mov_b32_e32 v6, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 47
+; VI-NEXT:    v_mov_b32_e32 v8, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 44
+; VI-NEXT:    v_perm_b32 v7, s20, v6, v1
+; VI-NEXT:    v_perm_b32 v6, s21, v8, v1
+; VI-NEXT:    v_mov_b32_e32 v8, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 42
+; VI-NEXT:    v_mov_b32_e32 v11, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 39
+; VI-NEXT:    v_perm_b32 v10, s22, v8, v1
+; VI-NEXT:    v_perm_b32 v8, s23, v11, v1
+; VI-NEXT:    v_mov_b32_e32 v11, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 37
+; VI-NEXT:    v_mov_b32_e32 v14, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 34
+; VI-NEXT:    v_perm_b32 v12, s24, v11, v1
+; VI-NEXT:    v_perm_b32 v11, s25, v14, v1
+; VI-NEXT:    v_mov_b32_e32 v14, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 32
+; VI-NEXT:    v_mov_b32_e32 v17, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 29
+; VI-NEXT:    v_perm_b32 v15, s26, v14, v1
+; VI-NEXT:    v_perm_b32 v14, s27, v17, v1
+; VI-NEXT:    v_mov_b32_e32 v17, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 27
+; VI-NEXT:    v_mov_b32_e32 v23, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 0
+; VI-NEXT:    v_mov_b32_e32 v9, s38
+; VI-NEXT:    v_perm_b32 v18, s28, v17, v1
+; VI-NEXT:    v_perm_b32 v17, s29, v23, v1
+; VI-NEXT:    v_mov_b32_e32 v23, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 58
+; VI-NEXT:    v_perm_b32 v9, s16, v9, v1
+; VI-NEXT:    v_readlane_b32 s16, v33, 55
+; VI-NEXT:    v_mov_b32_e32 v24, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 56
 ; VI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
-; VI-NEXT:    v_mov_b32_e32 v4, s67
-; VI-NEXT:    v_perm_b32 v24, s85, v24, v1
+; VI-NEXT:    v_perm_b32 v24, s16, v24, v1
 ; VI-NEXT:    v_or_b32_e32 v3, v3, v9
-; VI-NEXT:    v_perm_b32 v2, s17, v4, v1
-; VI-NEXT:    v_mov_b32_e32 v13, s38
+; VI-NEXT:    v_mov_b32_e32 v13, s36
+; VI-NEXT:    v_readlane_b32 s16, v33, 53
 ; VI-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v24
-; VI-NEXT:    v_mov_b32_e32 v4, s47
-; VI-NEXT:    v_perm_b32 v13, s81, v13, v1
+; VI-NEXT:    v_mov_b32_e32 v20, vcc_lo
+; VI-NEXT:    v_perm_b32 v13, s16, v13, v1
+; VI-NEXT:    v_readlane_b32 s16, v33, 50
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 4, v0
-; VI-NEXT:    v_perm_b32 v5, s18, v4, v1
-; VI-NEXT:    v_mov_b32_e32 v25, s80
+; VI-NEXT:    v_mov_b32_e32 v25, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 51
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v13
-; VI-NEXT:    v_mov_b32_e32 v6, s46
-; VI-NEXT:    v_perm_b32 v25, s87, v25, v1
+; VI-NEXT:    v_perm_b32 v25, s16, v25, v1
 ; VI-NEXT:    v_or_b32_e32 v2, v5, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 8, v0
-; VI-NEXT:    v_perm_b32 v4, s19, v6, v1
-; VI-NEXT:    v_mov_b32_e32 v17, s36
+; VI-NEXT:    v_mov_b32_e32 v16, s34
+; VI-NEXT:    v_readlane_b32 s16, v33, 48
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v25
-; VI-NEXT:    v_mov_b32_e32 v6, s69
-; VI-NEXT:    v_perm_b32 v17, s84, v17, v1
+; VI-NEXT:    v_perm_b32 v16, s16, v16, v1
+; VI-NEXT:    v_readlane_b32 s16, v33, 45
 ; VI-NEXT:    v_or_b32_e32 v2, v4, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 12, v0
-; VI-NEXT:    v_perm_b32 v7, s20, v6, v1
-; VI-NEXT:    v_mov_b32_e32 v26, s68
-; VI-NEXT:    v_readlane_b32 s16, v33, 57
+; VI-NEXT:    v_mov_b32_e32 v26, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 46
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v17
-; VI-NEXT:    v_mov_b32_e32 v8, s65
+; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v16
 ; VI-NEXT:    v_perm_b32 v26, s16, v26, v1
 ; VI-NEXT:    v_or_b32_e32 v2, v7, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 16, v0
-; VI-NEXT:    v_perm_b32 v6, s21, v8, v1
-; VI-NEXT:    v_mov_b32_e32 v19, s34
-; VI-NEXT:    v_readlane_b32 s16, v33, 56
+; VI-NEXT:    v_mov_b32_e32 v19, s30
+; VI-NEXT:    v_readlane_b32 s16, v33, 43
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v26
-; VI-NEXT:    v_mov_b32_e32 v8, s55
 ; VI-NEXT:    v_perm_b32 v19, s16, v19, v1
+; VI-NEXT:    v_readlane_b32 s16, v33, 40
 ; VI-NEXT:    v_or_b32_e32 v2, v6, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 20, v0
-; VI-NEXT:    v_perm_b32 v10, s22, v8, v1
-; VI-NEXT:    v_mov_b32_e32 v27, s71
+; VI-NEXT:    v_mov_b32_e32 v27, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 41
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v19
-; VI-NEXT:    v_mov_b32_e32 v11, s52
-; VI-NEXT:    v_perm_b32 v27, s70, v27, v1
+; VI-NEXT:    v_perm_b32 v27, s16, v27, v1
 ; VI-NEXT:    v_or_b32_e32 v2, v10, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 24, v0
-; VI-NEXT:    v_perm_b32 v8, s23, v11, v1
-; VI-NEXT:    v_mov_b32_e32 v20, s30
-; VI-NEXT:    v_readlane_b32 s16, v33, 55
+; VI-NEXT:    v_readlane_b32 s16, v33, 38
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v27
-; VI-NEXT:    v_mov_b32_e32 v11, s54
 ; VI-NEXT:    v_perm_b32 v20, s16, v20, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 53
+; VI-NEXT:    v_readlane_b32 s16, v33, 35
 ; VI-NEXT:    v_or_b32_e32 v2, v8, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 28, v0
-; VI-NEXT:    v_perm_b32 v12, s24, v11, v1
 ; VI-NEXT:    v_mov_b32_e32 v28, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 54
+; VI-NEXT:    v_readlane_b32 s16, v33, 36
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v20
-; VI-NEXT:    v_mov_b32_e32 v14, s66
 ; VI-NEXT:    v_perm_b32 v28, s16, v28, v1
 ; VI-NEXT:    v_or_b32_e32 v2, v12, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 32, v0
-; VI-NEXT:    v_perm_b32 v11, s25, v14, v1
 ; VI-NEXT:    v_mov_b32_e32 v21, s90
-; VI-NEXT:    v_readlane_b32 s16, v33, 52
+; VI-NEXT:    v_readlane_b32 s16, v33, 33
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v28
-; VI-NEXT:    v_mov_b32_e32 v14, s51
 ; VI-NEXT:    v_perm_b32 v21, s16, v21, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 50
+; VI-NEXT:    v_readlane_b32 s16, v33, 30
 ; VI-NEXT:    v_or_b32_e32 v2, v11, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 36, v0
-; VI-NEXT:    v_perm_b32 v15, s26, v14, v1
 ; VI-NEXT:    v_mov_b32_e32 v29, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 51
+; VI-NEXT:    v_readlane_b32 s16, v33, 31
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v21
-; VI-NEXT:    v_mov_b32_e32 v16, s86
 ; VI-NEXT:    v_perm_b32 v29, s16, v29, v1
 ; VI-NEXT:    v_or_b32_e32 v2, v15, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 40, v0
-; VI-NEXT:    v_perm_b32 v14, s27, v16, v1
 ; VI-NEXT:    v_mov_b32_e32 v22, s88
-; VI-NEXT:    v_readlane_b32 s16, v33, 49
+; VI-NEXT:    v_readlane_b32 s16, v33, 28
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v29
-; VI-NEXT:    v_mov_b32_e32 v16, s50
 ; VI-NEXT:    v_perm_b32 v22, s16, v22, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 47
+; VI-NEXT:    v_readlane_b32 s16, v33, 25
 ; VI-NEXT:    v_or_b32_e32 v2, v14, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 44, v0
-; VI-NEXT:    v_perm_b32 v18, s28, v16, v1
 ; VI-NEXT:    v_mov_b32_e32 v30, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 48
+; VI-NEXT:    v_readlane_b32 s16, v33, 26
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v22
-; VI-NEXT:    v_mov_b32_e32 v23, s64
 ; VI-NEXT:    v_perm_b32 v30, s16, v30, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 46
+; VI-NEXT:    v_readlane_b32 s16, v33, 24
 ; VI-NEXT:    v_or_b32_e32 v2, v18, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 48, v0
-; VI-NEXT:    v_perm_b32 v16, s29, v23, v1
-; VI-NEXT:    v_mov_b32_e32 v23, s78
 ; VI-NEXT:    v_mov_b32_e32 v31, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 45
+; VI-NEXT:    v_readlane_b32 s16, v33, 23
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v30
 ; VI-NEXT:    v_perm_b32 v23, s16, v23, v1
-; VI-NEXT:    v_or_b32_e32 v2, v16, v2
+; VI-NEXT:    v_or_b32_e32 v2, v17, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 52, v0
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_perm_b32 v2, s44, v31, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v23
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 56, v0
-; VI-NEXT:    v_readlane_b32 s16, v33, 44
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
+; VI-NEXT:    v_readlane_b32 s16, v33, 22
+; VI-NEXT:    v_mov_b32_e32 v3, s86
 ; VI-NEXT:    v_mov_b32_e32 v2, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 42
-; VI-NEXT:    v_mov_b32_e32 v3, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 43
-; VI-NEXT:    v_perm_b32 v3, s16, v3, v1
+; VI-NEXT:    v_perm_b32 v3, s87, v3, v1
+; VI-NEXT:    v_readlane_b32 s17, v33, 1
 ; VI-NEXT:    v_perm_b32 v2, s45, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 60, v0
-; VI-NEXT:    v_readlane_b32 s16, v33, 41
+; VI-NEXT:    v_readlane_b32 s16, v33, 2
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s16
-; VI-NEXT:    v_mov_b32_e32 v3, s76
-; VI-NEXT:    v_readlane_b32 s16, v33, 40
-; VI-NEXT:    v_perm_b32 v3, s16, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s16
+; VI-NEXT:    v_mov_b32_e32 v2, s47
+; VI-NEXT:    v_perm_b32 v3, s82, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s42, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 64, v0
-; VI-NEXT:    v_readlane_b32 s16, v33, 39
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 37
-; VI-NEXT:    v_mov_b32_e32 v3, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 38
-; VI-NEXT:    v_perm_b32 v3, s16, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s78
+; VI-NEXT:    v_mov_b32_e32 v2, s79
+; VI-NEXT:    v_perm_b32 v3, s67, v3, v1
+; VI-NEXT:    v_readlane_b32 s17, v33, 3
 ; VI-NEXT:    v_perm_b32 v2, s43, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x44, v0
-; VI-NEXT:    v_readlane_b32 s16, v33, 36
+; VI-NEXT:    v_readlane_b32 s16, v33, 4
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s16
-; VI-NEXT:    v_mov_b32_e32 v3, s74
-; VI-NEXT:    v_readlane_b32 s16, v33, 35
-; VI-NEXT:    v_perm_b32 v3, s16, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s16
+; VI-NEXT:    v_mov_b32_e32 v2, s46
+; VI-NEXT:    v_perm_b32 v3, s69, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s40, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x48, v0
-; VI-NEXT:    v_readlane_b32 s16, v33, 34
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 32
-; VI-NEXT:    v_mov_b32_e32 v3, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 33
-; VI-NEXT:    v_perm_b32 v3, s16, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s52
+; VI-NEXT:    v_mov_b32_e32 v2, s65
+; VI-NEXT:    v_perm_b32 v3, s55, v3, v1
+; VI-NEXT:    v_readlane_b32 s17, v33, 5
 ; VI-NEXT:    v_perm_b32 v2, s41, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x4c, v0
-; VI-NEXT:    v_readlane_b32 s16, v33, 31
+; VI-NEXT:    v_readlane_b32 s16, v33, 6
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s16
+; VI-NEXT:    v_mov_b32_e32 v3, s16
+; VI-NEXT:    v_mov_b32_e32 v2, s54
+; VI-NEXT:    v_perm_b32 v3, s76, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s14, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s72
-; VI-NEXT:    v_readlane_b32 s14, v33, 30
-; VI-NEXT:    v_perm_b32 v3, s14, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x50, v0
-; VI-NEXT:    v_readlane_b32 s14, v33, 29
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s14
-; VI-NEXT:    v_readlane_b32 s14, v33, 27
-; VI-NEXT:    v_mov_b32_e32 v3, s14
-; VI-NEXT:    v_readlane_b32 s14, v33, 28
-; VI-NEXT:    v_perm_b32 v3, s14, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s74
+; VI-NEXT:    v_mov_b32_e32 v2, s77
+; VI-NEXT:    v_perm_b32 v3, s66, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s15, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x54, v0
-; VI-NEXT:    v_readlane_b32 s14, v33, 26
+; VI-NEXT:    v_readlane_b32 s14, v33, 8
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s14
+; VI-NEXT:    v_mov_b32_e32 v3, s14
+; VI-NEXT:    v_mov_b32_e32 v2, s75
+; VI-NEXT:    v_perm_b32 v3, s51, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s12, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s62
-; VI-NEXT:    v_readlane_b32 s12, v33, 25
-; VI-NEXT:    v_perm_b32 v3, s12, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x58, v0
-; VI-NEXT:    v_readlane_b32 s12, v33, 24
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s12
-; VI-NEXT:    v_readlane_b32 s12, v33, 22
-; VI-NEXT:    v_mov_b32_e32 v3, s12
-; VI-NEXT:    v_readlane_b32 s12, v33, 23
-; VI-NEXT:    v_perm_b32 v3, s12, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s73
+; VI-NEXT:    v_mov_b32_e32 v2, s85
+; VI-NEXT:    v_perm_b32 v3, s72, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s13, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x5c, v0
-; VI-NEXT:    v_readlane_b32 s12, v33, 21
+; VI-NEXT:    v_readlane_b32 s12, v33, 10
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s12
+; VI-NEXT:    v_mov_b32_e32 v3, s12
+; VI-NEXT:    v_mov_b32_e32 v2, s50
+; VI-NEXT:    v_perm_b32 v3, s62, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s10, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s60
-; VI-NEXT:    v_readlane_b32 s10, v33, 20
-; VI-NEXT:    v_perm_b32 v3, s10, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x60, v0
-; VI-NEXT:    v_readlane_b32 s10, v33, 19
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s10
-; VI-NEXT:    v_readlane_b32 s10, v33, 17
-; VI-NEXT:    v_mov_b32_e32 v3, s10
-; VI-NEXT:    v_readlane_b32 s10, v33, 18
-; VI-NEXT:    v_perm_b32 v3, s10, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s60
+; VI-NEXT:    v_mov_b32_e32 v2, s63
+; VI-NEXT:    v_perm_b32 v3, s64, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s11, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x64, v0
-; VI-NEXT:    v_readlane_b32 s10, v33, 16
+; VI-NEXT:    v_readlane_b32 s10, v33, 12
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s10
+; VI-NEXT:    v_mov_b32_e32 v3, s10
+; VI-NEXT:    v_mov_b32_e32 v2, s61
+; VI-NEXT:    v_perm_b32 v3, s83, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s8, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s58
-; VI-NEXT:    v_readlane_b32 s8, v33, 15
-; VI-NEXT:    v_perm_b32 v3, s8, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x68, v0
-; VI-NEXT:    v_readlane_b32 s8, v33, 14
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s8
-; VI-NEXT:    v_readlane_b32 s8, v33, 12
-; VI-NEXT:    v_mov_b32_e32 v3, s8
-; VI-NEXT:    v_readlane_b32 s8, v33, 13
-; VI-NEXT:    v_perm_b32 v3, s8, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s80
+; VI-NEXT:    v_mov_b32_e32 v2, s53
+; VI-NEXT:    v_perm_b32 v3, s84, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s9, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x6c, v0
-; VI-NEXT:    v_readlane_b32 s8, v33, 11
+; VI-NEXT:    v_readlane_b32 s8, v33, 14
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s8
+; VI-NEXT:    v_mov_b32_e32 v3, s8
+; VI-NEXT:    v_mov_b32_e32 v2, s58
+; VI-NEXT:    v_perm_b32 v3, s59, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s6, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s56
-; VI-NEXT:    v_readlane_b32 s6, v33, 10
-; VI-NEXT:    v_perm_b32 v3, s6, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x70, v0
-; VI-NEXT:    v_readlane_b32 s6, v33, 9
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s6
-; VI-NEXT:    v_readlane_b32 s6, v33, 7
-; VI-NEXT:    v_mov_b32_e32 v3, s6
-; VI-NEXT:    v_readlane_b32 s6, v33, 8
-; VI-NEXT:    v_perm_b32 v3, s6, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s68
+; VI-NEXT:    v_mov_b32_e32 v2, s81
+; VI-NEXT:    v_perm_b32 v3, s71, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s7, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x74, v0
-; VI-NEXT:    v_readlane_b32 s6, v33, 6
+; VI-NEXT:    v_readlane_b32 s6, v33, 16
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s6
-; VI-NEXT:    v_readlane_b32 s6, v33, 0
-; VI-NEXT:    v_perm_b32 v2, s4, v2, v1
 ; VI-NEXT:    v_mov_b32_e32 v3, s6
-; VI-NEXT:    v_readlane_b32 s4, v33, 5
-; VI-NEXT:    v_perm_b32 v3, s4, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v2, s57
+; VI-NEXT:    v_perm_b32 v3, s56, v3, v1
+; VI-NEXT:    v_perm_b32 v2, s4, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x78, v0
-; VI-NEXT:    v_readlane_b32 s4, v33, 4
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s4
-; VI-NEXT:    v_readlane_b32 s4, v33, 2
-; VI-NEXT:    v_mov_b32_e32 v3, s4
-; VI-NEXT:    v_readlane_b32 s4, v33, 3
+; VI-NEXT:    v_mov_b32_e32 v2, s70
+; VI-NEXT:    v_mov_b32_e32 v3, s48
 ; VI-NEXT:    v_perm_b32 v2, s5, v2, v1
-; VI-NEXT:    v_perm_b32 v1, s4, v3, v1
+; VI-NEXT:    v_perm_b32 v1, s49, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v1, v2, v1
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x7c, v0
 ; VI-NEXT:    v_readlane_b32 s30, v32, 30
-; VI-NEXT:    v_readlane_b32 s7, v33, 1
+; VI-NEXT:    v_readlane_b32 s17, v33, 7
+; VI-NEXT:    v_readlane_b32 s15, v33, 9
+; VI-NEXT:    v_readlane_b32 s13, v33, 11
+; VI-NEXT:    v_readlane_b32 s11, v33, 13
+; VI-NEXT:    v_readlane_b32 s9, v33, 15
+; VI-NEXT:    v_readlane_b32 s7, v33, 17
 ; VI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; VI-NEXT:    v_readlane_b32 s31, v32, 31
 ; VI-NEXT:    v_readlane_b32 s87, v32, 29
@@ -9826,162 +10103,6 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr71
-; VI-NEXT:    ; implicit-def: $sgpr70
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    v_writelane_b32 v33, s70, 0
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr82
-; VI-NEXT:    ; implicit-def: $sgpr53
-; VI-NEXT:    ; implicit-def: $sgpr67
-; VI-NEXT:    ; implicit-def: $sgpr85
-; VI-NEXT:    ; implicit-def: $sgpr83
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr81
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr87
-; VI-NEXT:    ; implicit-def: $sgpr80
-; VI-NEXT:    ; implicit-def: $sgpr69
-; VI-NEXT:    ; implicit-def: $sgpr84
-; VI-NEXT:    ; implicit-def: $sgpr65
-; VI-NEXT:    ; implicit-def: $sgpr68
-; VI-NEXT:    ; implicit-def: $sgpr55
-; VI-NEXT:    ; implicit-def: $sgpr52
-; VI-NEXT:    ; implicit-def: $sgpr54
-; VI-NEXT:    ; implicit-def: $sgpr66
-; VI-NEXT:    ; implicit-def: $sgpr51
-; VI-NEXT:    ; implicit-def: $sgpr86
-; VI-NEXT:    ; implicit-def: $sgpr50
-; VI-NEXT:    ; implicit-def: $sgpr64
-; VI-NEXT:    ; implicit-def: $sgpr48
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    v_writelane_b32 v33, s71, 1
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr70
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v32i32_to_v128i8_scalar:
 ; GFX9:       ; %bb.0:
@@ -10047,610 +10168,769 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_cmp_lg_u32 s44, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    ; implicit-def: $vgpr30 : SGPR spill to VGPR lane
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s46, s5, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 0
-; GFX9-NEXT:    s_lshr_b32 s46, s5, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 1
-; GFX9-NEXT:    s_lshr_b32 s46, s5, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 2
-; GFX9-NEXT:    s_lshr_b32 s46, s4, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 3
-; GFX9-NEXT:    s_lshr_b32 s46, s4, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 4
-; GFX9-NEXT:    s_lshr_b32 s46, s7, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 5
-; GFX9-NEXT:    s_lshr_b32 s46, s7, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 6
-; GFX9-NEXT:    s_lshr_b32 s46, s7, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 7
-; GFX9-NEXT:    s_lshr_b32 s46, s6, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 8
-; GFX9-NEXT:    s_lshr_b32 s46, s6, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 9
-; GFX9-NEXT:    s_lshr_b32 s46, s9, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 10
-; GFX9-NEXT:    s_lshr_b32 s46, s9, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 11
-; GFX9-NEXT:    s_lshr_b32 s46, s9, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 12
-; GFX9-NEXT:    s_lshr_b32 s46, s8, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 13
-; GFX9-NEXT:    s_lshr_b32 s46, s8, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 14
-; GFX9-NEXT:    s_lshr_b32 s46, s11, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 15
-; GFX9-NEXT:    s_lshr_b32 s46, s11, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 16
-; GFX9-NEXT:    s_lshr_b32 s46, s11, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 17
-; GFX9-NEXT:    s_lshr_b32 s46, s10, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 18
-; GFX9-NEXT:    s_lshr_b32 s46, s10, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 19
-; GFX9-NEXT:    s_lshr_b32 s46, s13, 24
 ; GFX9-NEXT:    v_writelane_b32 v30, s46, 20
-; GFX9-NEXT:    s_lshr_b32 s46, s13, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 21
-; GFX9-NEXT:    s_lshr_b32 s46, s13, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 22
-; GFX9-NEXT:    s_lshr_b32 s46, s12, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 23
-; GFX9-NEXT:    s_lshr_b32 s46, s12, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 24
-; GFX9-NEXT:    s_lshr_b32 s46, s15, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 25
-; GFX9-NEXT:    s_lshr_b32 s46, s15, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 26
-; GFX9-NEXT:    s_lshr_b32 s46, s15, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 27
-; GFX9-NEXT:    s_lshr_b32 s46, s14, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 28
-; GFX9-NEXT:    s_lshr_b32 s46, s14, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 29
-; GFX9-NEXT:    s_lshr_b32 s46, s41, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 30
-; GFX9-NEXT:    s_lshr_b32 s46, s41, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 31
-; GFX9-NEXT:    s_lshr_b32 s46, s41, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 32
-; GFX9-NEXT:    s_lshr_b32 s46, s40, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 33
-; GFX9-NEXT:    s_lshr_b32 s46, s40, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 34
-; GFX9-NEXT:    s_lshr_b32 s46, s43, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 35
-; GFX9-NEXT:    s_lshr_b32 s46, s43, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 36
-; GFX9-NEXT:    s_lshr_b32 s46, s43, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 37
-; GFX9-NEXT:    s_lshr_b32 s46, s42, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 38
-; GFX9-NEXT:    s_lshr_b32 s46, s42, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 39
-; GFX9-NEXT:    s_lshr_b32 s46, s45, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 40
-; GFX9-NEXT:    s_lshr_b32 s46, s45, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 41
-; GFX9-NEXT:    s_lshr_b32 s46, s45, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 42
-; GFX9-NEXT:    s_lshr_b32 s46, s44, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 43
-; GFX9-NEXT:    s_lshr_b32 s46, s44, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 44
-; GFX9-NEXT:    s_lshr_b32 s46, s29, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 45
-; GFX9-NEXT:    s_lshr_b32 s46, s29, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 46
-; GFX9-NEXT:    s_lshr_b32 s46, s29, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 47
-; GFX9-NEXT:    s_lshr_b32 s46, s28, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 48
-; GFX9-NEXT:    s_lshr_b32 s46, s27, 16
-; GFX9-NEXT:    s_lshr_b32 s83, s28, 8
-; GFX9-NEXT:    s_lshr_b32 s81, s27, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 49
-; GFX9-NEXT:    s_lshr_b32 s53, s27, 8
-; GFX9-NEXT:    s_lshr_b32 s82, s26, 16
-; GFX9-NEXT:    s_lshr_b32 s67, s26, 8
-; GFX9-NEXT:    s_lshr_b32 s84, s25, 24
-; GFX9-NEXT:    s_lshr_b32 s96, s25, 16
-; GFX9-NEXT:    s_lshr_b32 s65, s25, 8
-; GFX9-NEXT:    s_lshr_b32 s86, s24, 16
-; GFX9-NEXT:    s_lshr_b32 s55, s24, 8
-; GFX9-NEXT:    s_lshr_b32 s98, s23, 24
-; GFX9-NEXT:    s_lshr_b32 s87, s23, 16
-; GFX9-NEXT:    s_lshr_b32 s66, s23, 8
-; GFX9-NEXT:    s_lshr_b32 s97, s22, 16
-; GFX9-NEXT:    s_lshr_b32 s64, s22, 8
-; GFX9-NEXT:    s_lshr_b32 s49, s21, 24
-; GFX9-NEXT:    s_lshr_b32 s99, s21, 16
-; GFX9-NEXT:    s_lshr_b32 s80, s21, 8
-; GFX9-NEXT:    s_lshr_b32 s39, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s70, s20, 8
-; GFX9-NEXT:    s_lshr_b32 s48, s19, 24
-; GFX9-NEXT:    s_lshr_b32 s38, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s68, s19, 8
-; GFX9-NEXT:    s_lshr_b32 s54, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s71, s18, 8
-; GFX9-NEXT:    s_lshr_b32 s52, s17, 24
-; GFX9-NEXT:    s_lshr_b32 s50, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s69, s17, 8
-; GFX9-NEXT:    s_lshr_b32 s51, s16, 16
-; GFX9-NEXT:    s_lshr_b32 s85, s16, 8
-; GFX9-NEXT:    s_lshr_b64 s[46:47], s[4:5], 24
-; GFX9-NEXT:    s_lshr_b64 s[56:57], s[6:7], 24
-; GFX9-NEXT:    s_lshr_b64 s[58:59], s[8:9], 24
-; GFX9-NEXT:    s_lshr_b64 s[60:61], s[10:11], 24
-; GFX9-NEXT:    s_lshr_b64 s[62:63], s[12:13], 24
-; GFX9-NEXT:    s_lshr_b64 s[72:73], s[14:15], 24
-; GFX9-NEXT:    s_lshr_b64 s[74:75], s[40:41], 24
-; GFX9-NEXT:    s_lshr_b64 s[76:77], s[42:43], 24
-; GFX9-NEXT:    s_lshr_b64 s[78:79], s[44:45], 24
-; GFX9-NEXT:    s_lshr_b64 s[88:89], s[28:29], 24
-; GFX9-NEXT:    s_lshr_b64 s[90:91], s[26:27], 24
+; GFX9-NEXT:    s_lshr_b32 s47, s11, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 21
+; GFX9-NEXT:    s_lshr_b32 s47, s10, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 22
+; GFX9-NEXT:    s_lshr_b32 s47, s27, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 23
+; GFX9-NEXT:    s_lshr_b32 s47, s26, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 24
+; GFX9-NEXT:    s_lshr_b32 s47, s26, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 25
+; GFX9-NEXT:    s_lshr_b32 s47, s25, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 26
+; GFX9-NEXT:    s_lshr_b32 s47, s25, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 27
+; GFX9-NEXT:    s_lshr_b32 s47, s25, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 28
+; GFX9-NEXT:    s_lshr_b32 s47, s24, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 29
+; GFX9-NEXT:    s_lshr_b32 s47, s24, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 30
+; GFX9-NEXT:    s_lshr_b32 s47, s23, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 31
+; GFX9-NEXT:    s_lshr_b32 s47, s23, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 32
+; GFX9-NEXT:    s_lshr_b32 s47, s23, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 33
+; GFX9-NEXT:    s_lshr_b32 s47, s22, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 34
+; GFX9-NEXT:    s_lshr_b32 s47, s22, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 35
+; GFX9-NEXT:    s_lshr_b32 s47, s21, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 36
+; GFX9-NEXT:    s_lshr_b32 s47, s21, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 37
+; GFX9-NEXT:    s_lshr_b32 s47, s21, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 38
+; GFX9-NEXT:    s_lshr_b32 s47, s20, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 39
+; GFX9-NEXT:    s_lshr_b32 s47, s20, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 40
+; GFX9-NEXT:    s_lshr_b32 s47, s19, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 41
+; GFX9-NEXT:    s_lshr_b32 s47, s19, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 42
+; GFX9-NEXT:    s_lshr_b32 s47, s19, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 43
+; GFX9-NEXT:    s_lshr_b32 s47, s18, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 44
+; GFX9-NEXT:    s_lshr_b32 s47, s18, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 45
+; GFX9-NEXT:    s_lshr_b32 s47, s17, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 46
+; GFX9-NEXT:    s_lshr_b32 s47, s17, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 47
+; GFX9-NEXT:    s_lshr_b32 s47, s17, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 48
+; GFX9-NEXT:    s_lshr_b32 s47, s16, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 49
+; GFX9-NEXT:    s_lshr_b32 s47, s16, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 50
+; GFX9-NEXT:    s_lshr_b64 s[90:91], s[4:5], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 18
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 19
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[8:9], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 17
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[10:11], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 14
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 15
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[12:13], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 12
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 13
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[14:15], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 10
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 11
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[40:41], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 9
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[42:43], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 6
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 7
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[44:45], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 4
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 5
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[28:29], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 2
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 3
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[26:27], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 0
+; GFX9-NEXT:    s_lshr_b32 s81, s5, 16
+; GFX9-NEXT:    s_lshr_b32 s82, s5, 8
+; GFX9-NEXT:    s_lshr_b32 s96, s4, 16
+; GFX9-NEXT:    s_lshr_b32 s83, s4, 8
+; GFX9-NEXT:    s_lshr_b32 s86, s7, 24
+; GFX9-NEXT:    s_lshr_b32 s84, s7, 16
+; GFX9-NEXT:    s_lshr_b32 s87, s7, 8
+; GFX9-NEXT:    s_lshr_b32 s57, s6, 16
+; GFX9-NEXT:    s_lshr_b32 s97, s6, 8
+; GFX9-NEXT:    s_lshr_b32 s98, s9, 24
+; GFX9-NEXT:    s_lshr_b32 s46, s9, 16
+; GFX9-NEXT:    s_lshr_b32 s48, s9, 8
+; GFX9-NEXT:    s_lshr_b32 s39, s8, 16
+; GFX9-NEXT:    s_lshr_b32 s38, s8, 8
+; GFX9-NEXT:    s_lshr_b32 s56, s11, 16
+; GFX9-NEXT:    s_lshr_b32 s49, s11, 8
+; GFX9-NEXT:    s_lshr_b32 s50, s10, 8
+; GFX9-NEXT:    s_lshr_b32 s51, s13, 24
+; GFX9-NEXT:    s_lshr_b32 s52, s13, 16
+; GFX9-NEXT:    s_lshr_b32 s59, s13, 8
+; GFX9-NEXT:    s_lshr_b32 s58, s12, 16
+; GFX9-NEXT:    s_lshr_b32 s67, s12, 8
+; GFX9-NEXT:    s_lshr_b32 s60, s15, 24
+; GFX9-NEXT:    s_lshr_b32 s65, s15, 16
+; GFX9-NEXT:    s_lshr_b32 s61, s15, 8
+; GFX9-NEXT:    s_lshr_b32 s62, s14, 16
+; GFX9-NEXT:    s_lshr_b32 s55, s14, 8
+; GFX9-NEXT:    s_lshr_b32 s63, s41, 24
+; GFX9-NEXT:    s_lshr_b32 s72, s41, 16
+; GFX9-NEXT:    s_lshr_b32 s66, s41, 8
+; GFX9-NEXT:    s_lshr_b32 s73, s40, 16
+; GFX9-NEXT:    s_lshr_b32 s64, s40, 8
+; GFX9-NEXT:    s_lshr_b32 s74, s43, 24
+; GFX9-NEXT:    s_lshr_b32 s80, s43, 16
+; GFX9-NEXT:    s_lshr_b32 s75, s43, 8
+; GFX9-NEXT:    s_lshr_b32 s76, s42, 16
+; GFX9-NEXT:    s_lshr_b32 s70, s42, 8
+; GFX9-NEXT:    s_lshr_b32 s77, s45, 24
+; GFX9-NEXT:    s_lshr_b32 s78, s45, 16
+; GFX9-NEXT:    s_lshr_b32 s68, s45, 8
+; GFX9-NEXT:    s_lshr_b32 s79, s44, 16
+; GFX9-NEXT:    s_lshr_b32 s71, s44, 8
+; GFX9-NEXT:    s_lshr_b32 s69, s29, 24
+; GFX9-NEXT:    s_lshr_b32 s85, s29, 16
+; GFX9-NEXT:    s_lshr_b32 s88, s29, 8
+; GFX9-NEXT:    s_lshr_b32 s54, s28, 16
+; GFX9-NEXT:    s_lshr_b32 s89, s28, 8
+; GFX9-NEXT:    s_lshr_b32 s99, s27, 24
+; GFX9-NEXT:    s_lshr_b32 s53, s27, 16
+; GFX9-NEXT:    s_lshr_b64 s[90:91], s[6:7], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 1
 ; GFX9-NEXT:    s_lshr_b64 s[92:93], s[24:25], 24
 ; GFX9-NEXT:    s_lshr_b64 s[94:95], s[22:23], 24
-; GFX9-NEXT:    s_lshr_b64 s[30:31], s[20:21], 24
-; GFX9-NEXT:    s_lshr_b64 s[34:35], s[18:19], 24
-; GFX9-NEXT:    s_lshr_b64 s[36:37], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_lshr_b64 vcc, s[20:21], 24
+; GFX9-NEXT:    s_lshr_b64 s[30:31], s[18:19], 24
+; GFX9-NEXT:    s_lshr_b64 s[34:35], s[16:17], 24
+; GFX9-NEXT:    s_mov_b64 s[36:37], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    s_mov_b64 s[36:37], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 0
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 1
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr53
+; GFX9-NEXT:    ; implicit-def: $sgpr99
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr54
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr85
+; GFX9-NEXT:    ; implicit-def: $sgpr69
+; GFX9-NEXT:    ; implicit-def: $sgpr71
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr68
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr70
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr80
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr64
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr66
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr55
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr65
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr67
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr52
+; GFX9-NEXT:    ; implicit-def: $sgpr51
+; GFX9-NEXT:    ; implicit-def: $sgpr50
+; GFX9-NEXT:    ; implicit-def: $sgpr49
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr38
+; GFX9-NEXT:    ; implicit-def: $sgpr39
+; GFX9-NEXT:    ; implicit-def: $sgpr48
+; GFX9-NEXT:    ; implicit-def: $sgpr98
+; GFX9-NEXT:    ; implicit-def: $sgpr97
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr87
+; GFX9-NEXT:    ; implicit-def: $sgpr84
+; GFX9-NEXT:    ; implicit-def: $sgpr86
+; GFX9-NEXT:    ; implicit-def: $sgpr83
+; GFX9-NEXT:    ; implicit-def: $sgpr96
+; GFX9-NEXT:    ; implicit-def: $sgpr82
+; GFX9-NEXT:    ; implicit-def: $sgpr81
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; kill: killed $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr34
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 2
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 3
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 4
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 5
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 6
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 7
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 8
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 9
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 10
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 11
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 12
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 13
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 14
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 15
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 16
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 17
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 18
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 19
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GFX9-NEXT:    s_cselect_b32 s47, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s47, 1
+; GFX9-NEXT:    v_readlane_b32 s36, v30, 20
+; GFX9-NEXT:    s_mov_b32 s37, s81
+; GFX9-NEXT:    s_mov_b32 s81, s96
+; GFX9-NEXT:    s_mov_b32 s96, s57
+; GFX9-NEXT:    s_mov_b32 s47, s48
+; GFX9-NEXT:    v_readlane_b32 s57, v30, 21
+; GFX9-NEXT:    v_readlane_b32 s48, v30, 22
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
+; GFX9-NEXT:    s_add_i32 s27, s27, 3
+; GFX9-NEXT:    s_add_i32 s26, s26, 3
+; GFX9-NEXT:    s_lshr_b32 s90, s27, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 23
+; GFX9-NEXT:    s_lshr_b32 s90, s26, 16
+; GFX9-NEXT:    s_add_i32 s25, s25, 3
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 24
+; GFX9-NEXT:    s_lshr_b32 s90, s26, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 25
+; GFX9-NEXT:    s_lshr_b32 s90, s25, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 26
+; GFX9-NEXT:    s_lshr_b32 s90, s25, 16
+; GFX9-NEXT:    s_add_i32 s24, s24, 3
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 27
+; GFX9-NEXT:    s_lshr_b32 s90, s25, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 28
+; GFX9-NEXT:    s_lshr_b32 s90, s24, 16
+; GFX9-NEXT:    s_add_i32 s23, s23, 3
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 29
+; GFX9-NEXT:    s_lshr_b32 s90, s24, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 30
+; GFX9-NEXT:    s_lshr_b32 s90, s23, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 31
+; GFX9-NEXT:    s_lshr_b32 s90, s23, 16
+; GFX9-NEXT:    s_add_i32 s22, s22, 3
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 32
+; GFX9-NEXT:    s_lshr_b32 s90, s23, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 33
+; GFX9-NEXT:    s_lshr_b32 s90, s22, 16
+; GFX9-NEXT:    s_add_i32 s21, s21, 3
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 34
+; GFX9-NEXT:    s_lshr_b32 s90, s22, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 35
+; GFX9-NEXT:    s_lshr_b32 s90, s21, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 36
+; GFX9-NEXT:    s_lshr_b32 s90, s21, 16
+; GFX9-NEXT:    s_add_i32 s20, s20, 3
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 37
+; GFX9-NEXT:    s_lshr_b32 s90, s21, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 38
+; GFX9-NEXT:    s_lshr_b32 s90, s20, 16
+; GFX9-NEXT:    s_add_i32 s19, s19, 3
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 39
+; GFX9-NEXT:    s_lshr_b32 s90, s20, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 40
+; GFX9-NEXT:    s_lshr_b32 s90, s19, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 41
+; GFX9-NEXT:    s_lshr_b32 s90, s19, 16
+; GFX9-NEXT:    s_add_i32 s18, s18, 3
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 42
+; GFX9-NEXT:    s_lshr_b32 s90, s19, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 43
+; GFX9-NEXT:    s_lshr_b32 s90, s18, 16
+; GFX9-NEXT:    s_add_i32 s17, s17, 3
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 44
+; GFX9-NEXT:    s_lshr_b32 s90, s18, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 45
+; GFX9-NEXT:    s_lshr_b32 s90, s17, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 46
+; GFX9-NEXT:    s_lshr_b32 s90, s17, 16
+; GFX9-NEXT:    s_add_i32 s16, s16, 3
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 47
+; GFX9-NEXT:    s_lshr_b32 s90, s17, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 48
+; GFX9-NEXT:    s_lshr_b32 s90, s16, 16
 ; GFX9-NEXT:    s_add_i32 s5, s5, 3
-; GFX9-NEXT:    s_lshr_b32 s46, s5, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 0
-; GFX9-NEXT:    s_lshr_b32 s46, s5, 16
 ; GFX9-NEXT:    s_add_i32 s4, s4, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 1
-; GFX9-NEXT:    s_lshr_b32 s46, s5, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 2
-; GFX9-NEXT:    s_lshr_b32 s46, s4, 16
-; GFX9-NEXT:    s_add_i32 s7, s7, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 3
-; GFX9-NEXT:    s_lshr_b32 s46, s4, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 4
-; GFX9-NEXT:    s_lshr_b32 s46, s7, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 5
-; GFX9-NEXT:    s_lshr_b32 s46, s7, 16
-; GFX9-NEXT:    s_add_i32 s6, s6, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 6
-; GFX9-NEXT:    s_lshr_b32 s46, s7, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 7
-; GFX9-NEXT:    s_lshr_b32 s46, s6, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 49
+; GFX9-NEXT:    s_lshr_b32 s90, s16, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 50
+; GFX9-NEXT:    s_lshr_b64 s[90:91], s[4:5], 24
 ; GFX9-NEXT:    s_add_i32 s9, s9, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 8
-; GFX9-NEXT:    s_lshr_b32 s46, s6, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 9
-; GFX9-NEXT:    s_lshr_b32 s46, s9, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 10
-; GFX9-NEXT:    s_lshr_b32 s46, s9, 16
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 11
-; GFX9-NEXT:    s_lshr_b32 s46, s9, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 12
-; GFX9-NEXT:    s_lshr_b32 s46, s8, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 18
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 19
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[8:9], 24
 ; GFX9-NEXT:    s_add_i32 s11, s11, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 13
-; GFX9-NEXT:    s_lshr_b32 s46, s8, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 14
-; GFX9-NEXT:    s_lshr_b32 s46, s11, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 15
-; GFX9-NEXT:    s_lshr_b32 s46, s11, 16
 ; GFX9-NEXT:    s_add_i32 s10, s10, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 16
-; GFX9-NEXT:    s_lshr_b32 s46, s11, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 17
-; GFX9-NEXT:    s_lshr_b32 s46, s10, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 17
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[10:11], 24
 ; GFX9-NEXT:    s_add_i32 s13, s13, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 18
-; GFX9-NEXT:    s_lshr_b32 s46, s10, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 19
-; GFX9-NEXT:    s_lshr_b32 s46, s13, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 20
-; GFX9-NEXT:    s_lshr_b32 s46, s13, 16
 ; GFX9-NEXT:    s_add_i32 s12, s12, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 21
-; GFX9-NEXT:    s_lshr_b32 s46, s13, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 22
-; GFX9-NEXT:    s_lshr_b32 s46, s12, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 14
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 15
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[12:13], 24
 ; GFX9-NEXT:    s_add_i32 s15, s15, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 23
-; GFX9-NEXT:    s_lshr_b32 s46, s12, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 24
-; GFX9-NEXT:    s_lshr_b32 s46, s15, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 25
-; GFX9-NEXT:    s_lshr_b32 s46, s15, 16
 ; GFX9-NEXT:    s_add_i32 s14, s14, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 26
-; GFX9-NEXT:    s_lshr_b32 s46, s15, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 27
-; GFX9-NEXT:    s_lshr_b32 s46, s14, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 12
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 13
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[14:15], 24
 ; GFX9-NEXT:    s_add_i32 s41, s41, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 28
-; GFX9-NEXT:    s_lshr_b32 s46, s14, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 29
-; GFX9-NEXT:    s_lshr_b32 s46, s41, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 30
-; GFX9-NEXT:    s_lshr_b32 s46, s41, 16
 ; GFX9-NEXT:    s_add_i32 s40, s40, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 31
-; GFX9-NEXT:    s_lshr_b32 s46, s41, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 32
-; GFX9-NEXT:    s_lshr_b32 s46, s40, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 10
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 11
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[40:41], 24
 ; GFX9-NEXT:    s_add_i32 s43, s43, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 33
-; GFX9-NEXT:    s_lshr_b32 s46, s40, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 34
-; GFX9-NEXT:    s_lshr_b32 s46, s43, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 35
-; GFX9-NEXT:    s_lshr_b32 s46, s43, 16
 ; GFX9-NEXT:    s_add_i32 s42, s42, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 36
-; GFX9-NEXT:    s_lshr_b32 s46, s43, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 37
-; GFX9-NEXT:    s_lshr_b32 s46, s42, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 9
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[42:43], 24
 ; GFX9-NEXT:    s_add_i32 s45, s45, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 38
-; GFX9-NEXT:    s_lshr_b32 s46, s42, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 39
-; GFX9-NEXT:    s_lshr_b32 s46, s45, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 40
-; GFX9-NEXT:    s_lshr_b32 s46, s45, 16
 ; GFX9-NEXT:    s_add_i32 s44, s44, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 41
-; GFX9-NEXT:    s_lshr_b32 s46, s45, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 42
-; GFX9-NEXT:    s_lshr_b32 s46, s44, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 6
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 7
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[44:45], 24
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 43
-; GFX9-NEXT:    s_lshr_b32 s46, s44, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 44
-; GFX9-NEXT:    s_lshr_b32 s46, s29, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 45
-; GFX9-NEXT:    s_lshr_b32 s46, s29, 16
 ; GFX9-NEXT:    s_add_i32 s28, s28, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 46
-; GFX9-NEXT:    s_lshr_b32 s46, s29, 8
-; GFX9-NEXT:    s_add_i32 s27, s27, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 47
-; GFX9-NEXT:    s_lshr_b32 s46, s28, 16
-; GFX9-NEXT:    s_add_i32 s17, s17, 3
-; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:    s_add_i32 s19, s19, 3
-; GFX9-NEXT:    s_add_i32 s18, s18, 3
-; GFX9-NEXT:    s_add_i32 s21, s21, 3
-; GFX9-NEXT:    s_add_i32 s20, s20, 3
-; GFX9-NEXT:    s_add_i32 s23, s23, 3
-; GFX9-NEXT:    s_add_i32 s22, s22, 3
-; GFX9-NEXT:    s_add_i32 s25, s25, 3
-; GFX9-NEXT:    s_add_i32 s24, s24, 3
-; GFX9-NEXT:    s_add_i32 s26, s26, 3
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 48
-; GFX9-NEXT:    s_lshr_b32 s46, s27, 16
-; GFX9-NEXT:    s_lshr_b32 s83, s28, 8
-; GFX9-NEXT:    s_lshr_b32 s81, s27, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 49
-; GFX9-NEXT:    s_lshr_b32 s53, s27, 8
-; GFX9-NEXT:    s_lshr_b32 s82, s26, 16
-; GFX9-NEXT:    s_lshr_b32 s67, s26, 8
-; GFX9-NEXT:    s_lshr_b32 s84, s25, 24
-; GFX9-NEXT:    s_lshr_b32 s96, s25, 16
-; GFX9-NEXT:    s_lshr_b32 s65, s25, 8
-; GFX9-NEXT:    s_lshr_b32 s86, s24, 16
-; GFX9-NEXT:    s_lshr_b32 s55, s24, 8
-; GFX9-NEXT:    s_lshr_b32 s98, s23, 24
-; GFX9-NEXT:    s_lshr_b32 s87, s23, 16
-; GFX9-NEXT:    s_lshr_b32 s66, s23, 8
-; GFX9-NEXT:    s_lshr_b32 s97, s22, 16
-; GFX9-NEXT:    s_lshr_b32 s64, s22, 8
-; GFX9-NEXT:    s_lshr_b32 s49, s21, 24
-; GFX9-NEXT:    s_lshr_b32 s99, s21, 16
-; GFX9-NEXT:    s_lshr_b32 s80, s21, 8
-; GFX9-NEXT:    s_lshr_b32 s39, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s70, s20, 8
-; GFX9-NEXT:    s_lshr_b32 s48, s19, 24
-; GFX9-NEXT:    s_lshr_b32 s38, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s68, s19, 8
-; GFX9-NEXT:    s_lshr_b32 s54, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s71, s18, 8
-; GFX9-NEXT:    s_lshr_b32 s52, s17, 24
-; GFX9-NEXT:    s_lshr_b32 s50, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s69, s17, 8
-; GFX9-NEXT:    s_lshr_b32 s51, s16, 16
-; GFX9-NEXT:    s_lshr_b32 s85, s16, 8
-; GFX9-NEXT:    s_lshr_b64 s[46:47], s[4:5], 24
-; GFX9-NEXT:    s_lshr_b64 s[56:57], s[6:7], 24
-; GFX9-NEXT:    s_lshr_b64 s[58:59], s[8:9], 24
-; GFX9-NEXT:    s_lshr_b64 s[60:61], s[10:11], 24
-; GFX9-NEXT:    s_lshr_b64 s[62:63], s[12:13], 24
-; GFX9-NEXT:    s_lshr_b64 s[72:73], s[14:15], 24
-; GFX9-NEXT:    s_lshr_b64 s[74:75], s[40:41], 24
-; GFX9-NEXT:    s_lshr_b64 s[76:77], s[42:43], 24
-; GFX9-NEXT:    s_lshr_b64 s[78:79], s[44:45], 24
-; GFX9-NEXT:    s_lshr_b64 s[88:89], s[28:29], 24
-; GFX9-NEXT:    s_lshr_b64 s[90:91], s[26:27], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 4
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 5
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[28:29], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 2
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 3
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[26:27], 24
+; GFX9-NEXT:    s_add_i32 s7, s7, 3
+; GFX9-NEXT:    s_add_i32 s6, s6, 3
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 0
+; GFX9-NEXT:    s_lshr_b32 s36, s5, 24
+; GFX9-NEXT:    s_lshr_b32 s37, s5, 16
+; GFX9-NEXT:    s_lshr_b32 s82, s5, 8
+; GFX9-NEXT:    s_lshr_b32 s81, s4, 16
+; GFX9-NEXT:    s_lshr_b32 s83, s4, 8
+; GFX9-NEXT:    s_lshr_b32 s86, s7, 24
+; GFX9-NEXT:    s_lshr_b32 s84, s7, 16
+; GFX9-NEXT:    s_lshr_b32 s87, s7, 8
+; GFX9-NEXT:    s_lshr_b32 s96, s6, 16
+; GFX9-NEXT:    s_lshr_b32 s97, s6, 8
+; GFX9-NEXT:    s_lshr_b32 s98, s9, 24
+; GFX9-NEXT:    s_lshr_b32 s46, s9, 16
+; GFX9-NEXT:    s_lshr_b32 s47, s9, 8
+; GFX9-NEXT:    s_lshr_b32 s39, s8, 16
+; GFX9-NEXT:    s_lshr_b32 s38, s8, 8
+; GFX9-NEXT:    s_lshr_b32 s57, s11, 24
+; GFX9-NEXT:    s_lshr_b32 s56, s11, 16
+; GFX9-NEXT:    s_lshr_b32 s49, s11, 8
+; GFX9-NEXT:    s_lshr_b32 s48, s10, 16
+; GFX9-NEXT:    s_lshr_b32 s50, s10, 8
+; GFX9-NEXT:    s_lshr_b32 s51, s13, 24
+; GFX9-NEXT:    s_lshr_b32 s52, s13, 16
+; GFX9-NEXT:    s_lshr_b32 s59, s13, 8
+; GFX9-NEXT:    s_lshr_b32 s58, s12, 16
+; GFX9-NEXT:    s_lshr_b32 s67, s12, 8
+; GFX9-NEXT:    s_lshr_b32 s60, s15, 24
+; GFX9-NEXT:    s_lshr_b32 s65, s15, 16
+; GFX9-NEXT:    s_lshr_b32 s61, s15, 8
+; GFX9-NEXT:    s_lshr_b32 s62, s14, 16
+; GFX9-NEXT:    s_lshr_b32 s55, s14, 8
+; GFX9-NEXT:    s_lshr_b32 s63, s41, 24
+; GFX9-NEXT:    s_lshr_b32 s72, s41, 16
+; GFX9-NEXT:    s_lshr_b32 s66, s41, 8
+; GFX9-NEXT:    s_lshr_b32 s73, s40, 16
+; GFX9-NEXT:    s_lshr_b32 s64, s40, 8
+; GFX9-NEXT:    s_lshr_b32 s74, s43, 24
+; GFX9-NEXT:    s_lshr_b32 s80, s43, 16
+; GFX9-NEXT:    s_lshr_b32 s75, s43, 8
+; GFX9-NEXT:    s_lshr_b32 s76, s42, 16
+; GFX9-NEXT:    s_lshr_b32 s70, s42, 8
+; GFX9-NEXT:    s_lshr_b32 s77, s45, 24
+; GFX9-NEXT:    s_lshr_b32 s78, s45, 16
+; GFX9-NEXT:    s_lshr_b32 s68, s45, 8
+; GFX9-NEXT:    s_lshr_b32 s79, s44, 16
+; GFX9-NEXT:    s_lshr_b32 s71, s44, 8
+; GFX9-NEXT:    s_lshr_b32 s69, s29, 24
+; GFX9-NEXT:    s_lshr_b32 s85, s29, 16
+; GFX9-NEXT:    s_lshr_b32 s88, s29, 8
+; GFX9-NEXT:    s_lshr_b32 s54, s28, 16
+; GFX9-NEXT:    s_lshr_b32 s89, s28, 8
+; GFX9-NEXT:    s_lshr_b32 s99, s27, 24
+; GFX9-NEXT:    s_lshr_b32 s53, s27, 16
+; GFX9-NEXT:    s_lshr_b64 s[90:91], s[6:7], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 1
 ; GFX9-NEXT:    s_lshr_b64 s[92:93], s[24:25], 24
 ; GFX9-NEXT:    s_lshr_b64 s[94:95], s[22:23], 24
-; GFX9-NEXT:    s_lshr_b64 s[30:31], s[20:21], 24
-; GFX9-NEXT:    s_lshr_b64 s[34:35], s[18:19], 24
-; GFX9-NEXT:    s_lshr_b64 s[36:37], s[16:17], 24
-; GFX9-NEXT:  .LBB13_3: ; %end
-; GFX9-NEXT:    v_mov_b32_e32 v7, s36
+; GFX9-NEXT:    s_lshr_b64 vcc, s[20:21], 24
+; GFX9-NEXT:    s_lshr_b64 s[30:31], s[18:19], 24
+; GFX9-NEXT:    s_lshr_b64 s[34:35], s[16:17], 24
+; GFX9-NEXT:  .LBB13_5: ; %end
+; GFX9-NEXT:    v_readlane_b32 s91, v30, 50
+; GFX9-NEXT:    v_mov_b32_e32 v2, s91
+; GFX9-NEXT:    v_readlane_b32 s91, v30, 48
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
-; GFX9-NEXT:    v_mov_b32_e32 v2, s85
-; GFX9-NEXT:    v_perm_b32 v7, s51, v7, v1
+; GFX9-NEXT:    v_mov_b32_e32 v4, s91
 ; GFX9-NEXT:    v_perm_b32 v3, s16, v2, v1
-; GFX9-NEXT:    v_mov_b32_e32 v21, s52
-; GFX9-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
-; GFX9-NEXT:    v_mov_b32_e32 v4, s69
-; GFX9-NEXT:    v_perm_b32 v21, s50, v21, v1
-; GFX9-NEXT:    v_or_b32_e32 v3, v3, v7
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 45
 ; GFX9-NEXT:    v_perm_b32 v2, s17, v4, v1
-; GFX9-NEXT:    v_mov_b32_e32 v11, s34
+; GFX9-NEXT:    v_mov_b32_e32 v4, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 43
+; GFX9-NEXT:    v_mov_b32_e32 v6, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 40
+; GFX9-NEXT:    v_perm_b32 v5, s18, v4, v1
+; GFX9-NEXT:    v_perm_b32 v4, s19, v6, v1
+; GFX9-NEXT:    v_mov_b32_e32 v6, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 38
+; GFX9-NEXT:    v_mov_b32_e32 v9, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 35
+; GFX9-NEXT:    v_perm_b32 v7, s20, v6, v1
+; GFX9-NEXT:    v_perm_b32 v6, s21, v9, v1
+; GFX9-NEXT:    v_mov_b32_e32 v9, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 33
+; GFX9-NEXT:    v_mov_b32_e32 v12, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 30
+; GFX9-NEXT:    v_perm_b32 v10, s22, v9, v1
+; GFX9-NEXT:    v_perm_b32 v9, s23, v12, v1
+; GFX9-NEXT:    v_mov_b32_e32 v12, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 28
+; GFX9-NEXT:    v_mov_b32_e32 v15, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 0
+; GFX9-NEXT:    v_mov_b32_e32 v19, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 25
+; GFX9-NEXT:    v_perm_b32 v13, s24, v12, v1
+; GFX9-NEXT:    v_perm_b32 v12, s25, v15, v1
+; GFX9-NEXT:    v_readlane_b32 s17, v30, 1
+; GFX9-NEXT:    v_mov_b32_e32 v15, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 23
+; GFX9-NEXT:    v_mov_b32_e32 v20, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 2
+; GFX9-NEXT:    v_mov_b32_e32 v8, s34
+; GFX9-NEXT:    v_perm_b32 v16, s26, v15, v1
+; GFX9-NEXT:    v_perm_b32 v15, s27, v20, v1
+; GFX9-NEXT:    v_mov_b32_e32 v20, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 49
+; GFX9-NEXT:    v_perm_b32 v8, s16, v8, v1
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 46
+; GFX9-NEXT:    v_mov_b32_e32 v21, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 47
+; GFX9-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
+; GFX9-NEXT:    v_perm_b32 v21, s16, v21, v1
+; GFX9-NEXT:    v_or_b32_e32 v3, v3, v8
+; GFX9-NEXT:    v_mov_b32_e32 v11, s30
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 44
 ; GFX9-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v21
-; GFX9-NEXT:    v_mov_b32_e32 v4, s71
-; GFX9-NEXT:    v_perm_b32 v11, s54, v11, v1
+; GFX9-NEXT:    v_perm_b32 v11, s16, v11, v1
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 41
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_perm_b32 v5, s18, v4, v1
-; GFX9-NEXT:    v_mov_b32_e32 v22, s48
+; GFX9-NEXT:    v_mov_b32_e32 v22, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 42
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:4
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v11
-; GFX9-NEXT:    v_mov_b32_e32 v6, s68
-; GFX9-NEXT:    v_perm_b32 v22, s38, v22, v1
+; GFX9-NEXT:    v_perm_b32 v22, s16, v22, v1
 ; GFX9-NEXT:    v_or_b32_e32 v2, v5, v2
-; GFX9-NEXT:    v_perm_b32 v4, s19, v6, v1
-; GFX9-NEXT:    v_mov_b32_e32 v14, s30
+; GFX9-NEXT:    v_mov_b32_e32 v14, vcc_lo
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 39
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:8
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v22
-; GFX9-NEXT:    v_mov_b32_e32 v6, s70
-; GFX9-NEXT:    v_perm_b32 v14, s39, v14, v1
+; GFX9-NEXT:    v_perm_b32 v14, s16, v14, v1
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 36
 ; GFX9-NEXT:    v_or_b32_e32 v2, v4, v2
-; GFX9-NEXT:    v_perm_b32 v8, s20, v6, v1
-; GFX9-NEXT:    v_mov_b32_e32 v23, s49
+; GFX9-NEXT:    v_mov_b32_e32 v23, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 37
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:12
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v14
-; GFX9-NEXT:    v_mov_b32_e32 v9, s80
-; GFX9-NEXT:    v_perm_b32 v23, s99, v23, v1
-; GFX9-NEXT:    v_or_b32_e32 v2, v8, v2
-; GFX9-NEXT:    v_perm_b32 v6, s21, v9, v1
-; GFX9-NEXT:    v_mov_b32_e32 v15, s94
+; GFX9-NEXT:    v_perm_b32 v23, s16, v23, v1
+; GFX9-NEXT:    v_or_b32_e32 v2, v7, v2
+; GFX9-NEXT:    v_mov_b32_e32 v17, s94
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 34
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:16
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v23
-; GFX9-NEXT:    v_mov_b32_e32 v9, s64
-; GFX9-NEXT:    v_perm_b32 v15, s97, v15, v1
+; GFX9-NEXT:    v_perm_b32 v17, s16, v17, v1
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 31
 ; GFX9-NEXT:    v_or_b32_e32 v2, v6, v2
-; GFX9-NEXT:    v_perm_b32 v10, s22, v9, v1
-; GFX9-NEXT:    v_mov_b32_e32 v24, s98
+; GFX9-NEXT:    v_mov_b32_e32 v24, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 32
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:20
-; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v15
-; GFX9-NEXT:    v_mov_b32_e32 v12, s66
-; GFX9-NEXT:    v_perm_b32 v24, s87, v24, v1
+; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v17
+; GFX9-NEXT:    v_perm_b32 v24, s16, v24, v1
 ; GFX9-NEXT:    v_or_b32_e32 v2, v10, v2
-; GFX9-NEXT:    v_perm_b32 v9, s23, v12, v1
-; GFX9-NEXT:    v_mov_b32_e32 v16, s92
+; GFX9-NEXT:    v_mov_b32_e32 v18, s92
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 29
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:24
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v24
-; GFX9-NEXT:    v_mov_b32_e32 v12, s55
-; GFX9-NEXT:    v_perm_b32 v16, s86, v16, v1
+; GFX9-NEXT:    v_perm_b32 v18, s16, v18, v1
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 26
 ; GFX9-NEXT:    v_or_b32_e32 v2, v9, v2
-; GFX9-NEXT:    v_perm_b32 v13, s24, v12, v1
-; GFX9-NEXT:    v_mov_b32_e32 v25, s84
+; GFX9-NEXT:    v_mov_b32_e32 v25, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 27
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:28
-; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v16
-; GFX9-NEXT:    v_mov_b32_e32 v17, s65
-; GFX9-NEXT:    v_perm_b32 v25, s96, v25, v1
+; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v18
+; GFX9-NEXT:    v_perm_b32 v25, s16, v25, v1
 ; GFX9-NEXT:    v_or_b32_e32 v2, v13, v2
-; GFX9-NEXT:    v_perm_b32 v12, s25, v17, v1
-; GFX9-NEXT:    v_mov_b32_e32 v17, s90
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 24
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:32
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v25
-; GFX9-NEXT:    v_mov_b32_e32 v18, s67
-; GFX9-NEXT:    v_perm_b32 v17, s82, v17, v1
+; GFX9-NEXT:    v_perm_b32 v19, s16, v19, v1
 ; GFX9-NEXT:    v_or_b32_e32 v2, v12, v2
-; GFX9-NEXT:    v_perm_b32 v18, s26, v18, v1
-; GFX9-NEXT:    v_mov_b32_e32 v26, s81
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 49
+; GFX9-NEXT:    v_mov_b32_e32 v26, s99
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:36
-; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v17
-; GFX9-NEXT:    v_mov_b32_e32 v19, s53
-; GFX9-NEXT:    v_perm_b32 v26, s16, v26, v1
-; GFX9-NEXT:    v_or_b32_e32 v2, v18, v2
-; GFX9-NEXT:    v_perm_b32 v19, s27, v19, v1
-; GFX9-NEXT:    v_mov_b32_e32 v20, s88
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 48
+; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v19
+; GFX9-NEXT:    v_perm_b32 v26, s53, v26, v1
+; GFX9-NEXT:    v_or_b32_e32 v2, v16, v2
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:40
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v26
-; GFX9-NEXT:    v_mov_b32_e32 v27, s83
-; GFX9-NEXT:    v_perm_b32 v20, s16, v20, v1
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 47
-; GFX9-NEXT:    v_or_b32_e32 v2, v19, v2
-; GFX9-NEXT:    v_mov_b32_e32 v28, s16
+; GFX9-NEXT:    v_mov_b32_e32 v27, s89
+; GFX9-NEXT:    v_perm_b32 v20, s54, v20, v1
+; GFX9-NEXT:    v_or_b32_e32 v2, v15, v2
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44
 ; GFX9-NEXT:    v_perm_b32 v2, s28, v27, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v20
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 45
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s16
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 46
-; GFX9-NEXT:    v_perm_b32 v3, s16, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v3, s69
+; GFX9-NEXT:    v_readlane_b32 s17, v30, 3
+; GFX9-NEXT:    v_mov_b32_e32 v28, s88
+; GFX9-NEXT:    v_perm_b32 v3, s85, v3, v1
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:48
 ; GFX9-NEXT:    v_perm_b32 v2, s29, v28, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 4
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 44
+; GFX9-NEXT:    v_mov_b32_e32 v3, s16
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:52
-; GFX9-NEXT:    v_mov_b32_e32 v2, s16
-; GFX9-NEXT:    v_mov_b32_e32 v3, s78
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 43
-; GFX9-NEXT:    v_perm_b32 v3, s16, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s71
+; GFX9-NEXT:    v_perm_b32 v3, s79, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s44, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 42
+; GFX9-NEXT:    v_mov_b32_e32 v3, s77
+; GFX9-NEXT:    v_readlane_b32 s17, v30, 5
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:56
-; GFX9-NEXT:    v_mov_b32_e32 v2, s16
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 40
-; GFX9-NEXT:    v_mov_b32_e32 v3, s16
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 41
-; GFX9-NEXT:    v_perm_b32 v3, s16, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s68
+; GFX9-NEXT:    v_perm_b32 v3, s78, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s45, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 6
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 39
+; GFX9-NEXT:    v_mov_b32_e32 v3, s16
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:60
-; GFX9-NEXT:    v_mov_b32_e32 v2, s16
-; GFX9-NEXT:    v_mov_b32_e32 v3, s76
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 38
-; GFX9-NEXT:    v_perm_b32 v3, s16, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s70
+; GFX9-NEXT:    v_perm_b32 v3, s76, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s42, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 37
+; GFX9-NEXT:    v_mov_b32_e32 v3, s74
+; GFX9-NEXT:    v_readlane_b32 s17, v30, 7
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:64
-; GFX9-NEXT:    v_mov_b32_e32 v2, s16
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 35
-; GFX9-NEXT:    v_mov_b32_e32 v3, s16
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 36
-; GFX9-NEXT:    v_perm_b32 v3, s16, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s75
+; GFX9-NEXT:    v_perm_b32 v3, s80, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s43, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 8
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 34
+; GFX9-NEXT:    v_mov_b32_e32 v3, s16
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:68
-; GFX9-NEXT:    v_mov_b32_e32 v2, s16
-; GFX9-NEXT:    v_mov_b32_e32 v3, s74
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 33
-; GFX9-NEXT:    v_perm_b32 v3, s16, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s64
+; GFX9-NEXT:    v_perm_b32 v3, s73, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s40, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 32
+; GFX9-NEXT:    v_mov_b32_e32 v3, s63
+; GFX9-NEXT:    v_readlane_b32 s17, v30, 9
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:72
-; GFX9-NEXT:    v_mov_b32_e32 v2, s16
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 30
-; GFX9-NEXT:    v_mov_b32_e32 v3, s16
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 31
-; GFX9-NEXT:    v_perm_b32 v3, s16, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s66
+; GFX9-NEXT:    v_perm_b32 v3, s72, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s41, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 10
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 29
+; GFX9-NEXT:    v_mov_b32_e32 v3, s16
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:76
-; GFX9-NEXT:    v_mov_b32_e32 v2, s16
+; GFX9-NEXT:    v_mov_b32_e32 v2, s55
+; GFX9-NEXT:    v_perm_b32 v3, s62, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s14, v2, v1
-; GFX9-NEXT:    v_mov_b32_e32 v3, s72
-; GFX9-NEXT:    v_readlane_b32 s14, v30, 28
-; GFX9-NEXT:    v_perm_b32 v3, s14, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s14, v30, 27
+; GFX9-NEXT:    v_mov_b32_e32 v3, s60
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:80
-; GFX9-NEXT:    v_mov_b32_e32 v2, s14
-; GFX9-NEXT:    v_readlane_b32 s14, v30, 25
-; GFX9-NEXT:    v_mov_b32_e32 v3, s14
-; GFX9-NEXT:    v_readlane_b32 s14, v30, 26
-; GFX9-NEXT:    v_perm_b32 v3, s14, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s61
+; GFX9-NEXT:    v_perm_b32 v3, s65, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s15, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s14, v30, 12
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s14, v30, 24
+; GFX9-NEXT:    v_mov_b32_e32 v3, s14
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:84
-; GFX9-NEXT:    v_mov_b32_e32 v2, s14
+; GFX9-NEXT:    v_mov_b32_e32 v2, s67
+; GFX9-NEXT:    v_perm_b32 v3, s58, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s12, v2, v1
-; GFX9-NEXT:    v_mov_b32_e32 v3, s62
-; GFX9-NEXT:    v_readlane_b32 s12, v30, 23
-; GFX9-NEXT:    v_perm_b32 v3, s12, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s12, v30, 22
+; GFX9-NEXT:    v_mov_b32_e32 v3, s51
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:88
-; GFX9-NEXT:    v_mov_b32_e32 v2, s12
-; GFX9-NEXT:    v_readlane_b32 s12, v30, 20
-; GFX9-NEXT:    v_mov_b32_e32 v3, s12
-; GFX9-NEXT:    v_readlane_b32 s12, v30, 21
-; GFX9-NEXT:    v_perm_b32 v3, s12, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s59
+; GFX9-NEXT:    v_perm_b32 v3, s52, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s13, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s12, v30, 14
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s12, v30, 19
+; GFX9-NEXT:    v_mov_b32_e32 v3, s12
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:92
-; GFX9-NEXT:    v_mov_b32_e32 v2, s12
+; GFX9-NEXT:    v_mov_b32_e32 v2, s50
+; GFX9-NEXT:    v_perm_b32 v3, s48, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s10, v2, v1
-; GFX9-NEXT:    v_mov_b32_e32 v3, s60
-; GFX9-NEXT:    v_readlane_b32 s10, v30, 18
-; GFX9-NEXT:    v_perm_b32 v3, s10, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s10, v30, 17
+; GFX9-NEXT:    v_mov_b32_e32 v3, s57
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:96
-; GFX9-NEXT:    v_mov_b32_e32 v2, s10
-; GFX9-NEXT:    v_readlane_b32 s10, v30, 15
-; GFX9-NEXT:    v_mov_b32_e32 v3, s10
-; GFX9-NEXT:    v_readlane_b32 s10, v30, 16
-; GFX9-NEXT:    v_perm_b32 v3, s10, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s49
+; GFX9-NEXT:    v_perm_b32 v3, s56, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s11, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s10, v30, 16
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s10, v30, 14
+; GFX9-NEXT:    v_mov_b32_e32 v3, s10
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:100
-; GFX9-NEXT:    v_mov_b32_e32 v2, s10
+; GFX9-NEXT:    v_mov_b32_e32 v2, s38
+; GFX9-NEXT:    v_perm_b32 v3, s39, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s8, v2, v1
-; GFX9-NEXT:    v_mov_b32_e32 v3, s58
-; GFX9-NEXT:    v_readlane_b32 s8, v30, 13
-; GFX9-NEXT:    v_perm_b32 v3, s8, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s8, v30, 12
+; GFX9-NEXT:    v_mov_b32_e32 v3, s98
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:104
-; GFX9-NEXT:    v_mov_b32_e32 v2, s8
-; GFX9-NEXT:    v_readlane_b32 s8, v30, 10
-; GFX9-NEXT:    v_mov_b32_e32 v3, s8
-; GFX9-NEXT:    v_readlane_b32 s8, v30, 11
-; GFX9-NEXT:    v_perm_b32 v3, s8, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s47
+; GFX9-NEXT:    v_perm_b32 v3, s46, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s9, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s8, v30, 9
+; GFX9-NEXT:    v_mov_b32_e32 v3, s90
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:108
-; GFX9-NEXT:    v_mov_b32_e32 v2, s8
+; GFX9-NEXT:    v_mov_b32_e32 v2, s97
+; GFX9-NEXT:    v_perm_b32 v3, s96, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s6, v2, v1
-; GFX9-NEXT:    v_mov_b32_e32 v3, s56
-; GFX9-NEXT:    v_readlane_b32 s6, v30, 8
-; GFX9-NEXT:    v_perm_b32 v3, s6, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s6, v30, 7
+; GFX9-NEXT:    v_mov_b32_e32 v3, s86
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:112
-; GFX9-NEXT:    v_mov_b32_e32 v2, s6
-; GFX9-NEXT:    v_readlane_b32 s6, v30, 5
-; GFX9-NEXT:    v_mov_b32_e32 v3, s6
-; GFX9-NEXT:    v_readlane_b32 s6, v30, 6
-; GFX9-NEXT:    v_perm_b32 v3, s6, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s87
+; GFX9-NEXT:    v_perm_b32 v3, s84, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s7, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s6, v30, 18
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s6, v30, 4
+; GFX9-NEXT:    v_mov_b32_e32 v3, s6
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:116
-; GFX9-NEXT:    v_mov_b32_e32 v2, s6
+; GFX9-NEXT:    v_mov_b32_e32 v2, s83
+; GFX9-NEXT:    v_perm_b32 v3, s81, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s4, v2, v1
-; GFX9-NEXT:    v_mov_b32_e32 v3, s46
-; GFX9-NEXT:    v_readlane_b32 s4, v30, 3
-; GFX9-NEXT:    v_perm_b32 v3, s4, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s4, v30, 2
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:120
-; GFX9-NEXT:    v_mov_b32_e32 v2, s4
-; GFX9-NEXT:    v_readlane_b32 s4, v30, 0
-; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:    v_readlane_b32 s4, v30, 1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s82
+; GFX9-NEXT:    v_mov_b32_e32 v3, s36
 ; GFX9-NEXT:    v_perm_b32 v2, s5, v2, v1
-; GFX9-NEXT:    v_perm_b32 v1, s4, v3, v1
+; GFX9-NEXT:    v_perm_b32 v1, s37, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_or_b32_e32 v1, v2, v1
 ; GFX9-NEXT:    v_readlane_b32 s30, v29, 34
+; GFX9-NEXT:    v_readlane_b32 s17, v30, 11
+; GFX9-NEXT:    v_readlane_b32 s15, v30, 13
+; GFX9-NEXT:    v_readlane_b32 s13, v30, 15
+; GFX9-NEXT:    v_readlane_b32 s11, v30, 17
+; GFX9-NEXT:    v_readlane_b32 s7, v30, 19
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:124
 ; GFX9-NEXT:    v_readlane_b32 s31, v29, 35
 ; GFX9-NEXT:    v_readlane_b32 s99, v29, 33
@@ -10693,154 +10973,6 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr85
-; GFX9-NEXT:    ; implicit-def: $sgpr51
-; GFX9-NEXT:    ; implicit-def: $sgpr69
-; GFX9-NEXT:    ; implicit-def: $sgpr50
-; GFX9-NEXT:    ; implicit-def: $sgpr52
-; GFX9-NEXT:    ; implicit-def: $sgpr71
-; GFX9-NEXT:    ; implicit-def: $sgpr54
-; GFX9-NEXT:    ; implicit-def: $sgpr68
-; GFX9-NEXT:    ; implicit-def: $sgpr38
-; GFX9-NEXT:    ; implicit-def: $sgpr48
-; GFX9-NEXT:    ; implicit-def: $sgpr70
-; GFX9-NEXT:    ; implicit-def: $sgpr39
-; GFX9-NEXT:    ; implicit-def: $sgpr80
-; GFX9-NEXT:    ; implicit-def: $sgpr99
-; GFX9-NEXT:    ; implicit-def: $sgpr49
-; GFX9-NEXT:    ; implicit-def: $sgpr64
-; GFX9-NEXT:    ; implicit-def: $sgpr97
-; GFX9-NEXT:    ; implicit-def: $sgpr66
-; GFX9-NEXT:    ; implicit-def: $sgpr87
-; GFX9-NEXT:    ; implicit-def: $sgpr98
-; GFX9-NEXT:    ; implicit-def: $sgpr55
-; GFX9-NEXT:    ; implicit-def: $sgpr86
-; GFX9-NEXT:    ; implicit-def: $sgpr65
-; GFX9-NEXT:    ; implicit-def: $sgpr96
-; GFX9-NEXT:    ; implicit-def: $sgpr84
-; GFX9-NEXT:    ; implicit-def: $sgpr67
-; GFX9-NEXT:    ; implicit-def: $sgpr82
-; GFX9-NEXT:    ; implicit-def: $sgpr53
-; GFX9-NEXT:    ; implicit-def: $sgpr81
-; GFX9-NEXT:    ; implicit-def: $sgpr83
-; GFX9-NEXT:    ; implicit-def: $sgpr36
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_v32i32_to_v128i8_scalar:
 ; GFX11:       ; %bb.0:
@@ -10909,570 +11041,702 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v2
 ; GFX11-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
-; GFX11-NEXT:    s_mov_b32 vcc_lo, 0
+; GFX11-NEXT:    s_mov_b32 s103, 0
 ; GFX11-NEXT:    ; implicit-def: $vgpr26 : SGPR spill to VGPR lane
 ; GFX11-NEXT:    ; implicit-def: $vgpr25 : SGPR spill to VGPR lane
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-NEXT:    s_lshr_b32 s42, s5, 24
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s27, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 0
-; GFX11-NEXT:    s_lshr_b32 s42, s5, 16
-; GFX11-NEXT:    s_lshr_b32 s34, s27, 16
-; GFX11-NEXT:    s_lshr_b32 s35, s27, 8
-; GFX11-NEXT:    s_lshr_b32 s37, s26, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 1
-; GFX11-NEXT:    s_lshr_b32 s42, s5, 8
-; GFX11-NEXT:    s_lshr_b32 s36, s26, 8
-; GFX11-NEXT:    s_lshr_b32 s39, s25, 24
-; GFX11-NEXT:    s_lshr_b32 s48, s25, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 2
+; GFX11-NEXT:    s_lshr_b32 s43, s8, 16
+; GFX11-NEXT:    s_lshr_b64 s[72:73], s[4:5], 24
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 18
+; GFX11-NEXT:    s_lshr_b32 s43, s12, 16
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[8:9], 24
+; GFX11-NEXT:    s_lshr_b32 s31, s5, 24
+; GFX11-NEXT:    s_lshr_b32 s104, s5, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 19
+; GFX11-NEXT:    s_lshr_b32 s43, s22, 16
+; GFX11-NEXT:    s_lshr_b32 s30, s5, 8
 ; GFX11-NEXT:    s_lshr_b32 s42, s4, 16
-; GFX11-NEXT:    s_lshr_b32 s38, s25, 8
-; GFX11-NEXT:    s_lshr_b32 s50, s24, 16
-; GFX11-NEXT:    s_lshr_b32 s49, s24, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 3
-; GFX11-NEXT:    s_lshr_b32 s42, s4, 8
-; GFX11-NEXT:    s_lshr_b32 s52, s23, 24
-; GFX11-NEXT:    s_lshr_b32 s53, s23, 16
-; GFX11-NEXT:    s_lshr_b32 s51, s23, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 4
-; GFX11-NEXT:    s_lshr_b32 s42, s7, 24
-; GFX11-NEXT:    s_lshr_b32 s69, s22, 16
-; GFX11-NEXT:    s_lshr_b32 s54, s22, 8
-; GFX11-NEXT:    s_lshr_b32 s55, s21, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 5
-; GFX11-NEXT:    s_lshr_b32 s42, s7, 16
-; GFX11-NEXT:    s_lshr_b32 s64, s21, 16
-; GFX11-NEXT:    s_lshr_b32 s65, s21, 8
-; GFX11-NEXT:    s_lshr_b32 s82, s20, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 6
-; GFX11-NEXT:    s_lshr_b32 s42, s7, 8
-; GFX11-NEXT:    s_lshr_b32 s68, s20, 8
-; GFX11-NEXT:    s_lshr_b32 s66, s19, 24
-; GFX11-NEXT:    s_lshr_b32 s67, s19, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 7
-; GFX11-NEXT:    s_lshr_b32 s42, s6, 16
-; GFX11-NEXT:    s_lshr_b32 s85, s19, 8
-; GFX11-NEXT:    s_lshr_b32 s86, s18, 16
-; GFX11-NEXT:    s_lshr_b32 s87, s18, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 8
-; GFX11-NEXT:    s_lshr_b32 s42, s6, 8
-; GFX11-NEXT:    s_lshr_b32 s70, s17, 24
-; GFX11-NEXT:    s_lshr_b32 s71, s17, 16
-; GFX11-NEXT:    s_lshr_b32 s96, s17, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 9
-; GFX11-NEXT:    s_lshr_b32 s42, s9, 24
-; GFX11-NEXT:    s_lshr_b32 s97, s16, 16
-; GFX11-NEXT:    s_lshr_b32 s98, s16, 8
-; GFX11-NEXT:    s_lshr_b32 s80, s3, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 10
-; GFX11-NEXT:    s_lshr_b32 s42, s9, 16
-; GFX11-NEXT:    s_lshr_b32 s81, s3, 16
-; GFX11-NEXT:    s_lshr_b32 s99, s3, 8
-; GFX11-NEXT:    s_lshr_b32 s100, s2, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 11
-; GFX11-NEXT:    s_lshr_b32 s42, s9, 8
-; GFX11-NEXT:    s_lshr_b32 s101, s2, 8
-; GFX11-NEXT:    s_lshr_b32 s83, s1, 24
-; GFX11-NEXT:    s_lshr_b32 s84, s1, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 12
-; GFX11-NEXT:    s_lshr_b32 s42, s8, 16
-; GFX11-NEXT:    s_lshr_b32 s102, s1, 8
-; GFX11-NEXT:    s_lshr_b32 s103, s0, 16
-; GFX11-NEXT:    s_lshr_b32 s104, s0, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 13
-; GFX11-NEXT:    s_lshr_b32 s42, s8, 8
-; GFX11-NEXT:    s_lshr_b64 s[44:45], s[6:7], 24
-; GFX11-NEXT:    s_lshr_b64 s[46:47], s[8:9], 24
-; GFX11-NEXT:    s_lshr_b64 s[56:57], s[10:11], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 14
-; GFX11-NEXT:    s_lshr_b32 s42, s11, 24
-; GFX11-NEXT:    s_lshr_b64 s[58:59], s[12:13], 24
-; GFX11-NEXT:    s_lshr_b64 s[60:61], s[14:15], 24
-; GFX11-NEXT:    s_lshr_b64 s[62:63], s[40:41], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 15
-; GFX11-NEXT:    s_lshr_b32 s42, s11, 16
-; GFX11-NEXT:    s_lshr_b64 s[74:75], s[28:29], 24
-; GFX11-NEXT:    s_lshr_b64 s[76:77], s[26:27], 24
-; GFX11-NEXT:    s_lshr_b64 s[72:73], s[24:25], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 16
-; GFX11-NEXT:    s_lshr_b32 s42, s11, 8
-; GFX11-NEXT:    s_lshr_b64 s[78:79], s[22:23], 24
+; GFX11-NEXT:    s_lshr_b32 s34, s4, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 20
+; GFX11-NEXT:    s_lshr_b32 s43, s20, 16
+; GFX11-NEXT:    s_lshr_b32 s35, s7, 24
+; GFX11-NEXT:    s_lshr_b32 s37, s7, 16
+; GFX11-NEXT:    s_lshr_b32 s36, s7, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 21
+; GFX11-NEXT:    s_lshr_b32 s43, s20, 8
+; GFX11-NEXT:    s_lshr_b32 s61, s6, 16
+; GFX11-NEXT:    s_lshr_b32 s38, s6, 8
+; GFX11-NEXT:    s_lshr_b32 s48, s9, 24
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 22
+; GFX11-NEXT:    s_lshr_b32 s43, s19, 8
+; GFX11-NEXT:    s_lshr_b32 s39, s9, 16
+; GFX11-NEXT:    s_lshr_b32 s45, s9, 8
+; GFX11-NEXT:    s_lshr_b32 s44, s8, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 23
+; GFX11-NEXT:    s_lshr_b32 s43, s18, 16
+; GFX11-NEXT:    s_lshr_b32 s47, s11, 24
+; GFX11-NEXT:    s_lshr_b32 s49, s11, 16
+; GFX11-NEXT:    s_lshr_b32 s46, s11, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 24
+; GFX11-NEXT:    s_lshr_b32 s43, s18, 8
+; GFX11-NEXT:    s_lshr_b32 s51, s10, 16
+; GFX11-NEXT:    s_lshr_b32 s50, s10, 8
+; GFX11-NEXT:    s_lshr_b32 s57, s13, 24
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 25
+; GFX11-NEXT:    s_lshr_b32 s43, s17, 24
+; GFX11-NEXT:    s_lshr_b32 s56, s13, 16
+; GFX11-NEXT:    s_lshr_b32 s59, s13, 8
+; GFX11-NEXT:    s_lshr_b32 s58, s12, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 26
+; GFX11-NEXT:    s_lshr_b32 s43, s17, 16
+; GFX11-NEXT:    s_lshr_b32 s60, s15, 24
+; GFX11-NEXT:    s_lshr_b32 s53, s15, 16
+; GFX11-NEXT:    s_lshr_b32 s52, s15, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 27
+; GFX11-NEXT:    s_lshr_b32 s43, s17, 8
+; GFX11-NEXT:    s_lshr_b32 s62, s14, 16
+; GFX11-NEXT:    s_lshr_b32 s63, s14, 8
+; GFX11-NEXT:    s_lshr_b32 s54, s41, 24
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 28
+; GFX11-NEXT:    s_lshr_b32 s43, s16, 16
+; GFX11-NEXT:    s_lshr_b32 s55, s41, 16
+; GFX11-NEXT:    s_lshr_b32 s64, s41, 8
+; GFX11-NEXT:    s_lshr_b32 s66, s40, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 29
+; GFX11-NEXT:    s_lshr_b32 s43, s16, 8
+; GFX11-NEXT:    s_lshr_b32 s65, s40, 8
+; GFX11-NEXT:    s_lshr_b32 s69, s29, 24
+; GFX11-NEXT:    s_lshr_b32 s71, s29, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 30
+; GFX11-NEXT:    s_lshr_b32 s43, s3, 24
+; GFX11-NEXT:    s_lshr_b32 s67, s29, 8
+; GFX11-NEXT:    s_lshr_b32 s81, s28, 16
+; GFX11-NEXT:    s_lshr_b32 s80, s28, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 31
+; GFX11-NEXT:    s_lshr_b32 s43, s3, 16
+; GFX11-NEXT:    s_lshr_b32 s82, s27, 24
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 0
+; GFX11-NEXT:    s_lshr_b32 s43, s3, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 16
+; GFX11-NEXT:    s_lshr_b32 s83, s27, 16
+; GFX11-NEXT:    s_lshr_b32 s84, s27, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 1
+; GFX11-NEXT:    s_lshr_b32 s43, s2, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 17
+; GFX11-NEXT:    s_lshr_b32 s86, s26, 16
+; GFX11-NEXT:    s_lshr_b32 s85, s26, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 2
+; GFX11-NEXT:    s_lshr_b32 s43, s2, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 14
+; GFX11-NEXT:    s_lshr_b32 s96, s25, 24
+; GFX11-NEXT:    s_lshr_b32 s97, s25, 16
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 3
+; GFX11-NEXT:    s_lshr_b32 s43, s1, 24
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 15
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[10:11], 24
+; GFX11-NEXT:    s_lshr_b32 s87, s25, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 4
+; GFX11-NEXT:    s_lshr_b32 s43, s1, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 12
+; GFX11-NEXT:    s_lshr_b32 s99, s24, 16
+; GFX11-NEXT:    s_lshr_b32 s98, s24, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 5
+; GFX11-NEXT:    s_lshr_b32 s43, s1, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 13
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[12:13], 24
+; GFX11-NEXT:    s_lshr_b32 s101, s23, 24
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 6
+; GFX11-NEXT:    s_lshr_b32 s43, s0, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 10
+; GFX11-NEXT:    s_lshr_b32 s102, s23, 16
+; GFX11-NEXT:    s_lshr_b32 s100, s23, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 7
+; GFX11-NEXT:    s_lshr_b32 s43, s0, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 11
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[14:15], 24
+; GFX11-NEXT:    s_lshr_b32 s76, s22, 8
+; GFX11-NEXT:    s_lshr_b32 s78, s21, 24
+; GFX11-NEXT:    s_lshr_b32 s77, s21, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 8
+; GFX11-NEXT:    s_lshr_b32 s68, s21, 8
+; GFX11-NEXT:    s_lshr_b32 s79, s19, 24
+; GFX11-NEXT:    s_lshr_b32 s70, s19, 16
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 9
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[40:41], 24
+; GFX11-NEXT:    s_lshr_b64 s[72:73], s[6:7], 24
 ; GFX11-NEXT:    s_lshr_b64 s[88:89], s[20:21], 24
 ; GFX11-NEXT:    s_lshr_b64 s[90:91], s[18:19], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 17
-; GFX11-NEXT:    s_lshr_b32 s42, s10, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 6
 ; GFX11-NEXT:    s_lshr_b64 s[92:93], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[94:95], s[2:3], 24
-; GFX11-NEXT:    s_lshr_b64 s[30:31], s[0:1], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 18
-; GFX11-NEXT:    s_lshr_b32 s42, s10, 8
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 19
-; GFX11-NEXT:    s_lshr_b32 s42, s13, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 20
-; GFX11-NEXT:    s_lshr_b32 s42, s13, 16
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 21
-; GFX11-NEXT:    s_lshr_b32 s42, s13, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 22
-; GFX11-NEXT:    s_lshr_b32 s42, s12, 16
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 23
-; GFX11-NEXT:    s_lshr_b32 s42, s12, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 24
-; GFX11-NEXT:    s_lshr_b32 s42, s15, 24
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 25
-; GFX11-NEXT:    s_lshr_b32 s42, s15, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 26
-; GFX11-NEXT:    s_lshr_b32 s42, s15, 8
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 27
-; GFX11-NEXT:    s_lshr_b32 s42, s14, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 28
-; GFX11-NEXT:    s_lshr_b32 s42, s14, 8
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 29
-; GFX11-NEXT:    s_lshr_b32 s42, s41, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 30
-; GFX11-NEXT:    s_lshr_b32 s42, s41, 16
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 31
-; GFX11-NEXT:    s_lshr_b32 s42, s41, 8
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 0
-; GFX11-NEXT:    s_lshr_b32 s42, s40, 16
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 1
-; GFX11-NEXT:    s_lshr_b32 s42, s40, 8
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 2
-; GFX11-NEXT:    s_lshr_b32 s42, s29, 24
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 3
-; GFX11-NEXT:    s_lshr_b32 s42, s29, 16
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 4
-; GFX11-NEXT:    s_lshr_b32 s42, s29, 8
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 5
-; GFX11-NEXT:    s_lshr_b32 s42, s28, 16
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 6
-; GFX11-NEXT:    s_lshr_b32 s42, s28, 8
+; GFX11-NEXT:    s_lshr_b64 vcc, s[0:1], 24
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 7
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[28:29], 24
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 4
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 5
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[26:27], 24
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 2
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 3
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[24:25], 24
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 7
-; GFX11-NEXT:    s_lshr_b64 s[42:43], s[4:5], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, vcc_lo
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 0
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 1
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[22:23], 24
+; GFX11-NEXT:    s_branch .LBB13_3
+; GFX11-NEXT:  .LBB13_2:
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    s_mov_b32 s103, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $vcc_lo
+; GFX11-NEXT:    ; implicit-def: $sgpr94
+; GFX11-NEXT:    ; implicit-def: $sgpr92
+; GFX11-NEXT:    ; implicit-def: $sgpr90
+; GFX11-NEXT:    ; implicit-def: $sgpr70
+; GFX11-NEXT:    ; implicit-def: $sgpr79
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr68
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr100
+; GFX11-NEXT:    ; implicit-def: $sgpr102
+; GFX11-NEXT:    ; implicit-def: $sgpr101
+; GFX11-NEXT:    ; implicit-def: $sgpr98
+; GFX11-NEXT:    ; implicit-def: $sgpr99
+; GFX11-NEXT:    ; implicit-def: $sgpr87
+; GFX11-NEXT:    ; implicit-def: $sgpr97
+; GFX11-NEXT:    ; implicit-def: $sgpr96
+; GFX11-NEXT:    ; implicit-def: $sgpr85
+; GFX11-NEXT:    ; implicit-def: $sgpr86
+; GFX11-NEXT:    ; implicit-def: $sgpr84
+; GFX11-NEXT:    ; implicit-def: $sgpr83
+; GFX11-NEXT:    ; implicit-def: $sgpr82
+; GFX11-NEXT:    ; implicit-def: $sgpr80
+; GFX11-NEXT:    ; implicit-def: $sgpr81
+; GFX11-NEXT:    ; implicit-def: $sgpr67
+; GFX11-NEXT:    ; implicit-def: $sgpr71
+; GFX11-NEXT:    ; implicit-def: $sgpr69
+; GFX11-NEXT:    ; implicit-def: $sgpr65
+; GFX11-NEXT:    ; implicit-def: $sgpr66
+; GFX11-NEXT:    ; implicit-def: $sgpr64
+; GFX11-NEXT:    ; implicit-def: $sgpr55
+; GFX11-NEXT:    ; implicit-def: $sgpr54
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr52
+; GFX11-NEXT:    ; implicit-def: $sgpr53
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr50
+; GFX11-NEXT:    ; implicit-def: $sgpr51
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr49
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr39
+; GFX11-NEXT:    ; implicit-def: $sgpr48
+; GFX11-NEXT:    ; implicit-def: $sgpr38
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr36
+; GFX11-NEXT:    ; implicit-def: $sgpr37
+; GFX11-NEXT:    ; implicit-def: $sgpr35
+; GFX11-NEXT:    ; implicit-def: $sgpr34
+; GFX11-NEXT:    ; implicit-def: $sgpr30
+; GFX11-NEXT:    ; implicit-def: $sgpr104
+; GFX11-NEXT:    ; implicit-def: $sgpr31
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    v_writelane_b32 v26, s42, 0
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 1
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 2
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 3
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 4
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 5
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 6
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 7
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 9
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 10
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 11
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 12
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 13
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 14
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 15
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 17
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:  .LBB13_3: ; %Flow
+; GFX11-NEXT:    s_and_b32 s43, s103, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s43, 1, 0
+; GFX11-NEXT:    s_mov_b32 s103, s31
+; GFX11-NEXT:    s_cmp_lg_u32 s43, 1
+; GFX11-NEXT:    s_mov_b32 s31, s42
+; GFX11-NEXT:    s_mov_b32 s42, s61
+; GFX11-NEXT:    s_mov_b32 s43, s48
+; GFX11-NEXT:    v_readlane_b32 s48, v26, 18
+; GFX11-NEXT:    v_readlane_b32 s61, v26, 19
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
+; GFX11-NEXT:    s_add_i32 s22, s22, 3
+; GFX11-NEXT:    s_add_i32 s20, s20, 3
+; GFX11-NEXT:    s_lshr_b32 s72, s22, 16
+; GFX11-NEXT:    s_add_i32 s19, s19, 3
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 20
+; GFX11-NEXT:    s_lshr_b32 s72, s20, 16
+; GFX11-NEXT:    s_add_i32 s18, s18, 3
+; GFX11-NEXT:    s_add_i32 s17, s17, 3
+; GFX11-NEXT:    s_add_i32 s16, s16, 3
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 21
+; GFX11-NEXT:    s_lshr_b32 s72, s20, 8
+; GFX11-NEXT:    s_add_i32 s3, s3, 3
+; GFX11-NEXT:    s_add_i32 s2, s2, 3
+; GFX11-NEXT:    s_add_i32 s1, s1, 3
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 22
+; GFX11-NEXT:    s_lshr_b32 s72, s19, 8
+; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
-; GFX11-NEXT:    s_lshr_b32 s42, s5, 24
-; GFX11-NEXT:    s_add_i32 s7, s7, 3
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 0
-; GFX11-NEXT:    s_lshr_b32 s42, s5, 16
-; GFX11-NEXT:    s_add_i32 s6, s6, 3
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 23
+; GFX11-NEXT:    s_lshr_b32 s72, s18, 16
 ; GFX11-NEXT:    s_add_i32 s9, s9, 3
 ; GFX11-NEXT:    s_add_i32 s8, s8, 3
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 1
-; GFX11-NEXT:    s_lshr_b32 s42, s5, 8
 ; GFX11-NEXT:    s_add_i32 s11, s11, 3
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 24
+; GFX11-NEXT:    s_lshr_b32 s72, s18, 8
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[8:9], 24
 ; GFX11-NEXT:    s_add_i32 s10, s10, 3
 ; GFX11-NEXT:    s_add_i32 s13, s13, 3
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 2
-; GFX11-NEXT:    s_lshr_b32 s42, s4, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 25
+; GFX11-NEXT:    s_lshr_b32 s72, s17, 24
 ; GFX11-NEXT:    s_add_i32 s12, s12, 3
 ; GFX11-NEXT:    s_add_i32 s15, s15, 3
 ; GFX11-NEXT:    s_add_i32 s14, s14, 3
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 3
-; GFX11-NEXT:    s_lshr_b32 s42, s4, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 26
+; GFX11-NEXT:    s_lshr_b32 s72, s17, 16
 ; GFX11-NEXT:    s_add_i32 s41, s41, 3
 ; GFX11-NEXT:    s_add_i32 s40, s40, 3
 ; GFX11-NEXT:    s_add_i32 s29, s29, 3
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 4
-; GFX11-NEXT:    s_lshr_b32 s42, s7, 24
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 27
+; GFX11-NEXT:    s_lshr_b32 s72, s17, 8
 ; GFX11-NEXT:    s_add_i32 s28, s28, 3
-; GFX11-NEXT:    s_add_i32 s1, s1, 3
-; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 5
-; GFX11-NEXT:    s_lshr_b32 s42, s7, 16
-; GFX11-NEXT:    s_add_i32 s3, s3, 3
-; GFX11-NEXT:    s_add_i32 s2, s2, 3
-; GFX11-NEXT:    s_add_i32 s17, s17, 3
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 6
-; GFX11-NEXT:    s_lshr_b32 s42, s7, 8
-; GFX11-NEXT:    s_add_i32 s16, s16, 3
-; GFX11-NEXT:    s_add_i32 s19, s19, 3
-; GFX11-NEXT:    s_add_i32 s18, s18, 3
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 7
-; GFX11-NEXT:    s_lshr_b32 s42, s6, 16
-; GFX11-NEXT:    s_add_i32 s21, s21, 3
-; GFX11-NEXT:    s_add_i32 s20, s20, 3
-; GFX11-NEXT:    s_add_i32 s23, s23, 3
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 8
-; GFX11-NEXT:    s_lshr_b32 s42, s6, 8
-; GFX11-NEXT:    s_add_i32 s22, s22, 3
-; GFX11-NEXT:    s_add_i32 s25, s25, 3
-; GFX11-NEXT:    s_add_i32 s24, s24, 3
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 9
-; GFX11-NEXT:    s_lshr_b32 s42, s9, 24
 ; GFX11-NEXT:    s_add_i32 s27, s27, 3
 ; GFX11-NEXT:    s_add_i32 s26, s26, 3
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s27, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 10
-; GFX11-NEXT:    s_lshr_b32 s42, s9, 16
-; GFX11-NEXT:    s_lshr_b32 s34, s27, 16
-; GFX11-NEXT:    s_lshr_b32 s35, s27, 8
-; GFX11-NEXT:    s_lshr_b32 s37, s26, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 11
-; GFX11-NEXT:    s_lshr_b32 s42, s9, 8
-; GFX11-NEXT:    s_lshr_b32 s36, s26, 8
-; GFX11-NEXT:    s_lshr_b32 s39, s25, 24
-; GFX11-NEXT:    s_lshr_b32 s48, s25, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 12
-; GFX11-NEXT:    s_lshr_b32 s42, s8, 16
-; GFX11-NEXT:    s_lshr_b32 s38, s25, 8
-; GFX11-NEXT:    s_lshr_b32 s50, s24, 16
-; GFX11-NEXT:    s_lshr_b32 s49, s24, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 13
-; GFX11-NEXT:    s_lshr_b32 s42, s8, 8
-; GFX11-NEXT:    s_lshr_b32 s52, s23, 24
-; GFX11-NEXT:    s_lshr_b32 s53, s23, 16
-; GFX11-NEXT:    s_lshr_b32 s51, s23, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 14
-; GFX11-NEXT:    s_lshr_b32 s42, s11, 24
-; GFX11-NEXT:    s_lshr_b32 s69, s22, 16
-; GFX11-NEXT:    s_lshr_b32 s54, s22, 8
-; GFX11-NEXT:    s_lshr_b32 s55, s21, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 15
-; GFX11-NEXT:    s_lshr_b32 s42, s11, 16
-; GFX11-NEXT:    s_lshr_b32 s64, s21, 16
-; GFX11-NEXT:    s_lshr_b32 s65, s21, 8
-; GFX11-NEXT:    s_lshr_b32 s82, s20, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 16
-; GFX11-NEXT:    s_lshr_b32 s42, s11, 8
-; GFX11-NEXT:    s_lshr_b32 s68, s20, 8
-; GFX11-NEXT:    s_lshr_b32 s66, s19, 24
-; GFX11-NEXT:    s_lshr_b32 s67, s19, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 17
-; GFX11-NEXT:    s_lshr_b32 s42, s10, 16
-; GFX11-NEXT:    s_lshr_b32 s85, s19, 8
-; GFX11-NEXT:    s_lshr_b32 s86, s18, 16
-; GFX11-NEXT:    s_lshr_b32 s87, s18, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 18
-; GFX11-NEXT:    s_lshr_b32 s42, s10, 8
-; GFX11-NEXT:    s_lshr_b32 s70, s17, 24
-; GFX11-NEXT:    s_lshr_b32 s71, s17, 16
-; GFX11-NEXT:    s_lshr_b32 s96, s17, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 19
-; GFX11-NEXT:    s_lshr_b32 s42, s13, 24
-; GFX11-NEXT:    s_lshr_b32 s97, s16, 16
-; GFX11-NEXT:    s_lshr_b32 s98, s16, 8
-; GFX11-NEXT:    s_lshr_b32 s80, s3, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 20
-; GFX11-NEXT:    s_lshr_b32 s42, s13, 16
-; GFX11-NEXT:    s_lshr_b32 s81, s3, 16
-; GFX11-NEXT:    s_lshr_b32 s99, s3, 8
-; GFX11-NEXT:    s_lshr_b32 s100, s2, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 21
-; GFX11-NEXT:    s_lshr_b32 s42, s13, 8
-; GFX11-NEXT:    s_lshr_b32 s101, s2, 8
-; GFX11-NEXT:    s_lshr_b32 s83, s1, 24
-; GFX11-NEXT:    s_lshr_b32 s84, s1, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 22
-; GFX11-NEXT:    s_lshr_b32 s42, s12, 16
-; GFX11-NEXT:    s_lshr_b32 s102, s1, 8
-; GFX11-NEXT:    s_lshr_b32 s103, s0, 16
-; GFX11-NEXT:    s_lshr_b32 s104, s0, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 23
-; GFX11-NEXT:    s_lshr_b32 s42, s12, 8
-; GFX11-NEXT:    s_lshr_b64 s[44:45], s[6:7], 24
-; GFX11-NEXT:    s_lshr_b64 s[46:47], s[8:9], 24
-; GFX11-NEXT:    s_lshr_b64 s[56:57], s[10:11], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 24
-; GFX11-NEXT:    s_lshr_b32 s42, s15, 24
-; GFX11-NEXT:    s_lshr_b64 s[58:59], s[12:13], 24
-; GFX11-NEXT:    s_lshr_b64 s[60:61], s[14:15], 24
-; GFX11-NEXT:    s_lshr_b64 s[62:63], s[40:41], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 25
-; GFX11-NEXT:    s_lshr_b32 s42, s15, 16
-; GFX11-NEXT:    s_lshr_b64 s[74:75], s[28:29], 24
-; GFX11-NEXT:    s_lshr_b64 s[76:77], s[26:27], 24
-; GFX11-NEXT:    s_lshr_b64 s[72:73], s[24:25], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 26
-; GFX11-NEXT:    s_lshr_b32 s42, s15, 8
-; GFX11-NEXT:    s_lshr_b64 s[78:79], s[22:23], 24
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 28
+; GFX11-NEXT:    s_lshr_b32 s72, s16, 16
+; GFX11-NEXT:    s_add_i32 s25, s25, 3
+; GFX11-NEXT:    s_add_i32 s24, s24, 3
+; GFX11-NEXT:    s_add_i32 s21, s21, 3
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 29
+; GFX11-NEXT:    s_lshr_b32 s72, s16, 8
+; GFX11-NEXT:    s_add_i32 s23, s23, 3
+; GFX11-NEXT:    s_add_i32 s7, s7, 3
+; GFX11-NEXT:    s_add_i32 s6, s6, 3
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 30
+; GFX11-NEXT:    s_lshr_b32 s72, s3, 24
+; GFX11-NEXT:    s_lshr_b32 s103, s5, 24
+; GFX11-NEXT:    s_lshr_b32 s104, s5, 16
+; GFX11-NEXT:    s_lshr_b32 s30, s5, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 31
+; GFX11-NEXT:    s_lshr_b32 s72, s3, 16
+; GFX11-NEXT:    s_lshr_b32 s31, s4, 16
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 0
+; GFX11-NEXT:    s_lshr_b32 s72, s3, 8
+; GFX11-NEXT:    s_lshr_b32 s34, s4, 8
+; GFX11-NEXT:    s_lshr_b32 s35, s7, 24
+; GFX11-NEXT:    s_lshr_b32 s37, s7, 16
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 1
+; GFX11-NEXT:    s_lshr_b32 s72, s2, 16
+; GFX11-NEXT:    s_lshr_b32 s36, s7, 8
+; GFX11-NEXT:    s_lshr_b32 s42, s6, 16
+; GFX11-NEXT:    s_lshr_b32 s38, s6, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 2
+; GFX11-NEXT:    s_lshr_b32 s72, s2, 8
+; GFX11-NEXT:    s_lshr_b32 s43, s9, 24
+; GFX11-NEXT:    s_lshr_b32 s39, s9, 16
+; GFX11-NEXT:    s_lshr_b32 s45, s9, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 3
+; GFX11-NEXT:    s_lshr_b32 s72, s1, 24
+; GFX11-NEXT:    s_lshr_b32 s48, s8, 16
+; GFX11-NEXT:    s_lshr_b32 s44, s8, 8
+; GFX11-NEXT:    s_lshr_b32 s47, s11, 24
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 4
+; GFX11-NEXT:    s_lshr_b32 s72, s1, 16
+; GFX11-NEXT:    s_lshr_b32 s49, s11, 16
+; GFX11-NEXT:    s_lshr_b32 s46, s11, 8
+; GFX11-NEXT:    s_lshr_b32 s51, s10, 16
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 5
+; GFX11-NEXT:    s_lshr_b32 s72, s1, 8
+; GFX11-NEXT:    s_lshr_b32 s50, s10, 8
+; GFX11-NEXT:    s_lshr_b32 s57, s13, 24
+; GFX11-NEXT:    s_lshr_b32 s56, s13, 16
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 6
+; GFX11-NEXT:    s_lshr_b32 s72, s0, 16
+; GFX11-NEXT:    s_lshr_b32 s59, s13, 8
+; GFX11-NEXT:    s_lshr_b32 s61, s12, 16
+; GFX11-NEXT:    s_lshr_b32 s58, s12, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 7
+; GFX11-NEXT:    s_lshr_b32 s72, s0, 8
+; GFX11-NEXT:    s_lshr_b32 s60, s15, 24
+; GFX11-NEXT:    s_lshr_b32 s53, s15, 16
+; GFX11-NEXT:    s_lshr_b32 s52, s15, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 8
+; GFX11-NEXT:    s_lshr_b64 s[72:73], s[4:5], 24
+; GFX11-NEXT:    s_lshr_b32 s62, s14, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 16
+; GFX11-NEXT:    s_lshr_b32 s63, s14, 8
+; GFX11-NEXT:    s_lshr_b32 s54, s41, 24
+; GFX11-NEXT:    s_lshr_b32 s55, s41, 16
+; GFX11-NEXT:    s_lshr_b32 s64, s41, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 17
+; GFX11-NEXT:    s_lshr_b32 s66, s40, 16
+; GFX11-NEXT:    s_lshr_b32 s65, s40, 8
+; GFX11-NEXT:    s_lshr_b32 s69, s29, 24
+; GFX11-NEXT:    s_lshr_b32 s71, s29, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 14
+; GFX11-NEXT:    s_lshr_b32 s67, s29, 8
+; GFX11-NEXT:    s_lshr_b32 s81, s28, 16
+; GFX11-NEXT:    s_lshr_b32 s80, s28, 8
+; GFX11-NEXT:    s_lshr_b32 s82, s27, 24
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 15
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[10:11], 24
+; GFX11-NEXT:    s_lshr_b32 s83, s27, 16
+; GFX11-NEXT:    s_lshr_b32 s84, s27, 8
+; GFX11-NEXT:    s_lshr_b32 s86, s26, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 12
+; GFX11-NEXT:    s_lshr_b32 s85, s26, 8
+; GFX11-NEXT:    s_lshr_b32 s96, s25, 24
+; GFX11-NEXT:    s_lshr_b32 s97, s25, 16
+; GFX11-NEXT:    s_lshr_b32 s87, s25, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 13
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[12:13], 24
+; GFX11-NEXT:    s_lshr_b32 s99, s24, 16
+; GFX11-NEXT:    s_lshr_b32 s98, s24, 8
+; GFX11-NEXT:    s_lshr_b32 s101, s23, 24
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 10
+; GFX11-NEXT:    s_lshr_b32 s102, s23, 16
+; GFX11-NEXT:    s_lshr_b32 s100, s23, 8
+; GFX11-NEXT:    s_lshr_b32 s76, s22, 8
+; GFX11-NEXT:    s_lshr_b32 s78, s21, 24
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 11
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[14:15], 24
+; GFX11-NEXT:    s_lshr_b32 s77, s21, 16
+; GFX11-NEXT:    s_lshr_b32 s68, s21, 8
+; GFX11-NEXT:    s_lshr_b32 s79, s19, 24
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 8
+; GFX11-NEXT:    s_lshr_b32 s70, s19, 16
+; GFX11-NEXT:    s_lshr_b64 s[72:73], s[6:7], 24
 ; GFX11-NEXT:    s_lshr_b64 s[88:89], s[20:21], 24
 ; GFX11-NEXT:    s_lshr_b64 s[90:91], s[18:19], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 27
-; GFX11-NEXT:    s_lshr_b32 s42, s14, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 9
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[40:41], 24
 ; GFX11-NEXT:    s_lshr_b64 s[92:93], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[94:95], s[2:3], 24
-; GFX11-NEXT:    s_lshr_b64 s[30:31], s[0:1], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 28
-; GFX11-NEXT:    s_lshr_b32 s42, s14, 8
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 29
-; GFX11-NEXT:    s_lshr_b32 s42, s41, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 30
-; GFX11-NEXT:    s_lshr_b32 s42, s41, 16
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 31
-; GFX11-NEXT:    s_lshr_b32 s42, s41, 8
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 0
-; GFX11-NEXT:    s_lshr_b32 s42, s40, 16
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 1
-; GFX11-NEXT:    s_lshr_b32 s42, s40, 8
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 2
-; GFX11-NEXT:    s_lshr_b32 s42, s29, 24
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 3
-; GFX11-NEXT:    s_lshr_b32 s42, s29, 16
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 4
-; GFX11-NEXT:    s_lshr_b32 s42, s29, 8
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 5
-; GFX11-NEXT:    s_lshr_b32 s42, s28, 16
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 6
-; GFX11-NEXT:    s_lshr_b32 s42, s28, 8
+; GFX11-NEXT:    s_lshr_b64 vcc, s[0:1], 24
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 6
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 7
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[28:29], 24
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 4
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 5
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[26:27], 24
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 2
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 3
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[24:25], 24
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 7
-; GFX11-NEXT:    s_lshr_b64 s[42:43], s[4:5], 24
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 0
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 1
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[22:23], 24
+; GFX11-NEXT:  .LBB13_5: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)
-; GFX11-NEXT:    v_perm_b32 v2, s103, s30, v1
-; GFX11-NEXT:    v_readlane_b32 s30, v24, 7
-; GFX11-NEXT:    v_readlane_b32 s31, v24, 8
-; GFX11-NEXT:    v_readlane_b32 s103, v24, 5
+; GFX11-NEXT:    v_readlane_b32 s73, v25, 7
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
+; GFX11-NEXT:    v_perm_b32 v2, s73, vcc_lo, v1
+; GFX11-NEXT:    v_readlane_b32 s73, v25, 8
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
-; GFX11-NEXT:    v_perm_b32 v18, s84, s83, v1
-; GFX11-NEXT:    v_perm_b32 v3, s0, s104, v1
-; GFX11-NEXT:    v_perm_b32 v4, s1, s102, v1
-; GFX11-NEXT:    v_perm_b32 v5, s100, s94, v1
-; GFX11-NEXT:    v_perm_b32 v19, s81, s80, v1
-; GFX11-NEXT:    v_lshlrev_b32_e32 v18, 16, v18
-; GFX11-NEXT:    v_perm_b32 v6, s2, s101, v1
-; GFX11-NEXT:    v_perm_b32 v7, s3, s99, v1
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX11-NEXT:    v_perm_b32 v3, s0, s73, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v25, 6
+; GFX11-NEXT:    v_perm_b32 v21, s70, s79, v1
+; GFX11-NEXT:    v_perm_b32 v22, s77, s78, v1
+; GFX11-NEXT:    v_perm_b32 v17, s21, s68, v1
 ; GFX11-NEXT:    v_or_b32_e32 v2, v3, v2
-; GFX11-NEXT:    v_perm_b32 v8, s97, s92, v1
+; GFX11-NEXT:    v_perm_b32 v4, s1, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v25, 2
+; GFX11-NEXT:    v_readlane_b32 s1, v25, 5
+; GFX11-NEXT:    v_readlane_b32 s70, v23, 20
+; GFX11-NEXT:    v_readlane_b32 s68, v23, 18
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX11-NEXT:    v_perm_b32 v5, s0, s94, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v25, 3
+; GFX11-NEXT:    v_perm_b32 v6, s2, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v25, 1
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX11-NEXT:    v_perm_b32 v7, s3, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 29
+; GFX11-NEXT:    v_perm_b32 v8, s0, s92, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 30
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX11-NEXT:    v_perm_b32 v9, s16, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 28
+; GFX11-NEXT:    v_perm_b32 v10, s17, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 24
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX11-NEXT:    v_perm_b32 v11, s0, s90, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 25
+; GFX11-NEXT:    v_perm_b32 v12, s18, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 23
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX11-NEXT:    v_perm_b32 v13, s19, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 21
+; GFX11-NEXT:    v_perm_b32 v14, s0, s88, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 20
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX11-NEXT:    v_perm_b32 v15, s0, s74, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 22
+; GFX11-NEXT:    v_perm_b32 v16, s20, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v25, 4
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)
+; GFX11-NEXT:    v_perm_b32 v18, s1, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 31
+; GFX11-NEXT:    v_readlane_b32 s1, v25, 0
+; GFX11-NEXT:    v_lshlrev_b32_e32 v18, 16, v18
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_4)
+; GFX11-NEXT:    v_perm_b32 v19, s1, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 26
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 27
 ; GFX11-NEXT:    v_or_b32_e32 v3, v4, v18
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v4, 16, v5
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v19
-; GFX11-NEXT:    v_perm_b32 v11, s86, s90, v1
-; GFX11-NEXT:    v_perm_b32 v20, s71, s70, v1
-; GFX11-NEXT:    v_perm_b32 v21, s67, s66, v1
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_4)
+; GFX11-NEXT:    v_perm_b32 v20, s1, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 0
 ; GFX11-NEXT:    v_or_b32_e32 v4, v6, v4
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v5, v7, v5
-; GFX11-NEXT:    v_perm_b32 v9, s16, s98, v1
-; GFX11-NEXT:    v_perm_b32 v10, s17, s96, v1
-; GFX11-NEXT:    v_perm_b32 v12, s18, s87, v1
-; GFX11-NEXT:    v_perm_b32 v13, s19, s85, v1
-; GFX11-NEXT:    v_perm_b32 v22, s64, s55, v1
+; GFX11-NEXT:    v_perm_b32 v6, s102, s101, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v7, 16, v14
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 1
+; GFX11-NEXT:    v_perm_b32 v14, s7, s36, v1
 ; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 16, v8
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 16, v20
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v4, 16, v11
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v21
-; GFX11-NEXT:    v_perm_b32 v14, s82, s88, v1
-; GFX11-NEXT:    v_perm_b32 v17, s21, s65, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v8, 16, v22
 ; GFX11-NEXT:    v_or_b32_e32 v2, v9, v2
 ; GFX11-NEXT:    v_or_b32_e32 v3, v10, v3
 ; GFX11-NEXT:    v_or_b32_e32 v4, v12, v4
 ; GFX11-NEXT:    v_or_b32_e32 v5, v13, v5
-; GFX11-NEXT:    v_lshlrev_b32_e32 v8, 16, v22
-; GFX11-NEXT:    v_perm_b32 v15, s69, s78, v1
-; GFX11-NEXT:    v_perm_b32 v16, s20, s68, v1
-; GFX11-NEXT:    v_perm_b32 v6, s53, s52, v1
-; GFX11-NEXT:    v_lshlrev_b32_e32 v7, 16, v14
-; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:16
-; GFX11-NEXT:    v_or_b32_e32 v3, v17, v8
-; GFX11-NEXT:    v_perm_b32 v8, s48, s39, v1
-; GFX11-NEXT:    v_perm_b32 v9, s22, s54, v1
+; GFX11-NEXT:    v_perm_b32 v9, s22, s76, v1
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v10, 16, v15
-; GFX11-NEXT:    v_or_b32_e32 v2, v16, v7
-; GFX11-NEXT:    v_perm_b32 v5, s50, s72, v1
-; GFX11-NEXT:    v_perm_b32 v7, s23, s51, v1
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
-; GFX11-NEXT:    v_perm_b32 v11, s25, s38, v1
-; GFX11-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
-; GFX11-NEXT:    v_readlane_b32 s0, v25, 6
+; GFX11-NEXT:    v_perm_b32 v11, s25, s87, v1
+; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:16
+; GFX11-NEXT:    v_or_b32_e32 v2, v16, v7
+; GFX11-NEXT:    v_or_b32_e32 v3, v17, v8
+; GFX11-NEXT:    v_perm_b32 v5, s99, s0, v1
+; GFX11-NEXT:    v_perm_b32 v7, s23, s100, v1
+; GFX11-NEXT:    v_perm_b32 v8, s97, s96, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 2
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 3
 ; GFX11-NEXT:    v_or_b32_e32 v4, v9, v10
+; GFX11-NEXT:    v_perm_b32 v9, s24, s98, v1
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v10, 16, v5
+; GFX11-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
+; GFX11-NEXT:    v_perm_b32 v12, s86, s0, v1
 ; GFX11-NEXT:    v_or_b32_e32 v5, v7, v6
-; GFX11-NEXT:    v_or_b32_e32 v7, v11, v8
-; GFX11-NEXT:    v_perm_b32 v11, s0, s74, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v25, 3
-; GFX11-NEXT:    v_readlane_b32 s1, v25, 4
-; GFX11-NEXT:    v_perm_b32 v9, s24, s49, v1
-; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:32
-; GFX11-NEXT:    v_perm_b32 v12, s37, s76, v1
-; GFX11-NEXT:    v_perm_b32 v8, s26, s36, v1
-; GFX11-NEXT:    v_perm_b32 v2, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v25, 7
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 4
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 5
 ; GFX11-NEXT:    v_or_b32_e32 v6, v9, v10
-; GFX11-NEXT:    v_perm_b32 v10, s34, vcc_hi, v1
+; GFX11-NEXT:    v_or_b32_e32 v7, v11, v8
+; GFX11-NEXT:    v_perm_b32 v8, s26, s85, v1
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v12
-; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v11
-; GFX11-NEXT:    v_perm_b32 v4, s28, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v25, 5
-; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 16, v10
+; GFX11-NEXT:    v_perm_b32 v10, s83, s82, v1
+; GFX11-NEXT:    v_perm_b32 v11, s81, s0, v1
+; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:32
+; GFX11-NEXT:    v_perm_b32 v2, s71, s69, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 6
 ; GFX11-NEXT:    v_or_b32_e32 v8, v8, v9
-; GFX11-NEXT:    v_perm_b32 v9, s27, s35, v1
+; GFX11-NEXT:    v_perm_b32 v9, s27, s84, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 16, v10
+; GFX11-NEXT:    v_perm_b32 v4, s28, s80, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v11
+; GFX11-NEXT:    v_perm_b32 v10, s29, s67, v1
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v2
-; GFX11-NEXT:    v_perm_b32 v10, s29, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v25, 1
-; GFX11-NEXT:    v_or_b32_e32 v2, v4, v5
-; GFX11-NEXT:    v_readlane_b32 s1, v26, 31
+; GFX11-NEXT:    v_perm_b32 v12, s66, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 7
 ; GFX11-NEXT:    v_or_b32_e32 v9, v9, v3
+; GFX11-NEXT:    v_or_b32_e32 v2, v4, v5
 ; GFX11-NEXT:    v_or_b32_e32 v3, v10, v11
-; GFX11-NEXT:    v_perm_b32 v12, s0, s62, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v25, 2
-; GFX11-NEXT:    v_readlane_b32 s104, v24, 6
+; GFX11-NEXT:    v_perm_b32 v4, s40, s65, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v12
+; GFX11-NEXT:    v_perm_b32 v10, s55, s54, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 8
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 9
 ; GFX11-NEXT:    scratch_store_b128 v0, v[6:9], off offset:48
-; GFX11-NEXT:    v_readlane_b32 s102, v24, 4
+; GFX11-NEXT:    v_or_b32_e32 v4, v4, v5
+; GFX11-NEXT:    v_perm_b32 v5, s41, s64, v1
+; GFX11-NEXT:    v_perm_b32 v11, s62, s0, v1
+; GFX11-NEXT:    v_perm_b32 v6, s53, s60, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v7, 16, v10
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 10
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 11
+; GFX11-NEXT:    v_perm_b32 v8, s14, s63, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v11
+; GFX11-NEXT:    v_perm_b32 v10, s15, s52, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v6
+; GFX11-NEXT:    v_perm_b32 v12, s61, s0, v1
+; GFX11-NEXT:    v_or_b32_e32 v5, v5, v7
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 12
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 13
+; GFX11-NEXT:    v_or_b32_e32 v6, v8, v9
+; GFX11-NEXT:    v_or_b32_e32 v7, v10, v11
+; GFX11-NEXT:    v_perm_b32 v8, s12, s58, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v12
+; GFX11-NEXT:    v_perm_b32 v10, s56, s57, v1
+; GFX11-NEXT:    v_perm_b32 v11, s51, s0, v1
+; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:64
+; GFX11-NEXT:    v_perm_b32 v2, s49, s47, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 14
+; GFX11-NEXT:    v_or_b32_e32 v8, v8, v9
+; GFX11-NEXT:    v_perm_b32 v9, s13, s59, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 16, v10
+; GFX11-NEXT:    v_perm_b32 v4, s10, s50, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v11
+; GFX11-NEXT:    v_perm_b32 v10, s11, s46, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v2
+; GFX11-NEXT:    v_perm_b32 v12, s48, s0, v1
+; GFX11-NEXT:    v_or_b32_e32 v9, v9, v3
+; GFX11-NEXT:    v_or_b32_e32 v2, v4, v5
+; GFX11-NEXT:    v_perm_b32 v4, s8, s44, v1
+; GFX11-NEXT:    v_or_b32_e32 v3, v10, v11
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v12
-; GFX11-NEXT:    v_perm_b32 v4, s40, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 30
+; GFX11-NEXT:    v_perm_b32 v10, s39, s43, v1
+; GFX11-NEXT:    v_perm_b32 v11, s42, s72, v1
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 15
+; GFX11-NEXT:    v_perm_b32 v12, s6, s38, v1
+; GFX11-NEXT:    v_or_b32_e32 v4, v4, v5
+; GFX11-NEXT:    v_perm_b32 v5, s9, s45, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
+; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 16
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 17
+; GFX11-NEXT:    v_readlane_b32 s102, v24, 4
+; GFX11-NEXT:    v_or_b32_e32 v5, v5, v10
+; GFX11-NEXT:    v_perm_b32 v10, s37, s35, v1
 ; GFX11-NEXT:    v_readlane_b32 s101, v24, 3
 ; GFX11-NEXT:    v_readlane_b32 s100, v24, 2
 ; GFX11-NEXT:    v_readlane_b32 s99, v24, 1
-; GFX11-NEXT:    v_or_b32_e32 v4, v4, v5
-; GFX11-NEXT:    v_perm_b32 v10, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v25, 0
-; GFX11-NEXT:    v_readlane_b32 s1, v26, 26
 ; GFX11-NEXT:    v_readlane_b32 s98, v24, 0
+; GFX11-NEXT:    v_lshlrev_b32_e32 v13, 16, v10
+; GFX11-NEXT:    v_or_b32_e32 v10, v12, v11
+; GFX11-NEXT:    v_perm_b32 v12, s31, s0, v1
 ; GFX11-NEXT:    v_readlane_b32 s97, v23, 31
-; GFX11-NEXT:    v_lshlrev_b32_e32 v7, 16, v10
-; GFX11-NEXT:    v_perm_b32 v5, s41, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 28
 ; GFX11-NEXT:    v_readlane_b32 s96, v23, 30
+; GFX11-NEXT:    v_or_b32_e32 v11, v14, v13
+; GFX11-NEXT:    v_perm_b32 v13, s4, s34, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v12, 16, v12
 ; GFX11-NEXT:    v_readlane_b32 s87, v23, 29
 ; GFX11-NEXT:    v_readlane_b32 s86, v23, 28
-; GFX11-NEXT:    v_or_b32_e32 v5, v5, v7
-; GFX11-NEXT:    v_perm_b32 v11, s0, s60, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 25
 ; GFX11-NEXT:    v_readlane_b32 s85, v23, 27
 ; GFX11-NEXT:    v_readlane_b32 s84, v23, 26
-; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:64
-; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v11
-; GFX11-NEXT:    v_perm_b32 v6, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 29
-; GFX11-NEXT:    v_readlane_b32 s1, v26, 21
+; GFX11-NEXT:    v_or_b32_e32 v12, v13, v12
+; GFX11-NEXT:    v_perm_b32 v13, s104, s103, v1
+; GFX11-NEXT:    v_perm_b32 v1, s5, s30, v1
+; GFX11-NEXT:    v_readlane_b32 s30, v24, 7
+; GFX11-NEXT:    v_readlane_b32 s31, v24, 8
+; GFX11-NEXT:    v_readlane_b32 s104, v24, 6
+; GFX11-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
+; GFX11-NEXT:    v_readlane_b32 s103, v24, 5
 ; GFX11-NEXT:    v_readlane_b32 s83, v23, 25
 ; GFX11-NEXT:    v_readlane_b32 s82, v23, 24
-; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v6
-; GFX11-NEXT:    v_perm_b32 v8, s14, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 27
 ; GFX11-NEXT:    v_readlane_b32 s81, v23, 23
+; GFX11-NEXT:    v_or_b32_e32 v13, v1, v13
+; GFX11-NEXT:    s_clause 0x2
+; GFX11-NEXT:    scratch_store_b128 v0, v[6:9], off offset:80
+; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:96
+; GFX11-NEXT:    scratch_store_b128 v0, v[10:13], off offset:112
 ; GFX11-NEXT:    v_readlane_b32 s80, v23, 22
 ; GFX11-NEXT:    v_readlane_b32 s71, v23, 21
-; GFX11-NEXT:    v_or_b32_e32 v6, v8, v9
-; GFX11-NEXT:    v_perm_b32 v10, s15, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 23
-; GFX11-NEXT:    v_readlane_b32 s70, v23, 20
 ; GFX11-NEXT:    v_readlane_b32 s69, v23, 19
-; GFX11-NEXT:    v_readlane_b32 s68, v23, 18
-; GFX11-NEXT:    v_or_b32_e32 v7, v10, v11
-; GFX11-NEXT:    v_perm_b32 v12, s0, s58, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 24
 ; GFX11-NEXT:    v_readlane_b32 s67, v23, 17
 ; GFX11-NEXT:    v_readlane_b32 s66, v23, 16
 ; GFX11-NEXT:    v_readlane_b32 s65, v23, 15
-; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v12
-; GFX11-NEXT:    v_perm_b32 v8, s12, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 20
 ; GFX11-NEXT:    v_readlane_b32 s64, v23, 14
 ; GFX11-NEXT:    v_readlane_b32 s55, v23, 13
 ; GFX11-NEXT:    v_readlane_b32 s54, v23, 12
-; GFX11-NEXT:    v_or_b32_e32 v8, v8, v9
-; GFX11-NEXT:    v_perm_b32 v10, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 22
-; GFX11-NEXT:    v_readlane_b32 s1, v26, 16
 ; GFX11-NEXT:    v_readlane_b32 s53, v23, 11
 ; GFX11-NEXT:    v_readlane_b32 s52, v23, 10
-; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 16, v10
-; GFX11-NEXT:    v_perm_b32 v9, s13, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 18
 ; GFX11-NEXT:    v_readlane_b32 s51, v23, 9
 ; GFX11-NEXT:    v_readlane_b32 s50, v23, 8
 ; GFX11-NEXT:    v_readlane_b32 s49, v23, 7
-; GFX11-NEXT:    v_or_b32_e32 v9, v9, v3
-; GFX11-NEXT:    v_perm_b32 v11, s0, s56, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 15
 ; GFX11-NEXT:    v_readlane_b32 s48, v23, 6
 ; GFX11-NEXT:    v_readlane_b32 s39, v23, 5
 ; GFX11-NEXT:    v_readlane_b32 s38, v23, 4
-; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v11
-; GFX11-NEXT:    v_perm_b32 v2, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 19
-; GFX11-NEXT:    v_readlane_b32 s1, v26, 11
 ; GFX11-NEXT:    v_readlane_b32 s37, v23, 3
 ; GFX11-NEXT:    v_readlane_b32 s36, v23, 2
-; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v2
-; GFX11-NEXT:    v_perm_b32 v4, s10, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 17
 ; GFX11-NEXT:    v_readlane_b32 s35, v23, 1
 ; GFX11-NEXT:    v_readlane_b32 s34, v23, 0
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
-; GFX11-NEXT:    v_or_b32_e32 v2, v4, v5
-; GFX11-NEXT:    v_perm_b32 v10, s11, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 13
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_or_b32_e32 v3, v10, v11
-; GFX11-NEXT:    v_perm_b32 v12, s0, s46, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 14
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v12
-; GFX11-NEXT:    v_perm_b32 v4, s8, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 10
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_or_b32_e32 v4, v4, v5
-; GFX11-NEXT:    v_perm_b32 v10, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 12
-; GFX11-NEXT:    v_readlane_b32 s1, v26, 6
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX11-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
-; GFX11-NEXT:    v_perm_b32 v5, s9, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 8
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_or_b32_e32 v5, v5, v10
-; GFX11-NEXT:    v_perm_b32 v11, s0, s44, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 5
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
-; GFX11-NEXT:    v_perm_b32 v10, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 9
-; GFX11-NEXT:    v_readlane_b32 s1, v26, 1
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX11-NEXT:    v_lshlrev_b32_e32 v13, 16, v10
-; GFX11-NEXT:    v_perm_b32 v12, s6, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 7
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_or_b32_e32 v10, v12, v11
-; GFX11-NEXT:    v_perm_b32 v14, s7, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 3
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_or_b32_e32 v11, v14, v13
-; GFX11-NEXT:    v_perm_b32 v12, s0, s42, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 4
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_lshlrev_b32_e32 v12, 16, v12
-; GFX11-NEXT:    v_perm_b32 v13, s4, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 0
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_or_b32_e32 v12, v13, v12
-; GFX11-NEXT:    v_perm_b32 v13, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 2
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
-; GFX11-NEXT:    v_perm_b32 v1, s5, s0, v1
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_or_b32_e32 v13, v1, v13
-; GFX11-NEXT:    s_clause 0x2
-; GFX11-NEXT:    scratch_store_b128 v0, v[6:9], off offset:80
-; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:96
-; GFX11-NEXT:    scratch_store_b128 v0, v[10:13], off offset:112
 ; GFX11-NEXT:    s_xor_saveexec_b32 s0, -1
 ; GFX11-NEXT:    s_clause 0x3 ; 16-byte Folded Reload
 ; GFX11-NEXT:    scratch_load_b32 v23, off, s32
@@ -11482,144 +11746,6 @@ define inreg <128 x i8> @bitcast_v32i32_to_v128i8_scalar(<32 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 exec_lo, s0
 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr104
-; GFX11-NEXT:    ; implicit-def: $sgpr103
-; GFX11-NEXT:    ; implicit-def: $sgpr30
-; GFX11-NEXT:    ; implicit-def: $sgpr102
-; GFX11-NEXT:    ; implicit-def: $sgpr84
-; GFX11-NEXT:    ; implicit-def: $sgpr83
-; GFX11-NEXT:    ; implicit-def: $sgpr101
-; GFX11-NEXT:    ; implicit-def: $sgpr100
-; GFX11-NEXT:    ; implicit-def: $sgpr94
-; GFX11-NEXT:    ; implicit-def: $sgpr99
-; GFX11-NEXT:    ; implicit-def: $sgpr81
-; GFX11-NEXT:    ; implicit-def: $sgpr80
-; GFX11-NEXT:    ; implicit-def: $sgpr98
-; GFX11-NEXT:    ; implicit-def: $sgpr97
-; GFX11-NEXT:    ; implicit-def: $sgpr92
-; GFX11-NEXT:    ; implicit-def: $sgpr96
-; GFX11-NEXT:    ; implicit-def: $sgpr71
-; GFX11-NEXT:    ; implicit-def: $sgpr70
-; GFX11-NEXT:    ; implicit-def: $sgpr87
-; GFX11-NEXT:    ; implicit-def: $sgpr86
-; GFX11-NEXT:    ; implicit-def: $sgpr90
-; GFX11-NEXT:    ; implicit-def: $sgpr85
-; GFX11-NEXT:    ; implicit-def: $sgpr67
-; GFX11-NEXT:    ; implicit-def: $sgpr66
-; GFX11-NEXT:    ; implicit-def: $sgpr68
-; GFX11-NEXT:    ; implicit-def: $sgpr82
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr65
-; GFX11-NEXT:    ; implicit-def: $sgpr64
-; GFX11-NEXT:    ; implicit-def: $sgpr55
-; GFX11-NEXT:    ; implicit-def: $sgpr54
-; GFX11-NEXT:    ; implicit-def: $sgpr69
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr51
-; GFX11-NEXT:    ; implicit-def: $sgpr53
-; GFX11-NEXT:    ; implicit-def: $sgpr52
-; GFX11-NEXT:    ; implicit-def: $sgpr49
-; GFX11-NEXT:    ; implicit-def: $sgpr50
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr38
-; GFX11-NEXT:    ; implicit-def: $sgpr48
-; GFX11-NEXT:    ; implicit-def: $sgpr39
-; GFX11-NEXT:    ; implicit-def: $sgpr36
-; GFX11-NEXT:    ; implicit-def: $sgpr37
-; GFX11-NEXT:    ; implicit-def: $sgpr35
-; GFX11-NEXT:    ; implicit-def: $sgpr34
-; GFX11-NEXT:    ; implicit-def: $vcc_hi
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -18135,8 +18261,10 @@ define inreg <32 x i32> @bitcast_v128i8_to_v32i32_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:480 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v37, off, s[0:3], s32 offset:444 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v39, off, s[0:3], s32 offset:448 ; 4-byte Folded Reload
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; SI-NEXT:    s_cbranch_vccnz .LBB15_5
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
 ; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:660 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:604 ; 4-byte Folded Reload
@@ -19133,8 +19261,10 @@ define inreg <32 x i32> @bitcast_v128i8_to_v32i32_scalar(<128 x i8> inreg %a, i3
 ; VI-NEXT:    buffer_load_dword v52, off, s[0:3], s32 offset:596 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:600 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v54, off, s[0:3], s32 offset:604 ; 4-byte Folded Reload
-; VI-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; VI-NEXT:    s_cbranch_vccnz .LBB15_5
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
 ; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
@@ -20057,8 +20187,10 @@ define inreg <32 x i32> @bitcast_v128i8_to_v32i32_scalar(<128 x i8> inreg %a, i3
 ; GFX9-NEXT:    buffer_load_dword v52, off, s[0:3], s32 offset:596 ; 4-byte Folded Reload
 ; GFX9-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:600 ; 4-byte Folded Reload
 ; GFX9-NEXT:    buffer_load_dword v54, off, s[0:3], s32 offset:604 ; 4-byte Folded Reload
-; GFX9-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GFX9-NEXT:    s_cbranch_vccnz .LBB15_5
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
 ; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
@@ -20553,7 +20685,7 @@ define inreg <32 x i32> @bitcast_v128i8_to_v32i32_scalar(<128 x i8> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v31
 ; GFX11-TRUE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB15_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
@@ -20699,9 +20831,17 @@ define inreg <32 x i32> @bitcast_v128i8_to_v32i32_scalar(<128 x i8> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v30, v31, v183
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v31, v40, v41
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB15_3
-; GFX11-TRUE16-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB15_3
+; GFX11-TRUE16-NEXT:  .LBB15_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; GFX11-TRUE16-NEXT:  .LBB15_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-TRUE16-NEXT:    s_add_i32 s0, s0, 3
@@ -20992,15 +21132,12 @@ define inreg <32 x i32> @bitcast_v128i8_to_v32i32_scalar(<128 x i8> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v29, v31, v34
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v30, v36, v35
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v31, v33, v32
-; GFX11-TRUE16-NEXT:  .LBB15_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB15_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; 8-byte Folded Reload
 ; GFX11-TRUE16-NEXT:    scratch_load_b32 v41, off, s32 offset:320
 ; GFX11-TRUE16-NEXT:    scratch_load_b32 v40, off, s32 offset:324
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB15_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; GFX11-TRUE16-NEXT:    s_branch .LBB15_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v128i8_to_v32i32_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -21127,7 +21264,7 @@ define inreg <32 x i32> @bitcast_v128i8_to_v32i32_scalar(<128 x i8> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v31
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB15_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
@@ -21273,9 +21410,17 @@ define inreg <32 x i32> @bitcast_v128i8_to_v32i32_scalar(<128 x i8> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v30, v31, v183
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v31, v40, v41
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB15_3
-; GFX11-FAKE16-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB15_3
+; GFX11-FAKE16-NEXT:  .LBB15_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; GFX11-FAKE16-NEXT:  .LBB15_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-FAKE16-NEXT:    s_add_i32 s0, s0, 3
@@ -21566,15 +21711,12 @@ define inreg <32 x i32> @bitcast_v128i8_to_v32i32_scalar(<128 x i8> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v29, v31, v34
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v30, v36, v35
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v31, v33, v32
-; GFX11-FAKE16-NEXT:  .LBB15_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB15_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; 8-byte Folded Reload
 ; GFX11-FAKE16-NEXT:    scratch_load_b32 v41, off, s32 offset:320
 ; GFX11-FAKE16-NEXT:    scratch_load_b32 v40, off, s32 offset:324
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB15_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; GFX11-FAKE16-NEXT:    s_branch .LBB15_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -22437,104 +22579,100 @@ define inreg <64 x bfloat> @bitcast_v32i32_to_v64bf16_scalar(<32 x i32> inreg %a
 ; SI-NEXT:    v_writelane_b32 v33, s30, 34
 ; SI-NEXT:    v_writelane_b32 v33, s31, 35
 ; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_readfirstlane_b32 s70, v17
-; SI-NEXT:    v_readfirstlane_b32 s71, v16
-; SI-NEXT:    v_readfirstlane_b32 s80, v15
-; SI-NEXT:    v_readfirstlane_b32 s81, v14
-; SI-NEXT:    v_readfirstlane_b32 s82, v13
-; SI-NEXT:    v_readfirstlane_b32 s83, v12
-; SI-NEXT:    v_readfirstlane_b32 s84, v11
-; SI-NEXT:    v_readfirstlane_b32 s85, v10
-; SI-NEXT:    v_readfirstlane_b32 s86, v9
-; SI-NEXT:    v_readfirstlane_b32 s87, v8
-; SI-NEXT:    v_readfirstlane_b32 s96, v7
-; SI-NEXT:    v_readfirstlane_b32 s97, v6
-; SI-NEXT:    v_readfirstlane_b32 s98, v5
-; SI-NEXT:    v_readfirstlane_b32 s99, v4
-; SI-NEXT:    v_readfirstlane_b32 s6, v3
-; SI-NEXT:    v_readfirstlane_b32 s7, v2
-; SI-NEXT:    v_readfirstlane_b32 s8, v1
+; SI-NEXT:    v_readfirstlane_b32 s68, v17
+; SI-NEXT:    v_readfirstlane_b32 s69, v16
+; SI-NEXT:    v_readfirstlane_b32 s70, v15
+; SI-NEXT:    v_readfirstlane_b32 s71, v14
+; SI-NEXT:    v_readfirstlane_b32 s80, v13
+; SI-NEXT:    v_readfirstlane_b32 s81, v12
+; SI-NEXT:    v_readfirstlane_b32 s82, v11
+; SI-NEXT:    v_readfirstlane_b32 s83, v10
+; SI-NEXT:    v_readfirstlane_b32 s84, v9
+; SI-NEXT:    v_readfirstlane_b32 s85, v8
+; SI-NEXT:    v_readfirstlane_b32 s86, v7
+; SI-NEXT:    v_readfirstlane_b32 s87, v6
+; SI-NEXT:    v_readfirstlane_b32 s96, v5
+; SI-NEXT:    v_readfirstlane_b32 s97, v4
+; SI-NEXT:    v_readfirstlane_b32 s98, v3
+; SI-NEXT:    v_readfirstlane_b32 s99, v2
+; SI-NEXT:    v_readfirstlane_b32 s6, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_readfirstlane_b32 s9, v0
+; SI-NEXT:    v_readfirstlane_b32 s7, v0
 ; SI-NEXT:    ; implicit-def: $vgpr34 : SGPR spill to VGPR lane
 ; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_and_b32 s4, s17, 0xffff0000
+; SI-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_writelane_b32 v34, s4, 1
-; SI-NEXT:    s_lshl_b32 s4, s17, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 0
-; SI-NEXT:    s_and_b32 s4, s16, 0xffff0000
-; SI-NEXT:    v_writelane_b32 v34, s4, 2
 ; SI-NEXT:    s_lshl_b32 s4, s16, 16
-; SI-NEXT:    s_and_b32 s11, s70, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s10, s70, 16
-; SI-NEXT:    s_and_b32 s13, s71, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s12, s71, 16
-; SI-NEXT:    s_and_b32 s15, s80, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s14, s80, 16
-; SI-NEXT:    s_and_b32 s41, s81, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s40, s81, 16
-; SI-NEXT:    s_and_b32 s43, s82, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s42, s82, 16
-; SI-NEXT:    s_and_b32 s45, s83, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s44, s83, 16
-; SI-NEXT:    s_and_b32 s47, s84, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s46, s84, 16
-; SI-NEXT:    s_and_b32 s57, s85, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s56, s85, 16
-; SI-NEXT:    s_and_b32 s59, s86, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s58, s86, 16
-; SI-NEXT:    s_and_b32 s61, s87, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s60, s87, 16
-; SI-NEXT:    s_and_b32 s63, s96, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s62, s96, 16
-; SI-NEXT:    s_and_b32 s73, s97, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s72, s97, 16
-; SI-NEXT:    s_and_b32 s75, s98, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s74, s98, 16
-; SI-NEXT:    s_and_b32 s77, s99, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s76, s99, 16
-; SI-NEXT:    s_and_b32 s79, s6, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s78, s6, 16
-; SI-NEXT:    s_and_b32 s89, s7, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s88, s7, 16
-; SI-NEXT:    s_and_b32 s91, s8, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s90, s8, 16
-; SI-NEXT:    s_and_b32 s93, s9, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s92, s9, 16
-; SI-NEXT:    s_and_b32 s95, s29, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s94, s29, 16
-; SI-NEXT:    s_and_b32 s31, s28, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s30, s28, 16
-; SI-NEXT:    s_and_b32 s35, s27, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s34, s27, 16
-; SI-NEXT:    s_and_b32 s37, s26, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s36, s26, 16
-; SI-NEXT:    s_and_b32 s39, s25, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s38, s25, 16
-; SI-NEXT:    s_and_b32 s49, s24, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s48, s24, 16
-; SI-NEXT:    s_and_b32 s51, s23, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s50, s23, 16
-; SI-NEXT:    s_and_b32 s53, s22, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s52, s22, 16
-; SI-NEXT:    s_and_b32 s55, s21, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s54, s21, 16
-; SI-NEXT:    s_and_b32 s65, s20, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s64, s20, 16
-; SI-NEXT:    s_and_b32 s67, s19, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s66, s19, 16
-; SI-NEXT:    s_and_b32 s69, s18, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s68, s18, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 3
+; SI-NEXT:    s_and_b32 s9, s68, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s8, s68, 16
+; SI-NEXT:    s_and_b32 s11, s69, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s10, s69, 16
+; SI-NEXT:    s_and_b32 s13, s70, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s12, s70, 16
+; SI-NEXT:    s_and_b32 s15, s71, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s14, s71, 16
+; SI-NEXT:    s_and_b32 s41, s80, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s40, s80, 16
+; SI-NEXT:    s_and_b32 s43, s81, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s42, s81, 16
+; SI-NEXT:    s_and_b32 s45, s82, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s44, s82, 16
+; SI-NEXT:    s_and_b32 s47, s83, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s46, s83, 16
+; SI-NEXT:    s_and_b32 s57, s84, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s56, s84, 16
+; SI-NEXT:    s_and_b32 s59, s85, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s58, s85, 16
+; SI-NEXT:    s_and_b32 s61, s86, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s60, s86, 16
+; SI-NEXT:    s_and_b32 s63, s87, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s62, s87, 16
+; SI-NEXT:    s_and_b32 s73, s96, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s72, s96, 16
+; SI-NEXT:    s_and_b32 s75, s97, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s74, s97, 16
+; SI-NEXT:    s_and_b32 s77, s98, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s76, s98, 16
+; SI-NEXT:    s_and_b32 s79, s99, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s78, s99, 16
+; SI-NEXT:    s_and_b32 s89, s6, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s88, s6, 16
+; SI-NEXT:    s_and_b32 s91, s7, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s90, s7, 16
+; SI-NEXT:    s_and_b32 s93, s29, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s92, s29, 16
+; SI-NEXT:    s_and_b32 s95, s28, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s94, s28, 16
+; SI-NEXT:    s_and_b32 vcc_hi, s27, 0xffff0000
+; SI-NEXT:    s_lshl_b32 vcc_lo, s27, 16
+; SI-NEXT:    s_and_b32 s31, s26, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s30, s26, 16
+; SI-NEXT:    s_and_b32 s35, s25, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s34, s25, 16
+; SI-NEXT:    s_and_b32 s37, s24, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s36, s24, 16
+; SI-NEXT:    s_and_b32 s39, s23, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s38, s23, 16
+; SI-NEXT:    s_and_b32 s49, s22, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s48, s22, 16
+; SI-NEXT:    s_and_b32 s51, s21, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s50, s21, 16
+; SI-NEXT:    s_and_b32 s53, s20, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s52, s20, 16
+; SI-NEXT:    s_and_b32 s55, s19, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s54, s19, 16
+; SI-NEXT:    s_and_b32 s65, s18, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s64, s18, 16
+; SI-NEXT:    s_and_b32 s67, s17, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s66, s17, 16
+; SI-NEXT:    v_writelane_b32 v34, s4, 0
 ; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    s_branch .LBB17_3
 ; SI-NEXT:  .LBB17_2:
 ; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr69
 ; SI-NEXT:    ; implicit-def: $sgpr66
 ; SI-NEXT:    ; implicit-def: $sgpr67
 ; SI-NEXT:    ; implicit-def: $sgpr64
@@ -22555,6 +22693,8 @@ define inreg <64 x bfloat> @bitcast_v32i32_to_v64bf16_scalar(<32 x i32> inreg %a
 ; SI-NEXT:    ; implicit-def: $sgpr35
 ; SI-NEXT:    ; implicit-def: $sgpr30
 ; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $vcc_hi
 ; SI-NEXT:    ; implicit-def: $sgpr94
 ; SI-NEXT:    ; implicit-def: $sgpr95
 ; SI-NEXT:    ; implicit-def: $sgpr92
@@ -22593,17 +22733,19 @@ define inreg <64 x bfloat> @bitcast_v32i32_to_v64bf16_scalar(<32 x i32> inreg %a
 ; SI-NEXT:    ; implicit-def: $sgpr13
 ; SI-NEXT:    ; implicit-def: $sgpr10
 ; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
 ; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    ; kill: killed $sgpr4
 ; SI-NEXT:    s_mov_b64 s[4:5], -1
 ; SI-NEXT:  .LBB17_3: ; %Flow
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; SI-NEXT:    s_mov_b32 s4, s10
-; SI-NEXT:    s_mov_b32 s5, s11
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_mov_b32 s4, s8
+; SI-NEXT:    s_mov_b32 s5, s9
+; SI-NEXT:    s_mov_b32 s8, s10
+; SI-NEXT:    s_mov_b32 s9, s11
 ; SI-NEXT:    s_mov_b32 s10, s12
 ; SI-NEXT:    s_mov_b32 s11, s13
 ; SI-NEXT:    s_mov_b32 s12, s14
@@ -22630,14 +22772,11 @@ define inreg <64 x bfloat> @bitcast_v32i32_to_v64bf16_scalar(<32 x i32> inreg %a
 ; SI-NEXT:    s_mov_b32 s73, s75
 ; SI-NEXT:    s_mov_b32 s74, s76
 ; SI-NEXT:    s_mov_b32 s75, s77
-; SI-NEXT:    s_mov_b32 s76, s78
-; SI-NEXT:    s_mov_b32 s77, s79
-; SI-NEXT:    v_readlane_b32 s78, v34, 0
-; SI-NEXT:    v_readlane_b32 s79, v34, 1
-; SI-NEXT:    s_cbranch_vccnz .LBB17_5
+; SI-NEXT:    v_readlane_b32 s76, v34, 0
+; SI-NEXT:    v_readlane_b32 s77, v34, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
 ; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -22651,9 +22790,8 @@ define inreg <64 x bfloat> @bitcast_v32i32_to_v64bf16_scalar(<32 x i32> inreg %a
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s28, s28, 3
 ; SI-NEXT:    s_add_i32 s29, s29, 3
-; SI-NEXT:    s_add_i32 s9, s9, 3
-; SI-NEXT:    s_add_i32 s8, s8, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
+; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s99, s99, 3
 ; SI-NEXT:    s_add_i32 s98, s98, 3
 ; SI-NEXT:    s_add_i32 s97, s97, 3
@@ -22668,199 +22806,196 @@ define inreg <64 x bfloat> @bitcast_v32i32_to_v64bf16_scalar(<32 x i32> inreg %a
 ; SI-NEXT:    s_add_i32 s80, s80, 3
 ; SI-NEXT:    s_add_i32 s71, s71, 3
 ; SI-NEXT:    s_add_i32 s70, s70, 3
-; SI-NEXT:    s_and_b32 s77, s6, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s76, s6, 16
-; SI-NEXT:    s_and_b32 s6, s16, 0xffff0000
-; SI-NEXT:    s_and_b32 s5, s70, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s4, s70, 16
-; SI-NEXT:    s_and_b32 s11, s71, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s10, s71, 16
-; SI-NEXT:    s_and_b32 s13, s80, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s12, s80, 16
-; SI-NEXT:    s_and_b32 s15, s81, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s14, s81, 16
-; SI-NEXT:    s_and_b32 s41, s82, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s40, s82, 16
-; SI-NEXT:    s_and_b32 s43, s83, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s42, s83, 16
-; SI-NEXT:    s_and_b32 s45, s84, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s44, s84, 16
-; SI-NEXT:    s_and_b32 s47, s85, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s46, s85, 16
-; SI-NEXT:    s_and_b32 s57, s86, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s56, s86, 16
-; SI-NEXT:    s_and_b32 s59, s87, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s58, s87, 16
-; SI-NEXT:    s_and_b32 s61, s96, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s60, s96, 16
-; SI-NEXT:    s_and_b32 s63, s97, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s62, s97, 16
-; SI-NEXT:    s_and_b32 s73, s98, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s72, s98, 16
-; SI-NEXT:    s_and_b32 s75, s99, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s74, s99, 16
-; SI-NEXT:    s_and_b32 s89, s7, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s88, s7, 16
-; SI-NEXT:    s_and_b32 s91, s8, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s90, s8, 16
-; SI-NEXT:    s_and_b32 s93, s9, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s92, s9, 16
-; SI-NEXT:    s_and_b32 s95, s29, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s94, s29, 16
-; SI-NEXT:    s_and_b32 s31, s28, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s30, s28, 16
-; SI-NEXT:    s_and_b32 s35, s27, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s34, s27, 16
-; SI-NEXT:    s_and_b32 s37, s26, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s36, s26, 16
-; SI-NEXT:    s_and_b32 s39, s25, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s38, s25, 16
-; SI-NEXT:    s_and_b32 s49, s24, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s48, s24, 16
-; SI-NEXT:    s_and_b32 s51, s23, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s50, s23, 16
-; SI-NEXT:    s_and_b32 s53, s22, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s52, s22, 16
-; SI-NEXT:    s_and_b32 s55, s21, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s54, s21, 16
-; SI-NEXT:    s_and_b32 s65, s20, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s64, s20, 16
-; SI-NEXT:    s_and_b32 s67, s19, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s66, s19, 16
-; SI-NEXT:    s_and_b32 s69, s18, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s68, s18, 16
-; SI-NEXT:    s_and_b32 s79, s17, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s78, s17, 16
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v34, s6, 2
-; SI-NEXT:    s_lshl_b32 s6, s16, 16
-; SI-NEXT:    v_writelane_b32 v34, s6, 3
+; SI-NEXT:    s_add_i32 s69, s69, 3
+; SI-NEXT:    s_add_i32 s68, s68, 3
+; SI-NEXT:    s_and_b32 s5, s68, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s4, s68, 16
+; SI-NEXT:    s_and_b32 s9, s69, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s8, s69, 16
+; SI-NEXT:    s_and_b32 s11, s70, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s10, s70, 16
+; SI-NEXT:    s_and_b32 s13, s71, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s12, s71, 16
+; SI-NEXT:    s_and_b32 s15, s80, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s14, s80, 16
+; SI-NEXT:    s_and_b32 s41, s81, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s40, s81, 16
+; SI-NEXT:    s_and_b32 s43, s82, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s42, s82, 16
+; SI-NEXT:    s_and_b32 s45, s83, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s44, s83, 16
+; SI-NEXT:    s_and_b32 s47, s84, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s46, s84, 16
+; SI-NEXT:    s_and_b32 s57, s85, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s56, s85, 16
+; SI-NEXT:    s_and_b32 s59, s86, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s58, s86, 16
+; SI-NEXT:    s_and_b32 s61, s87, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s60, s87, 16
+; SI-NEXT:    s_and_b32 s63, s96, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s62, s96, 16
+; SI-NEXT:    s_and_b32 s73, s97, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s72, s97, 16
+; SI-NEXT:    s_and_b32 s75, s98, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s74, s98, 16
+; SI-NEXT:    s_and_b32 s79, s99, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s78, s99, 16
+; SI-NEXT:    s_and_b32 s89, s6, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s88, s6, 16
+; SI-NEXT:    s_and_b32 s91, s7, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s90, s7, 16
+; SI-NEXT:    s_and_b32 s93, s29, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s92, s29, 16
+; SI-NEXT:    s_and_b32 s95, s28, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s94, s28, 16
+; SI-NEXT:    s_and_b32 vcc_hi, s27, 0xffff0000
+; SI-NEXT:    s_lshl_b32 vcc_lo, s27, 16
+; SI-NEXT:    s_and_b32 s31, s26, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s30, s26, 16
+; SI-NEXT:    s_and_b32 s35, s25, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s34, s25, 16
+; SI-NEXT:    s_and_b32 s37, s24, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s36, s24, 16
+; SI-NEXT:    s_and_b32 s39, s23, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s38, s23, 16
+; SI-NEXT:    s_and_b32 s49, s22, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s48, s22, 16
+; SI-NEXT:    s_and_b32 s51, s21, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s50, s21, 16
+; SI-NEXT:    s_and_b32 s53, s20, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s52, s20, 16
+; SI-NEXT:    s_and_b32 s55, s19, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s54, s19, 16
+; SI-NEXT:    s_and_b32 s65, s18, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s64, s18, 16
+; SI-NEXT:    s_and_b32 s67, s17, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s66, s17, 16
+; SI-NEXT:    s_and_b32 s77, s16, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s76, s16, 16
 ; SI-NEXT:  .LBB17_5: ; %end
-; SI-NEXT:    v_readlane_b32 s6, v34, 2
-; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s6
-; SI-NEXT:    v_readlane_b32 s6, v34, 3
+; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s77
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
-; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s6
+; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s76
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
-; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s79
+; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s67
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v1
-; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s78
+; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s66
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
-; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s69
+; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s65
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
-; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s68
+; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s64
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[2:3], 16
-; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s67
+; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s55
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v3
-; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s66
+; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s54
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
-; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s65
+; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s53
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v4
-; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s64
+; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s52
 ; SI-NEXT:    v_lshr_b64 v[4:5], v[4:5], 16
-; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s55
+; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s51
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v5
-; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s54
+; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s50
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[5:6], 16
-; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s53
+; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s49
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v6
-; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s52
+; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s48
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[6:7], 16
-; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s51
+; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s39
 ; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v7
-; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s50
+; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s38
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[7:8], 16
-; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s49
+; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s37
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v8
-; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s48
+; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s36
 ; SI-NEXT:    v_lshr_b64 v[8:9], v[8:9], 16
-; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s39
+; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s35
 ; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v9
-; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s38
+; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s34
 ; SI-NEXT:    v_lshr_b64 v[9:10], v[9:10], 16
-; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s37
+; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s31
 ; SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v10
-; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s36
+; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s30
 ; SI-NEXT:    v_lshr_b64 v[10:11], v[10:11], 16
-; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s35
+; SI-NEXT:    v_mul_f32_e64 v11, 1.0, vcc_hi
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v11
-; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s34
+; SI-NEXT:    v_mul_f32_e64 v11, 1.0, vcc_lo
 ; SI-NEXT:    v_lshr_b64 v[11:12], v[11:12], 16
-; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s31
+; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s95
 ; SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v12
-; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s30
+; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s94
 ; SI-NEXT:    v_lshr_b64 v[12:13], v[12:13], 16
-; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s95
+; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s93
 ; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v13
-; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s94
+; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s92
 ; SI-NEXT:    v_lshr_b64 v[13:14], v[13:14], 16
-; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s93
+; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s91
 ; SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v14
-; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s92
+; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s90
 ; SI-NEXT:    v_lshr_b64 v[14:15], v[14:15], 16
-; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s91
+; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s89
 ; SI-NEXT:    v_lshrrev_b32_e32 v16, 16, v15
-; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s90
+; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s88
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[15:16], 16
-; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s89
+; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s79
 ; SI-NEXT:    v_lshrrev_b32_e32 v17, 16, v16
-; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s88
+; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s78
 ; SI-NEXT:    v_lshr_b64 v[16:17], v[16:17], 16
-; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s77
+; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s75
 ; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v17
-; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s76
+; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s74
 ; SI-NEXT:    v_lshr_b64 v[17:18], v[17:18], 16
-; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s75
+; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s73
 ; SI-NEXT:    v_lshrrev_b32_e32 v19, 16, v18
-; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s74
+; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s72
 ; SI-NEXT:    v_lshr_b64 v[18:19], v[18:19], 16
-; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s73
+; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s63
 ; SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v19
-; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s72
+; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s62
 ; SI-NEXT:    v_lshr_b64 v[19:20], v[19:20], 16
-; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s63
+; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s61
 ; SI-NEXT:    v_lshrrev_b32_e32 v21, 16, v20
-; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s62
+; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s60
 ; SI-NEXT:    v_lshr_b64 v[20:21], v[20:21], 16
-; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s61
+; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s59
 ; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v21
-; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s60
+; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s58
 ; SI-NEXT:    v_lshr_b64 v[21:22], v[21:22], 16
-; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s59
+; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s57
 ; SI-NEXT:    v_lshrrev_b32_e32 v23, 16, v22
-; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s58
+; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s56
 ; SI-NEXT:    v_lshr_b64 v[22:23], v[22:23], 16
-; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s57
+; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s47
 ; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v23
-; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s56
+; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s46
 ; SI-NEXT:    v_lshr_b64 v[23:24], v[23:24], 16
-; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s47
+; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s45
 ; SI-NEXT:    v_lshrrev_b32_e32 v25, 16, v24
-; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s46
+; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s44
 ; SI-NEXT:    v_lshr_b64 v[24:25], v[24:25], 16
-; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s45
+; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s43
 ; SI-NEXT:    v_lshrrev_b32_e32 v26, 16, v25
-; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s44
+; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s42
 ; SI-NEXT:    v_lshr_b64 v[25:26], v[25:26], 16
-; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s43
+; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s41
 ; SI-NEXT:    v_lshrrev_b32_e32 v27, 16, v26
-; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s42
+; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s40
 ; SI-NEXT:    v_lshr_b64 v[26:27], v[26:27], 16
-; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s41
+; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s15
 ; SI-NEXT:    v_lshrrev_b32_e32 v28, 16, v27
-; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s40
+; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s14
 ; SI-NEXT:    v_lshr_b64 v[27:28], v[27:28], 16
-; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s15
+; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s13
 ; SI-NEXT:    v_lshrrev_b32_e32 v29, 16, v28
-; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s14
+; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s12
 ; SI-NEXT:    v_lshr_b64 v[28:29], v[28:29], 16
-; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s13
+; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s11
 ; SI-NEXT:    v_lshrrev_b32_e32 v30, 16, v29
-; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s12
+; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s10
 ; SI-NEXT:    v_lshr_b64 v[29:30], v[29:30], 16
-; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s11
+; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s9
 ; SI-NEXT:    v_lshrrev_b32_e32 v31, 16, v30
-; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s10
+; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s8
 ; SI-NEXT:    v_lshr_b64 v[30:31], v[30:31], 16
 ; SI-NEXT:    v_mul_f32_e64 v31, 1.0, s5
 ; SI-NEXT:    v_lshrrev_b32_e32 v32, 16, v31
@@ -22933,10 +23068,18 @@ define inreg <64 x bfloat> @bitcast_v32i32_to_v64bf16_scalar(<32 x i32> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s46, s46, 3
 ; VI-NEXT:    s_add_i32 s47, s47, 3
 ; VI-NEXT:    s_add_i32 s29, s29, 3
@@ -22969,7 +23112,7 @@ define inreg <64 x bfloat> @bitcast_v32i32_to_v64bf16_scalar(<32 x i32> inreg %a
 ; VI-NEXT:    s_add_i32 s43, s43, 3
 ; VI-NEXT:    s_add_i32 s44, s44, 3
 ; VI-NEXT:    s_add_i32 s45, s45, 3
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -23003,8 +23146,6 @@ define inreg <64 x bfloat> @bitcast_v32i32_to_v64bf16_scalar(<32 x i32> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v32i32_to_v64bf16_scalar:
 ; GFX9:       ; %bb.0:
@@ -23029,10 +23170,18 @@ define inreg <64 x bfloat> @bitcast_v32i32_to_v64bf16_scalar(<32 x i32> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s46, s46, 3
 ; GFX9-NEXT:    s_add_i32 s47, s47, 3
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
@@ -23065,7 +23214,7 @@ define inreg <64 x bfloat> @bitcast_v32i32_to_v64bf16_scalar(<32 x i32> inreg %a
 ; GFX9-NEXT:    s_add_i32 s43, s43, 3
 ; GFX9-NEXT:    s_add_i32 s44, s44, 3
 ; GFX9-NEXT:    s_add_i32 s45, s45, 3
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -23099,8 +23248,6 @@ define inreg <64 x bfloat> @bitcast_v32i32_to_v64bf16_scalar(<32 x i32> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v32i32_to_v64bf16_scalar:
 ; GFX11:       ; %bb.0:
@@ -23122,11 +23269,16 @@ define inreg <64 x bfloat> @bitcast_v32i32_to_v64bf16_scalar(<32 x i32> inreg %a
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:  .LBB17_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s27, s27, 3
 ; GFX11-NEXT:    s_add_i32 s26, s26, 3
 ; GFX11-NEXT:    s_add_i32 s25, s25, 3
@@ -23159,7 +23311,7 @@ define inreg <64 x bfloat> @bitcast_v32i32_to_v64bf16_scalar(<32 x i32> inreg %a
 ; GFX11-NEXT:    s_add_i32 s41, s41, 3
 ; GFX11-NEXT:    s_add_i32 s29, s29, 3
 ; GFX11-NEXT:    s_add_i32 s28, s28, 3
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -23177,8 +23329,6 @@ define inreg <64 x bfloat> @bitcast_v32i32_to_v64bf16_scalar(<32 x i32> inreg %a
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s7 :: v_dual_mov_b32 v29, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v30, s5 :: v_dual_mov_b32 v31, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -26695,7 +26845,9 @@ define inreg <32 x i32> @bitcast_v64bf16_to_v32i32_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:144 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:148 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v57, off, s[0:3], s32 offset:152 ; 4-byte Folded Reload
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_mov_b32_e32 v33, v56
 ; SI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:156 ; 4-byte Folded Reload
@@ -26712,7 +26864,7 @@ define inreg <32 x i32> @bitcast_v64bf16_to_v32i32_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v40, v56
 ; SI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:180 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v57, off, s[0:3], s32 offset:184 ; 4-byte Folded Reload
-; SI-NEXT:    s_cbranch_vccnz .LBB19_5
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
 ; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:328 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:332 ; 4-byte Folded Reload
@@ -27082,10 +27234,18 @@ define inreg <32 x i32> @bitcast_v64bf16_to_v32i32_scalar(<64 x bfloat> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v32, 0x40c00000
 ; VI-NEXT:    s_lshl_b32 s4, s50, 16
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v32
@@ -27678,10 +27838,8 @@ define inreg <32 x i32> @bitcast_v64bf16_to_v32i32_scalar(<64 x bfloat> inreg %a
 ; VI-NEXT:    v_cndmask_b32_e32 v31, v32, v34, vcc
 ; VI-NEXT:    v_lshrrev_b32_e32 v32, 16, v33
 ; VI-NEXT:    v_lshrrev_b64 v[31:32], 16, v[31:32]
-; VI-NEXT:    s_branch .LBB19_5
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:    s_branch .LBB19_6
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -27714,7 +27872,7 @@ define inreg <32 x i32> @bitcast_v64bf16_to_v32i32_scalar(<64 x bfloat> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB19_5: ; %end
+; VI-NEXT:  .LBB19_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v35, 15
 ; VI-NEXT:    v_readlane_b32 s66, v35, 14
 ; VI-NEXT:    v_readlane_b32 s65, v35, 13
@@ -27793,10 +27951,18 @@ define inreg <32 x i32> @bitcast_v64bf16_to_v32i32_scalar(<64 x bfloat> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s51, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v16, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v16
@@ -28407,10 +28573,8 @@ define inreg <32 x i32> @bitcast_v64bf16_to_v32i32_scalar(<64 x bfloat> inreg %a
 ; GFX9-NEXT:    v_and_b32_sdwa v16, v32, v16 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v32, 16, v33
 ; GFX9-NEXT:    v_lshl_or_b32 v16, v32, 16, v16
-; GFX9-NEXT:    s_branch .LBB19_5
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:    s_branch .LBB19_6
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -28443,7 +28607,7 @@ define inreg <32 x i32> @bitcast_v64bf16_to_v32i32_scalar(<64 x bfloat> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB19_5: ; %end
+; GFX9-NEXT:  .LBB19_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v36, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v36, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v36, 13
@@ -28523,11 +28687,16 @@ define inreg <32 x i32> @bitcast_v64bf16_to_v32i32_scalar(<64 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s37, s1
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-TRUE16-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:  .LBB19_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s0, s51, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s51, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -29150,8 +29319,6 @@ define inreg <32 x i32> @bitcast_v64bf16_to_v32i32_scalar(<64 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v16, 16, v34
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v16.h, v33.l
 ; GFX11-TRUE16-NEXT:    s_branch .LBB19_5
-; GFX11-TRUE16-NEXT:  .LBB19_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB19_2
 ; GFX11-TRUE16-NEXT:  .LBB19_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -29249,11 +29416,16 @@ define inreg <32 x i32> @bitcast_v64bf16_to_v32i32_scalar(<64 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s37, s1
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-FAKE16-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:  .LBB19_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_and_b32 s1, s51, 0xffff0000
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s51, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s1
@@ -29907,8 +30079,6 @@ define inreg <32 x i32> @bitcast_v64bf16_to_v32i32_scalar(<64 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v18, v32, 16, v37
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v16, v36, 16, v33
 ; GFX11-FAKE16-NEXT:    s_branch .LBB19_5
-; GFX11-FAKE16-NEXT:  .LBB19_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB19_2
 ; GFX11-FAKE16-NEXT:  .LBB19_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -30478,7 +30648,7 @@ define inreg <64 x half> @bitcast_v32i32_to_v64f16_scalar(<32 x i32> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s45, v1
 ; SI-NEXT:    s_cmp_lg_u32 s44, 0
 ; SI-NEXT:    v_readfirstlane_b32 s44, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_4
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s38, s5, 16
 ; SI-NEXT:    s_lshr_b32 s39, s7, 16
@@ -30509,11 +30679,51 @@ define inreg <64 x half> @bitcast_v32i32_to_v64f16_scalar(<32 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[22:23], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[20:21], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB21_3
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 vcc, s[20:21], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[18:19], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
+; SI-NEXT:    s_mov_b64 s[36:37], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[36:37], -1
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr65
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; SI-NEXT:    s_cselect_b32 s47, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s47, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -30575,23 +30785,23 @@ define inreg <64 x half> @bitcast_v32i32_to_v64f16_scalar(<32 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[22:23], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[20:21], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 16
-; SI-NEXT:  .LBB21_3: ; %end
-; SI-NEXT:    s_lshl_b32 s47, s36, 16
+; SI-NEXT:    s_lshr_b64 vcc, s[20:21], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[18:19], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
+; SI-NEXT:  .LBB21_5: ; %end
+; SI-NEXT:    s_lshl_b32 s47, s34, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s47
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s47, s69, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s47
-; SI-NEXT:    s_lshl_b32 s47, s34, 16
+; SI-NEXT:    s_lshl_b32 s47, s30, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s18, s18, s47
 ; SI-NEXT:    s_and_b32 s19, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s47, s68, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s47
-; SI-NEXT:    s_lshl_b32 s47, s30, 16
+; SI-NEXT:    s_lshl_b32 s47, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s20, s20, s47
 ; SI-NEXT:    s_and_b32 s21, s21, 0xffff
@@ -30734,40 +30944,6 @@ define inreg <64 x half> @bitcast_v32i32_to_v64f16_scalar(<32 x i32> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB21_4:
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr69
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr67
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    s_branch .LBB21_2
 ;
 ; VI-LABEL: bitcast_v32i32_to_v64f16_scalar:
 ; VI:       ; %bb.0:
@@ -30792,10 +30968,18 @@ define inreg <64 x half> @bitcast_v32i32_to_v64f16_scalar(<32 x i32> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_4
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_3
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s46, s46, 3
 ; VI-NEXT:    s_add_i32 s47, s47, 3
 ; VI-NEXT:    s_add_i32 s29, s29, 3
@@ -30828,7 +31012,7 @@ define inreg <64 x half> @bitcast_v32i32_to_v64f16_scalar(<32 x i32> inreg %a, i
 ; VI-NEXT:    s_add_i32 s43, s43, 3
 ; VI-NEXT:    s_add_i32 s44, s44, 3
 ; VI-NEXT:    s_add_i32 s45, s45, 3
-; VI-NEXT:  .LBB21_3: ; %end
+; VI-NEXT:  .LBB21_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -30862,8 +31046,6 @@ define inreg <64 x half> @bitcast_v32i32_to_v64f16_scalar(<32 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB21_4:
-; VI-NEXT:    s_branch .LBB21_2
 ;
 ; GFX9-LABEL: bitcast_v32i32_to_v64f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -30888,10 +31070,18 @@ define inreg <64 x half> @bitcast_v32i32_to_v64f16_scalar(<32 x i32> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_3
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s46, s46, 3
 ; GFX9-NEXT:    s_add_i32 s47, s47, 3
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
@@ -30924,7 +31114,7 @@ define inreg <64 x half> @bitcast_v32i32_to_v64f16_scalar(<32 x i32> inreg %a, i
 ; GFX9-NEXT:    s_add_i32 s43, s43, 3
 ; GFX9-NEXT:    s_add_i32 s44, s44, 3
 ; GFX9-NEXT:    s_add_i32 s45, s45, 3
-; GFX9-NEXT:  .LBB21_3: ; %end
+; GFX9-NEXT:  .LBB21_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -30958,8 +31148,6 @@ define inreg <64 x half> @bitcast_v32i32_to_v64f16_scalar(<32 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB21_4:
-; GFX9-NEXT:    s_branch .LBB21_2
 ;
 ; GFX11-LABEL: bitcast_v32i32_to_v64f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -30981,11 +31169,16 @@ define inreg <64 x half> @bitcast_v32i32_to_v64f16_scalar(<32 x i32> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_3
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s27, s27, 3
 ; GFX11-NEXT:    s_add_i32 s26, s26, 3
 ; GFX11-NEXT:    s_add_i32 s25, s25, 3
@@ -31018,7 +31211,7 @@ define inreg <64 x half> @bitcast_v32i32_to_v64f16_scalar(<32 x i32> inreg %a, i
 ; GFX11-NEXT:    s_add_i32 s41, s41, 3
 ; GFX11-NEXT:    s_add_i32 s29, s29, 3
 ; GFX11-NEXT:    s_add_i32 s28, s28, 3
-; GFX11-NEXT:  .LBB21_3: ; %end
+; GFX11-NEXT:  .LBB21_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -31036,8 +31229,6 @@ define inreg <64 x half> @bitcast_v32i32_to_v64f16_scalar(<32 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s7 :: v_dual_mov_b32 v29, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v30, s5 :: v_dual_mov_b32 v31, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB21_4:
-; GFX11-NEXT:    s_branch .LBB21_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -32060,10 +32251,7 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v34, s30, 34
 ; SI-NEXT:    v_writelane_b32 v34, s31, 35
 ; SI-NEXT:    v_readfirstlane_b32 s6, v17
-; SI-NEXT:    s_lshr_b32 vcc_lo, s6, 16
 ; SI-NEXT:    v_readfirstlane_b32 s8, v16
-; SI-NEXT:    ; implicit-def: $vgpr35 : SGPR spill to VGPR lane
-; SI-NEXT:    s_lshr_b32 vcc_hi, s8, 16
 ; SI-NEXT:    v_readfirstlane_b32 s10, v15
 ; SI-NEXT:    v_readfirstlane_b32 s12, v14
 ; SI-NEXT:    v_readfirstlane_b32 s14, v13
@@ -32075,29 +32263,29 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s90, v7
 ; SI-NEXT:    v_readfirstlane_b32 s92, v6
 ; SI-NEXT:    v_readfirstlane_b32 s94, v5
-; SI-NEXT:    v_readfirstlane_b32 s30, v4
-; SI-NEXT:    v_readfirstlane_b32 s34, v3
-; SI-NEXT:    v_readfirstlane_b32 s68, v2
-; SI-NEXT:    v_readfirstlane_b32 s80, v1
-; SI-NEXT:    v_readfirstlane_b32 s83, v0
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v35, vcc_lo, 0
-; SI-NEXT:    s_lshr_b32 s69, s29, 16
-; SI-NEXT:    s_lshr_b32 s71, s28, 16
-; SI-NEXT:    s_lshr_b32 s82, s27, 16
-; SI-NEXT:    s_lshr_b32 s85, s26, 16
-; SI-NEXT:    s_lshr_b32 s86, s25, 16
-; SI-NEXT:    s_lshr_b32 s87, s24, 16
-; SI-NEXT:    s_lshr_b32 s96, s23, 16
-; SI-NEXT:    s_lshr_b32 s97, s22, 16
-; SI-NEXT:    s_lshr_b32 s98, s21, 16
-; SI-NEXT:    s_lshr_b32 s99, s20, 16
-; SI-NEXT:    s_lshr_b32 s7, s19, 16
-; SI-NEXT:    s_lshr_b32 s9, s18, 16
-; SI-NEXT:    s_lshr_b32 s11, s17, 16
-; SI-NEXT:    s_lshr_b32 s13, s16, 16
-; SI-NEXT:    s_lshr_b32 s65, s10, 16
-; SI-NEXT:    s_lshr_b32 s64, s12, 16
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v4
+; SI-NEXT:    v_readfirstlane_b32 s30, v3
+; SI-NEXT:    v_readfirstlane_b32 s34, v2
+; SI-NEXT:    v_readfirstlane_b32 s70, v1
+; SI-NEXT:    v_readfirstlane_b32 s81, v0
+; SI-NEXT:    s_lshr_b32 s35, s29, 16
+; SI-NEXT:    s_lshr_b32 s69, s28, 16
+; SI-NEXT:    s_lshr_b32 s80, s27, 16
+; SI-NEXT:    s_lshr_b32 s83, s26, 16
+; SI-NEXT:    s_lshr_b32 s84, s25, 16
+; SI-NEXT:    s_lshr_b32 s85, s24, 16
+; SI-NEXT:    s_lshr_b32 s86, s23, 16
+; SI-NEXT:    s_lshr_b32 s87, s22, 16
+; SI-NEXT:    s_lshr_b32 s96, s21, 16
+; SI-NEXT:    s_lshr_b32 s97, s20, 16
+; SI-NEXT:    s_lshr_b32 s98, s19, 16
+; SI-NEXT:    s_lshr_b32 s99, s18, 16
+; SI-NEXT:    s_lshr_b32 s7, s17, 16
+; SI-NEXT:    s_lshr_b32 s9, s16, 16
+; SI-NEXT:    s_lshr_b32 s67, s6, 16
+; SI-NEXT:    s_lshr_b32 s66, s8, 16
+; SI-NEXT:    s_lshr_b32 s11, s10, 16
+; SI-NEXT:    s_lshr_b32 s13, s12, 16
 ; SI-NEXT:    s_lshr_b32 s15, s14, 16
 ; SI-NEXT:    s_lshr_b32 s73, s72, 16
 ; SI-NEXT:    s_lshr_b32 s75, s74, 16
@@ -32107,74 +32295,75 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s91, s90, 16
 ; SI-NEXT:    s_lshr_b32 s93, s92, 16
 ; SI-NEXT:    s_lshr_b32 s95, s94, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, vcc_lo, 16
 ; SI-NEXT:    s_lshr_b32 s31, s30, 16
-; SI-NEXT:    s_lshr_b32 s35, s34, 16
-; SI-NEXT:    s_lshr_b32 s70, s68, 16
-; SI-NEXT:    s_lshr_b32 s81, s80, 16
-; SI-NEXT:    s_lshr_b32 s84, s83, 16
+; SI-NEXT:    s_lshr_b32 s68, s34, 16
+; SI-NEXT:    s_lshr_b32 s71, s70, 16
+; SI-NEXT:    s_lshr_b32 s82, s81, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v35, vcc_hi, 1
+; SI-NEXT:    ; implicit-def: $vgpr35 : SGPR spill to VGPR lane
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_writelane_b32 v35, s65, 2
-; SI-NEXT:    v_writelane_b32 v35, s64, 3
-; SI-NEXT:    s_cbranch_scc0 .LBB23_3
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v35, s67, 0
+; SI-NEXT:    v_writelane_b32 v35, s66, 1
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s13, 16
+; SI-NEXT:    s_lshl_b32 s5, s9, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s9, 16
+; SI-NEXT:    s_lshl_b32 s5, s99, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s7, 16
+; SI-NEXT:    s_lshl_b32 s5, s98, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s11, 16
+; SI-NEXT:    s_lshl_b32 s41, s7, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s48, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_and_b32 s4, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
-; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s34, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
-; SI-NEXT:    s_or_b32 s53, s4, s5
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s30, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_or_b32 s53, s4, s5
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s54, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -32204,22 +32393,31 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s12, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s64, 16
+; SI-NEXT:    s_lshl_b32 s5, s13, 16
 ; SI-NEXT:    s_or_b32 s64, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s10, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s65, 16
+; SI-NEXT:    s_lshl_b32 s5, s11, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s8, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
+; SI-NEXT:    s_lshl_b32 s5, s66, 16
 ; SI-NEXT:    s_or_b32 s66, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
+; SI-NEXT:    s_lshl_b32 s5, s67, 16
 ; SI-NEXT:    s_or_b32 s67, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB23_4
-; SI-NEXT:  .LBB23_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s13
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s9
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s11
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s7
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -32231,7 +32429,7 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s18
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s9
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s99
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -32239,11 +32437,11 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s7
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, s98
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v4, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s19
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s99
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s97
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -32254,7 +32452,7 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s20
 ; SI-NEXT:    v_or_b32_e32 v3, v4, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s98
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s96
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
@@ -32263,11 +32461,11 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s97
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s87
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s22
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s96
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s86
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
@@ -32278,7 +32476,7 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s23
 ; SI-NEXT:    v_or_b32_e32 v6, v7, v6
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s87
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s85
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s24
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
@@ -32287,11 +32485,11 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s86
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s84
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_or_b32_e32 v8, v10, v8
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s25
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s85
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, s83
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
@@ -32302,7 +32500,7 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s26
 ; SI-NEXT:    v_or_b32_e32 v9, v10, v9
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v11
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, s80
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s27
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
@@ -32311,11 +32509,11 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
 ; SI-NEXT:    v_cvt_f16_f32_e32 v13, v13
 ; SI-NEXT:    v_or_b32_e32 v10, v12, v10
-; SI-NEXT:    v_cvt_f32_f16_e32 v12, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v12, s69
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
 ; SI-NEXT:    v_or_b32_e32 v11, v13, v11
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s28
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s35
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
@@ -32326,8 +32524,8 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v15, s29
 ; SI-NEXT:    v_or_b32_e32 v12, v13, v12
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v14
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s84
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s83
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s81
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
@@ -32335,11 +32533,11 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
 ; SI-NEXT:    v_or_b32_e32 v13, v15, v13
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s71
 ; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
 ; SI-NEXT:    v_or_b32_e32 v14, v16, v14
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s80
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, s68
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
@@ -32347,11 +32545,11 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v17, v17
 ; SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
-; SI-NEXT:    v_cvt_f32_f16_e32 v18, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v18, s34
 ; SI-NEXT:    v_or_b32_e32 v15, v16, v15
 ; SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v17
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s35
-; SI-NEXT:    v_cvt_f32_f16_e32 v19, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v19, s30
 ; SI-NEXT:    v_add_f32_e32 v18, 0x38000000, v18
 ; SI-NEXT:    v_cvt_f16_f32_e32 v18, v18
 ; SI-NEXT:    v_add_f32_e32 v17, 0x38000000, v17
@@ -32359,10 +32557,10 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v19, 0x38000000, v19
 ; SI-NEXT:    v_cvt_f16_f32_e32 v19, v19
 ; SI-NEXT:    v_or_b32_e32 v16, v18, v16
-; SI-NEXT:    v_cvt_f32_f16_e32 v18, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v18, vcc_hi
 ; SI-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
 ; SI-NEXT:    v_or_b32_e32 v17, v19, v17
-; SI-NEXT:    v_cvt_f32_f16_e32 v19, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v19, vcc_lo
 ; SI-NEXT:    v_cvt_f32_f16_e32 v20, s95
 ; SI-NEXT:    v_add_f32_e32 v18, 0x38000000, v18
 ; SI-NEXT:    v_cvt_f16_f32_e32 v18, v18
@@ -32433,10 +32631,9 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v25, v27, v25
 ; SI-NEXT:    v_cvt_f32_f16_e32 v27, s15
 ; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v26
-; SI-NEXT:    v_readlane_b32 s4, v35, 3
 ; SI-NEXT:    v_or_b32_e32 v26, v28, v26
 ; SI-NEXT:    v_cvt_f32_f16_e32 v28, s14
-; SI-NEXT:    v_cvt_f32_f16_e32 v29, s4
+; SI-NEXT:    v_cvt_f32_f16_e32 v29, s13
 ; SI-NEXT:    v_add_f32_e32 v27, 0x38000000, v27
 ; SI-NEXT:    v_cvt_f16_f32_e32 v27, v27
 ; SI-NEXT:    v_add_f32_e32 v28, 0x38000000, v28
@@ -32444,11 +32641,10 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v28, v28
 ; SI-NEXT:    v_cvt_f16_f32_e32 v29, v29
 ; SI-NEXT:    v_lshlrev_b32_e32 v27, 16, v27
-; SI-NEXT:    v_readlane_b32 s4, v35, 2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v30, s12
 ; SI-NEXT:    v_or_b32_e32 v27, v28, v27
 ; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v29
-; SI-NEXT:    v_cvt_f32_f16_e32 v29, s4
+; SI-NEXT:    v_cvt_f32_f16_e32 v29, s11
 ; SI-NEXT:    v_cvt_f32_f16_e32 v31, s10
 ; SI-NEXT:    v_add_f32_e32 v30, 0x38000000, v30
 ; SI-NEXT:    v_cvt_f16_f32_e32 v30, v30
@@ -32477,11 +32673,8 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v30, v31, v30
 ; SI-NEXT:    v_lshlrev_b32_e32 v31, 16, v32
 ; SI-NEXT:    v_or_b32_e32 v31, v33, v31
-; SI-NEXT:    s_branch .LBB23_5
-; SI-NEXT:  .LBB23_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB23_2
-; SI-NEXT:  .LBB23_4:
+; SI-NEXT:    s_branch .LBB23_6
+; SI-NEXT:  .LBB23_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -32514,7 +32707,7 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB23_5: ; %end
+; SI-NEXT:  .LBB23_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s30, v34, 34
 ; SI-NEXT:    v_readlane_b32 s31, v34, 35
 ; SI-NEXT:    v_readlane_b32 s99, v34, 33
@@ -32614,10 +32807,18 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_3
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_4
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s51, 16
 ; VI-NEXT:    v_mov_b32_e32 v16, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
@@ -32779,10 +32980,8 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v32, v32, v16 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v16, s52, v16
 ; VI-NEXT:    v_or_b32_e32 v16, v16, v32
-; VI-NEXT:    s_branch .LBB23_5
-; VI-NEXT:  .LBB23_3:
-; VI-NEXT:    s_branch .LBB23_2
-; VI-NEXT:  .LBB23_4:
+; VI-NEXT:    s_branch .LBB23_6
+; VI-NEXT:  .LBB23_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -32815,7 +33014,7 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB23_5: ; %end
+; VI-NEXT:  .LBB23_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v33, 15
 ; VI-NEXT:    v_readlane_b32 s66, v33, 14
 ; VI-NEXT:    v_readlane_b32 s65, v33, 13
@@ -32894,10 +33093,18 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_4
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v16, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v15, s51, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v14, s50, v16 op_sel_hi:[1,0]
@@ -32931,10 +33138,8 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v18, s54, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v17, s53, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v16, s52, v16 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB23_5
-; GFX9-NEXT:  .LBB23_3:
-; GFX9-NEXT:    s_branch .LBB23_2
-; GFX9-NEXT:  .LBB23_4:
+; GFX9-NEXT:    s_branch .LBB23_6
+; GFX9-NEXT:  .LBB23_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -32967,7 +33172,7 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB23_5: ; %end
+; GFX9-NEXT:  .LBB23_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v32, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v32, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
@@ -33047,11 +33252,16 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_4
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v15, 0x200, s51 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v14, 0x200, s50 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s49 op_sel_hi:[0,1]
@@ -33085,8 +33295,6 @@ define inreg <32 x i32> @bitcast_v64f16_to_v32i32_scalar(<64 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v17, 0x200, s53 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v16, 0x200, s52 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_branch .LBB23_5
-; GFX11-NEXT:  .LBB23_3:
-; GFX11-NEXT:    s_branch .LBB23_2
 ; GFX11-NEXT:  .LBB23_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -33656,7 +33864,7 @@ define inreg <64 x i16> @bitcast_v32i32_to_v64i16_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s45, v1
 ; SI-NEXT:    s_cmp_lg_u32 s44, 0
 ; SI-NEXT:    v_readfirstlane_b32 s44, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_4
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s38, s5, 16
 ; SI-NEXT:    s_lshr_b32 s39, s7, 16
@@ -33687,11 +33895,51 @@ define inreg <64 x i16> @bitcast_v32i32_to_v64i16_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[22:23], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[20:21], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB25_3
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 vcc, s[20:21], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[18:19], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
+; SI-NEXT:    s_mov_b64 s[36:37], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[36:37], -1
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr65
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; SI-NEXT:    s_cselect_b32 s47, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s47, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -33753,23 +34001,23 @@ define inreg <64 x i16> @bitcast_v32i32_to_v64i16_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[22:23], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[20:21], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 16
-; SI-NEXT:  .LBB25_3: ; %end
-; SI-NEXT:    s_lshl_b32 s47, s36, 16
+; SI-NEXT:    s_lshr_b64 vcc, s[20:21], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[18:19], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
+; SI-NEXT:  .LBB25_5: ; %end
+; SI-NEXT:    s_lshl_b32 s47, s34, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s47
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s47, s69, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s47
-; SI-NEXT:    s_lshl_b32 s47, s34, 16
+; SI-NEXT:    s_lshl_b32 s47, s30, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s18, s18, s47
 ; SI-NEXT:    s_and_b32 s19, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s47, s68, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s47
-; SI-NEXT:    s_lshl_b32 s47, s30, 16
+; SI-NEXT:    s_lshl_b32 s47, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s20, s20, s47
 ; SI-NEXT:    s_and_b32 s21, s21, 0xffff
@@ -33912,40 +34160,6 @@ define inreg <64 x i16> @bitcast_v32i32_to_v64i16_scalar(<32 x i32> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB25_4:
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr69
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr67
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    s_branch .LBB25_2
 ;
 ; VI-LABEL: bitcast_v32i32_to_v64i16_scalar:
 ; VI:       ; %bb.0:
@@ -33970,10 +34184,18 @@ define inreg <64 x i16> @bitcast_v32i32_to_v64i16_scalar(<32 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_4
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB25_3
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s46, s46, 3
 ; VI-NEXT:    s_add_i32 s47, s47, 3
 ; VI-NEXT:    s_add_i32 s29, s29, 3
@@ -34006,7 +34228,7 @@ define inreg <64 x i16> @bitcast_v32i32_to_v64i16_scalar(<32 x i32> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s43, s43, 3
 ; VI-NEXT:    s_add_i32 s44, s44, 3
 ; VI-NEXT:    s_add_i32 s45, s45, 3
-; VI-NEXT:  .LBB25_3: ; %end
+; VI-NEXT:  .LBB25_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -34040,8 +34262,6 @@ define inreg <64 x i16> @bitcast_v32i32_to_v64i16_scalar(<32 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB25_4:
-; VI-NEXT:    s_branch .LBB25_2
 ;
 ; GFX9-LABEL: bitcast_v32i32_to_v64i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -34066,10 +34286,18 @@ define inreg <64 x i16> @bitcast_v32i32_to_v64i16_scalar(<32 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_3
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s46, s46, 3
 ; GFX9-NEXT:    s_add_i32 s47, s47, 3
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
@@ -34102,7 +34330,7 @@ define inreg <64 x i16> @bitcast_v32i32_to_v64i16_scalar(<32 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_add_i32 s43, s43, 3
 ; GFX9-NEXT:    s_add_i32 s44, s44, 3
 ; GFX9-NEXT:    s_add_i32 s45, s45, 3
-; GFX9-NEXT:  .LBB25_3: ; %end
+; GFX9-NEXT:  .LBB25_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -34136,8 +34364,6 @@ define inreg <64 x i16> @bitcast_v32i32_to_v64i16_scalar(<32 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB25_4:
-; GFX9-NEXT:    s_branch .LBB25_2
 ;
 ; GFX11-LABEL: bitcast_v32i32_to_v64i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -34159,11 +34385,16 @@ define inreg <64 x i16> @bitcast_v32i32_to_v64i16_scalar(<32 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_3
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:  .LBB25_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s27, s27, 3
 ; GFX11-NEXT:    s_add_i32 s26, s26, 3
 ; GFX11-NEXT:    s_add_i32 s25, s25, 3
@@ -34196,7 +34427,7 @@ define inreg <64 x i16> @bitcast_v32i32_to_v64i16_scalar(<32 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_add_i32 s41, s41, 3
 ; GFX11-NEXT:    s_add_i32 s29, s29, 3
 ; GFX11-NEXT:    s_add_i32 s28, s28, 3
-; GFX11-NEXT:  .LBB25_3: ; %end
+; GFX11-NEXT:  .LBB25_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -34214,8 +34445,6 @@ define inreg <64 x i16> @bitcast_v32i32_to_v64i16_scalar(<32 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s7 :: v_dual_mov_b32 v29, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v30, s5 :: v_dual_mov_b32 v31, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB25_4:
-; GFX11-NEXT:    s_branch .LBB25_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -35067,13 +35296,10 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v32, s99, 33
 ; SI-NEXT:    v_writelane_b32 v32, s30, 34
 ; SI-NEXT:    v_writelane_b32 v32, s31, 35
-; SI-NEXT:    v_readfirstlane_b32 s9, v16
-; SI-NEXT:    s_lshr_b32 s14, s9, 16
-; SI-NEXT:    v_readfirstlane_b32 s13, v14
-; SI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; SI-NEXT:    v_readfirstlane_b32 s7, v17
+; SI-NEXT:    v_readfirstlane_b32 s9, v16
 ; SI-NEXT:    v_readfirstlane_b32 s11, v15
-; SI-NEXT:    s_lshr_b32 s72, s13, 16
+; SI-NEXT:    v_readfirstlane_b32 s13, v14
 ; SI-NEXT:    v_readfirstlane_b32 s15, v13
 ; SI-NEXT:    v_readfirstlane_b32 s73, v12
 ; SI-NEXT:    v_readfirstlane_b32 s75, v11
@@ -35082,30 +35308,30 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s89, v8
 ; SI-NEXT:    v_readfirstlane_b32 s91, v7
 ; SI-NEXT:    v_readfirstlane_b32 s94, v6
-; SI-NEXT:    v_readfirstlane_b32 s31, v5
-; SI-NEXT:    v_readfirstlane_b32 s68, v4
-; SI-NEXT:    v_readfirstlane_b32 s80, v3
-; SI-NEXT:    v_readfirstlane_b32 s83, v2
-; SI-NEXT:    v_readfirstlane_b32 s86, v1
-; SI-NEXT:    v_readfirstlane_b32 s97, v0
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v33, s14, 0
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v5
+; SI-NEXT:    v_readfirstlane_b32 s34, v4
+; SI-NEXT:    v_readfirstlane_b32 s70, v3
+; SI-NEXT:    v_readfirstlane_b32 s81, v2
+; SI-NEXT:    v_readfirstlane_b32 s84, v1
+; SI-NEXT:    v_readfirstlane_b32 s87, v0
 ; SI-NEXT:    s_lshr_b32 s92, s29, 16
 ; SI-NEXT:    s_lshr_b32 s95, s28, 16
-; SI-NEXT:    s_lshr_b32 s34, s27, 16
-; SI-NEXT:    s_lshr_b32 s69, s26, 16
-; SI-NEXT:    s_lshr_b32 s71, s25, 16
-; SI-NEXT:    s_lshr_b32 s81, s24, 16
-; SI-NEXT:    s_lshr_b32 s84, s23, 16
-; SI-NEXT:    s_lshr_b32 s87, s22, 16
-; SI-NEXT:    s_lshr_b32 s98, s21, 16
-; SI-NEXT:    s_lshr_b32 s99, s20, 16
-; SI-NEXT:    s_lshr_b32 s6, s19, 16
-; SI-NEXT:    s_lshr_b32 s8, s18, 16
-; SI-NEXT:    s_lshr_b32 s10, s17, 16
-; SI-NEXT:    s_lshr_b32 s12, s16, 16
-; SI-NEXT:    s_lshr_b32 vcc_lo, s7, 16
-; SI-NEXT:    s_lshr_b32 vcc_hi, s11, 16
+; SI-NEXT:    s_lshr_b32 s30, s27, 16
+; SI-NEXT:    s_lshr_b32 s35, s26, 16
+; SI-NEXT:    s_lshr_b32 s69, s25, 16
+; SI-NEXT:    s_lshr_b32 s71, s24, 16
+; SI-NEXT:    s_lshr_b32 s82, s23, 16
+; SI-NEXT:    s_lshr_b32 s85, s22, 16
+; SI-NEXT:    s_lshr_b32 s96, s21, 16
+; SI-NEXT:    s_lshr_b32 s97, s20, 16
+; SI-NEXT:    s_lshr_b32 s98, s19, 16
+; SI-NEXT:    s_lshr_b32 s99, s18, 16
+; SI-NEXT:    s_lshr_b32 s6, s17, 16
+; SI-NEXT:    s_lshr_b32 s8, s16, 16
+; SI-NEXT:    s_lshr_b32 s67, s7, 16
+; SI-NEXT:    s_lshr_b32 s10, s9, 16
+; SI-NEXT:    s_lshr_b32 s12, s11, 16
+; SI-NEXT:    s_lshr_b32 s14, s13, 16
 ; SI-NEXT:    s_lshr_b32 s63, s15, 16
 ; SI-NEXT:    s_lshr_b32 s62, s73, 16
 ; SI-NEXT:    s_lshr_b32 s61, s75, 16
@@ -35114,54 +35340,55 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s88, s89, 16
 ; SI-NEXT:    s_lshr_b32 s90, s91, 16
 ; SI-NEXT:    s_lshr_b32 s93, s94, 16
-; SI-NEXT:    s_lshr_b32 s30, s31, 16
-; SI-NEXT:    s_lshr_b32 s35, s68, 16
-; SI-NEXT:    s_lshr_b32 s70, s80, 16
-; SI-NEXT:    s_lshr_b32 s82, s83, 16
-; SI-NEXT:    s_lshr_b32 s85, s86, 16
-; SI-NEXT:    s_lshr_b32 s96, s97, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, vcc_hi, 16
+; SI-NEXT:    s_lshr_b32 s31, s34, 16
+; SI-NEXT:    s_lshr_b32 s68, s70, 16
+; SI-NEXT:    s_lshr_b32 s80, s81, 16
+; SI-NEXT:    s_lshr_b32 s83, s84, 16
+; SI-NEXT:    s_lshr_b32 s86, s87, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v33, s72, 1
+; SI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_writelane_b32 v33, s63, 2
-; SI-NEXT:    v_writelane_b32 v33, s62, 3
-; SI-NEXT:    s_cbranch_scc0 .LBB27_4
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v33, s14, 0
+; SI-NEXT:    v_writelane_b32 v33, s63, 1
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s12, 16
+; SI-NEXT:    s_lshl_b32 s5, s8, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s8, 16
+; SI-NEXT:    s_lshl_b32 s5, s99, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s6, 16
+; SI-NEXT:    s_lshl_b32 s5, s98, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s10, 16
+; SI-NEXT:    s_lshl_b32 s41, s6, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -35169,23 +35396,23 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s92, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s97, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_and_b32 s4, s87, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s86, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_and_b32 s4, s84, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_and_b32 s4, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s34, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s54, s4, s5
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s55, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -35201,92 +35428,109 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s59, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s77, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s60, 16
-; SI-NEXT:    s_mov_b32 s76, s60
+; SI-NEXT:    s_mov_b32 s74, s60
 ; SI-NEXT:    s_or_b32 s60, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s75, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s61, 16
-; SI-NEXT:    s_mov_b32 s74, s61
+; SI-NEXT:    s_mov_b32 s76, s61
 ; SI-NEXT:    s_or_b32 s61, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s73, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s62, 16
+; SI-NEXT:    s_mov_b32 s72, s62
 ; SI-NEXT:    s_or_b32 s62, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s15, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s72, 16
+; SI-NEXT:    s_lshl_b32 s5, s14, 16
 ; SI-NEXT:    s_or_b32 s64, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
+; SI-NEXT:    s_lshl_b32 s5, s12, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s14, 16
+; SI-NEXT:    s_lshl_b32 s5, s10, 16
 ; SI-NEXT:    s_or_b32 s66, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
-; SI-NEXT:    s_mov_b32 s72, vcc_hi
-; SI-NEXT:    s_mov_b32 s14, vcc_lo
+; SI-NEXT:    s_lshl_b32 s5, s67, 16
+; SI-NEXT:    s_mov_b32 s14, s12
+; SI-NEXT:    s_mov_b32 s12, s10
+; SI-NEXT:    s_mov_b32 s10, s67
 ; SI-NEXT:    s_or_b32 s67, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB27_3
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b32 s74, s60
+; SI-NEXT:    s_mov_b32 s76, s61
+; SI-NEXT:    s_mov_b32 s72, s62
+; SI-NEXT:    s_mov_b32 s14, s12
+; SI-NEXT:    s_mov_b32 s12, s10
+; SI-NEXT:    s_mov_b32 s10, s67
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s12, 16
+; SI-NEXT:    s_lshl_b32 s5, s8, 16
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s10, s10, 16
-; SI-NEXT:    s_or_b32 s5, s10, s5
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_add_i32 s37, s5, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s8, 16
+; SI-NEXT:    s_lshl_b32 s5, s99, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s6, 16
+; SI-NEXT:    s_lshl_b32 s5, s98, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s46, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s28, s28, 3
 ; SI-NEXT:    s_add_i32 s47, s4, 0x30000
@@ -35298,35 +35542,35 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s92, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s97, s97, 3
+; SI-NEXT:    s_add_i32 s87, s87, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s97, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_and_b32 s4, s87, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s86, s86, 3
+; SI-NEXT:    s_add_i32 s84, s84, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s86, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_and_b32 s4, s84, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s83, s83, 3
+; SI-NEXT:    s_add_i32 s81, s81, 3
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_and_b32 s4, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s80, s80, 3
+; SI-NEXT:    s_add_i32 s70, s70, 3
 ; SI-NEXT:    s_add_i32 s52, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s68, s68, 3
+; SI-NEXT:    s_add_i32 s34, s34, 3
 ; SI-NEXT:    s_add_i32 s53, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s34, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s31, s31, 3
+; SI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; SI-NEXT:    s_add_i32 s54, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s94, s94, 3
 ; SI-NEXT:    s_add_i32 s55, s4, 0x30000
@@ -35351,27 +35595,26 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s77, s77, 3
 ; SI-NEXT:    s_add_i32 s59, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s77, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s76, 16
+; SI-NEXT:    s_lshl_b32 s5, s74, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s75, s75, 3
 ; SI-NEXT:    s_add_i32 s60, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s75, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s74, 16
+; SI-NEXT:    s_lshl_b32 s5, s76, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s73, s73, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 3
 ; SI-NEXT:    s_add_i32 s61, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s73, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s5, 16
+; SI-NEXT:    s_lshl_b32 s5, s72, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s15, s15, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 2
+; SI-NEXT:    v_readlane_b32 s5, v33, 1
 ; SI-NEXT:    s_add_i32 s62, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s15, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s13, s13, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 1
+; SI-NEXT:    v_readlane_b32 s5, v33, 0
 ; SI-NEXT:    s_add_i32 s63, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s13, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
@@ -35379,21 +35622,20 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s11, s11, 3
 ; SI-NEXT:    s_add_i32 s64, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s72, 16
+; SI-NEXT:    s_lshl_b32 s5, s14, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s9, s9, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 0
 ; SI-NEXT:    s_add_i32 s65, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s5, 16
+; SI-NEXT:    s_lshl_b32 s5, s12, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s66, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s14, 16
+; SI-NEXT:    s_lshl_b32 s5, s10, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s67, s4, 0x30000
-; SI-NEXT:  .LBB27_3: ; %end
+; SI-NEXT:  .LBB27_5: ; %end
 ; SI-NEXT:    v_readlane_b32 s30, v32, 34
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
@@ -35468,13 +35710,6 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB27_4:
-; SI-NEXT:    s_mov_b32 s76, s60
-; SI-NEXT:    s_mov_b32 s74, s61
-; SI-NEXT:    s_mov_b32 s72, vcc_hi
-; SI-NEXT:    s_mov_b32 s14, vcc_lo
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB27_2
 ;
 ; VI-LABEL: bitcast_v64i16_to_v32i32_scalar:
 ; VI:       ; %bb.0:
@@ -35499,10 +35734,18 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_4
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB27_3
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s46, 3
 ; VI-NEXT:    s_and_b32 s4, s46, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -35663,7 +35906,7 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
-; VI-NEXT:  .LBB27_3: ; %end
+; VI-NEXT:  .LBB27_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -35697,8 +35940,6 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB27_4:
-; VI-NEXT:    s_branch .LBB27_2
 ;
 ; GFX9-LABEL: bitcast_v64i16_to_v32i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -35756,10 +35997,18 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_4
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v15, s51, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v14, s50, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v13, s49, 3 op_sel_hi:[1,0]
@@ -35792,10 +36041,8 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v18, s54, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v16, s52, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB27_5
-; GFX9-NEXT:  .LBB27_3:
-; GFX9-NEXT:    s_branch .LBB27_2
-; GFX9-NEXT:  .LBB27_4:
+; GFX9-NEXT:    s_branch .LBB27_6
+; GFX9-NEXT:  .LBB27_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -35828,7 +36075,7 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB27_5: ; %end
+; GFX9-NEXT:  .LBB27_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v32, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v32, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
@@ -35908,11 +36155,16 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_4
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB27_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v15, s51, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v14, s50, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v13, s49, 3 op_sel_hi:[1,0]
@@ -35946,8 +36198,6 @@ define inreg <32 x i32> @bitcast_v64i16_to_v32i32_scalar(<64 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v16, s52, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_branch .LBB27_5
-; GFX11-NEXT:  .LBB27_3:
-; GFX11-NEXT:    s_branch .LBB27_2
 ; GFX11-NEXT:  .LBB27_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -36265,10 +36515,18 @@ define inreg <16 x i64> @bitcast_v32f32_to_v16i64_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v31, s67, 1.0
 ; SI-NEXT:    v_add_f32_e64 v30, s66, 1.0
 ; SI-NEXT:    v_add_f32_e64 v29, s65, 1.0
@@ -36301,10 +36559,8 @@ define inreg <16 x i64> @bitcast_v32f32_to_v16i64_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB29_5
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:    s_branch .LBB29_6
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -36337,7 +36593,7 @@ define inreg <16 x i64> @bitcast_v32f32_to_v16i64_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB29_5: ; %end
+; SI-NEXT:  .LBB29_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s67, v32, 15
 ; SI-NEXT:    v_readlane_b32 s66, v32, 14
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -36416,10 +36672,18 @@ define inreg <16 x i64> @bitcast_v32f32_to_v16i64_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v31, s67, 1.0
 ; VI-NEXT:    v_add_f32_e64 v30, s66, 1.0
 ; VI-NEXT:    v_add_f32_e64 v29, s65, 1.0
@@ -36452,10 +36716,8 @@ define inreg <16 x i64> @bitcast_v32f32_to_v16i64_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB29_5
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:    s_branch .LBB29_6
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -36488,7 +36750,7 @@ define inreg <16 x i64> @bitcast_v32f32_to_v16i64_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB29_5: ; %end
+; VI-NEXT:  .LBB29_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v32, 15
 ; VI-NEXT:    v_readlane_b32 s66, v32, 14
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -36567,10 +36829,18 @@ define inreg <16 x i64> @bitcast_v32f32_to_v16i64_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v31, s67, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v30, s66, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v29, s65, 1.0
@@ -36603,10 +36873,8 @@ define inreg <16 x i64> @bitcast_v32f32_to_v16i64_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB29_5
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:    s_branch .LBB29_6
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -36639,7 +36907,7 @@ define inreg <16 x i64> @bitcast_v32f32_to_v16i64_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB29_5: ; %end
+; GFX9-NEXT:  .LBB29_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v32, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v32, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
@@ -36719,11 +36987,16 @@ define inreg <16 x i64> @bitcast_v32f32_to_v16i64_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB29_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB29_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v31, s67, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v30, s66, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v29, s65, 1.0
@@ -36757,8 +37030,6 @@ define inreg <16 x i64> @bitcast_v32f32_to_v16i64_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB29_5
-; GFX11-NEXT:  .LBB29_3:
-; GFX11-NEXT:    s_branch .LBB29_2
 ; GFX11-NEXT:  .LBB29_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -37066,10 +37337,18 @@ define inreg <32 x float> @bitcast_v16i64_to_v32f32_scalar(<16 x i64> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s46, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s47, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_4
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB31_3
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -37102,7 +37381,7 @@ define inreg <32 x float> @bitcast_v16i64_to_v32f32_scalar(<16 x i64> inreg %a,
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB31_3: ; %end
+; SI-NEXT:  .LBB31_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -37136,8 +37415,6 @@ define inreg <32 x float> @bitcast_v16i64_to_v32f32_scalar(<16 x i64> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v30, s7
 ; SI-NEXT:    v_mov_b32_e32 v31, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_4:
-; SI-NEXT:    s_branch .LBB31_2
 ;
 ; VI-LABEL: bitcast_v16i64_to_v32f32_scalar:
 ; VI:       ; %bb.0:
@@ -37162,10 +37439,18 @@ define inreg <32 x float> @bitcast_v16i64_to_v32f32_scalar(<16 x i64> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_4
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB31_3
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -37198,7 +37483,7 @@ define inreg <32 x float> @bitcast_v16i64_to_v32f32_scalar(<16 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB31_3: ; %end
+; VI-NEXT:  .LBB31_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -37232,8 +37517,6 @@ define inreg <32 x float> @bitcast_v16i64_to_v32f32_scalar(<16 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_4:
-; VI-NEXT:    s_branch .LBB31_2
 ;
 ; GFX9-LABEL: bitcast_v16i64_to_v32f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -37258,10 +37541,18 @@ define inreg <32 x float> @bitcast_v16i64_to_v32f32_scalar(<16 x i64> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_3
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -37294,7 +37585,7 @@ define inreg <32 x float> @bitcast_v16i64_to_v32f32_scalar(<16 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB31_3: ; %end
+; GFX9-NEXT:  .LBB31_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -37328,8 +37619,6 @@ define inreg <32 x float> @bitcast_v16i64_to_v32f32_scalar(<16 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB31_4:
-; GFX9-NEXT:    s_branch .LBB31_2
 ;
 ; GFX11-LABEL: bitcast_v16i64_to_v32f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -37351,11 +37640,16 @@ define inreg <32 x float> @bitcast_v16i64_to_v32f32_scalar(<16 x i64> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_3
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -37388,7 +37682,7 @@ define inreg <32 x float> @bitcast_v16i64_to_v32f32_scalar(<16 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB31_3: ; %end
+; GFX11-NEXT:  .LBB31_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -37407,8 +37701,6 @@ define inreg <32 x float> @bitcast_v16i64_to_v32f32_scalar(<16 x i64> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s7 :: v_dual_mov_b32 v29, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v30, s5 :: v_dual_mov_b32 v31, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_4:
-; GFX11-NEXT:    s_branch .LBB31_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -37687,10 +37979,18 @@ define inreg <16 x double> @bitcast_v32f32_to_v16f64_scalar(<32 x float> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v31, s67, 1.0
 ; SI-NEXT:    v_add_f32_e64 v30, s66, 1.0
 ; SI-NEXT:    v_add_f32_e64 v29, s65, 1.0
@@ -37723,10 +38023,8 @@ define inreg <16 x double> @bitcast_v32f32_to_v16f64_scalar(<32 x float> inreg %
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB33_5
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:    s_branch .LBB33_6
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -37759,7 +38057,7 @@ define inreg <16 x double> @bitcast_v32f32_to_v16f64_scalar(<32 x float> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB33_5: ; %end
+; SI-NEXT:  .LBB33_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s67, v32, 15
 ; SI-NEXT:    v_readlane_b32 s66, v32, 14
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -37838,10 +38136,18 @@ define inreg <16 x double> @bitcast_v32f32_to_v16f64_scalar(<32 x float> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v31, s67, 1.0
 ; VI-NEXT:    v_add_f32_e64 v30, s66, 1.0
 ; VI-NEXT:    v_add_f32_e64 v29, s65, 1.0
@@ -37874,10 +38180,8 @@ define inreg <16 x double> @bitcast_v32f32_to_v16f64_scalar(<32 x float> inreg %
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB33_5
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:    s_branch .LBB33_6
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -37910,7 +38214,7 @@ define inreg <16 x double> @bitcast_v32f32_to_v16f64_scalar(<32 x float> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB33_5: ; %end
+; VI-NEXT:  .LBB33_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v32, 15
 ; VI-NEXT:    v_readlane_b32 s66, v32, 14
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -37989,10 +38293,18 @@ define inreg <16 x double> @bitcast_v32f32_to_v16f64_scalar(<32 x float> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v31, s67, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v30, s66, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v29, s65, 1.0
@@ -38025,10 +38337,8 @@ define inreg <16 x double> @bitcast_v32f32_to_v16f64_scalar(<32 x float> inreg %
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB33_5
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:    s_branch .LBB33_6
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -38061,7 +38371,7 @@ define inreg <16 x double> @bitcast_v32f32_to_v16f64_scalar(<32 x float> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB33_5: ; %end
+; GFX9-NEXT:  .LBB33_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v32, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v32, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
@@ -38141,11 +38451,16 @@ define inreg <16 x double> @bitcast_v32f32_to_v16f64_scalar(<32 x float> inreg %
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB33_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB33_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v31, s67, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v30, s66, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v29, s65, 1.0
@@ -38179,8 +38494,6 @@ define inreg <16 x double> @bitcast_v32f32_to_v16f64_scalar(<32 x float> inreg %
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB33_5
-; GFX11-NEXT:  .LBB33_3:
-; GFX11-NEXT:    s_branch .LBB33_2
 ; GFX11-NEXT:  .LBB33_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -38450,10 +38763,18 @@ define inreg <32 x float> @bitcast_v16f64_to_v32f32_scalar(<16 x double> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_3
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB35_4
-; SI-NEXT:  .LBB35_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[30:31], s[66:67], 1.0
 ; SI-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; SI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
@@ -38470,10 +38791,8 @@ define inreg <32 x float> @bitcast_v16f64_to_v32f32_scalar(<16 x double> inreg %
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB35_5
-; SI-NEXT:  .LBB35_3:
-; SI-NEXT:    s_branch .LBB35_2
-; SI-NEXT:  .LBB35_4:
+; SI-NEXT:    s_branch .LBB35_6
+; SI-NEXT:  .LBB35_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -38506,7 +38825,7 @@ define inreg <32 x float> @bitcast_v16f64_to_v32f32_scalar(<16 x double> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB35_5: ; %end
+; SI-NEXT:  .LBB35_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s67, v32, 15
 ; SI-NEXT:    v_readlane_b32 s66, v32, 14
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -38585,10 +38904,18 @@ define inreg <32 x float> @bitcast_v16f64_to_v32f32_scalar(<16 x double> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[30:31], s[66:67], 1.0
 ; VI-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; VI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
@@ -38605,10 +38932,8 @@ define inreg <32 x float> @bitcast_v16f64_to_v32f32_scalar(<16 x double> inreg %
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB35_5
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:    s_branch .LBB35_6
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -38641,7 +38966,7 @@ define inreg <32 x float> @bitcast_v16f64_to_v32f32_scalar(<16 x double> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB35_5: ; %end
+; VI-NEXT:  .LBB35_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v32, 15
 ; VI-NEXT:    v_readlane_b32 s66, v32, 14
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -38720,10 +39045,18 @@ define inreg <32 x float> @bitcast_v16f64_to_v32f32_scalar(<16 x double> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[30:31], s[66:67], 1.0
 ; GFX9-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; GFX9-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
@@ -38740,10 +39073,8 @@ define inreg <32 x float> @bitcast_v16f64_to_v32f32_scalar(<16 x double> inreg %
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB35_5
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:    s_branch .LBB35_6
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -38776,7 +39107,7 @@ define inreg <32 x float> @bitcast_v16f64_to_v32f32_scalar(<16 x double> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB35_5: ; %end
+; GFX9-NEXT:  .LBB35_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v32, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v32, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
@@ -38856,11 +39187,16 @@ define inreg <32 x float> @bitcast_v16f64_to_v32f32_scalar(<16 x double> inreg %
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[30:31], s[66:67], 1.0
 ; GFX11-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; GFX11-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
@@ -38878,8 +39214,6 @@ define inreg <32 x float> @bitcast_v16f64_to_v32f32_scalar(<16 x double> inreg %
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB35_5
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -42919,72 +43253,72 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v63, s30, 34
 ; SI-NEXT:    v_writelane_b32 v63, s31, 35
 ; SI-NEXT:    v_readfirstlane_b32 s4, v19
-; SI-NEXT:    v_readfirstlane_b32 s45, v18
-; SI-NEXT:    v_readfirstlane_b32 s44, v17
-; SI-NEXT:    v_readfirstlane_b32 s47, v16
-; SI-NEXT:    v_readfirstlane_b32 s46, v15
-; SI-NEXT:    v_readfirstlane_b32 s57, v14
-; SI-NEXT:    v_readfirstlane_b32 s56, v13
-; SI-NEXT:    v_readfirstlane_b32 s59, v12
-; SI-NEXT:    v_readfirstlane_b32 s58, v11
-; SI-NEXT:    v_readfirstlane_b32 s61, v10
-; SI-NEXT:    v_readfirstlane_b32 s60, v9
-; SI-NEXT:    v_readfirstlane_b32 s63, v8
-; SI-NEXT:    v_readfirstlane_b32 s62, v7
-; SI-NEXT:    v_readfirstlane_b32 s73, v6
-; SI-NEXT:    v_readfirstlane_b32 s72, v5
-; SI-NEXT:    v_readfirstlane_b32 s75, v4
-; SI-NEXT:    v_readfirstlane_b32 s74, v3
-; SI-NEXT:    v_readfirstlane_b32 s77, v2
+; SI-NEXT:    v_readfirstlane_b32 s43, v18
+; SI-NEXT:    v_readfirstlane_b32 s42, v17
+; SI-NEXT:    v_readfirstlane_b32 s45, v16
+; SI-NEXT:    v_readfirstlane_b32 s44, v15
+; SI-NEXT:    v_readfirstlane_b32 s47, v14
+; SI-NEXT:    v_readfirstlane_b32 s46, v13
+; SI-NEXT:    v_readfirstlane_b32 s57, v12
+; SI-NEXT:    v_readfirstlane_b32 s56, v11
+; SI-NEXT:    v_readfirstlane_b32 s59, v10
+; SI-NEXT:    v_readfirstlane_b32 s58, v9
+; SI-NEXT:    v_readfirstlane_b32 s61, v8
+; SI-NEXT:    v_readfirstlane_b32 s60, v7
+; SI-NEXT:    v_readfirstlane_b32 s63, v6
+; SI-NEXT:    v_readfirstlane_b32 s62, v5
+; SI-NEXT:    v_readfirstlane_b32 s73, v4
+; SI-NEXT:    v_readfirstlane_b32 s72, v3
+; SI-NEXT:    v_readfirstlane_b32 s75, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_readfirstlane_b32 s76, v1
+; SI-NEXT:    v_readfirstlane_b32 s74, v1
 ; SI-NEXT:    ; implicit-def: $vgpr61 : SGPR spill to VGPR lane
 ; SI-NEXT:    ; implicit-def: $vgpr62 : SGPR spill to VGPR lane
-; SI-NEXT:    s_cbranch_scc0 .LBB37_3
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s4, s45, 24
+; SI-NEXT:    s_lshr_b32 s4, s43, 24
 ; SI-NEXT:    v_writelane_b32 v62, s4, 17
-; SI-NEXT:    s_lshr_b32 s4, s47, 24
+; SI-NEXT:    s_lshr_b32 s4, s45, 24
 ; SI-NEXT:    v_writelane_b32 v62, s4, 16
-; SI-NEXT:    s_lshr_b32 s4, s57, 24
+; SI-NEXT:    s_lshr_b32 s4, s47, 24
 ; SI-NEXT:    v_writelane_b32 v62, s4, 15
-; SI-NEXT:    s_lshr_b32 s4, s57, 16
+; SI-NEXT:    s_lshr_b32 s4, s47, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 14
-; SI-NEXT:    s_lshr_b32 s4, s59, 24
+; SI-NEXT:    s_lshr_b32 s4, s57, 24
 ; SI-NEXT:    v_writelane_b32 v62, s4, 13
-; SI-NEXT:    s_lshr_b32 s4, s59, 16
+; SI-NEXT:    s_lshr_b32 s4, s57, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 12
-; SI-NEXT:    s_lshr_b32 s4, s59, 8
+; SI-NEXT:    s_lshr_b32 s4, s57, 8
 ; SI-NEXT:    v_writelane_b32 v62, s4, 11
-; SI-NEXT:    s_lshr_b32 s4, s61, 24
+; SI-NEXT:    s_lshr_b32 s4, s59, 24
 ; SI-NEXT:    v_writelane_b32 v62, s4, 10
-; SI-NEXT:    s_lshr_b32 s4, s61, 16
+; SI-NEXT:    s_lshr_b32 s4, s59, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 9
-; SI-NEXT:    s_lshr_b32 s4, s61, 8
+; SI-NEXT:    s_lshr_b32 s4, s59, 8
 ; SI-NEXT:    v_writelane_b32 v62, s4, 8
-; SI-NEXT:    s_lshr_b32 s4, s63, 24
+; SI-NEXT:    s_lshr_b32 s4, s61, 24
 ; SI-NEXT:    v_writelane_b32 v62, s4, 7
-; SI-NEXT:    s_lshr_b32 s4, s63, 16
+; SI-NEXT:    s_lshr_b32 s4, s61, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 6
-; SI-NEXT:    s_lshr_b32 s4, s63, 8
+; SI-NEXT:    s_lshr_b32 s4, s61, 8
 ; SI-NEXT:    v_writelane_b32 v62, s4, 5
-; SI-NEXT:    s_lshr_b32 s4, s73, 24
+; SI-NEXT:    s_lshr_b32 s4, s63, 24
 ; SI-NEXT:    v_writelane_b32 v62, s4, 4
-; SI-NEXT:    s_lshr_b32 s4, s73, 16
+; SI-NEXT:    s_lshr_b32 s4, s63, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 3
-; SI-NEXT:    s_lshr_b32 s4, s73, 8
+; SI-NEXT:    s_lshr_b32 s4, s63, 8
 ; SI-NEXT:    v_writelane_b32 v62, s4, 2
-; SI-NEXT:    s_lshr_b32 s4, s75, 24
+; SI-NEXT:    s_lshr_b32 s4, s73, 24
 ; SI-NEXT:    v_writelane_b32 v62, s4, 1
-; SI-NEXT:    s_lshr_b32 s4, s75, 16
+; SI-NEXT:    s_lshr_b32 s4, s73, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 0
-; SI-NEXT:    s_lshr_b32 s4, s75, 8
+; SI-NEXT:    s_lshr_b32 s4, s73, 8
 ; SI-NEXT:    v_writelane_b32 v61, s4, 63
-; SI-NEXT:    s_lshr_b32 s4, s77, 24
+; SI-NEXT:    s_lshr_b32 s4, s75, 24
 ; SI-NEXT:    v_writelane_b32 v61, s4, 62
-; SI-NEXT:    s_lshr_b32 s4, s77, 16
+; SI-NEXT:    s_lshr_b32 s4, s75, 16
 ; SI-NEXT:    v_writelane_b32 v61, s4, 61
-; SI-NEXT:    s_lshr_b32 s4, s77, 8
+; SI-NEXT:    s_lshr_b32 s4, s75, 8
 ; SI-NEXT:    v_writelane_b32 v61, s4, 60
 ; SI-NEXT:    s_lshr_b32 s4, s29, 24
 ; SI-NEXT:    v_writelane_b32 v61, s4, 59
@@ -43026,324 +43360,114 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v61, s4, 41
 ; SI-NEXT:    s_lshr_b32 s4, s17, 8
 ; SI-NEXT:    v_writelane_b32 v61, s4, 40
-; SI-NEXT:    s_lshr_b64 s[4:5], s[44:45], 24
+; SI-NEXT:    s_lshr_b64 s[4:5], s[42:43], 24
 ; SI-NEXT:    v_writelane_b32 v61, s4, 38
 ; SI-NEXT:    v_writelane_b32 v61, s5, 39
-; SI-NEXT:    s_lshr_b64 s[4:5], s[44:45], 16
+; SI-NEXT:    s_lshr_b64 s[4:5], s[42:43], 16
 ; SI-NEXT:    v_writelane_b32 v61, s4, 36
 ; SI-NEXT:    v_writelane_b32 v61, s5, 37
-; SI-NEXT:    s_lshr_b64 s[4:5], s[44:45], 8
+; SI-NEXT:    s_lshr_b64 s[4:5], s[42:43], 8
 ; SI-NEXT:    v_writelane_b32 v61, s4, 34
 ; SI-NEXT:    v_writelane_b32 v61, s5, 35
-; SI-NEXT:    s_lshr_b64 s[4:5], s[46:47], 24
+; SI-NEXT:    s_lshr_b64 s[4:5], s[44:45], 24
 ; SI-NEXT:    v_writelane_b32 v61, s4, 32
 ; SI-NEXT:    v_writelane_b32 v61, s5, 33
-; SI-NEXT:    s_lshr_b64 s[4:5], s[46:47], 16
+; SI-NEXT:    s_lshr_b64 s[4:5], s[44:45], 16
 ; SI-NEXT:    v_writelane_b32 v61, s4, 30
 ; SI-NEXT:    v_writelane_b32 v61, s5, 31
-; SI-NEXT:    s_lshr_b64 s[4:5], s[46:47], 8
+; SI-NEXT:    s_lshr_b64 s[4:5], s[44:45], 8
 ; SI-NEXT:    v_writelane_b32 v61, s4, 28
 ; SI-NEXT:    v_writelane_b32 v61, s5, 29
-; SI-NEXT:    s_lshr_b64 s[4:5], s[56:57], 24
+; SI-NEXT:    s_lshr_b64 s[4:5], s[46:47], 24
 ; SI-NEXT:    v_writelane_b32 v61, s4, 26
 ; SI-NEXT:    v_writelane_b32 v61, s5, 27
-; SI-NEXT:    s_lshr_b64 s[4:5], s[56:57], 16
+; SI-NEXT:    s_lshr_b64 s[4:5], s[46:47], 16
 ; SI-NEXT:    v_writelane_b32 v61, s4, 24
 ; SI-NEXT:    v_writelane_b32 v61, s5, 25
-; SI-NEXT:    s_lshr_b64 s[4:5], s[56:57], 8
+; SI-NEXT:    s_lshr_b64 s[4:5], s[46:47], 8
 ; SI-NEXT:    v_writelane_b32 v61, s4, 22
 ; SI-NEXT:    v_writelane_b32 v61, s5, 23
-; SI-NEXT:    s_lshr_b64 s[4:5], s[58:59], 24
+; SI-NEXT:    s_lshr_b64 s[4:5], s[56:57], 24
 ; SI-NEXT:    v_writelane_b32 v61, s4, 20
 ; SI-NEXT:    v_writelane_b32 v61, s5, 21
-; SI-NEXT:    s_lshr_b64 s[4:5], s[58:59], 16
+; SI-NEXT:    s_lshr_b64 s[4:5], s[56:57], 16
 ; SI-NEXT:    v_writelane_b32 v61, s4, 18
 ; SI-NEXT:    v_writelane_b32 v61, s5, 19
-; SI-NEXT:    s_lshr_b64 s[4:5], s[58:59], 8
+; SI-NEXT:    s_lshr_b64 s[4:5], s[56:57], 8
 ; SI-NEXT:    v_writelane_b32 v61, s4, 16
 ; SI-NEXT:    v_writelane_b32 v61, s5, 17
-; SI-NEXT:    s_lshr_b64 s[4:5], s[60:61], 24
+; SI-NEXT:    s_lshr_b64 s[4:5], s[58:59], 24
 ; SI-NEXT:    v_writelane_b32 v61, s4, 14
 ; SI-NEXT:    v_writelane_b32 v61, s5, 15
-; SI-NEXT:    s_lshr_b64 s[4:5], s[60:61], 8
+; SI-NEXT:    s_lshr_b64 s[4:5], s[58:59], 16
 ; SI-NEXT:    v_writelane_b32 v61, s4, 12
 ; SI-NEXT:    v_writelane_b32 v61, s5, 13
-; SI-NEXT:    s_lshr_b64 s[4:5], s[62:63], 8
+; SI-NEXT:    s_lshr_b64 s[4:5], s[58:59], 8
 ; SI-NEXT:    v_writelane_b32 v61, s4, 10
 ; SI-NEXT:    v_writelane_b32 v61, s5, 11
-; SI-NEXT:    s_lshr_b64 s[4:5], s[72:73], 24
+; SI-NEXT:    s_lshr_b64 s[4:5], s[60:61], 8
 ; SI-NEXT:    v_writelane_b32 v61, s4, 8
 ; SI-NEXT:    v_writelane_b32 v61, s5, 9
-; SI-NEXT:    s_lshr_b64 s[4:5], s[72:73], 8
+; SI-NEXT:    s_lshr_b64 s[4:5], s[62:63], 24
 ; SI-NEXT:    v_writelane_b32 v61, s4, 6
 ; SI-NEXT:    v_writelane_b32 v61, s5, 7
-; SI-NEXT:    s_lshr_b64 s[4:5], s[74:75], 8
+; SI-NEXT:    s_lshr_b64 s[4:5], s[62:63], 8
 ; SI-NEXT:    v_writelane_b32 v61, s4, 4
 ; SI-NEXT:    v_writelane_b32 v61, s5, 5
-; SI-NEXT:    s_lshr_b64 s[4:5], s[76:77], 8
+; SI-NEXT:    s_lshr_b64 s[4:5], s[72:73], 8
 ; SI-NEXT:    v_writelane_b32 v61, s4, 2
 ; SI-NEXT:    v_writelane_b32 v61, s5, 3
-; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 8
+; SI-NEXT:    s_lshr_b64 s[4:5], s[74:75], 8
 ; SI-NEXT:    v_writelane_b32 v61, s4, 0
-; SI-NEXT:    s_lshr_b32 s79, s45, 16
-; SI-NEXT:    s_lshr_b32 s89, s45, 8
-; SI-NEXT:    s_lshr_b32 s91, s47, 16
-; SI-NEXT:    s_lshr_b32 s78, s47, 8
-; SI-NEXT:    s_lshr_b32 s88, s57, 8
+; SI-NEXT:    s_lshr_b32 s79, s43, 16
+; SI-NEXT:    s_lshr_b32 s89, s43, 8
+; SI-NEXT:    s_lshr_b32 s91, s45, 16
+; SI-NEXT:    s_lshr_b32 s78, s45, 8
+; SI-NEXT:    s_lshr_b32 s88, s47, 8
 ; SI-NEXT:    s_lshr_b32 s90, s17, 24
-; SI-NEXT:    s_lshr_b64 s[92:93], s[60:61], 16
-; SI-NEXT:    s_lshr_b64 s[94:95], s[62:63], 24
+; SI-NEXT:    s_lshr_b64 s[92:93], s[60:61], 24
+; SI-NEXT:    s_lshr_b64 s[94:95], s[60:61], 16
 ; SI-NEXT:    s_lshr_b64 s[30:31], s[62:63], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[72:73], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[74:75], 24
-; SI-NEXT:    s_lshr_b64 s[38:39], s[74:75], 16
-; SI-NEXT:    s_lshr_b64 s[48:49], s[76:77], 24
-; SI-NEXT:    s_lshr_b64 s[50:51], s[76:77], 16
-; SI-NEXT:    s_lshr_b64 s[52:53], s[28:29], 24
-; SI-NEXT:    s_lshr_b64 s[54:55], s[28:29], 16
-; SI-NEXT:    s_lshr_b64 s[64:65], s[28:29], 8
-; SI-NEXT:    s_lshr_b64 s[66:67], s[26:27], 24
-; SI-NEXT:    s_lshr_b64 s[68:69], s[26:27], 16
-; SI-NEXT:    s_lshr_b64 s[70:71], s[26:27], 8
-; SI-NEXT:    s_lshr_b64 s[80:81], s[24:25], 24
-; SI-NEXT:    s_lshr_b64 s[82:83], s[24:25], 16
-; SI-NEXT:    s_lshr_b64 s[84:85], s[24:25], 8
-; SI-NEXT:    s_lshr_b64 s[86:87], s[22:23], 24
-; SI-NEXT:    s_lshr_b64 s[96:97], s[22:23], 16
-; SI-NEXT:    s_lshr_b64 s[98:99], s[22:23], 8
-; SI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 24
-; SI-NEXT:    s_lshr_b64 s[42:43], s[20:21], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[72:73], 24
+; SI-NEXT:    s_lshr_b64 s[36:37], s[72:73], 16
+; SI-NEXT:    s_lshr_b64 s[38:39], s[74:75], 24
+; SI-NEXT:    s_lshr_b64 s[48:49], s[74:75], 16
 ; SI-NEXT:    v_writelane_b32 v61, s5, 1
-; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 24
+; SI-NEXT:    s_lshr_b64 s[50:51], s[28:29], 24
+; SI-NEXT:    s_lshr_b64 s[52:53], s[28:29], 16
+; SI-NEXT:    s_lshr_b64 s[54:55], s[28:29], 8
+; SI-NEXT:    s_lshr_b64 s[64:65], s[26:27], 24
+; SI-NEXT:    s_lshr_b64 s[66:67], s[26:27], 16
+; SI-NEXT:    s_lshr_b64 s[68:69], s[26:27], 8
+; SI-NEXT:    s_lshr_b64 s[70:71], s[24:25], 24
+; SI-NEXT:    s_lshr_b64 s[80:81], s[24:25], 16
+; SI-NEXT:    s_lshr_b64 s[82:83], s[24:25], 8
+; SI-NEXT:    s_lshr_b64 s[84:85], s[22:23], 24
+; SI-NEXT:    s_lshr_b64 s[86:87], s[22:23], 16
+; SI-NEXT:    s_lshr_b64 s[96:97], s[22:23], 8
+; SI-NEXT:    s_lshr_b64 s[98:99], s[20:21], 24
+; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 16
+; SI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 8
+; SI-NEXT:    s_lshr_b64 vcc, s[18:19], 24
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[14:15], s[18:19], 8
-; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 24
-; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB37_4
-; SI-NEXT:  .LBB37_2: ; %cmp.true
-; SI-NEXT:    v_add_f32_e64 v1, s60, 1.0
-; SI-NEXT:    v_add_f32_e64 v22, s26, 1.0
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
-; SI-NEXT:    v_readfirstlane_b32 s26, v1
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_add_f32_e64 v1, s58, 1.0
-; SI-NEXT:    v_add_f32_e64 v20, s28, 1.0
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
-; SI-NEXT:    v_readfirstlane_b32 s28, v1
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_add_f32_e64 v1, s56, 1.0
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
-; SI-NEXT:    v_readfirstlane_b32 s40, v1
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_add_f32_e64 v1, s46, 1.0
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
-; SI-NEXT:    v_readfirstlane_b32 s42, v1
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_add_f32_e64 v1, s45, 1.0
-; SI-NEXT:    v_add_f32_e64 v2, s44, 1.0
-; SI-NEXT:    v_add_f32_e64 v13, s73, 1.0
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:52 ; 4-byte Folded Spill
-; SI-NEXT:    v_readfirstlane_b32 s44, v2
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 24, v1
-; SI-NEXT:    v_add_f32_e64 v15, s75, 1.0
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 8, v13
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 24, v15
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v15
-; SI-NEXT:    v_add_f32_e64 v17, s77, 1.0
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 8, v15
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:88 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 24, v17
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v17
-; SI-NEXT:    v_add_f32_e64 v19, s29, 1.0
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:96 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 8, v17
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:100 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 24, v19
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:104 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v19
-; SI-NEXT:    v_add_f32_e64 v21, s27, 1.0
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:108 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 8, v19
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:112 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 24, v21
-; SI-NEXT:    v_readfirstlane_b32 s45, v1
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:116 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v21
-; SI-NEXT:    v_add_f32_e64 v37, s17, 1.0
-; SI-NEXT:    v_add_f32_e64 v38, s16, 1.0
-; SI-NEXT:    v_add_f32_e64 v32, s19, 1.0
-; SI-NEXT:    v_add_f32_e64 v35, s18, 1.0
-; SI-NEXT:    v_add_f32_e64 v28, s21, 1.0
-; SI-NEXT:    v_add_f32_e64 v31, s20, 1.0
-; SI-NEXT:    v_add_f32_e64 v25, s23, 1.0
-; SI-NEXT:    v_add_f32_e64 v26, s22, 1.0
-; SI-NEXT:    v_add_f32_e64 v23, s25, 1.0
-; SI-NEXT:    v_add_f32_e64 v24, s24, 1.0
-; SI-NEXT:    v_add_f32_e64 v18, s76, 1.0
-; SI-NEXT:    v_add_f32_e64 v16, s74, 1.0
-; SI-NEXT:    v_add_f32_e64 v14, s72, 1.0
-; SI-NEXT:    v_add_f32_e64 v11, s63, 1.0
-; SI-NEXT:    v_add_f32_e64 v12, s62, 1.0
-; SI-NEXT:    v_add_f32_e64 v9, s61, 1.0
-; SI-NEXT:    v_add_f32_e64 v7, s59, 1.0
-; SI-NEXT:    v_add_f32_e64 v5, s57, 1.0
-; SI-NEXT:    v_add_f32_e64 v3, s47, 1.0
-; SI-NEXT:    s_lshr_b64 s[46:47], s[44:45], 16
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:120 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 8, v21
-; SI-NEXT:    v_readfirstlane_b32 s16, v38
-; SI-NEXT:    v_readfirstlane_b32 s17, v37
-; SI-NEXT:    v_readfirstlane_b32 s12, v35
-; SI-NEXT:    v_readfirstlane_b32 s13, v32
-; SI-NEXT:    v_readfirstlane_b32 s6, v31
-; SI-NEXT:    v_readfirstlane_b32 s7, v28
-; SI-NEXT:    v_readfirstlane_b32 s4, v26
-; SI-NEXT:    v_readfirstlane_b32 s5, v25
-; SI-NEXT:    v_readfirstlane_b32 s8, v24
-; SI-NEXT:    v_readfirstlane_b32 s9, v23
-; SI-NEXT:    v_readfirstlane_b32 s10, v22
-; SI-NEXT:    v_readfirstlane_b32 s11, v21
-; SI-NEXT:    v_readfirstlane_b32 s14, v20
-; SI-NEXT:    v_readfirstlane_b32 s15, v19
-; SI-NEXT:    v_readfirstlane_b32 s18, v18
-; SI-NEXT:    v_readfirstlane_b32 s19, v17
-; SI-NEXT:    v_readfirstlane_b32 s20, v16
-; SI-NEXT:    v_readfirstlane_b32 s21, v15
-; SI-NEXT:    v_readfirstlane_b32 s22, v14
-; SI-NEXT:    v_readfirstlane_b32 s23, v13
-; SI-NEXT:    v_readfirstlane_b32 s24, v12
-; SI-NEXT:    v_readfirstlane_b32 s25, v11
-; SI-NEXT:    v_readfirstlane_b32 s27, v9
-; SI-NEXT:    v_readfirstlane_b32 s29, v7
-; SI-NEXT:    v_readfirstlane_b32 s41, v5
-; SI-NEXT:    v_readfirstlane_b32 s43, v3
-; SI-NEXT:    s_lshr_b64 vcc, s[44:45], 24
-; SI-NEXT:    v_writelane_b32 v61, s46, 36
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:124 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 24, v23
-; SI-NEXT:    v_writelane_b32 v61, s47, 37
-; SI-NEXT:    s_lshr_b64 s[44:45], s[44:45], 8
-; SI-NEXT:    s_lshr_b64 s[58:59], s[42:43], 24
-; SI-NEXT:    s_lshr_b64 s[60:61], s[42:43], 16
-; SI-NEXT:    s_lshr_b64 s[62:63], s[42:43], 8
-; SI-NEXT:    s_lshr_b64 s[72:73], s[40:41], 24
-; SI-NEXT:    s_lshr_b64 s[74:75], s[40:41], 16
-; SI-NEXT:    s_lshr_b64 s[76:77], s[40:41], 8
-; SI-NEXT:    s_lshr_b64 s[78:79], s[28:29], 24
-; SI-NEXT:    s_lshr_b64 s[88:89], s[28:29], 16
-; SI-NEXT:    s_lshr_b64 s[28:29], s[28:29], 8
-; SI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 24
-; SI-NEXT:    s_lshr_b64 s[92:93], s[26:27], 16
-; SI-NEXT:    s_lshr_b64 s[26:27], s[26:27], 8
-; SI-NEXT:    s_lshr_b64 s[94:95], s[24:25], 24
-; SI-NEXT:    s_lshr_b64 s[30:31], s[24:25], 16
-; SI-NEXT:    s_lshr_b64 s[24:25], s[24:25], 8
-; SI-NEXT:    s_lshr_b64 s[34:35], s[22:23], 24
-; SI-NEXT:    s_lshr_b64 s[46:47], s[22:23], 16
-; SI-NEXT:    s_lshr_b64 s[22:23], s[22:23], 8
-; SI-NEXT:    s_lshr_b64 s[36:37], s[20:21], 24
-; SI-NEXT:    s_lshr_b64 s[38:39], s[20:21], 16
-; SI-NEXT:    s_lshr_b64 s[20:21], s[20:21], 8
-; SI-NEXT:    s_lshr_b64 s[48:49], s[18:19], 24
-; SI-NEXT:    s_lshr_b64 s[50:51], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[18:19], s[18:19], 8
-; SI-NEXT:    s_lshr_b64 s[52:53], s[14:15], 24
-; SI-NEXT:    s_lshr_b64 s[54:55], s[14:15], 16
-; SI-NEXT:    s_lshr_b64 s[64:65], s[14:15], 8
-; SI-NEXT:    s_lshr_b64 s[66:67], s[10:11], 24
-; SI-NEXT:    s_lshr_b64 s[68:69], s[10:11], 16
-; SI-NEXT:    s_lshr_b64 s[70:71], s[10:11], 8
-; SI-NEXT:    s_lshr_b64 s[80:81], s[8:9], 24
-; SI-NEXT:    s_lshr_b64 s[82:83], s[8:9], 16
-; SI-NEXT:    s_lshr_b64 s[84:85], s[8:9], 8
-; SI-NEXT:    s_lshr_b64 s[86:87], s[4:5], 24
-; SI-NEXT:    s_lshr_b64 s[96:97], s[4:5], 16
-; SI-NEXT:    s_lshr_b64 s[98:99], s[4:5], 8
-; SI-NEXT:    s_lshr_b64 s[40:41], s[6:7], 24
-; SI-NEXT:    s_lshr_b64 s[42:43], s[6:7], 16
-; SI-NEXT:    s_lshr_b64 s[8:9], s[6:7], 8
-; SI-NEXT:    s_lshr_b64 s[56:57], s[12:13], 24
-; SI-NEXT:    s_lshr_b64 s[10:11], s[12:13], 16
-; SI-NEXT:    s_lshr_b64 s[14:15], s[12:13], 8
-; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 24
-; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 8
-; SI-NEXT:    s_mov_b32 s16, vcc_lo
-; SI-NEXT:    v_lshrrev_b32_e32 v40, 16, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v41, 8, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v42, 24, v3
-; SI-NEXT:    v_lshrrev_b32_e32 v43, 16, v3
-; SI-NEXT:    v_lshrrev_b32_e32 v44, 8, v3
-; SI-NEXT:    v_lshrrev_b32_e32 v45, 24, v5
-; SI-NEXT:    v_lshrrev_b32_e32 v46, 16, v5
-; SI-NEXT:    v_lshrrev_b32_e32 v47, 8, v5
-; SI-NEXT:    v_lshrrev_b32_e32 v56, 24, v7
-; SI-NEXT:    v_lshrrev_b32_e32 v57, 16, v7
-; SI-NEXT:    v_lshrrev_b32_e32 v58, 8, v7
-; SI-NEXT:    v_lshrrev_b32_e32 v59, 24, v9
-; SI-NEXT:    v_lshrrev_b32_e32 v60, 16, v9
-; SI-NEXT:    v_lshrrev_b32_e32 v27, 8, v9
-; SI-NEXT:    v_lshrrev_b32_e32 v29, 24, v11
-; SI-NEXT:    v_lshrrev_b32_e32 v30, 16, v11
-; SI-NEXT:    v_lshrrev_b32_e32 v33, 8, v11
-; SI-NEXT:    v_lshrrev_b32_e32 v34, 24, v13
-; SI-NEXT:    v_lshrrev_b32_e32 v36, 16, v13
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:128 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v23
-; SI-NEXT:    v_lshrrev_b32_e32 v39, 8, v23
-; SI-NEXT:    v_lshrrev_b32_e32 v48, 24, v25
-; SI-NEXT:    v_lshrrev_b32_e32 v49, 16, v25
-; SI-NEXT:    v_lshrrev_b32_e32 v4, 8, v25
-; SI-NEXT:    v_lshrrev_b32_e32 v6, 24, v28
-; SI-NEXT:    v_lshrrev_b32_e32 v50, 16, v28
-; SI-NEXT:    v_lshrrev_b32_e32 v51, 8, v28
-; SI-NEXT:    v_lshrrev_b32_e32 v52, 24, v32
-; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v32
-; SI-NEXT:    v_lshrrev_b32_e32 v53, 8, v32
-; SI-NEXT:    v_lshrrev_b32_e32 v10, 24, v37
-; SI-NEXT:    v_lshrrev_b32_e32 v54, 16, v37
-; SI-NEXT:    v_lshrrev_b32_e32 v55, 8, v37
-; SI-NEXT:    s_branch .LBB37_5
-; SI-NEXT:  .LBB37_3:
+; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 8
+; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 24
+; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 8
+; SI-NEXT:    s_mov_b64 s[76:77], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
 ; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr8
 ; SI-NEXT:    ; implicit-def: $sgpr91
 ; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    s_mov_b64 s[76:77], -1
 ; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    v_writelane_b32 v61, s8, 0
+; SI-NEXT:    v_writelane_b32 v61, s90, 0
 ; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    v_writelane_b32 v61, s9, 1
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    v_writelane_b32 v61, s90, 2
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    v_writelane_b32 v61, s91, 3
+; SI-NEXT:    v_writelane_b32 v61, s91, 1
 ; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    ; implicit-def: $sgpr90
 ; SI-NEXT:    ; kill: killed $sgpr4
@@ -43354,9 +43478,9 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    ; implicit-def: $sgpr6
 ; SI-NEXT:    ; implicit-def: $sgpr12
 ; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr10
 ; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $vcc_lo
 ; SI-NEXT:    ; implicit-def: $sgpr40
 ; SI-NEXT:    ; implicit-def: $sgpr98
 ; SI-NEXT:    ; implicit-def: $sgpr96
@@ -43379,9 +43503,16 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    ; implicit-def: $sgpr94
 ; SI-NEXT:    ; implicit-def: $sgpr92
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v61, s90, 4
+; SI-NEXT:    v_writelane_b32 v61, s90, 2
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v61, s91, 3
+; SI-NEXT:    ; implicit-def: $sgpr90
 ; SI-NEXT:    ; kill: killed $sgpr4
 ; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v61, s90, 4
 ; SI-NEXT:    v_writelane_b32 v61, s91, 5
 ; SI-NEXT:    ; implicit-def: $sgpr90
 ; SI-NEXT:    ; kill: killed $sgpr4
@@ -43505,8 +43636,217 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    ; kill: killed $sgpr4
 ; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    s_branch .LBB37_2
-; SI-NEXT:  .LBB37_4:
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[76:77], s[76:77], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_add_f32_e64 v1, s58, 1.0
+; SI-NEXT:    v_add_f32_e64 v22, s26, 1.0
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
+; SI-NEXT:    v_readfirstlane_b32 s26, v1
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_add_f32_e64 v1, s56, 1.0
+; SI-NEXT:    v_add_f32_e64 v20, s28, 1.0
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
+; SI-NEXT:    v_readfirstlane_b32 s28, v1
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_add_f32_e64 v1, s46, 1.0
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
+; SI-NEXT:    v_readfirstlane_b32 s40, v1
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_add_f32_e64 v1, s44, 1.0
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
+; SI-NEXT:    v_readfirstlane_b32 s44, v1
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_add_f32_e64 v1, s43, 1.0
+; SI-NEXT:    v_add_f32_e64 v2, s42, 1.0
+; SI-NEXT:    v_add_f32_e64 v13, s63, 1.0
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:52 ; 4-byte Folded Spill
+; SI-NEXT:    v_readfirstlane_b32 s42, v2
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 24, v1
+; SI-NEXT:    v_add_f32_e64 v15, s73, 1.0
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 8, v13
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 24, v15
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v15
+; SI-NEXT:    v_add_f32_e64 v17, s75, 1.0
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 8, v15
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:88 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 24, v17
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v17
+; SI-NEXT:    v_add_f32_e64 v19, s29, 1.0
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:96 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 8, v17
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:100 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 24, v19
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:104 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v19
+; SI-NEXT:    v_add_f32_e64 v21, s27, 1.0
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:108 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 8, v19
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:112 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 24, v21
+; SI-NEXT:    v_readfirstlane_b32 s43, v1
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:116 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v21
+; SI-NEXT:    v_add_f32_e64 v37, s17, 1.0
+; SI-NEXT:    v_add_f32_e64 v38, s16, 1.0
+; SI-NEXT:    v_add_f32_e64 v32, s19, 1.0
+; SI-NEXT:    v_add_f32_e64 v35, s18, 1.0
+; SI-NEXT:    v_add_f32_e64 v28, s21, 1.0
+; SI-NEXT:    v_add_f32_e64 v31, s20, 1.0
+; SI-NEXT:    v_add_f32_e64 v25, s23, 1.0
+; SI-NEXT:    v_add_f32_e64 v26, s22, 1.0
+; SI-NEXT:    v_add_f32_e64 v23, s25, 1.0
+; SI-NEXT:    v_add_f32_e64 v24, s24, 1.0
+; SI-NEXT:    v_add_f32_e64 v18, s74, 1.0
+; SI-NEXT:    v_add_f32_e64 v16, s72, 1.0
+; SI-NEXT:    v_add_f32_e64 v14, s62, 1.0
+; SI-NEXT:    v_add_f32_e64 v11, s61, 1.0
+; SI-NEXT:    v_add_f32_e64 v12, s60, 1.0
+; SI-NEXT:    v_add_f32_e64 v9, s59, 1.0
+; SI-NEXT:    v_add_f32_e64 v7, s57, 1.0
+; SI-NEXT:    v_add_f32_e64 v5, s47, 1.0
+; SI-NEXT:    v_add_f32_e64 v3, s45, 1.0
+; SI-NEXT:    s_lshr_b64 s[46:47], s[42:43], 16
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:120 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 8, v21
+; SI-NEXT:    v_readfirstlane_b32 s16, v38
+; SI-NEXT:    v_readfirstlane_b32 s17, v37
+; SI-NEXT:    v_readfirstlane_b32 s12, v35
+; SI-NEXT:    v_readfirstlane_b32 s13, v32
+; SI-NEXT:    v_readfirstlane_b32 s6, v31
+; SI-NEXT:    v_readfirstlane_b32 s7, v28
+; SI-NEXT:    v_readfirstlane_b32 s4, v26
+; SI-NEXT:    v_readfirstlane_b32 s5, v25
+; SI-NEXT:    v_readfirstlane_b32 s8, v24
+; SI-NEXT:    v_readfirstlane_b32 s9, v23
+; SI-NEXT:    v_readfirstlane_b32 s10, v22
+; SI-NEXT:    v_readfirstlane_b32 s11, v21
+; SI-NEXT:    v_readfirstlane_b32 s14, v20
+; SI-NEXT:    v_readfirstlane_b32 s15, v19
+; SI-NEXT:    v_readfirstlane_b32 s18, v18
+; SI-NEXT:    v_readfirstlane_b32 s19, v17
+; SI-NEXT:    v_readfirstlane_b32 s20, v16
+; SI-NEXT:    v_readfirstlane_b32 s21, v15
+; SI-NEXT:    v_readfirstlane_b32 s22, v14
+; SI-NEXT:    v_readfirstlane_b32 s23, v13
+; SI-NEXT:    v_readfirstlane_b32 s24, v12
+; SI-NEXT:    v_readfirstlane_b32 s25, v11
+; SI-NEXT:    v_readfirstlane_b32 s27, v9
+; SI-NEXT:    v_readfirstlane_b32 s29, v7
+; SI-NEXT:    v_readfirstlane_b32 s41, v5
+; SI-NEXT:    v_readfirstlane_b32 s45, v3
+; SI-NEXT:    s_lshr_b64 vcc, s[42:43], 24
+; SI-NEXT:    v_writelane_b32 v61, s46, 36
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:124 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 24, v23
+; SI-NEXT:    v_writelane_b32 v61, s47, 37
+; SI-NEXT:    s_lshr_b64 s[42:43], s[42:43], 8
+; SI-NEXT:    s_lshr_b64 s[58:59], s[44:45], 24
+; SI-NEXT:    s_lshr_b64 s[60:61], s[44:45], 16
+; SI-NEXT:    s_lshr_b64 s[44:45], s[44:45], 8
+; SI-NEXT:    s_lshr_b64 s[62:63], s[40:41], 24
+; SI-NEXT:    s_lshr_b64 s[72:73], s[40:41], 16
+; SI-NEXT:    s_lshr_b64 s[74:75], s[40:41], 8
+; SI-NEXT:    s_lshr_b64 s[76:77], s[28:29], 24
+; SI-NEXT:    s_lshr_b64 s[78:79], s[28:29], 16
+; SI-NEXT:    s_lshr_b64 s[28:29], s[28:29], 8
+; SI-NEXT:    s_lshr_b64 s[88:89], s[26:27], 24
+; SI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 16
+; SI-NEXT:    s_lshr_b64 s[26:27], s[26:27], 8
+; SI-NEXT:    s_lshr_b64 s[92:93], s[24:25], 24
+; SI-NEXT:    s_lshr_b64 s[94:95], s[24:25], 16
+; SI-NEXT:    s_lshr_b64 s[24:25], s[24:25], 8
+; SI-NEXT:    s_lshr_b64 s[30:31], s[22:23], 24
+; SI-NEXT:    s_lshr_b64 s[46:47], s[22:23], 16
+; SI-NEXT:    s_lshr_b64 s[22:23], s[22:23], 8
+; SI-NEXT:    s_lshr_b64 s[34:35], s[20:21], 24
+; SI-NEXT:    s_lshr_b64 s[36:37], s[20:21], 16
+; SI-NEXT:    s_lshr_b64 s[20:21], s[20:21], 8
+; SI-NEXT:    s_lshr_b64 s[38:39], s[18:19], 24
+; SI-NEXT:    s_lshr_b64 s[48:49], s[18:19], 16
+; SI-NEXT:    s_lshr_b64 s[18:19], s[18:19], 8
+; SI-NEXT:    s_lshr_b64 s[50:51], s[14:15], 24
+; SI-NEXT:    s_lshr_b64 s[52:53], s[14:15], 16
+; SI-NEXT:    s_lshr_b64 s[54:55], s[14:15], 8
+; SI-NEXT:    s_lshr_b64 s[64:65], s[10:11], 24
+; SI-NEXT:    s_lshr_b64 s[66:67], s[10:11], 16
+; SI-NEXT:    s_lshr_b64 s[68:69], s[10:11], 8
+; SI-NEXT:    s_lshr_b64 s[70:71], s[8:9], 24
+; SI-NEXT:    s_lshr_b64 s[80:81], s[8:9], 16
+; SI-NEXT:    s_lshr_b64 s[82:83], s[8:9], 8
+; SI-NEXT:    s_lshr_b64 s[84:85], s[4:5], 24
+; SI-NEXT:    s_lshr_b64 s[86:87], s[4:5], 16
+; SI-NEXT:    s_lshr_b64 s[96:97], s[4:5], 8
+; SI-NEXT:    s_lshr_b64 s[98:99], s[6:7], 24
+; SI-NEXT:    s_lshr_b64 s[4:5], s[6:7], 16
+; SI-NEXT:    s_lshr_b64 s[40:41], s[6:7], 8
+; SI-NEXT:    s_lshr_b64 s[56:57], s[12:13], 24
+; SI-NEXT:    s_lshr_b64 s[10:11], s[12:13], 16
+; SI-NEXT:    s_lshr_b64 s[8:9], s[12:13], 8
+; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 24
+; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 8
+; SI-NEXT:    s_mov_b32 s16, vcc_lo
+; SI-NEXT:    v_lshrrev_b32_e32 v40, 16, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v41, 8, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v42, 24, v3
+; SI-NEXT:    v_lshrrev_b32_e32 v43, 16, v3
+; SI-NEXT:    v_lshrrev_b32_e32 v44, 8, v3
+; SI-NEXT:    v_lshrrev_b32_e32 v45, 24, v5
+; SI-NEXT:    v_lshrrev_b32_e32 v46, 16, v5
+; SI-NEXT:    v_lshrrev_b32_e32 v47, 8, v5
+; SI-NEXT:    v_lshrrev_b32_e32 v56, 24, v7
+; SI-NEXT:    v_lshrrev_b32_e32 v57, 16, v7
+; SI-NEXT:    v_lshrrev_b32_e32 v58, 8, v7
+; SI-NEXT:    v_lshrrev_b32_e32 v59, 24, v9
+; SI-NEXT:    v_lshrrev_b32_e32 v60, 16, v9
+; SI-NEXT:    v_lshrrev_b32_e32 v27, 8, v9
+; SI-NEXT:    v_lshrrev_b32_e32 v29, 24, v11
+; SI-NEXT:    v_lshrrev_b32_e32 v30, 16, v11
+; SI-NEXT:    v_lshrrev_b32_e32 v33, 8, v11
+; SI-NEXT:    v_lshrrev_b32_e32 v34, 24, v13
+; SI-NEXT:    v_lshrrev_b32_e32 v36, 16, v13
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:128 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v23
+; SI-NEXT:    v_lshrrev_b32_e32 v39, 8, v23
+; SI-NEXT:    v_lshrrev_b32_e32 v48, 24, v25
+; SI-NEXT:    v_lshrrev_b32_e32 v49, 16, v25
+; SI-NEXT:    v_lshrrev_b32_e32 v4, 8, v25
+; SI-NEXT:    v_lshrrev_b32_e32 v6, 24, v28
+; SI-NEXT:    v_lshrrev_b32_e32 v50, 16, v28
+; SI-NEXT:    v_lshrrev_b32_e32 v51, 8, v28
+; SI-NEXT:    v_lshrrev_b32_e32 v52, 24, v32
+; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v32
+; SI-NEXT:    v_lshrrev_b32_e32 v53, 8, v32
+; SI-NEXT:    v_lshrrev_b32_e32 v10, 24, v37
+; SI-NEXT:    v_lshrrev_b32_e32 v54, 16, v37
+; SI-NEXT:    v_lshrrev_b32_e32 v55, 8, v37
+; SI-NEXT:    s_branch .LBB37_6
+; SI-NEXT:  .LBB37_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s16
 ; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:132 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_load_dword v38, off, s[0:3], s32 offset:132 ; 4-byte Folded Reload
@@ -43611,28 +43951,28 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_readlane_b32 s5, v62, 12
 ; SI-NEXT:    v_mov_b32_e32 v57, s5
 ; SI-NEXT:    v_readlane_b32 s5, v62, 13
-; SI-NEXT:    v_mov_b32_e32 v1, s60
+; SI-NEXT:    v_mov_b32_e32 v1, s58
 ; SI-NEXT:    v_mov_b32_e32 v56, s5
 ; SI-NEXT:    v_readlane_b32 s5, v62, 14
 ; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v1, s58
+; SI-NEXT:    v_mov_b32_e32 v1, s56
 ; SI-NEXT:    v_mov_b32_e32 v46, s5
 ; SI-NEXT:    v_readlane_b32 s5, v62, 15
 ; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v1, s56
+; SI-NEXT:    v_mov_b32_e32 v1, s46
 ; SI-NEXT:    v_mov_b32_e32 v45, s5
 ; SI-NEXT:    v_readlane_b32 s5, v62, 16
 ; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v1, s46
+; SI-NEXT:    v_mov_b32_e32 v1, s44
 ; SI-NEXT:    v_mov_b32_e32 v42, s5
 ; SI-NEXT:    v_readlane_b32 s5, v62, 17
+; SI-NEXT:    v_mov_b32_e32 v5, s47
 ; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
-; SI-NEXT:    v_mov_b32_e32 v3, s47
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v1, s44
+; SI-NEXT:    v_mov_b32_e32 v1, s42
 ; SI-NEXT:    buffer_store_dword v12, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v12, s5
@@ -43643,15 +43983,15 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v23, s25
 ; SI-NEXT:    v_mov_b32_e32 v21, s27
 ; SI-NEXT:    v_mov_b32_e32 v19, s29
-; SI-NEXT:    v_mov_b32_e32 v17, s77
-; SI-NEXT:    v_mov_b32_e32 v15, s75
-; SI-NEXT:    v_mov_b32_e32 v13, s73
-; SI-NEXT:    v_mov_b32_e32 v11, s63
-; SI-NEXT:    v_mov_b32_e32 v9, s61
-; SI-NEXT:    v_mov_b32_e32 v7, s59
+; SI-NEXT:    v_mov_b32_e32 v17, s75
+; SI-NEXT:    v_mov_b32_e32 v15, s73
+; SI-NEXT:    v_mov_b32_e32 v13, s63
+; SI-NEXT:    v_mov_b32_e32 v11, s61
+; SI-NEXT:    v_mov_b32_e32 v9, s59
+; SI-NEXT:    v_mov_b32_e32 v3, s45
 ; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:52 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v1, s45
+; SI-NEXT:    v_mov_b32_e32 v1, s43
 ; SI-NEXT:    v_mov_b32_e32 v10, s90
 ; SI-NEXT:    v_mov_b32_e32 v47, s88
 ; SI-NEXT:    v_mov_b32_e32 v44, s78
@@ -43660,10 +44000,10 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v40, s79
 ; SI-NEXT:    buffer_store_dword v12, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v12, s62
-; SI-NEXT:    v_mov_b32_e32 v14, s72
-; SI-NEXT:    v_mov_b32_e32 v16, s74
-; SI-NEXT:    v_mov_b32_e32 v18, s76
+; SI-NEXT:    v_mov_b32_e32 v12, s60
+; SI-NEXT:    v_mov_b32_e32 v14, s62
+; SI-NEXT:    v_mov_b32_e32 v16, s72
+; SI-NEXT:    v_mov_b32_e32 v18, s74
 ; SI-NEXT:    v_mov_b32_e32 v20, s28
 ; SI-NEXT:    v_mov_b32_e32 v22, s26
 ; SI-NEXT:    v_mov_b32_e32 v24, s24
@@ -43671,55 +44011,55 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v31, s20
 ; SI-NEXT:    v_mov_b32_e32 v35, s18
 ; SI-NEXT:    s_mov_b32 s16, s46
-; SI-NEXT:    v_readlane_b32 s44, v61, 34
+; SI-NEXT:    v_readlane_b32 s42, v61, 34
 ; SI-NEXT:    v_readlane_b32 s58, v61, 32
 ; SI-NEXT:    v_readlane_b32 s60, v61, 30
-; SI-NEXT:    v_readlane_b32 s62, v61, 28
-; SI-NEXT:    v_readlane_b32 s72, v61, 26
-; SI-NEXT:    v_readlane_b32 s74, v61, 24
-; SI-NEXT:    v_readlane_b32 s76, v61, 22
-; SI-NEXT:    v_readlane_b32 s78, v61, 20
-; SI-NEXT:    v_readlane_b32 s88, v61, 18
+; SI-NEXT:    v_readlane_b32 s44, v61, 28
+; SI-NEXT:    v_readlane_b32 s62, v61, 26
+; SI-NEXT:    v_readlane_b32 s72, v61, 24
+; SI-NEXT:    v_readlane_b32 s74, v61, 22
+; SI-NEXT:    v_readlane_b32 s76, v61, 20
+; SI-NEXT:    v_readlane_b32 s78, v61, 18
 ; SI-NEXT:    v_readlane_b32 s28, v61, 16
-; SI-NEXT:    v_readlane_b32 s90, v61, 14
-; SI-NEXT:    v_readlane_b32 s26, v61, 12
-; SI-NEXT:    v_readlane_b32 s24, v61, 10
-; SI-NEXT:    v_readlane_b32 s22, v61, 6
-; SI-NEXT:    s_mov_b32 s46, s34
-; SI-NEXT:    v_readlane_b32 s34, v61, 8
-; SI-NEXT:    v_readlane_b32 s20, v61, 4
-; SI-NEXT:    v_readlane_b32 s18, v61, 2
-; SI-NEXT:    s_mov_b32 s56, s8
-; SI-NEXT:    v_readlane_b32 s8, v61, 0
+; SI-NEXT:    v_readlane_b32 s88, v61, 14
+; SI-NEXT:    v_readlane_b32 s90, v61, 12
+; SI-NEXT:    v_readlane_b32 s26, v61, 10
+; SI-NEXT:    v_readlane_b32 s24, v61, 8
+; SI-NEXT:    v_readlane_b32 s22, v61, 4
+; SI-NEXT:    s_mov_b32 s46, s30
+; SI-NEXT:    v_readlane_b32 s30, v61, 6
+; SI-NEXT:    v_readlane_b32 s20, v61, 2
+; SI-NEXT:    v_readlane_b32 s18, v61, 0
 ; SI-NEXT:    v_mov_b32_e32 v37, s17
-; SI-NEXT:    v_mov_b32_e32 v5, s57
+; SI-NEXT:    v_mov_b32_e32 v7, s57
 ; SI-NEXT:    v_readlane_b32 s47, v61, 39
-; SI-NEXT:    v_readlane_b32 s45, v61, 35
+; SI-NEXT:    v_readlane_b32 s43, v61, 35
 ; SI-NEXT:    v_readlane_b32 s59, v61, 33
 ; SI-NEXT:    v_readlane_b32 s61, v61, 31
-; SI-NEXT:    v_readlane_b32 s63, v61, 29
-; SI-NEXT:    v_readlane_b32 s73, v61, 27
-; SI-NEXT:    v_readlane_b32 s75, v61, 25
-; SI-NEXT:    v_readlane_b32 s77, v61, 23
-; SI-NEXT:    v_readlane_b32 s79, v61, 21
-; SI-NEXT:    v_readlane_b32 s89, v61, 19
+; SI-NEXT:    v_readlane_b32 s45, v61, 29
+; SI-NEXT:    v_readlane_b32 s63, v61, 27
+; SI-NEXT:    v_readlane_b32 s73, v61, 25
+; SI-NEXT:    v_readlane_b32 s75, v61, 23
+; SI-NEXT:    v_readlane_b32 s77, v61, 21
+; SI-NEXT:    v_readlane_b32 s79, v61, 19
 ; SI-NEXT:    v_readlane_b32 s29, v61, 17
-; SI-NEXT:    v_readlane_b32 s91, v61, 15
-; SI-NEXT:    v_readlane_b32 s27, v61, 13
-; SI-NEXT:    v_readlane_b32 s25, v61, 11
-; SI-NEXT:    v_readlane_b32 s23, v61, 7
-; SI-NEXT:    v_readlane_b32 s35, v61, 9
-; SI-NEXT:    v_readlane_b32 s21, v61, 5
-; SI-NEXT:    v_readlane_b32 s19, v61, 3
-; SI-NEXT:    v_readlane_b32 s9, v61, 1
-; SI-NEXT:  .LBB37_5: ; %end
+; SI-NEXT:    v_readlane_b32 s89, v61, 15
+; SI-NEXT:    v_readlane_b32 s91, v61, 13
+; SI-NEXT:    v_readlane_b32 s27, v61, 11
+; SI-NEXT:    v_readlane_b32 s25, v61, 9
+; SI-NEXT:    v_readlane_b32 s23, v61, 5
+; SI-NEXT:    v_readlane_b32 s31, v61, 7
+; SI-NEXT:    v_readlane_b32 s21, v61, 3
+; SI-NEXT:    v_readlane_b32 s19, v61, 1
+; SI-NEXT:    s_mov_b32 s56, vcc_lo
+; SI-NEXT:  .LBB37_6: ; %end
 ; SI-NEXT:    s_waitcnt vmcnt(14)
 ; SI-NEXT:    v_and_b32_e32 v38, 0xff, v38
-; SI-NEXT:    s_lshl_b32 s5, s4, 8
+; SI-NEXT:    s_lshl_b32 s5, s6, 8
 ; SI-NEXT:    v_or_b32_e32 v38, s5, v38
-; SI-NEXT:    s_and_b32 s5, s6, 0xff
+; SI-NEXT:    s_and_b32 s5, s12, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
-; SI-NEXT:    s_lshl_b32 s7, s12, 24
+; SI-NEXT:    s_lshl_b32 s7, s14, 24
 ; SI-NEXT:    v_and_b32_e32 v38, 0xffff, v38
 ; SI-NEXT:    s_or_b32 s5, s7, s5
 ; SI-NEXT:    v_or_b32_e32 v38, s5, v38
@@ -43738,7 +44078,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    buffer_store_dword v10, v37, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v10, 0xff, v35
-; SI-NEXT:    s_lshl_b32 s5, s14, 8
+; SI-NEXT:    s_lshl_b32 s5, s8, 8
 ; SI-NEXT:    v_or_b32_e32 v10, s5, v10
 ; SI-NEXT:    s_and_b32 s5, s10, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
@@ -43762,11 +44102,11 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    buffer_store_dword v8, v10, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v8, 0xff, v31
-; SI-NEXT:    s_lshl_b32 s5, s8, 8
-; SI-NEXT:    s_and_b32 s4, s42, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s40, 8
+; SI-NEXT:    s_and_b32 s4, s4, 0xff
 ; SI-NEXT:    v_or_b32_e32 v8, s5, v8
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
-; SI-NEXT:    s_lshl_b32 s5, s40, 24
+; SI-NEXT:    s_lshl_b32 s5, s98, 24
 ; SI-NEXT:    v_and_b32_e32 v8, 0xffff, v8
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    v_or_b32_e32 v8, s4, v8
@@ -43786,11 +44126,11 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    buffer_store_dword v6, v8, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v6, 0xff, v26
-; SI-NEXT:    s_lshl_b32 s4, s98, 8
+; SI-NEXT:    s_lshl_b32 s4, s96, 8
 ; SI-NEXT:    v_or_b32_e32 v6, s4, v6
-; SI-NEXT:    s_and_b32 s4, s96, 0xff
+; SI-NEXT:    s_and_b32 s4, s86, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
-; SI-NEXT:    s_lshl_b32 s5, s86, 24
+; SI-NEXT:    s_lshl_b32 s5, s84, 24
 ; SI-NEXT:    v_and_b32_e32 v6, 0xffff, v6
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    v_or_b32_e32 v6, s4, v6
@@ -43810,11 +44150,11 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    buffer_store_dword v4, v6, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v4, 0xff, v24
-; SI-NEXT:    s_lshl_b32 s4, s84, 8
+; SI-NEXT:    s_lshl_b32 s4, s82, 8
 ; SI-NEXT:    v_or_b32_e32 v4, s4, v4
-; SI-NEXT:    s_and_b32 s4, s82, 0xff
+; SI-NEXT:    s_and_b32 s4, s80, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
-; SI-NEXT:    s_lshl_b32 s5, s80, 24
+; SI-NEXT:    s_lshl_b32 s5, s70, 24
 ; SI-NEXT:    v_and_b32_e32 v4, 0xffff, v4
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    v_or_b32_e32 v4, s4, v4
@@ -43828,8 +44168,8 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_and_b32_e32 v4, 0xffff, v4
-; SI-NEXT:    s_lshl_b32 s4, s70, 8
-; SI-NEXT:    s_lshl_b32 s5, s66, 24
+; SI-NEXT:    s_lshl_b32 s4, s68, 8
+; SI-NEXT:    s_lshl_b32 s5, s64, 24
 ; SI-NEXT:    v_and_b32_e32 v1, 0xff, v1
 ; SI-NEXT:    v_readlane_b32 s99, v63, 33
 ; SI-NEXT:    v_readlane_b32 s98, v63, 32
@@ -43846,9 +44186,10 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_readlane_b32 s71, v63, 21
 ; SI-NEXT:    v_readlane_b32 s70, v63, 20
 ; SI-NEXT:    v_readlane_b32 s69, v63, 19
+; SI-NEXT:    v_readlane_b32 s68, v63, 18
 ; SI-NEXT:    v_readlane_b32 s67, v63, 17
-; SI-NEXT:    v_readlane_b32 s66, v63, 16
 ; SI-NEXT:    v_readlane_b32 s65, v63, 15
+; SI-NEXT:    v_readlane_b32 s64, v63, 14
 ; SI-NEXT:    v_readlane_b32 s55, v63, 13
 ; SI-NEXT:    v_readlane_b32 s53, v63, 11
 ; SI-NEXT:    v_readlane_b32 s51, v63, 9
@@ -43865,7 +44206,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v22
 ; SI-NEXT:    v_or_b32_e32 v2, s4, v2
-; SI-NEXT:    s_and_b32 s4, s68, 0xff
+; SI-NEXT:    s_and_b32 s4, s66, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    s_or_b32 s4, s5, s4
@@ -43875,11 +44216,11 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:124 ; 4-byte Folded Reload
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v21
-; SI-NEXT:    s_lshl_b32 s4, s64, 8
-; SI-NEXT:    s_lshl_b32 s5, s52, 24
-; SI-NEXT:    v_readlane_b32 s68, v63, 18
-; SI-NEXT:    v_readlane_b32 s64, v63, 14
-; SI-NEXT:    v_readlane_b32 s52, v63, 10
+; SI-NEXT:    s_lshl_b32 s4, s54, 8
+; SI-NEXT:    s_lshl_b32 s5, s50, 24
+; SI-NEXT:    v_readlane_b32 s66, v63, 16
+; SI-NEXT:    v_readlane_b32 s54, v63, 12
+; SI-NEXT:    v_readlane_b32 s50, v63, 8
 ; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:116 ; 4-byte Folded Reload
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 8, v4
@@ -43898,7 +44239,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v20
 ; SI-NEXT:    v_or_b32_e32 v2, s4, v2
-; SI-NEXT:    s_and_b32 s4, s54, 0xff
+; SI-NEXT:    s_and_b32 s4, s52, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    s_or_b32 s4, s5, s4
@@ -43910,9 +44251,9 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v19
 ; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:104 ; 4-byte Folded Reload
 ; SI-NEXT:    s_lshl_b32 s4, s18, 8
-; SI-NEXT:    s_lshl_b32 s5, s48, 24
-; SI-NEXT:    v_readlane_b32 s54, v63, 12
-; SI-NEXT:    v_readlane_b32 s48, v63, 6
+; SI-NEXT:    s_lshl_b32 s5, s38, 24
+; SI-NEXT:    v_readlane_b32 s52, v63, 10
+; SI-NEXT:    v_readlane_b32 s38, v63, 4
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 8, v4
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v4
@@ -43930,7 +44271,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v18
 ; SI-NEXT:    v_or_b32_e32 v2, s4, v2
-; SI-NEXT:    s_and_b32 s4, s50, 0xff
+; SI-NEXT:    s_and_b32 s4, s48, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    s_or_b32 s4, s5, s4
@@ -43942,9 +44283,9 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v17
 ; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:92 ; 4-byte Folded Reload
 ; SI-NEXT:    s_lshl_b32 s4, s20, 8
-; SI-NEXT:    s_lshl_b32 s5, s36, 24
-; SI-NEXT:    v_readlane_b32 s50, v63, 8
-; SI-NEXT:    v_readlane_b32 s36, v63, 2
+; SI-NEXT:    s_lshl_b32 s5, s34, 24
+; SI-NEXT:    v_readlane_b32 s48, v63, 6
+; SI-NEXT:    v_readlane_b32 s34, v63, 0
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 8, v4
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v4
@@ -43962,7 +44303,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v16
 ; SI-NEXT:    v_or_b32_e32 v2, s4, v2
-; SI-NEXT:    s_and_b32 s4, s38, 0xff
+; SI-NEXT:    s_and_b32 s4, s36, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    s_or_b32 s4, s5, s4
@@ -43974,9 +44315,10 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v15
 ; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
 ; SI-NEXT:    s_lshl_b32 s4, s22, 8
-; SI-NEXT:    s_lshl_b32 s5, s34, 24
-; SI-NEXT:    v_readlane_b32 s38, v63, 4
-; SI-NEXT:    v_readlane_b32 s34, v63, 0
+; SI-NEXT:    s_lshl_b32 s5, s30, 24
+; SI-NEXT:    v_readlane_b32 s30, v63, 34
+; SI-NEXT:    v_readlane_b32 s31, v63, 35
+; SI-NEXT:    v_readlane_b32 s36, v63, 2
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 8, v4
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v4
@@ -44006,7 +44348,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v13
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 24, v34
 ; SI-NEXT:    s_lshl_b32 s4, s24, 8
-; SI-NEXT:    s_lshl_b32 s5, s94, 24
+; SI-NEXT:    s_lshl_b32 s5, s92, 24
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 8, v4
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v4
@@ -44020,7 +44362,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v12
 ; SI-NEXT:    v_or_b32_e32 v2, s4, v2
-; SI-NEXT:    s_and_b32 s4, s30, 0xff
+; SI-NEXT:    s_and_b32 s4, s94, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    s_or_b32 s4, s5, s4
@@ -44042,15 +44384,13 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload
 ; SI-NEXT:    s_lshl_b32 s4, s26, 8
-; SI-NEXT:    s_lshl_b32 s5, s90, 24
+; SI-NEXT:    s_lshl_b32 s5, s88, 24
 ; SI-NEXT:    v_add_i32_e32 v4, vcc, 0x58, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 24, v59
-; SI-NEXT:    v_readlane_b32 s30, v63, 34
-; SI-NEXT:    v_readlane_b32 s31, v63, 35
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v2
 ; SI-NEXT:    v_or_b32_e32 v2, s4, v2
-; SI-NEXT:    s_and_b32 s4, s92, 0xff
+; SI-NEXT:    s_and_b32 s4, s90, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    s_or_b32 s4, s5, s4
@@ -44070,13 +44410,13 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload
 ; SI-NEXT:    s_lshl_b32 s4, s28, 8
-; SI-NEXT:    s_lshl_b32 s5, s78, 24
+; SI-NEXT:    s_lshl_b32 s5, s76, 24
 ; SI-NEXT:    v_add_i32_e32 v4, vcc, 0x60, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 24, v56
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v2
 ; SI-NEXT:    v_or_b32_e32 v2, s4, v2
-; SI-NEXT:    s_and_b32 s4, s88, 0xff
+; SI-NEXT:    s_and_b32 s4, s78, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    s_or_b32 s4, s5, s4
@@ -44095,13 +44435,13 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    buffer_store_dword v2, v4, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:60 ; 4-byte Folded Reload
-; SI-NEXT:    s_lshl_b32 s4, s76, 8
-; SI-NEXT:    s_lshl_b32 s5, s72, 24
+; SI-NEXT:    s_lshl_b32 s4, s74, 8
+; SI-NEXT:    s_lshl_b32 s5, s62, 24
 ; SI-NEXT:    v_add_i32_e32 v4, vcc, 0x68, v0
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v2
 ; SI-NEXT:    v_or_b32_e32 v2, s4, v2
-; SI-NEXT:    s_and_b32 s4, s74, 0xff
+; SI-NEXT:    s_and_b32 s4, s72, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    s_or_b32 s4, s5, s4
@@ -44121,7 +44461,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    buffer_store_dword v2, v4, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:56 ; 4-byte Folded Reload
-; SI-NEXT:    s_lshl_b32 s4, s62, 8
+; SI-NEXT:    s_lshl_b32 s4, s44, 8
 ; SI-NEXT:    s_lshl_b32 s5, s58, 24
 ; SI-NEXT:    v_add_i32_e32 v4, vcc, 0x70, v0
 ; SI-NEXT:    s_waitcnt vmcnt(0)
@@ -44147,7 +44487,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:52 ; 4-byte Folded Reload
-; SI-NEXT:    s_lshl_b32 s4, s44, 8
+; SI-NEXT:    s_lshl_b32 s4, s42, 8
 ; SI-NEXT:    v_add_i32_e32 v3, vcc, 0x78, v0
 ; SI-NEXT:    v_add_i32_e32 v0, vcc, 0x7c, v0
 ; SI-NEXT:    s_waitcnt vmcnt(0)
@@ -44269,7 +44609,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    s_cmp_lg_u32 s44, 0
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    ; implicit-def: $vgpr62 : SGPR spill to VGPR lane
-; VI-NEXT:    s_cbranch_scc0 .LBB37_3
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s46, s5, 24
 ; VI-NEXT:    v_writelane_b32 v62, s46, 57
@@ -44420,13 +44760,175 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    s_lshr_b64 s[78:79], s[44:45], 24
 ; VI-NEXT:    s_lshr_b64 s[88:89], s[28:29], 24
 ; VI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 24
-; VI-NEXT:    s_lshr_b64 s[30:31], s[24:25], 24
-; VI-NEXT:    s_lshr_b64 s[34:35], s[22:23], 24
-; VI-NEXT:    s_lshr_b64 s[36:37], s[20:21], 24
-; VI-NEXT:    s_lshr_b64 s[38:39], s[18:19], 24
-; VI-NEXT:    s_lshr_b64 s[48:49], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB37_4
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b64 vcc, s[24:25], 24
+; VI-NEXT:    s_lshr_b64 s[30:31], s[22:23], 24
+; VI-NEXT:    s_lshr_b64 s[34:35], s[20:21], 24
+; VI-NEXT:    s_lshr_b64 s[36:37], s[18:19], 24
+; VI-NEXT:    s_lshr_b64 s[38:39], s[16:17], 24
+; VI-NEXT:    s_mov_b64 s[48:49], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    s_mov_b64 s[48:49], -1
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr71
+; VI-NEXT:    ; implicit-def: $sgpr69
+; VI-NEXT:    ; implicit-def: $sgpr70
+; VI-NEXT:    ; implicit-def: $sgpr68
+; VI-NEXT:    ; implicit-def: $sgpr67
+; VI-NEXT:    ; implicit-def: $sgpr66
+; VI-NEXT:    ; implicit-def: $sgpr64
+; VI-NEXT:    ; implicit-def: $sgpr65
+; VI-NEXT:    ; implicit-def: $sgpr55
+; VI-NEXT:    ; implicit-def: $sgpr54
+; VI-NEXT:    ; implicit-def: $sgpr53
+; VI-NEXT:    ; implicit-def: $sgpr51
+; VI-NEXT:    ; implicit-def: $sgpr52
+; VI-NEXT:    ; implicit-def: $sgpr50
+; VI-NEXT:    ; implicit-def: $sgpr87
+; VI-NEXT:    ; implicit-def: $sgpr86
+; VI-NEXT:    ; implicit-def: $sgpr84
+; VI-NEXT:    ; implicit-def: $sgpr85
+; VI-NEXT:    ; implicit-def: $sgpr83
+; VI-NEXT:    ; implicit-def: $sgpr82
+; VI-NEXT:    ; implicit-def: $sgpr81
+; VI-NEXT:    ; implicit-def: $sgpr80
+; VI-NEXT:    ; implicit-def: $sgpr38
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[48:49], s[48:49], exec
+; VI-NEXT:    s_cselect_b32 s47, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s47, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v2, s5, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s4, 1.0
 ; VI-NEXT:    v_lshrrev_b64 v[33:34], 24, v[1:2]
@@ -44633,164 +45135,8 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v60, 8, v32
 ; VI-NEXT:    v_lshrrev_b32_e32 v33, 16, v31
 ; VI-NEXT:    v_lshrrev_b32_e32 v61, 8, v31
-; VI-NEXT:    s_branch .LBB37_5
-; VI-NEXT:  .LBB37_3:
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr71
-; VI-NEXT:    ; implicit-def: $sgpr69
-; VI-NEXT:    ; implicit-def: $sgpr70
-; VI-NEXT:    ; implicit-def: $sgpr68
-; VI-NEXT:    ; implicit-def: $sgpr67
-; VI-NEXT:    ; implicit-def: $sgpr66
-; VI-NEXT:    ; implicit-def: $sgpr64
-; VI-NEXT:    ; implicit-def: $sgpr65
-; VI-NEXT:    ; implicit-def: $sgpr55
-; VI-NEXT:    ; implicit-def: $sgpr54
-; VI-NEXT:    ; implicit-def: $sgpr53
-; VI-NEXT:    ; implicit-def: $sgpr51
-; VI-NEXT:    ; implicit-def: $sgpr52
-; VI-NEXT:    ; implicit-def: $sgpr50
-; VI-NEXT:    ; implicit-def: $sgpr87
-; VI-NEXT:    ; implicit-def: $sgpr86
-; VI-NEXT:    ; implicit-def: $sgpr84
-; VI-NEXT:    ; implicit-def: $sgpr85
-; VI-NEXT:    ; implicit-def: $sgpr83
-; VI-NEXT:    ; implicit-def: $sgpr82
-; VI-NEXT:    ; implicit-def: $sgpr81
-; VI-NEXT:    ; implicit-def: $sgpr80
-; VI-NEXT:    ; implicit-def: $sgpr48
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    s_branch .LBB37_2
-; VI-NEXT:  .LBB37_4:
+; VI-NEXT:    s_branch .LBB37_6
+; VI-NEXT:  .LBB37_5:
 ; VI-NEXT:    v_mov_b32_e32 v53, s46
 ; VI-NEXT:    buffer_store_dword v53, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v54, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
@@ -45027,9 +45373,9 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v55, s82
 ; VI-NEXT:    v_mov_b32_e32 v36, s81
 ; VI-NEXT:    buffer_store_dword v39, off, s[0:3], s32 offset:112 ; 4-byte Folded Spill
-; VI-NEXT:    v_mov_b32_e32 v39, s36
-; VI-NEXT:    v_mov_b32_e32 v40, s38
-; VI-NEXT:    v_mov_b32_e32 v41, s48
+; VI-NEXT:    v_mov_b32_e32 v39, s34
+; VI-NEXT:    v_mov_b32_e32 v40, s36
+; VI-NEXT:    v_mov_b32_e32 v41, s38
 ; VI-NEXT:    buffer_store_dword v53, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v54, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
 ; VI-NEXT:    v_mov_b32_e32 v53, s62
@@ -45053,9 +45399,9 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v53, s90
 ; VI-NEXT:    buffer_store_dword v53, off, s[0:3], s32 offset:332 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v54, off, s[0:3], s32 offset:336 ; 4-byte Folded Spill
-; VI-NEXT:    v_mov_b32_e32 v53, s30
-; VI-NEXT:    v_mov_b32_e32 v54, s34
-; VI-NEXT:  .LBB37_5: ; %end
+; VI-NEXT:    v_mov_b32_e32 v53, vcc_lo
+; VI-NEXT:    v_mov_b32_e32 v54, s30
+; VI-NEXT:  .LBB37_6: ; %end
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; VI-NEXT:    v_perm_b32 v33, v33, v41, s4
 ; VI-NEXT:    v_perm_b32 v31, v31, v61, s4
@@ -45502,7 +45848,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    s_cmp_lg_u32 s44, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    ; implicit-def: $vgpr62 : SGPR spill to VGPR lane
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s46, s5, 24
 ; GFX9-NEXT:    v_writelane_b32 v62, s46, 49
@@ -45647,11 +45993,165 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    s_lshr_b64 s[90:91], s[26:27], 24
 ; GFX9-NEXT:    s_lshr_b64 s[92:93], s[24:25], 24
 ; GFX9-NEXT:    s_lshr_b64 s[94:95], s[22:23], 24
-; GFX9-NEXT:    s_lshr_b64 s[30:31], s[20:21], 24
-; GFX9-NEXT:    s_lshr_b64 s[34:35], s[18:19], 24
-; GFX9-NEXT:    s_lshr_b64 s[36:37], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_4
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_lshr_b64 vcc, s[20:21], 24
+; GFX9-NEXT:    s_lshr_b64 s[30:31], s[18:19], 24
+; GFX9-NEXT:    s_lshr_b64 s[34:35], s[16:17], 24
+; GFX9-NEXT:    s_mov_b64 s[36:37], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    s_mov_b64 s[36:37], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr81
+; GFX9-NEXT:    ; implicit-def: $sgpr71
+; GFX9-NEXT:    ; implicit-def: $sgpr80
+; GFX9-NEXT:    ; implicit-def: $sgpr70
+; GFX9-NEXT:    ; implicit-def: $sgpr69
+; GFX9-NEXT:    ; implicit-def: $sgpr68
+; GFX9-NEXT:    ; implicit-def: $sgpr66
+; GFX9-NEXT:    ; implicit-def: $sgpr67
+; GFX9-NEXT:    ; implicit-def: $sgpr65
+; GFX9-NEXT:    ; implicit-def: $sgpr64
+; GFX9-NEXT:    ; implicit-def: $sgpr55
+; GFX9-NEXT:    ; implicit-def: $sgpr53
+; GFX9-NEXT:    ; implicit-def: $sgpr54
+; GFX9-NEXT:    ; implicit-def: $sgpr52
+; GFX9-NEXT:    ; implicit-def: $sgpr51
+; GFX9-NEXT:    ; implicit-def: $sgpr50
+; GFX9-NEXT:    ; implicit-def: $sgpr48
+; GFX9-NEXT:    ; implicit-def: $sgpr49
+; GFX9-NEXT:    ; implicit-def: $sgpr39
+; GFX9-NEXT:    ; implicit-def: $sgpr38
+; GFX9-NEXT:    ; implicit-def: $sgpr99
+; GFX9-NEXT:    ; implicit-def: $sgpr97
+; GFX9-NEXT:    ; implicit-def: $sgpr98
+; GFX9-NEXT:    ; implicit-def: $sgpr96
+; GFX9-NEXT:    ; implicit-def: $sgpr87
+; GFX9-NEXT:    ; implicit-def: $sgpr86
+; GFX9-NEXT:    ; implicit-def: $sgpr84
+; GFX9-NEXT:    ; implicit-def: $sgpr85
+; GFX9-NEXT:    ; implicit-def: $sgpr83
+; GFX9-NEXT:    ; implicit-def: $sgpr82
+; GFX9-NEXT:    ; implicit-def: $sgpr34
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GFX9-NEXT:    s_cselect_b32 s47, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s47, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v2, s5, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s4, 1.0
 ; GFX9-NEXT:    v_lshrrev_b64 v[15:16], 24, v[1:2]
@@ -45867,156 +46367,8 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v19, 8, v49
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v55, 16, v48
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v20, 8, v48
-; GFX9-NEXT:    s_branch .LBB37_5
-; GFX9-NEXT:  .LBB37_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr81
-; GFX9-NEXT:    ; implicit-def: $sgpr71
-; GFX9-NEXT:    ; implicit-def: $sgpr80
-; GFX9-NEXT:    ; implicit-def: $sgpr70
-; GFX9-NEXT:    ; implicit-def: $sgpr69
-; GFX9-NEXT:    ; implicit-def: $sgpr68
-; GFX9-NEXT:    ; implicit-def: $sgpr66
-; GFX9-NEXT:    ; implicit-def: $sgpr67
-; GFX9-NEXT:    ; implicit-def: $sgpr65
-; GFX9-NEXT:    ; implicit-def: $sgpr64
-; GFX9-NEXT:    ; implicit-def: $sgpr55
-; GFX9-NEXT:    ; implicit-def: $sgpr53
-; GFX9-NEXT:    ; implicit-def: $sgpr54
-; GFX9-NEXT:    ; implicit-def: $sgpr52
-; GFX9-NEXT:    ; implicit-def: $sgpr51
-; GFX9-NEXT:    ; implicit-def: $sgpr50
-; GFX9-NEXT:    ; implicit-def: $sgpr48
-; GFX9-NEXT:    ; implicit-def: $sgpr49
-; GFX9-NEXT:    ; implicit-def: $sgpr39
-; GFX9-NEXT:    ; implicit-def: $sgpr38
-; GFX9-NEXT:    ; implicit-def: $sgpr99
-; GFX9-NEXT:    ; implicit-def: $sgpr97
-; GFX9-NEXT:    ; implicit-def: $sgpr98
-; GFX9-NEXT:    ; implicit-def: $sgpr96
-; GFX9-NEXT:    ; implicit-def: $sgpr87
-; GFX9-NEXT:    ; implicit-def: $sgpr86
-; GFX9-NEXT:    ; implicit-def: $sgpr84
-; GFX9-NEXT:    ; implicit-def: $sgpr85
-; GFX9-NEXT:    ; implicit-def: $sgpr83
-; GFX9-NEXT:    ; implicit-def: $sgpr82
-; GFX9-NEXT:    ; implicit-def: $sgpr36
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    s_branch .LBB37_2
-; GFX9-NEXT:  .LBB37_4:
+; GFX9-NEXT:    s_branch .LBB37_6
+; GFX9-NEXT:  .LBB37_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v53, s46
 ; GFX9-NEXT:    buffer_store_dword v53, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
@@ -46250,9 +46602,9 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v56, s85
 ; GFX9-NEXT:    buffer_store_dword v39, off, s[0:3], s32 offset:104 ; 4-byte Folded Spill
 ; GFX9-NEXT:    v_mov_b32_e32 v39, s94
-; GFX9-NEXT:    v_mov_b32_e32 v40, s30
-; GFX9-NEXT:    v_mov_b32_e32 v41, s34
-; GFX9-NEXT:    v_mov_b32_e32 v42, s36
+; GFX9-NEXT:    v_mov_b32_e32 v40, vcc_lo
+; GFX9-NEXT:    v_mov_b32_e32 v41, s30
+; GFX9-NEXT:    v_mov_b32_e32 v42, s34
 ; GFX9-NEXT:    buffer_store_dword v53, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
 ; GFX9-NEXT:    buffer_store_dword v54, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
@@ -46282,7 +46634,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    buffer_store_dword v54, off, s[0:3], s32 offset:348 ; 4-byte Folded Spill
 ; GFX9-NEXT:    v_mov_b32_e32 v53, s90
 ; GFX9-NEXT:    v_mov_b32_e32 v54, s92
-; GFX9-NEXT:  .LBB37_5: ; %end
+; GFX9-NEXT:  .LBB37_6: ; %end
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; GFX9-NEXT:    v_perm_b32 v32, v32, v15, s4
 ; GFX9-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:360 ; 4-byte Folded Reload
@@ -46732,13 +47084,13 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v2
 ; GFX11-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
-; GFX11-NEXT:    s_mov_b32 vcc_lo, 0
+; GFX11-NEXT:    s_mov_b32 s30, 0
 ; GFX11-NEXT:    ; implicit-def: $vgpr76 : SGPR spill to VGPR lane
 ; GFX11-NEXT:    ; implicit-def: $vgpr77 : SGPR spill to VGPR lane
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s42, s5, 24
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s27, 24
+; GFX11-NEXT:    s_lshr_b32 s31, s27, 24
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 7
 ; GFX11-NEXT:    s_lshr_b32 s42, s5, 16
 ; GFX11-NEXT:    s_lshr_b32 s34, s27, 16
@@ -46820,7 +47172,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 23
 ; GFX11-NEXT:    s_lshr_b32 s42, s11, 8
 ; GFX11-NEXT:    s_lshr_b64 s[94:95], s[28:29], 24
-; GFX11-NEXT:    s_lshr_b64 s[30:31], s[26:27], 24
+; GFX11-NEXT:    s_lshr_b64 vcc, s[26:27], 24
 ; GFX11-NEXT:    s_lshr_b64 s[62:63], s[24:25], 24
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 22
 ; GFX11-NEXT:    s_lshr_b32 s42, s10, 16
@@ -46883,141 +47235,11 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    s_lshr_b32 s42, s28, 8
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 0
 ; GFX11-NEXT:    s_lshr_b64 s[42:43], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, vcc_lo
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_4
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
-; GFX11-NEXT:    v_add_f32_e64 v12, s15, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v11, s14, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v14, s41, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v13, s40, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v16, s29, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v15, s28, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v26, s19, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v25, s18, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v18, s27, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v17, s26, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v4, s7, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v3, s6, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v28, s17, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v27, s16, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v20, s25, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v19, s24, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v6, s9, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v5, s8, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v32, s3, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v31, s2, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v22, s23, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v21, s22, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v8, s11, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v7, s10, 1.0
-; GFX11-NEXT:    v_lshrrev_b64 v[48:49], 24, v[11:12]
-; GFX11-NEXT:    v_add_f32_e64 v34, s1, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v33, s0, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v24, s21, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v23, s20, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v10, s13, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v2, s5, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v1, s4, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v9, s12, 1.0
-; GFX11-NEXT:    v_lshrrev_b64 v[49:50], 24, v[13:14]
-; GFX11-NEXT:    v_lshrrev_b64 v[50:51], 24, v[15:16]
-; GFX11-NEXT:    v_lshrrev_b64 v[35:36], 24, v[3:4]
-; GFX11-NEXT:    v_lshrrev_b64 v[51:52], 24, v[17:18]
-; GFX11-NEXT:    v_lshrrev_b64 v[64:65], 24, v[25:26]
-; GFX11-NEXT:    v_lshrrev_b64 v[36:37], 24, v[5:6]
-; GFX11-NEXT:    v_lshrrev_b64 v[52:53], 24, v[19:20]
-; GFX11-NEXT:    v_lshrrev_b64 v[65:66], 24, v[27:28]
-; GFX11-NEXT:    v_lshrrev_b64 v[37:38], 24, v[7:8]
-; GFX11-NEXT:    v_lshrrev_b64 v[53:54], 24, v[21:22]
-; GFX11-NEXT:    v_lshrrev_b64 v[66:67], 24, v[31:32]
-; GFX11-NEXT:    v_lshrrev_b64 v[29:30], 24, v[1:2]
-; GFX11-NEXT:    v_lshrrev_b64 v[38:39], 24, v[9:10]
-; GFX11-NEXT:    v_lshrrev_b64 v[54:55], 24, v[23:24]
-; GFX11-NEXT:    v_lshrrev_b64 v[67:68], 24, v[33:34]
-; GFX11-NEXT:    v_lshrrev_b32_e32 v70, 24, v2
-; GFX11-NEXT:    v_lshrrev_b32_e32 v69, 16, v2
-; GFX11-NEXT:    v_lshrrev_b32_e32 v39, 8, v2
-; GFX11-NEXT:    v_lshrrev_b32_e32 v71, 16, v1
-; GFX11-NEXT:    v_lshrrev_b32_e32 v30, 8, v1
-; GFX11-NEXT:    v_lshrrev_b32_e32 v83, 24, v4
-; GFX11-NEXT:    v_lshrrev_b32_e32 v81, 16, v4
-; GFX11-NEXT:    v_lshrrev_b32_e32 v55, 8, v4
-; GFX11-NEXT:    v_lshrrev_b32_e32 v84, 16, v3
-; GFX11-NEXT:    v_lshrrev_b32_e32 v82, 8, v3
-; GFX11-NEXT:    v_lshrrev_b32_e32 v86, 24, v6
-; GFX11-NEXT:    v_lshrrev_b32_e32 v85, 16, v6
-; GFX11-NEXT:    v_lshrrev_b32_e32 v80, 8, v6
-; GFX11-NEXT:    v_lshrrev_b32_e32 v98, 16, v5
-; GFX11-NEXT:    v_lshrrev_b32_e32 v96, 8, v5
-; GFX11-NEXT:    v_lshrrev_b32_e32 v100, 24, v8
-; GFX11-NEXT:    v_lshrrev_b32_e32 v99, 16, v8
-; GFX11-NEXT:    v_lshrrev_b32_e32 v87, 8, v8
-; GFX11-NEXT:    v_lshrrev_b32_e32 v101, 16, v7
-; GFX11-NEXT:    v_lshrrev_b32_e32 v97, 8, v7
-; GFX11-NEXT:    v_lshrrev_b32_e32 v112, 24, v10
-; GFX11-NEXT:    v_lshrrev_b32_e32 v103, 16, v10
-; GFX11-NEXT:    v_lshrrev_b32_e32 v102, 8, v10
-; GFX11-NEXT:    v_lshrrev_b32_e32 v116, 16, v9
-; GFX11-NEXT:    v_lshrrev_b32_e32 v114, 8, v9
-; GFX11-NEXT:    v_lshrrev_b32_e32 v118, 24, v12
-; GFX11-NEXT:    v_lshrrev_b32_e32 v117, 16, v12
-; GFX11-NEXT:    v_lshrrev_b32_e32 v113, 8, v12
-; GFX11-NEXT:    v_lshrrev_b32_e32 v119, 16, v11
-; GFX11-NEXT:    v_lshrrev_b32_e32 v115, 8, v11
-; GFX11-NEXT:    v_lshrrev_b32_e32 v130, 24, v14
-; GFX11-NEXT:    v_lshrrev_b32_e32 v129, 16, v14
-; GFX11-NEXT:    v_lshrrev_b32_e32 v128, 8, v14
-; GFX11-NEXT:    v_lshrrev_b32_e32 v134, 16, v13
-; GFX11-NEXT:    v_lshrrev_b32_e32 v132, 8, v13
-; GFX11-NEXT:    v_lshrrev_b32_e32 v144, 24, v16
-; GFX11-NEXT:    v_lshrrev_b32_e32 v135, 16, v16
-; GFX11-NEXT:    v_lshrrev_b32_e32 v131, 8, v16
-; GFX11-NEXT:    v_lshrrev_b32_e32 v145, 16, v15
-; GFX11-NEXT:    v_lshrrev_b32_e32 v133, 8, v15
-; GFX11-NEXT:    v_lshrrev_b32_e32 v148, 24, v18
-; GFX11-NEXT:    v_lshrrev_b32_e32 v147, 16, v18
-; GFX11-NEXT:    v_lshrrev_b32_e32 v146, 8, v18
-; GFX11-NEXT:    v_lshrrev_b32_e32 v151, 16, v17
-; GFX11-NEXT:    v_lshrrev_b32_e32 v149, 8, v17
-; GFX11-NEXT:    v_lshrrev_b32_e32 v162, 24, v20
-; GFX11-NEXT:    v_lshrrev_b32_e32 v161, 16, v20
-; GFX11-NEXT:    v_lshrrev_b32_e32 v150, 8, v20
-; GFX11-NEXT:    v_lshrrev_b32_e32 v163, 16, v19
-; GFX11-NEXT:    v_lshrrev_b32_e32 v160, 8, v19
-; GFX11-NEXT:    v_lshrrev_b32_e32 v166, 24, v22
-; GFX11-NEXT:    v_lshrrev_b32_e32 v165, 16, v22
-; GFX11-NEXT:    v_lshrrev_b32_e32 v164, 8, v22
-; GFX11-NEXT:    v_lshrrev_b32_e32 v177, 16, v21
-; GFX11-NEXT:    v_lshrrev_b32_e32 v167, 8, v21
-; GFX11-NEXT:    v_lshrrev_b32_e32 v180, 24, v24
-; GFX11-NEXT:    v_lshrrev_b32_e32 v179, 16, v24
-; GFX11-NEXT:    v_lshrrev_b32_e32 v176, 8, v24
-; GFX11-NEXT:    v_lshrrev_b32_e32 v181, 16, v23
-; GFX11-NEXT:    v_lshrrev_b32_e32 v178, 8, v23
-; GFX11-NEXT:    v_lshrrev_b32_e32 v41, 24, v26
-; GFX11-NEXT:    v_lshrrev_b32_e32 v40, 16, v26
-; GFX11-NEXT:    v_lshrrev_b32_e32 v182, 8, v26
-; GFX11-NEXT:    v_lshrrev_b32_e32 v43, 16, v25
-; GFX11-NEXT:    v_lshrrev_b32_e32 v183, 8, v25
-; GFX11-NEXT:    v_lshrrev_b32_e32 v45, 24, v28
-; GFX11-NEXT:    v_lshrrev_b32_e32 v44, 16, v28
-; GFX11-NEXT:    v_lshrrev_b32_e32 v42, 8, v28
-; GFX11-NEXT:    v_lshrrev_b32_e32 v47, 16, v27
-; GFX11-NEXT:    v_lshrrev_b32_e32 v46, 8, v27
-; GFX11-NEXT:    v_lshrrev_b32_e32 v59, 24, v32
-; GFX11-NEXT:    v_lshrrev_b32_e32 v58, 16, v32
-; GFX11-NEXT:    v_lshrrev_b32_e32 v56, 8, v32
-; GFX11-NEXT:    v_lshrrev_b32_e32 v60, 16, v31
-; GFX11-NEXT:    v_lshrrev_b32_e32 v57, 8, v31
-; GFX11-NEXT:    v_lshrrev_b32_e32 v62, 24, v34
-; GFX11-NEXT:    v_lshrrev_b32_e32 v61, 16, v34
-; GFX11-NEXT:    v_lshrrev_b32_e32 v63, 8, v34
-; GFX11-NEXT:    v_lshrrev_b32_e32 v73, 16, v33
-; GFX11-NEXT:    v_lshrrev_b32_e32 v72, 8, v33
-; GFX11-NEXT:    s_branch .LBB37_5
-; GFX11-NEXT:  .LBB37_3:
+; GFX11-NEXT:    s_branch .LBB37_3
+; GFX11-NEXT:  .LBB37_2:
 ; GFX11-NEXT:    ; implicit-def: $sgpr43
 ; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    s_mov_b32 s30, -1
 ; GFX11-NEXT:    ; implicit-def: $sgpr43
 ; GFX11-NEXT:    ; kill: killed $sgpr43
 ; GFX11-NEXT:    ; implicit-def: $sgpr104
@@ -47066,8 +47288,8 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    ; implicit-def: $sgpr35
 ; GFX11-NEXT:    ; implicit-def: $sgpr36
 ; GFX11-NEXT:    ; implicit-def: $sgpr34
-; GFX11-NEXT:    ; implicit-def: $vcc_hi
-; GFX11-NEXT:    ; implicit-def: $sgpr30
+; GFX11-NEXT:    ; implicit-def: $sgpr31
+; GFX11-NEXT:    ; implicit-def: $vcc_lo
 ; GFX11-NEXT:    ; implicit-def: $sgpr94
 ; GFX11-NEXT:    ; implicit-def: $sgpr92
 ; GFX11-NEXT:    ; implicit-def: $sgpr90
@@ -47152,8 +47374,143 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    ; kill: killed $sgpr43
 ; GFX11-NEXT:    ; implicit-def: $sgpr43
 ; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    s_branch .LBB37_2
-; GFX11-NEXT:  .LBB37_4:
+; GFX11-NEXT:  .LBB37_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s43, s30, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s43, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s43, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
+; GFX11-NEXT:    v_add_f32_e64 v12, s15, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v11, s14, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v14, s41, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v13, s40, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v16, s29, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v15, s28, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v26, s19, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v25, s18, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v18, s27, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v17, s26, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v4, s7, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v3, s6, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v28, s17, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v27, s16, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v20, s25, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v19, s24, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v6, s9, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v5, s8, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v32, s3, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v31, s2, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v22, s23, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v21, s22, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v8, s11, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v7, s10, 1.0
+; GFX11-NEXT:    v_lshrrev_b64 v[48:49], 24, v[11:12]
+; GFX11-NEXT:    v_add_f32_e64 v34, s1, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v33, s0, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v24, s21, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v23, s20, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v10, s13, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v2, s5, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v1, s4, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v9, s12, 1.0
+; GFX11-NEXT:    v_lshrrev_b64 v[49:50], 24, v[13:14]
+; GFX11-NEXT:    v_lshrrev_b64 v[50:51], 24, v[15:16]
+; GFX11-NEXT:    v_lshrrev_b64 v[35:36], 24, v[3:4]
+; GFX11-NEXT:    v_lshrrev_b64 v[51:52], 24, v[17:18]
+; GFX11-NEXT:    v_lshrrev_b64 v[64:65], 24, v[25:26]
+; GFX11-NEXT:    v_lshrrev_b64 v[36:37], 24, v[5:6]
+; GFX11-NEXT:    v_lshrrev_b64 v[52:53], 24, v[19:20]
+; GFX11-NEXT:    v_lshrrev_b64 v[65:66], 24, v[27:28]
+; GFX11-NEXT:    v_lshrrev_b64 v[37:38], 24, v[7:8]
+; GFX11-NEXT:    v_lshrrev_b64 v[53:54], 24, v[21:22]
+; GFX11-NEXT:    v_lshrrev_b64 v[66:67], 24, v[31:32]
+; GFX11-NEXT:    v_lshrrev_b64 v[29:30], 24, v[1:2]
+; GFX11-NEXT:    v_lshrrev_b64 v[38:39], 24, v[9:10]
+; GFX11-NEXT:    v_lshrrev_b64 v[54:55], 24, v[23:24]
+; GFX11-NEXT:    v_lshrrev_b64 v[67:68], 24, v[33:34]
+; GFX11-NEXT:    v_lshrrev_b32_e32 v70, 24, v2
+; GFX11-NEXT:    v_lshrrev_b32_e32 v69, 16, v2
+; GFX11-NEXT:    v_lshrrev_b32_e32 v39, 8, v2
+; GFX11-NEXT:    v_lshrrev_b32_e32 v71, 16, v1
+; GFX11-NEXT:    v_lshrrev_b32_e32 v30, 8, v1
+; GFX11-NEXT:    v_lshrrev_b32_e32 v83, 24, v4
+; GFX11-NEXT:    v_lshrrev_b32_e32 v81, 16, v4
+; GFX11-NEXT:    v_lshrrev_b32_e32 v55, 8, v4
+; GFX11-NEXT:    v_lshrrev_b32_e32 v84, 16, v3
+; GFX11-NEXT:    v_lshrrev_b32_e32 v82, 8, v3
+; GFX11-NEXT:    v_lshrrev_b32_e32 v86, 24, v6
+; GFX11-NEXT:    v_lshrrev_b32_e32 v85, 16, v6
+; GFX11-NEXT:    v_lshrrev_b32_e32 v80, 8, v6
+; GFX11-NEXT:    v_lshrrev_b32_e32 v98, 16, v5
+; GFX11-NEXT:    v_lshrrev_b32_e32 v96, 8, v5
+; GFX11-NEXT:    v_lshrrev_b32_e32 v100, 24, v8
+; GFX11-NEXT:    v_lshrrev_b32_e32 v99, 16, v8
+; GFX11-NEXT:    v_lshrrev_b32_e32 v87, 8, v8
+; GFX11-NEXT:    v_lshrrev_b32_e32 v101, 16, v7
+; GFX11-NEXT:    v_lshrrev_b32_e32 v97, 8, v7
+; GFX11-NEXT:    v_lshrrev_b32_e32 v112, 24, v10
+; GFX11-NEXT:    v_lshrrev_b32_e32 v103, 16, v10
+; GFX11-NEXT:    v_lshrrev_b32_e32 v102, 8, v10
+; GFX11-NEXT:    v_lshrrev_b32_e32 v116, 16, v9
+; GFX11-NEXT:    v_lshrrev_b32_e32 v114, 8, v9
+; GFX11-NEXT:    v_lshrrev_b32_e32 v118, 24, v12
+; GFX11-NEXT:    v_lshrrev_b32_e32 v117, 16, v12
+; GFX11-NEXT:    v_lshrrev_b32_e32 v113, 8, v12
+; GFX11-NEXT:    v_lshrrev_b32_e32 v119, 16, v11
+; GFX11-NEXT:    v_lshrrev_b32_e32 v115, 8, v11
+; GFX11-NEXT:    v_lshrrev_b32_e32 v130, 24, v14
+; GFX11-NEXT:    v_lshrrev_b32_e32 v129, 16, v14
+; GFX11-NEXT:    v_lshrrev_b32_e32 v128, 8, v14
+; GFX11-NEXT:    v_lshrrev_b32_e32 v134, 16, v13
+; GFX11-NEXT:    v_lshrrev_b32_e32 v132, 8, v13
+; GFX11-NEXT:    v_lshrrev_b32_e32 v144, 24, v16
+; GFX11-NEXT:    v_lshrrev_b32_e32 v135, 16, v16
+; GFX11-NEXT:    v_lshrrev_b32_e32 v131, 8, v16
+; GFX11-NEXT:    v_lshrrev_b32_e32 v145, 16, v15
+; GFX11-NEXT:    v_lshrrev_b32_e32 v133, 8, v15
+; GFX11-NEXT:    v_lshrrev_b32_e32 v148, 24, v18
+; GFX11-NEXT:    v_lshrrev_b32_e32 v147, 16, v18
+; GFX11-NEXT:    v_lshrrev_b32_e32 v146, 8, v18
+; GFX11-NEXT:    v_lshrrev_b32_e32 v151, 16, v17
+; GFX11-NEXT:    v_lshrrev_b32_e32 v149, 8, v17
+; GFX11-NEXT:    v_lshrrev_b32_e32 v162, 24, v20
+; GFX11-NEXT:    v_lshrrev_b32_e32 v161, 16, v20
+; GFX11-NEXT:    v_lshrrev_b32_e32 v150, 8, v20
+; GFX11-NEXT:    v_lshrrev_b32_e32 v163, 16, v19
+; GFX11-NEXT:    v_lshrrev_b32_e32 v160, 8, v19
+; GFX11-NEXT:    v_lshrrev_b32_e32 v166, 24, v22
+; GFX11-NEXT:    v_lshrrev_b32_e32 v165, 16, v22
+; GFX11-NEXT:    v_lshrrev_b32_e32 v164, 8, v22
+; GFX11-NEXT:    v_lshrrev_b32_e32 v177, 16, v21
+; GFX11-NEXT:    v_lshrrev_b32_e32 v167, 8, v21
+; GFX11-NEXT:    v_lshrrev_b32_e32 v180, 24, v24
+; GFX11-NEXT:    v_lshrrev_b32_e32 v179, 16, v24
+; GFX11-NEXT:    v_lshrrev_b32_e32 v176, 8, v24
+; GFX11-NEXT:    v_lshrrev_b32_e32 v181, 16, v23
+; GFX11-NEXT:    v_lshrrev_b32_e32 v178, 8, v23
+; GFX11-NEXT:    v_lshrrev_b32_e32 v41, 24, v26
+; GFX11-NEXT:    v_lshrrev_b32_e32 v40, 16, v26
+; GFX11-NEXT:    v_lshrrev_b32_e32 v182, 8, v26
+; GFX11-NEXT:    v_lshrrev_b32_e32 v43, 16, v25
+; GFX11-NEXT:    v_lshrrev_b32_e32 v183, 8, v25
+; GFX11-NEXT:    v_lshrrev_b32_e32 v45, 24, v28
+; GFX11-NEXT:    v_lshrrev_b32_e32 v44, 16, v28
+; GFX11-NEXT:    v_lshrrev_b32_e32 v42, 8, v28
+; GFX11-NEXT:    v_lshrrev_b32_e32 v47, 16, v27
+; GFX11-NEXT:    v_lshrrev_b32_e32 v46, 8, v27
+; GFX11-NEXT:    v_lshrrev_b32_e32 v59, 24, v32
+; GFX11-NEXT:    v_lshrrev_b32_e32 v58, 16, v32
+; GFX11-NEXT:    v_lshrrev_b32_e32 v56, 8, v32
+; GFX11-NEXT:    v_lshrrev_b32_e32 v60, 16, v31
+; GFX11-NEXT:    v_lshrrev_b32_e32 v57, 8, v31
+; GFX11-NEXT:    v_lshrrev_b32_e32 v62, 24, v34
+; GFX11-NEXT:    v_lshrrev_b32_e32 v61, 16, v34
+; GFX11-NEXT:    v_lshrrev_b32_e32 v63, 8, v34
+; GFX11-NEXT:    v_lshrrev_b32_e32 v73, 16, v33
+; GFX11-NEXT:    v_lshrrev_b32_e32 v72, 8, v33
+; GFX11-NEXT:    s_branch .LBB37_6
+; GFX11-NEXT:  .LBB37_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v33, s0 :: v_dual_mov_b32 v34, s1
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 0
 ; GFX11-NEXT:    v_dual_mov_b32 v31, s2 :: v_dual_mov_b32 v32, s3
@@ -47233,7 +47590,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_mov_b32_e32 v116, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 17
-; GFX11-NEXT:    v_dual_mov_b32 v147, s34 :: v_dual_mov_b32 v148, vcc_hi
+; GFX11-NEXT:    v_dual_mov_b32 v147, s34 :: v_dual_mov_b32 v148, s31
 ; GFX11-NEXT:    v_dual_mov_b32 v29, s72 :: v_dual_mov_b32 v48, s90
 ; GFX11-NEXT:    v_mov_b32_e32 v102, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 18
@@ -47243,7 +47600,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    v_mov_b32_e32 v103, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 19
 ; GFX11-NEXT:    v_dual_mov_b32 v49, s92 :: v_dual_mov_b32 v54, s58
-; GFX11-NEXT:    v_dual_mov_b32 v51, s30 :: v_dual_mov_b32 v64, s56
+; GFX11-NEXT:    v_dual_mov_b32 v51, vcc_lo :: v_dual_mov_b32 v64, s56
 ; GFX11-NEXT:    v_mov_b32_e32 v112, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 20
 ; GFX11-NEXT:    v_dual_mov_b32 v53, s60 :: v_dual_mov_b32 v66, s44
@@ -47299,7 +47656,7 @@ define inreg <128 x i8> @bitcast_v32f32_to_v128i8_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    v_mov_b32_e32 v69, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v77, 7
 ; GFX11-NEXT:    v_mov_b32_e32 v70, s0
-; GFX11-NEXT:  .LBB37_5: ; %end
+; GFX11-NEXT:  .LBB37_6: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_perm_b32 v67, v73, v67, 0xc0c0004
 ; GFX11-NEXT:    v_perm_b32 v66, v60, v66, 0xc0c0004
@@ -54023,8 +54380,10 @@ define inreg <32 x float> @bitcast_v128i8_to_v32f32_scalar(<128 x i8> inreg %a,
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:480 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v37, off, s[0:3], s32 offset:444 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v39, off, s[0:3], s32 offset:448 ; 4-byte Folded Reload
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; SI-NEXT:    s_cbranch_vccnz .LBB39_5
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
 ; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:660 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:604 ; 4-byte Folded Reload
@@ -55021,8 +55380,10 @@ define inreg <32 x float> @bitcast_v128i8_to_v32f32_scalar(<128 x i8> inreg %a,
 ; VI-NEXT:    buffer_load_dword v52, off, s[0:3], s32 offset:596 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:600 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v54, off, s[0:3], s32 offset:604 ; 4-byte Folded Reload
-; VI-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; VI-NEXT:    s_cbranch_vccnz .LBB39_5
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
 ; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
@@ -55945,8 +56306,10 @@ define inreg <32 x float> @bitcast_v128i8_to_v32f32_scalar(<128 x i8> inreg %a,
 ; GFX9-NEXT:    buffer_load_dword v52, off, s[0:3], s32 offset:596 ; 4-byte Folded Reload
 ; GFX9-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:600 ; 4-byte Folded Reload
 ; GFX9-NEXT:    buffer_load_dword v54, off, s[0:3], s32 offset:604 ; 4-byte Folded Reload
-; GFX9-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GFX9-NEXT:    s_cbranch_vccnz .LBB39_5
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
 ; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
@@ -56441,7 +56804,7 @@ define inreg <32 x float> @bitcast_v128i8_to_v32f32_scalar(<128 x i8> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v31
 ; GFX11-TRUE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB39_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
@@ -56587,9 +56950,17 @@ define inreg <32 x float> @bitcast_v128i8_to_v32f32_scalar(<128 x i8> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v30, v31, v183
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v31, v40, v41
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB39_3
-; GFX11-TRUE16-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB39_3
+; GFX11-TRUE16-NEXT:  .LBB39_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; GFX11-TRUE16-NEXT:  .LBB39_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-TRUE16-NEXT:    s_add_i32 s0, s0, 3
@@ -56880,15 +57251,12 @@ define inreg <32 x float> @bitcast_v128i8_to_v32f32_scalar(<128 x i8> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v29, v31, v34
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v30, v36, v35
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v31, v33, v32
-; GFX11-TRUE16-NEXT:  .LBB39_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB39_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; 8-byte Folded Reload
 ; GFX11-TRUE16-NEXT:    scratch_load_b32 v41, off, s32 offset:320
 ; GFX11-TRUE16-NEXT:    scratch_load_b32 v40, off, s32 offset:324
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB39_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; GFX11-TRUE16-NEXT:    s_branch .LBB39_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v128i8_to_v32f32_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -57015,7 +57383,7 @@ define inreg <32 x float> @bitcast_v128i8_to_v32f32_scalar(<128 x i8> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v31
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB39_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
@@ -57161,9 +57529,17 @@ define inreg <32 x float> @bitcast_v128i8_to_v32f32_scalar(<128 x i8> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v30, v31, v183
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v31, v40, v41
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB39_3
-; GFX11-FAKE16-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB39_3
+; GFX11-FAKE16-NEXT:  .LBB39_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; GFX11-FAKE16-NEXT:  .LBB39_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-FAKE16-NEXT:    s_add_i32 s0, s0, 3
@@ -57454,15 +57830,12 @@ define inreg <32 x float> @bitcast_v128i8_to_v32f32_scalar(<128 x i8> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v29, v31, v34
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v30, v36, v35
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v31, v33, v32
-; GFX11-FAKE16-NEXT:  .LBB39_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB39_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; 8-byte Folded Reload
 ; GFX11-FAKE16-NEXT:    scratch_load_b32 v41, off, s32 offset:320
 ; GFX11-FAKE16-NEXT:    scratch_load_b32 v40, off, s32 offset:324
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB39_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; GFX11-FAKE16-NEXT:    s_branch .LBB39_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -58342,16 +58715,14 @@ define inreg <64 x bfloat> @bitcast_v32f32_to_v64bf16_scalar(<32 x float> inreg
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s47, v0
 ; SI-NEXT:    ; implicit-def: $vgpr62 : SGPR spill to VGPR lane
-; SI-NEXT:    s_cbranch_scc0 .LBB41_3
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff0000
-; SI-NEXT:    v_writelane_b32 v62, s4, 3
-; SI-NEXT:    s_lshl_b32 s4, s6, 16
-; SI-NEXT:    v_writelane_b32 v62, s4, 2
-; SI-NEXT:    s_and_b32 s4, s7, 0xffff0000
 ; SI-NEXT:    v_writelane_b32 v62, s4, 1
-; SI-NEXT:    s_lshl_b32 s4, s7, 16
+; SI-NEXT:    s_lshl_b32 s4, s6, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 0
+; SI-NEXT:    s_and_b32 s58, s7, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s59, s7, 16
 ; SI-NEXT:    s_and_b32 s60, s8, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s61, s8, 16
 ; SI-NEXT:    s_and_b32 s62, s9, 0xffff0000
@@ -58372,164 +58743,51 @@ define inreg <64 x bfloat> @bitcast_v32f32_to_v64bf16_scalar(<32 x float> inreg
 ; SI-NEXT:    s_lshl_b32 s93, s40, 16
 ; SI-NEXT:    s_and_b32 s94, s41, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s95, s41, 16
-; SI-NEXT:    s_and_b32 s30, s42, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s31, s42, 16
-; SI-NEXT:    s_and_b32 s34, s43, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s35, s43, 16
-; SI-NEXT:    s_and_b32 s36, s44, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s37, s44, 16
-; SI-NEXT:    s_and_b32 s38, s45, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s39, s45, 16
-; SI-NEXT:    s_and_b32 s48, s46, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s49, s46, 16
-; SI-NEXT:    s_and_b32 s50, s47, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s51, s47, 16
-; SI-NEXT:    s_and_b32 s52, s29, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s53, s29, 16
-; SI-NEXT:    s_and_b32 s54, s28, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s55, s28, 16
-; SI-NEXT:    s_and_b32 s64, s27, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s65, s27, 16
-; SI-NEXT:    s_and_b32 s66, s26, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s67, s26, 16
-; SI-NEXT:    s_and_b32 s68, s25, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s69, s25, 16
-; SI-NEXT:    s_and_b32 s70, s24, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s71, s24, 16
-; SI-NEXT:    s_and_b32 s80, s23, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s81, s23, 16
-; SI-NEXT:    s_and_b32 s82, s22, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s83, s22, 16
-; SI-NEXT:    s_and_b32 s84, s21, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s85, s21, 16
-; SI-NEXT:    s_and_b32 s86, s20, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s87, s20, 16
-; SI-NEXT:    s_and_b32 s96, s19, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s97, s19, 16
-; SI-NEXT:    s_and_b32 s98, s18, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s99, s18, 16
-; SI-NEXT:    s_and_b32 s56, s17, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s57, s17, 16
-; SI-NEXT:    s_and_b32 s58, s16, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s59, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB41_4
-; SI-NEXT:  .LBB41_2: ; %cmp.true
-; SI-NEXT:    v_add_f32_e64 v29, s6, 1.0
-; SI-NEXT:    v_add_f32_e64 v28, s7, 1.0
-; SI-NEXT:    v_and_b32_e32 v30, 0xffff0000, v29
-; SI-NEXT:    v_lshlrev_b32_e32 v29, 16, v29
-; SI-NEXT:    v_add_f32_e64 v27, s8, 1.0
-; SI-NEXT:    buffer_store_dword v29, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_and_b32_e32 v29, 0xffff0000, v28
-; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v28
-; SI-NEXT:    v_add_f32_e64 v0, s18, 1.0
-; SI-NEXT:    v_add_f32_e64 v4, s22, 1.0
-; SI-NEXT:    v_add_f32_e64 v5, s23, 1.0
-; SI-NEXT:    v_add_f32_e64 v12, s47, 1.0
-; SI-NEXT:    v_add_f32_e64 v13, s46, 1.0
-; SI-NEXT:    v_add_f32_e64 v14, s45, 1.0
-; SI-NEXT:    v_add_f32_e64 v15, s44, 1.0
-; SI-NEXT:    v_add_f32_e64 v26, s9, 1.0
-; SI-NEXT:    buffer_store_dword v28, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_and_b32_e32 v28, 0xffff0000, v27
-; SI-NEXT:    v_add_f32_e64 v2, s20, 1.0
-; SI-NEXT:    v_add_f32_e64 v3, s21, 1.0
-; SI-NEXT:    v_add_f32_e64 v9, s27, 1.0
-; SI-NEXT:    v_add_f32_e64 v10, s28, 1.0
-; SI-NEXT:    v_add_f32_e64 v11, s29, 1.0
-; SI-NEXT:    v_add_f32_e64 v22, s13, 1.0
-; SI-NEXT:    v_add_f32_e64 v23, s12, 1.0
-; SI-NEXT:    v_add_f32_e64 v24, s11, 1.0
-; SI-NEXT:    v_add_f32_e64 v25, s10, 1.0
-; SI-NEXT:    buffer_store_dword v30, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v29, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v28, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
-; SI-NEXT:    v_lshlrev_b32_e32 v27, 16, v27
-; SI-NEXT:    v_and_b32_e32 v49, 0xffff0000, v26
-; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v26
-; SI-NEXT:    v_and_b32_e32 v37, 0xffff0000, v15
-; SI-NEXT:    v_lshlrev_b32_e32 v36, 16, v15
-; SI-NEXT:    v_and_b32_e32 v33, 0xffff0000, v14
-; SI-NEXT:    v_lshlrev_b32_e32 v32, 16, v14
-; SI-NEXT:    v_and_b32_e32 v31, 0xffff0000, v13
-; SI-NEXT:    s_waitcnt expcnt(2)
-; SI-NEXT:    v_lshlrev_b32_e32 v30, 16, v13
-; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_and_b32_e32 v29, 0xffff0000, v12
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v12
-; SI-NEXT:    v_and_b32_e32 v15, 0xffff0000, v5
-; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v5
-; SI-NEXT:    v_and_b32_e32 v13, 0xffff0000, v4
-; SI-NEXT:    v_lshlrev_b32_e32 v12, 16, v4
-; SI-NEXT:    v_and_b32_e32 v5, 0xffff0000, v0
-; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v0
-; SI-NEXT:    v_add_f32_e64 v0, s17, 1.0
-; SI-NEXT:    v_add_f32_e64 v1, s19, 1.0
-; SI-NEXT:    v_add_f32_e64 v6, s24, 1.0
-; SI-NEXT:    v_add_f32_e64 v7, s25, 1.0
-; SI-NEXT:    v_add_f32_e64 v8, s26, 1.0
-; SI-NEXT:    v_add_f32_e64 v16, s43, 1.0
-; SI-NEXT:    v_add_f32_e64 v17, s42, 1.0
-; SI-NEXT:    v_add_f32_e64 v18, s41, 1.0
-; SI-NEXT:    v_add_f32_e64 v19, s40, 1.0
-; SI-NEXT:    v_add_f32_e64 v20, s15, 1.0
-; SI-NEXT:    v_add_f32_e64 v21, s14, 1.0
-; SI-NEXT:    buffer_store_dword v27, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v26, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
-; SI-NEXT:    v_and_b32_e32 v51, 0xffff0000, v25
-; SI-NEXT:    v_lshlrev_b32_e32 v50, 16, v25
-; SI-NEXT:    v_and_b32_e32 v53, 0xffff0000, v24
-; SI-NEXT:    v_lshlrev_b32_e32 v52, 16, v24
-; SI-NEXT:    v_and_b32_e32 v55, 0xffff0000, v23
-; SI-NEXT:    v_lshlrev_b32_e32 v54, 16, v23
-; SI-NEXT:    v_and_b32_e32 v41, 0xffff0000, v22
-; SI-NEXT:    v_lshlrev_b32_e32 v40, 16, v22
-; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_and_b32_e32 v27, 0xffff0000, v11
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v11
-; SI-NEXT:    v_and_b32_e32 v25, 0xffff0000, v10
-; SI-NEXT:    v_lshlrev_b32_e32 v24, 16, v10
-; SI-NEXT:    v_and_b32_e32 v23, 0xffff0000, v9
-; SI-NEXT:    v_lshlrev_b32_e32 v22, 16, v9
-; SI-NEXT:    v_and_b32_e32 v11, 0xffff0000, v3
-; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v3
-; SI-NEXT:    v_and_b32_e32 v9, 0xffff0000, v2
-; SI-NEXT:    v_lshlrev_b32_e32 v38, 16, v2
-; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v0
-; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v0
-; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; SI-NEXT:    v_and_b32_e32 v43, 0xffff0000, v21
-; SI-NEXT:    v_lshlrev_b32_e32 v42, 16, v21
-; SI-NEXT:    v_and_b32_e32 v45, 0xffff0000, v20
-; SI-NEXT:    v_lshlrev_b32_e32 v44, 16, v20
-; SI-NEXT:    v_and_b32_e32 v47, 0xffff0000, v19
-; SI-NEXT:    v_lshlrev_b32_e32 v46, 16, v19
-; SI-NEXT:    v_and_b32_e32 v57, 0xffff0000, v18
-; SI-NEXT:    v_lshlrev_b32_e32 v56, 16, v18
-; SI-NEXT:    v_and_b32_e32 v59, 0xffff0000, v17
-; SI-NEXT:    v_lshlrev_b32_e32 v58, 16, v17
-; SI-NEXT:    v_and_b32_e32 v61, 0xffff0000, v16
-; SI-NEXT:    v_lshlrev_b32_e32 v60, 16, v16
-; SI-NEXT:    v_and_b32_e32 v21, 0xffff0000, v8
-; SI-NEXT:    v_lshlrev_b32_e32 v20, 16, v8
-; SI-NEXT:    v_and_b32_e32 v19, 0xffff0000, v7
-; SI-NEXT:    v_lshlrev_b32_e32 v18, 16, v7
-; SI-NEXT:    v_and_b32_e32 v17, 0xffff0000, v6
-; SI-NEXT:    v_lshlrev_b32_e32 v48, 16, v6
-; SI-NEXT:    v_and_b32_e32 v39, 0xffff0000, v1
-; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v0
-; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
-; SI-NEXT:    s_branch .LBB41_5
-; SI-NEXT:  .LBB41_3:
+; SI-NEXT:    s_and_b32 vcc_lo, s42, 0xffff0000
+; SI-NEXT:    s_lshl_b32 vcc_hi, s42, 16
+; SI-NEXT:    s_and_b32 s30, s43, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s31, s43, 16
+; SI-NEXT:    s_and_b32 s34, s44, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s35, s44, 16
+; SI-NEXT:    s_and_b32 s36, s45, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s37, s45, 16
+; SI-NEXT:    s_and_b32 s38, s46, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s39, s46, 16
+; SI-NEXT:    s_and_b32 s48, s47, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s49, s47, 16
+; SI-NEXT:    s_and_b32 s50, s29, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s51, s29, 16
+; SI-NEXT:    s_and_b32 s52, s28, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s53, s28, 16
+; SI-NEXT:    s_and_b32 s54, s27, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s55, s27, 16
+; SI-NEXT:    s_and_b32 s64, s26, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s65, s26, 16
+; SI-NEXT:    s_and_b32 s66, s25, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s67, s25, 16
+; SI-NEXT:    s_and_b32 s68, s24, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s69, s24, 16
+; SI-NEXT:    s_and_b32 s70, s23, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s71, s23, 16
+; SI-NEXT:    s_and_b32 s80, s22, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s81, s22, 16
+; SI-NEXT:    s_and_b32 s82, s21, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s83, s21, 16
+; SI-NEXT:    s_and_b32 s84, s20, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s85, s20, 16
+; SI-NEXT:    s_and_b32 s86, s19, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s87, s19, 16
+; SI-NEXT:    s_and_b32 s96, s18, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s97, s18, 16
+; SI-NEXT:    s_and_b32 s98, s17, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s99, s17, 16
+; SI-NEXT:    s_and_b32 s56, s16, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s57, s16, 16
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
 ; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr58
 ; SI-NEXT:    ; implicit-def: $sgpr57
 ; SI-NEXT:    ; implicit-def: $sgpr56
 ; SI-NEXT:    ; implicit-def: $sgpr99
@@ -58568,6 +58826,8 @@ define inreg <64 x bfloat> @bitcast_v32f32_to_v64bf16_scalar(<32 x float> inreg
 ; SI-NEXT:    ; implicit-def: $sgpr34
 ; SI-NEXT:    ; implicit-def: $sgpr31
 ; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $vcc_lo
 ; SI-NEXT:    ; implicit-def: $sgpr95
 ; SI-NEXT:    ; implicit-def: $sgpr94
 ; SI-NEXT:    ; implicit-def: $sgpr93
@@ -58588,14 +58848,129 @@ define inreg <64 x bfloat> @bitcast_v32f32_to_v64bf16_scalar(<32 x float> inreg
 ; SI-NEXT:    ; implicit-def: $sgpr62
 ; SI-NEXT:    ; implicit-def: $sgpr61
 ; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr58
 ; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    s_branch .LBB41_2
-; SI-NEXT:  .LBB41_4:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_add_f32_e64 v29, s6, 1.0
+; SI-NEXT:    v_add_f32_e64 v28, s7, 1.0
+; SI-NEXT:    v_and_b32_e32 v30, 0xffff0000, v29
+; SI-NEXT:    v_lshlrev_b32_e32 v29, 16, v29
+; SI-NEXT:    v_add_f32_e64 v27, s8, 1.0
+; SI-NEXT:    buffer_store_dword v29, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_and_b32_e32 v29, 0xffff0000, v28
+; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v28
+; SI-NEXT:    v_add_f32_e64 v0, s18, 1.0
+; SI-NEXT:    v_add_f32_e64 v4, s22, 1.0
+; SI-NEXT:    v_add_f32_e64 v5, s23, 1.0
+; SI-NEXT:    v_add_f32_e64 v12, s47, 1.0
+; SI-NEXT:    v_add_f32_e64 v13, s46, 1.0
+; SI-NEXT:    v_add_f32_e64 v14, s45, 1.0
+; SI-NEXT:    v_add_f32_e64 v15, s44, 1.0
+; SI-NEXT:    v_add_f32_e64 v26, s9, 1.0
+; SI-NEXT:    buffer_store_dword v28, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_and_b32_e32 v28, 0xffff0000, v27
+; SI-NEXT:    v_add_f32_e64 v2, s20, 1.0
+; SI-NEXT:    v_add_f32_e64 v3, s21, 1.0
+; SI-NEXT:    v_add_f32_e64 v9, s27, 1.0
+; SI-NEXT:    v_add_f32_e64 v10, s28, 1.0
+; SI-NEXT:    v_add_f32_e64 v11, s29, 1.0
+; SI-NEXT:    v_add_f32_e64 v22, s13, 1.0
+; SI-NEXT:    v_add_f32_e64 v23, s12, 1.0
+; SI-NEXT:    v_add_f32_e64 v24, s11, 1.0
+; SI-NEXT:    v_add_f32_e64 v25, s10, 1.0
+; SI-NEXT:    buffer_store_dword v30, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v29, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v28, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
+; SI-NEXT:    v_lshlrev_b32_e32 v27, 16, v27
+; SI-NEXT:    v_and_b32_e32 v49, 0xffff0000, v26
+; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v26
+; SI-NEXT:    v_and_b32_e32 v37, 0xffff0000, v15
+; SI-NEXT:    v_lshlrev_b32_e32 v36, 16, v15
+; SI-NEXT:    v_and_b32_e32 v33, 0xffff0000, v14
+; SI-NEXT:    v_lshlrev_b32_e32 v32, 16, v14
+; SI-NEXT:    v_and_b32_e32 v31, 0xffff0000, v13
+; SI-NEXT:    s_waitcnt expcnt(2)
+; SI-NEXT:    v_lshlrev_b32_e32 v30, 16, v13
+; SI-NEXT:    s_waitcnt expcnt(1)
+; SI-NEXT:    v_and_b32_e32 v29, 0xffff0000, v12
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v12
+; SI-NEXT:    v_and_b32_e32 v15, 0xffff0000, v5
+; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v5
+; SI-NEXT:    v_and_b32_e32 v13, 0xffff0000, v4
+; SI-NEXT:    v_lshlrev_b32_e32 v12, 16, v4
+; SI-NEXT:    v_and_b32_e32 v5, 0xffff0000, v0
+; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v0
+; SI-NEXT:    v_add_f32_e64 v0, s17, 1.0
+; SI-NEXT:    v_add_f32_e64 v1, s19, 1.0
+; SI-NEXT:    v_add_f32_e64 v6, s24, 1.0
+; SI-NEXT:    v_add_f32_e64 v7, s25, 1.0
+; SI-NEXT:    v_add_f32_e64 v8, s26, 1.0
+; SI-NEXT:    v_add_f32_e64 v16, s43, 1.0
+; SI-NEXT:    v_add_f32_e64 v17, s42, 1.0
+; SI-NEXT:    v_add_f32_e64 v18, s41, 1.0
+; SI-NEXT:    v_add_f32_e64 v19, s40, 1.0
+; SI-NEXT:    v_add_f32_e64 v20, s15, 1.0
+; SI-NEXT:    v_add_f32_e64 v21, s14, 1.0
+; SI-NEXT:    buffer_store_dword v27, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v26, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
+; SI-NEXT:    v_and_b32_e32 v51, 0xffff0000, v25
+; SI-NEXT:    v_lshlrev_b32_e32 v50, 16, v25
+; SI-NEXT:    v_and_b32_e32 v53, 0xffff0000, v24
+; SI-NEXT:    v_lshlrev_b32_e32 v52, 16, v24
+; SI-NEXT:    v_and_b32_e32 v55, 0xffff0000, v23
+; SI-NEXT:    v_lshlrev_b32_e32 v54, 16, v23
+; SI-NEXT:    v_and_b32_e32 v41, 0xffff0000, v22
+; SI-NEXT:    v_lshlrev_b32_e32 v40, 16, v22
+; SI-NEXT:    s_waitcnt expcnt(1)
+; SI-NEXT:    v_and_b32_e32 v27, 0xffff0000, v11
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v11
+; SI-NEXT:    v_and_b32_e32 v25, 0xffff0000, v10
+; SI-NEXT:    v_lshlrev_b32_e32 v24, 16, v10
+; SI-NEXT:    v_and_b32_e32 v23, 0xffff0000, v9
+; SI-NEXT:    v_lshlrev_b32_e32 v22, 16, v9
+; SI-NEXT:    v_and_b32_e32 v11, 0xffff0000, v3
+; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v3
+; SI-NEXT:    v_and_b32_e32 v9, 0xffff0000, v2
+; SI-NEXT:    v_lshlrev_b32_e32 v38, 16, v2
+; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v0
+; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v0
+; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
+; SI-NEXT:    v_and_b32_e32 v43, 0xffff0000, v21
+; SI-NEXT:    v_lshlrev_b32_e32 v42, 16, v21
+; SI-NEXT:    v_and_b32_e32 v45, 0xffff0000, v20
+; SI-NEXT:    v_lshlrev_b32_e32 v44, 16, v20
+; SI-NEXT:    v_and_b32_e32 v47, 0xffff0000, v19
+; SI-NEXT:    v_lshlrev_b32_e32 v46, 16, v19
+; SI-NEXT:    v_and_b32_e32 v57, 0xffff0000, v18
+; SI-NEXT:    v_lshlrev_b32_e32 v56, 16, v18
+; SI-NEXT:    v_and_b32_e32 v59, 0xffff0000, v17
+; SI-NEXT:    v_lshlrev_b32_e32 v58, 16, v17
+; SI-NEXT:    v_and_b32_e32 v61, 0xffff0000, v16
+; SI-NEXT:    v_lshlrev_b32_e32 v60, 16, v16
+; SI-NEXT:    v_and_b32_e32 v21, 0xffff0000, v8
+; SI-NEXT:    v_lshlrev_b32_e32 v20, 16, v8
+; SI-NEXT:    v_and_b32_e32 v19, 0xffff0000, v7
+; SI-NEXT:    v_lshlrev_b32_e32 v18, 16, v7
+; SI-NEXT:    v_and_b32_e32 v17, 0xffff0000, v6
+; SI-NEXT:    v_lshlrev_b32_e32 v48, 16, v6
+; SI-NEXT:    v_and_b32_e32 v39, 0xffff0000, v1
+; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v1
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v0
+; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
+; SI-NEXT:    s_branch .LBB41_6
+; SI-NEXT:  .LBB41_5:
 ; SI-NEXT:    v_mov_b32_e32 v7, s63
 ; SI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
@@ -58603,62 +58978,60 @@ define inreg <64 x bfloat> @bitcast_v32f32_to_v64bf16_scalar(<32 x float> inreg
 ; SI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v7, s60
-; SI-NEXT:    v_readlane_b32 s4, v62, 0
 ; SI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v7, s4
-; SI-NEXT:    v_readlane_b32 s4, v62, 1
+; SI-NEXT:    v_mov_b32_e32 v7, s59
 ; SI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v7, s4
-; SI-NEXT:    v_readlane_b32 s4, v62, 2
+; SI-NEXT:    v_mov_b32_e32 v7, s58
+; SI-NEXT:    v_readlane_b32 s4, v62, 0
 ; SI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v7, s4
-; SI-NEXT:    v_readlane_b32 s4, v62, 3
+; SI-NEXT:    v_readlane_b32 s4, v62, 1
 ; SI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v7, s4
-; SI-NEXT:    v_mov_b32_e32 v0, s59
-; SI-NEXT:    v_mov_b32_e32 v1, s58
-; SI-NEXT:    v_mov_b32_e32 v2, s57
-; SI-NEXT:    v_mov_b32_e32 v3, s56
-; SI-NEXT:    v_mov_b32_e32 v4, s99
-; SI-NEXT:    v_mov_b32_e32 v5, s98
-; SI-NEXT:    v_mov_b32_e32 v6, s97
-; SI-NEXT:    v_mov_b32_e32 v39, s96
-; SI-NEXT:    v_mov_b32_e32 v38, s87
-; SI-NEXT:    v_mov_b32_e32 v9, s86
-; SI-NEXT:    v_mov_b32_e32 v10, s85
-; SI-NEXT:    v_mov_b32_e32 v11, s84
-; SI-NEXT:    v_mov_b32_e32 v12, s83
-; SI-NEXT:    v_mov_b32_e32 v13, s82
-; SI-NEXT:    v_mov_b32_e32 v14, s81
-; SI-NEXT:    v_mov_b32_e32 v15, s80
-; SI-NEXT:    v_mov_b32_e32 v48, s71
-; SI-NEXT:    v_mov_b32_e32 v17, s70
-; SI-NEXT:    v_mov_b32_e32 v18, s69
-; SI-NEXT:    v_mov_b32_e32 v19, s68
-; SI-NEXT:    v_mov_b32_e32 v20, s67
-; SI-NEXT:    v_mov_b32_e32 v21, s66
-; SI-NEXT:    v_mov_b32_e32 v22, s65
-; SI-NEXT:    v_mov_b32_e32 v23, s64
-; SI-NEXT:    v_mov_b32_e32 v24, s55
-; SI-NEXT:    v_mov_b32_e32 v25, s54
-; SI-NEXT:    v_mov_b32_e32 v26, s53
-; SI-NEXT:    v_mov_b32_e32 v27, s52
-; SI-NEXT:    v_mov_b32_e32 v28, s51
-; SI-NEXT:    v_mov_b32_e32 v29, s50
-; SI-NEXT:    v_mov_b32_e32 v30, s49
-; SI-NEXT:    v_mov_b32_e32 v31, s48
-; SI-NEXT:    v_mov_b32_e32 v32, s39
-; SI-NEXT:    v_mov_b32_e32 v33, s38
-; SI-NEXT:    v_mov_b32_e32 v36, s37
-; SI-NEXT:    v_mov_b32_e32 v37, s36
-; SI-NEXT:    v_mov_b32_e32 v60, s35
-; SI-NEXT:    v_mov_b32_e32 v61, s34
-; SI-NEXT:    v_mov_b32_e32 v58, s31
-; SI-NEXT:    v_mov_b32_e32 v59, s30
+; SI-NEXT:    v_mov_b32_e32 v0, s57
+; SI-NEXT:    v_mov_b32_e32 v1, s56
+; SI-NEXT:    v_mov_b32_e32 v2, s99
+; SI-NEXT:    v_mov_b32_e32 v3, s98
+; SI-NEXT:    v_mov_b32_e32 v4, s97
+; SI-NEXT:    v_mov_b32_e32 v5, s96
+; SI-NEXT:    v_mov_b32_e32 v6, s87
+; SI-NEXT:    v_mov_b32_e32 v39, s86
+; SI-NEXT:    v_mov_b32_e32 v38, s85
+; SI-NEXT:    v_mov_b32_e32 v9, s84
+; SI-NEXT:    v_mov_b32_e32 v10, s83
+; SI-NEXT:    v_mov_b32_e32 v11, s82
+; SI-NEXT:    v_mov_b32_e32 v12, s81
+; SI-NEXT:    v_mov_b32_e32 v13, s80
+; SI-NEXT:    v_mov_b32_e32 v14, s71
+; SI-NEXT:    v_mov_b32_e32 v15, s70
+; SI-NEXT:    v_mov_b32_e32 v48, s69
+; SI-NEXT:    v_mov_b32_e32 v17, s68
+; SI-NEXT:    v_mov_b32_e32 v18, s67
+; SI-NEXT:    v_mov_b32_e32 v19, s66
+; SI-NEXT:    v_mov_b32_e32 v20, s65
+; SI-NEXT:    v_mov_b32_e32 v21, s64
+; SI-NEXT:    v_mov_b32_e32 v22, s55
+; SI-NEXT:    v_mov_b32_e32 v23, s54
+; SI-NEXT:    v_mov_b32_e32 v24, s53
+; SI-NEXT:    v_mov_b32_e32 v25, s52
+; SI-NEXT:    v_mov_b32_e32 v26, s51
+; SI-NEXT:    v_mov_b32_e32 v27, s50
+; SI-NEXT:    v_mov_b32_e32 v28, s49
+; SI-NEXT:    v_mov_b32_e32 v29, s48
+; SI-NEXT:    v_mov_b32_e32 v30, s39
+; SI-NEXT:    v_mov_b32_e32 v31, s38
+; SI-NEXT:    v_mov_b32_e32 v32, s37
+; SI-NEXT:    v_mov_b32_e32 v33, s36
+; SI-NEXT:    v_mov_b32_e32 v36, s35
+; SI-NEXT:    v_mov_b32_e32 v37, s34
+; SI-NEXT:    v_mov_b32_e32 v60, s31
+; SI-NEXT:    v_mov_b32_e32 v61, s30
+; SI-NEXT:    v_mov_b32_e32 v58, vcc_hi
+; SI-NEXT:    v_mov_b32_e32 v59, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v56, s95
 ; SI-NEXT:    v_mov_b32_e32 v57, s94
 ; SI-NEXT:    v_mov_b32_e32 v46, s93
@@ -58677,7 +59050,7 @@ define inreg <64 x bfloat> @bitcast_v32f32_to_v64bf16_scalar(<32 x float> inreg
 ; SI-NEXT:    v_mov_b32_e32 v51, s72
 ; SI-NEXT:    v_mov_b32_e32 v49, s62
 ; SI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
-; SI-NEXT:  .LBB41_5: ; %end
+; SI-NEXT:  .LBB41_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v34, 1.0, v0
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v0
@@ -58936,10 +59309,18 @@ define inreg <64 x bfloat> @bitcast_v32f32_to_v64bf16_scalar(<32 x float> inreg
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_3
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB41_4
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; VI-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; VI-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -58972,10 +59353,8 @@ define inreg <64 x bfloat> @bitcast_v32f32_to_v64bf16_scalar(<32 x float> inreg
 ; VI-NEXT:    v_add_f32_e64 v18, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v17, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v16, s36, 1.0
-; VI-NEXT:    s_branch .LBB41_5
-; VI-NEXT:  .LBB41_3:
-; VI-NEXT:    s_branch .LBB41_2
-; VI-NEXT:  .LBB41_4:
+; VI-NEXT:    s_branch .LBB41_6
+; VI-NEXT:  .LBB41_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v16, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
@@ -59008,7 +59387,7 @@ define inreg <64 x bfloat> @bitcast_v32f32_to_v64bf16_scalar(<32 x float> inreg
 ; VI-NEXT:    v_mov_b32_e32 v29, s49
 ; VI-NEXT:    v_mov_b32_e32 v30, s50
 ; VI-NEXT:    v_mov_b32_e32 v31, s51
-; VI-NEXT:  .LBB41_5: ; %end
+; VI-NEXT:  .LBB41_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 8
 ; VI-NEXT:    v_readlane_b32 s31, v32, 9
 ; VI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -59061,10 +59440,18 @@ define inreg <64 x bfloat> @bitcast_v32f32_to_v64bf16_scalar(<32 x float> inreg
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_4
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -59097,10 +59484,8 @@ define inreg <64 x bfloat> @bitcast_v32f32_to_v64bf16_scalar(<32 x float> inreg
 ; GFX9-NEXT:    v_add_f32_e64 v18, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v17, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v16, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB41_5
-; GFX9-NEXT:  .LBB41_3:
-; GFX9-NEXT:    s_branch .LBB41_2
-; GFX9-NEXT:  .LBB41_4:
+; GFX9-NEXT:    s_branch .LBB41_6
+; GFX9-NEXT:  .LBB41_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
@@ -59133,7 +59518,7 @@ define inreg <64 x bfloat> @bitcast_v32f32_to_v64bf16_scalar(<32 x float> inreg
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s49
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s50
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s51
-; GFX9-NEXT:  .LBB41_5: ; %end
+; GFX9-NEXT:  .LBB41_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s31, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -59187,11 +59572,16 @@ define inreg <64 x bfloat> @bitcast_v32f32_to_v64bf16_scalar(<32 x float> inreg
 ; GFX11-NEXT:    s_mov_b32 s13, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_4
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB41_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v15, s27, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v14, s26, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v13, s25, 1.0
@@ -59225,8 +59615,6 @@ define inreg <64 x bfloat> @bitcast_v32f32_to_v64bf16_scalar(<32 x float> inreg
 ; GFX11-NEXT:    v_add_f32_e64 v17, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v16, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB41_5
-; GFX11-NEXT:  .LBB41_3:
-; GFX11-NEXT:    s_branch .LBB41_2
 ; GFX11-NEXT:  .LBB41_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s36 :: v_dual_mov_b32 v17, s37
@@ -62774,7 +63162,9 @@ define inreg <32 x float> @bitcast_v64bf16_to_v32f32_scalar(<64 x bfloat> inreg
 ; SI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:144 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:148 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v57, off, s[0:3], s32 offset:152 ; 4-byte Folded Reload
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_mov_b32_e32 v33, v56
 ; SI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:156 ; 4-byte Folded Reload
@@ -62791,7 +63181,7 @@ define inreg <32 x float> @bitcast_v64bf16_to_v32f32_scalar(<64 x bfloat> inreg
 ; SI-NEXT:    v_mov_b32_e32 v40, v56
 ; SI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:180 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v57, off, s[0:3], s32 offset:184 ; 4-byte Folded Reload
-; SI-NEXT:    s_cbranch_vccnz .LBB43_5
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
 ; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:328 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:332 ; 4-byte Folded Reload
@@ -63161,10 +63551,18 @@ define inreg <32 x float> @bitcast_v64bf16_to_v32f32_scalar(<64 x bfloat> inreg
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_3
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB43_4
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v32, 0x40c00000
 ; VI-NEXT:    s_lshl_b32 s4, s50, 16
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v32
@@ -63757,10 +64155,8 @@ define inreg <32 x float> @bitcast_v64bf16_to_v32f32_scalar(<64 x bfloat> inreg
 ; VI-NEXT:    v_cndmask_b32_e32 v31, v32, v34, vcc
 ; VI-NEXT:    v_lshrrev_b32_e32 v32, 16, v33
 ; VI-NEXT:    v_lshrrev_b64 v[31:32], 16, v[31:32]
-; VI-NEXT:    s_branch .LBB43_5
-; VI-NEXT:  .LBB43_3:
-; VI-NEXT:    s_branch .LBB43_2
-; VI-NEXT:  .LBB43_4:
+; VI-NEXT:    s_branch .LBB43_6
+; VI-NEXT:  .LBB43_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -63793,7 +64189,7 @@ define inreg <32 x float> @bitcast_v64bf16_to_v32f32_scalar(<64 x bfloat> inreg
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB43_5: ; %end
+; VI-NEXT:  .LBB43_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v35, 15
 ; VI-NEXT:    v_readlane_b32 s66, v35, 14
 ; VI-NEXT:    v_readlane_b32 s65, v35, 13
@@ -63872,10 +64268,18 @@ define inreg <32 x float> @bitcast_v64bf16_to_v32f32_scalar(<64 x bfloat> inreg
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s51, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v16, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v16
@@ -64486,10 +64890,8 @@ define inreg <32 x float> @bitcast_v64bf16_to_v32f32_scalar(<64 x bfloat> inreg
 ; GFX9-NEXT:    v_and_b32_sdwa v16, v32, v16 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v32, 16, v33
 ; GFX9-NEXT:    v_lshl_or_b32 v16, v32, 16, v16
-; GFX9-NEXT:    s_branch .LBB43_5
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:    s_branch .LBB43_6
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -64522,7 +64924,7 @@ define inreg <32 x float> @bitcast_v64bf16_to_v32f32_scalar(<64 x bfloat> inreg
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB43_5: ; %end
+; GFX9-NEXT:  .LBB43_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v36, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v36, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v36, 13
@@ -64602,11 +65004,16 @@ define inreg <32 x float> @bitcast_v64bf16_to_v32f32_scalar(<64 x bfloat> inreg
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s37, s1
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-TRUE16-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:  .LBB43_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s0, s51, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s51, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -65229,8 +65636,6 @@ define inreg <32 x float> @bitcast_v64bf16_to_v32f32_scalar(<64 x bfloat> inreg
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v16, 16, v34
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v16.h, v33.l
 ; GFX11-TRUE16-NEXT:    s_branch .LBB43_5
-; GFX11-TRUE16-NEXT:  .LBB43_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB43_2
 ; GFX11-TRUE16-NEXT:  .LBB43_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -65328,11 +65733,16 @@ define inreg <32 x float> @bitcast_v64bf16_to_v32f32_scalar(<64 x bfloat> inreg
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s37, s1
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-FAKE16-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:  .LBB43_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_and_b32 s1, s51, 0xffff0000
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s51, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s1
@@ -65986,8 +66396,6 @@ define inreg <32 x float> @bitcast_v64bf16_to_v32f32_scalar(<64 x bfloat> inreg
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v18, v32, 16, v37
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v16, v36, 16, v33
 ; GFX11-FAKE16-NEXT:    s_branch .LBB43_5
-; GFX11-FAKE16-NEXT:  .LBB43_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB43_2
 ; GFX11-FAKE16-NEXT:  .LBB43_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -66555,7 +66963,7 @@ define inreg <64 x half> @bitcast_v32f32_to_v64f16_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s45, v1
 ; SI-NEXT:    s_cmp_lg_u32 s44, 0
 ; SI-NEXT:    v_readfirstlane_b32 s44, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_3
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s69, s5, 16
 ; SI-NEXT:    s_lshr_b32 s68, s7, 16
@@ -66573,9 +66981,9 @@ define inreg <64 x half> @bitcast_v32f32_to_v64f16_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s48, s21, 16
 ; SI-NEXT:    s_lshr_b32 s39, s19, 16
 ; SI-NEXT:    s_lshr_b32 s38, s17, 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[4:5], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[6:7], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[8:9], 16
+; SI-NEXT:    s_lshr_b64 vcc, s[4:5], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[6:7], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[8:9], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[10:11], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[12:13], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[14:15], 16
@@ -66589,8 +66997,48 @@ define inreg <64 x half> @bitcast_v32f32_to_v64f16_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB45_4
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[36:37], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[36:37], -1
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr65
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; SI-NEXT:    s_cselect_b32 s47, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s47, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v31, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v30, s4, 1.0
 ; SI-NEXT:    v_lshr_b64 v[32:33], v[30:31], 16
@@ -66658,43 +67106,9 @@ define inreg <64 x half> @bitcast_v32f32_to_v64f16_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v61, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v62, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v32, 16, v1
-; SI-NEXT:    s_branch .LBB45_5
-; SI-NEXT:  .LBB45_3:
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr67
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr69
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    s_branch .LBB45_2
-; SI-NEXT:  .LBB45_4:
-; SI-NEXT:    v_mov_b32_e32 v33, s30
+; SI-NEXT:    s_branch .LBB45_6
+; SI-NEXT:  .LBB45_5:
+; SI-NEXT:    v_mov_b32_e32 v33, vcc_lo
 ; SI-NEXT:    buffer_store_dword v33, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v34, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
@@ -66747,9 +67161,9 @@ define inreg <64 x half> @bitcast_v32f32_to_v64f16_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v41, s68
 ; SI-NEXT:    v_mov_b32_e32 v55, s69
 ; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_mov_b32_e32 v33, s34
+; SI-NEXT:    v_mov_b32_e32 v33, s30
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v34, s36
+; SI-NEXT:    v_mov_b32_e32 v34, s34
 ; SI-NEXT:    v_mov_b32_e32 v35, s46
 ; SI-NEXT:    v_mov_b32_e32 v36, s56
 ; SI-NEXT:    v_mov_b32_e32 v37, s58
@@ -66763,7 +67177,7 @@ define inreg <64 x half> @bitcast_v32f32_to_v64f16_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v54, s90
 ; SI-NEXT:    v_mov_b32_e32 v39, s92
 ; SI-NEXT:    v_mov_b32_e32 v40, s94
-; SI-NEXT:  .LBB45_5: ; %end
+; SI-NEXT:  .LBB45_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v32, 16, v32
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v32
@@ -66942,10 +67356,18 @@ define inreg <64 x half> @bitcast_v32f32_to_v64f16_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_3
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB45_4
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; VI-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; VI-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -66978,10 +67400,8 @@ define inreg <64 x half> @bitcast_v32f32_to_v64f16_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v18, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v17, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v16, s36, 1.0
-; VI-NEXT:    s_branch .LBB45_5
-; VI-NEXT:  .LBB45_3:
-; VI-NEXT:    s_branch .LBB45_2
-; VI-NEXT:  .LBB45_4:
+; VI-NEXT:    s_branch .LBB45_6
+; VI-NEXT:  .LBB45_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v16, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
@@ -67014,7 +67434,7 @@ define inreg <64 x half> @bitcast_v32f32_to_v64f16_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s49
 ; VI-NEXT:    v_mov_b32_e32 v30, s50
 ; VI-NEXT:    v_mov_b32_e32 v31, s51
-; VI-NEXT:  .LBB45_5: ; %end
+; VI-NEXT:  .LBB45_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 8
 ; VI-NEXT:    v_readlane_b32 s31, v32, 9
 ; VI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -67067,10 +67487,18 @@ define inreg <64 x half> @bitcast_v32f32_to_v64f16_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_4
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -67103,10 +67531,8 @@ define inreg <64 x half> @bitcast_v32f32_to_v64f16_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v18, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v17, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v16, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB45_5
-; GFX9-NEXT:  .LBB45_3:
-; GFX9-NEXT:    s_branch .LBB45_2
-; GFX9-NEXT:  .LBB45_4:
+; GFX9-NEXT:    s_branch .LBB45_6
+; GFX9-NEXT:  .LBB45_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
@@ -67139,7 +67565,7 @@ define inreg <64 x half> @bitcast_v32f32_to_v64f16_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s49
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s50
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s51
-; GFX9-NEXT:  .LBB45_5: ; %end
+; GFX9-NEXT:  .LBB45_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s31, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -67193,11 +67619,16 @@ define inreg <64 x half> @bitcast_v32f32_to_v64f16_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s13, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_4
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB45_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v15, s27, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v14, s26, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v13, s25, 1.0
@@ -67231,8 +67662,6 @@ define inreg <64 x half> @bitcast_v32f32_to_v64f16_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v17, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v16, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB45_5
-; GFX11-NEXT:  .LBB45_3:
-; GFX11-NEXT:    s_branch .LBB45_2
 ; GFX11-NEXT:  .LBB45_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s36 :: v_dual_mov_b32 v17, s37
@@ -68286,10 +68715,7 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v34, s30, 34
 ; SI-NEXT:    v_writelane_b32 v34, s31, 35
 ; SI-NEXT:    v_readfirstlane_b32 s6, v17
-; SI-NEXT:    s_lshr_b32 vcc_lo, s6, 16
 ; SI-NEXT:    v_readfirstlane_b32 s8, v16
-; SI-NEXT:    ; implicit-def: $vgpr35 : SGPR spill to VGPR lane
-; SI-NEXT:    s_lshr_b32 vcc_hi, s8, 16
 ; SI-NEXT:    v_readfirstlane_b32 s10, v15
 ; SI-NEXT:    v_readfirstlane_b32 s12, v14
 ; SI-NEXT:    v_readfirstlane_b32 s14, v13
@@ -68301,29 +68727,29 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s90, v7
 ; SI-NEXT:    v_readfirstlane_b32 s92, v6
 ; SI-NEXT:    v_readfirstlane_b32 s94, v5
-; SI-NEXT:    v_readfirstlane_b32 s30, v4
-; SI-NEXT:    v_readfirstlane_b32 s34, v3
-; SI-NEXT:    v_readfirstlane_b32 s68, v2
-; SI-NEXT:    v_readfirstlane_b32 s80, v1
-; SI-NEXT:    v_readfirstlane_b32 s83, v0
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v35, vcc_lo, 0
-; SI-NEXT:    s_lshr_b32 s69, s29, 16
-; SI-NEXT:    s_lshr_b32 s71, s28, 16
-; SI-NEXT:    s_lshr_b32 s82, s27, 16
-; SI-NEXT:    s_lshr_b32 s85, s26, 16
-; SI-NEXT:    s_lshr_b32 s86, s25, 16
-; SI-NEXT:    s_lshr_b32 s87, s24, 16
-; SI-NEXT:    s_lshr_b32 s96, s23, 16
-; SI-NEXT:    s_lshr_b32 s97, s22, 16
-; SI-NEXT:    s_lshr_b32 s98, s21, 16
-; SI-NEXT:    s_lshr_b32 s99, s20, 16
-; SI-NEXT:    s_lshr_b32 s7, s19, 16
-; SI-NEXT:    s_lshr_b32 s9, s18, 16
-; SI-NEXT:    s_lshr_b32 s11, s17, 16
-; SI-NEXT:    s_lshr_b32 s13, s16, 16
-; SI-NEXT:    s_lshr_b32 s65, s10, 16
-; SI-NEXT:    s_lshr_b32 s64, s12, 16
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v4
+; SI-NEXT:    v_readfirstlane_b32 s30, v3
+; SI-NEXT:    v_readfirstlane_b32 s34, v2
+; SI-NEXT:    v_readfirstlane_b32 s70, v1
+; SI-NEXT:    v_readfirstlane_b32 s81, v0
+; SI-NEXT:    s_lshr_b32 s35, s29, 16
+; SI-NEXT:    s_lshr_b32 s69, s28, 16
+; SI-NEXT:    s_lshr_b32 s80, s27, 16
+; SI-NEXT:    s_lshr_b32 s83, s26, 16
+; SI-NEXT:    s_lshr_b32 s84, s25, 16
+; SI-NEXT:    s_lshr_b32 s85, s24, 16
+; SI-NEXT:    s_lshr_b32 s86, s23, 16
+; SI-NEXT:    s_lshr_b32 s87, s22, 16
+; SI-NEXT:    s_lshr_b32 s96, s21, 16
+; SI-NEXT:    s_lshr_b32 s97, s20, 16
+; SI-NEXT:    s_lshr_b32 s98, s19, 16
+; SI-NEXT:    s_lshr_b32 s99, s18, 16
+; SI-NEXT:    s_lshr_b32 s7, s17, 16
+; SI-NEXT:    s_lshr_b32 s9, s16, 16
+; SI-NEXT:    s_lshr_b32 s67, s6, 16
+; SI-NEXT:    s_lshr_b32 s66, s8, 16
+; SI-NEXT:    s_lshr_b32 s11, s10, 16
+; SI-NEXT:    s_lshr_b32 s13, s12, 16
 ; SI-NEXT:    s_lshr_b32 s15, s14, 16
 ; SI-NEXT:    s_lshr_b32 s73, s72, 16
 ; SI-NEXT:    s_lshr_b32 s75, s74, 16
@@ -68333,74 +68759,75 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s91, s90, 16
 ; SI-NEXT:    s_lshr_b32 s93, s92, 16
 ; SI-NEXT:    s_lshr_b32 s95, s94, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, vcc_lo, 16
 ; SI-NEXT:    s_lshr_b32 s31, s30, 16
-; SI-NEXT:    s_lshr_b32 s35, s34, 16
-; SI-NEXT:    s_lshr_b32 s70, s68, 16
-; SI-NEXT:    s_lshr_b32 s81, s80, 16
-; SI-NEXT:    s_lshr_b32 s84, s83, 16
+; SI-NEXT:    s_lshr_b32 s68, s34, 16
+; SI-NEXT:    s_lshr_b32 s71, s70, 16
+; SI-NEXT:    s_lshr_b32 s82, s81, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v35, vcc_hi, 1
+; SI-NEXT:    ; implicit-def: $vgpr35 : SGPR spill to VGPR lane
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_writelane_b32 v35, s65, 2
-; SI-NEXT:    v_writelane_b32 v35, s64, 3
-; SI-NEXT:    s_cbranch_scc0 .LBB47_3
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v35, s67, 0
+; SI-NEXT:    v_writelane_b32 v35, s66, 1
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s13, 16
+; SI-NEXT:    s_lshl_b32 s5, s9, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s9, 16
+; SI-NEXT:    s_lshl_b32 s5, s99, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s7, 16
+; SI-NEXT:    s_lshl_b32 s5, s98, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s11, 16
+; SI-NEXT:    s_lshl_b32 s41, s7, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s48, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_and_b32 s4, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
-; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s34, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
-; SI-NEXT:    s_or_b32 s53, s4, s5
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s30, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_or_b32 s53, s4, s5
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s54, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -68430,22 +68857,31 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s12, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s64, 16
+; SI-NEXT:    s_lshl_b32 s5, s13, 16
 ; SI-NEXT:    s_or_b32 s64, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s10, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s65, 16
+; SI-NEXT:    s_lshl_b32 s5, s11, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s8, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
+; SI-NEXT:    s_lshl_b32 s5, s66, 16
 ; SI-NEXT:    s_or_b32 s66, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
+; SI-NEXT:    s_lshl_b32 s5, s67, 16
 ; SI-NEXT:    s_or_b32 s67, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB47_4
-; SI-NEXT:  .LBB47_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s13
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s9
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s11
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s7
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -68457,7 +68893,7 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s18
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s9
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s99
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -68465,11 +68901,11 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s7
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, s98
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v4, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s19
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s99
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s97
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -68480,7 +68916,7 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s20
 ; SI-NEXT:    v_or_b32_e32 v3, v4, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s98
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s96
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
@@ -68489,11 +68925,11 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s97
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s87
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s22
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s96
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s86
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
@@ -68504,7 +68940,7 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s23
 ; SI-NEXT:    v_or_b32_e32 v6, v7, v6
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s87
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s85
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s24
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
@@ -68513,11 +68949,11 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s86
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s84
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_or_b32_e32 v8, v10, v8
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s25
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s85
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, s83
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
@@ -68528,7 +68964,7 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s26
 ; SI-NEXT:    v_or_b32_e32 v9, v10, v9
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v11
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, s80
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s27
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
@@ -68537,11 +68973,11 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
 ; SI-NEXT:    v_cvt_f16_f32_e32 v13, v13
 ; SI-NEXT:    v_or_b32_e32 v10, v12, v10
-; SI-NEXT:    v_cvt_f32_f16_e32 v12, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v12, s69
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
 ; SI-NEXT:    v_or_b32_e32 v11, v13, v11
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s28
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s35
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
@@ -68552,8 +68988,8 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v15, s29
 ; SI-NEXT:    v_or_b32_e32 v12, v13, v12
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v14
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s84
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s83
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s81
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
@@ -68561,11 +68997,11 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
 ; SI-NEXT:    v_or_b32_e32 v13, v15, v13
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s71
 ; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
 ; SI-NEXT:    v_or_b32_e32 v14, v16, v14
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s80
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, s68
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
@@ -68573,11 +69009,11 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v17, v17
 ; SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
-; SI-NEXT:    v_cvt_f32_f16_e32 v18, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v18, s34
 ; SI-NEXT:    v_or_b32_e32 v15, v16, v15
 ; SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v17
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s35
-; SI-NEXT:    v_cvt_f32_f16_e32 v19, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v19, s30
 ; SI-NEXT:    v_add_f32_e32 v18, 0x38000000, v18
 ; SI-NEXT:    v_cvt_f16_f32_e32 v18, v18
 ; SI-NEXT:    v_add_f32_e32 v17, 0x38000000, v17
@@ -68585,10 +69021,10 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v19, 0x38000000, v19
 ; SI-NEXT:    v_cvt_f16_f32_e32 v19, v19
 ; SI-NEXT:    v_or_b32_e32 v16, v18, v16
-; SI-NEXT:    v_cvt_f32_f16_e32 v18, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v18, vcc_hi
 ; SI-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
 ; SI-NEXT:    v_or_b32_e32 v17, v19, v17
-; SI-NEXT:    v_cvt_f32_f16_e32 v19, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v19, vcc_lo
 ; SI-NEXT:    v_cvt_f32_f16_e32 v20, s95
 ; SI-NEXT:    v_add_f32_e32 v18, 0x38000000, v18
 ; SI-NEXT:    v_cvt_f16_f32_e32 v18, v18
@@ -68659,10 +69095,9 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v25, v27, v25
 ; SI-NEXT:    v_cvt_f32_f16_e32 v27, s15
 ; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v26
-; SI-NEXT:    v_readlane_b32 s4, v35, 3
 ; SI-NEXT:    v_or_b32_e32 v26, v28, v26
 ; SI-NEXT:    v_cvt_f32_f16_e32 v28, s14
-; SI-NEXT:    v_cvt_f32_f16_e32 v29, s4
+; SI-NEXT:    v_cvt_f32_f16_e32 v29, s13
 ; SI-NEXT:    v_add_f32_e32 v27, 0x38000000, v27
 ; SI-NEXT:    v_cvt_f16_f32_e32 v27, v27
 ; SI-NEXT:    v_add_f32_e32 v28, 0x38000000, v28
@@ -68670,11 +69105,10 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f16_f32_e32 v28, v28
 ; SI-NEXT:    v_cvt_f16_f32_e32 v29, v29
 ; SI-NEXT:    v_lshlrev_b32_e32 v27, 16, v27
-; SI-NEXT:    v_readlane_b32 s4, v35, 2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v30, s12
 ; SI-NEXT:    v_or_b32_e32 v27, v28, v27
 ; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v29
-; SI-NEXT:    v_cvt_f32_f16_e32 v29, s4
+; SI-NEXT:    v_cvt_f32_f16_e32 v29, s11
 ; SI-NEXT:    v_cvt_f32_f16_e32 v31, s10
 ; SI-NEXT:    v_add_f32_e32 v30, 0x38000000, v30
 ; SI-NEXT:    v_cvt_f16_f32_e32 v30, v30
@@ -68703,11 +69137,8 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v30, v31, v30
 ; SI-NEXT:    v_lshlrev_b32_e32 v31, 16, v32
 ; SI-NEXT:    v_or_b32_e32 v31, v33, v31
-; SI-NEXT:    s_branch .LBB47_5
-; SI-NEXT:  .LBB47_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB47_2
-; SI-NEXT:  .LBB47_4:
+; SI-NEXT:    s_branch .LBB47_6
+; SI-NEXT:  .LBB47_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -68740,7 +69171,7 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB47_5: ; %end
+; SI-NEXT:  .LBB47_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s30, v34, 34
 ; SI-NEXT:    v_readlane_b32 s31, v34, 35
 ; SI-NEXT:    v_readlane_b32 s99, v34, 33
@@ -68840,10 +69271,18 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s51, 16
 ; VI-NEXT:    v_mov_b32_e32 v16, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
@@ -69005,10 +69444,8 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_sdwa v32, v32, v16 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v16, s52, v16
 ; VI-NEXT:    v_or_b32_e32 v16, v16, v32
-; VI-NEXT:    s_branch .LBB47_5
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:    s_branch .LBB47_6
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -69041,7 +69478,7 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB47_5: ; %end
+; VI-NEXT:  .LBB47_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v33, 15
 ; VI-NEXT:    v_readlane_b32 s66, v33, 14
 ; VI-NEXT:    v_readlane_b32 s65, v33, 13
@@ -69120,10 +69557,18 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v16, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v15, s51, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v14, s50, v16 op_sel_hi:[1,0]
@@ -69157,10 +69602,8 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v18, s54, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v17, s53, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v16, s52, v16 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB47_5
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:    s_branch .LBB47_6
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -69193,7 +69636,7 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB47_5: ; %end
+; GFX9-NEXT:  .LBB47_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v32, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v32, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
@@ -69273,11 +69716,16 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB47_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v15, 0x200, s51 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v14, 0x200, s50 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s49 op_sel_hi:[0,1]
@@ -69311,8 +69759,6 @@ define inreg <32 x float> @bitcast_v64f16_to_v32f32_scalar(<64 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v17, 0x200, s53 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v16, 0x200, s52 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_branch .LBB47_5
-; GFX11-NEXT:  .LBB47_3:
-; GFX11-NEXT:    s_branch .LBB47_2
 ; GFX11-NEXT:  .LBB47_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -69880,7 +70326,7 @@ define inreg <64 x i16> @bitcast_v32f32_to_v64i16_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s45, v1
 ; SI-NEXT:    s_cmp_lg_u32 s44, 0
 ; SI-NEXT:    v_readfirstlane_b32 s44, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_3
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s69, s5, 16
 ; SI-NEXT:    s_lshr_b32 s68, s7, 16
@@ -69898,9 +70344,9 @@ define inreg <64 x i16> @bitcast_v32f32_to_v64i16_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s48, s21, 16
 ; SI-NEXT:    s_lshr_b32 s39, s19, 16
 ; SI-NEXT:    s_lshr_b32 s38, s17, 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[4:5], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[6:7], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[8:9], 16
+; SI-NEXT:    s_lshr_b64 vcc, s[4:5], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[6:7], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[8:9], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[10:11], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[12:13], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[14:15], 16
@@ -69914,8 +70360,48 @@ define inreg <64 x i16> @bitcast_v32f32_to_v64i16_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB49_4
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[36:37], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[36:37], -1
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr65
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; SI-NEXT:    s_cselect_b32 s47, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s47, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v31, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v30, s4, 1.0
 ; SI-NEXT:    v_lshr_b64 v[32:33], v[30:31], 16
@@ -69983,43 +70469,9 @@ define inreg <64 x i16> @bitcast_v32f32_to_v64i16_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v61, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v62, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v32, 16, v1
-; SI-NEXT:    s_branch .LBB49_5
-; SI-NEXT:  .LBB49_3:
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr67
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr69
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    s_branch .LBB49_2
-; SI-NEXT:  .LBB49_4:
-; SI-NEXT:    v_mov_b32_e32 v33, s30
+; SI-NEXT:    s_branch .LBB49_6
+; SI-NEXT:  .LBB49_5:
+; SI-NEXT:    v_mov_b32_e32 v33, vcc_lo
 ; SI-NEXT:    buffer_store_dword v33, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v34, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
@@ -70072,9 +70524,9 @@ define inreg <64 x i16> @bitcast_v32f32_to_v64i16_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v41, s68
 ; SI-NEXT:    v_mov_b32_e32 v55, s69
 ; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_mov_b32_e32 v33, s34
+; SI-NEXT:    v_mov_b32_e32 v33, s30
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v34, s36
+; SI-NEXT:    v_mov_b32_e32 v34, s34
 ; SI-NEXT:    v_mov_b32_e32 v35, s46
 ; SI-NEXT:    v_mov_b32_e32 v36, s56
 ; SI-NEXT:    v_mov_b32_e32 v37, s58
@@ -70088,7 +70540,7 @@ define inreg <64 x i16> @bitcast_v32f32_to_v64i16_scalar(<32 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v54, s90
 ; SI-NEXT:    v_mov_b32_e32 v39, s92
 ; SI-NEXT:    v_mov_b32_e32 v40, s94
-; SI-NEXT:  .LBB49_5: ; %end
+; SI-NEXT:  .LBB49_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v32, 16, v32
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v32
@@ -70267,10 +70719,18 @@ define inreg <64 x i16> @bitcast_v32f32_to_v64i16_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_3
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB49_4
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; VI-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; VI-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -70303,10 +70763,8 @@ define inreg <64 x i16> @bitcast_v32f32_to_v64i16_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v18, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v17, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v16, s36, 1.0
-; VI-NEXT:    s_branch .LBB49_5
-; VI-NEXT:  .LBB49_3:
-; VI-NEXT:    s_branch .LBB49_2
-; VI-NEXT:  .LBB49_4:
+; VI-NEXT:    s_branch .LBB49_6
+; VI-NEXT:  .LBB49_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v16, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
@@ -70339,7 +70797,7 @@ define inreg <64 x i16> @bitcast_v32f32_to_v64i16_scalar(<32 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s49
 ; VI-NEXT:    v_mov_b32_e32 v30, s50
 ; VI-NEXT:    v_mov_b32_e32 v31, s51
-; VI-NEXT:  .LBB49_5: ; %end
+; VI-NEXT:  .LBB49_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 8
 ; VI-NEXT:    v_readlane_b32 s31, v32, 9
 ; VI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -70392,10 +70850,18 @@ define inreg <64 x i16> @bitcast_v32f32_to_v64i16_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -70428,10 +70894,8 @@ define inreg <64 x i16> @bitcast_v32f32_to_v64i16_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v18, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v17, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v16, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB49_5
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:    s_branch .LBB49_6
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
@@ -70464,7 +70928,7 @@ define inreg <64 x i16> @bitcast_v32f32_to_v64i16_scalar(<32 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s49
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s50
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s51
-; GFX9-NEXT:  .LBB49_5: ; %end
+; GFX9-NEXT:  .LBB49_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s31, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -70518,11 +70982,16 @@ define inreg <64 x i16> @bitcast_v32f32_to_v64i16_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s13, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB49_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB49_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB49_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB49_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v15, s27, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v14, s26, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v13, s25, 1.0
@@ -70556,8 +71025,6 @@ define inreg <64 x i16> @bitcast_v32f32_to_v64i16_scalar(<32 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v17, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v16, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB49_5
-; GFX11-NEXT:  .LBB49_3:
-; GFX11-NEXT:    s_branch .LBB49_2
 ; GFX11-NEXT:  .LBB49_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s36 :: v_dual_mov_b32 v17, s37
@@ -71440,13 +71907,10 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v32, s99, 33
 ; SI-NEXT:    v_writelane_b32 v32, s30, 34
 ; SI-NEXT:    v_writelane_b32 v32, s31, 35
-; SI-NEXT:    v_readfirstlane_b32 s9, v16
-; SI-NEXT:    s_lshr_b32 s14, s9, 16
-; SI-NEXT:    v_readfirstlane_b32 s13, v14
-; SI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; SI-NEXT:    v_readfirstlane_b32 s7, v17
+; SI-NEXT:    v_readfirstlane_b32 s9, v16
 ; SI-NEXT:    v_readfirstlane_b32 s11, v15
-; SI-NEXT:    s_lshr_b32 s72, s13, 16
+; SI-NEXT:    v_readfirstlane_b32 s13, v14
 ; SI-NEXT:    v_readfirstlane_b32 s15, v13
 ; SI-NEXT:    v_readfirstlane_b32 s73, v12
 ; SI-NEXT:    v_readfirstlane_b32 s75, v11
@@ -71455,30 +71919,30 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s89, v8
 ; SI-NEXT:    v_readfirstlane_b32 s91, v7
 ; SI-NEXT:    v_readfirstlane_b32 s94, v6
-; SI-NEXT:    v_readfirstlane_b32 s31, v5
-; SI-NEXT:    v_readfirstlane_b32 s68, v4
-; SI-NEXT:    v_readfirstlane_b32 s80, v3
-; SI-NEXT:    v_readfirstlane_b32 s83, v2
-; SI-NEXT:    v_readfirstlane_b32 s86, v1
-; SI-NEXT:    v_readfirstlane_b32 s97, v0
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v33, s14, 0
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v5
+; SI-NEXT:    v_readfirstlane_b32 s34, v4
+; SI-NEXT:    v_readfirstlane_b32 s70, v3
+; SI-NEXT:    v_readfirstlane_b32 s81, v2
+; SI-NEXT:    v_readfirstlane_b32 s84, v1
+; SI-NEXT:    v_readfirstlane_b32 s87, v0
 ; SI-NEXT:    s_lshr_b32 s92, s29, 16
 ; SI-NEXT:    s_lshr_b32 s95, s28, 16
-; SI-NEXT:    s_lshr_b32 s34, s27, 16
-; SI-NEXT:    s_lshr_b32 s69, s26, 16
-; SI-NEXT:    s_lshr_b32 s71, s25, 16
-; SI-NEXT:    s_lshr_b32 s81, s24, 16
-; SI-NEXT:    s_lshr_b32 s84, s23, 16
-; SI-NEXT:    s_lshr_b32 s87, s22, 16
-; SI-NEXT:    s_lshr_b32 s98, s21, 16
-; SI-NEXT:    s_lshr_b32 s99, s20, 16
-; SI-NEXT:    s_lshr_b32 s6, s19, 16
-; SI-NEXT:    s_lshr_b32 s8, s18, 16
-; SI-NEXT:    s_lshr_b32 s10, s17, 16
-; SI-NEXT:    s_lshr_b32 s12, s16, 16
-; SI-NEXT:    s_lshr_b32 vcc_lo, s7, 16
-; SI-NEXT:    s_lshr_b32 vcc_hi, s11, 16
+; SI-NEXT:    s_lshr_b32 s30, s27, 16
+; SI-NEXT:    s_lshr_b32 s35, s26, 16
+; SI-NEXT:    s_lshr_b32 s69, s25, 16
+; SI-NEXT:    s_lshr_b32 s71, s24, 16
+; SI-NEXT:    s_lshr_b32 s82, s23, 16
+; SI-NEXT:    s_lshr_b32 s85, s22, 16
+; SI-NEXT:    s_lshr_b32 s96, s21, 16
+; SI-NEXT:    s_lshr_b32 s97, s20, 16
+; SI-NEXT:    s_lshr_b32 s98, s19, 16
+; SI-NEXT:    s_lshr_b32 s99, s18, 16
+; SI-NEXT:    s_lshr_b32 s6, s17, 16
+; SI-NEXT:    s_lshr_b32 s8, s16, 16
+; SI-NEXT:    s_lshr_b32 s67, s7, 16
+; SI-NEXT:    s_lshr_b32 s10, s9, 16
+; SI-NEXT:    s_lshr_b32 s12, s11, 16
+; SI-NEXT:    s_lshr_b32 s14, s13, 16
 ; SI-NEXT:    s_lshr_b32 s63, s15, 16
 ; SI-NEXT:    s_lshr_b32 s62, s73, 16
 ; SI-NEXT:    s_lshr_b32 s61, s75, 16
@@ -71487,54 +71951,55 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s88, s89, 16
 ; SI-NEXT:    s_lshr_b32 s90, s91, 16
 ; SI-NEXT:    s_lshr_b32 s93, s94, 16
-; SI-NEXT:    s_lshr_b32 s30, s31, 16
-; SI-NEXT:    s_lshr_b32 s35, s68, 16
-; SI-NEXT:    s_lshr_b32 s70, s80, 16
-; SI-NEXT:    s_lshr_b32 s82, s83, 16
-; SI-NEXT:    s_lshr_b32 s85, s86, 16
-; SI-NEXT:    s_lshr_b32 s96, s97, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, vcc_hi, 16
+; SI-NEXT:    s_lshr_b32 s31, s34, 16
+; SI-NEXT:    s_lshr_b32 s68, s70, 16
+; SI-NEXT:    s_lshr_b32 s80, s81, 16
+; SI-NEXT:    s_lshr_b32 s83, s84, 16
+; SI-NEXT:    s_lshr_b32 s86, s87, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v33, s72, 1
+; SI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_writelane_b32 v33, s63, 2
-; SI-NEXT:    v_writelane_b32 v33, s62, 3
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v33, s14, 0
+; SI-NEXT:    v_writelane_b32 v33, s63, 1
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s12, 16
+; SI-NEXT:    s_lshl_b32 s5, s8, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s8, 16
+; SI-NEXT:    s_lshl_b32 s5, s99, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s6, 16
+; SI-NEXT:    s_lshl_b32 s5, s98, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s10, 16
+; SI-NEXT:    s_lshl_b32 s41, s6, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -71542,23 +72007,23 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s92, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s97, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_and_b32 s4, s87, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s86, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_and_b32 s4, s84, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_and_b32 s4, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s34, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s54, s4, s5
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s55, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -71574,92 +72039,109 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    s_or_b32 s59, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s77, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s60, 16
-; SI-NEXT:    s_mov_b32 s76, s60
+; SI-NEXT:    s_mov_b32 s74, s60
 ; SI-NEXT:    s_or_b32 s60, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s75, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s61, 16
-; SI-NEXT:    s_mov_b32 s74, s61
+; SI-NEXT:    s_mov_b32 s76, s61
 ; SI-NEXT:    s_or_b32 s61, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s73, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s62, 16
+; SI-NEXT:    s_mov_b32 s72, s62
 ; SI-NEXT:    s_or_b32 s62, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s15, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s72, 16
+; SI-NEXT:    s_lshl_b32 s5, s14, 16
 ; SI-NEXT:    s_or_b32 s64, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
+; SI-NEXT:    s_lshl_b32 s5, s12, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s14, 16
+; SI-NEXT:    s_lshl_b32 s5, s10, 16
 ; SI-NEXT:    s_or_b32 s66, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
-; SI-NEXT:    s_mov_b32 s72, vcc_hi
-; SI-NEXT:    s_mov_b32 s14, vcc_lo
+; SI-NEXT:    s_lshl_b32 s5, s67, 16
+; SI-NEXT:    s_mov_b32 s14, s12
+; SI-NEXT:    s_mov_b32 s12, s10
+; SI-NEXT:    s_mov_b32 s10, s67
 ; SI-NEXT:    s_or_b32 s67, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b32 s74, s60
+; SI-NEXT:    s_mov_b32 s76, s61
+; SI-NEXT:    s_mov_b32 s72, s62
+; SI-NEXT:    s_mov_b32 s14, s12
+; SI-NEXT:    s_mov_b32 s12, s10
+; SI-NEXT:    s_mov_b32 s10, s67
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s12, 16
+; SI-NEXT:    s_lshl_b32 s5, s8, 16
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s10, s10, 16
-; SI-NEXT:    s_or_b32 s5, s10, s5
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_add_i32 s37, s5, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s8, 16
+; SI-NEXT:    s_lshl_b32 s5, s99, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s6, 16
+; SI-NEXT:    s_lshl_b32 s5, s98, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s46, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s28, s28, 3
 ; SI-NEXT:    s_add_i32 s47, s4, 0x30000
@@ -71671,35 +72153,35 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s92, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s97, s97, 3
+; SI-NEXT:    s_add_i32 s87, s87, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s97, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_and_b32 s4, s87, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s86, s86, 3
+; SI-NEXT:    s_add_i32 s84, s84, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s86, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_and_b32 s4, s84, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s83, s83, 3
+; SI-NEXT:    s_add_i32 s81, s81, 3
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_and_b32 s4, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s80, s80, 3
+; SI-NEXT:    s_add_i32 s70, s70, 3
 ; SI-NEXT:    s_add_i32 s52, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s68, s68, 3
+; SI-NEXT:    s_add_i32 s34, s34, 3
 ; SI-NEXT:    s_add_i32 s53, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s34, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s31, s31, 3
+; SI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; SI-NEXT:    s_add_i32 s54, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s94, s94, 3
 ; SI-NEXT:    s_add_i32 s55, s4, 0x30000
@@ -71724,27 +72206,26 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    s_add_i32 s77, s77, 3
 ; SI-NEXT:    s_add_i32 s59, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s77, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s76, 16
+; SI-NEXT:    s_lshl_b32 s5, s74, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s75, s75, 3
 ; SI-NEXT:    s_add_i32 s60, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s75, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s74, 16
+; SI-NEXT:    s_lshl_b32 s5, s76, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s73, s73, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 3
 ; SI-NEXT:    s_add_i32 s61, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s73, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s5, 16
+; SI-NEXT:    s_lshl_b32 s5, s72, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s15, s15, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 2
+; SI-NEXT:    v_readlane_b32 s5, v33, 1
 ; SI-NEXT:    s_add_i32 s62, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s15, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s13, s13, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 1
+; SI-NEXT:    v_readlane_b32 s5, v33, 0
 ; SI-NEXT:    s_add_i32 s63, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s13, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
@@ -71752,21 +72233,20 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    s_add_i32 s11, s11, 3
 ; SI-NEXT:    s_add_i32 s64, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s72, 16
+; SI-NEXT:    s_lshl_b32 s5, s14, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s9, s9, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 0
 ; SI-NEXT:    s_add_i32 s65, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s5, 16
+; SI-NEXT:    s_lshl_b32 s5, s12, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s66, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s14, 16
+; SI-NEXT:    s_lshl_b32 s5, s10, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s67, s4, 0x30000
-; SI-NEXT:  .LBB51_3: ; %end
+; SI-NEXT:  .LBB51_5: ; %end
 ; SI-NEXT:    v_readlane_b32 s30, v32, 34
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
@@ -71841,13 +72321,6 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    s_mov_b32 s76, s60
-; SI-NEXT:    s_mov_b32 s74, s61
-; SI-NEXT:    s_mov_b32 s72, vcc_hi
-; SI-NEXT:    s_mov_b32 s14, vcc_lo
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v64i16_to_v32f32_scalar:
 ; VI:       ; %bb.0:
@@ -71872,10 +72345,18 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s46, 3
 ; VI-NEXT:    s_and_b32 s4, s46, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -72036,7 +72517,7 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
-; VI-NEXT:  .LBB51_3: ; %end
+; VI-NEXT:  .LBB51_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -72070,8 +72551,6 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v64i16_to_v32f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -72129,10 +72608,18 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_4
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v15, s51, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v14, s50, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v13, s49, 3 op_sel_hi:[1,0]
@@ -72165,10 +72652,8 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v18, s54, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v16, s52, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB51_5
-; GFX9-NEXT:  .LBB51_3:
-; GFX9-NEXT:    s_branch .LBB51_2
-; GFX9-NEXT:  .LBB51_4:
+; GFX9-NEXT:    s_branch .LBB51_6
+; GFX9-NEXT:  .LBB51_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -72201,7 +72686,7 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB51_5: ; %end
+; GFX9-NEXT:  .LBB51_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v32, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v32, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
@@ -72281,11 +72766,16 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB51_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB51_4
-; GFX11-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB51_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v15, s51, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v14, s50, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v13, s49, 3 op_sel_hi:[1,0]
@@ -72319,8 +72809,6 @@ define inreg <32 x float> @bitcast_v64i16_to_v32f32_scalar(<64 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v16, s52, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_branch .LBB51_5
-; GFX11-NEXT:  .LBB51_3:
-; GFX11-NEXT:    s_branch .LBB51_2
 ; GFX11-NEXT:  .LBB51_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -72628,10 +73116,18 @@ define inreg <16 x double> @bitcast_v16i64_to_v16f64_scalar(<16 x i64> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s46, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s47, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_4
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB53_3
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
@@ -72664,7 +73160,7 @@ define inreg <16 x double> @bitcast_v16i64_to_v16f64_scalar(<16 x i64> inreg %a,
 ; SI-NEXT:    s_addc_u32 s8, s8, 0
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
-; SI-NEXT:  .LBB53_3: ; %end
+; SI-NEXT:  .LBB53_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -72698,8 +73194,6 @@ define inreg <16 x double> @bitcast_v16i64_to_v16f64_scalar(<16 x i64> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v30, s7
 ; SI-NEXT:    v_mov_b32_e32 v31, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB53_4:
-; SI-NEXT:    s_branch .LBB53_2
 ;
 ; VI-LABEL: bitcast_v16i64_to_v16f64_scalar:
 ; VI:       ; %bb.0:
@@ -72724,10 +73218,18 @@ define inreg <16 x double> @bitcast_v16i64_to_v16f64_scalar(<16 x i64> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_4
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB53_3
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -72760,7 +73262,7 @@ define inreg <16 x double> @bitcast_v16i64_to_v16f64_scalar(<16 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s8, s8, 0
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
-; VI-NEXT:  .LBB53_3: ; %end
+; VI-NEXT:  .LBB53_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -72794,8 +73296,6 @@ define inreg <16 x double> @bitcast_v16i64_to_v16f64_scalar(<16 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB53_4:
-; VI-NEXT:    s_branch .LBB53_2
 ;
 ; GFX9-LABEL: bitcast_v16i64_to_v16f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -72820,10 +73320,18 @@ define inreg <16 x double> @bitcast_v16i64_to_v16f64_scalar(<16 x i64> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_3
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -72856,7 +73364,7 @@ define inreg <16 x double> @bitcast_v16i64_to_v16f64_scalar(<16 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s8, s8, 0
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
-; GFX9-NEXT:  .LBB53_3: ; %end
+; GFX9-NEXT:  .LBB53_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -72890,8 +73398,6 @@ define inreg <16 x double> @bitcast_v16i64_to_v16f64_scalar(<16 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB53_4:
-; GFX9-NEXT:    s_branch .LBB53_2
 ;
 ; GFX11-LABEL: bitcast_v16i64_to_v16f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -72913,11 +73419,16 @@ define inreg <16 x double> @bitcast_v16i64_to_v16f64_scalar(<16 x i64> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB53_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB53_3
-; GFX11-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:  .LBB53_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -72950,7 +73461,7 @@ define inreg <16 x double> @bitcast_v16i64_to_v16f64_scalar(<16 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
-; GFX11-NEXT:  .LBB53_3: ; %end
+; GFX11-NEXT:  .LBB53_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -72968,8 +73479,6 @@ define inreg <16 x double> @bitcast_v16i64_to_v16f64_scalar(<16 x i64> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s7 :: v_dual_mov_b32 v29, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v30, s5 :: v_dual_mov_b32 v31, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB53_4:
-; GFX11-NEXT:    s_branch .LBB53_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -73200,10 +73709,18 @@ define inreg <16 x i64> @bitcast_v16f64_to_v16i64_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -73220,10 +73737,8 @@ define inreg <16 x i64> @bitcast_v16f64_to_v16i64_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; SI-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; SI-NEXT:    v_add_f64 v[30:31], s[66:67], 1.0
-; SI-NEXT:    s_branch .LBB55_5
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:    s_branch .LBB55_6
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -73256,7 +73771,7 @@ define inreg <16 x i64> @bitcast_v16f64_to_v16i64_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB55_5: ; %end
+; SI-NEXT:  .LBB55_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s67, v32, 15
 ; SI-NEXT:    v_readlane_b32 s66, v32, 14
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -73335,10 +73850,18 @@ define inreg <16 x i64> @bitcast_v16f64_to_v16i64_scalar(<16 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -73355,10 +73878,8 @@ define inreg <16 x i64> @bitcast_v16f64_to_v16i64_scalar(<16 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; VI-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; VI-NEXT:    v_add_f64 v[30:31], s[66:67], 1.0
-; VI-NEXT:    s_branch .LBB55_5
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:    s_branch .LBB55_6
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -73391,7 +73912,7 @@ define inreg <16 x i64> @bitcast_v16f64_to_v16i64_scalar(<16 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB55_5: ; %end
+; VI-NEXT:  .LBB55_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v32, 15
 ; VI-NEXT:    v_readlane_b32 s66, v32, 14
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -73470,10 +73991,18 @@ define inreg <16 x i64> @bitcast_v16f64_to_v16i64_scalar(<16 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -73490,10 +74019,8 @@ define inreg <16 x i64> @bitcast_v16f64_to_v16i64_scalar(<16 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; GFX9-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; GFX9-NEXT:    v_add_f64 v[30:31], s[66:67], 1.0
-; GFX9-NEXT:    s_branch .LBB55_5
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:    s_branch .LBB55_6
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -73526,7 +74053,7 @@ define inreg <16 x i64> @bitcast_v16f64_to_v16i64_scalar(<16 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB55_5: ; %end
+; GFX9-NEXT:  .LBB55_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v32, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v32, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
@@ -73606,11 +74133,16 @@ define inreg <16 x i64> @bitcast_v16f64_to_v16i64_scalar(<16 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -73628,8 +74160,6 @@ define inreg <16 x i64> @bitcast_v16f64_to_v16i64_scalar(<16 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; GFX11-NEXT:    v_add_f64 v[30:31], s[66:67], 1.0
 ; GFX11-NEXT:    s_branch .LBB55_5
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -77726,179 +78256,179 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s45, v2
 ; SI-NEXT:    s_cmp_lg_u32 s44, 0
 ; SI-NEXT:    v_readfirstlane_b32 s44, v1
-; SI-NEXT:    ; implicit-def: $vgpr22 : SGPR spill to VGPR lane
 ; SI-NEXT:    ; implicit-def: $vgpr21 : SGPR spill to VGPR lane
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    ; implicit-def: $vgpr22 : SGPR spill to VGPR lane
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s46, s5, 24
+; SI-NEXT:    s_lshr_b32 s46, s21, 24
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v22, s46, 46
-; SI-NEXT:    s_lshr_b32 s46, s5, 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 47
-; SI-NEXT:    s_lshr_b32 s46, s5, 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 48
-; SI-NEXT:    s_lshr_b32 s46, s7, 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 49
-; SI-NEXT:    s_lshr_b32 s46, s7, 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 50
-; SI-NEXT:    s_lshr_b32 s46, s7, 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 51
-; SI-NEXT:    s_lshr_b32 s46, s9, 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 52
-; SI-NEXT:    s_lshr_b32 s46, s9, 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 53
-; SI-NEXT:    s_lshr_b32 s46, s9, 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 54
-; SI-NEXT:    s_lshr_b32 s46, s11, 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 55
-; SI-NEXT:    s_lshr_b32 s46, s11, 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 56
-; SI-NEXT:    s_lshr_b32 s46, s11, 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 57
-; SI-NEXT:    s_lshr_b32 s46, s13, 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 58
-; SI-NEXT:    s_lshr_b32 s46, s13, 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 59
-; SI-NEXT:    s_lshr_b32 s46, s13, 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 60
-; SI-NEXT:    s_lshr_b32 s46, s15, 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 61
-; SI-NEXT:    s_lshr_b32 s46, s15, 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 62
-; SI-NEXT:    s_lshr_b32 s46, s15, 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 63
-; SI-NEXT:    s_lshr_b32 s46, s41, 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 0
-; SI-NEXT:    s_lshr_b32 s46, s41, 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 1
-; SI-NEXT:    s_lshr_b32 s46, s41, 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 2
-; SI-NEXT:    s_lshr_b32 s46, s43, 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 3
-; SI-NEXT:    s_lshr_b32 s46, s43, 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 4
-; SI-NEXT:    s_lshr_b32 s46, s43, 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 5
-; SI-NEXT:    s_lshr_b32 s46, s45, 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 6
-; SI-NEXT:    s_lshr_b32 s46, s45, 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 7
-; SI-NEXT:    s_lshr_b32 s46, s45, 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 8
-; SI-NEXT:    s_lshr_b32 s46, s29, 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 9
-; SI-NEXT:    s_lshr_b32 s46, s29, 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 10
-; SI-NEXT:    s_lshr_b32 s46, s29, 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 11
-; SI-NEXT:    s_lshr_b32 s46, s27, 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 12
-; SI-NEXT:    s_lshr_b32 s46, s27, 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 13
-; SI-NEXT:    s_lshr_b32 s46, s27, 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 14
-; SI-NEXT:    s_lshr_b32 s46, s25, 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 15
-; SI-NEXT:    s_lshr_b32 s46, s25, 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 16
-; SI-NEXT:    s_lshr_b32 s46, s25, 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 17
+; SI-NEXT:    v_writelane_b32 v22, s46, 10
+; SI-NEXT:    s_lshr_b32 s46, s21, 8
+; SI-NEXT:    v_writelane_b32 v22, s46, 11
+; SI-NEXT:    s_lshr_b32 s46, s19, 24
+; SI-NEXT:    v_writelane_b32 v22, s46, 12
+; SI-NEXT:    s_lshr_b32 s46, s19, 16
+; SI-NEXT:    v_writelane_b32 v22, s46, 13
+; SI-NEXT:    s_lshr_b32 s46, s19, 8
+; SI-NEXT:    v_writelane_b32 v22, s46, 14
+; SI-NEXT:    s_lshr_b32 s46, s17, 24
+; SI-NEXT:    v_writelane_b32 v22, s46, 15
+; SI-NEXT:    s_lshr_b32 s46, s17, 16
+; SI-NEXT:    v_writelane_b32 v22, s46, 16
+; SI-NEXT:    s_lshr_b32 s46, s17, 8
+; SI-NEXT:    v_writelane_b32 v22, s46, 17
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[4:5], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 44
-; SI-NEXT:    v_writelane_b32 v22, s47, 45
+; SI-NEXT:    v_writelane_b32 v22, s46, 6
+; SI-NEXT:    v_writelane_b32 v22, s47, 7
+; SI-NEXT:    s_lshr_b64 s[46:47], s[4:5], 16
+; SI-NEXT:    v_writelane_b32 v22, s46, 8
+; SI-NEXT:    v_writelane_b32 v22, s47, 9
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[4:5], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 42
-; SI-NEXT:    v_writelane_b32 v22, s47, 43
+; SI-NEXT:    v_writelane_b32 v22, s46, 4
+; SI-NEXT:    v_writelane_b32 v22, s47, 5
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[6:7], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 40
-; SI-NEXT:    v_writelane_b32 v22, s47, 41
+; SI-NEXT:    v_writelane_b32 v22, s46, 2
+; SI-NEXT:    v_writelane_b32 v22, s47, 3
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[6:7], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 38
-; SI-NEXT:    v_writelane_b32 v22, s47, 39
+; SI-NEXT:    v_writelane_b32 v22, s46, 0
+; SI-NEXT:    v_writelane_b32 v22, s47, 1
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[6:7], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 36
-; SI-NEXT:    v_writelane_b32 v22, s47, 37
+; SI-NEXT:    v_writelane_b32 v21, s46, 62
+; SI-NEXT:    v_writelane_b32 v21, s47, 63
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 34
-; SI-NEXT:    v_writelane_b32 v22, s47, 35
+; SI-NEXT:    v_writelane_b32 v21, s46, 60
+; SI-NEXT:    v_writelane_b32 v21, s47, 61
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 32
-; SI-NEXT:    v_writelane_b32 v22, s47, 33
+; SI-NEXT:    v_writelane_b32 v21, s46, 58
+; SI-NEXT:    v_writelane_b32 v21, s47, 59
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 30
-; SI-NEXT:    v_writelane_b32 v22, s47, 31
+; SI-NEXT:    v_writelane_b32 v21, s46, 56
+; SI-NEXT:    v_writelane_b32 v21, s47, 57
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[10:11], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 28
-; SI-NEXT:    v_writelane_b32 v22, s47, 29
+; SI-NEXT:    v_writelane_b32 v21, s46, 54
+; SI-NEXT:    v_writelane_b32 v21, s47, 55
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[10:11], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 26
-; SI-NEXT:    v_writelane_b32 v22, s47, 27
+; SI-NEXT:    v_writelane_b32 v21, s46, 52
+; SI-NEXT:    v_writelane_b32 v21, s47, 53
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[10:11], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 24
-; SI-NEXT:    v_writelane_b32 v22, s47, 25
+; SI-NEXT:    v_writelane_b32 v21, s46, 50
+; SI-NEXT:    v_writelane_b32 v21, s47, 51
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[12:13], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 22
-; SI-NEXT:    v_writelane_b32 v22, s47, 23
+; SI-NEXT:    v_writelane_b32 v21, s46, 48
+; SI-NEXT:    v_writelane_b32 v21, s47, 49
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[12:13], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 20
-; SI-NEXT:    v_writelane_b32 v22, s47, 21
+; SI-NEXT:    v_writelane_b32 v21, s46, 46
+; SI-NEXT:    v_writelane_b32 v21, s47, 47
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[12:13], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 18
-; SI-NEXT:    v_writelane_b32 v22, s47, 19
+; SI-NEXT:    v_writelane_b32 v21, s46, 44
+; SI-NEXT:    v_writelane_b32 v21, s47, 45
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[14:15], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 16
-; SI-NEXT:    v_writelane_b32 v22, s47, 17
+; SI-NEXT:    v_writelane_b32 v21, s46, 42
+; SI-NEXT:    v_writelane_b32 v21, s47, 43
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[14:15], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 14
-; SI-NEXT:    v_writelane_b32 v22, s47, 15
+; SI-NEXT:    v_writelane_b32 v21, s46, 40
+; SI-NEXT:    v_writelane_b32 v21, s47, 41
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[14:15], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 12
-; SI-NEXT:    v_writelane_b32 v22, s47, 13
+; SI-NEXT:    v_writelane_b32 v21, s46, 38
+; SI-NEXT:    v_writelane_b32 v21, s47, 39
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[40:41], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 10
-; SI-NEXT:    v_writelane_b32 v22, s47, 11
+; SI-NEXT:    v_writelane_b32 v21, s46, 36
+; SI-NEXT:    v_writelane_b32 v21, s47, 37
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[40:41], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 8
-; SI-NEXT:    v_writelane_b32 v22, s47, 9
+; SI-NEXT:    v_writelane_b32 v21, s46, 34
+; SI-NEXT:    v_writelane_b32 v21, s47, 35
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[40:41], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 6
-; SI-NEXT:    v_writelane_b32 v22, s47, 7
+; SI-NEXT:    v_writelane_b32 v21, s46, 32
+; SI-NEXT:    v_writelane_b32 v21, s47, 33
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[42:43], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 4
-; SI-NEXT:    v_writelane_b32 v22, s47, 5
+; SI-NEXT:    v_writelane_b32 v21, s46, 30
+; SI-NEXT:    v_writelane_b32 v21, s47, 31
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[42:43], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 2
-; SI-NEXT:    v_writelane_b32 v22, s47, 3
+; SI-NEXT:    v_writelane_b32 v21, s46, 28
+; SI-NEXT:    v_writelane_b32 v21, s47, 29
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[42:43], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 0
-; SI-NEXT:    s_lshr_b32 s48, s23, 24
-; SI-NEXT:    s_lshr_b32 s49, s23, 16
-; SI-NEXT:    s_lshr_b32 s54, s23, 8
-; SI-NEXT:    s_lshr_b32 s55, s21, 24
-; SI-NEXT:    s_lshr_b32 s50, s21, 16
-; SI-NEXT:    s_lshr_b32 s51, s21, 8
-; SI-NEXT:    s_lshr_b32 s52, s19, 24
-; SI-NEXT:    s_lshr_b32 s64, s19, 16
-; SI-NEXT:    s_lshr_b32 s65, s19, 8
-; SI-NEXT:    s_lshr_b32 s66, s17, 24
-; SI-NEXT:    s_lshr_b32 s67, s17, 16
-; SI-NEXT:    s_lshr_b32 s53, s17, 8
-; SI-NEXT:    s_lshr_b64 s[68:69], s[4:5], 16
-; SI-NEXT:    v_writelane_b32 v22, s47, 1
-; SI-NEXT:    s_lshr_b64 s[70:71], s[44:45], 24
-; SI-NEXT:    s_lshr_b64 s[80:81], s[44:45], 16
-; SI-NEXT:    s_lshr_b64 s[82:83], s[44:45], 8
-; SI-NEXT:    s_lshr_b64 s[84:85], s[28:29], 24
-; SI-NEXT:    s_lshr_b64 s[86:87], s[28:29], 16
-; SI-NEXT:    s_lshr_b64 s[96:97], s[28:29], 8
-; SI-NEXT:    s_lshr_b64 s[98:99], s[26:27], 24
+; SI-NEXT:    v_writelane_b32 v21, s46, 26
+; SI-NEXT:    v_writelane_b32 v21, s47, 27
+; SI-NEXT:    s_lshr_b64 s[46:47], s[44:45], 24
+; SI-NEXT:    v_writelane_b32 v21, s46, 24
+; SI-NEXT:    v_writelane_b32 v21, s47, 25
+; SI-NEXT:    s_lshr_b64 s[46:47], s[44:45], 16
+; SI-NEXT:    v_writelane_b32 v21, s46, 22
+; SI-NEXT:    v_writelane_b32 v21, s47, 23
+; SI-NEXT:    s_lshr_b64 s[46:47], s[44:45], 8
+; SI-NEXT:    v_writelane_b32 v21, s46, 20
+; SI-NEXT:    v_writelane_b32 v21, s47, 21
+; SI-NEXT:    s_lshr_b64 s[46:47], s[28:29], 24
+; SI-NEXT:    v_writelane_b32 v21, s46, 18
+; SI-NEXT:    v_writelane_b32 v21, s47, 19
+; SI-NEXT:    s_lshr_b64 s[46:47], s[28:29], 16
+; SI-NEXT:    v_writelane_b32 v21, s46, 16
+; SI-NEXT:    v_writelane_b32 v21, s47, 17
+; SI-NEXT:    s_lshr_b64 s[46:47], s[28:29], 8
+; SI-NEXT:    v_writelane_b32 v21, s46, 14
+; SI-NEXT:    v_writelane_b32 v21, s47, 15
+; SI-NEXT:    s_lshr_b64 s[46:47], s[26:27], 24
+; SI-NEXT:    v_writelane_b32 v21, s46, 12
+; SI-NEXT:    v_writelane_b32 v21, s47, 13
+; SI-NEXT:    s_lshr_b64 s[76:77], s[26:27], 8
+; SI-NEXT:    v_writelane_b32 v21, s76, 10
+; SI-NEXT:    v_writelane_b32 v21, s77, 11
+; SI-NEXT:    s_lshr_b64 s[76:77], s[24:25], 24
+; SI-NEXT:    v_writelane_b32 v21, s76, 8
+; SI-NEXT:    v_writelane_b32 v21, s77, 9
+; SI-NEXT:    s_lshr_b64 s[76:77], s[24:25], 16
+; SI-NEXT:    v_writelane_b32 v21, s76, 6
+; SI-NEXT:    v_writelane_b32 v21, s77, 7
+; SI-NEXT:    s_lshr_b64 s[76:77], s[24:25], 8
+; SI-NEXT:    v_writelane_b32 v21, s76, 4
+; SI-NEXT:    v_writelane_b32 v21, s77, 5
+; SI-NEXT:    s_lshr_b64 s[76:77], s[22:23], 24
+; SI-NEXT:    v_writelane_b32 v21, s76, 2
+; SI-NEXT:    v_writelane_b32 v21, s77, 3
+; SI-NEXT:    s_lshr_b64 s[76:77], s[22:23], 16
+; SI-NEXT:    v_writelane_b32 v21, s76, 0
+; SI-NEXT:    s_lshr_b32 s68, s5, 24
+; SI-NEXT:    s_lshr_b32 s48, s5, 16
+; SI-NEXT:    s_lshr_b32 s69, s5, 8
+; SI-NEXT:    s_lshr_b32 s49, s7, 24
+; SI-NEXT:    s_lshr_b32 s54, s7, 16
+; SI-NEXT:    s_lshr_b32 s70, s7, 8
+; SI-NEXT:    s_lshr_b32 s55, s9, 24
+; SI-NEXT:    s_lshr_b32 s71, s9, 16
+; SI-NEXT:    s_lshr_b32 s50, s9, 8
+; SI-NEXT:    s_lshr_b32 s80, s11, 24
+; SI-NEXT:    s_lshr_b32 s51, s11, 16
+; SI-NEXT:    s_lshr_b32 s81, s11, 8
+; SI-NEXT:    s_lshr_b32 s82, s13, 24
+; SI-NEXT:    s_lshr_b32 s52, s13, 16
+; SI-NEXT:    s_lshr_b32 s83, s13, 8
+; SI-NEXT:    s_lshr_b32 s64, s15, 24
+; SI-NEXT:    s_lshr_b32 s65, s15, 16
+; SI-NEXT:    s_lshr_b32 s84, s15, 8
+; SI-NEXT:    s_lshr_b32 s86, s41, 24
+; SI-NEXT:    s_lshr_b32 s85, s41, 16
+; SI-NEXT:    s_lshr_b32 s96, s41, 8
+; SI-NEXT:    s_lshr_b32 s87, s43, 24
+; SI-NEXT:    s_lshr_b32 s66, s43, 16
+; SI-NEXT:    s_lshr_b32 s97, s43, 8
+; SI-NEXT:    s_lshr_b32 s99, s45, 24
+; SI-NEXT:    s_lshr_b32 s98, s45, 16
+; SI-NEXT:    s_lshr_b32 s67, s45, 8
+; SI-NEXT:    s_lshr_b32 s53, s29, 24
+; SI-NEXT:    s_lshr_b32 s56, s29, 16
+; SI-NEXT:    s_lshr_b32 s57, s29, 8
+; SI-NEXT:    s_lshr_b32 s58, s27, 24
+; SI-NEXT:    s_lshr_b32 s60, s27, 16
+; SI-NEXT:    s_lshr_b32 s59, s27, 8
+; SI-NEXT:    s_lshr_b32 s62, s25, 24
+; SI-NEXT:    s_lshr_b32 s61, s25, 16
+; SI-NEXT:    s_lshr_b32 s72, s25, 8
+; SI-NEXT:    s_lshr_b32 s63, s23, 24
+; SI-NEXT:    s_lshr_b32 s74, s23, 16
+; SI-NEXT:    s_lshr_b32 s73, s23, 8
+; SI-NEXT:    s_lshr_b32 s75, s21, 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[26:27], 16
-; SI-NEXT:    s_lshr_b64 s[56:57], s[26:27], 8
-; SI-NEXT:    s_lshr_b64 s[58:59], s[24:25], 24
-; SI-NEXT:    s_lshr_b64 s[60:61], s[24:25], 16
-; SI-NEXT:    s_lshr_b64 s[62:63], s[24:25], 8
-; SI-NEXT:    s_lshr_b64 s[72:73], s[22:23], 24
-; SI-NEXT:    s_lshr_b64 s[74:75], s[22:23], 16
+; SI-NEXT:    v_writelane_b32 v21, s77, 1
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[22:23], 8
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[20:21], 24
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
@@ -77906,11 +78436,232 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 24
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[30:31], s[18:19], 8
-; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 24
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 16
-; SI-NEXT:    s_lshr_b64 s[38:39], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 24
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 8
+; SI-NEXT:    s_mov_b64 s[38:39], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr99
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    s_mov_b64 s[38:39], -1
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:    ; implicit-def: $sgpr97
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr87
+; SI-NEXT:    ; implicit-def: $sgpr96
+; SI-NEXT:    ; implicit-def: $sgpr85
+; SI-NEXT:    ; implicit-def: $sgpr86
+; SI-NEXT:    ; implicit-def: $sgpr84
+; SI-NEXT:    ; implicit-def: $sgpr65
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr83
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr82
+; SI-NEXT:    ; implicit-def: $sgpr81
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr80
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr71
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr70
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    s_waitcnt expcnt(1)
+; SI-NEXT:    v_writelane_b32 v21, s46, 0
+; SI-NEXT:    v_writelane_b32 v21, s47, 1
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v21, s46, 2
+; SI-NEXT:    v_writelane_b32 v21, s47, 3
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v21, s46, 4
+; SI-NEXT:    v_writelane_b32 v21, s47, 5
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v21, s46, 6
+; SI-NEXT:    v_writelane_b32 v21, s47, 7
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v21, s46, 8
+; SI-NEXT:    v_writelane_b32 v21, s47, 9
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v21, s46, 10
+; SI-NEXT:    v_writelane_b32 v21, s47, 11
+; SI-NEXT:    v_writelane_b32 v21, s98, 12
+; SI-NEXT:    v_writelane_b32 v21, s99, 13
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v21, s98, 14
+; SI-NEXT:    v_writelane_b32 v21, s99, 15
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 16
+; SI-NEXT:    v_writelane_b32 v21, s99, 17
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 18
+; SI-NEXT:    v_writelane_b32 v21, s99, 19
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 20
+; SI-NEXT:    v_writelane_b32 v21, s99, 21
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 22
+; SI-NEXT:    v_writelane_b32 v21, s99, 23
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 24
+; SI-NEXT:    v_writelane_b32 v21, s99, 25
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 26
+; SI-NEXT:    v_writelane_b32 v21, s99, 27
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 28
+; SI-NEXT:    v_writelane_b32 v21, s99, 29
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 30
+; SI-NEXT:    v_writelane_b32 v21, s99, 31
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 32
+; SI-NEXT:    v_writelane_b32 v21, s99, 33
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 34
+; SI-NEXT:    v_writelane_b32 v21, s99, 35
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 36
+; SI-NEXT:    v_writelane_b32 v21, s99, 37
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 38
+; SI-NEXT:    v_writelane_b32 v21, s99, 39
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 40
+; SI-NEXT:    v_writelane_b32 v21, s99, 41
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 42
+; SI-NEXT:    v_writelane_b32 v21, s99, 43
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 44
+; SI-NEXT:    v_writelane_b32 v21, s99, 45
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 46
+; SI-NEXT:    v_writelane_b32 v21, s99, 47
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 48
+; SI-NEXT:    v_writelane_b32 v21, s99, 49
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 50
+; SI-NEXT:    v_writelane_b32 v21, s99, 51
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 52
+; SI-NEXT:    v_writelane_b32 v21, s99, 53
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 54
+; SI-NEXT:    v_writelane_b32 v21, s99, 55
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 56
+; SI-NEXT:    v_writelane_b32 v21, s99, 57
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 58
+; SI-NEXT:    v_writelane_b32 v21, s99, 59
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 60
+; SI-NEXT:    v_writelane_b32 v21, s99, 61
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v21, s98, 62
+; SI-NEXT:    v_writelane_b32 v21, s99, 63
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v22, s98, 0
+; SI-NEXT:    v_writelane_b32 v22, s99, 1
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v22, s98, 2
+; SI-NEXT:    v_writelane_b32 v22, s99, 3
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v22, s98, 4
+; SI-NEXT:    v_writelane_b32 v22, s99, 5
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v22, s98, 6
+; SI-NEXT:    v_writelane_b32 v22, s99, 7
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    v_writelane_b32 v22, s98, 8
+; SI-NEXT:    v_writelane_b32 v22, s99, 9
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[38:39], s[38:39], exec
+; SI-NEXT:    s_cselect_b32 s47, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s47, 1
+; SI-NEXT:    s_mov_b32 s38, s68
+; SI-NEXT:    s_mov_b32 s39, s69
+; SI-NEXT:    s_mov_b32 s68, s48
+; SI-NEXT:    s_mov_b32 s48, s49
+; SI-NEXT:    s_mov_b32 s49, s54
+; SI-NEXT:    s_mov_b32 s54, s70
+; SI-NEXT:    s_mov_b32 s69, s71
+; SI-NEXT:    s_mov_b32 s70, s55
+; SI-NEXT:    s_mov_b32 s55, s50
+; SI-NEXT:    s_mov_b32 s50, s80
+; SI-NEXT:    s_mov_b32 s71, s81
+; SI-NEXT:    s_mov_b32 s80, s51
+; SI-NEXT:    s_mov_b32 s51, s82
+; SI-NEXT:    s_mov_b32 s81, s83
+; SI-NEXT:    s_mov_b32 s82, s52
+; SI-NEXT:    s_mov_b32 s52, s64
+; SI-NEXT:    s_mov_b32 s64, s65
+; SI-NEXT:    s_mov_b32 s65, s84
+; SI-NEXT:    s_mov_b32 s83, s85
+; SI-NEXT:    s_mov_b32 s84, s86
+; SI-NEXT:    s_mov_b32 s85, s87
+; SI-NEXT:    s_mov_b32 s86, s96
+; SI-NEXT:    s_mov_b32 s87, s97
+; SI-NEXT:    s_mov_b32 s96, s66
+; SI-NEXT:    s_mov_b32 s66, s99
+; SI-NEXT:    s_mov_b32 s97, s67
+; SI-NEXT:    s_mov_b32 s67, s53
+; SI-NEXT:    s_mov_b32 s53, s56
+; SI-NEXT:    s_mov_b32 s56, s57
+; SI-NEXT:    s_mov_b32 s99, s58
+; SI-NEXT:    s_mov_b32 s58, s59
+; SI-NEXT:    s_mov_b32 s59, s60
+; SI-NEXT:    v_readlane_b32 s60, v22, 10
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -77943,174 +78694,173 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:    s_lshr_b32 s46, s5, 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 46
-; SI-NEXT:    s_lshr_b32 s46, s5, 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 47
-; SI-NEXT:    s_lshr_b32 s46, s5, 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 48
-; SI-NEXT:    s_lshr_b32 s46, s7, 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 49
-; SI-NEXT:    s_lshr_b32 s46, s7, 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 50
-; SI-NEXT:    s_lshr_b32 s46, s7, 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 51
-; SI-NEXT:    s_lshr_b32 s46, s9, 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 52
-; SI-NEXT:    s_lshr_b32 s46, s9, 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 53
-; SI-NEXT:    s_lshr_b32 s46, s9, 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 54
-; SI-NEXT:    s_lshr_b32 s46, s11, 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 55
-; SI-NEXT:    s_lshr_b32 s46, s11, 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 56
-; SI-NEXT:    s_lshr_b32 s46, s11, 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 57
-; SI-NEXT:    s_lshr_b32 s46, s13, 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 58
-; SI-NEXT:    s_lshr_b32 s46, s13, 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 59
-; SI-NEXT:    s_lshr_b32 s46, s13, 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 60
-; SI-NEXT:    s_lshr_b32 s46, s15, 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 61
-; SI-NEXT:    s_lshr_b32 s46, s15, 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 62
-; SI-NEXT:    s_lshr_b32 s46, s15, 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 63
-; SI-NEXT:    s_lshr_b32 s46, s41, 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 0
-; SI-NEXT:    s_lshr_b32 s46, s41, 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 1
-; SI-NEXT:    s_lshr_b32 s46, s41, 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 2
-; SI-NEXT:    s_lshr_b32 s46, s43, 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 3
-; SI-NEXT:    s_lshr_b32 s46, s43, 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 4
-; SI-NEXT:    s_lshr_b32 s46, s43, 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 5
-; SI-NEXT:    s_lshr_b32 s46, s45, 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 6
-; SI-NEXT:    s_lshr_b32 s46, s45, 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 7
-; SI-NEXT:    s_lshr_b32 s46, s45, 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 8
-; SI-NEXT:    s_lshr_b32 s46, s29, 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 9
-; SI-NEXT:    s_lshr_b32 s46, s29, 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 10
-; SI-NEXT:    s_lshr_b32 s46, s29, 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 11
-; SI-NEXT:    s_lshr_b32 s46, s27, 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 12
-; SI-NEXT:    s_lshr_b32 s46, s27, 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 13
-; SI-NEXT:    s_lshr_b32 s46, s27, 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 14
-; SI-NEXT:    s_lshr_b32 s46, s25, 24
-; SI-NEXT:    v_writelane_b32 v21, s46, 15
-; SI-NEXT:    s_lshr_b32 s46, s25, 16
-; SI-NEXT:    v_writelane_b32 v21, s46, 16
-; SI-NEXT:    s_lshr_b32 s46, s25, 8
-; SI-NEXT:    v_writelane_b32 v21, s46, 17
+; SI-NEXT:    s_lshr_b32 s46, s21, 8
+; SI-NEXT:    v_writelane_b32 v22, s46, 11
+; SI-NEXT:    s_lshr_b32 s46, s19, 24
+; SI-NEXT:    v_writelane_b32 v22, s46, 12
+; SI-NEXT:    s_lshr_b32 s46, s19, 16
+; SI-NEXT:    v_writelane_b32 v22, s46, 13
+; SI-NEXT:    s_lshr_b32 s46, s19, 8
+; SI-NEXT:    v_writelane_b32 v22, s46, 14
+; SI-NEXT:    s_lshr_b32 s46, s17, 24
+; SI-NEXT:    v_writelane_b32 v22, s46, 15
+; SI-NEXT:    s_lshr_b32 s46, s17, 16
+; SI-NEXT:    v_writelane_b32 v22, s46, 16
+; SI-NEXT:    s_lshr_b32 s46, s17, 8
+; SI-NEXT:    v_writelane_b32 v22, s46, 17
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[4:5], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 44
-; SI-NEXT:    v_writelane_b32 v22, s47, 45
+; SI-NEXT:    v_writelane_b32 v22, s46, 6
+; SI-NEXT:    v_writelane_b32 v22, s47, 7
+; SI-NEXT:    s_lshr_b64 s[46:47], s[4:5], 16
+; SI-NEXT:    v_writelane_b32 v22, s46, 8
+; SI-NEXT:    v_writelane_b32 v22, s47, 9
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[4:5], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 42
-; SI-NEXT:    v_writelane_b32 v22, s47, 43
+; SI-NEXT:    v_writelane_b32 v22, s46, 4
+; SI-NEXT:    v_writelane_b32 v22, s47, 5
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[6:7], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 40
-; SI-NEXT:    v_writelane_b32 v22, s47, 41
+; SI-NEXT:    v_writelane_b32 v22, s46, 2
+; SI-NEXT:    v_writelane_b32 v22, s47, 3
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[6:7], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 38
-; SI-NEXT:    v_writelane_b32 v22, s47, 39
+; SI-NEXT:    v_writelane_b32 v22, s46, 0
+; SI-NEXT:    v_writelane_b32 v22, s47, 1
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[6:7], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 36
-; SI-NEXT:    v_writelane_b32 v22, s47, 37
+; SI-NEXT:    v_writelane_b32 v21, s46, 62
+; SI-NEXT:    v_writelane_b32 v21, s47, 63
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 34
-; SI-NEXT:    v_writelane_b32 v22, s47, 35
+; SI-NEXT:    v_writelane_b32 v21, s46, 60
+; SI-NEXT:    v_writelane_b32 v21, s47, 61
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 32
-; SI-NEXT:    v_writelane_b32 v22, s47, 33
+; SI-NEXT:    v_writelane_b32 v21, s46, 58
+; SI-NEXT:    v_writelane_b32 v21, s47, 59
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 30
-; SI-NEXT:    v_writelane_b32 v22, s47, 31
+; SI-NEXT:    v_writelane_b32 v21, s46, 56
+; SI-NEXT:    v_writelane_b32 v21, s47, 57
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[10:11], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 28
-; SI-NEXT:    v_writelane_b32 v22, s47, 29
+; SI-NEXT:    v_writelane_b32 v21, s46, 54
+; SI-NEXT:    v_writelane_b32 v21, s47, 55
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[10:11], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 26
-; SI-NEXT:    v_writelane_b32 v22, s47, 27
+; SI-NEXT:    v_writelane_b32 v21, s46, 52
+; SI-NEXT:    v_writelane_b32 v21, s47, 53
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[10:11], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 24
-; SI-NEXT:    v_writelane_b32 v22, s47, 25
+; SI-NEXT:    v_writelane_b32 v21, s46, 50
+; SI-NEXT:    v_writelane_b32 v21, s47, 51
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[12:13], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 22
-; SI-NEXT:    v_writelane_b32 v22, s47, 23
+; SI-NEXT:    v_writelane_b32 v21, s46, 48
+; SI-NEXT:    v_writelane_b32 v21, s47, 49
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[12:13], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 20
-; SI-NEXT:    v_writelane_b32 v22, s47, 21
+; SI-NEXT:    v_writelane_b32 v21, s46, 46
+; SI-NEXT:    v_writelane_b32 v21, s47, 47
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[12:13], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 18
-; SI-NEXT:    v_writelane_b32 v22, s47, 19
+; SI-NEXT:    v_writelane_b32 v21, s46, 44
+; SI-NEXT:    v_writelane_b32 v21, s47, 45
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[14:15], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 16
-; SI-NEXT:    v_writelane_b32 v22, s47, 17
+; SI-NEXT:    v_writelane_b32 v21, s46, 42
+; SI-NEXT:    v_writelane_b32 v21, s47, 43
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[14:15], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 14
-; SI-NEXT:    v_writelane_b32 v22, s47, 15
+; SI-NEXT:    v_writelane_b32 v21, s46, 40
+; SI-NEXT:    v_writelane_b32 v21, s47, 41
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[14:15], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 12
-; SI-NEXT:    v_writelane_b32 v22, s47, 13
+; SI-NEXT:    v_writelane_b32 v21, s46, 38
+; SI-NEXT:    v_writelane_b32 v21, s47, 39
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[40:41], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 10
-; SI-NEXT:    v_writelane_b32 v22, s47, 11
+; SI-NEXT:    v_writelane_b32 v21, s46, 36
+; SI-NEXT:    v_writelane_b32 v21, s47, 37
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[40:41], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 8
-; SI-NEXT:    v_writelane_b32 v22, s47, 9
+; SI-NEXT:    v_writelane_b32 v21, s46, 34
+; SI-NEXT:    v_writelane_b32 v21, s47, 35
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[40:41], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 6
-; SI-NEXT:    v_writelane_b32 v22, s47, 7
+; SI-NEXT:    v_writelane_b32 v21, s46, 32
+; SI-NEXT:    v_writelane_b32 v21, s47, 33
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[42:43], 24
-; SI-NEXT:    v_writelane_b32 v22, s46, 4
-; SI-NEXT:    v_writelane_b32 v22, s47, 5
+; SI-NEXT:    v_writelane_b32 v21, s46, 30
+; SI-NEXT:    v_writelane_b32 v21, s47, 31
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[42:43], 16
-; SI-NEXT:    v_writelane_b32 v22, s46, 2
-; SI-NEXT:    v_writelane_b32 v22, s47, 3
+; SI-NEXT:    v_writelane_b32 v21, s46, 28
+; SI-NEXT:    v_writelane_b32 v21, s47, 29
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[42:43], 8
-; SI-NEXT:    v_writelane_b32 v22, s46, 0
-; SI-NEXT:    s_lshr_b32 s48, s23, 24
-; SI-NEXT:    s_lshr_b32 s49, s23, 16
-; SI-NEXT:    s_lshr_b32 s54, s23, 8
-; SI-NEXT:    s_lshr_b32 s55, s21, 24
-; SI-NEXT:    s_lshr_b32 s50, s21, 16
-; SI-NEXT:    s_lshr_b32 s51, s21, 8
-; SI-NEXT:    s_lshr_b32 s52, s19, 24
-; SI-NEXT:    s_lshr_b32 s64, s19, 16
-; SI-NEXT:    s_lshr_b32 s65, s19, 8
-; SI-NEXT:    s_lshr_b32 s66, s17, 24
-; SI-NEXT:    s_lshr_b32 s67, s17, 16
-; SI-NEXT:    s_lshr_b32 s53, s17, 8
-; SI-NEXT:    s_lshr_b64 s[68:69], s[4:5], 16
-; SI-NEXT:    v_writelane_b32 v22, s47, 1
-; SI-NEXT:    s_lshr_b64 s[70:71], s[44:45], 24
-; SI-NEXT:    s_lshr_b64 s[80:81], s[44:45], 16
-; SI-NEXT:    s_lshr_b64 s[82:83], s[44:45], 8
-; SI-NEXT:    s_lshr_b64 s[84:85], s[28:29], 24
-; SI-NEXT:    s_lshr_b64 s[86:87], s[28:29], 16
-; SI-NEXT:    s_lshr_b64 s[96:97], s[28:29], 8
-; SI-NEXT:    s_lshr_b64 s[98:99], s[26:27], 24
+; SI-NEXT:    v_writelane_b32 v21, s46, 26
+; SI-NEXT:    v_writelane_b32 v21, s47, 27
+; SI-NEXT:    s_lshr_b64 s[46:47], s[44:45], 24
+; SI-NEXT:    v_writelane_b32 v21, s46, 24
+; SI-NEXT:    v_writelane_b32 v21, s47, 25
+; SI-NEXT:    s_lshr_b64 s[46:47], s[44:45], 16
+; SI-NEXT:    v_writelane_b32 v21, s46, 22
+; SI-NEXT:    v_writelane_b32 v21, s47, 23
+; SI-NEXT:    s_lshr_b64 s[46:47], s[44:45], 8
+; SI-NEXT:    v_writelane_b32 v21, s46, 20
+; SI-NEXT:    v_writelane_b32 v21, s47, 21
+; SI-NEXT:    s_lshr_b64 s[46:47], s[28:29], 24
+; SI-NEXT:    v_writelane_b32 v21, s46, 18
+; SI-NEXT:    v_writelane_b32 v21, s47, 19
+; SI-NEXT:    s_lshr_b64 s[46:47], s[28:29], 16
+; SI-NEXT:    v_writelane_b32 v21, s46, 16
+; SI-NEXT:    v_writelane_b32 v21, s47, 17
+; SI-NEXT:    s_lshr_b64 s[46:47], s[28:29], 8
+; SI-NEXT:    v_writelane_b32 v21, s46, 14
+; SI-NEXT:    v_writelane_b32 v21, s47, 15
+; SI-NEXT:    s_lshr_b64 s[46:47], s[26:27], 24
+; SI-NEXT:    v_writelane_b32 v21, s46, 12
+; SI-NEXT:    v_writelane_b32 v21, s47, 13
+; SI-NEXT:    s_lshr_b64 s[76:77], s[26:27], 8
+; SI-NEXT:    v_writelane_b32 v21, s76, 10
+; SI-NEXT:    v_writelane_b32 v21, s77, 11
+; SI-NEXT:    s_lshr_b64 s[76:77], s[24:25], 24
+; SI-NEXT:    v_writelane_b32 v21, s76, 8
+; SI-NEXT:    v_writelane_b32 v21, s77, 9
+; SI-NEXT:    s_lshr_b64 s[76:77], s[24:25], 16
+; SI-NEXT:    v_writelane_b32 v21, s76, 6
+; SI-NEXT:    v_writelane_b32 v21, s77, 7
+; SI-NEXT:    s_lshr_b64 s[76:77], s[24:25], 8
+; SI-NEXT:    v_writelane_b32 v21, s76, 4
+; SI-NEXT:    v_writelane_b32 v21, s77, 5
+; SI-NEXT:    s_lshr_b64 s[76:77], s[22:23], 24
+; SI-NEXT:    v_writelane_b32 v21, s76, 2
+; SI-NEXT:    v_writelane_b32 v21, s77, 3
+; SI-NEXT:    s_lshr_b64 s[76:77], s[22:23], 16
+; SI-NEXT:    v_writelane_b32 v21, s76, 0
+; SI-NEXT:    s_lshr_b32 s38, s5, 24
+; SI-NEXT:    s_lshr_b32 s68, s5, 16
+; SI-NEXT:    s_lshr_b32 s39, s5, 8
+; SI-NEXT:    s_lshr_b32 s48, s7, 24
+; SI-NEXT:    s_lshr_b32 s49, s7, 16
+; SI-NEXT:    s_lshr_b32 s54, s7, 8
+; SI-NEXT:    s_lshr_b32 s70, s9, 24
+; SI-NEXT:    s_lshr_b32 s69, s9, 16
+; SI-NEXT:    s_lshr_b32 s55, s9, 8
+; SI-NEXT:    s_lshr_b32 s50, s11, 24
+; SI-NEXT:    s_lshr_b32 s80, s11, 16
+; SI-NEXT:    s_lshr_b32 s71, s11, 8
+; SI-NEXT:    s_lshr_b32 s51, s13, 24
+; SI-NEXT:    s_lshr_b32 s82, s13, 16
+; SI-NEXT:    s_lshr_b32 s81, s13, 8
+; SI-NEXT:    s_lshr_b32 s52, s15, 24
+; SI-NEXT:    s_lshr_b32 s64, s15, 16
+; SI-NEXT:    s_lshr_b32 s65, s15, 8
+; SI-NEXT:    s_lshr_b32 s84, s41, 24
+; SI-NEXT:    s_lshr_b32 s83, s41, 16
+; SI-NEXT:    s_lshr_b32 s86, s41, 8
+; SI-NEXT:    s_lshr_b32 s85, s43, 24
+; SI-NEXT:    s_lshr_b32 s96, s43, 16
+; SI-NEXT:    s_lshr_b32 s87, s43, 8
+; SI-NEXT:    s_lshr_b32 s66, s45, 24
+; SI-NEXT:    s_lshr_b32 s98, s45, 16
+; SI-NEXT:    s_lshr_b32 s97, s45, 8
+; SI-NEXT:    s_lshr_b32 s67, s29, 24
+; SI-NEXT:    s_lshr_b32 s53, s29, 16
+; SI-NEXT:    s_lshr_b32 s56, s29, 8
+; SI-NEXT:    s_lshr_b32 s99, s27, 24
+; SI-NEXT:    s_lshr_b32 s59, s27, 16
+; SI-NEXT:    s_lshr_b32 s58, s27, 8
+; SI-NEXT:    s_lshr_b32 s62, s25, 24
+; SI-NEXT:    s_lshr_b32 s61, s25, 16
+; SI-NEXT:    s_lshr_b32 s72, s25, 8
+; SI-NEXT:    s_lshr_b32 s63, s23, 24
+; SI-NEXT:    s_lshr_b32 s74, s23, 16
+; SI-NEXT:    s_lshr_b32 s73, s23, 8
+; SI-NEXT:    s_lshr_b32 s60, s21, 24
+; SI-NEXT:    s_lshr_b32 s75, s21, 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[26:27], 16
-; SI-NEXT:    s_lshr_b64 s[56:57], s[26:27], 8
-; SI-NEXT:    s_lshr_b64 s[58:59], s[24:25], 24
-; SI-NEXT:    s_lshr_b64 s[60:61], s[24:25], 16
-; SI-NEXT:    s_lshr_b64 s[62:63], s[24:25], 8
-; SI-NEXT:    s_lshr_b64 s[72:73], s[22:23], 24
-; SI-NEXT:    s_lshr_b64 s[74:75], s[22:23], 16
+; SI-NEXT:    v_writelane_b32 v21, s77, 1
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[22:23], 8
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[20:21], 24
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
@@ -78118,26 +78868,29 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 24
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[30:31], s[18:19], 8
-; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 24
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 16
-; SI-NEXT:    s_lshr_b64 s[38:39], s[16:17], 8
-; SI-NEXT:  .LBB57_3: ; %end
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 24
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 8
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s47, s38, 8
+; SI-NEXT:    s_lshl_b32 s47, s36, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s47
-; SI-NEXT:    s_and_b32 s47, s36, 0xff
+; SI-NEXT:    s_and_b32 s47, s34, 0xff
 ; SI-NEXT:    s_lshl_b32 s47, s47, 16
-; SI-NEXT:    s_lshl_b32 s57, s34, 24
+; SI-NEXT:    s_lshl_b32 s57, vcc_lo, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s47, s57, s47
 ; SI-NEXT:    s_or_b32 s16, s16, s47
 ; SI-NEXT:    v_mov_b32_e32 v1, s16
 ; SI-NEXT:    s_and_b32 s16, s17, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s53, 8
+; SI-NEXT:    v_readlane_b32 s17, v22, 17
+; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s67, 0xff
+; SI-NEXT:    v_readlane_b32 s17, v22, 16
+; SI-NEXT:    s_and_b32 s17, s17, 0xff
+; SI-NEXT:    v_readlane_b32 s47, v22, 15
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s47, s66, 24
+; SI-NEXT:    s_lshl_b32 s47, s47, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s47, s17
 ; SI-NEXT:    s_or_b32 s16, s16, s17
@@ -78154,15 +78907,18 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 4, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
+; SI-NEXT:    v_readlane_b32 s17, v22, 14
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s19, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s65, 8
+; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s64, 0xff
+; SI-NEXT:    v_readlane_b32 s17, v22, 13
+; SI-NEXT:    s_and_b32 s17, s17, 0xff
+; SI-NEXT:    v_readlane_b32 s18, v22, 12
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s52, 24
+; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 8, v0
@@ -78180,28 +78936,32 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 12, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
+; SI-NEXT:    v_readlane_b32 s17, v22, 11
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s21, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s51, 8
+; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s50, 0xff
+; SI-NEXT:    s_and_b32 s17, s75, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s55, 24
+; SI-NEXT:    s_lshl_b32 s18, s60, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 16, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
+; SI-NEXT:    v_readlane_b32 s18, v21, 0
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s22, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s76, 8
+; SI-NEXT:    v_readlane_b32 s19, v21, 1
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s74, 0xff
+; SI-NEXT:    s_and_b32 s17, s18, 0xff
+; SI-NEXT:    v_readlane_b32 s18, v21, 2
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s72, 24
+; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 20, v0
@@ -78210,196 +78970,201 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s23, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s54, 8
+; SI-NEXT:    s_lshl_b32 s17, s73, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s49, 0xff
+; SI-NEXT:    s_and_b32 s17, s74, 0xff
+; SI-NEXT:    v_readlane_b32 s19, v21, 3
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s48, 24
-; SI-NEXT:    s_and_b32 s16, s16, 0xffff
+; SI-NEXT:    s_lshl_b32 s18, s63, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
+; SI-NEXT:    v_readlane_b32 s18, v21, 4
+; SI-NEXT:    s_and_b32 s16, s16, 0xffff
+; SI-NEXT:    v_readlane_b32 s19, v21, 5
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 24, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
+; SI-NEXT:    s_lshl_b32 s17, s18, 8
+; SI-NEXT:    v_readlane_b32 s18, v21, 6
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s24, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s62, 8
+; SI-NEXT:    v_readlane_b32 s19, v21, 7
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s60, 0xff
+; SI-NEXT:    s_and_b32 s17, s18, 0xff
+; SI-NEXT:    v_readlane_b32 s18, v21, 8
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s58, 24
+; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 28, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v21, 17
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s25, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_lshl_b32 s17, s72, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v21, 16
-; SI-NEXT:    s_and_b32 s17, s17, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 15
+; SI-NEXT:    s_and_b32 s17, s61, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s18, 24
+; SI-NEXT:    s_lshl_b32 s18, s62, 24
+; SI-NEXT:    v_readlane_b32 s19, v21, 9
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 32, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
+; SI-NEXT:    v_readlane_b32 s18, v21, 10
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s26, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s56, 8
+; SI-NEXT:    v_readlane_b32 s19, v21, 11
+; SI-NEXT:    s_lshl_b32 s17, s18, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s46, 0xff
+; SI-NEXT:    v_readlane_b32 s18, v21, 12
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s98, 24
+; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 36, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v21, 14
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s27, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_lshl_b32 s17, s58, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v21, 13
-; SI-NEXT:    s_and_b32 s17, s17, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 12
+; SI-NEXT:    s_and_b32 s17, s59, 0xff
+; SI-NEXT:    v_readlane_b32 s19, v21, 13
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s18, 24
-; SI-NEXT:    s_and_b32 s16, s16, 0xffff
+; SI-NEXT:    s_lshl_b32 s18, s99, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
+; SI-NEXT:    v_readlane_b32 s18, v21, 14
+; SI-NEXT:    s_and_b32 s16, s16, 0xffff
+; SI-NEXT:    v_readlane_b32 s19, v21, 15
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 40, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
+; SI-NEXT:    s_lshl_b32 s17, s18, 8
+; SI-NEXT:    v_readlane_b32 s18, v21, 16
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s28, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s96, 8
+; SI-NEXT:    v_readlane_b32 s19, v21, 17
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s86, 0xff
+; SI-NEXT:    s_and_b32 s17, s18, 0xff
+; SI-NEXT:    v_readlane_b32 s18, v21, 18
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s84, 24
+; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 44, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v21, 11
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s29, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_lshl_b32 s17, s56, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v21, 10
-; SI-NEXT:    s_and_b32 s17, s17, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 9
+; SI-NEXT:    s_and_b32 s17, s53, 0xff
+; SI-NEXT:    v_readlane_b32 s19, v21, 19
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s18, 24
-; SI-NEXT:    s_and_b32 s16, s16, 0xffff
+; SI-NEXT:    s_lshl_b32 s18, s67, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
+; SI-NEXT:    v_readlane_b32 s18, v21, 20
+; SI-NEXT:    s_and_b32 s16, s16, 0xffff
+; SI-NEXT:    v_readlane_b32 s19, v21, 21
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 48, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
+; SI-NEXT:    s_lshl_b32 s17, s18, 8
+; SI-NEXT:    v_readlane_b32 s18, v21, 22
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s44, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s82, 8
+; SI-NEXT:    v_readlane_b32 s19, v21, 23
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s80, 0xff
+; SI-NEXT:    s_and_b32 s17, s18, 0xff
+; SI-NEXT:    v_readlane_b32 s18, v21, 24
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s70, 24
+; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 52, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v21, 8
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s45, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_lshl_b32 s17, s97, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v21, 7
-; SI-NEXT:    s_and_b32 s17, s17, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 6
+; SI-NEXT:    s_and_b32 s17, s98, 0xff
+; SI-NEXT:    v_readlane_b32 s19, v21, 25
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s18, 24
+; SI-NEXT:    s_lshl_b32 s18, s66, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v22, 0
+; SI-NEXT:    v_readlane_b32 s18, v21, 26
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v22, 1
+; SI-NEXT:    v_readlane_b32 s19, v21, 27
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 56, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v22, 2
+; SI-NEXT:    v_readlane_b32 s18, v21, 28
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s42, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v22, 3
+; SI-NEXT:    v_readlane_b32 s19, v21, 29
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v22, 4
+; SI-NEXT:    v_readlane_b32 s18, v21, 30
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 60, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v21, 5
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s43, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_lshl_b32 s17, s87, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v21, 4
-; SI-NEXT:    s_and_b32 s17, s17, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 3
-; SI-NEXT:    v_readlane_b32 s19, v22, 5
+; SI-NEXT:    s_and_b32 s17, s96, 0xff
+; SI-NEXT:    v_readlane_b32 s19, v21, 31
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s18, 24
+; SI-NEXT:    s_lshl_b32 s18, s85, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v22, 6
+; SI-NEXT:    v_readlane_b32 s18, v21, 32
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v22, 7
+; SI-NEXT:    v_readlane_b32 s19, v21, 33
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 64, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v22, 8
+; SI-NEXT:    v_readlane_b32 s18, v21, 34
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s40, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v22, 9
+; SI-NEXT:    v_readlane_b32 s19, v21, 35
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v22, 10
+; SI-NEXT:    v_readlane_b32 s18, v21, 36
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x44, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v21, 2
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s41, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_lshl_b32 s17, s86, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v21, 1
-; SI-NEXT:    s_and_b32 s17, s17, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 0
+; SI-NEXT:    s_and_b32 s17, s83, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s18, 24
+; SI-NEXT:    s_lshl_b32 s18, s84, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x48, v0
@@ -78407,16 +79172,16 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
-; SI-NEXT:    v_readlane_b32 s16, v22, 12
+; SI-NEXT:    v_readlane_b32 s16, v21, 38
 ; SI-NEXT:    s_and_b32 s14, s14, 0xff
-; SI-NEXT:    v_readlane_b32 s17, v22, 13
+; SI-NEXT:    v_readlane_b32 s17, v21, 39
 ; SI-NEXT:    s_lshl_b32 s16, s16, 8
-; SI-NEXT:    v_readlane_b32 s19, v22, 11
+; SI-NEXT:    v_readlane_b32 s19, v21, 37
 ; SI-NEXT:    s_or_b32 s14, s14, s16
-; SI-NEXT:    v_readlane_b32 s16, v22, 14
-; SI-NEXT:    v_readlane_b32 s17, v22, 15
+; SI-NEXT:    v_readlane_b32 s16, v21, 40
+; SI-NEXT:    v_readlane_b32 s17, v21, 41
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v22, 16
+; SI-NEXT:    v_readlane_b32 s18, v21, 42
 ; SI-NEXT:    s_lshl_b32 s16, s16, 16
 ; SI-NEXT:    s_lshl_b32 s17, s18, 24
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
@@ -78427,14 +79192,11 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s14
 ; SI-NEXT:    s_and_b32 s14, s15, 0xff
-; SI-NEXT:    v_readlane_b32 s15, v22, 63
-; SI-NEXT:    s_lshl_b32 s15, s15, 8
+; SI-NEXT:    s_lshl_b32 s15, s65, 8
 ; SI-NEXT:    s_or_b32 s14, s14, s15
-; SI-NEXT:    v_readlane_b32 s15, v22, 62
-; SI-NEXT:    s_and_b32 s15, s15, 0xff
-; SI-NEXT:    v_readlane_b32 s16, v22, 61
+; SI-NEXT:    s_and_b32 s15, s64, 0xff
 ; SI-NEXT:    s_lshl_b32 s15, s15, 16
-; SI-NEXT:    s_lshl_b32 s16, s16, 24
+; SI-NEXT:    s_lshl_b32 s16, s52, 24
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_or_b32 s15, s16, s15
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x50, v0
@@ -78442,15 +79204,15 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s14
-; SI-NEXT:    v_readlane_b32 s14, v22, 18
+; SI-NEXT:    v_readlane_b32 s14, v21, 44
 ; SI-NEXT:    s_and_b32 s12, s12, 0xff
-; SI-NEXT:    v_readlane_b32 s15, v22, 19
+; SI-NEXT:    v_readlane_b32 s15, v21, 45
 ; SI-NEXT:    s_lshl_b32 s14, s14, 8
 ; SI-NEXT:    s_or_b32 s12, s12, s14
-; SI-NEXT:    v_readlane_b32 s14, v22, 20
-; SI-NEXT:    v_readlane_b32 s15, v22, 21
+; SI-NEXT:    v_readlane_b32 s14, v21, 46
+; SI-NEXT:    v_readlane_b32 s15, v21, 47
 ; SI-NEXT:    s_and_b32 s14, s14, 0xff
-; SI-NEXT:    v_readlane_b32 s16, v22, 22
+; SI-NEXT:    v_readlane_b32 s16, v21, 48
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_lshl_b32 s15, s16, 24
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
@@ -78461,14 +79223,11 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s12
 ; SI-NEXT:    s_and_b32 s12, s13, 0xff
-; SI-NEXT:    v_readlane_b32 s13, v22, 60
-; SI-NEXT:    s_lshl_b32 s13, s13, 8
+; SI-NEXT:    s_lshl_b32 s13, s81, 8
 ; SI-NEXT:    s_or_b32 s12, s12, s13
-; SI-NEXT:    v_readlane_b32 s13, v22, 59
-; SI-NEXT:    s_and_b32 s13, s13, 0xff
-; SI-NEXT:    v_readlane_b32 s14, v22, 58
+; SI-NEXT:    s_and_b32 s13, s82, 0xff
 ; SI-NEXT:    s_lshl_b32 s13, s13, 16
-; SI-NEXT:    s_lshl_b32 s14, s14, 24
+; SI-NEXT:    s_lshl_b32 s14, s51, 24
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_or_b32 s13, s14, s13
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x58, v0
@@ -78476,15 +79235,15 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s12
-; SI-NEXT:    v_readlane_b32 s12, v22, 24
+; SI-NEXT:    v_readlane_b32 s12, v21, 50
 ; SI-NEXT:    s_and_b32 s10, s10, 0xff
-; SI-NEXT:    v_readlane_b32 s13, v22, 25
+; SI-NEXT:    v_readlane_b32 s13, v21, 51
 ; SI-NEXT:    s_lshl_b32 s12, s12, 8
 ; SI-NEXT:    s_or_b32 s10, s10, s12
-; SI-NEXT:    v_readlane_b32 s12, v22, 26
-; SI-NEXT:    v_readlane_b32 s13, v22, 27
+; SI-NEXT:    v_readlane_b32 s12, v21, 52
+; SI-NEXT:    v_readlane_b32 s13, v21, 53
 ; SI-NEXT:    s_and_b32 s12, s12, 0xff
-; SI-NEXT:    v_readlane_b32 s14, v22, 28
+; SI-NEXT:    v_readlane_b32 s14, v21, 54
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_lshl_b32 s13, s14, 24
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
@@ -78495,14 +79254,11 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s10
 ; SI-NEXT:    s_and_b32 s10, s11, 0xff
-; SI-NEXT:    v_readlane_b32 s11, v22, 57
-; SI-NEXT:    s_lshl_b32 s11, s11, 8
+; SI-NEXT:    s_lshl_b32 s11, s71, 8
 ; SI-NEXT:    s_or_b32 s10, s10, s11
-; SI-NEXT:    v_readlane_b32 s11, v22, 56
-; SI-NEXT:    s_and_b32 s11, s11, 0xff
-; SI-NEXT:    v_readlane_b32 s12, v22, 55
+; SI-NEXT:    s_and_b32 s11, s80, 0xff
 ; SI-NEXT:    s_lshl_b32 s11, s11, 16
-; SI-NEXT:    s_lshl_b32 s12, s12, 24
+; SI-NEXT:    s_lshl_b32 s12, s50, 24
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_or_b32 s11, s12, s11
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x60, v0
@@ -78510,15 +79266,15 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s10
-; SI-NEXT:    v_readlane_b32 s10, v22, 30
+; SI-NEXT:    v_readlane_b32 s10, v21, 56
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s11, v22, 31
+; SI-NEXT:    v_readlane_b32 s11, v21, 57
 ; SI-NEXT:    s_lshl_b32 s10, s10, 8
 ; SI-NEXT:    s_or_b32 s8, s8, s10
-; SI-NEXT:    v_readlane_b32 s10, v22, 32
-; SI-NEXT:    v_readlane_b32 s11, v22, 33
+; SI-NEXT:    v_readlane_b32 s10, v21, 58
+; SI-NEXT:    v_readlane_b32 s11, v21, 59
 ; SI-NEXT:    s_and_b32 s10, s10, 0xff
-; SI-NEXT:    v_readlane_b32 s12, v22, 34
+; SI-NEXT:    v_readlane_b32 s12, v21, 60
 ; SI-NEXT:    s_lshl_b32 s10, s10, 16
 ; SI-NEXT:    s_lshl_b32 s11, s12, 24
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
@@ -78529,14 +79285,11 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s8
 ; SI-NEXT:    s_and_b32 s8, s9, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v22, 54
-; SI-NEXT:    s_lshl_b32 s9, s9, 8
+; SI-NEXT:    s_lshl_b32 s9, s55, 8
 ; SI-NEXT:    s_or_b32 s8, s8, s9
-; SI-NEXT:    v_readlane_b32 s9, v22, 53
-; SI-NEXT:    s_and_b32 s9, s9, 0xff
-; SI-NEXT:    v_readlane_b32 s10, v22, 52
+; SI-NEXT:    s_and_b32 s9, s69, 0xff
 ; SI-NEXT:    s_lshl_b32 s9, s9, 16
-; SI-NEXT:    s_lshl_b32 s10, s10, 24
+; SI-NEXT:    s_lshl_b32 s10, s70, 24
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
 ; SI-NEXT:    s_or_b32 s9, s10, s9
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x68, v0
@@ -78544,15 +79297,15 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s8
-; SI-NEXT:    v_readlane_b32 s8, v22, 36
+; SI-NEXT:    v_readlane_b32 s8, v21, 62
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v22, 37
+; SI-NEXT:    v_readlane_b32 s9, v21, 63
 ; SI-NEXT:    s_lshl_b32 s8, s8, 8
 ; SI-NEXT:    s_or_b32 s6, s6, s8
-; SI-NEXT:    v_readlane_b32 s8, v22, 38
-; SI-NEXT:    v_readlane_b32 s9, v22, 39
+; SI-NEXT:    v_readlane_b32 s8, v22, 0
+; SI-NEXT:    v_readlane_b32 s9, v22, 1
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s10, v22, 40
+; SI-NEXT:    v_readlane_b32 s10, v22, 2
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_lshl_b32 s9, s10, 24
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
@@ -78563,14 +79316,11 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    s_and_b32 s6, s7, 0xff
-; SI-NEXT:    v_readlane_b32 s7, v22, 51
-; SI-NEXT:    s_lshl_b32 s7, s7, 8
+; SI-NEXT:    s_lshl_b32 s7, s54, 8
 ; SI-NEXT:    s_or_b32 s6, s6, s7
-; SI-NEXT:    v_readlane_b32 s7, v22, 50
-; SI-NEXT:    s_and_b32 s7, s7, 0xff
-; SI-NEXT:    v_readlane_b32 s8, v22, 49
+; SI-NEXT:    s_and_b32 s7, s49, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s8, s8, 24
+; SI-NEXT:    s_lshl_b32 s8, s48, 24
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_or_b32 s7, s8, s7
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x70, v0
@@ -78578,13 +79328,15 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
-; SI-NEXT:    v_readlane_b32 s6, v22, 42
+; SI-NEXT:    v_readlane_b32 s6, v22, 4
 ; SI-NEXT:    s_and_b32 s4, s4, 0xff
+; SI-NEXT:    v_readlane_b32 s7, v22, 5
 ; SI-NEXT:    s_lshl_b32 s6, s6, 8
-; SI-NEXT:    v_readlane_b32 s7, v22, 43
 ; SI-NEXT:    s_or_b32 s4, s4, s6
-; SI-NEXT:    s_and_b32 s6, s68, 0xff
-; SI-NEXT:    v_readlane_b32 s8, v22, 44
+; SI-NEXT:    v_readlane_b32 s6, v22, 8
+; SI-NEXT:    v_readlane_b32 s7, v22, 9
+; SI-NEXT:    s_and_b32 s6, s6, 0xff
+; SI-NEXT:    v_readlane_b32 s8, v22, 6
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_lshl_b32 s7, s8, 24
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
@@ -78595,14 +79347,11 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
 ; SI-NEXT:    s_and_b32 s4, s5, 0xff
-; SI-NEXT:    v_readlane_b32 s5, v22, 48
-; SI-NEXT:    s_lshl_b32 s5, s5, 8
+; SI-NEXT:    s_lshl_b32 s5, s39, 8
 ; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_readlane_b32 s5, v22, 47
-; SI-NEXT:    s_and_b32 s5, s5, 0xff
-; SI-NEXT:    v_readlane_b32 s6, v22, 46
+; SI-NEXT:    s_and_b32 s5, s68, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
-; SI-NEXT:    s_lshl_b32 s6, s6, 24
+; SI-NEXT:    s_lshl_b32 s6, s38, 24
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x78, v0
@@ -78611,12 +79360,12 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    v_add_i32_e32 v0, vcc, 0x7c, v0
 ; SI-NEXT:    v_mov_b32_e32 v1, s4
 ; SI-NEXT:    v_readlane_b32 s30, v20, 34
-; SI-NEXT:    v_readlane_b32 s19, v22, 17
-; SI-NEXT:    v_readlane_b32 s17, v22, 23
-; SI-NEXT:    v_readlane_b32 s15, v22, 29
-; SI-NEXT:    v_readlane_b32 s13, v22, 35
-; SI-NEXT:    v_readlane_b32 s11, v22, 41
-; SI-NEXT:    v_readlane_b32 s9, v22, 45
+; SI-NEXT:    v_readlane_b32 s19, v21, 43
+; SI-NEXT:    v_readlane_b32 s17, v21, 49
+; SI-NEXT:    v_readlane_b32 s15, v21, 55
+; SI-NEXT:    v_readlane_b32 s13, v21, 61
+; SI-NEXT:    v_readlane_b32 s11, v22, 3
+; SI-NEXT:    v_readlane_b32 s9, v22, 7
 ; SI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; SI-NEXT:    v_readlane_b32 s31, v20, 35
 ; SI-NEXT:    v_readlane_b32 s99, v20, 33
@@ -78660,187 +79409,6 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v22, s68, 0
-; SI-NEXT:    v_writelane_b32 v22, s69, 1
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 2
-; SI-NEXT:    v_writelane_b32 v22, s69, 3
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 4
-; SI-NEXT:    v_writelane_b32 v22, s69, 5
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 6
-; SI-NEXT:    v_writelane_b32 v22, s69, 7
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 8
-; SI-NEXT:    v_writelane_b32 v22, s69, 9
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 10
-; SI-NEXT:    v_writelane_b32 v22, s69, 11
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 12
-; SI-NEXT:    v_writelane_b32 v22, s69, 13
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 14
-; SI-NEXT:    v_writelane_b32 v22, s69, 15
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 16
-; SI-NEXT:    v_writelane_b32 v22, s69, 17
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 18
-; SI-NEXT:    v_writelane_b32 v22, s69, 19
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 20
-; SI-NEXT:    v_writelane_b32 v22, s69, 21
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 22
-; SI-NEXT:    v_writelane_b32 v22, s69, 23
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 24
-; SI-NEXT:    v_writelane_b32 v22, s69, 25
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 26
-; SI-NEXT:    v_writelane_b32 v22, s69, 27
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 28
-; SI-NEXT:    v_writelane_b32 v22, s69, 29
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 30
-; SI-NEXT:    v_writelane_b32 v22, s69, 31
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 32
-; SI-NEXT:    v_writelane_b32 v22, s69, 33
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 34
-; SI-NEXT:    v_writelane_b32 v22, s69, 35
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr67
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v22, s68, 36
-; SI-NEXT:    v_writelane_b32 v22, s69, 37
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr98
-; SI-NEXT:    ; implicit-def: $sgpr96
-; SI-NEXT:    ; implicit-def: $sgpr86
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    ; implicit-def: $sgpr82
-; SI-NEXT:    ; implicit-def: $sgpr80
-; SI-NEXT:    ; implicit-def: $sgpr70
-; SI-NEXT:    v_writelane_b32 v22, s68, 38
-; SI-NEXT:    v_writelane_b32 v22, s69, 39
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    v_writelane_b32 v22, s68, 40
-; SI-NEXT:    v_writelane_b32 v22, s69, 41
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    v_writelane_b32 v22, s68, 42
-; SI-NEXT:    v_writelane_b32 v22, s69, 43
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    v_writelane_b32 v22, s68, 44
-; SI-NEXT:    v_writelane_b32 v22, s69, 45
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v16i64_to_v128i8_scalar:
 ; VI:       ; %bb.0:
@@ -78902,164 +79470,336 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; VI-NEXT:    s_cmp_lg_u32 s44, 0
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s46, s5, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 2
-; VI-NEXT:    s_lshr_b32 s46, s5, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 3
-; VI-NEXT:    s_lshr_b32 s46, s5, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 4
-; VI-NEXT:    s_lshr_b32 s46, s4, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 5
-; VI-NEXT:    s_lshr_b32 s46, s4, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 6
-; VI-NEXT:    s_lshr_b32 s46, s7, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 7
-; VI-NEXT:    s_lshr_b32 s46, s7, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 8
-; VI-NEXT:    s_lshr_b32 s46, s7, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 9
-; VI-NEXT:    s_lshr_b32 s46, s6, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 10
-; VI-NEXT:    s_lshr_b32 s46, s6, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 11
-; VI-NEXT:    s_lshr_b32 s46, s9, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 12
-; VI-NEXT:    s_lshr_b32 s46, s9, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 13
-; VI-NEXT:    s_lshr_b32 s46, s9, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 14
-; VI-NEXT:    s_lshr_b32 s46, s8, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 15
-; VI-NEXT:    s_lshr_b32 s46, s8, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 16
-; VI-NEXT:    s_lshr_b32 s46, s11, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 17
-; VI-NEXT:    s_lshr_b32 s46, s11, 16
 ; VI-NEXT:    v_writelane_b32 v33, s46, 18
-; VI-NEXT:    s_lshr_b32 s46, s11, 8
+; VI-NEXT:    s_lshr_b32 s46, s4, 16
 ; VI-NEXT:    v_writelane_b32 v33, s46, 19
-; VI-NEXT:    s_lshr_b32 s46, s10, 16
+; VI-NEXT:    s_lshr_b32 s46, s7, 24
 ; VI-NEXT:    v_writelane_b32 v33, s46, 20
-; VI-NEXT:    s_lshr_b32 s46, s10, 8
+; VI-NEXT:    s_lshr_b32 s46, s6, 16
 ; VI-NEXT:    v_writelane_b32 v33, s46, 21
-; VI-NEXT:    s_lshr_b32 s46, s13, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 22
-; VI-NEXT:    s_lshr_b32 s46, s13, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 23
-; VI-NEXT:    s_lshr_b32 s46, s13, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 24
-; VI-NEXT:    s_lshr_b32 s46, s12, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 25
-; VI-NEXT:    s_lshr_b32 s46, s12, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 26
-; VI-NEXT:    s_lshr_b32 s46, s15, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 27
-; VI-NEXT:    s_lshr_b32 s46, s15, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 28
-; VI-NEXT:    s_lshr_b32 s46, s15, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 29
-; VI-NEXT:    s_lshr_b32 s46, s14, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 30
-; VI-NEXT:    s_lshr_b32 s46, s14, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 31
-; VI-NEXT:    s_lshr_b32 s46, s41, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 32
-; VI-NEXT:    s_lshr_b32 s46, s41, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 33
-; VI-NEXT:    s_lshr_b32 s46, s41, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 34
-; VI-NEXT:    s_lshr_b32 s46, s40, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 35
-; VI-NEXT:    s_lshr_b32 s46, s40, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 36
-; VI-NEXT:    s_lshr_b32 s46, s43, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 37
-; VI-NEXT:    s_lshr_b32 s46, s43, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 38
-; VI-NEXT:    s_lshr_b32 s46, s43, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 39
-; VI-NEXT:    s_lshr_b32 s46, s42, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 40
-; VI-NEXT:    s_lshr_b32 s46, s42, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 41
-; VI-NEXT:    s_lshr_b32 s46, s45, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 42
-; VI-NEXT:    s_lshr_b32 s46, s45, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 43
-; VI-NEXT:    s_lshr_b32 s46, s45, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 44
-; VI-NEXT:    s_lshr_b32 s46, s44, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 45
-; VI-NEXT:    s_lshr_b32 s46, s44, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 46
-; VI-NEXT:    s_lshr_b32 s46, s29, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 47
-; VI-NEXT:    s_lshr_b32 s46, s29, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 48
-; VI-NEXT:    s_lshr_b32 s46, s28, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 49
-; VI-NEXT:    s_lshr_b32 s46, s27, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 50
-; VI-NEXT:    s_lshr_b32 s46, s27, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 51
-; VI-NEXT:    s_lshr_b32 s46, s26, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 52
-; VI-NEXT:    s_lshr_b32 s46, s25, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 53
-; VI-NEXT:    s_lshr_b32 s46, s25, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 54
-; VI-NEXT:    s_lshr_b32 s46, s24, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 55
-; VI-NEXT:    s_lshr_b32 s46, s22, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 56
-; VI-NEXT:    s_lshr_b32 s46, s21, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 57
-; VI-NEXT:    s_lshr_b64 s[56:57], s[4:5], 24
+; VI-NEXT:    s_lshr_b32 s57, s45, 8
+; VI-NEXT:    v_writelane_b32 v33, s57, 22
+; VI-NEXT:    s_lshr_b32 s57, s44, 16
+; VI-NEXT:    v_writelane_b32 v33, s57, 23
+; VI-NEXT:    s_lshr_b32 s57, s44, 8
+; VI-NEXT:    v_writelane_b32 v33, s57, 24
+; VI-NEXT:    s_lshr_b32 s57, s29, 24
+; VI-NEXT:    v_writelane_b32 v33, s57, 25
+; VI-NEXT:    s_lshr_b32 s57, s29, 16
+; VI-NEXT:    v_writelane_b32 v33, s57, 26
+; VI-NEXT:    s_lshr_b32 s56, s29, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 27
+; VI-NEXT:    s_lshr_b32 s57, s28, 16
+; VI-NEXT:    v_writelane_b32 v33, s57, 28
+; VI-NEXT:    s_lshr_b32 s56, s28, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 29
+; VI-NEXT:    s_lshr_b32 s57, s27, 24
+; VI-NEXT:    v_writelane_b32 v33, s57, 30
+; VI-NEXT:    s_lshr_b32 s57, s27, 16
+; VI-NEXT:    v_writelane_b32 v33, s57, 31
+; VI-NEXT:    s_lshr_b32 s56, s27, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 32
+; VI-NEXT:    s_lshr_b32 s57, s26, 16
+; VI-NEXT:    v_writelane_b32 v33, s57, 33
+; VI-NEXT:    s_lshr_b32 s56, s26, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 34
+; VI-NEXT:    s_lshr_b32 s57, s25, 24
+; VI-NEXT:    v_writelane_b32 v33, s57, 35
+; VI-NEXT:    s_lshr_b32 s57, s25, 16
+; VI-NEXT:    v_writelane_b32 v33, s57, 36
+; VI-NEXT:    s_lshr_b32 s56, s25, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 37
+; VI-NEXT:    s_lshr_b32 s57, s24, 16
+; VI-NEXT:    v_writelane_b32 v33, s57, 38
+; VI-NEXT:    s_lshr_b32 s56, s24, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 39
+; VI-NEXT:    s_lshr_b32 s56, s23, 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 40
+; VI-NEXT:    s_lshr_b32 s56, s23, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 41
+; VI-NEXT:    s_lshr_b32 s56, s23, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 42
+; VI-NEXT:    s_lshr_b32 s56, s22, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 43
+; VI-NEXT:    s_lshr_b32 s56, s22, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 44
+; VI-NEXT:    s_lshr_b32 s56, s21, 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 45
+; VI-NEXT:    s_lshr_b32 s56, s21, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 46
+; VI-NEXT:    s_lshr_b32 s56, s21, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 47
+; VI-NEXT:    s_lshr_b32 s56, s20, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 48
+; VI-NEXT:    s_lshr_b32 s56, s20, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 49
+; VI-NEXT:    s_lshr_b32 s56, s19, 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 50
+; VI-NEXT:    s_lshr_b32 s56, s19, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 51
+; VI-NEXT:    s_lshr_b32 s56, s19, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 52
+; VI-NEXT:    s_lshr_b32 s56, s18, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 53
+; VI-NEXT:    s_lshr_b32 s56, s18, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 54
+; VI-NEXT:    s_lshr_b32 s56, s17, 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 55
+; VI-NEXT:    s_lshr_b32 s56, s17, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 56
+; VI-NEXT:    s_lshr_b32 s56, s17, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 57
+; VI-NEXT:    s_lshr_b32 s56, s16, 16
+; VI-NEXT:    v_writelane_b32 v33, s56, 58
+; VI-NEXT:    s_lshr_b32 s56, s16, 8
+; VI-NEXT:    v_writelane_b32 v33, s56, 59
+; VI-NEXT:    s_lshr_b64 s[88:89], s[4:5], 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 16
+; VI-NEXT:    v_writelane_b32 v33, s89, 17
+; VI-NEXT:    s_lshr_b64 s[56:57], s[6:7], 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 14
+; VI-NEXT:    v_writelane_b32 v33, s57, 15
+; VI-NEXT:    s_lshr_b64 s[56:57], s[8:9], 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 12
+; VI-NEXT:    v_writelane_b32 v33, s57, 13
+; VI-NEXT:    s_lshr_b64 s[56:57], s[10:11], 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 10
+; VI-NEXT:    v_writelane_b32 v33, s57, 11
+; VI-NEXT:    s_lshr_b64 s[56:57], s[12:13], 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 8
+; VI-NEXT:    v_writelane_b32 v33, s57, 9
+; VI-NEXT:    s_lshr_b64 s[56:57], s[14:15], 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 6
+; VI-NEXT:    v_writelane_b32 v33, s57, 7
+; VI-NEXT:    s_lshr_b64 s[56:57], s[40:41], 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 4
+; VI-NEXT:    v_writelane_b32 v33, s57, 5
+; VI-NEXT:    s_lshr_b64 s[56:57], s[42:43], 24
+; VI-NEXT:    v_writelane_b32 v33, s56, 2
+; VI-NEXT:    v_writelane_b32 v33, s57, 3
+; VI-NEXT:    s_lshr_b64 s[56:57], s[44:45], 24
 ; VI-NEXT:    v_writelane_b32 v33, s56, 0
-; VI-NEXT:    s_lshr_b32 s64, s29, 8
-; VI-NEXT:    s_lshr_b32 s50, s28, 8
-; VI-NEXT:    s_lshr_b32 s86, s27, 8
-; VI-NEXT:    s_lshr_b32 s51, s26, 8
-; VI-NEXT:    s_lshr_b32 s66, s25, 8
-; VI-NEXT:    s_lshr_b32 s54, s24, 8
-; VI-NEXT:    s_lshr_b32 s71, s23, 24
-; VI-NEXT:    s_lshr_b32 s70, s23, 16
-; VI-NEXT:    s_lshr_b32 s52, s23, 8
-; VI-NEXT:    s_lshr_b32 s55, s22, 8
-; VI-NEXT:    s_lshr_b32 s68, s21, 24
-; VI-NEXT:    s_lshr_b32 s65, s21, 8
-; VI-NEXT:    s_lshr_b32 s84, s20, 16
-; VI-NEXT:    s_lshr_b32 s69, s20, 8
-; VI-NEXT:    s_lshr_b32 s80, s19, 24
-; VI-NEXT:    s_lshr_b32 s87, s19, 16
-; VI-NEXT:    s_lshr_b32 s46, s19, 8
-; VI-NEXT:    s_lshr_b32 s81, s18, 16
-; VI-NEXT:    s_lshr_b32 s47, s18, 8
-; VI-NEXT:    s_lshr_b32 s83, s17, 24
-; VI-NEXT:    s_lshr_b32 s85, s17, 16
-; VI-NEXT:    s_lshr_b32 s67, s17, 8
-; VI-NEXT:    s_lshr_b32 s53, s16, 16
-; VI-NEXT:    s_lshr_b32 s82, s16, 8
+; VI-NEXT:    s_lshr_b32 s59, s5, 16
+; VI-NEXT:    s_lshr_b32 s70, s5, 8
+; VI-NEXT:    s_lshr_b32 s68, s4, 8
+; VI-NEXT:    s_lshr_b32 s71, s7, 16
+; VI-NEXT:    s_lshr_b32 s81, s7, 8
+; VI-NEXT:    s_lshr_b32 s58, s6, 8
+; VI-NEXT:    s_lshr_b32 s80, s9, 24
+; VI-NEXT:    s_lshr_b32 s84, s9, 16
+; VI-NEXT:    s_lshr_b32 s53, s9, 8
+; VI-NEXT:    s_lshr_b32 s83, s8, 16
+; VI-NEXT:    s_lshr_b32 s61, s8, 8
+; VI-NEXT:    s_lshr_b32 s60, s11, 24
+; VI-NEXT:    s_lshr_b32 s64, s11, 16
+; VI-NEXT:    s_lshr_b32 s63, s11, 8
+; VI-NEXT:    s_lshr_b32 s62, s10, 16
+; VI-NEXT:    s_lshr_b32 s50, s10, 8
+; VI-NEXT:    s_lshr_b32 s73, s13, 24
+; VI-NEXT:    s_lshr_b32 s72, s13, 16
+; VI-NEXT:    s_lshr_b32 s85, s13, 8
+; VI-NEXT:    s_lshr_b32 s51, s12, 16
+; VI-NEXT:    s_lshr_b32 s75, s12, 8
+; VI-NEXT:    s_lshr_b32 s74, s15, 24
+; VI-NEXT:    s_lshr_b32 s66, s15, 16
+; VI-NEXT:    s_lshr_b32 s77, s15, 8
+; VI-NEXT:    s_lshr_b32 s76, s14, 16
+; VI-NEXT:    s_lshr_b32 s54, s14, 8
+; VI-NEXT:    s_lshr_b32 s52, s41, 24
+; VI-NEXT:    s_lshr_b32 s55, s41, 16
+; VI-NEXT:    s_lshr_b32 s65, s41, 8
+; VI-NEXT:    s_lshr_b32 s69, s40, 16
+; VI-NEXT:    s_lshr_b32 s46, s40, 8
+; VI-NEXT:    s_lshr_b32 s78, s43, 24
+; VI-NEXT:    s_lshr_b32 s67, s43, 16
+; VI-NEXT:    s_lshr_b32 s79, s43, 8
+; VI-NEXT:    s_lshr_b32 s82, s42, 16
+; VI-NEXT:    s_lshr_b32 s47, s42, 8
+; VI-NEXT:    s_lshr_b32 s86, s45, 24
+; VI-NEXT:    s_lshr_b32 s87, s45, 16
 ; VI-NEXT:    v_writelane_b32 v33, s57, 1
-; VI-NEXT:    s_lshr_b64 s[56:57], s[6:7], 24
-; VI-NEXT:    s_lshr_b64 s[58:59], s[8:9], 24
-; VI-NEXT:    s_lshr_b64 s[60:61], s[10:11], 24
-; VI-NEXT:    s_lshr_b64 s[62:63], s[12:13], 24
-; VI-NEXT:    s_lshr_b64 s[72:73], s[14:15], 24
-; VI-NEXT:    s_lshr_b64 s[74:75], s[40:41], 24
-; VI-NEXT:    s_lshr_b64 s[76:77], s[42:43], 24
-; VI-NEXT:    s_lshr_b64 s[78:79], s[44:45], 24
 ; VI-NEXT:    s_lshr_b64 s[88:89], s[28:29], 24
 ; VI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 24
-; VI-NEXT:    s_lshr_b64 s[30:31], s[24:25], 24
-; VI-NEXT:    s_lshr_b64 s[34:35], s[22:23], 24
-; VI-NEXT:    s_lshr_b64 s[36:37], s[20:21], 24
-; VI-NEXT:    s_lshr_b64 s[38:39], s[18:19], 24
-; VI-NEXT:    s_lshr_b64 s[48:49], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b64 vcc, s[24:25], 24
+; VI-NEXT:    s_lshr_b64 s[30:31], s[22:23], 24
+; VI-NEXT:    s_lshr_b64 s[34:35], s[20:21], 24
+; VI-NEXT:    s_lshr_b64 s[36:37], s[18:19], 24
+; VI-NEXT:    s_lshr_b64 s[38:39], s[16:17], 24
+; VI-NEXT:    s_mov_b64 s[48:49], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; kill: killed $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; kill: killed $sgpr57
+; VI-NEXT:    s_mov_b64 s[48:49], -1
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; kill: killed $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr87
+; VI-NEXT:    ; implicit-def: $sgpr86
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr82
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr67
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr69
+; VI-NEXT:    ; implicit-def: $sgpr65
+; VI-NEXT:    ; implicit-def: $sgpr55
+; VI-NEXT:    ; implicit-def: $sgpr52
+; VI-NEXT:    ; implicit-def: $sgpr54
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr66
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr51
+; VI-NEXT:    ; implicit-def: $sgpr85
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr50
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr64
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr83
+; VI-NEXT:    ; implicit-def: $sgpr53
+; VI-NEXT:    ; implicit-def: $sgpr84
+; VI-NEXT:    ; implicit-def: $sgpr80
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr81
+; VI-NEXT:    ; implicit-def: $sgpr71
+; VI-NEXT:    ; implicit-def: $sgpr68
+; VI-NEXT:    ; implicit-def: $sgpr70
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr38
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; kill: killed $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 0
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 1
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 2
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 3
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 4
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 5
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 6
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 7
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 8
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 9
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 10
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 11
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 12
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 13
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 14
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 15
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s56, 16
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s57, 17
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[48:49], s[48:49], exec
+; VI-NEXT:    s_cselect_b32 s57, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s57, 1
+; VI-NEXT:    v_readlane_b32 s48, v33, 18
+; VI-NEXT:    s_mov_b32 s49, s59
+; VI-NEXT:    v_readlane_b32 s56, v33, 19
+; VI-NEXT:    s_mov_b32 s57, s68
+; VI-NEXT:    v_readlane_b32 s68, v33, 20
+; VI-NEXT:    v_readlane_b32 s59, v33, 21
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -79092,475 +79832,471 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; VI-NEXT:    s_addc_u32 s7, s7, 0
 ; VI-NEXT:    s_add_u32 s4, s4, 3
 ; VI-NEXT:    s_addc_u32 s5, s5, 0
-; VI-NEXT:    s_lshr_b32 s46, s5, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 2
-; VI-NEXT:    s_lshr_b32 s46, s5, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 3
-; VI-NEXT:    s_lshr_b32 s46, s5, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 4
-; VI-NEXT:    s_lshr_b32 s46, s4, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 5
-; VI-NEXT:    s_lshr_b32 s46, s4, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 6
-; VI-NEXT:    s_lshr_b32 s46, s7, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 7
-; VI-NEXT:    s_lshr_b32 s46, s7, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 8
-; VI-NEXT:    s_lshr_b32 s46, s7, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 9
-; VI-NEXT:    s_lshr_b32 s46, s6, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 10
-; VI-NEXT:    s_lshr_b32 s46, s6, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 11
-; VI-NEXT:    s_lshr_b32 s46, s9, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 12
-; VI-NEXT:    s_lshr_b32 s46, s9, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 13
-; VI-NEXT:    s_lshr_b32 s46, s9, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 14
-; VI-NEXT:    s_lshr_b32 s46, s8, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 15
-; VI-NEXT:    s_lshr_b32 s46, s8, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 16
-; VI-NEXT:    s_lshr_b32 s46, s11, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 17
-; VI-NEXT:    s_lshr_b32 s46, s11, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 18
-; VI-NEXT:    s_lshr_b32 s46, s11, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 19
-; VI-NEXT:    s_lshr_b32 s46, s10, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 20
-; VI-NEXT:    s_lshr_b32 s46, s10, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 21
-; VI-NEXT:    s_lshr_b32 s46, s13, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 22
-; VI-NEXT:    s_lshr_b32 s46, s13, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 23
-; VI-NEXT:    s_lshr_b32 s46, s13, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 24
-; VI-NEXT:    s_lshr_b32 s46, s12, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 25
-; VI-NEXT:    s_lshr_b32 s46, s12, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 26
-; VI-NEXT:    s_lshr_b32 s46, s15, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 27
-; VI-NEXT:    s_lshr_b32 s46, s15, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 28
-; VI-NEXT:    s_lshr_b32 s46, s15, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 29
-; VI-NEXT:    s_lshr_b32 s46, s14, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 30
-; VI-NEXT:    s_lshr_b32 s46, s14, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 31
-; VI-NEXT:    s_lshr_b32 s46, s41, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 32
-; VI-NEXT:    s_lshr_b32 s46, s41, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 33
-; VI-NEXT:    s_lshr_b32 s46, s41, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 34
-; VI-NEXT:    s_lshr_b32 s46, s40, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 35
+; VI-NEXT:    s_lshr_b32 s88, s45, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 22
+; VI-NEXT:    s_lshr_b32 s88, s44, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 23
+; VI-NEXT:    s_lshr_b32 s88, s44, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 24
+; VI-NEXT:    s_lshr_b32 s88, s29, 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 25
+; VI-NEXT:    s_lshr_b32 s88, s29, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 26
+; VI-NEXT:    s_lshr_b32 s88, s29, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 27
+; VI-NEXT:    s_lshr_b32 s88, s28, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 28
+; VI-NEXT:    s_lshr_b32 s88, s28, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 29
+; VI-NEXT:    s_lshr_b32 s88, s27, 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 30
+; VI-NEXT:    s_lshr_b32 s88, s27, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 31
+; VI-NEXT:    s_lshr_b32 s88, s27, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 32
+; VI-NEXT:    s_lshr_b32 s88, s26, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 33
+; VI-NEXT:    s_lshr_b32 s88, s26, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 34
+; VI-NEXT:    s_lshr_b32 s88, s25, 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 35
+; VI-NEXT:    s_lshr_b32 s88, s25, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 36
+; VI-NEXT:    s_lshr_b32 s88, s25, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 37
+; VI-NEXT:    s_lshr_b32 s88, s24, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 38
+; VI-NEXT:    s_lshr_b32 s88, s24, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 39
+; VI-NEXT:    s_lshr_b32 s88, s23, 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 40
+; VI-NEXT:    s_lshr_b32 s88, s23, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 41
+; VI-NEXT:    s_lshr_b32 s88, s23, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 42
+; VI-NEXT:    s_lshr_b32 s88, s22, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 43
+; VI-NEXT:    s_lshr_b32 s88, s22, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 44
+; VI-NEXT:    s_lshr_b32 s88, s21, 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 45
+; VI-NEXT:    s_lshr_b32 s88, s21, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 46
+; VI-NEXT:    s_lshr_b32 s88, s21, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 47
+; VI-NEXT:    s_lshr_b32 s88, s20, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 48
+; VI-NEXT:    s_lshr_b32 s88, s20, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 49
+; VI-NEXT:    s_lshr_b32 s88, s19, 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 50
+; VI-NEXT:    s_lshr_b32 s88, s19, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 51
+; VI-NEXT:    s_lshr_b32 s88, s19, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 52
+; VI-NEXT:    s_lshr_b32 s88, s18, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 53
+; VI-NEXT:    s_lshr_b32 s88, s18, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 54
+; VI-NEXT:    s_lshr_b32 s88, s17, 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 55
+; VI-NEXT:    s_lshr_b32 s88, s17, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 56
+; VI-NEXT:    s_lshr_b32 s88, s17, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 57
+; VI-NEXT:    s_lshr_b32 s88, s16, 16
+; VI-NEXT:    v_writelane_b32 v33, s88, 58
+; VI-NEXT:    s_lshr_b32 s88, s16, 8
+; VI-NEXT:    v_writelane_b32 v33, s88, 59
+; VI-NEXT:    s_lshr_b64 s[88:89], s[4:5], 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 16
+; VI-NEXT:    v_writelane_b32 v33, s89, 17
+; VI-NEXT:    s_lshr_b64 s[88:89], s[6:7], 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 14
+; VI-NEXT:    v_writelane_b32 v33, s89, 15
+; VI-NEXT:    s_lshr_b64 s[88:89], s[8:9], 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 12
+; VI-NEXT:    v_writelane_b32 v33, s89, 13
+; VI-NEXT:    s_lshr_b64 s[88:89], s[10:11], 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 10
+; VI-NEXT:    v_writelane_b32 v33, s89, 11
+; VI-NEXT:    s_lshr_b64 s[88:89], s[12:13], 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 8
+; VI-NEXT:    v_writelane_b32 v33, s89, 9
+; VI-NEXT:    s_lshr_b64 s[88:89], s[14:15], 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 6
+; VI-NEXT:    v_writelane_b32 v33, s89, 7
+; VI-NEXT:    s_lshr_b64 s[88:89], s[40:41], 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 4
+; VI-NEXT:    v_writelane_b32 v33, s89, 5
+; VI-NEXT:    s_lshr_b64 s[88:89], s[42:43], 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 2
+; VI-NEXT:    v_writelane_b32 v33, s89, 3
+; VI-NEXT:    s_lshr_b64 s[88:89], s[44:45], 24
+; VI-NEXT:    v_writelane_b32 v33, s88, 0
+; VI-NEXT:    s_lshr_b32 s48, s5, 24
+; VI-NEXT:    s_lshr_b32 s49, s5, 16
+; VI-NEXT:    s_lshr_b32 s70, s5, 8
+; VI-NEXT:    s_lshr_b32 s56, s4, 16
+; VI-NEXT:    s_lshr_b32 s57, s4, 8
+; VI-NEXT:    s_lshr_b32 s68, s7, 24
+; VI-NEXT:    s_lshr_b32 s71, s7, 16
+; VI-NEXT:    s_lshr_b32 s81, s7, 8
+; VI-NEXT:    s_lshr_b32 s59, s6, 16
+; VI-NEXT:    s_lshr_b32 s58, s6, 8
+; VI-NEXT:    s_lshr_b32 s80, s9, 24
+; VI-NEXT:    s_lshr_b32 s84, s9, 16
+; VI-NEXT:    s_lshr_b32 s53, s9, 8
+; VI-NEXT:    s_lshr_b32 s83, s8, 16
+; VI-NEXT:    s_lshr_b32 s61, s8, 8
+; VI-NEXT:    s_lshr_b32 s60, s11, 24
+; VI-NEXT:    s_lshr_b32 s64, s11, 16
+; VI-NEXT:    s_lshr_b32 s63, s11, 8
+; VI-NEXT:    s_lshr_b32 s62, s10, 16
+; VI-NEXT:    s_lshr_b32 s50, s10, 8
+; VI-NEXT:    s_lshr_b32 s73, s13, 24
+; VI-NEXT:    s_lshr_b32 s72, s13, 16
+; VI-NEXT:    s_lshr_b32 s85, s13, 8
+; VI-NEXT:    s_lshr_b32 s51, s12, 16
+; VI-NEXT:    s_lshr_b32 s75, s12, 8
+; VI-NEXT:    s_lshr_b32 s74, s15, 24
+; VI-NEXT:    s_lshr_b32 s66, s15, 16
+; VI-NEXT:    s_lshr_b32 s77, s15, 8
+; VI-NEXT:    s_lshr_b32 s76, s14, 16
+; VI-NEXT:    s_lshr_b32 s54, s14, 8
+; VI-NEXT:    s_lshr_b32 s52, s41, 24
+; VI-NEXT:    s_lshr_b32 s55, s41, 16
+; VI-NEXT:    s_lshr_b32 s65, s41, 8
+; VI-NEXT:    s_lshr_b32 s69, s40, 16
 ; VI-NEXT:    s_lshr_b32 s46, s40, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 36
-; VI-NEXT:    s_lshr_b32 s46, s43, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 37
-; VI-NEXT:    s_lshr_b32 s46, s43, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 38
-; VI-NEXT:    s_lshr_b32 s46, s43, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 39
-; VI-NEXT:    s_lshr_b32 s46, s42, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 40
-; VI-NEXT:    s_lshr_b32 s46, s42, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 41
-; VI-NEXT:    s_lshr_b32 s46, s45, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 42
-; VI-NEXT:    s_lshr_b32 s46, s45, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 43
-; VI-NEXT:    s_lshr_b32 s46, s45, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 44
-; VI-NEXT:    s_lshr_b32 s46, s44, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 45
-; VI-NEXT:    s_lshr_b32 s46, s44, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 46
-; VI-NEXT:    s_lshr_b32 s46, s29, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 47
-; VI-NEXT:    s_lshr_b32 s46, s29, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 48
-; VI-NEXT:    s_lshr_b32 s46, s28, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 49
-; VI-NEXT:    s_lshr_b32 s46, s27, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 50
-; VI-NEXT:    s_lshr_b32 s46, s27, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 51
-; VI-NEXT:    s_lshr_b32 s46, s26, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 52
-; VI-NEXT:    s_lshr_b32 s46, s25, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 53
-; VI-NEXT:    s_lshr_b32 s46, s25, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 54
-; VI-NEXT:    s_lshr_b32 s46, s24, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 55
-; VI-NEXT:    s_lshr_b32 s46, s22, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 56
-; VI-NEXT:    s_lshr_b32 s46, s21, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 57
-; VI-NEXT:    s_lshr_b64 s[56:57], s[4:5], 24
-; VI-NEXT:    v_writelane_b32 v33, s56, 0
-; VI-NEXT:    s_lshr_b32 s64, s29, 8
-; VI-NEXT:    s_lshr_b32 s50, s28, 8
-; VI-NEXT:    s_lshr_b32 s86, s27, 8
-; VI-NEXT:    s_lshr_b32 s51, s26, 8
-; VI-NEXT:    s_lshr_b32 s66, s25, 8
-; VI-NEXT:    s_lshr_b32 s54, s24, 8
-; VI-NEXT:    s_lshr_b32 s71, s23, 24
-; VI-NEXT:    s_lshr_b32 s70, s23, 16
-; VI-NEXT:    s_lshr_b32 s52, s23, 8
-; VI-NEXT:    s_lshr_b32 s55, s22, 8
-; VI-NEXT:    s_lshr_b32 s68, s21, 24
-; VI-NEXT:    s_lshr_b32 s65, s21, 8
-; VI-NEXT:    s_lshr_b32 s84, s20, 16
-; VI-NEXT:    s_lshr_b32 s69, s20, 8
-; VI-NEXT:    s_lshr_b32 s80, s19, 24
-; VI-NEXT:    s_lshr_b32 s87, s19, 16
-; VI-NEXT:    s_lshr_b32 s46, s19, 8
-; VI-NEXT:    s_lshr_b32 s81, s18, 16
-; VI-NEXT:    s_lshr_b32 s47, s18, 8
-; VI-NEXT:    s_lshr_b32 s83, s17, 24
-; VI-NEXT:    s_lshr_b32 s85, s17, 16
-; VI-NEXT:    s_lshr_b32 s67, s17, 8
-; VI-NEXT:    s_lshr_b32 s53, s16, 16
-; VI-NEXT:    s_lshr_b32 s82, s16, 8
-; VI-NEXT:    v_writelane_b32 v33, s57, 1
-; VI-NEXT:    s_lshr_b64 s[56:57], s[6:7], 24
-; VI-NEXT:    s_lshr_b64 s[58:59], s[8:9], 24
-; VI-NEXT:    s_lshr_b64 s[60:61], s[10:11], 24
-; VI-NEXT:    s_lshr_b64 s[62:63], s[12:13], 24
-; VI-NEXT:    s_lshr_b64 s[72:73], s[14:15], 24
-; VI-NEXT:    s_lshr_b64 s[74:75], s[40:41], 24
-; VI-NEXT:    s_lshr_b64 s[76:77], s[42:43], 24
-; VI-NEXT:    s_lshr_b64 s[78:79], s[44:45], 24
+; VI-NEXT:    s_lshr_b32 s78, s43, 24
+; VI-NEXT:    s_lshr_b32 s67, s43, 16
+; VI-NEXT:    s_lshr_b32 s79, s43, 8
+; VI-NEXT:    s_lshr_b32 s82, s42, 16
+; VI-NEXT:    s_lshr_b32 s47, s42, 8
+; VI-NEXT:    s_lshr_b32 s86, s45, 24
+; VI-NEXT:    s_lshr_b32 s87, s45, 16
+; VI-NEXT:    v_writelane_b32 v33, s89, 1
 ; VI-NEXT:    s_lshr_b64 s[88:89], s[28:29], 24
 ; VI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 24
-; VI-NEXT:    s_lshr_b64 s[30:31], s[24:25], 24
-; VI-NEXT:    s_lshr_b64 s[34:35], s[22:23], 24
-; VI-NEXT:    s_lshr_b64 s[36:37], s[20:21], 24
-; VI-NEXT:    s_lshr_b64 s[38:39], s[18:19], 24
-; VI-NEXT:    s_lshr_b64 s[48:49], s[16:17], 24
-; VI-NEXT:  .LBB57_3: ; %end
-; VI-NEXT:    v_mov_b32_e32 v9, s48
+; VI-NEXT:    s_lshr_b64 vcc, s[24:25], 24
+; VI-NEXT:    s_lshr_b64 s[30:31], s[22:23], 24
+; VI-NEXT:    s_lshr_b64 s[34:35], s[20:21], 24
+; VI-NEXT:    s_lshr_b64 s[36:37], s[18:19], 24
+; VI-NEXT:    s_lshr_b64 s[38:39], s[16:17], 24
+; VI-NEXT:  .LBB57_5: ; %end
+; VI-NEXT:    v_readlane_b32 s89, v33, 59
+; VI-NEXT:    v_mov_b32_e32 v2, s89
+; VI-NEXT:    v_readlane_b32 s89, v33, 57
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
-; VI-NEXT:    v_mov_b32_e32 v2, s82
-; VI-NEXT:    v_perm_b32 v9, s53, v9, v1
+; VI-NEXT:    v_mov_b32_e32 v4, s89
 ; VI-NEXT:    v_perm_b32 v3, s16, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v24, s83
+; VI-NEXT:    v_readlane_b32 s16, v33, 54
+; VI-NEXT:    v_perm_b32 v2, s17, v4, v1
+; VI-NEXT:    v_mov_b32_e32 v4, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 52
+; VI-NEXT:    v_mov_b32_e32 v6, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 49
+; VI-NEXT:    v_perm_b32 v5, s18, v4, v1
+; VI-NEXT:    v_perm_b32 v4, s19, v6, v1
+; VI-NEXT:    v_mov_b32_e32 v6, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 47
+; VI-NEXT:    v_mov_b32_e32 v8, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 44
+; VI-NEXT:    v_perm_b32 v7, s20, v6, v1
+; VI-NEXT:    v_perm_b32 v6, s21, v8, v1
+; VI-NEXT:    v_mov_b32_e32 v8, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 42
+; VI-NEXT:    v_mov_b32_e32 v11, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 39
+; VI-NEXT:    v_perm_b32 v10, s22, v8, v1
+; VI-NEXT:    v_perm_b32 v8, s23, v11, v1
+; VI-NEXT:    v_mov_b32_e32 v11, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 37
+; VI-NEXT:    v_mov_b32_e32 v14, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 34
+; VI-NEXT:    v_perm_b32 v12, s24, v11, v1
+; VI-NEXT:    v_perm_b32 v11, s25, v14, v1
+; VI-NEXT:    v_mov_b32_e32 v14, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 32
+; VI-NEXT:    v_mov_b32_e32 v17, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 29
+; VI-NEXT:    v_perm_b32 v15, s26, v14, v1
+; VI-NEXT:    v_perm_b32 v14, s27, v17, v1
+; VI-NEXT:    v_mov_b32_e32 v17, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 27
+; VI-NEXT:    v_mov_b32_e32 v23, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 0
+; VI-NEXT:    v_mov_b32_e32 v9, s38
+; VI-NEXT:    v_perm_b32 v18, s28, v17, v1
+; VI-NEXT:    v_perm_b32 v17, s29, v23, v1
+; VI-NEXT:    v_mov_b32_e32 v23, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 58
+; VI-NEXT:    v_perm_b32 v9, s16, v9, v1
+; VI-NEXT:    v_readlane_b32 s16, v33, 55
+; VI-NEXT:    v_mov_b32_e32 v24, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 56
 ; VI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
-; VI-NEXT:    v_mov_b32_e32 v4, s67
-; VI-NEXT:    v_perm_b32 v24, s85, v24, v1
+; VI-NEXT:    v_perm_b32 v24, s16, v24, v1
 ; VI-NEXT:    v_or_b32_e32 v3, v3, v9
-; VI-NEXT:    v_perm_b32 v2, s17, v4, v1
-; VI-NEXT:    v_mov_b32_e32 v13, s38
+; VI-NEXT:    v_mov_b32_e32 v13, s36
+; VI-NEXT:    v_readlane_b32 s16, v33, 53
 ; VI-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v24
-; VI-NEXT:    v_mov_b32_e32 v4, s47
-; VI-NEXT:    v_perm_b32 v13, s81, v13, v1
+; VI-NEXT:    v_mov_b32_e32 v20, vcc_lo
+; VI-NEXT:    v_perm_b32 v13, s16, v13, v1
+; VI-NEXT:    v_readlane_b32 s16, v33, 50
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 4, v0
-; VI-NEXT:    v_perm_b32 v5, s18, v4, v1
-; VI-NEXT:    v_mov_b32_e32 v25, s80
+; VI-NEXT:    v_mov_b32_e32 v25, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 51
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v13
-; VI-NEXT:    v_mov_b32_e32 v6, s46
-; VI-NEXT:    v_perm_b32 v25, s87, v25, v1
+; VI-NEXT:    v_perm_b32 v25, s16, v25, v1
 ; VI-NEXT:    v_or_b32_e32 v2, v5, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 8, v0
-; VI-NEXT:    v_perm_b32 v4, s19, v6, v1
-; VI-NEXT:    v_mov_b32_e32 v17, s36
+; VI-NEXT:    v_mov_b32_e32 v16, s34
+; VI-NEXT:    v_readlane_b32 s16, v33, 48
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v25
-; VI-NEXT:    v_mov_b32_e32 v6, s69
-; VI-NEXT:    v_perm_b32 v17, s84, v17, v1
+; VI-NEXT:    v_perm_b32 v16, s16, v16, v1
+; VI-NEXT:    v_readlane_b32 s16, v33, 45
 ; VI-NEXT:    v_or_b32_e32 v2, v4, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 12, v0
-; VI-NEXT:    v_perm_b32 v7, s20, v6, v1
-; VI-NEXT:    v_mov_b32_e32 v26, s68
-; VI-NEXT:    v_readlane_b32 s16, v33, 57
+; VI-NEXT:    v_mov_b32_e32 v26, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 46
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v17
-; VI-NEXT:    v_mov_b32_e32 v8, s65
+; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v16
 ; VI-NEXT:    v_perm_b32 v26, s16, v26, v1
 ; VI-NEXT:    v_or_b32_e32 v2, v7, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 16, v0
-; VI-NEXT:    v_perm_b32 v6, s21, v8, v1
-; VI-NEXT:    v_mov_b32_e32 v19, s34
-; VI-NEXT:    v_readlane_b32 s16, v33, 56
+; VI-NEXT:    v_mov_b32_e32 v19, s30
+; VI-NEXT:    v_readlane_b32 s16, v33, 43
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v26
-; VI-NEXT:    v_mov_b32_e32 v8, s55
 ; VI-NEXT:    v_perm_b32 v19, s16, v19, v1
+; VI-NEXT:    v_readlane_b32 s16, v33, 40
 ; VI-NEXT:    v_or_b32_e32 v2, v6, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 20, v0
-; VI-NEXT:    v_perm_b32 v10, s22, v8, v1
-; VI-NEXT:    v_mov_b32_e32 v27, s71
+; VI-NEXT:    v_mov_b32_e32 v27, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 41
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v19
-; VI-NEXT:    v_mov_b32_e32 v11, s52
-; VI-NEXT:    v_perm_b32 v27, s70, v27, v1
+; VI-NEXT:    v_perm_b32 v27, s16, v27, v1
 ; VI-NEXT:    v_or_b32_e32 v2, v10, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 24, v0
-; VI-NEXT:    v_perm_b32 v8, s23, v11, v1
-; VI-NEXT:    v_mov_b32_e32 v20, s30
-; VI-NEXT:    v_readlane_b32 s16, v33, 55
+; VI-NEXT:    v_readlane_b32 s16, v33, 38
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v27
-; VI-NEXT:    v_mov_b32_e32 v11, s54
 ; VI-NEXT:    v_perm_b32 v20, s16, v20, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 53
+; VI-NEXT:    v_readlane_b32 s16, v33, 35
 ; VI-NEXT:    v_or_b32_e32 v2, v8, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 28, v0
-; VI-NEXT:    v_perm_b32 v12, s24, v11, v1
 ; VI-NEXT:    v_mov_b32_e32 v28, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 54
+; VI-NEXT:    v_readlane_b32 s16, v33, 36
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v20
-; VI-NEXT:    v_mov_b32_e32 v14, s66
 ; VI-NEXT:    v_perm_b32 v28, s16, v28, v1
 ; VI-NEXT:    v_or_b32_e32 v2, v12, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 32, v0
-; VI-NEXT:    v_perm_b32 v11, s25, v14, v1
 ; VI-NEXT:    v_mov_b32_e32 v21, s90
-; VI-NEXT:    v_readlane_b32 s16, v33, 52
+; VI-NEXT:    v_readlane_b32 s16, v33, 33
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v28
-; VI-NEXT:    v_mov_b32_e32 v14, s51
 ; VI-NEXT:    v_perm_b32 v21, s16, v21, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 50
+; VI-NEXT:    v_readlane_b32 s16, v33, 30
 ; VI-NEXT:    v_or_b32_e32 v2, v11, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 36, v0
-; VI-NEXT:    v_perm_b32 v15, s26, v14, v1
 ; VI-NEXT:    v_mov_b32_e32 v29, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 51
+; VI-NEXT:    v_readlane_b32 s16, v33, 31
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v21
-; VI-NEXT:    v_mov_b32_e32 v16, s86
 ; VI-NEXT:    v_perm_b32 v29, s16, v29, v1
 ; VI-NEXT:    v_or_b32_e32 v2, v15, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 40, v0
-; VI-NEXT:    v_perm_b32 v14, s27, v16, v1
 ; VI-NEXT:    v_mov_b32_e32 v22, s88
-; VI-NEXT:    v_readlane_b32 s16, v33, 49
+; VI-NEXT:    v_readlane_b32 s16, v33, 28
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v29
-; VI-NEXT:    v_mov_b32_e32 v16, s50
 ; VI-NEXT:    v_perm_b32 v22, s16, v22, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 47
+; VI-NEXT:    v_readlane_b32 s16, v33, 25
 ; VI-NEXT:    v_or_b32_e32 v2, v14, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 44, v0
-; VI-NEXT:    v_perm_b32 v18, s28, v16, v1
 ; VI-NEXT:    v_mov_b32_e32 v30, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 48
+; VI-NEXT:    v_readlane_b32 s16, v33, 26
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v22
-; VI-NEXT:    v_mov_b32_e32 v23, s64
 ; VI-NEXT:    v_perm_b32 v30, s16, v30, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 46
+; VI-NEXT:    v_readlane_b32 s16, v33, 24
 ; VI-NEXT:    v_or_b32_e32 v2, v18, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 48, v0
-; VI-NEXT:    v_perm_b32 v16, s29, v23, v1
-; VI-NEXT:    v_mov_b32_e32 v23, s78
 ; VI-NEXT:    v_mov_b32_e32 v31, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 45
+; VI-NEXT:    v_readlane_b32 s16, v33, 23
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v30
 ; VI-NEXT:    v_perm_b32 v23, s16, v23, v1
-; VI-NEXT:    v_or_b32_e32 v2, v16, v2
+; VI-NEXT:    v_or_b32_e32 v2, v17, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 52, v0
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_perm_b32 v2, s44, v31, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v23
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 56, v0
-; VI-NEXT:    v_readlane_b32 s16, v33, 44
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
+; VI-NEXT:    v_readlane_b32 s16, v33, 22
+; VI-NEXT:    v_mov_b32_e32 v3, s86
 ; VI-NEXT:    v_mov_b32_e32 v2, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 42
-; VI-NEXT:    v_mov_b32_e32 v3, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 43
-; VI-NEXT:    v_perm_b32 v3, s16, v3, v1
+; VI-NEXT:    v_perm_b32 v3, s87, v3, v1
+; VI-NEXT:    v_readlane_b32 s17, v33, 1
 ; VI-NEXT:    v_perm_b32 v2, s45, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 60, v0
-; VI-NEXT:    v_readlane_b32 s16, v33, 41
+; VI-NEXT:    v_readlane_b32 s16, v33, 2
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s16
-; VI-NEXT:    v_mov_b32_e32 v3, s76
-; VI-NEXT:    v_readlane_b32 s16, v33, 40
-; VI-NEXT:    v_perm_b32 v3, s16, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s16
+; VI-NEXT:    v_mov_b32_e32 v2, s47
+; VI-NEXT:    v_perm_b32 v3, s82, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s42, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 64, v0
-; VI-NEXT:    v_readlane_b32 s16, v33, 39
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 37
-; VI-NEXT:    v_mov_b32_e32 v3, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 38
-; VI-NEXT:    v_perm_b32 v3, s16, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s78
+; VI-NEXT:    v_mov_b32_e32 v2, s79
+; VI-NEXT:    v_perm_b32 v3, s67, v3, v1
+; VI-NEXT:    v_readlane_b32 s17, v33, 3
 ; VI-NEXT:    v_perm_b32 v2, s43, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x44, v0
-; VI-NEXT:    v_readlane_b32 s16, v33, 36
+; VI-NEXT:    v_readlane_b32 s16, v33, 4
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s16
-; VI-NEXT:    v_mov_b32_e32 v3, s74
-; VI-NEXT:    v_readlane_b32 s16, v33, 35
-; VI-NEXT:    v_perm_b32 v3, s16, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s16
+; VI-NEXT:    v_mov_b32_e32 v2, s46
+; VI-NEXT:    v_perm_b32 v3, s69, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s40, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x48, v0
-; VI-NEXT:    v_readlane_b32 s16, v33, 34
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 32
-; VI-NEXT:    v_mov_b32_e32 v3, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 33
-; VI-NEXT:    v_perm_b32 v3, s16, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s52
+; VI-NEXT:    v_mov_b32_e32 v2, s65
+; VI-NEXT:    v_perm_b32 v3, s55, v3, v1
+; VI-NEXT:    v_readlane_b32 s17, v33, 5
 ; VI-NEXT:    v_perm_b32 v2, s41, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x4c, v0
-; VI-NEXT:    v_readlane_b32 s16, v33, 31
+; VI-NEXT:    v_readlane_b32 s16, v33, 6
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s16
+; VI-NEXT:    v_mov_b32_e32 v3, s16
+; VI-NEXT:    v_mov_b32_e32 v2, s54
+; VI-NEXT:    v_perm_b32 v3, s76, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s14, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s72
-; VI-NEXT:    v_readlane_b32 s14, v33, 30
-; VI-NEXT:    v_perm_b32 v3, s14, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x50, v0
-; VI-NEXT:    v_readlane_b32 s14, v33, 29
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s14
-; VI-NEXT:    v_readlane_b32 s14, v33, 27
-; VI-NEXT:    v_mov_b32_e32 v3, s14
-; VI-NEXT:    v_readlane_b32 s14, v33, 28
-; VI-NEXT:    v_perm_b32 v3, s14, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s74
+; VI-NEXT:    v_mov_b32_e32 v2, s77
+; VI-NEXT:    v_perm_b32 v3, s66, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s15, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x54, v0
-; VI-NEXT:    v_readlane_b32 s14, v33, 26
+; VI-NEXT:    v_readlane_b32 s14, v33, 8
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s14
+; VI-NEXT:    v_mov_b32_e32 v3, s14
+; VI-NEXT:    v_mov_b32_e32 v2, s75
+; VI-NEXT:    v_perm_b32 v3, s51, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s12, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s62
-; VI-NEXT:    v_readlane_b32 s12, v33, 25
-; VI-NEXT:    v_perm_b32 v3, s12, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x58, v0
-; VI-NEXT:    v_readlane_b32 s12, v33, 24
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s12
-; VI-NEXT:    v_readlane_b32 s12, v33, 22
-; VI-NEXT:    v_mov_b32_e32 v3, s12
-; VI-NEXT:    v_readlane_b32 s12, v33, 23
-; VI-NEXT:    v_perm_b32 v3, s12, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s73
+; VI-NEXT:    v_mov_b32_e32 v2, s85
+; VI-NEXT:    v_perm_b32 v3, s72, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s13, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x5c, v0
-; VI-NEXT:    v_readlane_b32 s12, v33, 21
+; VI-NEXT:    v_readlane_b32 s12, v33, 10
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s12
+; VI-NEXT:    v_mov_b32_e32 v3, s12
+; VI-NEXT:    v_mov_b32_e32 v2, s50
+; VI-NEXT:    v_perm_b32 v3, s62, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s10, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s60
-; VI-NEXT:    v_readlane_b32 s10, v33, 20
-; VI-NEXT:    v_perm_b32 v3, s10, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x60, v0
-; VI-NEXT:    v_readlane_b32 s10, v33, 19
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s10
-; VI-NEXT:    v_readlane_b32 s10, v33, 17
-; VI-NEXT:    v_mov_b32_e32 v3, s10
-; VI-NEXT:    v_readlane_b32 s10, v33, 18
-; VI-NEXT:    v_perm_b32 v3, s10, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s60
+; VI-NEXT:    v_mov_b32_e32 v2, s63
+; VI-NEXT:    v_perm_b32 v3, s64, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s11, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x64, v0
-; VI-NEXT:    v_readlane_b32 s10, v33, 16
+; VI-NEXT:    v_readlane_b32 s10, v33, 12
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s10
+; VI-NEXT:    v_mov_b32_e32 v3, s10
+; VI-NEXT:    v_mov_b32_e32 v2, s61
+; VI-NEXT:    v_perm_b32 v3, s83, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s8, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s58
-; VI-NEXT:    v_readlane_b32 s8, v33, 15
-; VI-NEXT:    v_perm_b32 v3, s8, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x68, v0
-; VI-NEXT:    v_readlane_b32 s8, v33, 14
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s8
-; VI-NEXT:    v_readlane_b32 s8, v33, 12
-; VI-NEXT:    v_mov_b32_e32 v3, s8
-; VI-NEXT:    v_readlane_b32 s8, v33, 13
-; VI-NEXT:    v_perm_b32 v3, s8, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s80
+; VI-NEXT:    v_mov_b32_e32 v2, s53
+; VI-NEXT:    v_perm_b32 v3, s84, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s9, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x6c, v0
-; VI-NEXT:    v_readlane_b32 s8, v33, 11
+; VI-NEXT:    v_readlane_b32 s8, v33, 14
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s8
+; VI-NEXT:    v_mov_b32_e32 v3, s8
+; VI-NEXT:    v_mov_b32_e32 v2, s58
+; VI-NEXT:    v_perm_b32 v3, s59, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s6, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s56
-; VI-NEXT:    v_readlane_b32 s6, v33, 10
-; VI-NEXT:    v_perm_b32 v3, s6, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x70, v0
-; VI-NEXT:    v_readlane_b32 s6, v33, 9
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s6
-; VI-NEXT:    v_readlane_b32 s6, v33, 7
-; VI-NEXT:    v_mov_b32_e32 v3, s6
-; VI-NEXT:    v_readlane_b32 s6, v33, 8
-; VI-NEXT:    v_perm_b32 v3, s6, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s68
+; VI-NEXT:    v_mov_b32_e32 v2, s81
+; VI-NEXT:    v_perm_b32 v3, s71, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s7, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x74, v0
-; VI-NEXT:    v_readlane_b32 s6, v33, 6
+; VI-NEXT:    v_readlane_b32 s6, v33, 16
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s6
-; VI-NEXT:    v_readlane_b32 s6, v33, 0
-; VI-NEXT:    v_perm_b32 v2, s4, v2, v1
 ; VI-NEXT:    v_mov_b32_e32 v3, s6
-; VI-NEXT:    v_readlane_b32 s4, v33, 5
-; VI-NEXT:    v_perm_b32 v3, s4, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v2, s57
+; VI-NEXT:    v_perm_b32 v3, s56, v3, v1
+; VI-NEXT:    v_perm_b32 v2, s4, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x78, v0
-; VI-NEXT:    v_readlane_b32 s4, v33, 4
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s4
-; VI-NEXT:    v_readlane_b32 s4, v33, 2
-; VI-NEXT:    v_mov_b32_e32 v3, s4
-; VI-NEXT:    v_readlane_b32 s4, v33, 3
+; VI-NEXT:    v_mov_b32_e32 v2, s70
+; VI-NEXT:    v_mov_b32_e32 v3, s48
 ; VI-NEXT:    v_perm_b32 v2, s5, v2, v1
-; VI-NEXT:    v_perm_b32 v1, s4, v3, v1
+; VI-NEXT:    v_perm_b32 v1, s49, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v1, v2, v1
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x7c, v0
 ; VI-NEXT:    v_readlane_b32 s30, v32, 30
-; VI-NEXT:    v_readlane_b32 s7, v33, 1
+; VI-NEXT:    v_readlane_b32 s17, v33, 7
+; VI-NEXT:    v_readlane_b32 s15, v33, 9
+; VI-NEXT:    v_readlane_b32 s13, v33, 11
+; VI-NEXT:    v_readlane_b32 s11, v33, 13
+; VI-NEXT:    v_readlane_b32 s9, v33, 15
+; VI-NEXT:    v_readlane_b32 s7, v33, 17
 ; VI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; VI-NEXT:    v_readlane_b32 s31, v32, 31
 ; VI-NEXT:    v_readlane_b32 s87, v32, 29
@@ -79599,162 +80335,6 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr71
-; VI-NEXT:    ; implicit-def: $sgpr70
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    v_writelane_b32 v33, s70, 0
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr82
-; VI-NEXT:    ; implicit-def: $sgpr53
-; VI-NEXT:    ; implicit-def: $sgpr67
-; VI-NEXT:    ; implicit-def: $sgpr85
-; VI-NEXT:    ; implicit-def: $sgpr83
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr81
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr87
-; VI-NEXT:    ; implicit-def: $sgpr80
-; VI-NEXT:    ; implicit-def: $sgpr69
-; VI-NEXT:    ; implicit-def: $sgpr84
-; VI-NEXT:    ; implicit-def: $sgpr65
-; VI-NEXT:    ; implicit-def: $sgpr68
-; VI-NEXT:    ; implicit-def: $sgpr55
-; VI-NEXT:    ; implicit-def: $sgpr52
-; VI-NEXT:    ; implicit-def: $sgpr54
-; VI-NEXT:    ; implicit-def: $sgpr66
-; VI-NEXT:    ; implicit-def: $sgpr51
-; VI-NEXT:    ; implicit-def: $sgpr86
-; VI-NEXT:    ; implicit-def: $sgpr50
-; VI-NEXT:    ; implicit-def: $sgpr64
-; VI-NEXT:    ; implicit-def: $sgpr48
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    v_writelane_b32 v33, s71, 1
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr70
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; kill: killed $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v16i64_to_v128i8_scalar:
 ; GFX9:       ; %bb.0:
@@ -79820,156 +80400,319 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_cmp_lg_u32 s44, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    ; implicit-def: $vgpr30 : SGPR spill to VGPR lane
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s46, s5, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 0
-; GFX9-NEXT:    s_lshr_b32 s46, s5, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 1
-; GFX9-NEXT:    s_lshr_b32 s46, s5, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 2
-; GFX9-NEXT:    s_lshr_b32 s46, s4, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 3
-; GFX9-NEXT:    s_lshr_b32 s46, s4, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 4
-; GFX9-NEXT:    s_lshr_b32 s46, s7, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 5
-; GFX9-NEXT:    s_lshr_b32 s46, s7, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 6
-; GFX9-NEXT:    s_lshr_b32 s46, s7, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 7
-; GFX9-NEXT:    s_lshr_b32 s46, s6, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 8
-; GFX9-NEXT:    s_lshr_b32 s46, s6, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 9
-; GFX9-NEXT:    s_lshr_b32 s46, s9, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 10
-; GFX9-NEXT:    s_lshr_b32 s46, s9, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 11
-; GFX9-NEXT:    s_lshr_b32 s46, s9, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 12
-; GFX9-NEXT:    s_lshr_b32 s46, s8, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 13
-; GFX9-NEXT:    s_lshr_b32 s46, s8, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 14
-; GFX9-NEXT:    s_lshr_b32 s46, s11, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 15
-; GFX9-NEXT:    s_lshr_b32 s46, s11, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 16
-; GFX9-NEXT:    s_lshr_b32 s46, s11, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 17
-; GFX9-NEXT:    s_lshr_b32 s46, s10, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 18
-; GFX9-NEXT:    s_lshr_b32 s46, s10, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 19
-; GFX9-NEXT:    s_lshr_b32 s46, s13, 24
 ; GFX9-NEXT:    v_writelane_b32 v30, s46, 20
-; GFX9-NEXT:    s_lshr_b32 s46, s13, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 21
-; GFX9-NEXT:    s_lshr_b32 s46, s13, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 22
-; GFX9-NEXT:    s_lshr_b32 s46, s12, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 23
-; GFX9-NEXT:    s_lshr_b32 s46, s12, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 24
-; GFX9-NEXT:    s_lshr_b32 s46, s15, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 25
-; GFX9-NEXT:    s_lshr_b32 s46, s15, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 26
-; GFX9-NEXT:    s_lshr_b32 s46, s15, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 27
-; GFX9-NEXT:    s_lshr_b32 s46, s14, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 28
-; GFX9-NEXT:    s_lshr_b32 s46, s14, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 29
-; GFX9-NEXT:    s_lshr_b32 s46, s41, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 30
-; GFX9-NEXT:    s_lshr_b32 s46, s41, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 31
-; GFX9-NEXT:    s_lshr_b32 s46, s41, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 32
-; GFX9-NEXT:    s_lshr_b32 s46, s40, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 33
-; GFX9-NEXT:    s_lshr_b32 s46, s40, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 34
-; GFX9-NEXT:    s_lshr_b32 s46, s43, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 35
-; GFX9-NEXT:    s_lshr_b32 s46, s43, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 36
-; GFX9-NEXT:    s_lshr_b32 s46, s43, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 37
-; GFX9-NEXT:    s_lshr_b32 s46, s42, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 38
-; GFX9-NEXT:    s_lshr_b32 s46, s42, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 39
-; GFX9-NEXT:    s_lshr_b32 s46, s45, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 40
-; GFX9-NEXT:    s_lshr_b32 s46, s45, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 41
-; GFX9-NEXT:    s_lshr_b32 s46, s45, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 42
-; GFX9-NEXT:    s_lshr_b32 s46, s44, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 43
-; GFX9-NEXT:    s_lshr_b32 s46, s44, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 44
-; GFX9-NEXT:    s_lshr_b32 s46, s29, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 45
-; GFX9-NEXT:    s_lshr_b32 s46, s29, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 46
-; GFX9-NEXT:    s_lshr_b32 s46, s29, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 47
-; GFX9-NEXT:    s_lshr_b32 s46, s28, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 48
-; GFX9-NEXT:    s_lshr_b32 s46, s27, 16
-; GFX9-NEXT:    s_lshr_b32 s83, s28, 8
-; GFX9-NEXT:    s_lshr_b32 s81, s27, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 49
-; GFX9-NEXT:    s_lshr_b32 s53, s27, 8
-; GFX9-NEXT:    s_lshr_b32 s82, s26, 16
-; GFX9-NEXT:    s_lshr_b32 s67, s26, 8
-; GFX9-NEXT:    s_lshr_b32 s84, s25, 24
-; GFX9-NEXT:    s_lshr_b32 s96, s25, 16
-; GFX9-NEXT:    s_lshr_b32 s65, s25, 8
-; GFX9-NEXT:    s_lshr_b32 s86, s24, 16
-; GFX9-NEXT:    s_lshr_b32 s55, s24, 8
-; GFX9-NEXT:    s_lshr_b32 s98, s23, 24
-; GFX9-NEXT:    s_lshr_b32 s87, s23, 16
-; GFX9-NEXT:    s_lshr_b32 s66, s23, 8
-; GFX9-NEXT:    s_lshr_b32 s97, s22, 16
-; GFX9-NEXT:    s_lshr_b32 s64, s22, 8
-; GFX9-NEXT:    s_lshr_b32 s49, s21, 24
-; GFX9-NEXT:    s_lshr_b32 s99, s21, 16
-; GFX9-NEXT:    s_lshr_b32 s80, s21, 8
-; GFX9-NEXT:    s_lshr_b32 s39, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s70, s20, 8
-; GFX9-NEXT:    s_lshr_b32 s48, s19, 24
-; GFX9-NEXT:    s_lshr_b32 s38, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s68, s19, 8
-; GFX9-NEXT:    s_lshr_b32 s54, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s71, s18, 8
-; GFX9-NEXT:    s_lshr_b32 s52, s17, 24
-; GFX9-NEXT:    s_lshr_b32 s50, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s69, s17, 8
-; GFX9-NEXT:    s_lshr_b32 s51, s16, 16
-; GFX9-NEXT:    s_lshr_b32 s85, s16, 8
-; GFX9-NEXT:    s_lshr_b64 s[46:47], s[4:5], 24
-; GFX9-NEXT:    s_lshr_b64 s[56:57], s[6:7], 24
-; GFX9-NEXT:    s_lshr_b64 s[58:59], s[8:9], 24
-; GFX9-NEXT:    s_lshr_b64 s[60:61], s[10:11], 24
-; GFX9-NEXT:    s_lshr_b64 s[62:63], s[12:13], 24
-; GFX9-NEXT:    s_lshr_b64 s[72:73], s[14:15], 24
-; GFX9-NEXT:    s_lshr_b64 s[74:75], s[40:41], 24
-; GFX9-NEXT:    s_lshr_b64 s[76:77], s[42:43], 24
-; GFX9-NEXT:    s_lshr_b64 s[78:79], s[44:45], 24
-; GFX9-NEXT:    s_lshr_b64 s[88:89], s[28:29], 24
-; GFX9-NEXT:    s_lshr_b64 s[90:91], s[26:27], 24
+; GFX9-NEXT:    s_lshr_b32 s47, s11, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 21
+; GFX9-NEXT:    s_lshr_b32 s47, s10, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 22
+; GFX9-NEXT:    s_lshr_b32 s47, s27, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 23
+; GFX9-NEXT:    s_lshr_b32 s47, s26, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 24
+; GFX9-NEXT:    s_lshr_b32 s47, s26, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 25
+; GFX9-NEXT:    s_lshr_b32 s47, s25, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 26
+; GFX9-NEXT:    s_lshr_b32 s47, s25, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 27
+; GFX9-NEXT:    s_lshr_b32 s47, s25, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 28
+; GFX9-NEXT:    s_lshr_b32 s47, s24, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 29
+; GFX9-NEXT:    s_lshr_b32 s47, s24, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 30
+; GFX9-NEXT:    s_lshr_b32 s47, s23, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 31
+; GFX9-NEXT:    s_lshr_b32 s47, s23, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 32
+; GFX9-NEXT:    s_lshr_b32 s47, s23, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 33
+; GFX9-NEXT:    s_lshr_b32 s47, s22, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 34
+; GFX9-NEXT:    s_lshr_b32 s47, s22, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 35
+; GFX9-NEXT:    s_lshr_b32 s47, s21, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 36
+; GFX9-NEXT:    s_lshr_b32 s47, s21, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 37
+; GFX9-NEXT:    s_lshr_b32 s47, s21, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 38
+; GFX9-NEXT:    s_lshr_b32 s47, s20, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 39
+; GFX9-NEXT:    s_lshr_b32 s47, s20, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 40
+; GFX9-NEXT:    s_lshr_b32 s47, s19, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 41
+; GFX9-NEXT:    s_lshr_b32 s47, s19, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 42
+; GFX9-NEXT:    s_lshr_b32 s47, s19, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 43
+; GFX9-NEXT:    s_lshr_b32 s47, s18, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 44
+; GFX9-NEXT:    s_lshr_b32 s47, s18, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 45
+; GFX9-NEXT:    s_lshr_b32 s47, s17, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 46
+; GFX9-NEXT:    s_lshr_b32 s47, s17, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 47
+; GFX9-NEXT:    s_lshr_b32 s47, s17, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 48
+; GFX9-NEXT:    s_lshr_b32 s47, s16, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 49
+; GFX9-NEXT:    s_lshr_b32 s47, s16, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s47, 50
+; GFX9-NEXT:    s_lshr_b64 s[90:91], s[4:5], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 18
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 19
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[8:9], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 17
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[10:11], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 14
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 15
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[12:13], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 12
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 13
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[14:15], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 10
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 11
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[40:41], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 9
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[42:43], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 6
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 7
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[44:45], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 4
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 5
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[28:29], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 2
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 3
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[26:27], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 0
+; GFX9-NEXT:    s_lshr_b32 s81, s5, 16
+; GFX9-NEXT:    s_lshr_b32 s82, s5, 8
+; GFX9-NEXT:    s_lshr_b32 s96, s4, 16
+; GFX9-NEXT:    s_lshr_b32 s83, s4, 8
+; GFX9-NEXT:    s_lshr_b32 s86, s7, 24
+; GFX9-NEXT:    s_lshr_b32 s84, s7, 16
+; GFX9-NEXT:    s_lshr_b32 s87, s7, 8
+; GFX9-NEXT:    s_lshr_b32 s57, s6, 16
+; GFX9-NEXT:    s_lshr_b32 s97, s6, 8
+; GFX9-NEXT:    s_lshr_b32 s98, s9, 24
+; GFX9-NEXT:    s_lshr_b32 s46, s9, 16
+; GFX9-NEXT:    s_lshr_b32 s48, s9, 8
+; GFX9-NEXT:    s_lshr_b32 s39, s8, 16
+; GFX9-NEXT:    s_lshr_b32 s38, s8, 8
+; GFX9-NEXT:    s_lshr_b32 s56, s11, 16
+; GFX9-NEXT:    s_lshr_b32 s49, s11, 8
+; GFX9-NEXT:    s_lshr_b32 s50, s10, 8
+; GFX9-NEXT:    s_lshr_b32 s51, s13, 24
+; GFX9-NEXT:    s_lshr_b32 s52, s13, 16
+; GFX9-NEXT:    s_lshr_b32 s59, s13, 8
+; GFX9-NEXT:    s_lshr_b32 s58, s12, 16
+; GFX9-NEXT:    s_lshr_b32 s67, s12, 8
+; GFX9-NEXT:    s_lshr_b32 s60, s15, 24
+; GFX9-NEXT:    s_lshr_b32 s65, s15, 16
+; GFX9-NEXT:    s_lshr_b32 s61, s15, 8
+; GFX9-NEXT:    s_lshr_b32 s62, s14, 16
+; GFX9-NEXT:    s_lshr_b32 s55, s14, 8
+; GFX9-NEXT:    s_lshr_b32 s63, s41, 24
+; GFX9-NEXT:    s_lshr_b32 s72, s41, 16
+; GFX9-NEXT:    s_lshr_b32 s66, s41, 8
+; GFX9-NEXT:    s_lshr_b32 s73, s40, 16
+; GFX9-NEXT:    s_lshr_b32 s64, s40, 8
+; GFX9-NEXT:    s_lshr_b32 s74, s43, 24
+; GFX9-NEXT:    s_lshr_b32 s80, s43, 16
+; GFX9-NEXT:    s_lshr_b32 s75, s43, 8
+; GFX9-NEXT:    s_lshr_b32 s76, s42, 16
+; GFX9-NEXT:    s_lshr_b32 s70, s42, 8
+; GFX9-NEXT:    s_lshr_b32 s77, s45, 24
+; GFX9-NEXT:    s_lshr_b32 s78, s45, 16
+; GFX9-NEXT:    s_lshr_b32 s68, s45, 8
+; GFX9-NEXT:    s_lshr_b32 s79, s44, 16
+; GFX9-NEXT:    s_lshr_b32 s71, s44, 8
+; GFX9-NEXT:    s_lshr_b32 s69, s29, 24
+; GFX9-NEXT:    s_lshr_b32 s85, s29, 16
+; GFX9-NEXT:    s_lshr_b32 s88, s29, 8
+; GFX9-NEXT:    s_lshr_b32 s54, s28, 16
+; GFX9-NEXT:    s_lshr_b32 s89, s28, 8
+; GFX9-NEXT:    s_lshr_b32 s99, s27, 24
+; GFX9-NEXT:    s_lshr_b32 s53, s27, 16
+; GFX9-NEXT:    s_lshr_b64 s[90:91], s[6:7], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 1
 ; GFX9-NEXT:    s_lshr_b64 s[92:93], s[24:25], 24
 ; GFX9-NEXT:    s_lshr_b64 s[94:95], s[22:23], 24
-; GFX9-NEXT:    s_lshr_b64 s[30:31], s[20:21], 24
-; GFX9-NEXT:    s_lshr_b64 s[34:35], s[18:19], 24
-; GFX9-NEXT:    s_lshr_b64 s[36:37], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_3
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_lshr_b64 vcc, s[20:21], 24
+; GFX9-NEXT:    s_lshr_b64 s[30:31], s[18:19], 24
+; GFX9-NEXT:    s_lshr_b64 s[34:35], s[16:17], 24
+; GFX9-NEXT:    s_mov_b64 s[36:37], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    s_mov_b64 s[36:37], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 0
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 1
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr53
+; GFX9-NEXT:    ; implicit-def: $sgpr99
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr54
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr85
+; GFX9-NEXT:    ; implicit-def: $sgpr69
+; GFX9-NEXT:    ; implicit-def: $sgpr71
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr68
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr70
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr80
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr64
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr66
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr55
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr65
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr67
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr52
+; GFX9-NEXT:    ; implicit-def: $sgpr51
+; GFX9-NEXT:    ; implicit-def: $sgpr50
+; GFX9-NEXT:    ; implicit-def: $sgpr49
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr38
+; GFX9-NEXT:    ; implicit-def: $sgpr39
+; GFX9-NEXT:    ; implicit-def: $sgpr48
+; GFX9-NEXT:    ; implicit-def: $sgpr98
+; GFX9-NEXT:    ; implicit-def: $sgpr97
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr87
+; GFX9-NEXT:    ; implicit-def: $sgpr84
+; GFX9-NEXT:    ; implicit-def: $sgpr86
+; GFX9-NEXT:    ; implicit-def: $sgpr83
+; GFX9-NEXT:    ; implicit-def: $sgpr96
+; GFX9-NEXT:    ; implicit-def: $sgpr82
+; GFX9-NEXT:    ; implicit-def: $sgpr81
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; kill: killed $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr34
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 2
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 3
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 4
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 5
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 6
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 7
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 8
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 9
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 10
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 11
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 12
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 13
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 14
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 15
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 16
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 17
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 18
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 19
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GFX9-NEXT:    s_cselect_b32 s47, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s47, 1
+; GFX9-NEXT:    v_readlane_b32 s36, v30, 20
+; GFX9-NEXT:    s_mov_b32 s37, s81
+; GFX9-NEXT:    s_mov_b32 s81, s96
+; GFX9-NEXT:    s_mov_b32 s96, s57
+; GFX9-NEXT:    s_mov_b32 s47, s48
+; GFX9-NEXT:    v_readlane_b32 s57, v30, 21
+; GFX9-NEXT:    v_readlane_b32 s48, v30, 22
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -80002,428 +80745,424 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_addc_u32 s7, s7, 0
 ; GFX9-NEXT:    s_add_u32 s4, s4, 3
 ; GFX9-NEXT:    s_addc_u32 s5, s5, 0
-; GFX9-NEXT:    s_lshr_b32 s46, s5, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 0
-; GFX9-NEXT:    s_lshr_b32 s46, s5, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 1
-; GFX9-NEXT:    s_lshr_b32 s46, s5, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 2
-; GFX9-NEXT:    s_lshr_b32 s46, s4, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 3
-; GFX9-NEXT:    s_lshr_b32 s46, s4, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 4
-; GFX9-NEXT:    s_lshr_b32 s46, s7, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 5
-; GFX9-NEXT:    s_lshr_b32 s46, s7, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 6
-; GFX9-NEXT:    s_lshr_b32 s46, s7, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 7
-; GFX9-NEXT:    s_lshr_b32 s46, s6, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 8
-; GFX9-NEXT:    s_lshr_b32 s46, s6, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 9
-; GFX9-NEXT:    s_lshr_b32 s46, s9, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 10
+; GFX9-NEXT:    s_lshr_b32 s90, s27, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 23
+; GFX9-NEXT:    s_lshr_b32 s90, s26, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 24
+; GFX9-NEXT:    s_lshr_b32 s90, s26, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 25
+; GFX9-NEXT:    s_lshr_b32 s90, s25, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 26
+; GFX9-NEXT:    s_lshr_b32 s90, s25, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 27
+; GFX9-NEXT:    s_lshr_b32 s90, s25, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 28
+; GFX9-NEXT:    s_lshr_b32 s90, s24, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 29
+; GFX9-NEXT:    s_lshr_b32 s90, s24, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 30
+; GFX9-NEXT:    s_lshr_b32 s90, s23, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 31
+; GFX9-NEXT:    s_lshr_b32 s90, s23, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 32
+; GFX9-NEXT:    s_lshr_b32 s90, s23, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 33
+; GFX9-NEXT:    s_lshr_b32 s90, s22, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 34
+; GFX9-NEXT:    s_lshr_b32 s90, s22, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 35
+; GFX9-NEXT:    s_lshr_b32 s90, s21, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 36
+; GFX9-NEXT:    s_lshr_b32 s90, s21, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 37
+; GFX9-NEXT:    s_lshr_b32 s90, s21, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 38
+; GFX9-NEXT:    s_lshr_b32 s90, s20, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 39
+; GFX9-NEXT:    s_lshr_b32 s90, s20, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 40
+; GFX9-NEXT:    s_lshr_b32 s90, s19, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 41
+; GFX9-NEXT:    s_lshr_b32 s90, s19, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 42
+; GFX9-NEXT:    s_lshr_b32 s90, s19, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 43
+; GFX9-NEXT:    s_lshr_b32 s90, s18, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 44
+; GFX9-NEXT:    s_lshr_b32 s90, s18, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 45
+; GFX9-NEXT:    s_lshr_b32 s90, s17, 24
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 46
+; GFX9-NEXT:    s_lshr_b32 s90, s17, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 47
+; GFX9-NEXT:    s_lshr_b32 s90, s17, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 48
+; GFX9-NEXT:    s_lshr_b32 s90, s16, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 49
+; GFX9-NEXT:    s_lshr_b32 s90, s16, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 50
+; GFX9-NEXT:    s_lshr_b64 s[90:91], s[4:5], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s90, 18
+; GFX9-NEXT:    v_writelane_b32 v30, s91, 19
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[8:9], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 16
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 17
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[10:11], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 14
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 15
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[12:13], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 12
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 13
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[14:15], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 10
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 11
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[40:41], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 8
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 9
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[42:43], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 6
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 7
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[44:45], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 4
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 5
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[28:29], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 2
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 3
+; GFX9-NEXT:    s_lshr_b64 s[92:93], s[26:27], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s92, 0
+; GFX9-NEXT:    s_lshr_b32 s36, s5, 24
+; GFX9-NEXT:    s_lshr_b32 s37, s5, 16
+; GFX9-NEXT:    s_lshr_b32 s82, s5, 8
+; GFX9-NEXT:    s_lshr_b32 s81, s4, 16
+; GFX9-NEXT:    s_lshr_b32 s83, s4, 8
+; GFX9-NEXT:    s_lshr_b32 s86, s7, 24
+; GFX9-NEXT:    s_lshr_b32 s84, s7, 16
+; GFX9-NEXT:    s_lshr_b32 s87, s7, 8
+; GFX9-NEXT:    s_lshr_b32 s96, s6, 16
+; GFX9-NEXT:    s_lshr_b32 s97, s6, 8
+; GFX9-NEXT:    s_lshr_b32 s98, s9, 24
 ; GFX9-NEXT:    s_lshr_b32 s46, s9, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 11
-; GFX9-NEXT:    s_lshr_b32 s46, s9, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 12
-; GFX9-NEXT:    s_lshr_b32 s46, s8, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 13
-; GFX9-NEXT:    s_lshr_b32 s46, s8, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 14
-; GFX9-NEXT:    s_lshr_b32 s46, s11, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 15
-; GFX9-NEXT:    s_lshr_b32 s46, s11, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 16
-; GFX9-NEXT:    s_lshr_b32 s46, s11, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 17
-; GFX9-NEXT:    s_lshr_b32 s46, s10, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 18
-; GFX9-NEXT:    s_lshr_b32 s46, s10, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 19
-; GFX9-NEXT:    s_lshr_b32 s46, s13, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 20
-; GFX9-NEXT:    s_lshr_b32 s46, s13, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 21
-; GFX9-NEXT:    s_lshr_b32 s46, s13, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 22
-; GFX9-NEXT:    s_lshr_b32 s46, s12, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 23
-; GFX9-NEXT:    s_lshr_b32 s46, s12, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 24
-; GFX9-NEXT:    s_lshr_b32 s46, s15, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 25
-; GFX9-NEXT:    s_lshr_b32 s46, s15, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 26
-; GFX9-NEXT:    s_lshr_b32 s46, s15, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 27
-; GFX9-NEXT:    s_lshr_b32 s46, s14, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 28
-; GFX9-NEXT:    s_lshr_b32 s46, s14, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 29
-; GFX9-NEXT:    s_lshr_b32 s46, s41, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 30
-; GFX9-NEXT:    s_lshr_b32 s46, s41, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 31
-; GFX9-NEXT:    s_lshr_b32 s46, s41, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 32
-; GFX9-NEXT:    s_lshr_b32 s46, s40, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 33
-; GFX9-NEXT:    s_lshr_b32 s46, s40, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 34
-; GFX9-NEXT:    s_lshr_b32 s46, s43, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 35
-; GFX9-NEXT:    s_lshr_b32 s46, s43, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 36
-; GFX9-NEXT:    s_lshr_b32 s46, s43, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 37
-; GFX9-NEXT:    s_lshr_b32 s46, s42, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 38
-; GFX9-NEXT:    s_lshr_b32 s46, s42, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 39
-; GFX9-NEXT:    s_lshr_b32 s46, s45, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 40
-; GFX9-NEXT:    s_lshr_b32 s46, s45, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 41
-; GFX9-NEXT:    s_lshr_b32 s46, s45, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 42
-; GFX9-NEXT:    s_lshr_b32 s46, s44, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 43
-; GFX9-NEXT:    s_lshr_b32 s46, s44, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 44
-; GFX9-NEXT:    s_lshr_b32 s46, s29, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 45
-; GFX9-NEXT:    s_lshr_b32 s46, s29, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 46
-; GFX9-NEXT:    s_lshr_b32 s46, s29, 8
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 47
-; GFX9-NEXT:    s_lshr_b32 s46, s28, 16
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 48
-; GFX9-NEXT:    s_lshr_b32 s46, s27, 16
-; GFX9-NEXT:    s_lshr_b32 s83, s28, 8
-; GFX9-NEXT:    s_lshr_b32 s81, s27, 24
-; GFX9-NEXT:    v_writelane_b32 v30, s46, 49
-; GFX9-NEXT:    s_lshr_b32 s53, s27, 8
-; GFX9-NEXT:    s_lshr_b32 s82, s26, 16
-; GFX9-NEXT:    s_lshr_b32 s67, s26, 8
-; GFX9-NEXT:    s_lshr_b32 s84, s25, 24
-; GFX9-NEXT:    s_lshr_b32 s96, s25, 16
-; GFX9-NEXT:    s_lshr_b32 s65, s25, 8
-; GFX9-NEXT:    s_lshr_b32 s86, s24, 16
-; GFX9-NEXT:    s_lshr_b32 s55, s24, 8
-; GFX9-NEXT:    s_lshr_b32 s98, s23, 24
-; GFX9-NEXT:    s_lshr_b32 s87, s23, 16
-; GFX9-NEXT:    s_lshr_b32 s66, s23, 8
-; GFX9-NEXT:    s_lshr_b32 s97, s22, 16
-; GFX9-NEXT:    s_lshr_b32 s64, s22, 8
-; GFX9-NEXT:    s_lshr_b32 s49, s21, 24
-; GFX9-NEXT:    s_lshr_b32 s99, s21, 16
-; GFX9-NEXT:    s_lshr_b32 s80, s21, 8
-; GFX9-NEXT:    s_lshr_b32 s39, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s70, s20, 8
-; GFX9-NEXT:    s_lshr_b32 s48, s19, 24
-; GFX9-NEXT:    s_lshr_b32 s38, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s68, s19, 8
-; GFX9-NEXT:    s_lshr_b32 s54, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s71, s18, 8
-; GFX9-NEXT:    s_lshr_b32 s52, s17, 24
-; GFX9-NEXT:    s_lshr_b32 s50, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s69, s17, 8
-; GFX9-NEXT:    s_lshr_b32 s51, s16, 16
-; GFX9-NEXT:    s_lshr_b32 s85, s16, 8
-; GFX9-NEXT:    s_lshr_b64 s[46:47], s[4:5], 24
-; GFX9-NEXT:    s_lshr_b64 s[56:57], s[6:7], 24
-; GFX9-NEXT:    s_lshr_b64 s[58:59], s[8:9], 24
-; GFX9-NEXT:    s_lshr_b64 s[60:61], s[10:11], 24
-; GFX9-NEXT:    s_lshr_b64 s[62:63], s[12:13], 24
-; GFX9-NEXT:    s_lshr_b64 s[72:73], s[14:15], 24
-; GFX9-NEXT:    s_lshr_b64 s[74:75], s[40:41], 24
-; GFX9-NEXT:    s_lshr_b64 s[76:77], s[42:43], 24
-; GFX9-NEXT:    s_lshr_b64 s[78:79], s[44:45], 24
-; GFX9-NEXT:    s_lshr_b64 s[88:89], s[28:29], 24
-; GFX9-NEXT:    s_lshr_b64 s[90:91], s[26:27], 24
+; GFX9-NEXT:    s_lshr_b32 s47, s9, 8
+; GFX9-NEXT:    s_lshr_b32 s39, s8, 16
+; GFX9-NEXT:    s_lshr_b32 s38, s8, 8
+; GFX9-NEXT:    s_lshr_b32 s57, s11, 24
+; GFX9-NEXT:    s_lshr_b32 s56, s11, 16
+; GFX9-NEXT:    s_lshr_b32 s49, s11, 8
+; GFX9-NEXT:    s_lshr_b32 s48, s10, 16
+; GFX9-NEXT:    s_lshr_b32 s50, s10, 8
+; GFX9-NEXT:    s_lshr_b32 s51, s13, 24
+; GFX9-NEXT:    s_lshr_b32 s52, s13, 16
+; GFX9-NEXT:    s_lshr_b32 s59, s13, 8
+; GFX9-NEXT:    s_lshr_b32 s58, s12, 16
+; GFX9-NEXT:    s_lshr_b32 s67, s12, 8
+; GFX9-NEXT:    s_lshr_b32 s60, s15, 24
+; GFX9-NEXT:    s_lshr_b32 s65, s15, 16
+; GFX9-NEXT:    s_lshr_b32 s61, s15, 8
+; GFX9-NEXT:    s_lshr_b32 s62, s14, 16
+; GFX9-NEXT:    s_lshr_b32 s55, s14, 8
+; GFX9-NEXT:    s_lshr_b32 s63, s41, 24
+; GFX9-NEXT:    s_lshr_b32 s72, s41, 16
+; GFX9-NEXT:    s_lshr_b32 s66, s41, 8
+; GFX9-NEXT:    s_lshr_b32 s73, s40, 16
+; GFX9-NEXT:    s_lshr_b32 s64, s40, 8
+; GFX9-NEXT:    s_lshr_b32 s74, s43, 24
+; GFX9-NEXT:    s_lshr_b32 s80, s43, 16
+; GFX9-NEXT:    s_lshr_b32 s75, s43, 8
+; GFX9-NEXT:    s_lshr_b32 s76, s42, 16
+; GFX9-NEXT:    s_lshr_b32 s70, s42, 8
+; GFX9-NEXT:    s_lshr_b32 s77, s45, 24
+; GFX9-NEXT:    s_lshr_b32 s78, s45, 16
+; GFX9-NEXT:    s_lshr_b32 s68, s45, 8
+; GFX9-NEXT:    s_lshr_b32 s79, s44, 16
+; GFX9-NEXT:    s_lshr_b32 s71, s44, 8
+; GFX9-NEXT:    s_lshr_b32 s69, s29, 24
+; GFX9-NEXT:    s_lshr_b32 s85, s29, 16
+; GFX9-NEXT:    s_lshr_b32 s88, s29, 8
+; GFX9-NEXT:    s_lshr_b32 s54, s28, 16
+; GFX9-NEXT:    s_lshr_b32 s89, s28, 8
+; GFX9-NEXT:    s_lshr_b32 s99, s27, 24
+; GFX9-NEXT:    s_lshr_b32 s53, s27, 16
+; GFX9-NEXT:    s_lshr_b64 s[90:91], s[6:7], 24
+; GFX9-NEXT:    v_writelane_b32 v30, s93, 1
 ; GFX9-NEXT:    s_lshr_b64 s[92:93], s[24:25], 24
 ; GFX9-NEXT:    s_lshr_b64 s[94:95], s[22:23], 24
-; GFX9-NEXT:    s_lshr_b64 s[30:31], s[20:21], 24
-; GFX9-NEXT:    s_lshr_b64 s[34:35], s[18:19], 24
-; GFX9-NEXT:    s_lshr_b64 s[36:37], s[16:17], 24
-; GFX9-NEXT:  .LBB57_3: ; %end
-; GFX9-NEXT:    v_mov_b32_e32 v7, s36
+; GFX9-NEXT:    s_lshr_b64 vcc, s[20:21], 24
+; GFX9-NEXT:    s_lshr_b64 s[30:31], s[18:19], 24
+; GFX9-NEXT:    s_lshr_b64 s[34:35], s[16:17], 24
+; GFX9-NEXT:  .LBB57_5: ; %end
+; GFX9-NEXT:    v_readlane_b32 s91, v30, 50
+; GFX9-NEXT:    v_mov_b32_e32 v2, s91
+; GFX9-NEXT:    v_readlane_b32 s91, v30, 48
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
-; GFX9-NEXT:    v_mov_b32_e32 v2, s85
-; GFX9-NEXT:    v_perm_b32 v7, s51, v7, v1
+; GFX9-NEXT:    v_mov_b32_e32 v4, s91
 ; GFX9-NEXT:    v_perm_b32 v3, s16, v2, v1
-; GFX9-NEXT:    v_mov_b32_e32 v21, s52
-; GFX9-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
-; GFX9-NEXT:    v_mov_b32_e32 v4, s69
-; GFX9-NEXT:    v_perm_b32 v21, s50, v21, v1
-; GFX9-NEXT:    v_or_b32_e32 v3, v3, v7
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 45
 ; GFX9-NEXT:    v_perm_b32 v2, s17, v4, v1
-; GFX9-NEXT:    v_mov_b32_e32 v11, s34
+; GFX9-NEXT:    v_mov_b32_e32 v4, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 43
+; GFX9-NEXT:    v_mov_b32_e32 v6, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 40
+; GFX9-NEXT:    v_perm_b32 v5, s18, v4, v1
+; GFX9-NEXT:    v_perm_b32 v4, s19, v6, v1
+; GFX9-NEXT:    v_mov_b32_e32 v6, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 38
+; GFX9-NEXT:    v_mov_b32_e32 v9, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 35
+; GFX9-NEXT:    v_perm_b32 v7, s20, v6, v1
+; GFX9-NEXT:    v_perm_b32 v6, s21, v9, v1
+; GFX9-NEXT:    v_mov_b32_e32 v9, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 33
+; GFX9-NEXT:    v_mov_b32_e32 v12, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 30
+; GFX9-NEXT:    v_perm_b32 v10, s22, v9, v1
+; GFX9-NEXT:    v_perm_b32 v9, s23, v12, v1
+; GFX9-NEXT:    v_mov_b32_e32 v12, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 28
+; GFX9-NEXT:    v_mov_b32_e32 v15, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 0
+; GFX9-NEXT:    v_mov_b32_e32 v19, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 25
+; GFX9-NEXT:    v_perm_b32 v13, s24, v12, v1
+; GFX9-NEXT:    v_perm_b32 v12, s25, v15, v1
+; GFX9-NEXT:    v_readlane_b32 s17, v30, 1
+; GFX9-NEXT:    v_mov_b32_e32 v15, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 23
+; GFX9-NEXT:    v_mov_b32_e32 v20, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 2
+; GFX9-NEXT:    v_mov_b32_e32 v8, s34
+; GFX9-NEXT:    v_perm_b32 v16, s26, v15, v1
+; GFX9-NEXT:    v_perm_b32 v15, s27, v20, v1
+; GFX9-NEXT:    v_mov_b32_e32 v20, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 49
+; GFX9-NEXT:    v_perm_b32 v8, s16, v8, v1
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 46
+; GFX9-NEXT:    v_mov_b32_e32 v21, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 47
+; GFX9-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
+; GFX9-NEXT:    v_perm_b32 v21, s16, v21, v1
+; GFX9-NEXT:    v_or_b32_e32 v3, v3, v8
+; GFX9-NEXT:    v_mov_b32_e32 v11, s30
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 44
 ; GFX9-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v21
-; GFX9-NEXT:    v_mov_b32_e32 v4, s71
-; GFX9-NEXT:    v_perm_b32 v11, s54, v11, v1
+; GFX9-NEXT:    v_perm_b32 v11, s16, v11, v1
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 41
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_perm_b32 v5, s18, v4, v1
-; GFX9-NEXT:    v_mov_b32_e32 v22, s48
+; GFX9-NEXT:    v_mov_b32_e32 v22, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 42
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:4
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v11
-; GFX9-NEXT:    v_mov_b32_e32 v6, s68
-; GFX9-NEXT:    v_perm_b32 v22, s38, v22, v1
+; GFX9-NEXT:    v_perm_b32 v22, s16, v22, v1
 ; GFX9-NEXT:    v_or_b32_e32 v2, v5, v2
-; GFX9-NEXT:    v_perm_b32 v4, s19, v6, v1
-; GFX9-NEXT:    v_mov_b32_e32 v14, s30
+; GFX9-NEXT:    v_mov_b32_e32 v14, vcc_lo
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 39
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:8
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v22
-; GFX9-NEXT:    v_mov_b32_e32 v6, s70
-; GFX9-NEXT:    v_perm_b32 v14, s39, v14, v1
+; GFX9-NEXT:    v_perm_b32 v14, s16, v14, v1
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 36
 ; GFX9-NEXT:    v_or_b32_e32 v2, v4, v2
-; GFX9-NEXT:    v_perm_b32 v8, s20, v6, v1
-; GFX9-NEXT:    v_mov_b32_e32 v23, s49
+; GFX9-NEXT:    v_mov_b32_e32 v23, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 37
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:12
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v14
-; GFX9-NEXT:    v_mov_b32_e32 v9, s80
-; GFX9-NEXT:    v_perm_b32 v23, s99, v23, v1
-; GFX9-NEXT:    v_or_b32_e32 v2, v8, v2
-; GFX9-NEXT:    v_perm_b32 v6, s21, v9, v1
-; GFX9-NEXT:    v_mov_b32_e32 v15, s94
+; GFX9-NEXT:    v_perm_b32 v23, s16, v23, v1
+; GFX9-NEXT:    v_or_b32_e32 v2, v7, v2
+; GFX9-NEXT:    v_mov_b32_e32 v17, s94
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 34
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:16
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v23
-; GFX9-NEXT:    v_mov_b32_e32 v9, s64
-; GFX9-NEXT:    v_perm_b32 v15, s97, v15, v1
+; GFX9-NEXT:    v_perm_b32 v17, s16, v17, v1
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 31
 ; GFX9-NEXT:    v_or_b32_e32 v2, v6, v2
-; GFX9-NEXT:    v_perm_b32 v10, s22, v9, v1
-; GFX9-NEXT:    v_mov_b32_e32 v24, s98
+; GFX9-NEXT:    v_mov_b32_e32 v24, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 32
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:20
-; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v15
-; GFX9-NEXT:    v_mov_b32_e32 v12, s66
-; GFX9-NEXT:    v_perm_b32 v24, s87, v24, v1
+; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v17
+; GFX9-NEXT:    v_perm_b32 v24, s16, v24, v1
 ; GFX9-NEXT:    v_or_b32_e32 v2, v10, v2
-; GFX9-NEXT:    v_perm_b32 v9, s23, v12, v1
-; GFX9-NEXT:    v_mov_b32_e32 v16, s92
+; GFX9-NEXT:    v_mov_b32_e32 v18, s92
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 29
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:24
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v24
-; GFX9-NEXT:    v_mov_b32_e32 v12, s55
-; GFX9-NEXT:    v_perm_b32 v16, s86, v16, v1
+; GFX9-NEXT:    v_perm_b32 v18, s16, v18, v1
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 26
 ; GFX9-NEXT:    v_or_b32_e32 v2, v9, v2
-; GFX9-NEXT:    v_perm_b32 v13, s24, v12, v1
-; GFX9-NEXT:    v_mov_b32_e32 v25, s84
+; GFX9-NEXT:    v_mov_b32_e32 v25, s16
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 27
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:28
-; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v16
-; GFX9-NEXT:    v_mov_b32_e32 v17, s65
-; GFX9-NEXT:    v_perm_b32 v25, s96, v25, v1
+; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v18
+; GFX9-NEXT:    v_perm_b32 v25, s16, v25, v1
 ; GFX9-NEXT:    v_or_b32_e32 v2, v13, v2
-; GFX9-NEXT:    v_perm_b32 v12, s25, v17, v1
-; GFX9-NEXT:    v_mov_b32_e32 v17, s90
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 24
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:32
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v25
-; GFX9-NEXT:    v_mov_b32_e32 v18, s67
-; GFX9-NEXT:    v_perm_b32 v17, s82, v17, v1
+; GFX9-NEXT:    v_perm_b32 v19, s16, v19, v1
 ; GFX9-NEXT:    v_or_b32_e32 v2, v12, v2
-; GFX9-NEXT:    v_perm_b32 v18, s26, v18, v1
-; GFX9-NEXT:    v_mov_b32_e32 v26, s81
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 49
+; GFX9-NEXT:    v_mov_b32_e32 v26, s99
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:36
-; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v17
-; GFX9-NEXT:    v_mov_b32_e32 v19, s53
-; GFX9-NEXT:    v_perm_b32 v26, s16, v26, v1
-; GFX9-NEXT:    v_or_b32_e32 v2, v18, v2
-; GFX9-NEXT:    v_perm_b32 v19, s27, v19, v1
-; GFX9-NEXT:    v_mov_b32_e32 v20, s88
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 48
+; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v19
+; GFX9-NEXT:    v_perm_b32 v26, s53, v26, v1
+; GFX9-NEXT:    v_or_b32_e32 v2, v16, v2
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:40
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v26
-; GFX9-NEXT:    v_mov_b32_e32 v27, s83
-; GFX9-NEXT:    v_perm_b32 v20, s16, v20, v1
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 47
-; GFX9-NEXT:    v_or_b32_e32 v2, v19, v2
-; GFX9-NEXT:    v_mov_b32_e32 v28, s16
+; GFX9-NEXT:    v_mov_b32_e32 v27, s89
+; GFX9-NEXT:    v_perm_b32 v20, s54, v20, v1
+; GFX9-NEXT:    v_or_b32_e32 v2, v15, v2
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44
 ; GFX9-NEXT:    v_perm_b32 v2, s28, v27, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v20
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 45
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s16
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 46
-; GFX9-NEXT:    v_perm_b32 v3, s16, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v3, s69
+; GFX9-NEXT:    v_readlane_b32 s17, v30, 3
+; GFX9-NEXT:    v_mov_b32_e32 v28, s88
+; GFX9-NEXT:    v_perm_b32 v3, s85, v3, v1
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:48
 ; GFX9-NEXT:    v_perm_b32 v2, s29, v28, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 4
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 44
+; GFX9-NEXT:    v_mov_b32_e32 v3, s16
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:52
-; GFX9-NEXT:    v_mov_b32_e32 v2, s16
-; GFX9-NEXT:    v_mov_b32_e32 v3, s78
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 43
-; GFX9-NEXT:    v_perm_b32 v3, s16, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s71
+; GFX9-NEXT:    v_perm_b32 v3, s79, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s44, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 42
+; GFX9-NEXT:    v_mov_b32_e32 v3, s77
+; GFX9-NEXT:    v_readlane_b32 s17, v30, 5
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:56
-; GFX9-NEXT:    v_mov_b32_e32 v2, s16
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 40
-; GFX9-NEXT:    v_mov_b32_e32 v3, s16
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 41
-; GFX9-NEXT:    v_perm_b32 v3, s16, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s68
+; GFX9-NEXT:    v_perm_b32 v3, s78, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s45, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 6
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 39
+; GFX9-NEXT:    v_mov_b32_e32 v3, s16
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:60
-; GFX9-NEXT:    v_mov_b32_e32 v2, s16
-; GFX9-NEXT:    v_mov_b32_e32 v3, s76
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 38
-; GFX9-NEXT:    v_perm_b32 v3, s16, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s70
+; GFX9-NEXT:    v_perm_b32 v3, s76, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s42, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 37
+; GFX9-NEXT:    v_mov_b32_e32 v3, s74
+; GFX9-NEXT:    v_readlane_b32 s17, v30, 7
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:64
-; GFX9-NEXT:    v_mov_b32_e32 v2, s16
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 35
-; GFX9-NEXT:    v_mov_b32_e32 v3, s16
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 36
-; GFX9-NEXT:    v_perm_b32 v3, s16, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s75
+; GFX9-NEXT:    v_perm_b32 v3, s80, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s43, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 8
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 34
+; GFX9-NEXT:    v_mov_b32_e32 v3, s16
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:68
-; GFX9-NEXT:    v_mov_b32_e32 v2, s16
-; GFX9-NEXT:    v_mov_b32_e32 v3, s74
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 33
-; GFX9-NEXT:    v_perm_b32 v3, s16, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s64
+; GFX9-NEXT:    v_perm_b32 v3, s73, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s40, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 32
+; GFX9-NEXT:    v_mov_b32_e32 v3, s63
+; GFX9-NEXT:    v_readlane_b32 s17, v30, 9
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:72
-; GFX9-NEXT:    v_mov_b32_e32 v2, s16
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 30
-; GFX9-NEXT:    v_mov_b32_e32 v3, s16
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 31
-; GFX9-NEXT:    v_perm_b32 v3, s16, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s66
+; GFX9-NEXT:    v_perm_b32 v3, s72, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s41, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s16, v30, 10
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s16, v30, 29
+; GFX9-NEXT:    v_mov_b32_e32 v3, s16
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:76
-; GFX9-NEXT:    v_mov_b32_e32 v2, s16
+; GFX9-NEXT:    v_mov_b32_e32 v2, s55
+; GFX9-NEXT:    v_perm_b32 v3, s62, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s14, v2, v1
-; GFX9-NEXT:    v_mov_b32_e32 v3, s72
-; GFX9-NEXT:    v_readlane_b32 s14, v30, 28
-; GFX9-NEXT:    v_perm_b32 v3, s14, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s14, v30, 27
+; GFX9-NEXT:    v_mov_b32_e32 v3, s60
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:80
-; GFX9-NEXT:    v_mov_b32_e32 v2, s14
-; GFX9-NEXT:    v_readlane_b32 s14, v30, 25
-; GFX9-NEXT:    v_mov_b32_e32 v3, s14
-; GFX9-NEXT:    v_readlane_b32 s14, v30, 26
-; GFX9-NEXT:    v_perm_b32 v3, s14, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s61
+; GFX9-NEXT:    v_perm_b32 v3, s65, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s15, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s14, v30, 12
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s14, v30, 24
+; GFX9-NEXT:    v_mov_b32_e32 v3, s14
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:84
-; GFX9-NEXT:    v_mov_b32_e32 v2, s14
+; GFX9-NEXT:    v_mov_b32_e32 v2, s67
+; GFX9-NEXT:    v_perm_b32 v3, s58, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s12, v2, v1
-; GFX9-NEXT:    v_mov_b32_e32 v3, s62
-; GFX9-NEXT:    v_readlane_b32 s12, v30, 23
-; GFX9-NEXT:    v_perm_b32 v3, s12, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s12, v30, 22
+; GFX9-NEXT:    v_mov_b32_e32 v3, s51
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:88
-; GFX9-NEXT:    v_mov_b32_e32 v2, s12
-; GFX9-NEXT:    v_readlane_b32 s12, v30, 20
-; GFX9-NEXT:    v_mov_b32_e32 v3, s12
-; GFX9-NEXT:    v_readlane_b32 s12, v30, 21
-; GFX9-NEXT:    v_perm_b32 v3, s12, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s59
+; GFX9-NEXT:    v_perm_b32 v3, s52, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s13, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s12, v30, 14
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s12, v30, 19
+; GFX9-NEXT:    v_mov_b32_e32 v3, s12
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:92
-; GFX9-NEXT:    v_mov_b32_e32 v2, s12
+; GFX9-NEXT:    v_mov_b32_e32 v2, s50
+; GFX9-NEXT:    v_perm_b32 v3, s48, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s10, v2, v1
-; GFX9-NEXT:    v_mov_b32_e32 v3, s60
-; GFX9-NEXT:    v_readlane_b32 s10, v30, 18
-; GFX9-NEXT:    v_perm_b32 v3, s10, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s10, v30, 17
+; GFX9-NEXT:    v_mov_b32_e32 v3, s57
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:96
-; GFX9-NEXT:    v_mov_b32_e32 v2, s10
-; GFX9-NEXT:    v_readlane_b32 s10, v30, 15
-; GFX9-NEXT:    v_mov_b32_e32 v3, s10
-; GFX9-NEXT:    v_readlane_b32 s10, v30, 16
-; GFX9-NEXT:    v_perm_b32 v3, s10, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s49
+; GFX9-NEXT:    v_perm_b32 v3, s56, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s11, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s10, v30, 16
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s10, v30, 14
+; GFX9-NEXT:    v_mov_b32_e32 v3, s10
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:100
-; GFX9-NEXT:    v_mov_b32_e32 v2, s10
+; GFX9-NEXT:    v_mov_b32_e32 v2, s38
+; GFX9-NEXT:    v_perm_b32 v3, s39, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s8, v2, v1
-; GFX9-NEXT:    v_mov_b32_e32 v3, s58
-; GFX9-NEXT:    v_readlane_b32 s8, v30, 13
-; GFX9-NEXT:    v_perm_b32 v3, s8, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s8, v30, 12
+; GFX9-NEXT:    v_mov_b32_e32 v3, s98
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:104
-; GFX9-NEXT:    v_mov_b32_e32 v2, s8
-; GFX9-NEXT:    v_readlane_b32 s8, v30, 10
-; GFX9-NEXT:    v_mov_b32_e32 v3, s8
-; GFX9-NEXT:    v_readlane_b32 s8, v30, 11
-; GFX9-NEXT:    v_perm_b32 v3, s8, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s47
+; GFX9-NEXT:    v_perm_b32 v3, s46, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s9, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s8, v30, 9
+; GFX9-NEXT:    v_mov_b32_e32 v3, s90
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:108
-; GFX9-NEXT:    v_mov_b32_e32 v2, s8
+; GFX9-NEXT:    v_mov_b32_e32 v2, s97
+; GFX9-NEXT:    v_perm_b32 v3, s96, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s6, v2, v1
-; GFX9-NEXT:    v_mov_b32_e32 v3, s56
-; GFX9-NEXT:    v_readlane_b32 s6, v30, 8
-; GFX9-NEXT:    v_perm_b32 v3, s6, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s6, v30, 7
+; GFX9-NEXT:    v_mov_b32_e32 v3, s86
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:112
-; GFX9-NEXT:    v_mov_b32_e32 v2, s6
-; GFX9-NEXT:    v_readlane_b32 s6, v30, 5
-; GFX9-NEXT:    v_mov_b32_e32 v3, s6
-; GFX9-NEXT:    v_readlane_b32 s6, v30, 6
-; GFX9-NEXT:    v_perm_b32 v3, s6, v3, v1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s87
+; GFX9-NEXT:    v_perm_b32 v3, s84, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s7, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_readlane_b32 s6, v30, 18
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s6, v30, 4
+; GFX9-NEXT:    v_mov_b32_e32 v3, s6
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:116
-; GFX9-NEXT:    v_mov_b32_e32 v2, s6
+; GFX9-NEXT:    v_mov_b32_e32 v2, s83
+; GFX9-NEXT:    v_perm_b32 v3, s81, v3, v1
 ; GFX9-NEXT:    v_perm_b32 v2, s4, v2, v1
-; GFX9-NEXT:    v_mov_b32_e32 v3, s46
-; GFX9-NEXT:    v_readlane_b32 s4, v30, 3
-; GFX9-NEXT:    v_perm_b32 v3, s4, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v2, v2, v3
-; GFX9-NEXT:    v_readlane_b32 s4, v30, 2
 ; GFX9-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:120
-; GFX9-NEXT:    v_mov_b32_e32 v2, s4
-; GFX9-NEXT:    v_readlane_b32 s4, v30, 0
-; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:    v_readlane_b32 s4, v30, 1
+; GFX9-NEXT:    v_mov_b32_e32 v2, s82
+; GFX9-NEXT:    v_mov_b32_e32 v3, s36
 ; GFX9-NEXT:    v_perm_b32 v2, s5, v2, v1
-; GFX9-NEXT:    v_perm_b32 v1, s4, v3, v1
+; GFX9-NEXT:    v_perm_b32 v1, s37, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_or_b32_e32 v1, v2, v1
 ; GFX9-NEXT:    v_readlane_b32 s30, v29, 34
+; GFX9-NEXT:    v_readlane_b32 s17, v30, 11
+; GFX9-NEXT:    v_readlane_b32 s15, v30, 13
+; GFX9-NEXT:    v_readlane_b32 s13, v30, 15
+; GFX9-NEXT:    v_readlane_b32 s11, v30, 17
+; GFX9-NEXT:    v_readlane_b32 s7, v30, 19
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:124
 ; GFX9-NEXT:    v_readlane_b32 s31, v29, 35
 ; GFX9-NEXT:    v_readlane_b32 s99, v29, 33
@@ -80466,154 +81205,6 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB57_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr85
-; GFX9-NEXT:    ; implicit-def: $sgpr51
-; GFX9-NEXT:    ; implicit-def: $sgpr69
-; GFX9-NEXT:    ; implicit-def: $sgpr50
-; GFX9-NEXT:    ; implicit-def: $sgpr52
-; GFX9-NEXT:    ; implicit-def: $sgpr71
-; GFX9-NEXT:    ; implicit-def: $sgpr54
-; GFX9-NEXT:    ; implicit-def: $sgpr68
-; GFX9-NEXT:    ; implicit-def: $sgpr38
-; GFX9-NEXT:    ; implicit-def: $sgpr48
-; GFX9-NEXT:    ; implicit-def: $sgpr70
-; GFX9-NEXT:    ; implicit-def: $sgpr39
-; GFX9-NEXT:    ; implicit-def: $sgpr80
-; GFX9-NEXT:    ; implicit-def: $sgpr99
-; GFX9-NEXT:    ; implicit-def: $sgpr49
-; GFX9-NEXT:    ; implicit-def: $sgpr64
-; GFX9-NEXT:    ; implicit-def: $sgpr97
-; GFX9-NEXT:    ; implicit-def: $sgpr66
-; GFX9-NEXT:    ; implicit-def: $sgpr87
-; GFX9-NEXT:    ; implicit-def: $sgpr98
-; GFX9-NEXT:    ; implicit-def: $sgpr55
-; GFX9-NEXT:    ; implicit-def: $sgpr86
-; GFX9-NEXT:    ; implicit-def: $sgpr65
-; GFX9-NEXT:    ; implicit-def: $sgpr96
-; GFX9-NEXT:    ; implicit-def: $sgpr84
-; GFX9-NEXT:    ; implicit-def: $sgpr67
-; GFX9-NEXT:    ; implicit-def: $sgpr82
-; GFX9-NEXT:    ; implicit-def: $sgpr53
-; GFX9-NEXT:    ; implicit-def: $sgpr81
-; GFX9-NEXT:    ; implicit-def: $sgpr83
-; GFX9-NEXT:    ; implicit-def: $sgpr36
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    s_branch .LBB57_2
 ;
 ; GFX11-LABEL: bitcast_v16i64_to_v128i8_scalar:
 ; GFX11:       ; %bb.0:
@@ -80682,161 +81273,302 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v2
 ; GFX11-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
-; GFX11-NEXT:    s_mov_b32 vcc_lo, 0
+; GFX11-NEXT:    s_mov_b32 s103, 0
 ; GFX11-NEXT:    ; implicit-def: $vgpr26 : SGPR spill to VGPR lane
 ; GFX11-NEXT:    ; implicit-def: $vgpr25 : SGPR spill to VGPR lane
-; GFX11-NEXT:    s_cbranch_scc0 .LBB57_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-NEXT:    s_lshr_b32 s42, s5, 24
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s27, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 0
-; GFX11-NEXT:    s_lshr_b32 s42, s5, 16
-; GFX11-NEXT:    s_lshr_b32 s34, s27, 16
-; GFX11-NEXT:    s_lshr_b32 s35, s27, 8
-; GFX11-NEXT:    s_lshr_b32 s37, s26, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 1
-; GFX11-NEXT:    s_lshr_b32 s42, s5, 8
-; GFX11-NEXT:    s_lshr_b32 s36, s26, 8
-; GFX11-NEXT:    s_lshr_b32 s39, s25, 24
-; GFX11-NEXT:    s_lshr_b32 s48, s25, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 2
+; GFX11-NEXT:    s_lshr_b32 s43, s8, 16
+; GFX11-NEXT:    s_lshr_b64 s[72:73], s[4:5], 24
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 18
+; GFX11-NEXT:    s_lshr_b32 s43, s12, 16
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[8:9], 24
+; GFX11-NEXT:    s_lshr_b32 s31, s5, 24
+; GFX11-NEXT:    s_lshr_b32 s104, s5, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 19
+; GFX11-NEXT:    s_lshr_b32 s43, s22, 16
+; GFX11-NEXT:    s_lshr_b32 s30, s5, 8
 ; GFX11-NEXT:    s_lshr_b32 s42, s4, 16
-; GFX11-NEXT:    s_lshr_b32 s38, s25, 8
-; GFX11-NEXT:    s_lshr_b32 s50, s24, 16
-; GFX11-NEXT:    s_lshr_b32 s49, s24, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 3
-; GFX11-NEXT:    s_lshr_b32 s42, s4, 8
-; GFX11-NEXT:    s_lshr_b32 s52, s23, 24
-; GFX11-NEXT:    s_lshr_b32 s53, s23, 16
-; GFX11-NEXT:    s_lshr_b32 s51, s23, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 4
-; GFX11-NEXT:    s_lshr_b32 s42, s7, 24
-; GFX11-NEXT:    s_lshr_b32 s69, s22, 16
-; GFX11-NEXT:    s_lshr_b32 s54, s22, 8
-; GFX11-NEXT:    s_lshr_b32 s55, s21, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 5
-; GFX11-NEXT:    s_lshr_b32 s42, s7, 16
-; GFX11-NEXT:    s_lshr_b32 s64, s21, 16
-; GFX11-NEXT:    s_lshr_b32 s65, s21, 8
-; GFX11-NEXT:    s_lshr_b32 s82, s20, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 6
-; GFX11-NEXT:    s_lshr_b32 s42, s7, 8
-; GFX11-NEXT:    s_lshr_b32 s68, s20, 8
-; GFX11-NEXT:    s_lshr_b32 s66, s19, 24
-; GFX11-NEXT:    s_lshr_b32 s67, s19, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 7
-; GFX11-NEXT:    s_lshr_b32 s42, s6, 16
-; GFX11-NEXT:    s_lshr_b32 s85, s19, 8
-; GFX11-NEXT:    s_lshr_b32 s86, s18, 16
-; GFX11-NEXT:    s_lshr_b32 s87, s18, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 8
-; GFX11-NEXT:    s_lshr_b32 s42, s6, 8
-; GFX11-NEXT:    s_lshr_b32 s70, s17, 24
-; GFX11-NEXT:    s_lshr_b32 s71, s17, 16
-; GFX11-NEXT:    s_lshr_b32 s96, s17, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 9
-; GFX11-NEXT:    s_lshr_b32 s42, s9, 24
-; GFX11-NEXT:    s_lshr_b32 s97, s16, 16
-; GFX11-NEXT:    s_lshr_b32 s98, s16, 8
-; GFX11-NEXT:    s_lshr_b32 s80, s3, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 10
-; GFX11-NEXT:    s_lshr_b32 s42, s9, 16
-; GFX11-NEXT:    s_lshr_b32 s81, s3, 16
-; GFX11-NEXT:    s_lshr_b32 s99, s3, 8
-; GFX11-NEXT:    s_lshr_b32 s100, s2, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 11
-; GFX11-NEXT:    s_lshr_b32 s42, s9, 8
-; GFX11-NEXT:    s_lshr_b32 s101, s2, 8
-; GFX11-NEXT:    s_lshr_b32 s83, s1, 24
-; GFX11-NEXT:    s_lshr_b32 s84, s1, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 12
-; GFX11-NEXT:    s_lshr_b32 s42, s8, 16
-; GFX11-NEXT:    s_lshr_b32 s102, s1, 8
-; GFX11-NEXT:    s_lshr_b32 s103, s0, 16
-; GFX11-NEXT:    s_lshr_b32 s104, s0, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 13
-; GFX11-NEXT:    s_lshr_b32 s42, s8, 8
-; GFX11-NEXT:    s_lshr_b64 s[44:45], s[6:7], 24
-; GFX11-NEXT:    s_lshr_b64 s[46:47], s[8:9], 24
-; GFX11-NEXT:    s_lshr_b64 s[56:57], s[10:11], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 14
-; GFX11-NEXT:    s_lshr_b32 s42, s11, 24
-; GFX11-NEXT:    s_lshr_b64 s[58:59], s[12:13], 24
-; GFX11-NEXT:    s_lshr_b64 s[60:61], s[14:15], 24
-; GFX11-NEXT:    s_lshr_b64 s[62:63], s[40:41], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 15
-; GFX11-NEXT:    s_lshr_b32 s42, s11, 16
-; GFX11-NEXT:    s_lshr_b64 s[74:75], s[28:29], 24
-; GFX11-NEXT:    s_lshr_b64 s[76:77], s[26:27], 24
-; GFX11-NEXT:    s_lshr_b64 s[72:73], s[24:25], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 16
-; GFX11-NEXT:    s_lshr_b32 s42, s11, 8
-; GFX11-NEXT:    s_lshr_b64 s[78:79], s[22:23], 24
+; GFX11-NEXT:    s_lshr_b32 s34, s4, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 20
+; GFX11-NEXT:    s_lshr_b32 s43, s20, 16
+; GFX11-NEXT:    s_lshr_b32 s35, s7, 24
+; GFX11-NEXT:    s_lshr_b32 s37, s7, 16
+; GFX11-NEXT:    s_lshr_b32 s36, s7, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 21
+; GFX11-NEXT:    s_lshr_b32 s43, s20, 8
+; GFX11-NEXT:    s_lshr_b32 s61, s6, 16
+; GFX11-NEXT:    s_lshr_b32 s38, s6, 8
+; GFX11-NEXT:    s_lshr_b32 s48, s9, 24
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 22
+; GFX11-NEXT:    s_lshr_b32 s43, s19, 8
+; GFX11-NEXT:    s_lshr_b32 s39, s9, 16
+; GFX11-NEXT:    s_lshr_b32 s45, s9, 8
+; GFX11-NEXT:    s_lshr_b32 s44, s8, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 23
+; GFX11-NEXT:    s_lshr_b32 s43, s18, 16
+; GFX11-NEXT:    s_lshr_b32 s47, s11, 24
+; GFX11-NEXT:    s_lshr_b32 s49, s11, 16
+; GFX11-NEXT:    s_lshr_b32 s46, s11, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 24
+; GFX11-NEXT:    s_lshr_b32 s43, s18, 8
+; GFX11-NEXT:    s_lshr_b32 s51, s10, 16
+; GFX11-NEXT:    s_lshr_b32 s50, s10, 8
+; GFX11-NEXT:    s_lshr_b32 s57, s13, 24
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 25
+; GFX11-NEXT:    s_lshr_b32 s43, s17, 24
+; GFX11-NEXT:    s_lshr_b32 s56, s13, 16
+; GFX11-NEXT:    s_lshr_b32 s59, s13, 8
+; GFX11-NEXT:    s_lshr_b32 s58, s12, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 26
+; GFX11-NEXT:    s_lshr_b32 s43, s17, 16
+; GFX11-NEXT:    s_lshr_b32 s60, s15, 24
+; GFX11-NEXT:    s_lshr_b32 s53, s15, 16
+; GFX11-NEXT:    s_lshr_b32 s52, s15, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 27
+; GFX11-NEXT:    s_lshr_b32 s43, s17, 8
+; GFX11-NEXT:    s_lshr_b32 s62, s14, 16
+; GFX11-NEXT:    s_lshr_b32 s63, s14, 8
+; GFX11-NEXT:    s_lshr_b32 s54, s41, 24
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 28
+; GFX11-NEXT:    s_lshr_b32 s43, s16, 16
+; GFX11-NEXT:    s_lshr_b32 s55, s41, 16
+; GFX11-NEXT:    s_lshr_b32 s64, s41, 8
+; GFX11-NEXT:    s_lshr_b32 s66, s40, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 29
+; GFX11-NEXT:    s_lshr_b32 s43, s16, 8
+; GFX11-NEXT:    s_lshr_b32 s65, s40, 8
+; GFX11-NEXT:    s_lshr_b32 s69, s29, 24
+; GFX11-NEXT:    s_lshr_b32 s71, s29, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 30
+; GFX11-NEXT:    s_lshr_b32 s43, s3, 24
+; GFX11-NEXT:    s_lshr_b32 s67, s29, 8
+; GFX11-NEXT:    s_lshr_b32 s81, s28, 16
+; GFX11-NEXT:    s_lshr_b32 s80, s28, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 31
+; GFX11-NEXT:    s_lshr_b32 s43, s3, 16
+; GFX11-NEXT:    s_lshr_b32 s82, s27, 24
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 0
+; GFX11-NEXT:    s_lshr_b32 s43, s3, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 16
+; GFX11-NEXT:    s_lshr_b32 s83, s27, 16
+; GFX11-NEXT:    s_lshr_b32 s84, s27, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 1
+; GFX11-NEXT:    s_lshr_b32 s43, s2, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 17
+; GFX11-NEXT:    s_lshr_b32 s86, s26, 16
+; GFX11-NEXT:    s_lshr_b32 s85, s26, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 2
+; GFX11-NEXT:    s_lshr_b32 s43, s2, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 14
+; GFX11-NEXT:    s_lshr_b32 s96, s25, 24
+; GFX11-NEXT:    s_lshr_b32 s97, s25, 16
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 3
+; GFX11-NEXT:    s_lshr_b32 s43, s1, 24
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 15
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[10:11], 24
+; GFX11-NEXT:    s_lshr_b32 s87, s25, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 4
+; GFX11-NEXT:    s_lshr_b32 s43, s1, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 12
+; GFX11-NEXT:    s_lshr_b32 s99, s24, 16
+; GFX11-NEXT:    s_lshr_b32 s98, s24, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 5
+; GFX11-NEXT:    s_lshr_b32 s43, s1, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 13
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[12:13], 24
+; GFX11-NEXT:    s_lshr_b32 s101, s23, 24
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 6
+; GFX11-NEXT:    s_lshr_b32 s43, s0, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 10
+; GFX11-NEXT:    s_lshr_b32 s102, s23, 16
+; GFX11-NEXT:    s_lshr_b32 s100, s23, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 7
+; GFX11-NEXT:    s_lshr_b32 s43, s0, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 11
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[14:15], 24
+; GFX11-NEXT:    s_lshr_b32 s76, s22, 8
+; GFX11-NEXT:    s_lshr_b32 s78, s21, 24
+; GFX11-NEXT:    s_lshr_b32 s77, s21, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 8
+; GFX11-NEXT:    s_lshr_b32 s68, s21, 8
+; GFX11-NEXT:    s_lshr_b32 s79, s19, 24
+; GFX11-NEXT:    s_lshr_b32 s70, s19, 16
+; GFX11-NEXT:    v_writelane_b32 v25, s43, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 9
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[40:41], 24
+; GFX11-NEXT:    s_lshr_b64 s[72:73], s[6:7], 24
 ; GFX11-NEXT:    s_lshr_b64 s[88:89], s[20:21], 24
 ; GFX11-NEXT:    s_lshr_b64 s[90:91], s[18:19], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 17
-; GFX11-NEXT:    s_lshr_b32 s42, s10, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 6
 ; GFX11-NEXT:    s_lshr_b64 s[92:93], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[94:95], s[2:3], 24
-; GFX11-NEXT:    s_lshr_b64 s[30:31], s[0:1], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 18
-; GFX11-NEXT:    s_lshr_b32 s42, s10, 8
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 19
-; GFX11-NEXT:    s_lshr_b32 s42, s13, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 20
-; GFX11-NEXT:    s_lshr_b32 s42, s13, 16
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 21
-; GFX11-NEXT:    s_lshr_b32 s42, s13, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 22
-; GFX11-NEXT:    s_lshr_b32 s42, s12, 16
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 23
-; GFX11-NEXT:    s_lshr_b32 s42, s12, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 24
-; GFX11-NEXT:    s_lshr_b32 s42, s15, 24
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 25
-; GFX11-NEXT:    s_lshr_b32 s42, s15, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 26
-; GFX11-NEXT:    s_lshr_b32 s42, s15, 8
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 27
-; GFX11-NEXT:    s_lshr_b32 s42, s14, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 28
-; GFX11-NEXT:    s_lshr_b32 s42, s14, 8
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 29
-; GFX11-NEXT:    s_lshr_b32 s42, s41, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 30
-; GFX11-NEXT:    s_lshr_b32 s42, s41, 16
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 31
-; GFX11-NEXT:    s_lshr_b32 s42, s41, 8
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 0
-; GFX11-NEXT:    s_lshr_b32 s42, s40, 16
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 1
-; GFX11-NEXT:    s_lshr_b32 s42, s40, 8
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 2
-; GFX11-NEXT:    s_lshr_b32 s42, s29, 24
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 3
-; GFX11-NEXT:    s_lshr_b32 s42, s29, 16
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 4
-; GFX11-NEXT:    s_lshr_b32 s42, s29, 8
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 5
-; GFX11-NEXT:    s_lshr_b32 s42, s28, 16
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 6
-; GFX11-NEXT:    s_lshr_b32 s42, s28, 8
+; GFX11-NEXT:    s_lshr_b64 vcc, s[0:1], 24
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 7
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[28:29], 24
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 4
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 5
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[26:27], 24
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 2
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 3
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[24:25], 24
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 7
-; GFX11-NEXT:    s_lshr_b64 s[42:43], s[4:5], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, vcc_lo
-; GFX11-NEXT:    s_cbranch_vccnz .LBB57_3
-; GFX11-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 0
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 1
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[22:23], 24
+; GFX11-NEXT:    s_branch .LBB57_3
+; GFX11-NEXT:  .LBB57_2:
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    s_mov_b32 s103, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $vcc_lo
+; GFX11-NEXT:    ; implicit-def: $sgpr94
+; GFX11-NEXT:    ; implicit-def: $sgpr92
+; GFX11-NEXT:    ; implicit-def: $sgpr90
+; GFX11-NEXT:    ; implicit-def: $sgpr70
+; GFX11-NEXT:    ; implicit-def: $sgpr79
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr68
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr100
+; GFX11-NEXT:    ; implicit-def: $sgpr102
+; GFX11-NEXT:    ; implicit-def: $sgpr101
+; GFX11-NEXT:    ; implicit-def: $sgpr98
+; GFX11-NEXT:    ; implicit-def: $sgpr99
+; GFX11-NEXT:    ; implicit-def: $sgpr87
+; GFX11-NEXT:    ; implicit-def: $sgpr97
+; GFX11-NEXT:    ; implicit-def: $sgpr96
+; GFX11-NEXT:    ; implicit-def: $sgpr85
+; GFX11-NEXT:    ; implicit-def: $sgpr86
+; GFX11-NEXT:    ; implicit-def: $sgpr84
+; GFX11-NEXT:    ; implicit-def: $sgpr83
+; GFX11-NEXT:    ; implicit-def: $sgpr82
+; GFX11-NEXT:    ; implicit-def: $sgpr80
+; GFX11-NEXT:    ; implicit-def: $sgpr81
+; GFX11-NEXT:    ; implicit-def: $sgpr67
+; GFX11-NEXT:    ; implicit-def: $sgpr71
+; GFX11-NEXT:    ; implicit-def: $sgpr69
+; GFX11-NEXT:    ; implicit-def: $sgpr65
+; GFX11-NEXT:    ; implicit-def: $sgpr66
+; GFX11-NEXT:    ; implicit-def: $sgpr64
+; GFX11-NEXT:    ; implicit-def: $sgpr55
+; GFX11-NEXT:    ; implicit-def: $sgpr54
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr52
+; GFX11-NEXT:    ; implicit-def: $sgpr53
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr50
+; GFX11-NEXT:    ; implicit-def: $sgpr51
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr49
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr39
+; GFX11-NEXT:    ; implicit-def: $sgpr48
+; GFX11-NEXT:    ; implicit-def: $sgpr38
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr36
+; GFX11-NEXT:    ; implicit-def: $sgpr37
+; GFX11-NEXT:    ; implicit-def: $sgpr35
+; GFX11-NEXT:    ; implicit-def: $sgpr34
+; GFX11-NEXT:    ; implicit-def: $sgpr30
+; GFX11-NEXT:    ; implicit-def: $sgpr104
+; GFX11-NEXT:    ; implicit-def: $sgpr31
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    v_writelane_b32 v26, s42, 0
+; GFX11-NEXT:    v_writelane_b32 v26, s43, 1
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 2
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 3
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 4
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 5
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 6
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 7
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 9
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 10
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 11
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 12
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 13
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 14
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 15
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 17
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:  .LBB57_3: ; %Flow
+; GFX11-NEXT:    s_and_b32 s43, s103, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s43, 1, 0
+; GFX11-NEXT:    s_mov_b32 s103, s31
+; GFX11-NEXT:    s_cmp_lg_u32 s43, 1
+; GFX11-NEXT:    s_mov_b32 s31, s42
+; GFX11-NEXT:    s_mov_b32 s42, s61
+; GFX11-NEXT:    s_mov_b32 s43, s48
+; GFX11-NEXT:    v_readlane_b32 s48, v26, 18
+; GFX11-NEXT:    v_readlane_b32 s61, v26, 19
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -80869,388 +81601,376 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_addc_u32 s7, s7, 0
 ; GFX11-NEXT:    s_add_u32 s4, s4, 3
 ; GFX11-NEXT:    s_addc_u32 s5, s5, 0
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s27, 24
-; GFX11-NEXT:    s_lshr_b32 s42, s5, 24
-; GFX11-NEXT:    s_lshr_b32 s34, s27, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 0
-; GFX11-NEXT:    s_lshr_b32 s42, s5, 16
-; GFX11-NEXT:    s_lshr_b32 s35, s27, 8
-; GFX11-NEXT:    s_lshr_b32 s37, s26, 16
-; GFX11-NEXT:    s_lshr_b32 s36, s26, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 1
-; GFX11-NEXT:    s_lshr_b32 s42, s5, 8
-; GFX11-NEXT:    s_lshr_b32 s39, s25, 24
-; GFX11-NEXT:    s_lshr_b32 s48, s25, 16
-; GFX11-NEXT:    s_lshr_b32 s38, s25, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 2
-; GFX11-NEXT:    s_lshr_b32 s42, s4, 16
-; GFX11-NEXT:    s_lshr_b32 s50, s24, 16
-; GFX11-NEXT:    s_lshr_b32 s49, s24, 8
-; GFX11-NEXT:    s_lshr_b32 s52, s23, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 3
-; GFX11-NEXT:    s_lshr_b32 s42, s4, 8
-; GFX11-NEXT:    s_lshr_b32 s53, s23, 16
-; GFX11-NEXT:    s_lshr_b32 s51, s23, 8
-; GFX11-NEXT:    s_lshr_b32 s69, s22, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 4
-; GFX11-NEXT:    s_lshr_b32 s42, s7, 24
-; GFX11-NEXT:    s_lshr_b32 s54, s22, 8
-; GFX11-NEXT:    s_lshr_b32 s55, s21, 24
-; GFX11-NEXT:    s_lshr_b32 s64, s21, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 5
-; GFX11-NEXT:    s_lshr_b32 s42, s7, 16
-; GFX11-NEXT:    s_lshr_b32 s65, s21, 8
-; GFX11-NEXT:    s_lshr_b32 s82, s20, 16
-; GFX11-NEXT:    s_lshr_b32 s68, s20, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 6
-; GFX11-NEXT:    s_lshr_b32 s42, s7, 8
-; GFX11-NEXT:    s_lshr_b32 s66, s19, 24
-; GFX11-NEXT:    s_lshr_b32 s67, s19, 16
-; GFX11-NEXT:    s_lshr_b32 s85, s19, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 7
+; GFX11-NEXT:    s_lshr_b32 s72, s22, 16
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[8:9], 24
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 20
+; GFX11-NEXT:    s_lshr_b32 s72, s20, 16
+; GFX11-NEXT:    s_lshr_b32 s103, s5, 24
+; GFX11-NEXT:    s_lshr_b32 s104, s5, 16
+; GFX11-NEXT:    s_lshr_b32 s30, s5, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 21
+; GFX11-NEXT:    s_lshr_b32 s72, s20, 8
+; GFX11-NEXT:    s_lshr_b32 s31, s4, 16
+; GFX11-NEXT:    s_lshr_b32 s34, s4, 8
+; GFX11-NEXT:    s_lshr_b32 s35, s7, 24
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 22
+; GFX11-NEXT:    s_lshr_b32 s72, s19, 8
+; GFX11-NEXT:    s_lshr_b32 s37, s7, 16
+; GFX11-NEXT:    s_lshr_b32 s36, s7, 8
 ; GFX11-NEXT:    s_lshr_b32 s42, s6, 16
-; GFX11-NEXT:    s_lshr_b32 s86, s18, 16
-; GFX11-NEXT:    s_lshr_b32 s87, s18, 8
-; GFX11-NEXT:    s_lshr_b32 s70, s17, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 8
-; GFX11-NEXT:    s_lshr_b32 s42, s6, 8
-; GFX11-NEXT:    s_lshr_b32 s71, s17, 16
-; GFX11-NEXT:    s_lshr_b32 s96, s17, 8
-; GFX11-NEXT:    s_lshr_b32 s97, s16, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 9
-; GFX11-NEXT:    s_lshr_b32 s42, s9, 24
-; GFX11-NEXT:    s_lshr_b32 s98, s16, 8
-; GFX11-NEXT:    s_lshr_b32 s80, s3, 24
-; GFX11-NEXT:    s_lshr_b32 s81, s3, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 10
-; GFX11-NEXT:    s_lshr_b32 s42, s9, 16
-; GFX11-NEXT:    s_lshr_b32 s99, s3, 8
-; GFX11-NEXT:    s_lshr_b32 s100, s2, 16
-; GFX11-NEXT:    s_lshr_b32 s101, s2, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 11
-; GFX11-NEXT:    s_lshr_b32 s42, s9, 8
-; GFX11-NEXT:    s_lshr_b32 s83, s1, 24
-; GFX11-NEXT:    s_lshr_b32 s84, s1, 16
-; GFX11-NEXT:    s_lshr_b32 s102, s1, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 12
-; GFX11-NEXT:    s_lshr_b32 s42, s8, 16
-; GFX11-NEXT:    s_lshr_b32 s103, s0, 16
-; GFX11-NEXT:    s_lshr_b32 s104, s0, 8
-; GFX11-NEXT:    s_lshr_b64 s[44:45], s[6:7], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 13
-; GFX11-NEXT:    s_lshr_b32 s42, s8, 8
-; GFX11-NEXT:    s_lshr_b64 s[46:47], s[8:9], 24
-; GFX11-NEXT:    s_lshr_b64 s[56:57], s[10:11], 24
-; GFX11-NEXT:    s_lshr_b64 s[58:59], s[12:13], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 14
-; GFX11-NEXT:    s_lshr_b32 s42, s11, 24
-; GFX11-NEXT:    s_lshr_b64 s[60:61], s[14:15], 24
-; GFX11-NEXT:    s_lshr_b64 s[62:63], s[40:41], 24
-; GFX11-NEXT:    s_lshr_b64 s[74:75], s[28:29], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 15
-; GFX11-NEXT:    s_lshr_b32 s42, s11, 16
-; GFX11-NEXT:    s_lshr_b64 s[76:77], s[26:27], 24
-; GFX11-NEXT:    s_lshr_b64 s[72:73], s[24:25], 24
-; GFX11-NEXT:    s_lshr_b64 s[78:79], s[22:23], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 16
-; GFX11-NEXT:    s_lshr_b32 s42, s11, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 23
+; GFX11-NEXT:    s_lshr_b32 s72, s18, 16
+; GFX11-NEXT:    s_lshr_b32 s38, s6, 8
+; GFX11-NEXT:    s_lshr_b32 s43, s9, 24
+; GFX11-NEXT:    s_lshr_b32 s39, s9, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 24
+; GFX11-NEXT:    s_lshr_b32 s72, s18, 8
+; GFX11-NEXT:    s_lshr_b32 s45, s9, 8
+; GFX11-NEXT:    s_lshr_b32 s48, s8, 16
+; GFX11-NEXT:    s_lshr_b32 s44, s8, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 25
+; GFX11-NEXT:    s_lshr_b32 s72, s17, 24
+; GFX11-NEXT:    s_lshr_b32 s47, s11, 24
+; GFX11-NEXT:    s_lshr_b32 s49, s11, 16
+; GFX11-NEXT:    s_lshr_b32 s46, s11, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 26
+; GFX11-NEXT:    s_lshr_b32 s72, s17, 16
+; GFX11-NEXT:    s_lshr_b32 s51, s10, 16
+; GFX11-NEXT:    s_lshr_b32 s50, s10, 8
+; GFX11-NEXT:    s_lshr_b32 s57, s13, 24
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 27
+; GFX11-NEXT:    s_lshr_b32 s72, s17, 8
+; GFX11-NEXT:    s_lshr_b32 s56, s13, 16
+; GFX11-NEXT:    s_lshr_b32 s59, s13, 8
+; GFX11-NEXT:    s_lshr_b32 s61, s12, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 28
+; GFX11-NEXT:    s_lshr_b32 s72, s16, 16
+; GFX11-NEXT:    s_lshr_b32 s58, s12, 8
+; GFX11-NEXT:    s_lshr_b32 s60, s15, 24
+; GFX11-NEXT:    s_lshr_b32 s53, s15, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 29
+; GFX11-NEXT:    s_lshr_b32 s72, s16, 8
+; GFX11-NEXT:    s_lshr_b32 s52, s15, 8
+; GFX11-NEXT:    s_lshr_b32 s62, s14, 16
+; GFX11-NEXT:    s_lshr_b32 s63, s14, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 30
+; GFX11-NEXT:    s_lshr_b32 s72, s3, 24
+; GFX11-NEXT:    s_lshr_b32 s54, s41, 24
+; GFX11-NEXT:    s_lshr_b32 s55, s41, 16
+; GFX11-NEXT:    s_lshr_b32 s64, s41, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 31
+; GFX11-NEXT:    s_lshr_b32 s72, s3, 16
+; GFX11-NEXT:    s_lshr_b32 s66, s40, 16
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 0
+; GFX11-NEXT:    s_lshr_b32 s72, s3, 8
+; GFX11-NEXT:    s_lshr_b32 s65, s40, 8
+; GFX11-NEXT:    s_lshr_b32 s69, s29, 24
+; GFX11-NEXT:    s_lshr_b32 s71, s29, 16
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 1
+; GFX11-NEXT:    s_lshr_b32 s72, s2, 16
+; GFX11-NEXT:    s_lshr_b32 s67, s29, 8
+; GFX11-NEXT:    s_lshr_b32 s81, s28, 16
+; GFX11-NEXT:    s_lshr_b32 s80, s28, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 2
+; GFX11-NEXT:    s_lshr_b32 s72, s2, 8
+; GFX11-NEXT:    s_lshr_b32 s82, s27, 24
+; GFX11-NEXT:    s_lshr_b32 s83, s27, 16
+; GFX11-NEXT:    s_lshr_b32 s84, s27, 8
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 3
+; GFX11-NEXT:    s_lshr_b32 s72, s1, 24
+; GFX11-NEXT:    s_lshr_b32 s86, s26, 16
+; GFX11-NEXT:    s_lshr_b32 s85, s26, 8
+; GFX11-NEXT:    s_lshr_b32 s96, s25, 24
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 4
+; GFX11-NEXT:    s_lshr_b32 s72, s1, 16
+; GFX11-NEXT:    s_lshr_b32 s97, s25, 16
+; GFX11-NEXT:    s_lshr_b32 s87, s25, 8
+; GFX11-NEXT:    s_lshr_b32 s99, s24, 16
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 5
+; GFX11-NEXT:    s_lshr_b32 s72, s1, 8
+; GFX11-NEXT:    s_lshr_b32 s98, s24, 8
+; GFX11-NEXT:    s_lshr_b32 s101, s23, 24
+; GFX11-NEXT:    s_lshr_b32 s102, s23, 16
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 6
+; GFX11-NEXT:    s_lshr_b32 s72, s0, 16
+; GFX11-NEXT:    s_lshr_b32 s100, s23, 8
+; GFX11-NEXT:    s_lshr_b32 s76, s22, 8
+; GFX11-NEXT:    s_lshr_b32 s78, s21, 24
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 7
+; GFX11-NEXT:    s_lshr_b32 s72, s0, 8
+; GFX11-NEXT:    s_lshr_b32 s77, s21, 16
+; GFX11-NEXT:    s_lshr_b32 s68, s21, 8
+; GFX11-NEXT:    s_lshr_b32 s79, s19, 24
+; GFX11-NEXT:    v_writelane_b32 v25, s72, 8
+; GFX11-NEXT:    s_lshr_b64 s[72:73], s[4:5], 24
+; GFX11-NEXT:    s_lshr_b32 s70, s19, 16
+; GFX11-NEXT:    v_writelane_b32 v26, s72, 16
 ; GFX11-NEXT:    s_lshr_b64 s[88:89], s[20:21], 24
 ; GFX11-NEXT:    s_lshr_b64 s[90:91], s[18:19], 24
 ; GFX11-NEXT:    s_lshr_b64 s[92:93], s[16:17], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 17
-; GFX11-NEXT:    s_lshr_b32 s42, s10, 16
 ; GFX11-NEXT:    s_lshr_b64 s[94:95], s[2:3], 24
-; GFX11-NEXT:    s_lshr_b64 s[30:31], s[0:1], 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 18
-; GFX11-NEXT:    s_lshr_b32 s42, s10, 8
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 19
-; GFX11-NEXT:    s_lshr_b32 s42, s13, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 20
-; GFX11-NEXT:    s_lshr_b32 s42, s13, 16
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 21
-; GFX11-NEXT:    s_lshr_b32 s42, s13, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 22
-; GFX11-NEXT:    s_lshr_b32 s42, s12, 16
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 23
-; GFX11-NEXT:    s_lshr_b32 s42, s12, 8
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 24
-; GFX11-NEXT:    s_lshr_b32 s42, s15, 24
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 25
-; GFX11-NEXT:    s_lshr_b32 s42, s15, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 26
-; GFX11-NEXT:    s_lshr_b32 s42, s15, 8
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 27
-; GFX11-NEXT:    s_lshr_b32 s42, s14, 16
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 28
-; GFX11-NEXT:    s_lshr_b32 s42, s14, 8
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 29
-; GFX11-NEXT:    s_lshr_b32 s42, s41, 24
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 30
-; GFX11-NEXT:    s_lshr_b32 s42, s41, 16
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v26, s42, 31
-; GFX11-NEXT:    s_lshr_b32 s42, s41, 8
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 0
-; GFX11-NEXT:    s_lshr_b32 s42, s40, 16
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 1
-; GFX11-NEXT:    s_lshr_b32 s42, s40, 8
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 2
-; GFX11-NEXT:    s_lshr_b32 s42, s29, 24
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 3
-; GFX11-NEXT:    s_lshr_b32 s42, s29, 16
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 4
-; GFX11-NEXT:    s_lshr_b32 s42, s29, 8
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 5
-; GFX11-NEXT:    s_lshr_b32 s42, s28, 16
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 6
-; GFX11-NEXT:    s_lshr_b32 s42, s28, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s73, 17
+; GFX11-NEXT:    s_lshr_b64 s[72:73], s[6:7], 24
+; GFX11-NEXT:    s_lshr_b64 vcc, s[0:1], 24
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 14
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 15
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[10:11], 24
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 12
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 13
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[12:13], 24
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 10
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 11
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[14:15], 24
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 8
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 9
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[40:41], 24
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 6
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 7
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[28:29], 24
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 4
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 5
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[26:27], 24
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 2
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 3
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[24:25], 24
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    v_writelane_b32 v25, s42, 7
-; GFX11-NEXT:    s_lshr_b64 s[42:43], s[4:5], 24
-; GFX11-NEXT:  .LBB57_3: ; %end
+; GFX11-NEXT:    v_writelane_b32 v26, s74, 0
+; GFX11-NEXT:    v_writelane_b32 v26, s75, 1
+; GFX11-NEXT:    s_lshr_b64 s[74:75], s[22:23], 24
+; GFX11-NEXT:  .LBB57_5: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)
-; GFX11-NEXT:    v_perm_b32 v2, s103, s30, v1
-; GFX11-NEXT:    v_readlane_b32 s30, v24, 7
-; GFX11-NEXT:    v_readlane_b32 s31, v24, 8
-; GFX11-NEXT:    v_readlane_b32 s103, v24, 5
+; GFX11-NEXT:    v_readlane_b32 s73, v25, 7
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
+; GFX11-NEXT:    v_perm_b32 v2, s73, vcc_lo, v1
+; GFX11-NEXT:    v_readlane_b32 s73, v25, 8
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
-; GFX11-NEXT:    v_perm_b32 v18, s84, s83, v1
-; GFX11-NEXT:    v_perm_b32 v3, s0, s104, v1
-; GFX11-NEXT:    v_perm_b32 v4, s1, s102, v1
-; GFX11-NEXT:    v_perm_b32 v5, s100, s94, v1
-; GFX11-NEXT:    v_perm_b32 v19, s81, s80, v1
-; GFX11-NEXT:    v_lshlrev_b32_e32 v18, 16, v18
-; GFX11-NEXT:    v_perm_b32 v6, s2, s101, v1
-; GFX11-NEXT:    v_perm_b32 v7, s3, s99, v1
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX11-NEXT:    v_perm_b32 v3, s0, s73, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v25, 6
+; GFX11-NEXT:    v_perm_b32 v21, s70, s79, v1
+; GFX11-NEXT:    v_perm_b32 v22, s77, s78, v1
+; GFX11-NEXT:    v_perm_b32 v17, s21, s68, v1
 ; GFX11-NEXT:    v_or_b32_e32 v2, v3, v2
-; GFX11-NEXT:    v_perm_b32 v8, s97, s92, v1
+; GFX11-NEXT:    v_perm_b32 v4, s1, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v25, 2
+; GFX11-NEXT:    v_readlane_b32 s1, v25, 5
+; GFX11-NEXT:    v_readlane_b32 s70, v23, 20
+; GFX11-NEXT:    v_readlane_b32 s68, v23, 18
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX11-NEXT:    v_perm_b32 v5, s0, s94, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v25, 3
+; GFX11-NEXT:    v_perm_b32 v6, s2, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v25, 1
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX11-NEXT:    v_perm_b32 v7, s3, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 29
+; GFX11-NEXT:    v_perm_b32 v8, s0, s92, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 30
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX11-NEXT:    v_perm_b32 v9, s16, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 28
+; GFX11-NEXT:    v_perm_b32 v10, s17, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 24
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX11-NEXT:    v_perm_b32 v11, s0, s90, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 25
+; GFX11-NEXT:    v_perm_b32 v12, s18, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 23
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX11-NEXT:    v_perm_b32 v13, s19, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 21
+; GFX11-NEXT:    v_perm_b32 v14, s0, s88, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 20
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX11-NEXT:    v_perm_b32 v15, s0, s74, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 22
+; GFX11-NEXT:    v_perm_b32 v16, s20, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v25, 4
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)
+; GFX11-NEXT:    v_perm_b32 v18, s1, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 31
+; GFX11-NEXT:    v_readlane_b32 s1, v25, 0
+; GFX11-NEXT:    v_lshlrev_b32_e32 v18, 16, v18
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_4)
+; GFX11-NEXT:    v_perm_b32 v19, s1, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 26
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 27
 ; GFX11-NEXT:    v_or_b32_e32 v3, v4, v18
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v4, 16, v5
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v19
-; GFX11-NEXT:    v_perm_b32 v11, s86, s90, v1
-; GFX11-NEXT:    v_perm_b32 v20, s71, s70, v1
-; GFX11-NEXT:    v_perm_b32 v21, s67, s66, v1
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_4)
+; GFX11-NEXT:    v_perm_b32 v20, s1, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 0
 ; GFX11-NEXT:    v_or_b32_e32 v4, v6, v4
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v5, v7, v5
-; GFX11-NEXT:    v_perm_b32 v9, s16, s98, v1
-; GFX11-NEXT:    v_perm_b32 v10, s17, s96, v1
-; GFX11-NEXT:    v_perm_b32 v12, s18, s87, v1
-; GFX11-NEXT:    v_perm_b32 v13, s19, s85, v1
-; GFX11-NEXT:    v_perm_b32 v22, s64, s55, v1
+; GFX11-NEXT:    v_perm_b32 v6, s102, s101, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v7, 16, v14
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 1
+; GFX11-NEXT:    v_perm_b32 v14, s7, s36, v1
 ; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 16, v8
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 16, v20
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v4, 16, v11
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v21
-; GFX11-NEXT:    v_perm_b32 v14, s82, s88, v1
-; GFX11-NEXT:    v_perm_b32 v17, s21, s65, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v8, 16, v22
 ; GFX11-NEXT:    v_or_b32_e32 v2, v9, v2
 ; GFX11-NEXT:    v_or_b32_e32 v3, v10, v3
 ; GFX11-NEXT:    v_or_b32_e32 v4, v12, v4
 ; GFX11-NEXT:    v_or_b32_e32 v5, v13, v5
-; GFX11-NEXT:    v_lshlrev_b32_e32 v8, 16, v22
-; GFX11-NEXT:    v_perm_b32 v15, s69, s78, v1
-; GFX11-NEXT:    v_perm_b32 v16, s20, s68, v1
-; GFX11-NEXT:    v_perm_b32 v6, s53, s52, v1
-; GFX11-NEXT:    v_lshlrev_b32_e32 v7, 16, v14
-; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:16
-; GFX11-NEXT:    v_or_b32_e32 v3, v17, v8
-; GFX11-NEXT:    v_perm_b32 v8, s48, s39, v1
-; GFX11-NEXT:    v_perm_b32 v9, s22, s54, v1
+; GFX11-NEXT:    v_perm_b32 v9, s22, s76, v1
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v10, 16, v15
-; GFX11-NEXT:    v_or_b32_e32 v2, v16, v7
-; GFX11-NEXT:    v_perm_b32 v5, s50, s72, v1
-; GFX11-NEXT:    v_perm_b32 v7, s23, s51, v1
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
-; GFX11-NEXT:    v_perm_b32 v11, s25, s38, v1
-; GFX11-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
-; GFX11-NEXT:    v_readlane_b32 s0, v25, 6
+; GFX11-NEXT:    v_perm_b32 v11, s25, s87, v1
+; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:16
+; GFX11-NEXT:    v_or_b32_e32 v2, v16, v7
+; GFX11-NEXT:    v_or_b32_e32 v3, v17, v8
+; GFX11-NEXT:    v_perm_b32 v5, s99, s0, v1
+; GFX11-NEXT:    v_perm_b32 v7, s23, s100, v1
+; GFX11-NEXT:    v_perm_b32 v8, s97, s96, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 2
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 3
 ; GFX11-NEXT:    v_or_b32_e32 v4, v9, v10
+; GFX11-NEXT:    v_perm_b32 v9, s24, s98, v1
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v10, 16, v5
+; GFX11-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
+; GFX11-NEXT:    v_perm_b32 v12, s86, s0, v1
 ; GFX11-NEXT:    v_or_b32_e32 v5, v7, v6
-; GFX11-NEXT:    v_or_b32_e32 v7, v11, v8
-; GFX11-NEXT:    v_perm_b32 v11, s0, s74, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v25, 3
-; GFX11-NEXT:    v_readlane_b32 s1, v25, 4
-; GFX11-NEXT:    v_perm_b32 v9, s24, s49, v1
-; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:32
-; GFX11-NEXT:    v_perm_b32 v12, s37, s76, v1
-; GFX11-NEXT:    v_perm_b32 v8, s26, s36, v1
-; GFX11-NEXT:    v_perm_b32 v2, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v25, 7
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 4
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 5
 ; GFX11-NEXT:    v_or_b32_e32 v6, v9, v10
-; GFX11-NEXT:    v_perm_b32 v10, s34, vcc_hi, v1
+; GFX11-NEXT:    v_or_b32_e32 v7, v11, v8
+; GFX11-NEXT:    v_perm_b32 v8, s26, s85, v1
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v12
-; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v11
-; GFX11-NEXT:    v_perm_b32 v4, s28, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v25, 5
-; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 16, v10
+; GFX11-NEXT:    v_perm_b32 v10, s83, s82, v1
+; GFX11-NEXT:    v_perm_b32 v11, s81, s0, v1
+; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:32
+; GFX11-NEXT:    v_perm_b32 v2, s71, s69, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 6
 ; GFX11-NEXT:    v_or_b32_e32 v8, v8, v9
-; GFX11-NEXT:    v_perm_b32 v9, s27, s35, v1
+; GFX11-NEXT:    v_perm_b32 v9, s27, s84, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 16, v10
+; GFX11-NEXT:    v_perm_b32 v4, s28, s80, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v11
+; GFX11-NEXT:    v_perm_b32 v10, s29, s67, v1
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v2
-; GFX11-NEXT:    v_perm_b32 v10, s29, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v25, 1
-; GFX11-NEXT:    v_or_b32_e32 v2, v4, v5
-; GFX11-NEXT:    v_readlane_b32 s1, v26, 31
+; GFX11-NEXT:    v_perm_b32 v12, s66, s0, v1
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 7
 ; GFX11-NEXT:    v_or_b32_e32 v9, v9, v3
+; GFX11-NEXT:    v_or_b32_e32 v2, v4, v5
 ; GFX11-NEXT:    v_or_b32_e32 v3, v10, v11
-; GFX11-NEXT:    v_perm_b32 v12, s0, s62, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v25, 2
-; GFX11-NEXT:    v_readlane_b32 s104, v24, 6
+; GFX11-NEXT:    v_perm_b32 v4, s40, s65, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v12
+; GFX11-NEXT:    v_perm_b32 v10, s55, s54, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 8
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 9
 ; GFX11-NEXT:    scratch_store_b128 v0, v[6:9], off offset:48
-; GFX11-NEXT:    v_readlane_b32 s102, v24, 4
+; GFX11-NEXT:    v_or_b32_e32 v4, v4, v5
+; GFX11-NEXT:    v_perm_b32 v5, s41, s64, v1
+; GFX11-NEXT:    v_perm_b32 v11, s62, s0, v1
+; GFX11-NEXT:    v_perm_b32 v6, s53, s60, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v7, 16, v10
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 10
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 11
+; GFX11-NEXT:    v_perm_b32 v8, s14, s63, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v11
+; GFX11-NEXT:    v_perm_b32 v10, s15, s52, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v6
+; GFX11-NEXT:    v_perm_b32 v12, s61, s0, v1
+; GFX11-NEXT:    v_or_b32_e32 v5, v5, v7
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 12
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 13
+; GFX11-NEXT:    v_or_b32_e32 v6, v8, v9
+; GFX11-NEXT:    v_or_b32_e32 v7, v10, v11
+; GFX11-NEXT:    v_perm_b32 v8, s12, s58, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v12
+; GFX11-NEXT:    v_perm_b32 v10, s56, s57, v1
+; GFX11-NEXT:    v_perm_b32 v11, s51, s0, v1
+; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:64
+; GFX11-NEXT:    v_perm_b32 v2, s49, s47, v1
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 14
+; GFX11-NEXT:    v_or_b32_e32 v8, v8, v9
+; GFX11-NEXT:    v_perm_b32 v9, s13, s59, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 16, v10
+; GFX11-NEXT:    v_perm_b32 v4, s10, s50, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v11
+; GFX11-NEXT:    v_perm_b32 v10, s11, s46, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v2
+; GFX11-NEXT:    v_perm_b32 v12, s48, s0, v1
+; GFX11-NEXT:    v_or_b32_e32 v9, v9, v3
+; GFX11-NEXT:    v_or_b32_e32 v2, v4, v5
+; GFX11-NEXT:    v_perm_b32 v4, s8, s44, v1
+; GFX11-NEXT:    v_or_b32_e32 v3, v10, v11
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v12
-; GFX11-NEXT:    v_perm_b32 v4, s40, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 30
+; GFX11-NEXT:    v_perm_b32 v10, s39, s43, v1
+; GFX11-NEXT:    v_perm_b32 v11, s42, s72, v1
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 15
+; GFX11-NEXT:    v_perm_b32 v12, s6, s38, v1
+; GFX11-NEXT:    v_or_b32_e32 v4, v4, v5
+; GFX11-NEXT:    v_perm_b32 v5, s9, s45, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
+; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
+; GFX11-NEXT:    v_readlane_b32 s0, v26, 16
+; GFX11-NEXT:    v_readlane_b32 s1, v26, 17
+; GFX11-NEXT:    v_readlane_b32 s102, v24, 4
+; GFX11-NEXT:    v_or_b32_e32 v5, v5, v10
+; GFX11-NEXT:    v_perm_b32 v10, s37, s35, v1
 ; GFX11-NEXT:    v_readlane_b32 s101, v24, 3
 ; GFX11-NEXT:    v_readlane_b32 s100, v24, 2
 ; GFX11-NEXT:    v_readlane_b32 s99, v24, 1
-; GFX11-NEXT:    v_or_b32_e32 v4, v4, v5
-; GFX11-NEXT:    v_perm_b32 v10, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v25, 0
-; GFX11-NEXT:    v_readlane_b32 s1, v26, 26
 ; GFX11-NEXT:    v_readlane_b32 s98, v24, 0
+; GFX11-NEXT:    v_lshlrev_b32_e32 v13, 16, v10
+; GFX11-NEXT:    v_or_b32_e32 v10, v12, v11
+; GFX11-NEXT:    v_perm_b32 v12, s31, s0, v1
 ; GFX11-NEXT:    v_readlane_b32 s97, v23, 31
-; GFX11-NEXT:    v_lshlrev_b32_e32 v7, 16, v10
-; GFX11-NEXT:    v_perm_b32 v5, s41, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 28
 ; GFX11-NEXT:    v_readlane_b32 s96, v23, 30
+; GFX11-NEXT:    v_or_b32_e32 v11, v14, v13
+; GFX11-NEXT:    v_perm_b32 v13, s4, s34, v1
+; GFX11-NEXT:    v_lshlrev_b32_e32 v12, 16, v12
 ; GFX11-NEXT:    v_readlane_b32 s87, v23, 29
 ; GFX11-NEXT:    v_readlane_b32 s86, v23, 28
-; GFX11-NEXT:    v_or_b32_e32 v5, v5, v7
-; GFX11-NEXT:    v_perm_b32 v11, s0, s60, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 25
 ; GFX11-NEXT:    v_readlane_b32 s85, v23, 27
 ; GFX11-NEXT:    v_readlane_b32 s84, v23, 26
-; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:64
-; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v11
-; GFX11-NEXT:    v_perm_b32 v6, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 29
-; GFX11-NEXT:    v_readlane_b32 s1, v26, 21
+; GFX11-NEXT:    v_or_b32_e32 v12, v13, v12
+; GFX11-NEXT:    v_perm_b32 v13, s104, s103, v1
+; GFX11-NEXT:    v_perm_b32 v1, s5, s30, v1
+; GFX11-NEXT:    v_readlane_b32 s30, v24, 7
+; GFX11-NEXT:    v_readlane_b32 s31, v24, 8
+; GFX11-NEXT:    v_readlane_b32 s104, v24, 6
+; GFX11-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
+; GFX11-NEXT:    v_readlane_b32 s103, v24, 5
 ; GFX11-NEXT:    v_readlane_b32 s83, v23, 25
 ; GFX11-NEXT:    v_readlane_b32 s82, v23, 24
-; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v6
-; GFX11-NEXT:    v_perm_b32 v8, s14, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 27
 ; GFX11-NEXT:    v_readlane_b32 s81, v23, 23
+; GFX11-NEXT:    v_or_b32_e32 v13, v1, v13
+; GFX11-NEXT:    s_clause 0x2
+; GFX11-NEXT:    scratch_store_b128 v0, v[6:9], off offset:80
+; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:96
+; GFX11-NEXT:    scratch_store_b128 v0, v[10:13], off offset:112
 ; GFX11-NEXT:    v_readlane_b32 s80, v23, 22
 ; GFX11-NEXT:    v_readlane_b32 s71, v23, 21
-; GFX11-NEXT:    v_or_b32_e32 v6, v8, v9
-; GFX11-NEXT:    v_perm_b32 v10, s15, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 23
-; GFX11-NEXT:    v_readlane_b32 s70, v23, 20
 ; GFX11-NEXT:    v_readlane_b32 s69, v23, 19
-; GFX11-NEXT:    v_readlane_b32 s68, v23, 18
-; GFX11-NEXT:    v_or_b32_e32 v7, v10, v11
-; GFX11-NEXT:    v_perm_b32 v12, s0, s58, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 24
 ; GFX11-NEXT:    v_readlane_b32 s67, v23, 17
 ; GFX11-NEXT:    v_readlane_b32 s66, v23, 16
 ; GFX11-NEXT:    v_readlane_b32 s65, v23, 15
-; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v12
-; GFX11-NEXT:    v_perm_b32 v8, s12, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 20
 ; GFX11-NEXT:    v_readlane_b32 s64, v23, 14
 ; GFX11-NEXT:    v_readlane_b32 s55, v23, 13
 ; GFX11-NEXT:    v_readlane_b32 s54, v23, 12
-; GFX11-NEXT:    v_or_b32_e32 v8, v8, v9
-; GFX11-NEXT:    v_perm_b32 v10, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 22
-; GFX11-NEXT:    v_readlane_b32 s1, v26, 16
 ; GFX11-NEXT:    v_readlane_b32 s53, v23, 11
 ; GFX11-NEXT:    v_readlane_b32 s52, v23, 10
-; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 16, v10
-; GFX11-NEXT:    v_perm_b32 v9, s13, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 18
 ; GFX11-NEXT:    v_readlane_b32 s51, v23, 9
 ; GFX11-NEXT:    v_readlane_b32 s50, v23, 8
 ; GFX11-NEXT:    v_readlane_b32 s49, v23, 7
-; GFX11-NEXT:    v_or_b32_e32 v9, v9, v3
-; GFX11-NEXT:    v_perm_b32 v11, s0, s56, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 15
 ; GFX11-NEXT:    v_readlane_b32 s48, v23, 6
 ; GFX11-NEXT:    v_readlane_b32 s39, v23, 5
 ; GFX11-NEXT:    v_readlane_b32 s38, v23, 4
-; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v11
-; GFX11-NEXT:    v_perm_b32 v2, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 19
-; GFX11-NEXT:    v_readlane_b32 s1, v26, 11
 ; GFX11-NEXT:    v_readlane_b32 s37, v23, 3
 ; GFX11-NEXT:    v_readlane_b32 s36, v23, 2
-; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v2
-; GFX11-NEXT:    v_perm_b32 v4, s10, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 17
 ; GFX11-NEXT:    v_readlane_b32 s35, v23, 1
 ; GFX11-NEXT:    v_readlane_b32 s34, v23, 0
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
-; GFX11-NEXT:    v_or_b32_e32 v2, v4, v5
-; GFX11-NEXT:    v_perm_b32 v10, s11, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 13
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_or_b32_e32 v3, v10, v11
-; GFX11-NEXT:    v_perm_b32 v12, s0, s46, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 14
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v12
-; GFX11-NEXT:    v_perm_b32 v4, s8, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 10
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_or_b32_e32 v4, v4, v5
-; GFX11-NEXT:    v_perm_b32 v10, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 12
-; GFX11-NEXT:    v_readlane_b32 s1, v26, 6
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX11-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
-; GFX11-NEXT:    v_perm_b32 v5, s9, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 8
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_or_b32_e32 v5, v5, v10
-; GFX11-NEXT:    v_perm_b32 v11, s0, s44, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 5
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
-; GFX11-NEXT:    v_perm_b32 v10, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 9
-; GFX11-NEXT:    v_readlane_b32 s1, v26, 1
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX11-NEXT:    v_lshlrev_b32_e32 v13, 16, v10
-; GFX11-NEXT:    v_perm_b32 v12, s6, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 7
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_or_b32_e32 v10, v12, v11
-; GFX11-NEXT:    v_perm_b32 v14, s7, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 3
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_or_b32_e32 v11, v14, v13
-; GFX11-NEXT:    v_perm_b32 v12, s0, s42, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 4
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_lshlrev_b32_e32 v12, 16, v12
-; GFX11-NEXT:    v_perm_b32 v13, s4, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 0
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_or_b32_e32 v12, v13, v12
-; GFX11-NEXT:    v_perm_b32 v13, s1, s0, v1
-; GFX11-NEXT:    v_readlane_b32 s0, v26, 2
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
-; GFX11-NEXT:    v_perm_b32 v1, s5, s0, v1
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_or_b32_e32 v13, v1, v13
-; GFX11-NEXT:    s_clause 0x2
-; GFX11-NEXT:    scratch_store_b128 v0, v[6:9], off offset:80
-; GFX11-NEXT:    scratch_store_b128 v0, v[2:5], off offset:96
-; GFX11-NEXT:    scratch_store_b128 v0, v[10:13], off offset:112
 ; GFX11-NEXT:    s_xor_saveexec_b32 s0, -1
 ; GFX11-NEXT:    s_clause 0x3 ; 16-byte Folded Reload
 ; GFX11-NEXT:    scratch_load_b32 v23, off, s32
@@ -81260,144 +81980,6 @@ define inreg <128 x i8> @bitcast_v16i64_to_v128i8_scalar(<16 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 exec_lo, s0
 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB57_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr104
-; GFX11-NEXT:    ; implicit-def: $sgpr103
-; GFX11-NEXT:    ; implicit-def: $sgpr30
-; GFX11-NEXT:    ; implicit-def: $sgpr102
-; GFX11-NEXT:    ; implicit-def: $sgpr84
-; GFX11-NEXT:    ; implicit-def: $sgpr83
-; GFX11-NEXT:    ; implicit-def: $sgpr101
-; GFX11-NEXT:    ; implicit-def: $sgpr100
-; GFX11-NEXT:    ; implicit-def: $sgpr94
-; GFX11-NEXT:    ; implicit-def: $sgpr99
-; GFX11-NEXT:    ; implicit-def: $sgpr81
-; GFX11-NEXT:    ; implicit-def: $sgpr80
-; GFX11-NEXT:    ; implicit-def: $sgpr98
-; GFX11-NEXT:    ; implicit-def: $sgpr97
-; GFX11-NEXT:    ; implicit-def: $sgpr92
-; GFX11-NEXT:    ; implicit-def: $sgpr96
-; GFX11-NEXT:    ; implicit-def: $sgpr71
-; GFX11-NEXT:    ; implicit-def: $sgpr70
-; GFX11-NEXT:    ; implicit-def: $sgpr87
-; GFX11-NEXT:    ; implicit-def: $sgpr86
-; GFX11-NEXT:    ; implicit-def: $sgpr90
-; GFX11-NEXT:    ; implicit-def: $sgpr85
-; GFX11-NEXT:    ; implicit-def: $sgpr67
-; GFX11-NEXT:    ; implicit-def: $sgpr66
-; GFX11-NEXT:    ; implicit-def: $sgpr68
-; GFX11-NEXT:    ; implicit-def: $sgpr82
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr65
-; GFX11-NEXT:    ; implicit-def: $sgpr64
-; GFX11-NEXT:    ; implicit-def: $sgpr55
-; GFX11-NEXT:    ; implicit-def: $sgpr54
-; GFX11-NEXT:    ; implicit-def: $sgpr69
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr51
-; GFX11-NEXT:    ; implicit-def: $sgpr53
-; GFX11-NEXT:    ; implicit-def: $sgpr52
-; GFX11-NEXT:    ; implicit-def: $sgpr49
-; GFX11-NEXT:    ; implicit-def: $sgpr50
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr38
-; GFX11-NEXT:    ; implicit-def: $sgpr48
-; GFX11-NEXT:    ; implicit-def: $sgpr39
-; GFX11-NEXT:    ; implicit-def: $sgpr36
-; GFX11-NEXT:    ; implicit-def: $sgpr37
-; GFX11-NEXT:    ; implicit-def: $sgpr35
-; GFX11-NEXT:    ; implicit-def: $sgpr34
-; GFX11-NEXT:    ; implicit-def: $vcc_hi
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    s_branch .LBB57_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -87913,8 +88495,10 @@ define inreg <16 x i64> @bitcast_v128i8_to_v16i64_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:480 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v37, off, s[0:3], s32 offset:444 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v39, off, s[0:3], s32 offset:448 ; 4-byte Folded Reload
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; SI-NEXT:    s_cbranch_vccnz .LBB59_5
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
 ; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:660 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:604 ; 4-byte Folded Reload
@@ -88911,8 +89495,10 @@ define inreg <16 x i64> @bitcast_v128i8_to_v16i64_scalar(<128 x i8> inreg %a, i3
 ; VI-NEXT:    buffer_load_dword v52, off, s[0:3], s32 offset:596 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:600 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v54, off, s[0:3], s32 offset:604 ; 4-byte Folded Reload
-; VI-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; VI-NEXT:    s_cbranch_vccnz .LBB59_5
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
 ; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
@@ -89835,8 +90421,10 @@ define inreg <16 x i64> @bitcast_v128i8_to_v16i64_scalar(<128 x i8> inreg %a, i3
 ; GFX9-NEXT:    buffer_load_dword v52, off, s[0:3], s32 offset:596 ; 4-byte Folded Reload
 ; GFX9-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:600 ; 4-byte Folded Reload
 ; GFX9-NEXT:    buffer_load_dword v54, off, s[0:3], s32 offset:604 ; 4-byte Folded Reload
-; GFX9-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GFX9-NEXT:    s_cbranch_vccnz .LBB59_5
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
 ; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
@@ -90331,7 +90919,7 @@ define inreg <16 x i64> @bitcast_v128i8_to_v16i64_scalar(<128 x i8> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v31
 ; GFX11-TRUE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB59_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
@@ -90477,9 +91065,17 @@ define inreg <16 x i64> @bitcast_v128i8_to_v16i64_scalar(<128 x i8> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v30, v31, v183
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v31, v40, v41
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB59_3
-; GFX11-TRUE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB59_3
+; GFX11-TRUE16-NEXT:  .LBB59_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; GFX11-TRUE16-NEXT:  .LBB59_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-TRUE16-NEXT:    s_add_i32 s0, s0, 3
@@ -90770,15 +91366,12 @@ define inreg <16 x i64> @bitcast_v128i8_to_v16i64_scalar(<128 x i8> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v29, v31, v34
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v30, v36, v35
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v31, v33, v32
-; GFX11-TRUE16-NEXT:  .LBB59_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB59_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; 8-byte Folded Reload
 ; GFX11-TRUE16-NEXT:    scratch_load_b32 v41, off, s32 offset:320
 ; GFX11-TRUE16-NEXT:    scratch_load_b32 v40, off, s32 offset:324
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB59_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; GFX11-TRUE16-NEXT:    s_branch .LBB59_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v128i8_to_v16i64_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -90905,7 +91498,7 @@ define inreg <16 x i64> @bitcast_v128i8_to_v16i64_scalar(<128 x i8> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v31
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB59_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
@@ -91051,9 +91644,17 @@ define inreg <16 x i64> @bitcast_v128i8_to_v16i64_scalar(<128 x i8> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v30, v31, v183
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v31, v40, v41
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB59_3
-; GFX11-FAKE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB59_3
+; GFX11-FAKE16-NEXT:  .LBB59_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; GFX11-FAKE16-NEXT:  .LBB59_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-FAKE16-NEXT:    s_add_i32 s0, s0, 3
@@ -91344,15 +91945,12 @@ define inreg <16 x i64> @bitcast_v128i8_to_v16i64_scalar(<128 x i8> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v29, v31, v34
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v30, v36, v35
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v31, v33, v32
-; GFX11-FAKE16-NEXT:  .LBB59_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB59_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; 8-byte Folded Reload
 ; GFX11-FAKE16-NEXT:    scratch_load_b32 v41, off, s32 offset:320
 ; GFX11-FAKE16-NEXT:    scratch_load_b32 v40, off, s32 offset:324
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB59_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; GFX11-FAKE16-NEXT:    s_branch .LBB59_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -92223,381 +92821,100 @@ define inreg <64 x bfloat> @bitcast_v16i64_to_v64bf16_scalar(<16 x i64> inreg %a
 ; SI-NEXT:    v_writelane_b32 v33, s30, 34
 ; SI-NEXT:    v_writelane_b32 v33, s31, 35
 ; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_readfirstlane_b32 s70, v17
-; SI-NEXT:    v_readfirstlane_b32 s71, v16
-; SI-NEXT:    v_readfirstlane_b32 s80, v15
-; SI-NEXT:    v_readfirstlane_b32 s81, v14
-; SI-NEXT:    v_readfirstlane_b32 s82, v13
-; SI-NEXT:    v_readfirstlane_b32 s83, v12
-; SI-NEXT:    v_readfirstlane_b32 s84, v11
-; SI-NEXT:    v_readfirstlane_b32 s85, v10
-; SI-NEXT:    v_readfirstlane_b32 s86, v9
-; SI-NEXT:    v_readfirstlane_b32 s87, v8
-; SI-NEXT:    v_readfirstlane_b32 s96, v7
-; SI-NEXT:    v_readfirstlane_b32 s97, v6
-; SI-NEXT:    v_readfirstlane_b32 s98, v5
-; SI-NEXT:    v_readfirstlane_b32 s99, v4
-; SI-NEXT:    v_readfirstlane_b32 s6, v3
-; SI-NEXT:    v_readfirstlane_b32 s7, v2
-; SI-NEXT:    v_readfirstlane_b32 s8, v1
+; SI-NEXT:    v_readfirstlane_b32 s68, v17
+; SI-NEXT:    v_readfirstlane_b32 s69, v16
+; SI-NEXT:    v_readfirstlane_b32 s70, v15
+; SI-NEXT:    v_readfirstlane_b32 s71, v14
+; SI-NEXT:    v_readfirstlane_b32 s80, v13
+; SI-NEXT:    v_readfirstlane_b32 s81, v12
+; SI-NEXT:    v_readfirstlane_b32 s82, v11
+; SI-NEXT:    v_readfirstlane_b32 s83, v10
+; SI-NEXT:    v_readfirstlane_b32 s84, v9
+; SI-NEXT:    v_readfirstlane_b32 s85, v8
+; SI-NEXT:    v_readfirstlane_b32 s86, v7
+; SI-NEXT:    v_readfirstlane_b32 s87, v6
+; SI-NEXT:    v_readfirstlane_b32 s96, v5
+; SI-NEXT:    v_readfirstlane_b32 s97, v4
+; SI-NEXT:    v_readfirstlane_b32 s98, v3
+; SI-NEXT:    v_readfirstlane_b32 s99, v2
+; SI-NEXT:    v_readfirstlane_b32 s6, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_readfirstlane_b32 s9, v0
+; SI-NEXT:    v_readfirstlane_b32 s7, v0
 ; SI-NEXT:    ; implicit-def: $vgpr34 : SGPR spill to VGPR lane
-; SI-NEXT:    s_cbranch_scc0 .LBB61_4
+; SI-NEXT:    s_cbranch_scc0 .LBB61_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_and_b32 s4, s70, 0xffff0000
+; SI-NEXT:    s_and_b32 s4, s68, 0xffff0000
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_writelane_b32 v34, s4, 0
-; SI-NEXT:    s_lshl_b32 s4, s70, 16
+; SI-NEXT:    s_lshl_b32 s4, s68, 16
 ; SI-NEXT:    v_writelane_b32 v34, s4, 1
-; SI-NEXT:    s_and_b32 s4, s71, 0xffff0000
-; SI-NEXT:    v_writelane_b32 v34, s4, 2
-; SI-NEXT:    s_lshl_b32 s4, s71, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 3
-; SI-NEXT:    s_and_b32 s11, s80, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s10, s80, 16
-; SI-NEXT:    s_and_b32 s13, s81, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s12, s81, 16
-; SI-NEXT:    s_and_b32 s15, s82, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s14, s82, 16
-; SI-NEXT:    s_and_b32 s41, s83, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s40, s83, 16
-; SI-NEXT:    s_and_b32 s43, s84, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s42, s84, 16
-; SI-NEXT:    s_and_b32 s45, s85, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s44, s85, 16
-; SI-NEXT:    s_and_b32 s47, s86, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s46, s86, 16
-; SI-NEXT:    s_and_b32 s57, s87, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s56, s87, 16
-; SI-NEXT:    s_and_b32 s59, s96, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s58, s96, 16
-; SI-NEXT:    s_and_b32 s61, s97, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s60, s97, 16
-; SI-NEXT:    s_and_b32 s63, s98, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s62, s98, 16
-; SI-NEXT:    s_and_b32 s73, s99, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s72, s99, 16
-; SI-NEXT:    s_and_b32 s75, s6, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s74, s6, 16
-; SI-NEXT:    s_and_b32 s77, s7, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s76, s7, 16
-; SI-NEXT:    s_and_b32 s79, s8, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s78, s8, 16
-; SI-NEXT:    s_and_b32 s89, s9, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s88, s9, 16
+; SI-NEXT:    s_and_b32 s9, s69, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s8, s69, 16
+; SI-NEXT:    s_and_b32 s11, s70, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s10, s70, 16
+; SI-NEXT:    s_and_b32 s13, s71, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s12, s71, 16
+; SI-NEXT:    s_and_b32 s15, s80, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s14, s80, 16
+; SI-NEXT:    s_and_b32 s41, s81, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s40, s81, 16
+; SI-NEXT:    s_and_b32 s43, s82, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s42, s82, 16
+; SI-NEXT:    s_and_b32 s45, s83, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s44, s83, 16
+; SI-NEXT:    s_and_b32 s47, s84, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s46, s84, 16
+; SI-NEXT:    s_and_b32 s57, s85, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s56, s85, 16
+; SI-NEXT:    s_and_b32 s59, s86, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s58, s86, 16
+; SI-NEXT:    s_and_b32 s61, s87, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s60, s87, 16
+; SI-NEXT:    s_and_b32 s63, s96, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s62, s96, 16
+; SI-NEXT:    s_and_b32 s73, s97, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s72, s97, 16
+; SI-NEXT:    s_and_b32 s75, s98, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s74, s98, 16
+; SI-NEXT:    s_and_b32 s77, s99, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s76, s99, 16
+; SI-NEXT:    s_and_b32 s79, s6, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s78, s6, 16
+; SI-NEXT:    s_and_b32 s89, s7, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s88, s7, 16
 ; SI-NEXT:    s_and_b32 s91, s29, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s90, s29, 16
 ; SI-NEXT:    s_and_b32 s93, s28, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s92, s28, 16
 ; SI-NEXT:    s_and_b32 s95, s27, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s94, s27, 16
-; SI-NEXT:    s_and_b32 s31, s26, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s30, s26, 16
-; SI-NEXT:    s_and_b32 s35, s25, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s34, s25, 16
-; SI-NEXT:    s_and_b32 s37, s24, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s36, s24, 16
-; SI-NEXT:    s_and_b32 s39, s23, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s38, s23, 16
-; SI-NEXT:    s_and_b32 s49, s22, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s48, s22, 16
-; SI-NEXT:    s_and_b32 s51, s21, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s50, s21, 16
-; SI-NEXT:    s_and_b32 s53, s20, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s52, s20, 16
-; SI-NEXT:    s_and_b32 s55, s19, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s54, s19, 16
-; SI-NEXT:    s_and_b32 s65, s18, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s64, s18, 16
-; SI-NEXT:    s_and_b32 s67, s17, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s66, s17, 16
-; SI-NEXT:    s_and_b32 s69, s16, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s68, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB61_3
-; SI-NEXT:  .LBB61_2: ; %cmp.true
-; SI-NEXT:    s_add_u32 s4, s16, 3
-; SI-NEXT:    s_addc_u32 s5, s17, 0
-; SI-NEXT:    s_add_u32 s16, s18, 3
-; SI-NEXT:    s_addc_u32 s17, s19, 0
-; SI-NEXT:    s_add_u32 s18, s20, 3
-; SI-NEXT:    s_addc_u32 s19, s21, 0
-; SI-NEXT:    s_add_u32 s20, s22, 3
-; SI-NEXT:    s_addc_u32 s21, s23, 0
-; SI-NEXT:    s_add_u32 s22, s24, 3
-; SI-NEXT:    s_addc_u32 s23, s25, 0
-; SI-NEXT:    s_add_u32 s24, s26, 3
-; SI-NEXT:    s_addc_u32 s25, s27, 0
-; SI-NEXT:    s_add_u32 s26, s28, 3
-; SI-NEXT:    s_addc_u32 s27, s29, 0
-; SI-NEXT:    s_add_u32 s9, s9, 3
-; SI-NEXT:    s_addc_u32 s8, s8, 0
-; SI-NEXT:    s_add_u32 s7, s7, 3
-; SI-NEXT:    s_addc_u32 s6, s6, 0
-; SI-NEXT:    s_add_u32 s28, s99, 3
-; SI-NEXT:    s_addc_u32 s29, s98, 0
-; SI-NEXT:    s_add_u32 s60, s97, 3
-; SI-NEXT:    s_addc_u32 s58, s96, 0
-; SI-NEXT:    s_add_u32 s56, s87, 3
-; SI-NEXT:    s_addc_u32 s46, s86, 0
-; SI-NEXT:    s_add_u32 s44, s85, 3
-; SI-NEXT:    s_addc_u32 s42, s84, 0
-; SI-NEXT:    s_add_u32 s40, s83, 3
-; SI-NEXT:    s_addc_u32 s14, s82, 0
-; SI-NEXT:    s_add_u32 s12, s81, 3
-; SI-NEXT:    s_addc_u32 s10, s80, 0
-; SI-NEXT:    s_add_u32 s11, s71, 3
-; SI-NEXT:    s_addc_u32 s13, s70, 0
-; SI-NEXT:    s_and_b32 s15, s13, 0xffff0000
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v34, s15, 0
-; SI-NEXT:    s_lshl_b32 s13, s13, 16
-; SI-NEXT:    v_writelane_b32 v34, s13, 1
-; SI-NEXT:    s_and_b32 s13, s11, 0xffff0000
-; SI-NEXT:    v_writelane_b32 v34, s13, 2
-; SI-NEXT:    s_lshl_b32 s11, s11, 16
-; SI-NEXT:    v_writelane_b32 v34, s11, 3
-; SI-NEXT:    s_and_b32 s11, s10, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s10, s10, 16
-; SI-NEXT:    s_and_b32 s13, s12, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s12, s12, 16
-; SI-NEXT:    s_and_b32 s15, s14, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s14, s14, 16
-; SI-NEXT:    s_and_b32 s41, s40, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s40, s40, 16
-; SI-NEXT:    s_and_b32 s43, s42, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s42, s42, 16
-; SI-NEXT:    s_and_b32 s45, s44, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s44, s44, 16
-; SI-NEXT:    s_and_b32 s47, s46, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s46, s46, 16
-; SI-NEXT:    s_and_b32 s57, s56, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s56, s56, 16
-; SI-NEXT:    s_and_b32 s59, s58, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s58, s58, 16
-; SI-NEXT:    s_and_b32 s61, s60, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s60, s60, 16
-; SI-NEXT:    s_and_b32 s63, s29, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s62, s29, 16
-; SI-NEXT:    s_and_b32 s73, s28, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s72, s28, 16
-; SI-NEXT:    s_and_b32 s75, s6, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s74, s6, 16
-; SI-NEXT:    s_and_b32 s77, s7, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s76, s7, 16
-; SI-NEXT:    s_and_b32 s79, s8, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s78, s8, 16
-; SI-NEXT:    s_and_b32 s89, s9, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s88, s9, 16
-; SI-NEXT:    s_and_b32 s91, s27, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s90, s27, 16
-; SI-NEXT:    s_and_b32 s93, s26, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s92, s26, 16
-; SI-NEXT:    s_and_b32 s95, s25, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s94, s25, 16
-; SI-NEXT:    s_and_b32 s31, s24, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s30, s24, 16
-; SI-NEXT:    s_and_b32 s35, s23, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s34, s23, 16
-; SI-NEXT:    s_and_b32 s37, s22, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s36, s22, 16
-; SI-NEXT:    s_and_b32 s39, s21, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s38, s21, 16
-; SI-NEXT:    s_and_b32 s49, s20, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s48, s20, 16
-; SI-NEXT:    s_and_b32 s51, s19, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s50, s19, 16
-; SI-NEXT:    s_and_b32 s53, s18, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s52, s18, 16
-; SI-NEXT:    s_and_b32 s55, s17, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s54, s17, 16
-; SI-NEXT:    s_and_b32 s65, s16, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s64, s16, 16
-; SI-NEXT:    s_and_b32 s67, s5, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s66, s5, 16
-; SI-NEXT:    s_and_b32 s69, s4, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s68, s4, 16
-; SI-NEXT:  .LBB61_3: ; %end
-; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s69
-; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
-; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s68
-; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
-; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s67
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v1
-; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s66
-; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
-; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s65
-; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
-; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s64
-; SI-NEXT:    v_lshr_b64 v[2:3], v[2:3], 16
-; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s55
-; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v3
-; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s54
-; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
-; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s53
-; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v4
-; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s52
-; SI-NEXT:    v_lshr_b64 v[4:5], v[4:5], 16
-; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s51
-; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v5
-; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s50
-; SI-NEXT:    v_lshr_b64 v[5:6], v[5:6], 16
-; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s49
-; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v6
-; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s48
-; SI-NEXT:    v_lshr_b64 v[6:7], v[6:7], 16
-; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s39
-; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v7
-; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s38
-; SI-NEXT:    v_lshr_b64 v[7:8], v[7:8], 16
-; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s37
-; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v8
-; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s36
-; SI-NEXT:    v_lshr_b64 v[8:9], v[8:9], 16
-; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s35
-; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v9
-; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s34
-; SI-NEXT:    v_lshr_b64 v[9:10], v[9:10], 16
-; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s31
-; SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v10
-; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s30
-; SI-NEXT:    v_lshr_b64 v[10:11], v[10:11], 16
-; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s95
-; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v11
-; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s94
-; SI-NEXT:    v_lshr_b64 v[11:12], v[11:12], 16
-; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s93
-; SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v12
-; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s92
-; SI-NEXT:    v_lshr_b64 v[12:13], v[12:13], 16
-; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s91
-; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v13
-; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s90
-; SI-NEXT:    v_lshr_b64 v[13:14], v[13:14], 16
-; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s89
-; SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v14
-; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s88
-; SI-NEXT:    v_lshr_b64 v[14:15], v[14:15], 16
-; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s79
-; SI-NEXT:    v_lshrrev_b32_e32 v16, 16, v15
-; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s78
-; SI-NEXT:    v_lshr_b64 v[15:16], v[15:16], 16
-; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s77
-; SI-NEXT:    v_lshrrev_b32_e32 v17, 16, v16
-; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s76
-; SI-NEXT:    v_lshr_b64 v[16:17], v[16:17], 16
-; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s75
-; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v17
-; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s74
-; SI-NEXT:    v_lshr_b64 v[17:18], v[17:18], 16
-; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s73
-; SI-NEXT:    v_lshrrev_b32_e32 v19, 16, v18
-; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s72
-; SI-NEXT:    v_lshr_b64 v[18:19], v[18:19], 16
-; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s63
-; SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v19
-; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s62
-; SI-NEXT:    v_lshr_b64 v[19:20], v[19:20], 16
-; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s61
-; SI-NEXT:    v_lshrrev_b32_e32 v21, 16, v20
-; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s60
-; SI-NEXT:    v_lshr_b64 v[20:21], v[20:21], 16
-; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s59
-; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v21
-; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s58
-; SI-NEXT:    v_lshr_b64 v[21:22], v[21:22], 16
-; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s57
-; SI-NEXT:    v_lshrrev_b32_e32 v23, 16, v22
-; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s56
-; SI-NEXT:    v_lshr_b64 v[22:23], v[22:23], 16
-; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s47
-; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v23
-; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s46
-; SI-NEXT:    v_lshr_b64 v[23:24], v[23:24], 16
-; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s45
-; SI-NEXT:    v_lshrrev_b32_e32 v25, 16, v24
-; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s44
-; SI-NEXT:    v_lshr_b64 v[24:25], v[24:25], 16
-; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s43
-; SI-NEXT:    v_lshrrev_b32_e32 v26, 16, v25
-; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s42
-; SI-NEXT:    v_lshr_b64 v[25:26], v[25:26], 16
-; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s41
-; SI-NEXT:    v_lshrrev_b32_e32 v27, 16, v26
-; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s40
-; SI-NEXT:    v_lshr_b64 v[26:27], v[26:27], 16
-; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s15
-; SI-NEXT:    v_lshrrev_b32_e32 v28, 16, v27
-; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s14
-; SI-NEXT:    v_lshr_b64 v[27:28], v[27:28], 16
-; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s13
-; SI-NEXT:    v_lshrrev_b32_e32 v29, 16, v28
-; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s12
-; SI-NEXT:    v_lshr_b64 v[28:29], v[28:29], 16
-; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s11
-; SI-NEXT:    v_lshrrev_b32_e32 v30, 16, v29
-; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s10
-; SI-NEXT:    v_lshr_b64 v[29:30], v[29:30], 16
-; SI-NEXT:    v_readlane_b32 s4, v34, 2
-; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s4
-; SI-NEXT:    v_readlane_b32 s4, v34, 3
-; SI-NEXT:    v_lshrrev_b32_e32 v31, 16, v30
-; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s4
-; SI-NEXT:    v_lshr_b64 v[30:31], v[30:31], 16
-; SI-NEXT:    v_readlane_b32 s4, v34, 0
-; SI-NEXT:    v_mul_f32_e64 v31, 1.0, s4
-; SI-NEXT:    v_readlane_b32 s4, v34, 1
-; SI-NEXT:    v_lshrrev_b32_e32 v32, 16, v31
-; SI-NEXT:    v_mul_f32_e64 v31, 1.0, s4
-; SI-NEXT:    v_readlane_b32 s30, v33, 34
-; SI-NEXT:    v_lshr_b64 v[31:32], v[31:32], 16
-; SI-NEXT:    v_readlane_b32 s31, v33, 35
-; SI-NEXT:    v_readlane_b32 s99, v33, 33
-; SI-NEXT:    v_readlane_b32 s98, v33, 32
-; SI-NEXT:    v_readlane_b32 s97, v33, 31
-; SI-NEXT:    v_readlane_b32 s96, v33, 30
-; SI-NEXT:    v_readlane_b32 s87, v33, 29
-; SI-NEXT:    v_readlane_b32 s86, v33, 28
-; SI-NEXT:    v_readlane_b32 s85, v33, 27
-; SI-NEXT:    v_readlane_b32 s84, v33, 26
-; SI-NEXT:    v_readlane_b32 s83, v33, 25
-; SI-NEXT:    v_readlane_b32 s82, v33, 24
-; SI-NEXT:    v_readlane_b32 s81, v33, 23
-; SI-NEXT:    v_readlane_b32 s80, v33, 22
-; SI-NEXT:    v_readlane_b32 s71, v33, 21
-; SI-NEXT:    v_readlane_b32 s70, v33, 20
-; SI-NEXT:    v_readlane_b32 s69, v33, 19
-; SI-NEXT:    v_readlane_b32 s68, v33, 18
-; SI-NEXT:    v_readlane_b32 s67, v33, 17
-; SI-NEXT:    v_readlane_b32 s66, v33, 16
-; SI-NEXT:    v_readlane_b32 s65, v33, 15
-; SI-NEXT:    v_readlane_b32 s64, v33, 14
-; SI-NEXT:    v_readlane_b32 s55, v33, 13
-; SI-NEXT:    v_readlane_b32 s54, v33, 12
-; SI-NEXT:    v_readlane_b32 s53, v33, 11
-; SI-NEXT:    v_readlane_b32 s52, v33, 10
-; SI-NEXT:    v_readlane_b32 s51, v33, 9
-; SI-NEXT:    v_readlane_b32 s50, v33, 8
-; SI-NEXT:    v_readlane_b32 s49, v33, 7
-; SI-NEXT:    v_readlane_b32 s48, v33, 6
-; SI-NEXT:    v_readlane_b32 s39, v33, 5
-; SI-NEXT:    v_readlane_b32 s38, v33, 4
-; SI-NEXT:    v_readlane_b32 s37, v33, 3
-; SI-NEXT:    v_readlane_b32 s36, v33, 2
-; SI-NEXT:    v_readlane_b32 s35, v33, 1
-; SI-NEXT:    v_readlane_b32 s34, v33, 0
-; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
-; SI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    buffer_load_dword v34, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload
-; SI-NEXT:    s_mov_b64 exec, s[4:5]
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB61_4:
+; SI-NEXT:    s_and_b32 vcc_hi, s26, 0xffff0000
+; SI-NEXT:    s_lshl_b32 vcc_lo, s26, 16
+; SI-NEXT:    s_and_b32 s31, s25, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s30, s25, 16
+; SI-NEXT:    s_and_b32 s35, s24, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s34, s24, 16
+; SI-NEXT:    s_and_b32 s37, s23, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s36, s23, 16
+; SI-NEXT:    s_and_b32 s39, s22, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s38, s22, 16
+; SI-NEXT:    s_and_b32 s49, s21, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s48, s21, 16
+; SI-NEXT:    s_and_b32 s51, s20, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s50, s20, 16
+; SI-NEXT:    s_and_b32 s53, s19, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s52, s19, 16
+; SI-NEXT:    s_and_b32 s55, s18, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s54, s18, 16
+; SI-NEXT:    s_and_b32 s65, s17, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s64, s17, 16
+; SI-NEXT:    s_and_b32 s67, s16, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s66, s16, 16
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB61_3
+; SI-NEXT:  .LBB61_2:
 ; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr69
 ; SI-NEXT:    ; implicit-def: $sgpr66
 ; SI-NEXT:    ; implicit-def: $sgpr67
 ; SI-NEXT:    ; implicit-def: $sgpr64
@@ -92618,6 +92935,8 @@ define inreg <64 x bfloat> @bitcast_v16i64_to_v64bf16_scalar(<16 x i64> inreg %a
 ; SI-NEXT:    ; implicit-def: $sgpr35
 ; SI-NEXT:    ; implicit-def: $sgpr30
 ; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $vcc_hi
 ; SI-NEXT:    ; implicit-def: $sgpr94
 ; SI-NEXT:    ; implicit-def: $sgpr95
 ; SI-NEXT:    ; implicit-def: $sgpr92
@@ -92656,13 +92975,290 @@ define inreg <64 x bfloat> @bitcast_v16i64_to_v64bf16_scalar(<16 x i64> inreg %a
 ; SI-NEXT:    ; implicit-def: $sgpr13
 ; SI-NEXT:    ; implicit-def: $sgpr10
 ; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
 ; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    s_branch .LBB61_2
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB61_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB61_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    s_add_u32 s4, s16, 3
+; SI-NEXT:    s_addc_u32 s5, s17, 0
+; SI-NEXT:    s_add_u32 s16, s18, 3
+; SI-NEXT:    s_addc_u32 s17, s19, 0
+; SI-NEXT:    s_add_u32 s18, s20, 3
+; SI-NEXT:    s_addc_u32 s19, s21, 0
+; SI-NEXT:    s_add_u32 s20, s22, 3
+; SI-NEXT:    s_addc_u32 s21, s23, 0
+; SI-NEXT:    s_add_u32 s22, s24, 3
+; SI-NEXT:    s_addc_u32 s23, s25, 0
+; SI-NEXT:    s_add_u32 s24, s26, 3
+; SI-NEXT:    s_addc_u32 s25, s27, 0
+; SI-NEXT:    s_add_u32 s26, s28, 3
+; SI-NEXT:    s_addc_u32 s27, s29, 0
+; SI-NEXT:    s_add_u32 s7, s7, 3
+; SI-NEXT:    s_addc_u32 s6, s6, 0
+; SI-NEXT:    s_add_u32 s28, s99, 3
+; SI-NEXT:    s_addc_u32 s29, s98, 0
+; SI-NEXT:    s_add_u32 s72, s97, 3
+; SI-NEXT:    s_addc_u32 s62, s96, 0
+; SI-NEXT:    s_add_u32 s60, s87, 3
+; SI-NEXT:    s_addc_u32 s58, s86, 0
+; SI-NEXT:    s_add_u32 s56, s85, 3
+; SI-NEXT:    s_addc_u32 s46, s84, 0
+; SI-NEXT:    s_add_u32 s44, s83, 3
+; SI-NEXT:    s_addc_u32 s42, s82, 0
+; SI-NEXT:    s_add_u32 s40, s81, 3
+; SI-NEXT:    s_addc_u32 s14, s80, 0
+; SI-NEXT:    s_add_u32 s12, s71, 3
+; SI-NEXT:    s_addc_u32 s10, s70, 0
+; SI-NEXT:    s_add_u32 s8, s69, 3
+; SI-NEXT:    s_addc_u32 s9, s68, 0
+; SI-NEXT:    s_and_b32 s11, s9, 0xffff0000
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v34, s11, 0
+; SI-NEXT:    s_lshl_b32 s9, s9, 16
+; SI-NEXT:    v_writelane_b32 v34, s9, 1
+; SI-NEXT:    s_and_b32 s9, s8, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s8, s8, 16
+; SI-NEXT:    s_and_b32 s11, s10, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s10, s10, 16
+; SI-NEXT:    s_and_b32 s13, s12, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s12, s12, 16
+; SI-NEXT:    s_and_b32 s15, s14, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s14, s14, 16
+; SI-NEXT:    s_and_b32 s41, s40, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s40, s40, 16
+; SI-NEXT:    s_and_b32 s43, s42, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s42, s42, 16
+; SI-NEXT:    s_and_b32 s45, s44, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s44, s44, 16
+; SI-NEXT:    s_and_b32 s47, s46, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s46, s46, 16
+; SI-NEXT:    s_and_b32 s57, s56, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s56, s56, 16
+; SI-NEXT:    s_and_b32 s59, s58, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s58, s58, 16
+; SI-NEXT:    s_and_b32 s61, s60, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s60, s60, 16
+; SI-NEXT:    s_and_b32 s63, s62, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s62, s62, 16
+; SI-NEXT:    s_and_b32 s73, s72, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s72, s72, 16
+; SI-NEXT:    s_and_b32 s75, s29, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s74, s29, 16
+; SI-NEXT:    s_and_b32 s77, s28, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s76, s28, 16
+; SI-NEXT:    s_and_b32 s79, s6, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s78, s6, 16
+; SI-NEXT:    s_and_b32 s89, s7, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s88, s7, 16
+; SI-NEXT:    s_and_b32 s91, s27, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s90, s27, 16
+; SI-NEXT:    s_and_b32 s93, s26, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s92, s26, 16
+; SI-NEXT:    s_and_b32 s95, s25, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s94, s25, 16
+; SI-NEXT:    s_and_b32 vcc_hi, s24, 0xffff0000
+; SI-NEXT:    s_lshl_b32 vcc_lo, s24, 16
+; SI-NEXT:    s_and_b32 s31, s23, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s30, s23, 16
+; SI-NEXT:    s_and_b32 s35, s22, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s34, s22, 16
+; SI-NEXT:    s_and_b32 s37, s21, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s36, s21, 16
+; SI-NEXT:    s_and_b32 s39, s20, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s38, s20, 16
+; SI-NEXT:    s_and_b32 s49, s19, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s48, s19, 16
+; SI-NEXT:    s_and_b32 s51, s18, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s50, s18, 16
+; SI-NEXT:    s_and_b32 s53, s17, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s52, s17, 16
+; SI-NEXT:    s_and_b32 s55, s16, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s54, s16, 16
+; SI-NEXT:    s_and_b32 s65, s5, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s64, s5, 16
+; SI-NEXT:    s_and_b32 s67, s4, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s66, s4, 16
+; SI-NEXT:  .LBB61_5: ; %end
+; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s67
+; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
+; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s66
+; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
+; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s65
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v1
+; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s64
+; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
+; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s55
+; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
+; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s54
+; SI-NEXT:    v_lshr_b64 v[2:3], v[2:3], 16
+; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s53
+; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v3
+; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s52
+; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
+; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s51
+; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v4
+; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s50
+; SI-NEXT:    v_lshr_b64 v[4:5], v[4:5], 16
+; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s49
+; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v5
+; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s48
+; SI-NEXT:    v_lshr_b64 v[5:6], v[5:6], 16
+; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s39
+; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v6
+; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s38
+; SI-NEXT:    v_lshr_b64 v[6:7], v[6:7], 16
+; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s37
+; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v7
+; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s36
+; SI-NEXT:    v_lshr_b64 v[7:8], v[7:8], 16
+; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s35
+; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v8
+; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s34
+; SI-NEXT:    v_lshr_b64 v[8:9], v[8:9], 16
+; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s31
+; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v9
+; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s30
+; SI-NEXT:    v_lshr_b64 v[9:10], v[9:10], 16
+; SI-NEXT:    v_mul_f32_e64 v10, 1.0, vcc_hi
+; SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v10
+; SI-NEXT:    v_mul_f32_e64 v10, 1.0, vcc_lo
+; SI-NEXT:    v_lshr_b64 v[10:11], v[10:11], 16
+; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s95
+; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v11
+; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s94
+; SI-NEXT:    v_lshr_b64 v[11:12], v[11:12], 16
+; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s93
+; SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v12
+; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s92
+; SI-NEXT:    v_lshr_b64 v[12:13], v[12:13], 16
+; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s91
+; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v13
+; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s90
+; SI-NEXT:    v_lshr_b64 v[13:14], v[13:14], 16
+; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s89
+; SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v14
+; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s88
+; SI-NEXT:    v_lshr_b64 v[14:15], v[14:15], 16
+; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s79
+; SI-NEXT:    v_lshrrev_b32_e32 v16, 16, v15
+; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s78
+; SI-NEXT:    v_lshr_b64 v[15:16], v[15:16], 16
+; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s77
+; SI-NEXT:    v_lshrrev_b32_e32 v17, 16, v16
+; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s76
+; SI-NEXT:    v_lshr_b64 v[16:17], v[16:17], 16
+; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s75
+; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v17
+; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s74
+; SI-NEXT:    v_lshr_b64 v[17:18], v[17:18], 16
+; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s73
+; SI-NEXT:    v_lshrrev_b32_e32 v19, 16, v18
+; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s72
+; SI-NEXT:    v_lshr_b64 v[18:19], v[18:19], 16
+; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s63
+; SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v19
+; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s62
+; SI-NEXT:    v_lshr_b64 v[19:20], v[19:20], 16
+; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s61
+; SI-NEXT:    v_lshrrev_b32_e32 v21, 16, v20
+; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s60
+; SI-NEXT:    v_lshr_b64 v[20:21], v[20:21], 16
+; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s59
+; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v21
+; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s58
+; SI-NEXT:    v_lshr_b64 v[21:22], v[21:22], 16
+; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s57
+; SI-NEXT:    v_lshrrev_b32_e32 v23, 16, v22
+; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s56
+; SI-NEXT:    v_lshr_b64 v[22:23], v[22:23], 16
+; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s47
+; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v23
+; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s46
+; SI-NEXT:    v_lshr_b64 v[23:24], v[23:24], 16
+; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s45
+; SI-NEXT:    v_lshrrev_b32_e32 v25, 16, v24
+; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s44
+; SI-NEXT:    v_lshr_b64 v[24:25], v[24:25], 16
+; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s43
+; SI-NEXT:    v_lshrrev_b32_e32 v26, 16, v25
+; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s42
+; SI-NEXT:    v_lshr_b64 v[25:26], v[25:26], 16
+; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s41
+; SI-NEXT:    v_lshrrev_b32_e32 v27, 16, v26
+; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s40
+; SI-NEXT:    v_lshr_b64 v[26:27], v[26:27], 16
+; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s15
+; SI-NEXT:    v_lshrrev_b32_e32 v28, 16, v27
+; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s14
+; SI-NEXT:    v_lshr_b64 v[27:28], v[27:28], 16
+; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s13
+; SI-NEXT:    v_lshrrev_b32_e32 v29, 16, v28
+; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s12
+; SI-NEXT:    v_lshr_b64 v[28:29], v[28:29], 16
+; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s11
+; SI-NEXT:    v_lshrrev_b32_e32 v30, 16, v29
+; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s10
+; SI-NEXT:    v_lshr_b64 v[29:30], v[29:30], 16
+; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s9
+; SI-NEXT:    v_lshrrev_b32_e32 v31, 16, v30
+; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s8
+; SI-NEXT:    v_lshr_b64 v[30:31], v[30:31], 16
+; SI-NEXT:    v_readlane_b32 s4, v34, 0
+; SI-NEXT:    v_mul_f32_e64 v31, 1.0, s4
+; SI-NEXT:    v_readlane_b32 s4, v34, 1
+; SI-NEXT:    v_lshrrev_b32_e32 v32, 16, v31
+; SI-NEXT:    v_mul_f32_e64 v31, 1.0, s4
+; SI-NEXT:    v_readlane_b32 s30, v33, 34
+; SI-NEXT:    v_lshr_b64 v[31:32], v[31:32], 16
+; SI-NEXT:    v_readlane_b32 s31, v33, 35
+; SI-NEXT:    v_readlane_b32 s99, v33, 33
+; SI-NEXT:    v_readlane_b32 s98, v33, 32
+; SI-NEXT:    v_readlane_b32 s97, v33, 31
+; SI-NEXT:    v_readlane_b32 s96, v33, 30
+; SI-NEXT:    v_readlane_b32 s87, v33, 29
+; SI-NEXT:    v_readlane_b32 s86, v33, 28
+; SI-NEXT:    v_readlane_b32 s85, v33, 27
+; SI-NEXT:    v_readlane_b32 s84, v33, 26
+; SI-NEXT:    v_readlane_b32 s83, v33, 25
+; SI-NEXT:    v_readlane_b32 s82, v33, 24
+; SI-NEXT:    v_readlane_b32 s81, v33, 23
+; SI-NEXT:    v_readlane_b32 s80, v33, 22
+; SI-NEXT:    v_readlane_b32 s71, v33, 21
+; SI-NEXT:    v_readlane_b32 s70, v33, 20
+; SI-NEXT:    v_readlane_b32 s69, v33, 19
+; SI-NEXT:    v_readlane_b32 s68, v33, 18
+; SI-NEXT:    v_readlane_b32 s67, v33, 17
+; SI-NEXT:    v_readlane_b32 s66, v33, 16
+; SI-NEXT:    v_readlane_b32 s65, v33, 15
+; SI-NEXT:    v_readlane_b32 s64, v33, 14
+; SI-NEXT:    v_readlane_b32 s55, v33, 13
+; SI-NEXT:    v_readlane_b32 s54, v33, 12
+; SI-NEXT:    v_readlane_b32 s53, v33, 11
+; SI-NEXT:    v_readlane_b32 s52, v33, 10
+; SI-NEXT:    v_readlane_b32 s51, v33, 9
+; SI-NEXT:    v_readlane_b32 s50, v33, 8
+; SI-NEXT:    v_readlane_b32 s49, v33, 7
+; SI-NEXT:    v_readlane_b32 s48, v33, 6
+; SI-NEXT:    v_readlane_b32 s39, v33, 5
+; SI-NEXT:    v_readlane_b32 s38, v33, 4
+; SI-NEXT:    v_readlane_b32 s37, v33, 3
+; SI-NEXT:    v_readlane_b32 s36, v33, 2
+; SI-NEXT:    v_readlane_b32 s35, v33, 1
+; SI-NEXT:    v_readlane_b32 s34, v33, 0
+; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
+; SI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    buffer_load_dword v34, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload
+; SI-NEXT:    s_mov_b64 exec, s[4:5]
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; VI-LABEL: bitcast_v16i64_to_v64bf16_scalar:
 ; VI:       ; %bb.0:
@@ -92687,10 +93283,18 @@ define inreg <64 x bfloat> @bitcast_v16i64_to_v64bf16_scalar(<16 x i64> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB61_4
+; VI-NEXT:    s_cbranch_scc0 .LBB61_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB61_3
-; VI-NEXT:  .LBB61_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB61_3
+; VI-NEXT:  .LBB61_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB61_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB61_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s47, s47, 3
 ; VI-NEXT:    s_addc_u32 s46, s46, 0
 ; VI-NEXT:    s_add_u32 s28, s28, 3
@@ -92723,7 +93327,7 @@ define inreg <64 x bfloat> @bitcast_v16i64_to_v64bf16_scalar(<16 x i64> inreg %a
 ; VI-NEXT:    s_addc_u32 s42, s42, 0
 ; VI-NEXT:    s_add_u32 s45, s45, 3
 ; VI-NEXT:    s_addc_u32 s44, s44, 0
-; VI-NEXT:  .LBB61_3: ; %end
+; VI-NEXT:  .LBB61_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -92757,8 +93361,6 @@ define inreg <64 x bfloat> @bitcast_v16i64_to_v64bf16_scalar(<16 x i64> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB61_4:
-; VI-NEXT:    s_branch .LBB61_2
 ;
 ; GFX9-LABEL: bitcast_v16i64_to_v64bf16_scalar:
 ; GFX9:       ; %bb.0:
@@ -92783,10 +93385,18 @@ define inreg <64 x bfloat> @bitcast_v16i64_to_v64bf16_scalar(<16 x i64> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB61_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB61_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB61_3
-; GFX9-NEXT:  .LBB61_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB61_3
+; GFX9-NEXT:  .LBB61_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB61_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB61_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s47, s47, 3
 ; GFX9-NEXT:    s_addc_u32 s46, s46, 0
 ; GFX9-NEXT:    s_add_u32 s28, s28, 3
@@ -92819,7 +93429,7 @@ define inreg <64 x bfloat> @bitcast_v16i64_to_v64bf16_scalar(<16 x i64> inreg %a
 ; GFX9-NEXT:    s_addc_u32 s42, s42, 0
 ; GFX9-NEXT:    s_add_u32 s45, s45, 3
 ; GFX9-NEXT:    s_addc_u32 s44, s44, 0
-; GFX9-NEXT:  .LBB61_3: ; %end
+; GFX9-NEXT:  .LBB61_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -92853,8 +93463,6 @@ define inreg <64 x bfloat> @bitcast_v16i64_to_v64bf16_scalar(<16 x i64> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB61_4:
-; GFX9-NEXT:    s_branch .LBB61_2
 ;
 ; GFX11-LABEL: bitcast_v16i64_to_v64bf16_scalar:
 ; GFX11:       ; %bb.0:
@@ -92876,11 +93484,16 @@ define inreg <64 x bfloat> @bitcast_v16i64_to_v64bf16_scalar(<16 x i64> inreg %a
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB61_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB61_3
-; GFX11-NEXT:  .LBB61_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB61_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:  .LBB61_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB61_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s26, s26, 3
 ; GFX11-NEXT:    s_addc_u32 s27, s27, 0
 ; GFX11-NEXT:    s_add_u32 s24, s24, 3
@@ -92913,7 +93526,7 @@ define inreg <64 x bfloat> @bitcast_v16i64_to_v64bf16_scalar(<16 x i64> inreg %a
 ; GFX11-NEXT:    s_addc_u32 s40, s40, 0
 ; GFX11-NEXT:    s_add_u32 s28, s28, 3
 ; GFX11-NEXT:    s_addc_u32 s29, s29, 0
-; GFX11-NEXT:  .LBB61_3: ; %end
+; GFX11-NEXT:  .LBB61_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -92931,8 +93544,6 @@ define inreg <64 x bfloat> @bitcast_v16i64_to_v64bf16_scalar(<16 x i64> inreg %a
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s7 :: v_dual_mov_b32 v29, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v30, s5 :: v_dual_mov_b32 v31, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB61_4:
-; GFX11-NEXT:    s_branch .LBB61_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -96449,7 +97060,9 @@ define inreg <16 x i64> @bitcast_v64bf16_to_v16i64_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:144 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:148 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v57, off, s[0:3], s32 offset:152 ; 4-byte Folded Reload
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_mov_b32_e32 v33, v56
 ; SI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:156 ; 4-byte Folded Reload
@@ -96466,7 +97079,7 @@ define inreg <16 x i64> @bitcast_v64bf16_to_v16i64_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v40, v56
 ; SI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:180 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v57, off, s[0:3], s32 offset:184 ; 4-byte Folded Reload
-; SI-NEXT:    s_cbranch_vccnz .LBB63_5
+; SI-NEXT:    s_cbranch_scc1 .LBB63_5
 ; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:328 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:332 ; 4-byte Folded Reload
@@ -96836,10 +97449,18 @@ define inreg <16 x i64> @bitcast_v64bf16_to_v16i64_scalar(<64 x bfloat> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB63_3
+; VI-NEXT:    s_cbranch_scc0 .LBB63_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB63_4
-; VI-NEXT:  .LBB63_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB63_3
+; VI-NEXT:  .LBB63_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB63_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB63_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v32, 0x40c00000
 ; VI-NEXT:    s_lshl_b32 s4, s50, 16
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v32
@@ -97432,10 +98053,8 @@ define inreg <16 x i64> @bitcast_v64bf16_to_v16i64_scalar(<64 x bfloat> inreg %a
 ; VI-NEXT:    v_cndmask_b32_e32 v31, v32, v34, vcc
 ; VI-NEXT:    v_lshrrev_b32_e32 v32, 16, v33
 ; VI-NEXT:    v_lshrrev_b64 v[31:32], 16, v[31:32]
-; VI-NEXT:    s_branch .LBB63_5
-; VI-NEXT:  .LBB63_3:
-; VI-NEXT:    s_branch .LBB63_2
-; VI-NEXT:  .LBB63_4:
+; VI-NEXT:    s_branch .LBB63_6
+; VI-NEXT:  .LBB63_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -97468,7 +98087,7 @@ define inreg <16 x i64> @bitcast_v64bf16_to_v16i64_scalar(<64 x bfloat> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB63_5: ; %end
+; VI-NEXT:  .LBB63_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v35, 15
 ; VI-NEXT:    v_readlane_b32 s66, v35, 14
 ; VI-NEXT:    v_readlane_b32 s65, v35, 13
@@ -97547,10 +98166,18 @@ define inreg <16 x i64> @bitcast_v64bf16_to_v16i64_scalar(<64 x bfloat> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB63_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB63_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB63_4
-; GFX9-NEXT:  .LBB63_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB63_3
+; GFX9-NEXT:  .LBB63_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB63_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB63_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s51, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v16, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v16
@@ -98161,10 +98788,8 @@ define inreg <16 x i64> @bitcast_v64bf16_to_v16i64_scalar(<64 x bfloat> inreg %a
 ; GFX9-NEXT:    v_and_b32_sdwa v16, v32, v16 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v32, 16, v33
 ; GFX9-NEXT:    v_lshl_or_b32 v16, v32, 16, v16
-; GFX9-NEXT:    s_branch .LBB63_5
-; GFX9-NEXT:  .LBB63_3:
-; GFX9-NEXT:    s_branch .LBB63_2
-; GFX9-NEXT:  .LBB63_4:
+; GFX9-NEXT:    s_branch .LBB63_6
+; GFX9-NEXT:  .LBB63_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -98197,7 +98822,7 @@ define inreg <16 x i64> @bitcast_v64bf16_to_v16i64_scalar(<64 x bfloat> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB63_5: ; %end
+; GFX9-NEXT:  .LBB63_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v36, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v36, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v36, 13
@@ -98277,11 +98902,16 @@ define inreg <16 x i64> @bitcast_v64bf16_to_v16i64_scalar(<64 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s37, s1
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB63_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB63_4
-; GFX11-TRUE16-NEXT:  .LBB63_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB63_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:  .LBB63_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB63_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s0, s51, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s51, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -98904,8 +99534,6 @@ define inreg <16 x i64> @bitcast_v64bf16_to_v16i64_scalar(<64 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v16, 16, v34
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v16.h, v33.l
 ; GFX11-TRUE16-NEXT:    s_branch .LBB63_5
-; GFX11-TRUE16-NEXT:  .LBB63_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB63_2
 ; GFX11-TRUE16-NEXT:  .LBB63_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -99003,11 +99631,16 @@ define inreg <16 x i64> @bitcast_v64bf16_to_v16i64_scalar(<64 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s37, s1
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB63_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB63_4
-; GFX11-FAKE16-NEXT:  .LBB63_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB63_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:  .LBB63_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB63_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_and_b32 s1, s51, 0xffff0000
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s51, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s1
@@ -99661,8 +100294,6 @@ define inreg <16 x i64> @bitcast_v64bf16_to_v16i64_scalar(<64 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v18, v32, 16, v37
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v16, v36, 16, v33
 ; GFX11-FAKE16-NEXT:    s_branch .LBB63_5
-; GFX11-FAKE16-NEXT:  .LBB63_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB63_2
 ; GFX11-FAKE16-NEXT:  .LBB63_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -100240,7 +100871,7 @@ define inreg <64 x half> @bitcast_v16i64_to_v64f16_scalar(<16 x i64> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s45, v1
 ; SI-NEXT:    s_cmp_lg_u32 s44, 0
 ; SI-NEXT:    v_readfirstlane_b32 s44, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB65_4
+; SI-NEXT:    s_cbranch_scc0 .LBB65_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s38, s5, 16
 ; SI-NEXT:    s_lshr_b32 s39, s7, 16
@@ -100271,11 +100902,51 @@ define inreg <64 x half> @bitcast_v16i64_to_v64f16_scalar(<16 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[22:23], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[20:21], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB65_3
-; SI-NEXT:  .LBB65_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 vcc, s[20:21], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[18:19], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
+; SI-NEXT:    s_mov_b64 s[36:37], 0
+; SI-NEXT:    s_branch .LBB65_3
+; SI-NEXT:  .LBB65_2:
+; SI-NEXT:    s_mov_b64 s[36:37], -1
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr65
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:  .LBB65_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; SI-NEXT:    s_cselect_b32 s47, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s47, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB65_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -100337,23 +101008,23 @@ define inreg <64 x half> @bitcast_v16i64_to_v64f16_scalar(<16 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[22:23], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[20:21], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 16
-; SI-NEXT:  .LBB65_3: ; %end
-; SI-NEXT:    s_lshl_b32 s47, s36, 16
+; SI-NEXT:    s_lshr_b64 vcc, s[20:21], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[18:19], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
+; SI-NEXT:  .LBB65_5: ; %end
+; SI-NEXT:    s_lshl_b32 s47, s34, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s47
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s47, s69, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s47
-; SI-NEXT:    s_lshl_b32 s47, s34, 16
+; SI-NEXT:    s_lshl_b32 s47, s30, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s18, s18, s47
 ; SI-NEXT:    s_and_b32 s19, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s47, s68, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s47
-; SI-NEXT:    s_lshl_b32 s47, s30, 16
+; SI-NEXT:    s_lshl_b32 s47, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s20, s20, s47
 ; SI-NEXT:    s_and_b32 s21, s21, 0xffff
@@ -100496,40 +101167,6 @@ define inreg <64 x half> @bitcast_v16i64_to_v64f16_scalar(<16 x i64> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB65_4:
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr69
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr67
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    s_branch .LBB65_2
 ;
 ; VI-LABEL: bitcast_v16i64_to_v64f16_scalar:
 ; VI:       ; %bb.0:
@@ -100554,10 +101191,18 @@ define inreg <64 x half> @bitcast_v16i64_to_v64f16_scalar(<16 x i64> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB65_4
+; VI-NEXT:    s_cbranch_scc0 .LBB65_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB65_3
-; VI-NEXT:  .LBB65_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB65_3
+; VI-NEXT:  .LBB65_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB65_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB65_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s47, s47, 3
 ; VI-NEXT:    s_addc_u32 s46, s46, 0
 ; VI-NEXT:    s_add_u32 s28, s28, 3
@@ -100590,7 +101235,7 @@ define inreg <64 x half> @bitcast_v16i64_to_v64f16_scalar(<16 x i64> inreg %a, i
 ; VI-NEXT:    s_addc_u32 s42, s42, 0
 ; VI-NEXT:    s_add_u32 s45, s45, 3
 ; VI-NEXT:    s_addc_u32 s44, s44, 0
-; VI-NEXT:  .LBB65_3: ; %end
+; VI-NEXT:  .LBB65_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -100624,8 +101269,6 @@ define inreg <64 x half> @bitcast_v16i64_to_v64f16_scalar(<16 x i64> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB65_4:
-; VI-NEXT:    s_branch .LBB65_2
 ;
 ; GFX9-LABEL: bitcast_v16i64_to_v64f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -100650,10 +101293,18 @@ define inreg <64 x half> @bitcast_v16i64_to_v64f16_scalar(<16 x i64> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB65_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB65_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB65_3
-; GFX9-NEXT:  .LBB65_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB65_3
+; GFX9-NEXT:  .LBB65_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB65_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB65_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s47, s47, 3
 ; GFX9-NEXT:    s_addc_u32 s46, s46, 0
 ; GFX9-NEXT:    s_add_u32 s28, s28, 3
@@ -100686,7 +101337,7 @@ define inreg <64 x half> @bitcast_v16i64_to_v64f16_scalar(<16 x i64> inreg %a, i
 ; GFX9-NEXT:    s_addc_u32 s42, s42, 0
 ; GFX9-NEXT:    s_add_u32 s45, s45, 3
 ; GFX9-NEXT:    s_addc_u32 s44, s44, 0
-; GFX9-NEXT:  .LBB65_3: ; %end
+; GFX9-NEXT:  .LBB65_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -100720,8 +101371,6 @@ define inreg <64 x half> @bitcast_v16i64_to_v64f16_scalar(<16 x i64> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB65_4:
-; GFX9-NEXT:    s_branch .LBB65_2
 ;
 ; GFX11-LABEL: bitcast_v16i64_to_v64f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -100743,11 +101392,16 @@ define inreg <64 x half> @bitcast_v16i64_to_v64f16_scalar(<16 x i64> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB65_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB65_3
-; GFX11-NEXT:  .LBB65_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB65_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:  .LBB65_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB65_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s26, s26, 3
 ; GFX11-NEXT:    s_addc_u32 s27, s27, 0
 ; GFX11-NEXT:    s_add_u32 s24, s24, 3
@@ -100780,7 +101434,7 @@ define inreg <64 x half> @bitcast_v16i64_to_v64f16_scalar(<16 x i64> inreg %a, i
 ; GFX11-NEXT:    s_addc_u32 s40, s40, 0
 ; GFX11-NEXT:    s_add_u32 s28, s28, 3
 ; GFX11-NEXT:    s_addc_u32 s29, s29, 0
-; GFX11-NEXT:  .LBB65_3: ; %end
+; GFX11-NEXT:  .LBB65_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -100798,8 +101452,6 @@ define inreg <64 x half> @bitcast_v16i64_to_v64f16_scalar(<16 x i64> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s7 :: v_dual_mov_b32 v29, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v30, s5 :: v_dual_mov_b32 v31, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB65_4:
-; GFX11-NEXT:    s_branch .LBB65_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -101822,10 +102474,7 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v34, s30, 34
 ; SI-NEXT:    v_writelane_b32 v34, s31, 35
 ; SI-NEXT:    v_readfirstlane_b32 s6, v17
-; SI-NEXT:    s_lshr_b32 vcc_lo, s6, 16
 ; SI-NEXT:    v_readfirstlane_b32 s8, v16
-; SI-NEXT:    ; implicit-def: $vgpr35 : SGPR spill to VGPR lane
-; SI-NEXT:    s_lshr_b32 vcc_hi, s8, 16
 ; SI-NEXT:    v_readfirstlane_b32 s10, v15
 ; SI-NEXT:    v_readfirstlane_b32 s12, v14
 ; SI-NEXT:    v_readfirstlane_b32 s14, v13
@@ -101837,29 +102486,29 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s90, v7
 ; SI-NEXT:    v_readfirstlane_b32 s92, v6
 ; SI-NEXT:    v_readfirstlane_b32 s94, v5
-; SI-NEXT:    v_readfirstlane_b32 s30, v4
-; SI-NEXT:    v_readfirstlane_b32 s34, v3
-; SI-NEXT:    v_readfirstlane_b32 s68, v2
-; SI-NEXT:    v_readfirstlane_b32 s80, v1
-; SI-NEXT:    v_readfirstlane_b32 s83, v0
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v35, vcc_lo, 0
-; SI-NEXT:    s_lshr_b32 s69, s29, 16
-; SI-NEXT:    s_lshr_b32 s71, s28, 16
-; SI-NEXT:    s_lshr_b32 s82, s27, 16
-; SI-NEXT:    s_lshr_b32 s85, s26, 16
-; SI-NEXT:    s_lshr_b32 s86, s25, 16
-; SI-NEXT:    s_lshr_b32 s87, s24, 16
-; SI-NEXT:    s_lshr_b32 s96, s23, 16
-; SI-NEXT:    s_lshr_b32 s97, s22, 16
-; SI-NEXT:    s_lshr_b32 s98, s21, 16
-; SI-NEXT:    s_lshr_b32 s99, s20, 16
-; SI-NEXT:    s_lshr_b32 s7, s19, 16
-; SI-NEXT:    s_lshr_b32 s9, s18, 16
-; SI-NEXT:    s_lshr_b32 s11, s17, 16
-; SI-NEXT:    s_lshr_b32 s13, s16, 16
-; SI-NEXT:    s_lshr_b32 s65, s10, 16
-; SI-NEXT:    s_lshr_b32 s64, s12, 16
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v4
+; SI-NEXT:    v_readfirstlane_b32 s30, v3
+; SI-NEXT:    v_readfirstlane_b32 s34, v2
+; SI-NEXT:    v_readfirstlane_b32 s70, v1
+; SI-NEXT:    v_readfirstlane_b32 s81, v0
+; SI-NEXT:    s_lshr_b32 s35, s29, 16
+; SI-NEXT:    s_lshr_b32 s69, s28, 16
+; SI-NEXT:    s_lshr_b32 s80, s27, 16
+; SI-NEXT:    s_lshr_b32 s83, s26, 16
+; SI-NEXT:    s_lshr_b32 s84, s25, 16
+; SI-NEXT:    s_lshr_b32 s85, s24, 16
+; SI-NEXT:    s_lshr_b32 s86, s23, 16
+; SI-NEXT:    s_lshr_b32 s87, s22, 16
+; SI-NEXT:    s_lshr_b32 s96, s21, 16
+; SI-NEXT:    s_lshr_b32 s97, s20, 16
+; SI-NEXT:    s_lshr_b32 s98, s19, 16
+; SI-NEXT:    s_lshr_b32 s99, s18, 16
+; SI-NEXT:    s_lshr_b32 s7, s17, 16
+; SI-NEXT:    s_lshr_b32 s9, s16, 16
+; SI-NEXT:    s_lshr_b32 s67, s6, 16
+; SI-NEXT:    s_lshr_b32 s66, s8, 16
+; SI-NEXT:    s_lshr_b32 s11, s10, 16
+; SI-NEXT:    s_lshr_b32 s13, s12, 16
 ; SI-NEXT:    s_lshr_b32 s15, s14, 16
 ; SI-NEXT:    s_lshr_b32 s73, s72, 16
 ; SI-NEXT:    s_lshr_b32 s75, s74, 16
@@ -101869,74 +102518,75 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s91, s90, 16
 ; SI-NEXT:    s_lshr_b32 s93, s92, 16
 ; SI-NEXT:    s_lshr_b32 s95, s94, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, vcc_lo, 16
 ; SI-NEXT:    s_lshr_b32 s31, s30, 16
-; SI-NEXT:    s_lshr_b32 s35, s34, 16
-; SI-NEXT:    s_lshr_b32 s70, s68, 16
-; SI-NEXT:    s_lshr_b32 s81, s80, 16
-; SI-NEXT:    s_lshr_b32 s84, s83, 16
+; SI-NEXT:    s_lshr_b32 s68, s34, 16
+; SI-NEXT:    s_lshr_b32 s71, s70, 16
+; SI-NEXT:    s_lshr_b32 s82, s81, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v35, vcc_hi, 1
+; SI-NEXT:    ; implicit-def: $vgpr35 : SGPR spill to VGPR lane
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_writelane_b32 v35, s65, 2
-; SI-NEXT:    v_writelane_b32 v35, s64, 3
-; SI-NEXT:    s_cbranch_scc0 .LBB67_3
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v35, s67, 0
+; SI-NEXT:    v_writelane_b32 v35, s66, 1
+; SI-NEXT:    s_cbranch_scc0 .LBB67_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s13, 16
+; SI-NEXT:    s_lshl_b32 s5, s9, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s9, 16
+; SI-NEXT:    s_lshl_b32 s5, s99, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s7, 16
+; SI-NEXT:    s_lshl_b32 s5, s98, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s11, 16
+; SI-NEXT:    s_lshl_b32 s41, s7, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s48, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_and_b32 s4, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
-; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s34, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
-; SI-NEXT:    s_or_b32 s53, s4, s5
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s30, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_or_b32 s53, s4, s5
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s54, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -101966,22 +102616,31 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s12, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s64, 16
+; SI-NEXT:    s_lshl_b32 s5, s13, 16
 ; SI-NEXT:    s_or_b32 s64, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s10, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s65, 16
+; SI-NEXT:    s_lshl_b32 s5, s11, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s8, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
+; SI-NEXT:    s_lshl_b32 s5, s66, 16
 ; SI-NEXT:    s_or_b32 s66, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
+; SI-NEXT:    s_lshl_b32 s5, s67, 16
 ; SI-NEXT:    s_or_b32 s67, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB67_4
-; SI-NEXT:  .LBB67_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s13
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB67_3
+; SI-NEXT:  .LBB67_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB67_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB67_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s9
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s11
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s7
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -101993,7 +102652,7 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s18
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s9
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s99
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -102001,11 +102660,11 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s7
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, s98
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v4, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s19
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s99
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s97
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -102016,7 +102675,7 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s20
 ; SI-NEXT:    v_or_b32_e32 v3, v4, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s98
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s96
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
@@ -102025,11 +102684,11 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s97
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s87
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s22
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s96
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s86
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
@@ -102040,7 +102699,7 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s23
 ; SI-NEXT:    v_or_b32_e32 v6, v7, v6
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s87
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s85
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s24
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
@@ -102049,11 +102708,11 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s86
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s84
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_or_b32_e32 v8, v10, v8
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s25
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s85
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, s83
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
@@ -102064,7 +102723,7 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s26
 ; SI-NEXT:    v_or_b32_e32 v9, v10, v9
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v11
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, s80
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s27
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
@@ -102073,11 +102732,11 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
 ; SI-NEXT:    v_cvt_f16_f32_e32 v13, v13
 ; SI-NEXT:    v_or_b32_e32 v10, v12, v10
-; SI-NEXT:    v_cvt_f32_f16_e32 v12, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v12, s69
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
 ; SI-NEXT:    v_or_b32_e32 v11, v13, v11
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s28
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s35
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
@@ -102088,8 +102747,8 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v15, s29
 ; SI-NEXT:    v_or_b32_e32 v12, v13, v12
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v14
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s84
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s83
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s81
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
@@ -102097,11 +102756,11 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
 ; SI-NEXT:    v_or_b32_e32 v13, v15, v13
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s71
 ; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
 ; SI-NEXT:    v_or_b32_e32 v14, v16, v14
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s80
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, s68
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
@@ -102109,11 +102768,11 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v17, v17
 ; SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
-; SI-NEXT:    v_cvt_f32_f16_e32 v18, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v18, s34
 ; SI-NEXT:    v_or_b32_e32 v15, v16, v15
 ; SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v17
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s35
-; SI-NEXT:    v_cvt_f32_f16_e32 v19, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v19, s30
 ; SI-NEXT:    v_add_f32_e32 v18, 0x38000000, v18
 ; SI-NEXT:    v_cvt_f16_f32_e32 v18, v18
 ; SI-NEXT:    v_add_f32_e32 v17, 0x38000000, v17
@@ -102121,10 +102780,10 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v19, 0x38000000, v19
 ; SI-NEXT:    v_cvt_f16_f32_e32 v19, v19
 ; SI-NEXT:    v_or_b32_e32 v16, v18, v16
-; SI-NEXT:    v_cvt_f32_f16_e32 v18, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v18, vcc_hi
 ; SI-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
 ; SI-NEXT:    v_or_b32_e32 v17, v19, v17
-; SI-NEXT:    v_cvt_f32_f16_e32 v19, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v19, vcc_lo
 ; SI-NEXT:    v_cvt_f32_f16_e32 v20, s95
 ; SI-NEXT:    v_add_f32_e32 v18, 0x38000000, v18
 ; SI-NEXT:    v_cvt_f16_f32_e32 v18, v18
@@ -102195,10 +102854,9 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v25, v27, v25
 ; SI-NEXT:    v_cvt_f32_f16_e32 v27, s15
 ; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v26
-; SI-NEXT:    v_readlane_b32 s4, v35, 3
 ; SI-NEXT:    v_or_b32_e32 v26, v28, v26
 ; SI-NEXT:    v_cvt_f32_f16_e32 v28, s14
-; SI-NEXT:    v_cvt_f32_f16_e32 v29, s4
+; SI-NEXT:    v_cvt_f32_f16_e32 v29, s13
 ; SI-NEXT:    v_add_f32_e32 v27, 0x38000000, v27
 ; SI-NEXT:    v_cvt_f16_f32_e32 v27, v27
 ; SI-NEXT:    v_add_f32_e32 v28, 0x38000000, v28
@@ -102206,11 +102864,10 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v28, v28
 ; SI-NEXT:    v_cvt_f16_f32_e32 v29, v29
 ; SI-NEXT:    v_lshlrev_b32_e32 v27, 16, v27
-; SI-NEXT:    v_readlane_b32 s4, v35, 2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v30, s12
 ; SI-NEXT:    v_or_b32_e32 v27, v28, v27
 ; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v29
-; SI-NEXT:    v_cvt_f32_f16_e32 v29, s4
+; SI-NEXT:    v_cvt_f32_f16_e32 v29, s11
 ; SI-NEXT:    v_cvt_f32_f16_e32 v31, s10
 ; SI-NEXT:    v_add_f32_e32 v30, 0x38000000, v30
 ; SI-NEXT:    v_cvt_f16_f32_e32 v30, v30
@@ -102239,11 +102896,8 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v30, v31, v30
 ; SI-NEXT:    v_lshlrev_b32_e32 v31, 16, v32
 ; SI-NEXT:    v_or_b32_e32 v31, v33, v31
-; SI-NEXT:    s_branch .LBB67_5
-; SI-NEXT:  .LBB67_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB67_2
-; SI-NEXT:  .LBB67_4:
+; SI-NEXT:    s_branch .LBB67_6
+; SI-NEXT:  .LBB67_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -102276,7 +102930,7 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB67_5: ; %end
+; SI-NEXT:  .LBB67_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s30, v34, 34
 ; SI-NEXT:    v_readlane_b32 s31, v34, 35
 ; SI-NEXT:    v_readlane_b32 s99, v34, 33
@@ -102376,10 +103030,18 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB67_3
+; VI-NEXT:    s_cbranch_scc0 .LBB67_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB67_4
-; VI-NEXT:  .LBB67_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB67_3
+; VI-NEXT:  .LBB67_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB67_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB67_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s51, 16
 ; VI-NEXT:    v_mov_b32_e32 v16, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
@@ -102541,10 +103203,8 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v32, v32, v16 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v16, s52, v16
 ; VI-NEXT:    v_or_b32_e32 v16, v16, v32
-; VI-NEXT:    s_branch .LBB67_5
-; VI-NEXT:  .LBB67_3:
-; VI-NEXT:    s_branch .LBB67_2
-; VI-NEXT:  .LBB67_4:
+; VI-NEXT:    s_branch .LBB67_6
+; VI-NEXT:  .LBB67_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -102577,7 +103237,7 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB67_5: ; %end
+; VI-NEXT:  .LBB67_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v33, 15
 ; VI-NEXT:    v_readlane_b32 s66, v33, 14
 ; VI-NEXT:    v_readlane_b32 s65, v33, 13
@@ -102656,10 +103316,18 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB67_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB67_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB67_4
-; GFX9-NEXT:  .LBB67_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB67_3
+; GFX9-NEXT:  .LBB67_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB67_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB67_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v16, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v15, s51, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v14, s50, v16 op_sel_hi:[1,0]
@@ -102693,10 +103361,8 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v18, s54, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v17, s53, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v16, s52, v16 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB67_5
-; GFX9-NEXT:  .LBB67_3:
-; GFX9-NEXT:    s_branch .LBB67_2
-; GFX9-NEXT:  .LBB67_4:
+; GFX9-NEXT:    s_branch .LBB67_6
+; GFX9-NEXT:  .LBB67_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -102729,7 +103395,7 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB67_5: ; %end
+; GFX9-NEXT:  .LBB67_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v32, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v32, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
@@ -102809,11 +103475,16 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB67_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB67_4
-; GFX11-NEXT:  .LBB67_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB67_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB67_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB67_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v15, 0x200, s51 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v14, 0x200, s50 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s49 op_sel_hi:[0,1]
@@ -102847,8 +103518,6 @@ define inreg <16 x i64> @bitcast_v64f16_to_v16i64_scalar(<64 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v17, 0x200, s53 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v16, 0x200, s52 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_branch .LBB67_5
-; GFX11-NEXT:  .LBB67_3:
-; GFX11-NEXT:    s_branch .LBB67_2
 ; GFX11-NEXT:  .LBB67_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -103426,7 +104095,7 @@ define inreg <64 x i16> @bitcast_v16i64_to_v64i16_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s45, v1
 ; SI-NEXT:    s_cmp_lg_u32 s44, 0
 ; SI-NEXT:    v_readfirstlane_b32 s44, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB69_4
+; SI-NEXT:    s_cbranch_scc0 .LBB69_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s38, s5, 16
 ; SI-NEXT:    s_lshr_b32 s39, s7, 16
@@ -103457,11 +104126,51 @@ define inreg <64 x i16> @bitcast_v16i64_to_v64i16_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[22:23], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[20:21], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB69_3
-; SI-NEXT:  .LBB69_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 vcc, s[20:21], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[18:19], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
+; SI-NEXT:    s_mov_b64 s[36:37], 0
+; SI-NEXT:    s_branch .LBB69_3
+; SI-NEXT:  .LBB69_2:
+; SI-NEXT:    s_mov_b64 s[36:37], -1
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr65
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:  .LBB69_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; SI-NEXT:    s_cselect_b32 s47, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s47, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB69_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -103523,23 +104232,23 @@ define inreg <64 x i16> @bitcast_v16i64_to_v64i16_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[22:23], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[20:21], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 16
-; SI-NEXT:  .LBB69_3: ; %end
-; SI-NEXT:    s_lshl_b32 s47, s36, 16
+; SI-NEXT:    s_lshr_b64 vcc, s[20:21], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[18:19], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
+; SI-NEXT:  .LBB69_5: ; %end
+; SI-NEXT:    s_lshl_b32 s47, s34, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s47
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s47, s69, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s47
-; SI-NEXT:    s_lshl_b32 s47, s34, 16
+; SI-NEXT:    s_lshl_b32 s47, s30, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s18, s18, s47
 ; SI-NEXT:    s_and_b32 s19, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s47, s68, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s47
-; SI-NEXT:    s_lshl_b32 s47, s30, 16
+; SI-NEXT:    s_lshl_b32 s47, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s20, s20, s47
 ; SI-NEXT:    s_and_b32 s21, s21, 0xffff
@@ -103682,40 +104391,6 @@ define inreg <64 x i16> @bitcast_v16i64_to_v64i16_scalar(<16 x i64> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB69_4:
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr69
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr67
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    s_branch .LBB69_2
 ;
 ; VI-LABEL: bitcast_v16i64_to_v64i16_scalar:
 ; VI:       ; %bb.0:
@@ -103740,10 +104415,18 @@ define inreg <64 x i16> @bitcast_v16i64_to_v64i16_scalar(<16 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB69_4
+; VI-NEXT:    s_cbranch_scc0 .LBB69_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB69_3
-; VI-NEXT:  .LBB69_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB69_3
+; VI-NEXT:  .LBB69_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB69_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB69_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s47, s47, 3
 ; VI-NEXT:    s_addc_u32 s46, s46, 0
 ; VI-NEXT:    s_add_u32 s28, s28, 3
@@ -103776,7 +104459,7 @@ define inreg <64 x i16> @bitcast_v16i64_to_v64i16_scalar(<16 x i64> inreg %a, i3
 ; VI-NEXT:    s_addc_u32 s42, s42, 0
 ; VI-NEXT:    s_add_u32 s45, s45, 3
 ; VI-NEXT:    s_addc_u32 s44, s44, 0
-; VI-NEXT:  .LBB69_3: ; %end
+; VI-NEXT:  .LBB69_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -103810,8 +104493,6 @@ define inreg <64 x i16> @bitcast_v16i64_to_v64i16_scalar(<16 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB69_4:
-; VI-NEXT:    s_branch .LBB69_2
 ;
 ; GFX9-LABEL: bitcast_v16i64_to_v64i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -103836,10 +104517,18 @@ define inreg <64 x i16> @bitcast_v16i64_to_v64i16_scalar(<16 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB69_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB69_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB69_3
-; GFX9-NEXT:  .LBB69_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB69_3
+; GFX9-NEXT:  .LBB69_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB69_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB69_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s47, s47, 3
 ; GFX9-NEXT:    s_addc_u32 s46, s46, 0
 ; GFX9-NEXT:    s_add_u32 s28, s28, 3
@@ -103872,7 +104561,7 @@ define inreg <64 x i16> @bitcast_v16i64_to_v64i16_scalar(<16 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_addc_u32 s42, s42, 0
 ; GFX9-NEXT:    s_add_u32 s45, s45, 3
 ; GFX9-NEXT:    s_addc_u32 s44, s44, 0
-; GFX9-NEXT:  .LBB69_3: ; %end
+; GFX9-NEXT:  .LBB69_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -103906,8 +104595,6 @@ define inreg <64 x i16> @bitcast_v16i64_to_v64i16_scalar(<16 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB69_4:
-; GFX9-NEXT:    s_branch .LBB69_2
 ;
 ; GFX11-LABEL: bitcast_v16i64_to_v64i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -103929,11 +104616,16 @@ define inreg <64 x i16> @bitcast_v16i64_to_v64i16_scalar(<16 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB69_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB69_3
-; GFX11-NEXT:  .LBB69_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB69_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:  .LBB69_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB69_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s26, s26, 3
 ; GFX11-NEXT:    s_addc_u32 s27, s27, 0
 ; GFX11-NEXT:    s_add_u32 s24, s24, 3
@@ -103966,7 +104658,7 @@ define inreg <64 x i16> @bitcast_v16i64_to_v64i16_scalar(<16 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_addc_u32 s40, s40, 0
 ; GFX11-NEXT:    s_add_u32 s28, s28, 3
 ; GFX11-NEXT:    s_addc_u32 s29, s29, 0
-; GFX11-NEXT:  .LBB69_3: ; %end
+; GFX11-NEXT:  .LBB69_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -103984,8 +104676,6 @@ define inreg <64 x i16> @bitcast_v16i64_to_v64i16_scalar(<16 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s7 :: v_dual_mov_b32 v29, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v30, s5 :: v_dual_mov_b32 v31, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB69_4:
-; GFX11-NEXT:    s_branch .LBB69_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -104837,13 +105527,10 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v32, s99, 33
 ; SI-NEXT:    v_writelane_b32 v32, s30, 34
 ; SI-NEXT:    v_writelane_b32 v32, s31, 35
-; SI-NEXT:    v_readfirstlane_b32 s9, v16
-; SI-NEXT:    s_lshr_b32 s14, s9, 16
-; SI-NEXT:    v_readfirstlane_b32 s13, v14
-; SI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; SI-NEXT:    v_readfirstlane_b32 s7, v17
+; SI-NEXT:    v_readfirstlane_b32 s9, v16
 ; SI-NEXT:    v_readfirstlane_b32 s11, v15
-; SI-NEXT:    s_lshr_b32 s72, s13, 16
+; SI-NEXT:    v_readfirstlane_b32 s13, v14
 ; SI-NEXT:    v_readfirstlane_b32 s15, v13
 ; SI-NEXT:    v_readfirstlane_b32 s73, v12
 ; SI-NEXT:    v_readfirstlane_b32 s75, v11
@@ -104852,30 +105539,30 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s89, v8
 ; SI-NEXT:    v_readfirstlane_b32 s91, v7
 ; SI-NEXT:    v_readfirstlane_b32 s94, v6
-; SI-NEXT:    v_readfirstlane_b32 s31, v5
-; SI-NEXT:    v_readfirstlane_b32 s68, v4
-; SI-NEXT:    v_readfirstlane_b32 s80, v3
-; SI-NEXT:    v_readfirstlane_b32 s83, v2
-; SI-NEXT:    v_readfirstlane_b32 s86, v1
-; SI-NEXT:    v_readfirstlane_b32 s97, v0
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v33, s14, 0
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v5
+; SI-NEXT:    v_readfirstlane_b32 s34, v4
+; SI-NEXT:    v_readfirstlane_b32 s70, v3
+; SI-NEXT:    v_readfirstlane_b32 s81, v2
+; SI-NEXT:    v_readfirstlane_b32 s84, v1
+; SI-NEXT:    v_readfirstlane_b32 s87, v0
 ; SI-NEXT:    s_lshr_b32 s92, s29, 16
 ; SI-NEXT:    s_lshr_b32 s95, s28, 16
-; SI-NEXT:    s_lshr_b32 s34, s27, 16
-; SI-NEXT:    s_lshr_b32 s69, s26, 16
-; SI-NEXT:    s_lshr_b32 s71, s25, 16
-; SI-NEXT:    s_lshr_b32 s81, s24, 16
-; SI-NEXT:    s_lshr_b32 s84, s23, 16
-; SI-NEXT:    s_lshr_b32 s87, s22, 16
-; SI-NEXT:    s_lshr_b32 s98, s21, 16
-; SI-NEXT:    s_lshr_b32 s99, s20, 16
-; SI-NEXT:    s_lshr_b32 s6, s19, 16
-; SI-NEXT:    s_lshr_b32 s8, s18, 16
-; SI-NEXT:    s_lshr_b32 s10, s17, 16
-; SI-NEXT:    s_lshr_b32 s12, s16, 16
-; SI-NEXT:    s_lshr_b32 vcc_lo, s7, 16
-; SI-NEXT:    s_lshr_b32 vcc_hi, s11, 16
+; SI-NEXT:    s_lshr_b32 s30, s27, 16
+; SI-NEXT:    s_lshr_b32 s35, s26, 16
+; SI-NEXT:    s_lshr_b32 s69, s25, 16
+; SI-NEXT:    s_lshr_b32 s71, s24, 16
+; SI-NEXT:    s_lshr_b32 s82, s23, 16
+; SI-NEXT:    s_lshr_b32 s85, s22, 16
+; SI-NEXT:    s_lshr_b32 s96, s21, 16
+; SI-NEXT:    s_lshr_b32 s97, s20, 16
+; SI-NEXT:    s_lshr_b32 s98, s19, 16
+; SI-NEXT:    s_lshr_b32 s99, s18, 16
+; SI-NEXT:    s_lshr_b32 s6, s17, 16
+; SI-NEXT:    s_lshr_b32 s8, s16, 16
+; SI-NEXT:    s_lshr_b32 s67, s7, 16
+; SI-NEXT:    s_lshr_b32 s10, s9, 16
+; SI-NEXT:    s_lshr_b32 s12, s11, 16
+; SI-NEXT:    s_lshr_b32 s14, s13, 16
 ; SI-NEXT:    s_lshr_b32 s63, s15, 16
 ; SI-NEXT:    s_lshr_b32 s62, s73, 16
 ; SI-NEXT:    s_lshr_b32 s61, s75, 16
@@ -104884,54 +105571,55 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s88, s89, 16
 ; SI-NEXT:    s_lshr_b32 s90, s91, 16
 ; SI-NEXT:    s_lshr_b32 s93, s94, 16
-; SI-NEXT:    s_lshr_b32 s30, s31, 16
-; SI-NEXT:    s_lshr_b32 s35, s68, 16
-; SI-NEXT:    s_lshr_b32 s70, s80, 16
-; SI-NEXT:    s_lshr_b32 s82, s83, 16
-; SI-NEXT:    s_lshr_b32 s85, s86, 16
-; SI-NEXT:    s_lshr_b32 s96, s97, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, vcc_hi, 16
+; SI-NEXT:    s_lshr_b32 s31, s34, 16
+; SI-NEXT:    s_lshr_b32 s68, s70, 16
+; SI-NEXT:    s_lshr_b32 s80, s81, 16
+; SI-NEXT:    s_lshr_b32 s83, s84, 16
+; SI-NEXT:    s_lshr_b32 s86, s87, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v33, s72, 1
+; SI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_writelane_b32 v33, s63, 2
-; SI-NEXT:    v_writelane_b32 v33, s62, 3
-; SI-NEXT:    s_cbranch_scc0 .LBB71_4
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v33, s14, 0
+; SI-NEXT:    v_writelane_b32 v33, s63, 1
+; SI-NEXT:    s_cbranch_scc0 .LBB71_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s12, 16
+; SI-NEXT:    s_lshl_b32 s5, s8, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s8, 16
+; SI-NEXT:    s_lshl_b32 s5, s99, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s6, 16
+; SI-NEXT:    s_lshl_b32 s5, s98, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s10, 16
+; SI-NEXT:    s_lshl_b32 s41, s6, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -104939,23 +105627,23 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s92, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s97, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_and_b32 s4, s87, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s86, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_and_b32 s4, s84, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_and_b32 s4, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s34, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s54, s4, s5
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s55, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -104971,92 +105659,109 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s59, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s77, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s60, 16
-; SI-NEXT:    s_mov_b32 s76, s60
+; SI-NEXT:    s_mov_b32 s74, s60
 ; SI-NEXT:    s_or_b32 s60, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s75, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s61, 16
-; SI-NEXT:    s_mov_b32 s74, s61
+; SI-NEXT:    s_mov_b32 s76, s61
 ; SI-NEXT:    s_or_b32 s61, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s73, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s62, 16
+; SI-NEXT:    s_mov_b32 s72, s62
 ; SI-NEXT:    s_or_b32 s62, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s15, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s72, 16
+; SI-NEXT:    s_lshl_b32 s5, s14, 16
 ; SI-NEXT:    s_or_b32 s64, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
+; SI-NEXT:    s_lshl_b32 s5, s12, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s14, 16
+; SI-NEXT:    s_lshl_b32 s5, s10, 16
 ; SI-NEXT:    s_or_b32 s66, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
-; SI-NEXT:    s_mov_b32 s72, vcc_hi
-; SI-NEXT:    s_mov_b32 s14, vcc_lo
+; SI-NEXT:    s_lshl_b32 s5, s67, 16
+; SI-NEXT:    s_mov_b32 s14, s12
+; SI-NEXT:    s_mov_b32 s12, s10
+; SI-NEXT:    s_mov_b32 s10, s67
 ; SI-NEXT:    s_or_b32 s67, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB71_3
-; SI-NEXT:  .LBB71_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB71_3
+; SI-NEXT:  .LBB71_2:
+; SI-NEXT:    s_mov_b32 s74, s60
+; SI-NEXT:    s_mov_b32 s76, s61
+; SI-NEXT:    s_mov_b32 s72, s62
+; SI-NEXT:    s_mov_b32 s14, s12
+; SI-NEXT:    s_mov_b32 s12, s10
+; SI-NEXT:    s_mov_b32 s10, s67
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB71_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB71_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s12, 16
+; SI-NEXT:    s_lshl_b32 s5, s8, 16
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s10, s10, 16
-; SI-NEXT:    s_or_b32 s5, s10, s5
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_add_i32 s37, s5, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s8, 16
+; SI-NEXT:    s_lshl_b32 s5, s99, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s6, 16
+; SI-NEXT:    s_lshl_b32 s5, s98, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s46, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s28, s28, 3
 ; SI-NEXT:    s_add_i32 s47, s4, 0x30000
@@ -105068,35 +105773,35 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s92, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s97, s97, 3
+; SI-NEXT:    s_add_i32 s87, s87, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s97, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_and_b32 s4, s87, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s86, s86, 3
+; SI-NEXT:    s_add_i32 s84, s84, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s86, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_and_b32 s4, s84, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s83, s83, 3
+; SI-NEXT:    s_add_i32 s81, s81, 3
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_and_b32 s4, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s80, s80, 3
+; SI-NEXT:    s_add_i32 s70, s70, 3
 ; SI-NEXT:    s_add_i32 s52, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s68, s68, 3
+; SI-NEXT:    s_add_i32 s34, s34, 3
 ; SI-NEXT:    s_add_i32 s53, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s34, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s31, s31, 3
+; SI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; SI-NEXT:    s_add_i32 s54, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s94, s94, 3
 ; SI-NEXT:    s_add_i32 s55, s4, 0x30000
@@ -105121,27 +105826,26 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s77, s77, 3
 ; SI-NEXT:    s_add_i32 s59, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s77, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s76, 16
+; SI-NEXT:    s_lshl_b32 s5, s74, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s75, s75, 3
 ; SI-NEXT:    s_add_i32 s60, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s75, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s74, 16
+; SI-NEXT:    s_lshl_b32 s5, s76, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s73, s73, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 3
 ; SI-NEXT:    s_add_i32 s61, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s73, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s5, 16
+; SI-NEXT:    s_lshl_b32 s5, s72, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s15, s15, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 2
+; SI-NEXT:    v_readlane_b32 s5, v33, 1
 ; SI-NEXT:    s_add_i32 s62, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s15, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s13, s13, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 1
+; SI-NEXT:    v_readlane_b32 s5, v33, 0
 ; SI-NEXT:    s_add_i32 s63, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s13, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
@@ -105149,21 +105853,20 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s11, s11, 3
 ; SI-NEXT:    s_add_i32 s64, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s72, 16
+; SI-NEXT:    s_lshl_b32 s5, s14, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s9, s9, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 0
 ; SI-NEXT:    s_add_i32 s65, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s5, 16
+; SI-NEXT:    s_lshl_b32 s5, s12, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s66, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s14, 16
+; SI-NEXT:    s_lshl_b32 s5, s10, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s67, s4, 0x30000
-; SI-NEXT:  .LBB71_3: ; %end
+; SI-NEXT:  .LBB71_5: ; %end
 ; SI-NEXT:    v_readlane_b32 s30, v32, 34
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
@@ -105238,13 +105941,6 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB71_4:
-; SI-NEXT:    s_mov_b32 s76, s60
-; SI-NEXT:    s_mov_b32 s74, s61
-; SI-NEXT:    s_mov_b32 s72, vcc_hi
-; SI-NEXT:    s_mov_b32 s14, vcc_lo
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB71_2
 ;
 ; VI-LABEL: bitcast_v64i16_to_v16i64_scalar:
 ; VI:       ; %bb.0:
@@ -105269,10 +105965,18 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB71_4
+; VI-NEXT:    s_cbranch_scc0 .LBB71_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB71_3
-; VI-NEXT:  .LBB71_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB71_3
+; VI-NEXT:  .LBB71_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB71_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB71_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s46, 3
 ; VI-NEXT:    s_and_b32 s4, s46, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -105433,7 +106137,7 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
-; VI-NEXT:  .LBB71_3: ; %end
+; VI-NEXT:  .LBB71_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -105467,8 +106171,6 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB71_4:
-; VI-NEXT:    s_branch .LBB71_2
 ;
 ; GFX9-LABEL: bitcast_v64i16_to_v16i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -105526,10 +106228,18 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB71_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB71_4
-; GFX9-NEXT:  .LBB71_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB71_3
+; GFX9-NEXT:  .LBB71_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB71_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB71_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v15, s51, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v14, s50, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v13, s49, 3 op_sel_hi:[1,0]
@@ -105562,10 +106272,8 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v18, s54, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v16, s52, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB71_5
-; GFX9-NEXT:  .LBB71_3:
-; GFX9-NEXT:    s_branch .LBB71_2
-; GFX9-NEXT:  .LBB71_4:
+; GFX9-NEXT:    s_branch .LBB71_6
+; GFX9-NEXT:  .LBB71_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -105598,7 +106306,7 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB71_5: ; %end
+; GFX9-NEXT:  .LBB71_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v32, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v32, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
@@ -105678,11 +106386,16 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB71_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB71_4
-; GFX11-NEXT:  .LBB71_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB71_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB71_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB71_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v15, s51, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v14, s50, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v13, s49, 3 op_sel_hi:[1,0]
@@ -105716,8 +106429,6 @@ define inreg <16 x i64> @bitcast_v64i16_to_v16i64_scalar(<64 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v16, s52, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_branch .LBB71_5
-; GFX11-NEXT:  .LBB71_3:
-; GFX11-NEXT:    s_branch .LBB71_2
 ; GFX11-NEXT:  .LBB71_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -109733,7 +110444,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s44, v1
 ; SI-NEXT:    ; implicit-def: $vgpr62 : SGPR spill to VGPR lane
 ; SI-NEXT:    ; implicit-def: $vgpr61 : SGPR spill to VGPR lane
-; SI-NEXT:    s_cbranch_scc0 .LBB73_3
+; SI-NEXT:    s_cbranch_scc0 .LBB73_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s46, s5, 24
 ; SI-NEXT:    v_writelane_b32 v62, s46, 34
@@ -109881,40 +110592,226 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v62, s47, 3
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[14:15], 8
 ; SI-NEXT:    v_writelane_b32 v62, s46, 0
-; SI-NEXT:    s_lshr_b64 s[48:49], s[4:5], 16
+; SI-NEXT:    s_lshr_b64 s[38:39], s[4:5], 16
 ; SI-NEXT:    v_writelane_b32 v62, s47, 1
-; SI-NEXT:    s_lshr_b64 s[50:51], s[40:41], 24
-; SI-NEXT:    s_lshr_b64 s[52:53], s[40:41], 16
-; SI-NEXT:    s_lshr_b64 s[54:55], s[40:41], 8
-; SI-NEXT:    s_lshr_b64 s[64:65], s[42:43], 24
-; SI-NEXT:    s_lshr_b64 s[66:67], s[42:43], 16
-; SI-NEXT:    s_lshr_b64 s[68:69], s[42:43], 8
-; SI-NEXT:    s_lshr_b64 s[70:71], s[44:45], 24
-; SI-NEXT:    s_lshr_b64 s[80:81], s[44:45], 16
-; SI-NEXT:    s_lshr_b64 s[82:83], s[44:45], 8
-; SI-NEXT:    s_lshr_b64 s[84:85], s[28:29], 24
-; SI-NEXT:    s_lshr_b64 s[86:87], s[28:29], 16
-; SI-NEXT:    s_lshr_b64 s[96:97], s[28:29], 8
-; SI-NEXT:    s_lshr_b64 s[98:99], s[26:27], 24
-; SI-NEXT:    s_lshr_b64 s[46:47], s[26:27], 16
-; SI-NEXT:    s_lshr_b64 s[56:57], s[26:27], 8
-; SI-NEXT:    s_lshr_b64 s[58:59], s[24:25], 24
-; SI-NEXT:    s_lshr_b64 s[60:61], s[24:25], 16
-; SI-NEXT:    s_lshr_b64 s[62:63], s[24:25], 8
-; SI-NEXT:    s_lshr_b64 s[72:73], s[22:23], 24
-; SI-NEXT:    s_lshr_b64 s[74:75], s[22:23], 16
-; SI-NEXT:    s_lshr_b64 s[76:77], s[22:23], 8
-; SI-NEXT:    s_lshr_b64 s[78:79], s[20:21], 24
-; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
-; SI-NEXT:    s_lshr_b64 s[90:91], s[20:21], 8
-; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 24
-; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[18:19], 8
-; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 24
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 16
-; SI-NEXT:    s_lshr_b64 s[38:39], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB73_4
-; SI-NEXT:  .LBB73_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 s[48:49], s[40:41], 24
+; SI-NEXT:    s_lshr_b64 s[50:51], s[40:41], 16
+; SI-NEXT:    s_lshr_b64 s[52:53], s[40:41], 8
+; SI-NEXT:    s_lshr_b64 s[54:55], s[42:43], 24
+; SI-NEXT:    s_lshr_b64 s[64:65], s[42:43], 16
+; SI-NEXT:    s_lshr_b64 s[66:67], s[42:43], 8
+; SI-NEXT:    s_lshr_b64 s[68:69], s[44:45], 24
+; SI-NEXT:    s_lshr_b64 s[70:71], s[44:45], 16
+; SI-NEXT:    s_lshr_b64 s[80:81], s[44:45], 8
+; SI-NEXT:    s_lshr_b64 s[82:83], s[28:29], 24
+; SI-NEXT:    s_lshr_b64 s[84:85], s[28:29], 16
+; SI-NEXT:    s_lshr_b64 s[86:87], s[28:29], 8
+; SI-NEXT:    s_lshr_b64 s[96:97], s[26:27], 24
+; SI-NEXT:    s_lshr_b64 s[98:99], s[26:27], 16
+; SI-NEXT:    s_lshr_b64 s[46:47], s[26:27], 8
+; SI-NEXT:    s_lshr_b64 s[56:57], s[24:25], 24
+; SI-NEXT:    s_lshr_b64 s[58:59], s[24:25], 16
+; SI-NEXT:    s_lshr_b64 s[60:61], s[24:25], 8
+; SI-NEXT:    s_lshr_b64 s[62:63], s[22:23], 24
+; SI-NEXT:    s_lshr_b64 s[72:73], s[22:23], 16
+; SI-NEXT:    s_lshr_b64 s[74:75], s[22:23], 8
+; SI-NEXT:    s_lshr_b64 s[76:77], s[20:21], 24
+; SI-NEXT:    s_lshr_b64 s[78:79], s[20:21], 16
+; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 8
+; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 24
+; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 16
+; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 8
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 24
+; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 8
+; SI-NEXT:    s_mov_b64 s[36:37], 0
+; SI-NEXT:    s_branch .LBB73_3
+; SI-NEXT:  .LBB73_2:
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    s_mov_b64 s[36:37], -1
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 0
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s39, 1
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    ; implicit-def: $sgpr96
+; SI-NEXT:    ; implicit-def: $sgpr86
+; SI-NEXT:    ; implicit-def: $sgpr84
+; SI-NEXT:    ; implicit-def: $sgpr82
+; SI-NEXT:    ; implicit-def: $sgpr80
+; SI-NEXT:    ; implicit-def: $sgpr70
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 2
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s39, 3
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 4
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s39, 5
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 6
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s39, 7
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 8
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s39, 9
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 10
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s39, 11
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 12
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s39, 13
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 14
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s39, 15
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 16
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s39, 17
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 18
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s39, 19
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 20
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s39, 21
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 22
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s39, 23
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 24
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s39, 25
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 26
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s39, 27
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 28
+; SI-NEXT:    v_writelane_b32 v62, s39, 29
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 30
+; SI-NEXT:    v_writelane_b32 v62, s39, 31
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    v_writelane_b32 v62, s38, 32
+; SI-NEXT:    v_writelane_b32 v62, s39, 33
+; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:  .LBB73_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; SI-NEXT:    s_cselect_b32 s47, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s47, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB73_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[1:2], s[4:5], 1.0
 ; SI-NEXT:    v_add_f64 v[3:4], s[6:7], 1.0
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[1:2], 24
@@ -110112,213 +111009,32 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s8, s17, 24
 ; SI-NEXT:    s_lshr_b32 vcc_lo, s17, 16
 ; SI-NEXT:    s_lshr_b32 s6, s17, 8
-; SI-NEXT:    s_branch .LBB73_5
-; SI-NEXT:  .LBB73_3:
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 0
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s49, 1
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr98
-; SI-NEXT:    ; implicit-def: $sgpr96
-; SI-NEXT:    ; implicit-def: $sgpr86
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    ; implicit-def: $sgpr82
-; SI-NEXT:    ; implicit-def: $sgpr80
-; SI-NEXT:    ; implicit-def: $sgpr70
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 2
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s49, 3
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 4
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s49, 5
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 6
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s49, 7
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 8
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s49, 9
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 10
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s49, 11
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 12
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s49, 13
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 14
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s49, 15
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 16
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s49, 17
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 18
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s49, 19
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 20
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s49, 21
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 22
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s49, 23
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 24
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s49, 25
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 26
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s49, 27
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 28
-; SI-NEXT:    v_writelane_b32 v62, s49, 29
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 30
-; SI-NEXT:    v_writelane_b32 v62, s49, 31
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    v_writelane_b32 v62, s48, 32
-; SI-NEXT:    v_writelane_b32 v62, s49, 33
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    s_branch .LBB73_2
-; SI-NEXT:  .LBB73_4:
+; SI-NEXT:    s_branch .LBB73_6
+; SI-NEXT:  .LBB73_5:
 ; SI-NEXT:    v_mov_b32_e32 v3, s6
-; SI-NEXT:    v_mov_b32_e32 v2, s66
+; SI-NEXT:    v_mov_b32_e32 v2, s64
 ; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:228 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v3, off, s[0:3], s32 offset:232 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_mov_b32_e32 v2, s64
-; SI-NEXT:    v_mov_b32_e32 v35, s46
+; SI-NEXT:    v_mov_b32_e32 v2, s54
+; SI-NEXT:    v_mov_b32_e32 v32, s46
 ; SI-NEXT:    v_readlane_b32 s46, v62, 0
 ; SI-NEXT:    v_readlane_b32 s47, v62, 1
-; SI-NEXT:    v_mov_b32_e32 v29, s38
-; SI-NEXT:    v_mov_b32_e32 v46, s36
-; SI-NEXT:    v_mov_b32_e32 v45, s34
-; SI-NEXT:    v_mov_b32_e32 v44, s30
-; SI-NEXT:    v_mov_b32_e32 v41, s94
-; SI-NEXT:    v_mov_b32_e32 v40, s92
-; SI-NEXT:    v_mov_b32_e32 v59, s90
-; SI-NEXT:    v_mov_b32_e32 v39, s88
-; SI-NEXT:    v_mov_b32_e32 v38, s78
-; SI-NEXT:    v_mov_b32_e32 v52, s76
-; SI-NEXT:    v_mov_b32_e32 v51, s74
-; SI-NEXT:    v_mov_b32_e32 v50, s72
-; SI-NEXT:    v_mov_b32_e32 v49, s62
-; SI-NEXT:    v_mov_b32_e32 v37, s60
-; SI-NEXT:    v_mov_b32_e32 v36, s58
-; SI-NEXT:    v_mov_b32_e32 v32, s56
+; SI-NEXT:    v_mov_b32_e32 v29, s34
+; SI-NEXT:    v_mov_b32_e32 v46, s30
+; SI-NEXT:    v_mov_b32_e32 v45, vcc_lo
+; SI-NEXT:    v_mov_b32_e32 v44, s94
+; SI-NEXT:    v_mov_b32_e32 v41, s92
+; SI-NEXT:    v_mov_b32_e32 v40, s90
+; SI-NEXT:    v_mov_b32_e32 v59, s88
+; SI-NEXT:    v_mov_b32_e32 v39, s78
+; SI-NEXT:    v_mov_b32_e32 v38, s76
+; SI-NEXT:    v_mov_b32_e32 v52, s74
+; SI-NEXT:    v_mov_b32_e32 v51, s72
+; SI-NEXT:    v_mov_b32_e32 v50, s62
+; SI-NEXT:    v_mov_b32_e32 v49, s60
+; SI-NEXT:    v_mov_b32_e32 v37, s58
+; SI-NEXT:    v_mov_b32_e32 v36, s56
 ; SI-NEXT:    v_mov_b32_e32 v28, s16
 ; SI-NEXT:    v_mov_b32_e32 v20, s18
 ; SI-NEXT:    v_mov_b32_e32 v58, s20
@@ -110334,14 +111050,15 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v7, s10
 ; SI-NEXT:    v_mov_b32_e32 v5, s8
 ; SI-NEXT:    v_mov_b32_e32 v1, s4
-; SI-NEXT:    v_mov_b32_e32 v34, s98
-; SI-NEXT:    v_mov_b32_e32 v26, s96
-; SI-NEXT:    v_mov_b32_e32 v23, s86
-; SI-NEXT:    v_mov_b32_e32 v22, s84
-; SI-NEXT:    v_mov_b32_e32 v18, s82
-; SI-NEXT:    v_mov_b32_e32 v15, s80
-; SI-NEXT:    v_mov_b32_e32 v14, s70
-; SI-NEXT:    v_mov_b32_e32 v56, s68
+; SI-NEXT:    v_mov_b32_e32 v35, s98
+; SI-NEXT:    v_mov_b32_e32 v34, s96
+; SI-NEXT:    v_mov_b32_e32 v26, s86
+; SI-NEXT:    v_mov_b32_e32 v23, s84
+; SI-NEXT:    v_mov_b32_e32 v22, s82
+; SI-NEXT:    v_mov_b32_e32 v18, s80
+; SI-NEXT:    v_mov_b32_e32 v15, s70
+; SI-NEXT:    v_mov_b32_e32 v14, s68
+; SI-NEXT:    v_mov_b32_e32 v56, s66
 ; SI-NEXT:    v_readlane_b32 s10, v62, 34
 ; SI-NEXT:    v_readlane_b32 s12, v62, 35
 ; SI-NEXT:    v_readlane_b32 s14, v62, 36
@@ -110379,7 +111096,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:220 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v3, off, s[0:3], s32 offset:224 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_mov_b32_e32 v2, s54
+; SI-NEXT:    v_mov_b32_e32 v2, s52
 ; SI-NEXT:    v_readlane_b32 s93, v61, 6
 ; SI-NEXT:    v_readlane_b32 s94, v61, 7
 ; SI-NEXT:    v_readlane_b32 s95, v61, 8
@@ -110395,11 +111112,11 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:212 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v3, off, s[0:3], s32 offset:216 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_mov_b32_e32 v2, s52
+; SI-NEXT:    v_mov_b32_e32 v2, s50
 ; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:204 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v3, off, s[0:3], s32 offset:208 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_mov_b32_e32 v2, s50
+; SI-NEXT:    v_mov_b32_e32 v2, s48
 ; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:196 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v3, off, s[0:3], s32 offset:200 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(1)
@@ -110500,7 +111217,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v3, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_mov_b32_e32 v2, s48
+; SI-NEXT:    v_mov_b32_e32 v2, s38
 ; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v3, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(1)
@@ -110508,7 +111225,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    v_readlane_b32 s46, v62, 47
 ; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:52 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v3, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
-; SI-NEXT:  .LBB73_5: ; %end
+; SI-NEXT:  .LBB73_6: ; %end
 ; SI-NEXT:    s_waitcnt expcnt(1)
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v28
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 8, v29
@@ -111104,7 +111821,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; VI-NEXT:    s_cmp_lg_u32 s44, 0
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    ; implicit-def: $vgpr62 : SGPR spill to VGPR lane
-; VI-NEXT:    s_cbranch_scc0 .LBB73_3
+; VI-NEXT:    s_cbranch_scc0 .LBB73_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s46, s5, 24
 ; VI-NEXT:    v_writelane_b32 v62, s46, 10
@@ -111255,13 +111972,175 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; VI-NEXT:    s_lshr_b64 s[78:79], s[44:45], 24
 ; VI-NEXT:    s_lshr_b64 s[88:89], s[28:29], 24
 ; VI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 24
-; VI-NEXT:    s_lshr_b64 s[30:31], s[24:25], 24
-; VI-NEXT:    s_lshr_b64 s[34:35], s[22:23], 24
-; VI-NEXT:    s_lshr_b64 s[36:37], s[20:21], 24
-; VI-NEXT:    s_lshr_b64 s[38:39], s[18:19], 24
-; VI-NEXT:    s_lshr_b64 s[48:49], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB73_4
-; VI-NEXT:  .LBB73_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b64 vcc, s[24:25], 24
+; VI-NEXT:    s_lshr_b64 s[30:31], s[22:23], 24
+; VI-NEXT:    s_lshr_b64 s[34:35], s[20:21], 24
+; VI-NEXT:    s_lshr_b64 s[36:37], s[18:19], 24
+; VI-NEXT:    s_lshr_b64 s[38:39], s[16:17], 24
+; VI-NEXT:    s_mov_b64 s[48:49], 0
+; VI-NEXT:    s_branch .LBB73_3
+; VI-NEXT:  .LBB73_2:
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    s_mov_b64 s[48:49], -1
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr70
+; VI-NEXT:    ; implicit-def: $sgpr71
+; VI-NEXT:    ; implicit-def: $sgpr68
+; VI-NEXT:    ; implicit-def: $sgpr69
+; VI-NEXT:    ; implicit-def: $sgpr66
+; VI-NEXT:    ; implicit-def: $sgpr67
+; VI-NEXT:    ; implicit-def: $sgpr64
+; VI-NEXT:    ; implicit-def: $sgpr65
+; VI-NEXT:    ; implicit-def: $sgpr54
+; VI-NEXT:    ; implicit-def: $sgpr55
+; VI-NEXT:    ; implicit-def: $sgpr53
+; VI-NEXT:    ; implicit-def: $sgpr87
+; VI-NEXT:    ; implicit-def: $sgpr86
+; VI-NEXT:    ; implicit-def: $sgpr52
+; VI-NEXT:    ; implicit-def: $sgpr50
+; VI-NEXT:    ; implicit-def: $sgpr51
+; VI-NEXT:    ; implicit-def: $sgpr84
+; VI-NEXT:    ; implicit-def: $sgpr85
+; VI-NEXT:    ; implicit-def: $sgpr82
+; VI-NEXT:    ; implicit-def: $sgpr83
+; VI-NEXT:    ; implicit-def: $sgpr80
+; VI-NEXT:    ; implicit-def: $sgpr81
+; VI-NEXT:    ; implicit-def: $sgpr38
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:  .LBB73_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[48:49], s[48:49], exec
+; VI-NEXT:    s_cselect_b32 s47, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s47, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB73_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[13:14], s[4:5], 1.0
 ; VI-NEXT:    v_add_f64 v[1:2], s[6:7], 1.0
 ; VI-NEXT:    v_add_f64 v[3:4], s[8:9], 1.0
@@ -111457,169 +112336,13 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v36, 8, v32
 ; VI-NEXT:    v_lshrrev_b32_e32 v45, 16, v31
 ; VI-NEXT:    v_lshrrev_b32_e32 v46, 8, v31
-; VI-NEXT:    s_branch .LBB73_5
-; VI-NEXT:  .LBB73_3:
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr70
-; VI-NEXT:    ; implicit-def: $sgpr71
-; VI-NEXT:    ; implicit-def: $sgpr68
-; VI-NEXT:    ; implicit-def: $sgpr69
-; VI-NEXT:    ; implicit-def: $sgpr66
-; VI-NEXT:    ; implicit-def: $sgpr67
-; VI-NEXT:    ; implicit-def: $sgpr64
-; VI-NEXT:    ; implicit-def: $sgpr65
-; VI-NEXT:    ; implicit-def: $sgpr54
-; VI-NEXT:    ; implicit-def: $sgpr55
-; VI-NEXT:    ; implicit-def: $sgpr53
-; VI-NEXT:    ; implicit-def: $sgpr87
-; VI-NEXT:    ; implicit-def: $sgpr86
-; VI-NEXT:    ; implicit-def: $sgpr52
-; VI-NEXT:    ; implicit-def: $sgpr50
-; VI-NEXT:    ; implicit-def: $sgpr51
-; VI-NEXT:    ; implicit-def: $sgpr84
-; VI-NEXT:    ; implicit-def: $sgpr85
-; VI-NEXT:    ; implicit-def: $sgpr82
-; VI-NEXT:    ; implicit-def: $sgpr83
-; VI-NEXT:    ; implicit-def: $sgpr80
-; VI-NEXT:    ; implicit-def: $sgpr81
-; VI-NEXT:    ; implicit-def: $sgpr48
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    s_branch .LBB73_2
-; VI-NEXT:  .LBB73_4:
-; VI-NEXT:    v_mov_b32_e32 v42, s48
-; VI-NEXT:    v_mov_b32_e32 v41, s38
+; VI-NEXT:    s_branch .LBB73_6
+; VI-NEXT:  .LBB73_5:
+; VI-NEXT:    v_mov_b32_e32 v42, s38
+; VI-NEXT:    v_mov_b32_e32 v41, s36
 ; VI-NEXT:    buffer_store_dword v41, off, s[0:3], s32 offset:360 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v42, off, s[0:3], s32 offset:364 ; 4-byte Folded Spill
-; VI-NEXT:    v_mov_b32_e32 v41, s36
+; VI-NEXT:    v_mov_b32_e32 v41, s34
 ; VI-NEXT:    v_mov_b32_e32 v34, s65
 ; VI-NEXT:    buffer_store_dword v34, off, s[0:3], s32 offset:368 ; 4-byte Folded Spill
 ; VI-NEXT:    v_mov_b32_e32 v34, s64
@@ -111698,7 +112421,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; VI-NEXT:    buffer_store_dword v34, off, s[0:3], s32 offset:116 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v41, off, s[0:3], s32 offset:336 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v42, off, s[0:3], s32 offset:340 ; 4-byte Folded Spill
-; VI-NEXT:    v_mov_b32_e32 v41, s34
+; VI-NEXT:    v_mov_b32_e32 v41, s30
 ; VI-NEXT:    v_mov_b32_e32 v34, s4
 ; VI-NEXT:    v_readlane_b32 s4, v62, 15
 ; VI-NEXT:    buffer_store_dword v34, off, s[0:3], s32 offset:120 ; 4-byte Folded Spill
@@ -111777,7 +112500,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; VI-NEXT:    v_readlane_b32 s4, v62, 41
 ; VI-NEXT:    buffer_store_dword v41, off, s[0:3], s32 offset:324 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v42, off, s[0:3], s32 offset:328 ; 4-byte Folded Spill
-; VI-NEXT:    v_mov_b32_e32 v41, s30
+; VI-NEXT:    v_mov_b32_e32 v41, vcc_lo
 ; VI-NEXT:    v_mov_b32_e32 v38, s4
 ; VI-NEXT:    v_readlane_b32 s4, v62, 42
 ; VI-NEXT:    v_mov_b32_e32 v47, s4
@@ -111884,7 +112607,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v41, s46
 ; VI-NEXT:    buffer_store_dword v41, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v42, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
-; VI-NEXT:  .LBB73_5: ; %end
+; VI-NEXT:  .LBB73_6: ; %end
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; VI-NEXT:    v_perm_b32 v41, v45, v42, s4
 ; VI-NEXT:    v_perm_b32 v31, v31, v46, s4
@@ -112336,7 +113059,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; GFX9-NEXT:    s_cmp_lg_u32 s44, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    ; implicit-def: $vgpr62 : SGPR spill to VGPR lane
-; GFX9-NEXT:    s_cbranch_scc0 .LBB73_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB73_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s46, s5, 24
 ; GFX9-NEXT:    v_writelane_b32 v62, s46, 2
@@ -112481,11 +113204,165 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; GFX9-NEXT:    s_lshr_b64 s[90:91], s[26:27], 24
 ; GFX9-NEXT:    s_lshr_b64 s[92:93], s[24:25], 24
 ; GFX9-NEXT:    s_lshr_b64 s[94:95], s[22:23], 24
-; GFX9-NEXT:    s_lshr_b64 s[30:31], s[20:21], 24
-; GFX9-NEXT:    s_lshr_b64 s[34:35], s[18:19], 24
-; GFX9-NEXT:    s_lshr_b64 s[36:37], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB73_4
-; GFX9-NEXT:  .LBB73_2: ; %cmp.true
+; GFX9-NEXT:    s_lshr_b64 vcc, s[20:21], 24
+; GFX9-NEXT:    s_lshr_b64 s[30:31], s[18:19], 24
+; GFX9-NEXT:    s_lshr_b64 s[34:35], s[16:17], 24
+; GFX9-NEXT:    s_mov_b64 s[36:37], 0
+; GFX9-NEXT:    s_branch .LBB73_3
+; GFX9-NEXT:  .LBB73_2:
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    s_mov_b64 s[36:37], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr80
+; GFX9-NEXT:    ; implicit-def: $sgpr81
+; GFX9-NEXT:    ; implicit-def: $sgpr70
+; GFX9-NEXT:    ; implicit-def: $sgpr71
+; GFX9-NEXT:    ; implicit-def: $sgpr68
+; GFX9-NEXT:    ; implicit-def: $sgpr69
+; GFX9-NEXT:    ; implicit-def: $sgpr66
+; GFX9-NEXT:    ; implicit-def: $sgpr67
+; GFX9-NEXT:    ; implicit-def: $sgpr64
+; GFX9-NEXT:    ; implicit-def: $sgpr65
+; GFX9-NEXT:    ; implicit-def: $sgpr54
+; GFX9-NEXT:    ; implicit-def: $sgpr55
+; GFX9-NEXT:    ; implicit-def: $sgpr52
+; GFX9-NEXT:    ; implicit-def: $sgpr53
+; GFX9-NEXT:    ; implicit-def: $sgpr50
+; GFX9-NEXT:    ; implicit-def: $sgpr51
+; GFX9-NEXT:    ; implicit-def: $sgpr48
+; GFX9-NEXT:    ; implicit-def: $sgpr49
+; GFX9-NEXT:    ; implicit-def: $sgpr38
+; GFX9-NEXT:    ; implicit-def: $sgpr39
+; GFX9-NEXT:    ; implicit-def: $sgpr98
+; GFX9-NEXT:    ; implicit-def: $sgpr99
+; GFX9-NEXT:    ; implicit-def: $sgpr96
+; GFX9-NEXT:    ; implicit-def: $sgpr97
+; GFX9-NEXT:    ; implicit-def: $sgpr86
+; GFX9-NEXT:    ; implicit-def: $sgpr87
+; GFX9-NEXT:    ; implicit-def: $sgpr84
+; GFX9-NEXT:    ; implicit-def: $sgpr85
+; GFX9-NEXT:    ; implicit-def: $sgpr82
+; GFX9-NEXT:    ; implicit-def: $sgpr83
+; GFX9-NEXT:    ; implicit-def: $sgpr34
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:  .LBB73_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GFX9-NEXT:    s_cselect_b32 s47, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s47, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB73_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[11:12], s[4:5], 1.0
 ; GFX9-NEXT:    v_add_f64 v[1:2], s[6:7], 1.0
 ; GFX9-NEXT:    v_add_f64 v[3:4], s[8:9], 1.0
@@ -112700,156 +113577,8 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v20, 8, v49
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v59, 16, v48
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v60, 8, v48
-; GFX9-NEXT:    s_branch .LBB73_5
-; GFX9-NEXT:  .LBB73_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr80
-; GFX9-NEXT:    ; implicit-def: $sgpr81
-; GFX9-NEXT:    ; implicit-def: $sgpr70
-; GFX9-NEXT:    ; implicit-def: $sgpr71
-; GFX9-NEXT:    ; implicit-def: $sgpr68
-; GFX9-NEXT:    ; implicit-def: $sgpr69
-; GFX9-NEXT:    ; implicit-def: $sgpr66
-; GFX9-NEXT:    ; implicit-def: $sgpr67
-; GFX9-NEXT:    ; implicit-def: $sgpr64
-; GFX9-NEXT:    ; implicit-def: $sgpr65
-; GFX9-NEXT:    ; implicit-def: $sgpr54
-; GFX9-NEXT:    ; implicit-def: $sgpr55
-; GFX9-NEXT:    ; implicit-def: $sgpr52
-; GFX9-NEXT:    ; implicit-def: $sgpr53
-; GFX9-NEXT:    ; implicit-def: $sgpr50
-; GFX9-NEXT:    ; implicit-def: $sgpr51
-; GFX9-NEXT:    ; implicit-def: $sgpr48
-; GFX9-NEXT:    ; implicit-def: $sgpr49
-; GFX9-NEXT:    ; implicit-def: $sgpr38
-; GFX9-NEXT:    ; implicit-def: $sgpr39
-; GFX9-NEXT:    ; implicit-def: $sgpr98
-; GFX9-NEXT:    ; implicit-def: $sgpr99
-; GFX9-NEXT:    ; implicit-def: $sgpr96
-; GFX9-NEXT:    ; implicit-def: $sgpr97
-; GFX9-NEXT:    ; implicit-def: $sgpr86
-; GFX9-NEXT:    ; implicit-def: $sgpr87
-; GFX9-NEXT:    ; implicit-def: $sgpr84
-; GFX9-NEXT:    ; implicit-def: $sgpr85
-; GFX9-NEXT:    ; implicit-def: $sgpr82
-; GFX9-NEXT:    ; implicit-def: $sgpr83
-; GFX9-NEXT:    ; implicit-def: $sgpr36
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    s_branch .LBB73_2
-; GFX9-NEXT:  .LBB73_4:
+; GFX9-NEXT:    s_branch .LBB73_6
+; GFX9-NEXT:  .LBB73_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s66
 ; GFX9-NEXT:    buffer_store_dword v15, off, s[0:3], s32 offset:392 ; 4-byte Folded Spill
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s65
@@ -112987,11 +113716,11 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s4
 ; GFX9-NEXT:    v_readlane_b32 s4, v62, 31
 ; GFX9-NEXT:    v_mov_b32_e32 v58, s4
-; GFX9-NEXT:    v_mov_b32_e32 v57, s34
+; GFX9-NEXT:    v_mov_b32_e32 v57, s30
 ; GFX9-NEXT:    buffer_store_dword v57, off, s[0:3], s32 offset:360 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
 ; GFX9-NEXT:    buffer_store_dword v58, off, s[0:3], s32 offset:364 ; 4-byte Folded Spill
-; GFX9-NEXT:    v_mov_b32_e32 v57, s30
+; GFX9-NEXT:    v_mov_b32_e32 v57, vcc_lo
 ; GFX9-NEXT:    buffer_store_dword v57, off, s[0:3], s32 offset:348 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
 ; GFX9-NEXT:    buffer_store_dword v58, off, s[0:3], s32 offset:352 ; 4-byte Folded Spill
@@ -113003,7 +113732,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; GFX9-NEXT:    buffer_store_dword v57, off, s[0:3], s32 offset:316 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
 ; GFX9-NEXT:    buffer_store_dword v58, off, s[0:3], s32 offset:320 ; 4-byte Folded Spill
-; GFX9-NEXT:    v_mov_b32_e32 v52, s36
+; GFX9-NEXT:    v_mov_b32_e32 v52, s34
 ; GFX9-NEXT:    buffer_store_dword v52, off, s[0:3], s32 offset:384 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
 ; GFX9-NEXT:    buffer_store_dword v53, off, s[0:3], s32 offset:388 ; 4-byte Folded Spill
@@ -113131,7 +113860,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s67
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s4
 ; GFX9-NEXT:    v_mov_b32_e32 v51, s55
-; GFX9-NEXT:  .LBB73_5: ; %end
+; GFX9-NEXT:  .LBB73_6: ; %end
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; GFX9-NEXT:    v_perm_b32 v39, v39, v15, s4
 ; GFX9-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:392 ; 4-byte Folded Reload
@@ -113591,10 +114320,10 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s13, v2
 ; GFX11-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
-; GFX11-NEXT:    s_mov_b32 vcc_lo, 0
+; GFX11-NEXT:    s_mov_b32 s30, 0
 ; GFX11-NEXT:    ; implicit-def: $vgpr76 : SGPR spill to VGPR lane
 ; GFX11-NEXT:    ; implicit-def: $vgpr77 : SGPR spill to VGPR lane
-; GFX11-NEXT:    s_cbranch_scc0 .LBB73_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB73_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s42, s11, 16
 ; GFX11-NEXT:    s_lshr_b32 s48, s41, 24
@@ -113661,7 +114390,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 12
 ; GFX11-NEXT:    s_lshr_b32 s42, s29, 24
 ; GFX11-NEXT:    s_lshr_b32 s101, s2, 8
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s0, 16
+; GFX11-NEXT:    s_lshr_b32 s31, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s103, s0, 8
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 13
 ; GFX11-NEXT:    s_lshr_b32 s42, s29, 16
@@ -113677,7 +114406,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; GFX11-NEXT:    s_lshr_b32 s42, s27, 24
 ; GFX11-NEXT:    s_lshr_b64 s[92:93], s[12:13], 24
 ; GFX11-NEXT:    s_lshr_b64 s[94:95], s[28:29], 24
-; GFX11-NEXT:    s_lshr_b64 s[30:31], s[26:27], 24
+; GFX11-NEXT:    s_lshr_b64 vcc, s[26:27], 24
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 16
 ; GFX11-NEXT:    s_lshr_b32 s42, s27, 16
 ; GFX11-NEXT:    s_lshr_b64 s[62:63], s[24:25], 24
@@ -113743,129 +114472,15 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 7
 ; GFX11-NEXT:    s_lshr_b64 s[42:43], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, vcc_lo
-; GFX11-NEXT:    s_cbranch_vccnz .LBB73_4
-; GFX11-NEXT:  .LBB73_2: ; %cmp.true
-; GFX11-NEXT:    v_add_f64 v[21:22], s[22:23], 1.0
-; GFX11-NEXT:    v_add_f64 v[11:12], s[4:5], 1.0
-; GFX11-NEXT:    v_add_f64 v[23:24], s[20:21], 1.0
-; GFX11-NEXT:    v_add_f64 v[13:14], s[12:13], 1.0
-; GFX11-NEXT:    v_add_f64 v[27:28], s[18:19], 1.0
-; GFX11-NEXT:    v_add_f64 v[15:16], s[28:29], 1.0
-; GFX11-NEXT:    v_add_f64 v[31:32], s[16:17], 1.0
-; GFX11-NEXT:    v_add_f64 v[7:8], s[8:9], 1.0
-; GFX11-NEXT:    v_add_f64 v[17:18], s[26:27], 1.0
-; GFX11-NEXT:    v_add_f64 v[35:36], s[2:3], 1.0
-; GFX11-NEXT:    v_add_f64 v[1:2], s[40:41], 1.0
-; GFX11-NEXT:    v_add_f64 v[3:4], s[14:15], 1.0
-; GFX11-NEXT:    v_add_f64 v[5:6], s[10:11], 1.0
-; GFX11-NEXT:    v_add_f64 v[9:10], s[6:7], 1.0
-; GFX11-NEXT:    v_add_f64 v[19:20], s[24:25], 1.0
-; GFX11-NEXT:    v_add_f64 v[48:49], s[0:1], 1.0
-; GFX11-NEXT:    v_lshrrev_b64 v[64:65], 24, v[21:22]
-; GFX11-NEXT:    v_lshrrev_b64 v[50:51], 24, v[11:12]
-; GFX11-NEXT:    v_lshrrev_b64 v[65:66], 24, v[23:24]
-; GFX11-NEXT:    v_lshrrev_b64 v[51:52], 24, v[13:14]
-; GFX11-NEXT:    v_lshrrev_b64 v[66:67], 24, v[27:28]
-; GFX11-NEXT:    v_lshrrev_b64 v[52:53], 24, v[15:16]
-; GFX11-NEXT:    v_lshrrev_b64 v[67:68], 24, v[31:32]
-; GFX11-NEXT:    v_lshrrev_b64 v[37:38], 24, v[7:8]
-; GFX11-NEXT:    v_lshrrev_b64 v[53:54], 24, v[17:18]
-; GFX11-NEXT:    v_lshrrev_b64 v[68:69], 24, v[35:36]
-; GFX11-NEXT:    v_lshrrev_b64 v[25:26], 24, v[1:2]
-; GFX11-NEXT:    v_lshrrev_b64 v[29:30], 24, v[3:4]
-; GFX11-NEXT:    v_lshrrev_b64 v[33:34], 24, v[5:6]
-; GFX11-NEXT:    v_lshrrev_b64 v[38:39], 24, v[9:10]
-; GFX11-NEXT:    v_lshrrev_b64 v[54:55], 24, v[19:20]
-; GFX11-NEXT:    v_lshrrev_b64 v[69:70], 24, v[48:49]
-; GFX11-NEXT:    v_lshrrev_b32_e32 v39, 24, v2
-; GFX11-NEXT:    v_lshrrev_b32_e32 v55, 16, v2
-; GFX11-NEXT:    v_lshrrev_b32_e32 v34, 8, v2
-; GFX11-NEXT:    v_lshrrev_b32_e32 v30, 16, v1
-; GFX11-NEXT:    v_lshrrev_b32_e32 v26, 8, v1
-; GFX11-NEXT:    v_lshrrev_b32_e32 v82, 24, v4
-; GFX11-NEXT:    v_lshrrev_b32_e32 v83, 16, v4
-; GFX11-NEXT:    v_lshrrev_b32_e32 v81, 8, v4
-; GFX11-NEXT:    v_lshrrev_b32_e32 v80, 16, v3
-; GFX11-NEXT:    v_lshrrev_b32_e32 v71, 8, v3
-; GFX11-NEXT:    v_lshrrev_b32_e32 v97, 24, v6
-; GFX11-NEXT:    v_lshrrev_b32_e32 v98, 16, v6
-; GFX11-NEXT:    v_lshrrev_b32_e32 v86, 8, v6
-; GFX11-NEXT:    v_lshrrev_b32_e32 v85, 16, v5
-; GFX11-NEXT:    v_lshrrev_b32_e32 v84, 8, v5
-; GFX11-NEXT:    v_lshrrev_b32_e32 v102, 24, v8
-; GFX11-NEXT:    v_lshrrev_b32_e32 v103, 16, v8
-; GFX11-NEXT:    v_lshrrev_b32_e32 v101, 8, v8
-; GFX11-NEXT:    v_lshrrev_b32_e32 v96, 16, v7
-; GFX11-NEXT:    v_lshrrev_b32_e32 v87, 8, v7
-; GFX11-NEXT:    v_lshrrev_b32_e32 v114, 24, v10
-; GFX11-NEXT:    v_lshrrev_b32_e32 v116, 16, v10
-; GFX11-NEXT:    v_lshrrev_b32_e32 v115, 8, v10
-; GFX11-NEXT:    v_lshrrev_b32_e32 v100, 16, v9
-; GFX11-NEXT:    v_lshrrev_b32_e32 v99, 8, v9
-; GFX11-NEXT:    v_lshrrev_b32_e32 v130, 24, v12
-; GFX11-NEXT:    v_lshrrev_b32_e32 v131, 16, v12
-; GFX11-NEXT:    v_lshrrev_b32_e32 v129, 8, v12
-; GFX11-NEXT:    v_lshrrev_b32_e32 v113, 16, v11
-; GFX11-NEXT:    v_lshrrev_b32_e32 v112, 8, v11
-; GFX11-NEXT:    v_lshrrev_b32_e32 v134, 24, v14
-; GFX11-NEXT:    v_lshrrev_b32_e32 v145, 16, v14
-; GFX11-NEXT:    v_lshrrev_b32_e32 v144, 8, v14
-; GFX11-NEXT:    v_lshrrev_b32_e32 v118, 16, v13
-; GFX11-NEXT:    v_lshrrev_b32_e32 v117, 8, v13
-; GFX11-NEXT:    v_lshrrev_b32_e32 v148, 24, v16
-; GFX11-NEXT:    v_lshrrev_b32_e32 v150, 16, v16
-; GFX11-NEXT:    v_lshrrev_b32_e32 v147, 8, v16
-; GFX11-NEXT:    v_lshrrev_b32_e32 v128, 16, v15
-; GFX11-NEXT:    v_lshrrev_b32_e32 v119, 8, v15
-; GFX11-NEXT:    v_lshrrev_b32_e32 v162, 24, v18
-; GFX11-NEXT:    v_lshrrev_b32_e32 v164, 16, v18
-; GFX11-NEXT:    v_lshrrev_b32_e32 v163, 8, v18
-; GFX11-NEXT:    v_lshrrev_b32_e32 v133, 16, v17
-; GFX11-NEXT:    v_lshrrev_b32_e32 v132, 8, v17
-; GFX11-NEXT:    v_lshrrev_b32_e32 v176, 24, v20
-; GFX11-NEXT:    v_lshrrev_b32_e32 v179, 16, v20
-; GFX11-NEXT:    v_lshrrev_b32_e32 v167, 8, v20
-; GFX11-NEXT:    v_lshrrev_b32_e32 v146, 16, v19
-; GFX11-NEXT:    v_lshrrev_b32_e32 v135, 8, v19
-; GFX11-NEXT:    v_lshrrev_b32_e32 v182, 24, v22
-; GFX11-NEXT:    v_lshrrev_b32_e32 v40, 16, v22
-; GFX11-NEXT:    v_lshrrev_b32_e32 v183, 8, v22
-; GFX11-NEXT:    v_lshrrev_b32_e32 v151, 16, v21
-; GFX11-NEXT:    v_lshrrev_b32_e32 v149, 8, v21
-; GFX11-NEXT:    v_lshrrev_b32_e32 v44, 24, v24
-; GFX11-NEXT:    v_lshrrev_b32_e32 v45, 16, v24
-; GFX11-NEXT:    v_lshrrev_b32_e32 v43, 8, v24
-; GFX11-NEXT:    v_lshrrev_b32_e32 v161, 16, v23
-; GFX11-NEXT:    v_lshrrev_b32_e32 v160, 8, v23
-; GFX11-NEXT:    v_lshrrev_b32_e32 v46, 24, v28
-; GFX11-NEXT:    v_lshrrev_b32_e32 v56, 16, v28
-; GFX11-NEXT:    v_lshrrev_b32_e32 v47, 8, v28
-; GFX11-NEXT:    v_lshrrev_b32_e32 v166, 16, v27
-; GFX11-NEXT:    v_lshrrev_b32_e32 v165, 8, v27
-; GFX11-NEXT:    v_lshrrev_b32_e32 v58, 24, v32
-; GFX11-NEXT:    v_lshrrev_b32_e32 v59, 16, v32
-; GFX11-NEXT:    v_lshrrev_b32_e32 v57, 8, v32
-; GFX11-NEXT:    v_lshrrev_b32_e32 v178, 16, v31
-; GFX11-NEXT:    v_lshrrev_b32_e32 v177, 8, v31
-; GFX11-NEXT:    v_lshrrev_b32_e32 v60, 24, v36
-; GFX11-NEXT:    v_lshrrev_b32_e32 v62, 16, v36
-; GFX11-NEXT:    v_lshrrev_b32_e32 v61, 8, v36
-; GFX11-NEXT:    v_lshrrev_b32_e32 v181, 16, v35
-; GFX11-NEXT:    v_lshrrev_b32_e32 v180, 8, v35
-; GFX11-NEXT:    v_lshrrev_b32_e32 v63, 24, v49
-; GFX11-NEXT:    v_lshrrev_b32_e32 v72, 16, v49
-; GFX11-NEXT:    v_lshrrev_b32_e32 v73, 8, v49
-; GFX11-NEXT:    v_lshrrev_b32_e32 v41, 16, v48
-; GFX11-NEXT:    v_lshrrev_b32_e32 v42, 8, v48
-; GFX11-NEXT:    s_branch .LBB73_5
-; GFX11-NEXT:  .LBB73_3:
+; GFX11-NEXT:    s_branch .LBB73_3
+; GFX11-NEXT:  .LBB73_2:
 ; GFX11-NEXT:    ; implicit-def: $sgpr43
 ; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    s_mov_b32 s30, -1
 ; GFX11-NEXT:    ; implicit-def: $sgpr43
 ; GFX11-NEXT:    ; kill: killed $sgpr43
 ; GFX11-NEXT:    ; implicit-def: $sgpr103
-; GFX11-NEXT:    ; implicit-def: $vcc_hi
+; GFX11-NEXT:    ; implicit-def: $sgpr31
 ; GFX11-NEXT:    ; implicit-def: $sgpr42
 ; GFX11-NEXT:    ; implicit-def: $sgpr101
 ; GFX11-NEXT:    ; implicit-def: $sgpr102
@@ -113911,7 +114526,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; GFX11-NEXT:    ; implicit-def: $sgpr38
 ; GFX11-NEXT:    ; implicit-def: $sgpr39
 ; GFX11-NEXT:    ; implicit-def: $sgpr48
-; GFX11-NEXT:    ; implicit-def: $sgpr30
+; GFX11-NEXT:    ; implicit-def: $vcc_lo
 ; GFX11-NEXT:    ; implicit-def: $sgpr94
 ; GFX11-NEXT:    ; implicit-def: $sgpr92
 ; GFX11-NEXT:    ; implicit-def: $sgpr90
@@ -113996,8 +114611,127 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; GFX11-NEXT:    ; kill: killed $sgpr43
 ; GFX11-NEXT:    ; implicit-def: $sgpr43
 ; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    s_branch .LBB73_2
-; GFX11-NEXT:  .LBB73_4:
+; GFX11-NEXT:  .LBB73_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s43, s30, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s43, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s43, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB73_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
+; GFX11-NEXT:    v_add_f64 v[21:22], s[22:23], 1.0
+; GFX11-NEXT:    v_add_f64 v[11:12], s[4:5], 1.0
+; GFX11-NEXT:    v_add_f64 v[23:24], s[20:21], 1.0
+; GFX11-NEXT:    v_add_f64 v[13:14], s[12:13], 1.0
+; GFX11-NEXT:    v_add_f64 v[27:28], s[18:19], 1.0
+; GFX11-NEXT:    v_add_f64 v[15:16], s[28:29], 1.0
+; GFX11-NEXT:    v_add_f64 v[31:32], s[16:17], 1.0
+; GFX11-NEXT:    v_add_f64 v[7:8], s[8:9], 1.0
+; GFX11-NEXT:    v_add_f64 v[17:18], s[26:27], 1.0
+; GFX11-NEXT:    v_add_f64 v[35:36], s[2:3], 1.0
+; GFX11-NEXT:    v_add_f64 v[1:2], s[40:41], 1.0
+; GFX11-NEXT:    v_add_f64 v[3:4], s[14:15], 1.0
+; GFX11-NEXT:    v_add_f64 v[5:6], s[10:11], 1.0
+; GFX11-NEXT:    v_add_f64 v[9:10], s[6:7], 1.0
+; GFX11-NEXT:    v_add_f64 v[19:20], s[24:25], 1.0
+; GFX11-NEXT:    v_add_f64 v[48:49], s[0:1], 1.0
+; GFX11-NEXT:    v_lshrrev_b64 v[64:65], 24, v[21:22]
+; GFX11-NEXT:    v_lshrrev_b64 v[50:51], 24, v[11:12]
+; GFX11-NEXT:    v_lshrrev_b64 v[65:66], 24, v[23:24]
+; GFX11-NEXT:    v_lshrrev_b64 v[51:52], 24, v[13:14]
+; GFX11-NEXT:    v_lshrrev_b64 v[66:67], 24, v[27:28]
+; GFX11-NEXT:    v_lshrrev_b64 v[52:53], 24, v[15:16]
+; GFX11-NEXT:    v_lshrrev_b64 v[67:68], 24, v[31:32]
+; GFX11-NEXT:    v_lshrrev_b64 v[37:38], 24, v[7:8]
+; GFX11-NEXT:    v_lshrrev_b64 v[53:54], 24, v[17:18]
+; GFX11-NEXT:    v_lshrrev_b64 v[68:69], 24, v[35:36]
+; GFX11-NEXT:    v_lshrrev_b64 v[25:26], 24, v[1:2]
+; GFX11-NEXT:    v_lshrrev_b64 v[29:30], 24, v[3:4]
+; GFX11-NEXT:    v_lshrrev_b64 v[33:34], 24, v[5:6]
+; GFX11-NEXT:    v_lshrrev_b64 v[38:39], 24, v[9:10]
+; GFX11-NEXT:    v_lshrrev_b64 v[54:55], 24, v[19:20]
+; GFX11-NEXT:    v_lshrrev_b64 v[69:70], 24, v[48:49]
+; GFX11-NEXT:    v_lshrrev_b32_e32 v39, 24, v2
+; GFX11-NEXT:    v_lshrrev_b32_e32 v55, 16, v2
+; GFX11-NEXT:    v_lshrrev_b32_e32 v34, 8, v2
+; GFX11-NEXT:    v_lshrrev_b32_e32 v30, 16, v1
+; GFX11-NEXT:    v_lshrrev_b32_e32 v26, 8, v1
+; GFX11-NEXT:    v_lshrrev_b32_e32 v82, 24, v4
+; GFX11-NEXT:    v_lshrrev_b32_e32 v83, 16, v4
+; GFX11-NEXT:    v_lshrrev_b32_e32 v81, 8, v4
+; GFX11-NEXT:    v_lshrrev_b32_e32 v80, 16, v3
+; GFX11-NEXT:    v_lshrrev_b32_e32 v71, 8, v3
+; GFX11-NEXT:    v_lshrrev_b32_e32 v97, 24, v6
+; GFX11-NEXT:    v_lshrrev_b32_e32 v98, 16, v6
+; GFX11-NEXT:    v_lshrrev_b32_e32 v86, 8, v6
+; GFX11-NEXT:    v_lshrrev_b32_e32 v85, 16, v5
+; GFX11-NEXT:    v_lshrrev_b32_e32 v84, 8, v5
+; GFX11-NEXT:    v_lshrrev_b32_e32 v102, 24, v8
+; GFX11-NEXT:    v_lshrrev_b32_e32 v103, 16, v8
+; GFX11-NEXT:    v_lshrrev_b32_e32 v101, 8, v8
+; GFX11-NEXT:    v_lshrrev_b32_e32 v96, 16, v7
+; GFX11-NEXT:    v_lshrrev_b32_e32 v87, 8, v7
+; GFX11-NEXT:    v_lshrrev_b32_e32 v114, 24, v10
+; GFX11-NEXT:    v_lshrrev_b32_e32 v116, 16, v10
+; GFX11-NEXT:    v_lshrrev_b32_e32 v115, 8, v10
+; GFX11-NEXT:    v_lshrrev_b32_e32 v100, 16, v9
+; GFX11-NEXT:    v_lshrrev_b32_e32 v99, 8, v9
+; GFX11-NEXT:    v_lshrrev_b32_e32 v130, 24, v12
+; GFX11-NEXT:    v_lshrrev_b32_e32 v131, 16, v12
+; GFX11-NEXT:    v_lshrrev_b32_e32 v129, 8, v12
+; GFX11-NEXT:    v_lshrrev_b32_e32 v113, 16, v11
+; GFX11-NEXT:    v_lshrrev_b32_e32 v112, 8, v11
+; GFX11-NEXT:    v_lshrrev_b32_e32 v134, 24, v14
+; GFX11-NEXT:    v_lshrrev_b32_e32 v145, 16, v14
+; GFX11-NEXT:    v_lshrrev_b32_e32 v144, 8, v14
+; GFX11-NEXT:    v_lshrrev_b32_e32 v118, 16, v13
+; GFX11-NEXT:    v_lshrrev_b32_e32 v117, 8, v13
+; GFX11-NEXT:    v_lshrrev_b32_e32 v148, 24, v16
+; GFX11-NEXT:    v_lshrrev_b32_e32 v150, 16, v16
+; GFX11-NEXT:    v_lshrrev_b32_e32 v147, 8, v16
+; GFX11-NEXT:    v_lshrrev_b32_e32 v128, 16, v15
+; GFX11-NEXT:    v_lshrrev_b32_e32 v119, 8, v15
+; GFX11-NEXT:    v_lshrrev_b32_e32 v162, 24, v18
+; GFX11-NEXT:    v_lshrrev_b32_e32 v164, 16, v18
+; GFX11-NEXT:    v_lshrrev_b32_e32 v163, 8, v18
+; GFX11-NEXT:    v_lshrrev_b32_e32 v133, 16, v17
+; GFX11-NEXT:    v_lshrrev_b32_e32 v132, 8, v17
+; GFX11-NEXT:    v_lshrrev_b32_e32 v176, 24, v20
+; GFX11-NEXT:    v_lshrrev_b32_e32 v179, 16, v20
+; GFX11-NEXT:    v_lshrrev_b32_e32 v167, 8, v20
+; GFX11-NEXT:    v_lshrrev_b32_e32 v146, 16, v19
+; GFX11-NEXT:    v_lshrrev_b32_e32 v135, 8, v19
+; GFX11-NEXT:    v_lshrrev_b32_e32 v182, 24, v22
+; GFX11-NEXT:    v_lshrrev_b32_e32 v40, 16, v22
+; GFX11-NEXT:    v_lshrrev_b32_e32 v183, 8, v22
+; GFX11-NEXT:    v_lshrrev_b32_e32 v151, 16, v21
+; GFX11-NEXT:    v_lshrrev_b32_e32 v149, 8, v21
+; GFX11-NEXT:    v_lshrrev_b32_e32 v44, 24, v24
+; GFX11-NEXT:    v_lshrrev_b32_e32 v45, 16, v24
+; GFX11-NEXT:    v_lshrrev_b32_e32 v43, 8, v24
+; GFX11-NEXT:    v_lshrrev_b32_e32 v161, 16, v23
+; GFX11-NEXT:    v_lshrrev_b32_e32 v160, 8, v23
+; GFX11-NEXT:    v_lshrrev_b32_e32 v46, 24, v28
+; GFX11-NEXT:    v_lshrrev_b32_e32 v56, 16, v28
+; GFX11-NEXT:    v_lshrrev_b32_e32 v47, 8, v28
+; GFX11-NEXT:    v_lshrrev_b32_e32 v166, 16, v27
+; GFX11-NEXT:    v_lshrrev_b32_e32 v165, 8, v27
+; GFX11-NEXT:    v_lshrrev_b32_e32 v58, 24, v32
+; GFX11-NEXT:    v_lshrrev_b32_e32 v59, 16, v32
+; GFX11-NEXT:    v_lshrrev_b32_e32 v57, 8, v32
+; GFX11-NEXT:    v_lshrrev_b32_e32 v178, 16, v31
+; GFX11-NEXT:    v_lshrrev_b32_e32 v177, 8, v31
+; GFX11-NEXT:    v_lshrrev_b32_e32 v60, 24, v36
+; GFX11-NEXT:    v_lshrrev_b32_e32 v62, 16, v36
+; GFX11-NEXT:    v_lshrrev_b32_e32 v61, 8, v36
+; GFX11-NEXT:    v_lshrrev_b32_e32 v181, 16, v35
+; GFX11-NEXT:    v_lshrrev_b32_e32 v180, 8, v35
+; GFX11-NEXT:    v_lshrrev_b32_e32 v63, 24, v49
+; GFX11-NEXT:    v_lshrrev_b32_e32 v72, 16, v49
+; GFX11-NEXT:    v_lshrrev_b32_e32 v73, 8, v49
+; GFX11-NEXT:    v_lshrrev_b32_e32 v41, 16, v48
+; GFX11-NEXT:    v_lshrrev_b32_e32 v42, 8, v48
+; GFX11-NEXT:    s_branch .LBB73_6
+; GFX11-NEXT:  .LBB73_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v48, s0 :: v_dual_mov_b32 v49, s1
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 0
 ; GFX11-NEXT:    v_mov_b32_e32 v83, s36
@@ -114035,7 +114769,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; GFX11-NEXT:    v_mov_b32_e32 v115, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 7
 ; GFX11-NEXT:    v_dual_mov_b32 v35, s2 :: v_dual_mov_b32 v36, s3
-; GFX11-NEXT:    v_dual_mov_b32 v41, vcc_hi :: v_dual_mov_b32 v42, s103
+; GFX11-NEXT:    v_dual_mov_b32 v41, s31 :: v_dual_mov_b32 v42, s103
 ; GFX11-NEXT:    v_mov_b32_e32 v130, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 8
 ; GFX11-NEXT:    v_dual_mov_b32 v181, s102 :: v_dual_mov_b32 v180, s101
@@ -114084,7 +114818,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; GFX11-NEXT:    v_mov_b32_e32 v164, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 18
 ; GFX11-NEXT:    v_dual_mov_b32 v65, s58 :: v_dual_mov_b32 v64, s60
-; GFX11-NEXT:    v_dual_mov_b32 v54, s62 :: v_dual_mov_b32 v53, s30
+; GFX11-NEXT:    v_dual_mov_b32 v54, s62 :: v_dual_mov_b32 v53, vcc_lo
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_mov_b32_e32 v163, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 19
@@ -114144,7 +114878,7 @@ define inreg <128 x i8> @bitcast_v16f64_to_v128i8_scalar(<16 x double> inreg %a,
 ; GFX11-NEXT:    v_mov_b32_e32 v72, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v77, 7
 ; GFX11-NEXT:    v_mov_b32_e32 v73, s0
-; GFX11-NEXT:  .LBB73_5: ; %end
+; GFX11-NEXT:  .LBB73_6: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-NEXT:    v_perm_b32 v69, v41, v69, 0xc0c0004
 ; GFX11-NEXT:    v_perm_b32 v48, v48, v42, 0xc0c0004
@@ -120868,8 +121602,10 @@ define inreg <16 x double> @bitcast_v128i8_to_v16f64_scalar(<128 x i8> inreg %a,
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:480 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v37, off, s[0:3], s32 offset:444 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v39, off, s[0:3], s32 offset:448 ; 4-byte Folded Reload
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; SI-NEXT:    s_cbranch_vccnz .LBB75_5
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB75_5
 ; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:660 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:604 ; 4-byte Folded Reload
@@ -121866,8 +122602,10 @@ define inreg <16 x double> @bitcast_v128i8_to_v16f64_scalar(<128 x i8> inreg %a,
 ; VI-NEXT:    buffer_load_dword v52, off, s[0:3], s32 offset:596 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:600 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v54, off, s[0:3], s32 offset:604 ; 4-byte Folded Reload
-; VI-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; VI-NEXT:    s_cbranch_vccnz .LBB75_5
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB75_5
 ; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
@@ -122790,8 +123528,10 @@ define inreg <16 x double> @bitcast_v128i8_to_v16f64_scalar(<128 x i8> inreg %a,
 ; GFX9-NEXT:    buffer_load_dword v52, off, s[0:3], s32 offset:596 ; 4-byte Folded Reload
 ; GFX9-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:600 ; 4-byte Folded Reload
 ; GFX9-NEXT:    buffer_load_dword v54, off, s[0:3], s32 offset:604 ; 4-byte Folded Reload
-; GFX9-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GFX9-NEXT:    s_cbranch_vccnz .LBB75_5
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB75_5
 ; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
@@ -123286,7 +124026,7 @@ define inreg <16 x double> @bitcast_v128i8_to_v16f64_scalar(<128 x i8> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v31
 ; GFX11-TRUE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB75_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB75_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
@@ -123432,9 +124172,17 @@ define inreg <16 x double> @bitcast_v128i8_to_v16f64_scalar(<128 x i8> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v30, v31, v183
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v31, v40, v41
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB75_3
-; GFX11-TRUE16-NEXT:  .LBB75_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB75_3
+; GFX11-TRUE16-NEXT:  .LBB75_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; GFX11-TRUE16-NEXT:  .LBB75_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB75_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-TRUE16-NEXT:    s_add_i32 s0, s0, 3
@@ -123725,15 +124473,12 @@ define inreg <16 x double> @bitcast_v128i8_to_v16f64_scalar(<128 x i8> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v29, v31, v34
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v30, v36, v35
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v31, v33, v32
-; GFX11-TRUE16-NEXT:  .LBB75_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB75_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; 8-byte Folded Reload
 ; GFX11-TRUE16-NEXT:    scratch_load_b32 v41, off, s32 offset:320
 ; GFX11-TRUE16-NEXT:    scratch_load_b32 v40, off, s32 offset:324
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB75_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; GFX11-TRUE16-NEXT:    s_branch .LBB75_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v128i8_to_v16f64_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -123860,7 +124605,7 @@ define inreg <16 x double> @bitcast_v128i8_to_v16f64_scalar(<128 x i8> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v31
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB75_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB75_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
@@ -124006,9 +124751,17 @@ define inreg <16 x double> @bitcast_v128i8_to_v16f64_scalar(<128 x i8> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v30, v31, v183
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v31, v40, v41
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB75_3
-; GFX11-FAKE16-NEXT:  .LBB75_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB75_3
+; GFX11-FAKE16-NEXT:  .LBB75_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; GFX11-FAKE16-NEXT:  .LBB75_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB75_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-FAKE16-NEXT:    s_add_i32 s0, s0, 3
@@ -124299,15 +125052,12 @@ define inreg <16 x double> @bitcast_v128i8_to_v16f64_scalar(<128 x i8> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v29, v31, v34
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v30, v36, v35
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v31, v33, v32
-; GFX11-FAKE16-NEXT:  .LBB75_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB75_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; 8-byte Folded Reload
 ; GFX11-FAKE16-NEXT:    scratch_load_b32 v41, off, s32 offset:320
 ; GFX11-FAKE16-NEXT:    scratch_load_b32 v40, off, s32 offset:324
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB75_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; GFX11-FAKE16-NEXT:    s_branch .LBB75_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -125047,8 +125797,8 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_or_saveexec_b64 s[4:5], -1
-; SI-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:112 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v62, off, s[0:3], s32 offset:116 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:108 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v62, off, s[0:3], s32 offset:112 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    buffer_store_dword v40, off, s[0:3], s32 offset:52 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v41, off, s[0:3], s32 offset:48 ; 4-byte Folded Spill
@@ -125121,55 +125871,51 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; SI-NEXT:    s_cmp_lg_u32 s44, 0
 ; SI-NEXT:    v_readfirstlane_b32 s44, v0
 ; SI-NEXT:    ; implicit-def: $vgpr62 : SGPR spill to VGPR lane
-; SI-NEXT:    s_cbranch_scc0 .LBB77_3
+; SI-NEXT:    s_cbranch_scc0 .LBB77_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_and_b32 s46, s17, 0xffff0000
-; SI-NEXT:    v_writelane_b32 v62, s46, 0
-; SI-NEXT:    s_lshl_b32 s46, s17, 16
-; SI-NEXT:    v_writelane_b32 v62, s46, 1
 ; SI-NEXT:    s_and_b32 s46, s16, 0xffff0000
-; SI-NEXT:    v_writelane_b32 v62, s46, 2
+; SI-NEXT:    v_writelane_b32 v62, s46, 0
 ; SI-NEXT:    s_lshl_b32 s46, s16, 16
-; SI-NEXT:    s_and_b32 s59, s5, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s58, s5, 16
-; SI-NEXT:    s_and_b32 s57, s4, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s56, s4, 16
-; SI-NEXT:    s_and_b32 s99, s7, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s98, s7, 16
-; SI-NEXT:    s_and_b32 s97, s6, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s96, s6, 16
-; SI-NEXT:    s_and_b32 s87, s9, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s86, s9, 16
-; SI-NEXT:    s_and_b32 s85, s8, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s84, s8, 16
-; SI-NEXT:    s_and_b32 s83, s11, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s82, s11, 16
-; SI-NEXT:    s_and_b32 s81, s10, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s80, s10, 16
-; SI-NEXT:    s_and_b32 s71, s13, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s70, s13, 16
-; SI-NEXT:    s_and_b32 s69, s12, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s68, s12, 16
-; SI-NEXT:    s_and_b32 s67, s15, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s66, s15, 16
-; SI-NEXT:    s_and_b32 s65, s14, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s64, s14, 16
-; SI-NEXT:    s_and_b32 s55, s41, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s54, s41, 16
-; SI-NEXT:    s_and_b32 s53, s40, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s52, s40, 16
-; SI-NEXT:    s_and_b32 s51, s43, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s50, s43, 16
-; SI-NEXT:    s_and_b32 s49, s42, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s48, s42, 16
-; SI-NEXT:    s_and_b32 s39, s45, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s38, s45, 16
-; SI-NEXT:    s_and_b32 s37, s44, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s36, s44, 16
-; SI-NEXT:    s_and_b32 s35, s29, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s34, s29, 16
-; SI-NEXT:    s_and_b32 s31, s28, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s30, s28, 16
+; SI-NEXT:    s_and_b32 s57, s5, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s56, s5, 16
+; SI-NEXT:    s_and_b32 s99, s4, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s98, s4, 16
+; SI-NEXT:    s_and_b32 s97, s7, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s96, s7, 16
+; SI-NEXT:    s_and_b32 s87, s6, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s86, s6, 16
+; SI-NEXT:    s_and_b32 s85, s9, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s84, s9, 16
+; SI-NEXT:    s_and_b32 s83, s8, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s82, s8, 16
+; SI-NEXT:    s_and_b32 s81, s11, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s80, s11, 16
+; SI-NEXT:    s_and_b32 s71, s10, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s70, s10, 16
+; SI-NEXT:    s_and_b32 s69, s13, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s68, s13, 16
+; SI-NEXT:    s_and_b32 s67, s12, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s66, s12, 16
+; SI-NEXT:    s_and_b32 s65, s15, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s64, s15, 16
+; SI-NEXT:    s_and_b32 s55, s14, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s54, s14, 16
+; SI-NEXT:    s_and_b32 s53, s41, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s52, s41, 16
+; SI-NEXT:    s_and_b32 s51, s40, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s50, s40, 16
+; SI-NEXT:    s_and_b32 s49, s43, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s48, s43, 16
+; SI-NEXT:    s_and_b32 s39, s42, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s38, s42, 16
+; SI-NEXT:    s_and_b32 s37, s45, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s36, s45, 16
+; SI-NEXT:    s_and_b32 s35, s44, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s34, s44, 16
+; SI-NEXT:    s_and_b32 s31, s29, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s30, s29, 16
+; SI-NEXT:    s_and_b32 vcc_hi, s28, 0xffff0000
+; SI-NEXT:    s_lshl_b32 vcc_lo, s28, 16
 ; SI-NEXT:    s_and_b32 s95, s27, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s94, s27, 16
 ; SI-NEXT:    s_and_b32 s93, s26, 0xffff0000
@@ -125190,110 +125936,16 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; SI-NEXT:    s_lshl_b32 s62, s19, 16
 ; SI-NEXT:    s_and_b32 s61, s18, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s60, s18, 16
-; SI-NEXT:    v_writelane_b32 v62, s46, 3
-; SI-NEXT:    s_cbranch_execnz .LBB77_4
-; SI-NEXT:  .LBB77_2: ; %cmp.true
-; SI-NEXT:    v_add_f64 v[22:23], s[4:5], 1.0
-; SI-NEXT:    v_add_f64 v[0:1], s[22:23], 1.0
-; SI-NEXT:    v_add_f64 v[2:3], s[24:25], 1.0
-; SI-NEXT:    v_add_f64 v[14:15], s[14:15], 1.0
-; SI-NEXT:    v_add_f64 v[16:17], s[12:13], 1.0
-; SI-NEXT:    v_add_f64 v[24:25], s[6:7], 1.0
-; SI-NEXT:    v_and_b32_e32 v26, 0xffff0000, v23
-; SI-NEXT:    v_lshlrev_b32_e32 v23, 16, v23
-; SI-NEXT:    v_add_f64 v[10:11], s[42:43], 1.0
-; SI-NEXT:    v_add_f64 v[18:19], s[10:11], 1.0
-; SI-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_and_b32_e32 v23, 0xffff0000, v22
-; SI-NEXT:    v_lshlrev_b32_e32 v22, 16, v22
-; SI-NEXT:    v_and_b32_e32 v43, 0xffff0000, v17
-; SI-NEXT:    v_lshlrev_b32_e32 v42, 16, v17
-; SI-NEXT:    v_and_b32_e32 v47, 0xffff0000, v15
-; SI-NEXT:    v_lshlrev_b32_e32 v46, 16, v15
-; SI-NEXT:    v_and_b32_e32 v57, 0xffff0000, v14
-; SI-NEXT:    v_lshlrev_b32_e32 v56, 16, v14
-; SI-NEXT:    v_and_b32_e32 v17, 0xffff0000, v2
-; SI-NEXT:    v_lshlrev_b32_e32 v50, 16, v2
-; SI-NEXT:    v_and_b32_e32 v15, 0xffff0000, v1
-; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v1
-; SI-NEXT:    v_add_f64 v[1:2], s[20:21], 1.0
-; SI-NEXT:    v_add_f64 v[20:21], s[8:9], 1.0
-; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_and_b32_e32 v22, 0xffff0000, v25
-; SI-NEXT:    v_add_f64 v[4:5], s[26:27], 1.0
-; SI-NEXT:    v_add_f64 v[6:7], s[28:29], 1.0
-; SI-NEXT:    v_add_f64 v[8:9], s[44:45], 1.0
-; SI-NEXT:    v_add_f64 v[12:13], s[40:41], 1.0
-; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_and_b32_e32 v22, 0xffff0000, v24
-; SI-NEXT:    v_and_b32_e32 v55, 0xffff0000, v19
-; SI-NEXT:    v_lshlrev_b32_e32 v54, 16, v19
-; SI-NEXT:    v_and_b32_e32 v41, 0xffff0000, v18
-; SI-NEXT:    v_lshlrev_b32_e32 v40, 16, v18
-; SI-NEXT:    v_and_b32_e32 v48, 0xffff0000, v11
-; SI-NEXT:    v_lshlrev_b32_e32 v39, 16, v11
-; SI-NEXT:    v_and_b32_e32 v33, 0xffff0000, v10
-; SI-NEXT:    v_lshlrev_b32_e32 v32, 16, v10
-; SI-NEXT:    v_and_b32_e32 v19, 0xffff0000, v3
-; SI-NEXT:    v_lshlrev_b32_e32 v18, 16, v3
-; SI-NEXT:    v_and_b32_e32 v11, 0xffff0000, v2
-; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v2
-; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
-; SI-NEXT:    v_add_f64 v[37:38], s[16:17], 1.0
-; SI-NEXT:    v_lshlrev_b32_e32 v34, 16, v25
-; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshlrev_b32_e32 v22, 16, v24
-; SI-NEXT:    v_and_b32_e32 v51, 0xffff0000, v21
-; SI-NEXT:    v_lshlrev_b32_e32 v21, 16, v21
-; SI-NEXT:    buffer_store_dword v26, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v21, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
-; SI-NEXT:    v_and_b32_e32 v53, 0xffff0000, v20
-; SI-NEXT:    v_lshlrev_b32_e32 v52, 16, v20
-; SI-NEXT:    v_and_b32_e32 v45, 0xffff0000, v16
-; SI-NEXT:    v_lshlrev_b32_e32 v44, 16, v16
-; SI-NEXT:    v_and_b32_e32 v59, 0xffff0000, v13
-; SI-NEXT:    v_lshlrev_b32_e32 v58, 16, v13
-; SI-NEXT:    v_and_b32_e32 v61, 0xffff0000, v12
-; SI-NEXT:    v_lshlrev_b32_e32 v60, 16, v12
-; SI-NEXT:    v_and_b32_e32 v31, 0xffff0000, v9
-; SI-NEXT:    v_lshlrev_b32_e32 v30, 16, v9
-; SI-NEXT:    v_and_b32_e32 v29, 0xffff0000, v8
-; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v8
-; SI-NEXT:    v_and_b32_e32 v27, 0xffff0000, v7
-; SI-NEXT:    s_waitcnt expcnt(3)
-; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v7
-; SI-NEXT:    v_and_b32_e32 v25, 0xffff0000, v6
-; SI-NEXT:    v_lshlrev_b32_e32 v24, 16, v6
-; SI-NEXT:    s_waitcnt expcnt(2)
-; SI-NEXT:    v_and_b32_e32 v23, 0xffff0000, v5
-; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_lshlrev_b32_e32 v22, 16, v5
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_and_b32_e32 v21, 0xffff0000, v4
-; SI-NEXT:    v_lshlrev_b32_e32 v20, 16, v4
-; SI-NEXT:    v_and_b32_e32 v12, 0xffff0000, v0
-; SI-NEXT:    v_lshlrev_b32_e32 v36, 16, v0
-; SI-NEXT:    v_and_b32_e32 v49, 0xffff0000, v1
-; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v3
-; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v3
-; SI-NEXT:    v_and_b32_e32 v5, 0xffff0000, v2
-; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v2
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v38
-; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v38
-; SI-NEXT:    v_mov_b32_e32 v38, v34
-; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v37
-; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v37
-; SI-NEXT:    s_branch .LBB77_5
-; SI-NEXT:  .LBB77_3:
+; SI-NEXT:    s_and_b32 s59, s17, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s58, s17, 16
+; SI-NEXT:    v_writelane_b32 v62, s46, 1
+; SI-NEXT:    s_mov_b64 s[46:47], 0
+; SI-NEXT:    s_branch .LBB77_3
+; SI-NEXT:  .LBB77_2:
 ; SI-NEXT:    ; implicit-def: $sgpr46
 ; SI-NEXT:    ; kill: killed $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr59
 ; SI-NEXT:    ; implicit-def: $sgpr60
 ; SI-NEXT:    ; implicit-def: $sgpr61
 ; SI-NEXT:    ; implicit-def: $sgpr62
@@ -125314,6 +125966,8 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; SI-NEXT:    ; implicit-def: $sgpr93
 ; SI-NEXT:    ; implicit-def: $sgpr94
 ; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $vcc_hi
 ; SI-NEXT:    ; implicit-def: $sgpr30
 ; SI-NEXT:    ; implicit-def: $sgpr31
 ; SI-NEXT:    ; implicit-def: $sgpr34
@@ -125352,79 +126006,169 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; SI-NEXT:    ; implicit-def: $sgpr99
 ; SI-NEXT:    ; implicit-def: $sgpr56
 ; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; kill: killed $sgpr46
 ; SI-NEXT:    ; implicit-def: $sgpr46
 ; SI-NEXT:    ; kill: killed $sgpr46
-; SI-NEXT:    s_branch .LBB77_2
-; SI-NEXT:  .LBB77_4:
-; SI-NEXT:    v_mov_b32_e32 v0, s59
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
+; SI-NEXT:    s_mov_b64 s[46:47], -1
+; SI-NEXT:  .LBB77_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; SI-NEXT:    s_cselect_b32 s46, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s46, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB77_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_add_f64 v[22:23], s[4:5], 1.0
+; SI-NEXT:    v_add_f64 v[0:1], s[22:23], 1.0
+; SI-NEXT:    v_add_f64 v[2:3], s[24:25], 1.0
+; SI-NEXT:    v_add_f64 v[14:15], s[14:15], 1.0
+; SI-NEXT:    v_add_f64 v[16:17], s[12:13], 1.0
+; SI-NEXT:    v_add_f64 v[24:25], s[6:7], 1.0
+; SI-NEXT:    v_and_b32_e32 v34, 0xffff0000, v23
+; SI-NEXT:    v_lshlrev_b32_e32 v23, 16, v23
+; SI-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v0, s58
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
+; SI-NEXT:    v_and_b32_e32 v23, 0xffff0000, v22
+; SI-NEXT:    v_lshlrev_b32_e32 v22, 16, v22
+; SI-NEXT:    v_add_f64 v[10:11], s[42:43], 1.0
+; SI-NEXT:    v_add_f64 v[18:19], s[10:11], 1.0
+; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v0, s57
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
+; SI-NEXT:    v_and_b32_e32 v22, 0xffff0000, v25
+; SI-NEXT:    v_and_b32_e32 v43, 0xffff0000, v17
+; SI-NEXT:    v_lshlrev_b32_e32 v42, 16, v17
+; SI-NEXT:    v_and_b32_e32 v47, 0xffff0000, v15
+; SI-NEXT:    v_lshlrev_b32_e32 v46, 16, v15
+; SI-NEXT:    v_and_b32_e32 v57, 0xffff0000, v14
+; SI-NEXT:    v_lshlrev_b32_e32 v56, 16, v14
+; SI-NEXT:    v_and_b32_e32 v17, 0xffff0000, v2
+; SI-NEXT:    v_lshlrev_b32_e32 v49, 16, v2
+; SI-NEXT:    v_and_b32_e32 v15, 0xffff0000, v1
+; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v1
+; SI-NEXT:    v_add_f64 v[1:2], s[20:21], 1.0
+; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshlrev_b32_e32 v22, 16, v25
+; SI-NEXT:    v_add_f64 v[4:5], s[26:27], 1.0
+; SI-NEXT:    v_add_f64 v[12:13], s[40:41], 1.0
+; SI-NEXT:    v_add_f64 v[20:21], s[8:9], 1.0
+; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_and_b32_e32 v22, 0xffff0000, v24
+; SI-NEXT:    v_and_b32_e32 v55, 0xffff0000, v19
+; SI-NEXT:    v_lshlrev_b32_e32 v54, 16, v19
+; SI-NEXT:    v_and_b32_e32 v41, 0xffff0000, v18
+; SI-NEXT:    v_lshlrev_b32_e32 v40, 16, v18
+; SI-NEXT:    v_and_b32_e32 v38, 0xffff0000, v11
+; SI-NEXT:    v_lshlrev_b32_e32 v37, 16, v11
+; SI-NEXT:    v_and_b32_e32 v33, 0xffff0000, v10
+; SI-NEXT:    v_lshlrev_b32_e32 v32, 16, v10
+; SI-NEXT:    v_and_b32_e32 v19, 0xffff0000, v3
+; SI-NEXT:    v_lshlrev_b32_e32 v18, 16, v3
+; SI-NEXT:    v_and_b32_e32 v11, 0xffff0000, v2
+; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v2
+; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
+; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshlrev_b32_e32 v22, 16, v24
+; SI-NEXT:    v_add_f64 v[6:7], s[28:29], 1.0
+; SI-NEXT:    v_add_f64 v[8:9], s[44:45], 1.0
+; SI-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
+; SI-NEXT:    v_and_b32_e32 v51, 0xffff0000, v21
+; SI-NEXT:    v_lshlrev_b32_e32 v50, 16, v21
+; SI-NEXT:    v_and_b32_e32 v53, 0xffff0000, v20
+; SI-NEXT:    v_lshlrev_b32_e32 v52, 16, v20
+; SI-NEXT:    v_and_b32_e32 v59, 0xffff0000, v13
+; SI-NEXT:    v_lshlrev_b32_e32 v58, 16, v13
+; SI-NEXT:    s_waitcnt expcnt(1)
+; SI-NEXT:    v_and_b32_e32 v23, 0xffff0000, v5
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshlrev_b32_e32 v22, 16, v5
+; SI-NEXT:    v_and_b32_e32 v21, 0xffff0000, v4
+; SI-NEXT:    v_lshlrev_b32_e32 v20, 16, v4
+; SI-NEXT:    v_and_b32_e32 v39, 0xffff0000, v1
+; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v1
+; SI-NEXT:    v_and_b32_e32 v5, 0xffff0000, v2
+; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v2
+; SI-NEXT:    v_add_f64 v[1:2], s[16:17], 1.0
+; SI-NEXT:    v_and_b32_e32 v45, 0xffff0000, v16
+; SI-NEXT:    v_lshlrev_b32_e32 v44, 16, v16
+; SI-NEXT:    v_and_b32_e32 v61, 0xffff0000, v12
+; SI-NEXT:    v_lshlrev_b32_e32 v60, 16, v12
+; SI-NEXT:    v_and_b32_e32 v31, 0xffff0000, v9
+; SI-NEXT:    v_lshlrev_b32_e32 v30, 16, v9
+; SI-NEXT:    v_and_b32_e32 v29, 0xffff0000, v8
+; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v8
+; SI-NEXT:    v_and_b32_e32 v27, 0xffff0000, v7
+; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v7
+; SI-NEXT:    v_and_b32_e32 v25, 0xffff0000, v6
+; SI-NEXT:    v_lshlrev_b32_e32 v24, 16, v6
+; SI-NEXT:    v_and_b32_e32 v12, 0xffff0000, v0
+; SI-NEXT:    v_lshlrev_b32_e32 v36, 16, v0
+; SI-NEXT:    v_and_b32_e32 v48, 0xffff0000, v3
+; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v3
+; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v2
+; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v1
+; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v1
+; SI-NEXT:    v_mov_b32_e32 v1, v34
+; SI-NEXT:    s_branch .LBB77_6
+; SI-NEXT:  .LBB77_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s56
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v0, s99
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_mov_b32_e32 v0, s98
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v0, s97
-; SI-NEXT:    v_readlane_b32 s4, v62, 0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v0, s96
-; SI-NEXT:    v_mov_b32_e32 v2, s4
-; SI-NEXT:    v_readlane_b32 s4, v62, 1
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_mov_b32_e32 v0, s87
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v0, s86
-; SI-NEXT:    v_mov_b32_e32 v9, s4
-; SI-NEXT:    v_readlane_b32 s4, v62, 2
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
+; SI-NEXT:    v_readlane_b32 s4, v62, 0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
-; SI-NEXT:    v_readlane_b32 s4, v62, 3
-; SI-NEXT:    v_mov_b32_e32 v38, s98
-; SI-NEXT:    v_mov_b32_e32 v51, s87
-; SI-NEXT:    v_mov_b32_e32 v53, s85
-; SI-NEXT:    v_mov_b32_e32 v52, s84
-; SI-NEXT:    v_mov_b32_e32 v55, s83
-; SI-NEXT:    v_mov_b32_e32 v54, s82
-; SI-NEXT:    v_mov_b32_e32 v41, s81
-; SI-NEXT:    v_mov_b32_e32 v40, s80
-; SI-NEXT:    v_mov_b32_e32 v43, s71
-; SI-NEXT:    v_mov_b32_e32 v42, s70
-; SI-NEXT:    v_mov_b32_e32 v45, s69
-; SI-NEXT:    v_mov_b32_e32 v44, s68
-; SI-NEXT:    v_mov_b32_e32 v47, s67
-; SI-NEXT:    v_mov_b32_e32 v46, s66
-; SI-NEXT:    v_mov_b32_e32 v57, s65
-; SI-NEXT:    v_mov_b32_e32 v56, s64
-; SI-NEXT:    v_mov_b32_e32 v59, s55
-; SI-NEXT:    v_mov_b32_e32 v58, s54
-; SI-NEXT:    v_mov_b32_e32 v61, s53
-; SI-NEXT:    v_mov_b32_e32 v60, s52
-; SI-NEXT:    v_mov_b32_e32 v48, s51
-; SI-NEXT:    v_mov_b32_e32 v39, s50
-; SI-NEXT:    v_mov_b32_e32 v33, s49
-; SI-NEXT:    v_mov_b32_e32 v32, s48
-; SI-NEXT:    v_mov_b32_e32 v31, s39
-; SI-NEXT:    v_mov_b32_e32 v30, s38
-; SI-NEXT:    v_mov_b32_e32 v29, s37
-; SI-NEXT:    v_mov_b32_e32 v28, s36
-; SI-NEXT:    v_mov_b32_e32 v27, s35
-; SI-NEXT:    v_mov_b32_e32 v26, s34
-; SI-NEXT:    v_mov_b32_e32 v25, s31
-; SI-NEXT:    v_mov_b32_e32 v24, s30
+; SI-NEXT:    v_readlane_b32 s4, v62, 1
+; SI-NEXT:    v_mov_b32_e32 v1, s57
+; SI-NEXT:    v_mov_b32_e32 v51, s85
+; SI-NEXT:    v_mov_b32_e32 v50, s84
+; SI-NEXT:    v_mov_b32_e32 v53, s83
+; SI-NEXT:    v_mov_b32_e32 v52, s82
+; SI-NEXT:    v_mov_b32_e32 v55, s81
+; SI-NEXT:    v_mov_b32_e32 v54, s80
+; SI-NEXT:    v_mov_b32_e32 v41, s71
+; SI-NEXT:    v_mov_b32_e32 v40, s70
+; SI-NEXT:    v_mov_b32_e32 v43, s69
+; SI-NEXT:    v_mov_b32_e32 v42, s68
+; SI-NEXT:    v_mov_b32_e32 v45, s67
+; SI-NEXT:    v_mov_b32_e32 v44, s66
+; SI-NEXT:    v_mov_b32_e32 v47, s65
+; SI-NEXT:    v_mov_b32_e32 v46, s64
+; SI-NEXT:    v_mov_b32_e32 v57, s55
+; SI-NEXT:    v_mov_b32_e32 v56, s54
+; SI-NEXT:    v_mov_b32_e32 v59, s53
+; SI-NEXT:    v_mov_b32_e32 v58, s52
+; SI-NEXT:    v_mov_b32_e32 v61, s51
+; SI-NEXT:    v_mov_b32_e32 v60, s50
+; SI-NEXT:    v_mov_b32_e32 v38, s49
+; SI-NEXT:    v_mov_b32_e32 v37, s48
+; SI-NEXT:    v_mov_b32_e32 v33, s39
+; SI-NEXT:    v_mov_b32_e32 v32, s38
+; SI-NEXT:    v_mov_b32_e32 v31, s37
+; SI-NEXT:    v_mov_b32_e32 v30, s36
+; SI-NEXT:    v_mov_b32_e32 v29, s35
+; SI-NEXT:    v_mov_b32_e32 v28, s34
+; SI-NEXT:    v_mov_b32_e32 v27, s31
+; SI-NEXT:    v_mov_b32_e32 v26, s30
+; SI-NEXT:    v_mov_b32_e32 v25, vcc_hi
+; SI-NEXT:    v_mov_b32_e32 v24, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v23, s95
 ; SI-NEXT:    v_mov_b32_e32 v22, s94
 ; SI-NEXT:    v_mov_b32_e32 v21, s93
@@ -125432,53 +126176,51 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; SI-NEXT:    v_mov_b32_e32 v19, s91
 ; SI-NEXT:    v_mov_b32_e32 v18, s90
 ; SI-NEXT:    v_mov_b32_e32 v17, s89
-; SI-NEXT:    v_mov_b32_e32 v50, s88
+; SI-NEXT:    v_mov_b32_e32 v49, s88
 ; SI-NEXT:    v_mov_b32_e32 v15, s79
 ; SI-NEXT:    v_mov_b32_e32 v14, s78
 ; SI-NEXT:    v_mov_b32_e32 v12, s77
 ; SI-NEXT:    v_mov_b32_e32 v36, s76
 ; SI-NEXT:    v_mov_b32_e32 v11, s75
 ; SI-NEXT:    v_mov_b32_e32 v10, s74
-; SI-NEXT:    v_mov_b32_e32 v49, s73
+; SI-NEXT:    v_mov_b32_e32 v39, s73
 ; SI-NEXT:    v_mov_b32_e32 v13, s72
-; SI-NEXT:    v_mov_b32_e32 v1, s63
+; SI-NEXT:    v_mov_b32_e32 v48, s63
 ; SI-NEXT:    v_mov_b32_e32 v6, s62
 ; SI-NEXT:    v_mov_b32_e32 v5, s61
 ; SI-NEXT:    v_mov_b32_e32 v4, s60
-; SI-NEXT:    v_mov_b32_e32 v3, s4
-; SI-NEXT:  .LBB77_5: ; %end
+; SI-NEXT:    v_mov_b32_e32 v3, s59
+; SI-NEXT:    v_mov_b32_e32 v2, s58
+; SI-NEXT:    v_mov_b32_e32 v9, s4
+; SI-NEXT:  .LBB77_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v35, 16, v0
-; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v2
-; SI-NEXT:    v_mul_f32_e32 v34, 1.0, v3
+; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v0
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v0
-; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
-; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v6
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:88 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v49
+; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v48
+; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v0
+; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v39
+; SI-NEXT:    v_mul_f32_e32 v7, 1.0, v4
+; SI-NEXT:    v_mul_f32_e32 v4, 1.0, v6
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v0
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v11
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
-; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v10
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:96 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:100 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(1)
+; SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v0
+; SI-NEXT:    v_mul_f32_e32 v10, 1.0, v10
+; SI-NEXT:    buffer_store_dword v10, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v11, off, s[0:3], s32 offset:96 ; 4-byte Folded Spill
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v12
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
-; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v36
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:104 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:108 ; 4-byte Folded Spill
+; SI-NEXT:    v_mul_f32_e32 v34, 1.0, v9
 ; SI-NEXT:    s_waitcnt expcnt(1)
+; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v0
+; SI-NEXT:    v_mul_f32_e32 v9, 1.0, v36
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v15
+; SI-NEXT:    buffer_store_dword v9, off, s[0:3], s32 offset:100 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v10, off, s[0:3], s32 offset:104 ; 4-byte Folded Spill
 ; SI-NEXT:    v_lshrrev_b32_e32 v16, 16, v0
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v17
+; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v0
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v19
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v0
@@ -125496,14 +126238,17 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v31
 ; SI-NEXT:    v_lshrrev_b32_e32 v31, 16, v0
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v33
+; SI-NEXT:    buffer_store_dword v4, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v5, off, s[0:3], s32 offset:88 ; 4-byte Folded Spill
 ; SI-NEXT:    v_mul_f32_e32 v11, 1.0, v18
 ; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v0
-; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v48
+; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v38
+; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mul_f32_e32 v5, 1.0, v13
 ; SI-NEXT:    v_mul_f32_e32 v13, 1.0, v20
 ; SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v0
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v61
-; SI-NEXT:    v_lshrrev_b32_e32 v37, 16, v0
+; SI-NEXT:    v_lshrrev_b32_e32 v61, 16, v0
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v59
 ; SI-NEXT:    v_lshrrev_b32_e32 v59, 16, v0
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v57
@@ -125522,23 +126267,22 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; SI-NEXT:    v_lshrrev_b32_e32 v53, 16, v0
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v51
 ; SI-NEXT:    v_lshrrev_b32_e32 v51, 16, v0
-; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:84 ; 4-byte Folded Reload
-; SI-NEXT:    v_mul_f32_e32 v2, 1.0, v9
-; SI-NEXT:    v_mul_f32_e32 v9, 1.0, v50
-; SI-NEXT:    v_mul_f32_e32 v7, 1.0, v4
+; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
+; SI-NEXT:    v_mul_f32_e32 v9, 1.0, v49
+; SI-NEXT:    v_mul_f32_e32 v2, 1.0, v2
 ; SI-NEXT:    v_lshr_b64 v[33:34], v[34:35], 16
 ; SI-NEXT:    v_lshr_b64 v[34:35], v[2:3], 16
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[7:8], 16
-; SI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:88 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:92 ; 4-byte Folded Reload
-; SI-NEXT:    v_mul_f32_e32 v19, 1.0, v39
-; SI-NEXT:    v_mul_f32_e32 v36, 1.0, v60
+; SI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:84 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:88 ; 4-byte Folded Reload
+; SI-NEXT:    v_mul_f32_e32 v19, 1.0, v37
 ; SI-NEXT:    v_mul_f32_e32 v22, 1.0, v22
 ; SI-NEXT:    v_mul_f32_e32 v24, 1.0, v24
 ; SI-NEXT:    v_mul_f32_e32 v26, 1.0, v26
 ; SI-NEXT:    v_mul_f32_e32 v28, 1.0, v28
 ; SI-NEXT:    v_mul_f32_e32 v30, 1.0, v30
 ; SI-NEXT:    v_mul_f32_e32 v17, 1.0, v32
+; SI-NEXT:    v_mul_f32_e32 v60, 1.0, v60
 ; SI-NEXT:    v_mul_f32_e32 v58, 1.0, v58
 ; SI-NEXT:    v_mul_f32_e32 v56, 1.0, v56
 ; SI-NEXT:    v_mul_f32_e32 v46, 1.0, v46
@@ -125547,7 +126291,7 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; SI-NEXT:    v_mul_f32_e32 v40, 1.0, v40
 ; SI-NEXT:    v_mul_f32_e32 v54, 1.0, v54
 ; SI-NEXT:    v_mul_f32_e32 v52, 1.0, v52
-; SI-NEXT:    v_mul_f32_e32 v38, 1.0, v38
+; SI-NEXT:    v_mul_f32_e32 v50, 1.0, v50
 ; SI-NEXT:    v_readlane_b32 s30, v63, 34
 ; SI-NEXT:    v_readlane_b32 s31, v63, 35
 ; SI-NEXT:    v_readlane_b32 s99, v63, 33
@@ -125585,25 +126329,26 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; SI-NEXT:    v_readlane_b32 s35, v63, 1
 ; SI-NEXT:    v_readlane_b32 s34, v63, 0
 ; SI-NEXT:    s_waitcnt vmcnt(2)
-; SI-NEXT:    v_mul_f32_e32 v50, 1.0, v0
-; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(1)
-; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
-; SI-NEXT:    v_lshr_b64 v[4:5], v[5:6], 16
-; SI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:96 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:100 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(2)
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v49, 16, v0
 ; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:76 ; 4-byte Folded Reload
 ; SI-NEXT:    s_waitcnt vmcnt(1)
-; SI-NEXT:    v_lshr_b64 v[5:6], v[5:6], 16
-; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:104 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:108 ; 4-byte Folded Reload
+; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
+; SI-NEXT:    v_lshr_b64 v[4:5], v[5:6], 16
+; SI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:92 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:96 ; 4-byte Folded Reload
 ; SI-NEXT:    s_waitcnt vmcnt(2)
 ; SI-NEXT:    v_mul_f32_e32 v48, 1.0, v0
 ; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:72 ; 4-byte Folded Reload
 ; SI-NEXT:    s_waitcnt vmcnt(1)
+; SI-NEXT:    v_lshr_b64 v[5:6], v[5:6], 16
+; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:100 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:104 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(2)
+; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
+; SI-NEXT:    v_lshrrev_b32_e32 v39, 16, v0
+; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[6:7], 16
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[15:16], 16
 ; SI-NEXT:    v_lshr_b64 v[8:9], v[9:10], 16
@@ -125616,30 +126361,13 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[30:31], 16
 ; SI-NEXT:    v_lshr_b64 v[16:17], v[17:18], 16
 ; SI-NEXT:    v_lshr_b64 v[17:18], v[19:20], 16
-; SI-NEXT:    v_lshr_b64 v[18:19], v[36:37], 16
+; SI-NEXT:    v_lshr_b64 v[18:19], v[60:61], 16
 ; SI-NEXT:    v_lshr_b64 v[19:20], v[58:59], 16
 ; SI-NEXT:    v_lshr_b64 v[20:21], v[56:57], 16
 ; SI-NEXT:    v_lshr_b64 v[21:22], v[46:47], 16
 ; SI-NEXT:    v_lshr_b64 v[22:23], v[44:45], 16
 ; SI-NEXT:    v_lshr_b64 v[23:24], v[42:43], 16
 ; SI-NEXT:    v_lshr_b64 v[24:25], v[40:41], 16
-; SI-NEXT:    v_lshr_b64 v[25:26], v[54:55], 16
-; SI-NEXT:    v_lshr_b64 v[26:27], v[52:53], 16
-; SI-NEXT:    v_lshr_b64 v[27:28], v[50:51], 16
-; SI-NEXT:    v_lshr_b64 v[28:29], v[48:49], 16
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
-; SI-NEXT:    v_lshrrev_b32_e32 v39, 16, v0
-; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload
-; SI-NEXT:    v_lshr_b64 v[29:30], v[38:39], 16
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
-; SI-NEXT:    v_lshrrev_b32_e32 v61, 16, v0
-; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_mul_f32_e32 v60, 1.0, v0
-; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:60 ; 4-byte Folded Reload
-; SI-NEXT:    v_lshr_b64 v[30:31], v[60:61], 16
 ; SI-NEXT:    buffer_load_dword v61, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v60, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v59, off, s[0:3], s32 offset:8 ; 4-byte Folded Reload
@@ -125654,19 +126382,32 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:44 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:48 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:52 ; 4-byte Folded Reload
+; SI-NEXT:    v_lshr_b64 v[25:26], v[54:55], 16
+; SI-NEXT:    v_lshr_b64 v[26:27], v[52:53], 16
+; SI-NEXT:    v_lshr_b64 v[27:28], v[50:51], 16
+; SI-NEXT:    v_lshr_b64 v[28:29], v[48:49], 16
 ; SI-NEXT:    s_waitcnt vmcnt(14)
+; SI-NEXT:    v_mul_f32_e32 v38, 1.0, v0
+; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload
+; SI-NEXT:    v_lshr_b64 v[29:30], v[38:39], 16
+; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
-; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v37, 16, v0
+; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:60 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_mul_f32_e32 v36, 1.0, v0
+; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:56 ; 4-byte Folded Reload
+; SI-NEXT:    v_lshr_b64 v[30:31], v[36:37], 16
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
 ; SI-NEXT:    v_lshr_b64 v[31:32], v[0:1], 16
 ; SI-NEXT:    v_mov_b32_e32 v0, v33
 ; SI-NEXT:    v_mov_b32_e32 v1, v34
 ; SI-NEXT:    s_or_saveexec_b64 s[4:5], -1
-; SI-NEXT:    buffer_load_dword v63, off, s[0:3], s32 offset:112 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v62, off, s[0:3], s32 offset:116 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v63, off, s[0:3], s32 offset:108 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v62, off, s[0:3], s32 offset:112 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
@@ -125707,10 +126448,18 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB77_3
+; VI-NEXT:    s_cbranch_scc0 .LBB77_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB77_4
-; VI-NEXT:  .LBB77_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB77_3
+; VI-NEXT:  .LBB77_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB77_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB77_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -125727,10 +126476,8 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; VI-NEXT:    v_add_f64 v[20:21], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[18:19], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[16:17], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB77_5
-; VI-NEXT:  .LBB77_3:
-; VI-NEXT:    s_branch .LBB77_2
-; VI-NEXT:  .LBB77_4:
+; VI-NEXT:    s_branch .LBB77_6
+; VI-NEXT:  .LBB77_5:
 ; VI-NEXT:    v_mov_b32_e32 v16, s36
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v17, s37
@@ -125763,7 +126510,7 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB77_5: ; %end
+; VI-NEXT:  .LBB77_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 8
 ; VI-NEXT:    v_readlane_b32 s31, v32, 9
 ; VI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -125816,10 +126563,18 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB77_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB77_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB77_4
-; GFX9-NEXT:  .LBB77_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB77_3
+; GFX9-NEXT:  .LBB77_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB77_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB77_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -125836,10 +126591,8 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB77_5
-; GFX9-NEXT:  .LBB77_3:
-; GFX9-NEXT:    s_branch .LBB77_2
-; GFX9-NEXT:  .LBB77_4:
+; GFX9-NEXT:    s_branch .LBB77_6
+; GFX9-NEXT:  .LBB77_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s37
@@ -125872,7 +126625,7 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB77_5: ; %end
+; GFX9-NEXT:  .LBB77_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s31, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -125926,11 +126679,16 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; GFX11-NEXT:    s_mov_b32 s13, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB77_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB77_4
-; GFX11-NEXT:  .LBB77_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB77_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB77_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB77_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[14:15], s[26:27], 1.0
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
@@ -125948,8 +126706,6 @@ define inreg <64 x bfloat> @bitcast_v16f64_to_v64bf16_scalar(<16 x double> inreg
 ; GFX11-NEXT:    v_add_f64 v[18:19], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[16:17], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB77_5
-; GFX11-NEXT:  .LBB77_3:
-; GFX11-NEXT:    s_branch .LBB77_2
 ; GFX11-NEXT:  .LBB77_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s36 :: v_dual_mov_b32 v17, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
@@ -129497,7 +130253,9 @@ define inreg <16 x double> @bitcast_v64bf16_to_v16f64_scalar(<64 x bfloat> inreg
 ; SI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:144 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:148 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v57, off, s[0:3], s32 offset:152 ; 4-byte Folded Reload
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_mov_b32_e32 v33, v56
 ; SI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:156 ; 4-byte Folded Reload
@@ -129514,7 +130272,7 @@ define inreg <16 x double> @bitcast_v64bf16_to_v16f64_scalar(<64 x bfloat> inreg
 ; SI-NEXT:    v_mov_b32_e32 v40, v56
 ; SI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:180 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v57, off, s[0:3], s32 offset:184 ; 4-byte Folded Reload
-; SI-NEXT:    s_cbranch_vccnz .LBB79_5
+; SI-NEXT:    s_cbranch_scc1 .LBB79_5
 ; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:328 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:332 ; 4-byte Folded Reload
@@ -129884,10 +130642,18 @@ define inreg <16 x double> @bitcast_v64bf16_to_v16f64_scalar(<64 x bfloat> inreg
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB79_3
+; VI-NEXT:    s_cbranch_scc0 .LBB79_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB79_4
-; VI-NEXT:  .LBB79_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB79_3
+; VI-NEXT:  .LBB79_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB79_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB79_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v32, 0x40c00000
 ; VI-NEXT:    s_lshl_b32 s4, s50, 16
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v32
@@ -130480,10 +131246,8 @@ define inreg <16 x double> @bitcast_v64bf16_to_v16f64_scalar(<64 x bfloat> inreg
 ; VI-NEXT:    v_cndmask_b32_e32 v31, v32, v34, vcc
 ; VI-NEXT:    v_lshrrev_b32_e32 v32, 16, v33
 ; VI-NEXT:    v_lshrrev_b64 v[31:32], 16, v[31:32]
-; VI-NEXT:    s_branch .LBB79_5
-; VI-NEXT:  .LBB79_3:
-; VI-NEXT:    s_branch .LBB79_2
-; VI-NEXT:  .LBB79_4:
+; VI-NEXT:    s_branch .LBB79_6
+; VI-NEXT:  .LBB79_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -130516,7 +131280,7 @@ define inreg <16 x double> @bitcast_v64bf16_to_v16f64_scalar(<64 x bfloat> inreg
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB79_5: ; %end
+; VI-NEXT:  .LBB79_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v35, 15
 ; VI-NEXT:    v_readlane_b32 s66, v35, 14
 ; VI-NEXT:    v_readlane_b32 s65, v35, 13
@@ -130595,10 +131359,18 @@ define inreg <16 x double> @bitcast_v64bf16_to_v16f64_scalar(<64 x bfloat> inreg
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB79_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB79_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB79_4
-; GFX9-NEXT:  .LBB79_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB79_3
+; GFX9-NEXT:  .LBB79_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB79_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB79_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s51, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v16, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v16
@@ -131209,10 +131981,8 @@ define inreg <16 x double> @bitcast_v64bf16_to_v16f64_scalar(<64 x bfloat> inreg
 ; GFX9-NEXT:    v_and_b32_sdwa v16, v32, v16 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v32, 16, v33
 ; GFX9-NEXT:    v_lshl_or_b32 v16, v32, 16, v16
-; GFX9-NEXT:    s_branch .LBB79_5
-; GFX9-NEXT:  .LBB79_3:
-; GFX9-NEXT:    s_branch .LBB79_2
-; GFX9-NEXT:  .LBB79_4:
+; GFX9-NEXT:    s_branch .LBB79_6
+; GFX9-NEXT:  .LBB79_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -131245,7 +132015,7 @@ define inreg <16 x double> @bitcast_v64bf16_to_v16f64_scalar(<64 x bfloat> inreg
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB79_5: ; %end
+; GFX9-NEXT:  .LBB79_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v36, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v36, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v36, 13
@@ -131325,11 +132095,16 @@ define inreg <16 x double> @bitcast_v64bf16_to_v16f64_scalar(<64 x bfloat> inreg
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s37, s1
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB79_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB79_4
-; GFX11-TRUE16-NEXT:  .LBB79_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB79_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:  .LBB79_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB79_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s0, s51, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s51, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -131952,8 +132727,6 @@ define inreg <16 x double> @bitcast_v64bf16_to_v16f64_scalar(<64 x bfloat> inreg
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v16, 16, v34
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v16.h, v33.l
 ; GFX11-TRUE16-NEXT:    s_branch .LBB79_5
-; GFX11-TRUE16-NEXT:  .LBB79_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB79_2
 ; GFX11-TRUE16-NEXT:  .LBB79_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -132051,11 +132824,16 @@ define inreg <16 x double> @bitcast_v64bf16_to_v16f64_scalar(<64 x bfloat> inreg
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s37, s1
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB79_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB79_4
-; GFX11-FAKE16-NEXT:  .LBB79_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB79_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:  .LBB79_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB79_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_and_b32 s1, s51, 0xffff0000
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s51, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s1
@@ -132709,8 +133487,6 @@ define inreg <16 x double> @bitcast_v64bf16_to_v16f64_scalar(<64 x bfloat> inreg
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v18, v32, 16, v37
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v16, v36, 16, v33
 ; GFX11-FAKE16-NEXT:    s_branch .LBB79_5
-; GFX11-FAKE16-NEXT:  .LBB79_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB79_2
 ; GFX11-FAKE16-NEXT:  .LBB79_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -133231,7 +134007,7 @@ define inreg <64 x half> @bitcast_v16f64_to_v64f16_scalar(<16 x double> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB81_3
+; SI-NEXT:    s_cbranch_scc0 .LBB81_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s69, s45, 16
 ; SI-NEXT:    s_lshr_b32 s68, s43, 16
@@ -133262,11 +134038,51 @@ define inreg <64 x half> @bitcast_v16f64_to_v64f16_scalar(<16 x double> inreg %a
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[22:23], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[20:21], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB81_4
-; SI-NEXT:  .LBB81_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 vcc, s[20:21], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[18:19], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
+; SI-NEXT:    s_mov_b64 s[36:37], 0
+; SI-NEXT:    s_branch .LBB81_3
+; SI-NEXT:  .LBB81_2:
+; SI-NEXT:    s_mov_b64 s[36:37], -1
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr65
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:  .LBB81_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; SI-NEXT:    s_cselect_b32 s47, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s47, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB81_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[28:29], s[42:43], 1.0
 ; SI-NEXT:    v_add_f64 v[26:27], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[30:31], s[44:45], 1.0
@@ -133319,42 +134135,8 @@ define inreg <64 x half> @bitcast_v16f64_to_v64f16_scalar(<16 x double> inreg %a
 ; SI-NEXT:    v_lshrrev_b32_e32 v43, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v44, 16, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v41, 16, v31
-; SI-NEXT:    s_branch .LBB81_5
-; SI-NEXT:  .LBB81_3:
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr67
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr69
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    s_branch .LBB81_2
-; SI-NEXT:  .LBB81_4:
+; SI-NEXT:    s_branch .LBB81_6
+; SI-NEXT:  .LBB81_5:
 ; SI-NEXT:    v_mov_b32_e32 v32, s68
 ; SI-NEXT:    buffer_store_dword v32, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
@@ -133406,9 +134188,9 @@ define inreg <64 x half> @bitcast_v16f64_to_v64f16_scalar(<16 x double> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v42, s48
 ; SI-NEXT:    v_mov_b32_e32 v43, s39
 ; SI-NEXT:    v_mov_b32_e32 v44, s38
-; SI-NEXT:    v_mov_b32_e32 v40, s36
-; SI-NEXT:    v_mov_b32_e32 v39, s34
-; SI-NEXT:    v_mov_b32_e32 v54, s30
+; SI-NEXT:    v_mov_b32_e32 v40, s34
+; SI-NEXT:    v_mov_b32_e32 v39, s30
+; SI-NEXT:    v_mov_b32_e32 v54, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v53, s94
 ; SI-NEXT:    v_mov_b32_e32 v52, s92
 ; SI-NEXT:    v_mov_b32_e32 v51, s90
@@ -133423,7 +134205,7 @@ define inreg <64 x half> @bitcast_v16f64_to_v64f16_scalar(<16 x double> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v33, s60
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v32, s46
-; SI-NEXT:  .LBB81_5: ; %end
+; SI-NEXT:  .LBB81_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v39, 16, v39
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v39
@@ -133603,10 +134385,18 @@ define inreg <64 x half> @bitcast_v16f64_to_v64f16_scalar(<16 x double> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB81_3
+; VI-NEXT:    s_cbranch_scc0 .LBB81_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB81_4
-; VI-NEXT:  .LBB81_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB81_3
+; VI-NEXT:  .LBB81_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB81_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB81_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -133623,10 +134413,8 @@ define inreg <64 x half> @bitcast_v16f64_to_v64f16_scalar(<16 x double> inreg %a
 ; VI-NEXT:    v_add_f64 v[20:21], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[18:19], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[16:17], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB81_5
-; VI-NEXT:  .LBB81_3:
-; VI-NEXT:    s_branch .LBB81_2
-; VI-NEXT:  .LBB81_4:
+; VI-NEXT:    s_branch .LBB81_6
+; VI-NEXT:  .LBB81_5:
 ; VI-NEXT:    v_mov_b32_e32 v16, s36
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v17, s37
@@ -133659,7 +134447,7 @@ define inreg <64 x half> @bitcast_v16f64_to_v64f16_scalar(<16 x double> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB81_5: ; %end
+; VI-NEXT:  .LBB81_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 8
 ; VI-NEXT:    v_readlane_b32 s31, v32, 9
 ; VI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -133712,10 +134500,18 @@ define inreg <64 x half> @bitcast_v16f64_to_v64f16_scalar(<16 x double> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB81_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB81_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB81_4
-; GFX9-NEXT:  .LBB81_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB81_3
+; GFX9-NEXT:  .LBB81_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB81_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB81_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -133732,10 +134528,8 @@ define inreg <64 x half> @bitcast_v16f64_to_v64f16_scalar(<16 x double> inreg %a
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB81_5
-; GFX9-NEXT:  .LBB81_3:
-; GFX9-NEXT:    s_branch .LBB81_2
-; GFX9-NEXT:  .LBB81_4:
+; GFX9-NEXT:    s_branch .LBB81_6
+; GFX9-NEXT:  .LBB81_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s37
@@ -133768,7 +134562,7 @@ define inreg <64 x half> @bitcast_v16f64_to_v64f16_scalar(<16 x double> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB81_5: ; %end
+; GFX9-NEXT:  .LBB81_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s31, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -133822,11 +134616,16 @@ define inreg <64 x half> @bitcast_v16f64_to_v64f16_scalar(<16 x double> inreg %a
 ; GFX11-NEXT:    s_mov_b32 s13, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB81_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB81_4
-; GFX11-NEXT:  .LBB81_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB81_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB81_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB81_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[14:15], s[26:27], 1.0
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
@@ -133844,8 +134643,6 @@ define inreg <64 x half> @bitcast_v16f64_to_v64f16_scalar(<16 x double> inreg %a
 ; GFX11-NEXT:    v_add_f64 v[18:19], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[16:17], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB81_5
-; GFX11-NEXT:  .LBB81_3:
-; GFX11-NEXT:    s_branch .LBB81_2
 ; GFX11-NEXT:  .LBB81_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s36 :: v_dual_mov_b32 v17, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
@@ -134899,10 +135696,7 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_writelane_b32 v34, s30, 34
 ; SI-NEXT:    v_writelane_b32 v34, s31, 35
 ; SI-NEXT:    v_readfirstlane_b32 s6, v17
-; SI-NEXT:    s_lshr_b32 vcc_lo, s6, 16
 ; SI-NEXT:    v_readfirstlane_b32 s8, v16
-; SI-NEXT:    ; implicit-def: $vgpr35 : SGPR spill to VGPR lane
-; SI-NEXT:    s_lshr_b32 vcc_hi, s8, 16
 ; SI-NEXT:    v_readfirstlane_b32 s10, v15
 ; SI-NEXT:    v_readfirstlane_b32 s12, v14
 ; SI-NEXT:    v_readfirstlane_b32 s14, v13
@@ -134914,29 +135708,29 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s90, v7
 ; SI-NEXT:    v_readfirstlane_b32 s92, v6
 ; SI-NEXT:    v_readfirstlane_b32 s94, v5
-; SI-NEXT:    v_readfirstlane_b32 s30, v4
-; SI-NEXT:    v_readfirstlane_b32 s34, v3
-; SI-NEXT:    v_readfirstlane_b32 s68, v2
-; SI-NEXT:    v_readfirstlane_b32 s80, v1
-; SI-NEXT:    v_readfirstlane_b32 s83, v0
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v35, vcc_lo, 0
-; SI-NEXT:    s_lshr_b32 s69, s29, 16
-; SI-NEXT:    s_lshr_b32 s71, s28, 16
-; SI-NEXT:    s_lshr_b32 s82, s27, 16
-; SI-NEXT:    s_lshr_b32 s85, s26, 16
-; SI-NEXT:    s_lshr_b32 s86, s25, 16
-; SI-NEXT:    s_lshr_b32 s87, s24, 16
-; SI-NEXT:    s_lshr_b32 s96, s23, 16
-; SI-NEXT:    s_lshr_b32 s97, s22, 16
-; SI-NEXT:    s_lshr_b32 s98, s21, 16
-; SI-NEXT:    s_lshr_b32 s99, s20, 16
-; SI-NEXT:    s_lshr_b32 s7, s19, 16
-; SI-NEXT:    s_lshr_b32 s9, s18, 16
-; SI-NEXT:    s_lshr_b32 s11, s17, 16
-; SI-NEXT:    s_lshr_b32 s13, s16, 16
-; SI-NEXT:    s_lshr_b32 s65, s10, 16
-; SI-NEXT:    s_lshr_b32 s64, s12, 16
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v4
+; SI-NEXT:    v_readfirstlane_b32 s30, v3
+; SI-NEXT:    v_readfirstlane_b32 s34, v2
+; SI-NEXT:    v_readfirstlane_b32 s70, v1
+; SI-NEXT:    v_readfirstlane_b32 s81, v0
+; SI-NEXT:    s_lshr_b32 s35, s29, 16
+; SI-NEXT:    s_lshr_b32 s69, s28, 16
+; SI-NEXT:    s_lshr_b32 s80, s27, 16
+; SI-NEXT:    s_lshr_b32 s83, s26, 16
+; SI-NEXT:    s_lshr_b32 s84, s25, 16
+; SI-NEXT:    s_lshr_b32 s85, s24, 16
+; SI-NEXT:    s_lshr_b32 s86, s23, 16
+; SI-NEXT:    s_lshr_b32 s87, s22, 16
+; SI-NEXT:    s_lshr_b32 s96, s21, 16
+; SI-NEXT:    s_lshr_b32 s97, s20, 16
+; SI-NEXT:    s_lshr_b32 s98, s19, 16
+; SI-NEXT:    s_lshr_b32 s99, s18, 16
+; SI-NEXT:    s_lshr_b32 s7, s17, 16
+; SI-NEXT:    s_lshr_b32 s9, s16, 16
+; SI-NEXT:    s_lshr_b32 s67, s6, 16
+; SI-NEXT:    s_lshr_b32 s66, s8, 16
+; SI-NEXT:    s_lshr_b32 s11, s10, 16
+; SI-NEXT:    s_lshr_b32 s13, s12, 16
 ; SI-NEXT:    s_lshr_b32 s15, s14, 16
 ; SI-NEXT:    s_lshr_b32 s73, s72, 16
 ; SI-NEXT:    s_lshr_b32 s75, s74, 16
@@ -134946,74 +135740,75 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    s_lshr_b32 s91, s90, 16
 ; SI-NEXT:    s_lshr_b32 s93, s92, 16
 ; SI-NEXT:    s_lshr_b32 s95, s94, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, vcc_lo, 16
 ; SI-NEXT:    s_lshr_b32 s31, s30, 16
-; SI-NEXT:    s_lshr_b32 s35, s34, 16
-; SI-NEXT:    s_lshr_b32 s70, s68, 16
-; SI-NEXT:    s_lshr_b32 s81, s80, 16
-; SI-NEXT:    s_lshr_b32 s84, s83, 16
+; SI-NEXT:    s_lshr_b32 s68, s34, 16
+; SI-NEXT:    s_lshr_b32 s71, s70, 16
+; SI-NEXT:    s_lshr_b32 s82, s81, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v35, vcc_hi, 1
+; SI-NEXT:    ; implicit-def: $vgpr35 : SGPR spill to VGPR lane
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_writelane_b32 v35, s65, 2
-; SI-NEXT:    v_writelane_b32 v35, s64, 3
-; SI-NEXT:    s_cbranch_scc0 .LBB83_3
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v35, s67, 0
+; SI-NEXT:    v_writelane_b32 v35, s66, 1
+; SI-NEXT:    s_cbranch_scc0 .LBB83_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s13, 16
+; SI-NEXT:    s_lshl_b32 s5, s9, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s9, 16
+; SI-NEXT:    s_lshl_b32 s5, s99, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s7, 16
+; SI-NEXT:    s_lshl_b32 s5, s98, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s11, 16
+; SI-NEXT:    s_lshl_b32 s41, s7, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s48, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_and_b32 s4, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
-; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s34, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
-; SI-NEXT:    s_or_b32 s53, s4, s5
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s30, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_or_b32 s53, s4, s5
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s54, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -135043,22 +135838,31 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s12, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s64, 16
+; SI-NEXT:    s_lshl_b32 s5, s13, 16
 ; SI-NEXT:    s_or_b32 s64, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s10, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s65, 16
+; SI-NEXT:    s_lshl_b32 s5, s11, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s8, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
+; SI-NEXT:    s_lshl_b32 s5, s66, 16
 ; SI-NEXT:    s_or_b32 s66, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
+; SI-NEXT:    s_lshl_b32 s5, s67, 16
 ; SI-NEXT:    s_or_b32 s67, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB83_4
-; SI-NEXT:  .LBB83_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s13
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB83_3
+; SI-NEXT:  .LBB83_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB83_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB83_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s9
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s11
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s7
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -135070,7 +135874,7 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s18
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s9
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s99
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -135078,11 +135882,11 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s7
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, s98
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v4, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s19
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s99
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s97
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -135093,7 +135897,7 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s20
 ; SI-NEXT:    v_or_b32_e32 v3, v4, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s98
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s96
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
@@ -135102,11 +135906,11 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s97
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s87
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s22
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s96
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s86
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
@@ -135117,7 +135921,7 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s23
 ; SI-NEXT:    v_or_b32_e32 v6, v7, v6
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s87
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s85
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s24
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
@@ -135126,11 +135930,11 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s86
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s84
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_or_b32_e32 v8, v10, v8
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s25
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s85
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, s83
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
@@ -135141,7 +135945,7 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s26
 ; SI-NEXT:    v_or_b32_e32 v9, v10, v9
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v11
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, s80
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s27
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
@@ -135150,11 +135954,11 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
 ; SI-NEXT:    v_cvt_f16_f32_e32 v13, v13
 ; SI-NEXT:    v_or_b32_e32 v10, v12, v10
-; SI-NEXT:    v_cvt_f32_f16_e32 v12, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v12, s69
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
 ; SI-NEXT:    v_or_b32_e32 v11, v13, v11
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s28
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s35
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
@@ -135165,8 +135969,8 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v15, s29
 ; SI-NEXT:    v_or_b32_e32 v12, v13, v12
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v14
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s84
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s83
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s81
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
@@ -135174,11 +135978,11 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
 ; SI-NEXT:    v_or_b32_e32 v13, v15, v13
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s71
 ; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
 ; SI-NEXT:    v_or_b32_e32 v14, v16, v14
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s80
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, s68
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
@@ -135186,11 +135990,11 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v17, v17
 ; SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
-; SI-NEXT:    v_cvt_f32_f16_e32 v18, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v18, s34
 ; SI-NEXT:    v_or_b32_e32 v15, v16, v15
 ; SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v17
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s35
-; SI-NEXT:    v_cvt_f32_f16_e32 v19, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v19, s30
 ; SI-NEXT:    v_add_f32_e32 v18, 0x38000000, v18
 ; SI-NEXT:    v_cvt_f16_f32_e32 v18, v18
 ; SI-NEXT:    v_add_f32_e32 v17, 0x38000000, v17
@@ -135198,10 +136002,10 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v19, 0x38000000, v19
 ; SI-NEXT:    v_cvt_f16_f32_e32 v19, v19
 ; SI-NEXT:    v_or_b32_e32 v16, v18, v16
-; SI-NEXT:    v_cvt_f32_f16_e32 v18, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v18, vcc_hi
 ; SI-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
 ; SI-NEXT:    v_or_b32_e32 v17, v19, v17
-; SI-NEXT:    v_cvt_f32_f16_e32 v19, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v19, vcc_lo
 ; SI-NEXT:    v_cvt_f32_f16_e32 v20, s95
 ; SI-NEXT:    v_add_f32_e32 v18, 0x38000000, v18
 ; SI-NEXT:    v_cvt_f16_f32_e32 v18, v18
@@ -135272,10 +136076,9 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_or_b32_e32 v25, v27, v25
 ; SI-NEXT:    v_cvt_f32_f16_e32 v27, s15
 ; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v26
-; SI-NEXT:    v_readlane_b32 s4, v35, 3
 ; SI-NEXT:    v_or_b32_e32 v26, v28, v26
 ; SI-NEXT:    v_cvt_f32_f16_e32 v28, s14
-; SI-NEXT:    v_cvt_f32_f16_e32 v29, s4
+; SI-NEXT:    v_cvt_f32_f16_e32 v29, s13
 ; SI-NEXT:    v_add_f32_e32 v27, 0x38000000, v27
 ; SI-NEXT:    v_cvt_f16_f32_e32 v27, v27
 ; SI-NEXT:    v_add_f32_e32 v28, 0x38000000, v28
@@ -135283,11 +136086,10 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_cvt_f16_f32_e32 v28, v28
 ; SI-NEXT:    v_cvt_f16_f32_e32 v29, v29
 ; SI-NEXT:    v_lshlrev_b32_e32 v27, 16, v27
-; SI-NEXT:    v_readlane_b32 s4, v35, 2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v30, s12
 ; SI-NEXT:    v_or_b32_e32 v27, v28, v27
 ; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v29
-; SI-NEXT:    v_cvt_f32_f16_e32 v29, s4
+; SI-NEXT:    v_cvt_f32_f16_e32 v29, s11
 ; SI-NEXT:    v_cvt_f32_f16_e32 v31, s10
 ; SI-NEXT:    v_add_f32_e32 v30, 0x38000000, v30
 ; SI-NEXT:    v_cvt_f16_f32_e32 v30, v30
@@ -135316,11 +136118,8 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_or_b32_e32 v30, v31, v30
 ; SI-NEXT:    v_lshlrev_b32_e32 v31, 16, v32
 ; SI-NEXT:    v_or_b32_e32 v31, v33, v31
-; SI-NEXT:    s_branch .LBB83_5
-; SI-NEXT:  .LBB83_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB83_2
-; SI-NEXT:  .LBB83_4:
+; SI-NEXT:    s_branch .LBB83_6
+; SI-NEXT:  .LBB83_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -135353,7 +136152,7 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB83_5: ; %end
+; SI-NEXT:  .LBB83_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s30, v34, 34
 ; SI-NEXT:    v_readlane_b32 s31, v34, 35
 ; SI-NEXT:    v_readlane_b32 s99, v34, 33
@@ -135453,10 +136252,18 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB83_3
+; VI-NEXT:    s_cbranch_scc0 .LBB83_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB83_4
-; VI-NEXT:  .LBB83_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB83_3
+; VI-NEXT:  .LBB83_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB83_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB83_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s51, 16
 ; VI-NEXT:    v_mov_b32_e32 v16, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
@@ -135618,10 +136425,8 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; VI-NEXT:    v_add_f16_sdwa v32, v32, v16 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v16, s52, v16
 ; VI-NEXT:    v_or_b32_e32 v16, v16, v32
-; VI-NEXT:    s_branch .LBB83_5
-; VI-NEXT:  .LBB83_3:
-; VI-NEXT:    s_branch .LBB83_2
-; VI-NEXT:  .LBB83_4:
+; VI-NEXT:    s_branch .LBB83_6
+; VI-NEXT:  .LBB83_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -135654,7 +136459,7 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB83_5: ; %end
+; VI-NEXT:  .LBB83_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v33, 15
 ; VI-NEXT:    v_readlane_b32 s66, v33, 14
 ; VI-NEXT:    v_readlane_b32 s65, v33, 13
@@ -135733,10 +136538,18 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB83_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB83_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB83_4
-; GFX9-NEXT:  .LBB83_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB83_3
+; GFX9-NEXT:  .LBB83_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB83_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB83_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v16, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v15, s51, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v14, s50, v16 op_sel_hi:[1,0]
@@ -135770,10 +136583,8 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; GFX9-NEXT:    v_pk_add_f16 v18, s54, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v17, s53, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v16, s52, v16 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB83_5
-; GFX9-NEXT:  .LBB83_3:
-; GFX9-NEXT:    s_branch .LBB83_2
-; GFX9-NEXT:  .LBB83_4:
+; GFX9-NEXT:    s_branch .LBB83_6
+; GFX9-NEXT:  .LBB83_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -135806,7 +136617,7 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB83_5: ; %end
+; GFX9-NEXT:  .LBB83_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v32, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v32, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
@@ -135886,11 +136697,16 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB83_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB83_4
-; GFX11-NEXT:  .LBB83_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB83_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB83_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB83_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v15, 0x200, s51 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v14, 0x200, s50 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s49 op_sel_hi:[0,1]
@@ -135924,8 +136740,6 @@ define inreg <16 x double> @bitcast_v64f16_to_v16f64_scalar(<64 x half> inreg %a
 ; GFX11-NEXT:    v_pk_add_f16 v17, 0x200, s53 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v16, 0x200, s52 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_branch .LBB83_5
-; GFX11-NEXT:  .LBB83_3:
-; GFX11-NEXT:    s_branch .LBB83_2
 ; GFX11-NEXT:  .LBB83_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -136446,7 +137260,7 @@ define inreg <64 x i16> @bitcast_v16f64_to_v64i16_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB85_3
+; SI-NEXT:    s_cbranch_scc0 .LBB85_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s69, s45, 16
 ; SI-NEXT:    s_lshr_b32 s68, s43, 16
@@ -136477,11 +137291,51 @@ define inreg <64 x i16> @bitcast_v16f64_to_v64i16_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[22:23], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[20:21], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB85_4
-; SI-NEXT:  .LBB85_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 vcc, s[20:21], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[18:19], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
+; SI-NEXT:    s_mov_b64 s[36:37], 0
+; SI-NEXT:    s_branch .LBB85_3
+; SI-NEXT:  .LBB85_2:
+; SI-NEXT:    s_mov_b64 s[36:37], -1
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr65
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:  .LBB85_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; SI-NEXT:    s_cselect_b32 s47, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s47, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB85_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[28:29], s[42:43], 1.0
 ; SI-NEXT:    v_add_f64 v[26:27], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[30:31], s[44:45], 1.0
@@ -136534,42 +137388,8 @@ define inreg <64 x i16> @bitcast_v16f64_to_v64i16_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v43, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v44, 16, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v41, 16, v31
-; SI-NEXT:    s_branch .LBB85_5
-; SI-NEXT:  .LBB85_3:
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr67
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr69
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    s_branch .LBB85_2
-; SI-NEXT:  .LBB85_4:
+; SI-NEXT:    s_branch .LBB85_6
+; SI-NEXT:  .LBB85_5:
 ; SI-NEXT:    v_mov_b32_e32 v32, s68
 ; SI-NEXT:    buffer_store_dword v32, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
@@ -136621,9 +137441,9 @@ define inreg <64 x i16> @bitcast_v16f64_to_v64i16_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v42, s48
 ; SI-NEXT:    v_mov_b32_e32 v43, s39
 ; SI-NEXT:    v_mov_b32_e32 v44, s38
-; SI-NEXT:    v_mov_b32_e32 v40, s36
-; SI-NEXT:    v_mov_b32_e32 v39, s34
-; SI-NEXT:    v_mov_b32_e32 v54, s30
+; SI-NEXT:    v_mov_b32_e32 v40, s34
+; SI-NEXT:    v_mov_b32_e32 v39, s30
+; SI-NEXT:    v_mov_b32_e32 v54, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v53, s94
 ; SI-NEXT:    v_mov_b32_e32 v52, s92
 ; SI-NEXT:    v_mov_b32_e32 v51, s90
@@ -136638,7 +137458,7 @@ define inreg <64 x i16> @bitcast_v16f64_to_v64i16_scalar(<16 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v33, s60
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v32, s46
-; SI-NEXT:  .LBB85_5: ; %end
+; SI-NEXT:  .LBB85_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v39, 16, v39
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v39
@@ -136818,10 +137638,18 @@ define inreg <64 x i16> @bitcast_v16f64_to_v64i16_scalar(<16 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB85_3
+; VI-NEXT:    s_cbranch_scc0 .LBB85_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB85_4
-; VI-NEXT:  .LBB85_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB85_3
+; VI-NEXT:  .LBB85_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB85_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB85_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -136838,10 +137666,8 @@ define inreg <64 x i16> @bitcast_v16f64_to_v64i16_scalar(<16 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[20:21], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[18:19], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[16:17], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB85_5
-; VI-NEXT:  .LBB85_3:
-; VI-NEXT:    s_branch .LBB85_2
-; VI-NEXT:  .LBB85_4:
+; VI-NEXT:    s_branch .LBB85_6
+; VI-NEXT:  .LBB85_5:
 ; VI-NEXT:    v_mov_b32_e32 v16, s36
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v17, s37
@@ -136874,7 +137700,7 @@ define inreg <64 x i16> @bitcast_v16f64_to_v64i16_scalar(<16 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB85_5: ; %end
+; VI-NEXT:  .LBB85_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 8
 ; VI-NEXT:    v_readlane_b32 s31, v32, 9
 ; VI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -136927,10 +137753,18 @@ define inreg <64 x i16> @bitcast_v16f64_to_v64i16_scalar(<16 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB85_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB85_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB85_4
-; GFX9-NEXT:  .LBB85_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB85_3
+; GFX9-NEXT:  .LBB85_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB85_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB85_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -136947,10 +137781,8 @@ define inreg <64 x i16> @bitcast_v16f64_to_v64i16_scalar(<16 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB85_5
-; GFX9-NEXT:  .LBB85_3:
-; GFX9-NEXT:    s_branch .LBB85_2
-; GFX9-NEXT:  .LBB85_4:
+; GFX9-NEXT:    s_branch .LBB85_6
+; GFX9-NEXT:  .LBB85_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s37
@@ -136983,7 +137815,7 @@ define inreg <64 x i16> @bitcast_v16f64_to_v64i16_scalar(<16 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB85_5: ; %end
+; GFX9-NEXT:  .LBB85_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s31, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -137037,11 +137869,16 @@ define inreg <64 x i16> @bitcast_v16f64_to_v64i16_scalar(<16 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s13, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB85_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB85_4
-; GFX11-NEXT:  .LBB85_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB85_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB85_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB85_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[14:15], s[26:27], 1.0
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
@@ -137059,8 +137896,6 @@ define inreg <64 x i16> @bitcast_v16f64_to_v64i16_scalar(<16 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[18:19], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[16:17], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB85_5
-; GFX11-NEXT:  .LBB85_3:
-; GFX11-NEXT:    s_branch .LBB85_2
 ; GFX11-NEXT:  .LBB85_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s36 :: v_dual_mov_b32 v17, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
@@ -137943,13 +138778,10 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v32, s99, 33
 ; SI-NEXT:    v_writelane_b32 v32, s30, 34
 ; SI-NEXT:    v_writelane_b32 v32, s31, 35
-; SI-NEXT:    v_readfirstlane_b32 s9, v16
-; SI-NEXT:    s_lshr_b32 s14, s9, 16
-; SI-NEXT:    v_readfirstlane_b32 s13, v14
-; SI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; SI-NEXT:    v_readfirstlane_b32 s7, v17
+; SI-NEXT:    v_readfirstlane_b32 s9, v16
 ; SI-NEXT:    v_readfirstlane_b32 s11, v15
-; SI-NEXT:    s_lshr_b32 s72, s13, 16
+; SI-NEXT:    v_readfirstlane_b32 s13, v14
 ; SI-NEXT:    v_readfirstlane_b32 s15, v13
 ; SI-NEXT:    v_readfirstlane_b32 s73, v12
 ; SI-NEXT:    v_readfirstlane_b32 s75, v11
@@ -137958,30 +138790,30 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s89, v8
 ; SI-NEXT:    v_readfirstlane_b32 s91, v7
 ; SI-NEXT:    v_readfirstlane_b32 s94, v6
-; SI-NEXT:    v_readfirstlane_b32 s31, v5
-; SI-NEXT:    v_readfirstlane_b32 s68, v4
-; SI-NEXT:    v_readfirstlane_b32 s80, v3
-; SI-NEXT:    v_readfirstlane_b32 s83, v2
-; SI-NEXT:    v_readfirstlane_b32 s86, v1
-; SI-NEXT:    v_readfirstlane_b32 s97, v0
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v33, s14, 0
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v5
+; SI-NEXT:    v_readfirstlane_b32 s34, v4
+; SI-NEXT:    v_readfirstlane_b32 s70, v3
+; SI-NEXT:    v_readfirstlane_b32 s81, v2
+; SI-NEXT:    v_readfirstlane_b32 s84, v1
+; SI-NEXT:    v_readfirstlane_b32 s87, v0
 ; SI-NEXT:    s_lshr_b32 s92, s29, 16
 ; SI-NEXT:    s_lshr_b32 s95, s28, 16
-; SI-NEXT:    s_lshr_b32 s34, s27, 16
-; SI-NEXT:    s_lshr_b32 s69, s26, 16
-; SI-NEXT:    s_lshr_b32 s71, s25, 16
-; SI-NEXT:    s_lshr_b32 s81, s24, 16
-; SI-NEXT:    s_lshr_b32 s84, s23, 16
-; SI-NEXT:    s_lshr_b32 s87, s22, 16
-; SI-NEXT:    s_lshr_b32 s98, s21, 16
-; SI-NEXT:    s_lshr_b32 s99, s20, 16
-; SI-NEXT:    s_lshr_b32 s6, s19, 16
-; SI-NEXT:    s_lshr_b32 s8, s18, 16
-; SI-NEXT:    s_lshr_b32 s10, s17, 16
-; SI-NEXT:    s_lshr_b32 s12, s16, 16
-; SI-NEXT:    s_lshr_b32 vcc_lo, s7, 16
-; SI-NEXT:    s_lshr_b32 vcc_hi, s11, 16
+; SI-NEXT:    s_lshr_b32 s30, s27, 16
+; SI-NEXT:    s_lshr_b32 s35, s26, 16
+; SI-NEXT:    s_lshr_b32 s69, s25, 16
+; SI-NEXT:    s_lshr_b32 s71, s24, 16
+; SI-NEXT:    s_lshr_b32 s82, s23, 16
+; SI-NEXT:    s_lshr_b32 s85, s22, 16
+; SI-NEXT:    s_lshr_b32 s96, s21, 16
+; SI-NEXT:    s_lshr_b32 s97, s20, 16
+; SI-NEXT:    s_lshr_b32 s98, s19, 16
+; SI-NEXT:    s_lshr_b32 s99, s18, 16
+; SI-NEXT:    s_lshr_b32 s6, s17, 16
+; SI-NEXT:    s_lshr_b32 s8, s16, 16
+; SI-NEXT:    s_lshr_b32 s67, s7, 16
+; SI-NEXT:    s_lshr_b32 s10, s9, 16
+; SI-NEXT:    s_lshr_b32 s12, s11, 16
+; SI-NEXT:    s_lshr_b32 s14, s13, 16
 ; SI-NEXT:    s_lshr_b32 s63, s15, 16
 ; SI-NEXT:    s_lshr_b32 s62, s73, 16
 ; SI-NEXT:    s_lshr_b32 s61, s75, 16
@@ -137990,54 +138822,55 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s88, s89, 16
 ; SI-NEXT:    s_lshr_b32 s90, s91, 16
 ; SI-NEXT:    s_lshr_b32 s93, s94, 16
-; SI-NEXT:    s_lshr_b32 s30, s31, 16
-; SI-NEXT:    s_lshr_b32 s35, s68, 16
-; SI-NEXT:    s_lshr_b32 s70, s80, 16
-; SI-NEXT:    s_lshr_b32 s82, s83, 16
-; SI-NEXT:    s_lshr_b32 s85, s86, 16
-; SI-NEXT:    s_lshr_b32 s96, s97, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, vcc_hi, 16
+; SI-NEXT:    s_lshr_b32 s31, s34, 16
+; SI-NEXT:    s_lshr_b32 s68, s70, 16
+; SI-NEXT:    s_lshr_b32 s80, s81, 16
+; SI-NEXT:    s_lshr_b32 s83, s84, 16
+; SI-NEXT:    s_lshr_b32 s86, s87, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v33, s72, 1
+; SI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_writelane_b32 v33, s63, 2
-; SI-NEXT:    v_writelane_b32 v33, s62, 3
-; SI-NEXT:    s_cbranch_scc0 .LBB87_4
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v33, s14, 0
+; SI-NEXT:    v_writelane_b32 v33, s63, 1
+; SI-NEXT:    s_cbranch_scc0 .LBB87_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s12, 16
+; SI-NEXT:    s_lshl_b32 s5, s8, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s8, 16
+; SI-NEXT:    s_lshl_b32 s5, s99, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s6, 16
+; SI-NEXT:    s_lshl_b32 s5, s98, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s10, 16
+; SI-NEXT:    s_lshl_b32 s41, s6, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -138045,23 +138878,23 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s92, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s97, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_and_b32 s4, s87, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s86, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_and_b32 s4, s84, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_and_b32 s4, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s34, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s54, s4, s5
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s55, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -138077,92 +138910,109 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    s_or_b32 s59, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s77, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s60, 16
-; SI-NEXT:    s_mov_b32 s76, s60
+; SI-NEXT:    s_mov_b32 s74, s60
 ; SI-NEXT:    s_or_b32 s60, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s75, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s61, 16
-; SI-NEXT:    s_mov_b32 s74, s61
+; SI-NEXT:    s_mov_b32 s76, s61
 ; SI-NEXT:    s_or_b32 s61, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s73, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s62, 16
+; SI-NEXT:    s_mov_b32 s72, s62
 ; SI-NEXT:    s_or_b32 s62, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s15, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s72, 16
+; SI-NEXT:    s_lshl_b32 s5, s14, 16
 ; SI-NEXT:    s_or_b32 s64, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
+; SI-NEXT:    s_lshl_b32 s5, s12, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s14, 16
+; SI-NEXT:    s_lshl_b32 s5, s10, 16
 ; SI-NEXT:    s_or_b32 s66, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
-; SI-NEXT:    s_mov_b32 s72, vcc_hi
-; SI-NEXT:    s_mov_b32 s14, vcc_lo
+; SI-NEXT:    s_lshl_b32 s5, s67, 16
+; SI-NEXT:    s_mov_b32 s14, s12
+; SI-NEXT:    s_mov_b32 s12, s10
+; SI-NEXT:    s_mov_b32 s10, s67
 ; SI-NEXT:    s_or_b32 s67, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB87_3
-; SI-NEXT:  .LBB87_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB87_3
+; SI-NEXT:  .LBB87_2:
+; SI-NEXT:    s_mov_b32 s74, s60
+; SI-NEXT:    s_mov_b32 s76, s61
+; SI-NEXT:    s_mov_b32 s72, s62
+; SI-NEXT:    s_mov_b32 s14, s12
+; SI-NEXT:    s_mov_b32 s12, s10
+; SI-NEXT:    s_mov_b32 s10, s67
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB87_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB87_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s12, 16
+; SI-NEXT:    s_lshl_b32 s5, s8, 16
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s10, s10, 16
-; SI-NEXT:    s_or_b32 s5, s10, s5
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_add_i32 s37, s5, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s8, 16
+; SI-NEXT:    s_lshl_b32 s5, s99, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s6, 16
+; SI-NEXT:    s_lshl_b32 s5, s98, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s46, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s28, s28, 3
 ; SI-NEXT:    s_add_i32 s47, s4, 0x30000
@@ -138174,35 +139024,35 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s92, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s97, s97, 3
+; SI-NEXT:    s_add_i32 s87, s87, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s97, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_and_b32 s4, s87, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s86, s86, 3
+; SI-NEXT:    s_add_i32 s84, s84, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s86, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_and_b32 s4, s84, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s83, s83, 3
+; SI-NEXT:    s_add_i32 s81, s81, 3
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_and_b32 s4, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s80, s80, 3
+; SI-NEXT:    s_add_i32 s70, s70, 3
 ; SI-NEXT:    s_add_i32 s52, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s68, s68, 3
+; SI-NEXT:    s_add_i32 s34, s34, 3
 ; SI-NEXT:    s_add_i32 s53, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s34, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s31, s31, 3
+; SI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; SI-NEXT:    s_add_i32 s54, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s94, s94, 3
 ; SI-NEXT:    s_add_i32 s55, s4, 0x30000
@@ -138227,27 +139077,26 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    s_add_i32 s77, s77, 3
 ; SI-NEXT:    s_add_i32 s59, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s77, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s76, 16
+; SI-NEXT:    s_lshl_b32 s5, s74, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s75, s75, 3
 ; SI-NEXT:    s_add_i32 s60, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s75, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s74, 16
+; SI-NEXT:    s_lshl_b32 s5, s76, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s73, s73, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 3
 ; SI-NEXT:    s_add_i32 s61, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s73, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s5, 16
+; SI-NEXT:    s_lshl_b32 s5, s72, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s15, s15, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 2
+; SI-NEXT:    v_readlane_b32 s5, v33, 1
 ; SI-NEXT:    s_add_i32 s62, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s15, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s13, s13, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 1
+; SI-NEXT:    v_readlane_b32 s5, v33, 0
 ; SI-NEXT:    s_add_i32 s63, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s13, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
@@ -138255,21 +139104,20 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    s_add_i32 s11, s11, 3
 ; SI-NEXT:    s_add_i32 s64, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s72, 16
+; SI-NEXT:    s_lshl_b32 s5, s14, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s9, s9, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 0
 ; SI-NEXT:    s_add_i32 s65, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s5, 16
+; SI-NEXT:    s_lshl_b32 s5, s12, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s66, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s14, 16
+; SI-NEXT:    s_lshl_b32 s5, s10, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s67, s4, 0x30000
-; SI-NEXT:  .LBB87_3: ; %end
+; SI-NEXT:  .LBB87_5: ; %end
 ; SI-NEXT:    v_readlane_b32 s30, v32, 34
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
@@ -138344,13 +139192,6 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB87_4:
-; SI-NEXT:    s_mov_b32 s76, s60
-; SI-NEXT:    s_mov_b32 s74, s61
-; SI-NEXT:    s_mov_b32 s72, vcc_hi
-; SI-NEXT:    s_mov_b32 s14, vcc_lo
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB87_2
 ;
 ; VI-LABEL: bitcast_v64i16_to_v16f64_scalar:
 ; VI:       ; %bb.0:
@@ -138375,10 +139216,18 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB87_4
+; VI-NEXT:    s_cbranch_scc0 .LBB87_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB87_3
-; VI-NEXT:  .LBB87_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB87_3
+; VI-NEXT:  .LBB87_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB87_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB87_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s46, 3
 ; VI-NEXT:    s_and_b32 s4, s46, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -138539,7 +139388,7 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
-; VI-NEXT:  .LBB87_3: ; %end
+; VI-NEXT:  .LBB87_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -138573,8 +139422,6 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v30, s7
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB87_4:
-; VI-NEXT:    s_branch .LBB87_2
 ;
 ; GFX9-LABEL: bitcast_v64i16_to_v16f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -138632,10 +139479,18 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB87_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB87_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB87_4
-; GFX9-NEXT:  .LBB87_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB87_3
+; GFX9-NEXT:  .LBB87_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB87_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB87_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v15, s51, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v14, s50, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v13, s49, 3 op_sel_hi:[1,0]
@@ -138668,10 +139523,8 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v18, s54, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v16, s52, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB87_5
-; GFX9-NEXT:  .LBB87_3:
-; GFX9-NEXT:    s_branch .LBB87_2
-; GFX9-NEXT:  .LBB87_4:
+; GFX9-NEXT:    s_branch .LBB87_6
+; GFX9-NEXT:  .LBB87_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -138704,7 +139557,7 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB87_5: ; %end
+; GFX9-NEXT:  .LBB87_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s67, v32, 15
 ; GFX9-NEXT:    v_readlane_b32 s66, v32, 14
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
@@ -138784,11 +139637,16 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB87_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB87_4
-; GFX11-NEXT:  .LBB87_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB87_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB87_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB87_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v15, s51, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v14, s50, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v13, s49, 3 op_sel_hi:[1,0]
@@ -138822,8 +139680,6 @@ define inreg <16 x double> @bitcast_v64i16_to_v16f64_scalar(<64 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v16, s52, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_branch .LBB87_5
-; GFX11-NEXT:  .LBB87_3:
-; GFX11-NEXT:    s_branch .LBB87_2
 ; GFX11-NEXT:  .LBB87_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -145255,663 +146111,757 @@ define inreg <64 x bfloat> @bitcast_v128i8_to_v64bf16_scalar(<128 x i8> inreg %a
 ; SI-NEXT:    v_writelane_b32 v47, s25, 4
 ; SI-NEXT:    v_writelane_b32 v47, s24, 5
 ; SI-NEXT:    v_writelane_b32 v47, s23, 6
-; SI-NEXT:    v_writelane_b32 v47, s22, 7
-; SI-NEXT:    v_writelane_b32 v47, s21, 8
-; SI-NEXT:    v_writelane_b32 v47, s20, 9
-; SI-NEXT:    v_writelane_b32 v47, s19, 10
-; SI-NEXT:    v_writelane_b32 v47, s18, 11
-; SI-NEXT:    v_writelane_b32 v47, s17, 12
-; SI-NEXT:    v_writelane_b32 v47, s4, 13
+; SI-NEXT:    v_writelane_b32 v47, s4, 7
 ; SI-NEXT:    v_readfirstlane_b32 s4, v29
-; SI-NEXT:    v_writelane_b32 v47, s4, 14
+; SI-NEXT:    v_writelane_b32 v47, s4, 8
 ; SI-NEXT:    v_readfirstlane_b32 s4, v28
-; SI-NEXT:    v_writelane_b32 v47, s4, 15
+; SI-NEXT:    v_writelane_b32 v47, s4, 9
 ; SI-NEXT:    v_readfirstlane_b32 s4, v27
-; SI-NEXT:    v_writelane_b32 v47, s4, 16
+; SI-NEXT:    v_writelane_b32 v47, s4, 10
 ; SI-NEXT:    v_readfirstlane_b32 s4, v26
-; SI-NEXT:    v_writelane_b32 v47, s4, 17
+; SI-NEXT:    v_writelane_b32 v47, s4, 11
 ; SI-NEXT:    v_readfirstlane_b32 s4, v25
-; SI-NEXT:    v_writelane_b32 v47, s4, 18
+; SI-NEXT:    v_writelane_b32 v47, s4, 12
 ; SI-NEXT:    v_readfirstlane_b32 s4, v24
-; SI-NEXT:    v_writelane_b32 v47, s4, 19
+; SI-NEXT:    v_writelane_b32 v47, s4, 13
 ; SI-NEXT:    v_readfirstlane_b32 s4, v23
-; SI-NEXT:    v_writelane_b32 v47, s4, 20
+; SI-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:332
+; SI-NEXT:    v_writelane_b32 v47, s4, 14
 ; SI-NEXT:    v_readfirstlane_b32 s4, v22
-; SI-NEXT:    v_writelane_b32 v47, s4, 21
+; SI-NEXT:    v_writelane_b32 v47, s4, 15
 ; SI-NEXT:    v_readfirstlane_b32 s4, v21
-; SI-NEXT:    v_writelane_b32 v47, s4, 22
-; SI-NEXT:    v_readfirstlane_b32 s4, v20
-; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:332
-; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:324
+; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:328
 ; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 offset:320
-; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:316
-; SI-NEXT:    v_writelane_b32 v47, s4, 23
+; SI-NEXT:    buffer_load_dword v25, off, s[0:3], s32 offset:316
+; SI-NEXT:    v_writelane_b32 v47, s4, 16
+; SI-NEXT:    v_readfirstlane_b32 s4, v20
+; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:324
+; SI-NEXT:    v_writelane_b32 v47, s4, 17
 ; SI-NEXT:    v_readfirstlane_b32 s4, v19
-; SI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:328
-; SI-NEXT:    v_writelane_b32 v47, s4, 24
+; SI-NEXT:    v_writelane_b32 v47, s4, 18
 ; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v47, s4, 25
+; SI-NEXT:    v_writelane_b32 v47, s4, 19
 ; SI-NEXT:    v_readfirstlane_b32 s4, v17
-; SI-NEXT:    v_writelane_b32 v47, s4, 26
+; SI-NEXT:    v_writelane_b32 v47, s4, 20
 ; SI-NEXT:    v_readfirstlane_b32 s4, v16
-; SI-NEXT:    v_writelane_b32 v47, s4, 27
+; SI-NEXT:    v_writelane_b32 v47, s4, 21
 ; SI-NEXT:    v_readfirstlane_b32 s4, v15
-; SI-NEXT:    v_writelane_b32 v47, s4, 28
+; SI-NEXT:    v_writelane_b32 v47, s4, 22
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
-; SI-NEXT:    s_mov_b32 s7, s16
-; SI-NEXT:    v_writelane_b32 v47, s4, 29
-; SI-NEXT:    v_readfirstlane_b32 s18, v13
-; SI-NEXT:    v_readfirstlane_b32 s16, v12
+; SI-NEXT:    v_writelane_b32 v47, s4, 23
+; SI-NEXT:    v_readfirstlane_b32 s4, v13
+; SI-NEXT:    v_writelane_b32 v47, s4, 24
+; SI-NEXT:    v_readfirstlane_b32 s4, v12
+; SI-NEXT:    v_writelane_b32 v47, s4, 25
+; SI-NEXT:    s_mov_b32 s7, s17
+; SI-NEXT:    v_readfirstlane_b32 s17, v10
+; SI-NEXT:    v_readfirstlane_b32 s9, v9
 ; SI-NEXT:    v_readfirstlane_b32 s70, v0
-; SI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:244
+; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:244
 ; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:240
-; SI-NEXT:    v_readfirstlane_b32 s23, v8
-; SI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:288
-; SI-NEXT:    v_readfirstlane_b32 s19, v7
-; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:284
-; SI-NEXT:    v_readfirstlane_b32 s25, v6
+; SI-NEXT:    v_readfirstlane_b32 s55, v11
+; SI-NEXT:    v_readfirstlane_b32 s15, v8
+; SI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:288
+; SI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:284
+; SI-NEXT:    v_readfirstlane_b32 s67, v6
 ; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:280
-; SI-NEXT:    v_readfirstlane_b32 s11, v9
-; SI-NEXT:    v_readfirstlane_b32 s48, v5
+; SI-NEXT:    v_readfirstlane_b32 s51, v5
 ; SI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:276
-; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:264
-; SI-NEXT:    v_readfirstlane_b32 s50, v4
+; SI-NEXT:    v_readfirstlane_b32 s23, v4
 ; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:272
-; SI-NEXT:    v_readfirstlane_b32 s22, v3
+; SI-NEXT:    v_readfirstlane_b32 s26, v3
 ; SI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:268
-; SI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:312
-; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:308
-; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:304
+; SI-NEXT:    v_readfirstlane_b32 s65, v7
+; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:264
+; SI-NEXT:    v_readfirstlane_b32 s69, v2
+; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:260
+; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:312
+; SI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:308
+; SI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:304
 ; SI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:300
-; SI-NEXT:    v_readfirstlane_b32 s14, v11
-; SI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:296
-; SI-NEXT:    v_readfirstlane_b32 s24, v10
-; SI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:292
+; SI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:296
+; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:292
+; SI-NEXT:    s_mov_b32 s6, s19
 ; SI-NEXT:    ; implicit-def: $vgpr46 : SGPR spill to VGPR lane
 ; SI-NEXT:    s_waitcnt vmcnt(14)
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v20
+; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v23
 ; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
-; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v1
-; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:256
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v1
+; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:256
 ; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:252
-; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:248
-; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v2
-; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:260
-; SI-NEXT:    v_readfirstlane_b32 s75, v22
-; SI-NEXT:    buffer_load_dword v25, off, s[0:3], s32 offset:220
+; SI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:248
+; SI-NEXT:    v_readfirstlane_b32 s4, v21
+; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:236
+; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:232
+; SI-NEXT:    v_readfirstlane_b32 s50, v22
+; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:220
 ; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 offset:216
-; SI-NEXT:    v_readfirstlane_b32 s29, v24
+; SI-NEXT:    v_readfirstlane_b32 s31, v25
 ; SI-NEXT:    buffer_load_dword v29, off, s[0:3], s32 offset:212
-; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:208
-; SI-NEXT:    v_readfirstlane_b32 s4, v21
+; SI-NEXT:    buffer_load_dword v25, off, s[0:3], s32 offset:208
+; SI-NEXT:    v_readfirstlane_b32 s49, v20
 ; SI-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:228
-; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:224
-; SI-NEXT:    v_readfirstlane_b32 s92, v19
-; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:236
-; SI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:232
-; SI-NEXT:    v_writelane_b32 v47, s4, 30
-; SI-NEXT:    v_readfirstlane_b32 s53, v14
-; SI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:68
+; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:224
+; SI-NEXT:    v_readfirstlane_b32 s80, v12
+; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:68
 ; SI-NEXT:    buffer_load_dword v52, off, s[0:3], s32 offset:64
-; SI-NEXT:    s_waitcnt vmcnt(14)
-; SI-NEXT:    v_readfirstlane_b32 s28, v0
+; SI-NEXT:    v_readfirstlane_b32 s81, v0
 ; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:60
 ; SI-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:56
-; SI-NEXT:    v_readfirstlane_b32 s61, v8
-; SI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:156
-; SI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:152
-; SI-NEXT:    v_readfirstlane_b32 s41, v7
-; SI-NEXT:    v_readfirstlane_b32 s88, v6
-; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:140
-; SI-NEXT:    buffer_load_dword v35, off, s[0:3], s32 offset:136
-; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:148
-; SI-NEXT:    buffer_load_dword v34, off, s[0:3], s32 offset:144
-; SI-NEXT:    v_readfirstlane_b32 s20, v5
-; SI-NEXT:    v_readfirstlane_b32 s95, v9
-; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:108
+; SI-NEXT:    s_waitcnt vmcnt(14)
+; SI-NEXT:    v_readfirstlane_b32 s5, v11
+; SI-NEXT:    v_readfirstlane_b32 s8, v8
+; SI-NEXT:    v_writelane_b32 v47, s8, 26
+; SI-NEXT:    v_readfirstlane_b32 s8, v6
+; SI-NEXT:    v_writelane_b32 v47, s8, 27
+; SI-NEXT:    v_readfirstlane_b32 s8, v5
+; SI-NEXT:    v_writelane_b32 v47, s8, 28
+; SI-NEXT:    v_readfirstlane_b32 s8, v4
+; SI-NEXT:    v_writelane_b32 v47, s8, 29
+; SI-NEXT:    v_readfirstlane_b32 s8, v3
+; SI-NEXT:    v_writelane_b32 v47, s8, 30
+; SI-NEXT:    v_readfirstlane_b32 s8, v7
+; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:108
 ; SI-NEXT:    buffer_load_dword v39, off, s[0:3], s32 offset:104
-; SI-NEXT:    v_readfirstlane_b32 s31, v4
+; SI-NEXT:    v_readfirstlane_b32 s78, v2
+; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:100
+; SI-NEXT:    buffer_load_dword v48, off, s[0:3], s32 offset:96
 ; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:124
 ; SI-NEXT:    buffer_load_dword v37, off, s[0:3], s32 offset:120
-; SI-NEXT:    v_readfirstlane_b32 s76, v3
 ; SI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:116
 ; SI-NEXT:    buffer_load_dword v38, off, s[0:3], s32 offset:112
+; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:140
+; SI-NEXT:    buffer_load_dword v35, off, s[0:3], s32 offset:136
 ; SI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:132
 ; SI-NEXT:    buffer_load_dword v36, off, s[0:3], s32 offset:128
-; SI-NEXT:    v_readfirstlane_b32 s34, v16
-; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:188
+; SI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:156
+; SI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:152
+; SI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:148
+; SI-NEXT:    buffer_load_dword v34, off, s[0:3], s32 offset:144
+; SI-NEXT:    v_readfirstlane_b32 s68, v14
+; SI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:172
+; SI-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:168
+; SI-NEXT:    v_readfirstlane_b32 s35, v13
+; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:164
+; SI-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:160
+; SI-NEXT:    v_readfirstlane_b32 s93, v19
+; SI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:188
 ; SI-NEXT:    buffer_load_dword v28, off, s[0:3], s32 offset:184
-; SI-NEXT:    v_readfirstlane_b32 s40, v15
+; SI-NEXT:    v_readfirstlane_b32 s53, v15
 ; SI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:180
 ; SI-NEXT:    buffer_load_dword v30, off, s[0:3], s32 offset:176
-; SI-NEXT:    v_readfirstlane_b32 s59, v11
-; SI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:172
-; SI-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:168
-; SI-NEXT:    v_readfirstlane_b32 s79, v18
-; SI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:204
+; SI-NEXT:    v_readfirstlane_b32 s19, v17
+; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:204
 ; SI-NEXT:    buffer_load_dword v26, off, s[0:3], s32 offset:200
-; SI-NEXT:    v_readfirstlane_b32 s93, v17
-; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:196
+; SI-NEXT:    v_readfirstlane_b32 s14, v18
+; SI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:196
 ; SI-NEXT:    buffer_load_dword v27, off, s[0:3], s32 offset:192
-; SI-NEXT:    v_readfirstlane_b32 s89, v10
-; SI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:164
-; SI-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:160
-; SI-NEXT:    s_waitcnt vmcnt(14)
-; SI-NEXT:    v_readfirstlane_b32 s65, v12
-; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:92
+; SI-NEXT:    v_writelane_b32 v47, s8, 31
+; SI-NEXT:    v_writelane_b32 v47, s18, 32
+; SI-NEXT:    v_writelane_b32 v47, s6, 33
+; SI-NEXT:    v_writelane_b32 v47, s7, 34
+; SI-NEXT:    v_writelane_b32 v47, s16, 35
+; SI-NEXT:    v_writelane_b32 v47, s22, 36
+; SI-NEXT:    v_writelane_b32 v47, s21, 37
+; SI-NEXT:    v_writelane_b32 v47, s20, 38
+; SI-NEXT:    v_writelane_b32 v47, s9, 39
+; SI-NEXT:    v_writelane_b32 v47, s15, 40
+; SI-NEXT:    v_writelane_b32 v47, s51, 41
+; SI-NEXT:    v_writelane_b32 v47, s23, 42
+; SI-NEXT:    v_writelane_b32 v47, s55, 43
+; SI-NEXT:    v_readfirstlane_b32 s94, v9
+; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:92
 ; SI-NEXT:    buffer_load_dword v49, off, s[0:3], s32 offset:88
-; SI-NEXT:    v_readfirstlane_b32 s27, v13
-; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:76
+; SI-NEXT:    s_waitcnt vmcnt(14)
+; SI-NEXT:    v_readfirstlane_b32 s30, v10
+; SI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:76
 ; SI-NEXT:    buffer_load_dword v51, off, s[0:3], s32 offset:72
-; SI-NEXT:    v_readfirstlane_b32 s68, v1
+; SI-NEXT:    v_readfirstlane_b32 s89, v21
+; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:52
+; SI-NEXT:    buffer_load_dword v54, off, s[0:3], s32 offset:48
+; SI-NEXT:    v_readfirstlane_b32 s54, v16
+; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:44
+; SI-NEXT:    buffer_load_dword v55, off, s[0:3], s32 offset:40
+; SI-NEXT:    v_readfirstlane_b32 s64, v1
 ; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:84
 ; SI-NEXT:    buffer_load_dword v50, off, s[0:3], s32 offset:80
-; SI-NEXT:    v_readfirstlane_b32 s47, v2
-; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:100
-; SI-NEXT:    buffer_load_dword v48, off, s[0:3], s32 offset:96
-; SI-NEXT:    v_readfirstlane_b32 s54, v22
+; SI-NEXT:    v_readfirstlane_b32 s37, v22
 ; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 offset:12
 ; SI-NEXT:    s_waitcnt expcnt(1)
 ; SI-NEXT:    buffer_load_dword v43, off, s[0:3], s32 offset:8
-; SI-NEXT:    v_readfirstlane_b32 s67, v29
+; SI-NEXT:    v_readfirstlane_b32 s79, v29
 ; SI-NEXT:    buffer_load_dword v29, off, s[0:3], s32 offset:4
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    buffer_load_dword v44, off, s[0:3], s32
-; SI-NEXT:    v_readfirstlane_b32 s37, v21
-; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:28
+; SI-NEXT:    v_readfirstlane_b32 s57, v20
+; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:28
 ; SI-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:24
-; SI-NEXT:    v_readfirstlane_b32 s91, v25
-; SI-NEXT:    buffer_load_dword v25, off, s[0:3], s32 offset:20
+; SI-NEXT:    v_readfirstlane_b32 s59, v24
+; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:20
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:16
-; SI-NEXT:    v_readfirstlane_b32 s17, v19
-; SI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:44
-; SI-NEXT:    buffer_load_dword v55, off, s[0:3], s32 offset:40
-; SI-NEXT:    v_readfirstlane_b32 s64, v23
+; SI-NEXT:    v_readfirstlane_b32 s38, v23
 ; SI-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:36
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:32
-; SI-NEXT:    v_readfirstlane_b32 s94, v20
-; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:52
-; SI-NEXT:    buffer_load_dword v54, off, s[0:3], s32 offset:48
-; SI-NEXT:    v_readfirstlane_b32 s13, v14
-; SI-NEXT:    v_writelane_b32 v46, s13, 0
-; SI-NEXT:    v_readfirstlane_b32 s15, v52
-; SI-NEXT:    v_readfirstlane_b32 s12, v0
-; SI-NEXT:    v_readfirstlane_b32 s72, v33
-; SI-NEXT:    v_readfirstlane_b32 s99, v53
-; SI-NEXT:    v_readfirstlane_b32 s4, v35
-; SI-NEXT:    v_writelane_b32 v47, s4, 31
-; SI-NEXT:    v_readfirstlane_b32 s39, v24
-; SI-NEXT:    v_readfirstlane_b32 s38, v8
-; SI-NEXT:    v_readfirstlane_b32 s58, v39
-; SI-NEXT:    v_readfirstlane_b32 s4, v4
-; SI-NEXT:    v_writelane_b32 v47, s4, 32
-; SI-NEXT:    v_readfirstlane_b32 s4, v9
-; SI-NEXT:    v_writelane_b32 v47, s4, 33
-; SI-NEXT:    v_writelane_b32 v47, s7, 34
-; SI-NEXT:    v_readfirstlane_b32 s60, v3
-; SI-NEXT:    v_writelane_b32 v47, s18, 35
+; SI-NEXT:    v_writelane_b32 v47, s65, 44
+; SI-NEXT:    v_writelane_b32 v47, s17, 45
+; SI-NEXT:    v_writelane_b32 v47, s67, 46
+; SI-NEXT:    v_writelane_b32 v47, s26, 47
+; SI-NEXT:    v_writelane_b32 v47, vcc_hi, 48
+; SI-NEXT:    v_writelane_b32 v47, s69, 49
+; SI-NEXT:    v_writelane_b32 v47, s70, 50
+; SI-NEXT:    v_readfirstlane_b32 s66, v25
+; SI-NEXT:    v_readfirstlane_b32 s13, v12
+; SI-NEXT:    v_readfirstlane_b32 s40, v52
+; SI-NEXT:    v_readfirstlane_b32 s42, v0
+; SI-NEXT:    v_readfirstlane_b32 s28, v53
+; SI-NEXT:    v_readfirstlane_b32 s88, v7
+; SI-NEXT:    v_readfirstlane_b32 s46, v39
+; SI-NEXT:    v_readfirstlane_b32 s60, v2
+; SI-NEXT:    v_readfirstlane_b32 s58, v48
+; SI-NEXT:    v_readfirstlane_b32 s62, v3
 ; SI-NEXT:    v_readfirstlane_b32 s63, v37
-; SI-NEXT:    v_writelane_b32 v47, s16, 36
 ; SI-NEXT:    v_readfirstlane_b32 s73, v38
-; SI-NEXT:    v_writelane_b32 v47, s11, 37
+; SI-NEXT:    v_readfirstlane_b32 s74, v5
+; SI-NEXT:    v_readfirstlane_b32 s76, v35
+; SI-NEXT:    v_readfirstlane_b32 s90, v36
+; SI-NEXT:    v_readfirstlane_b32 s91, v4
+; SI-NEXT:    v_readfirstlane_b32 s95, v8
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v33
+; SI-NEXT:    v_readfirstlane_b32 s27, v34
+; SI-NEXT:    v_readfirstlane_b32 s34, v6
 ; SI-NEXT:    s_waitcnt vmcnt(14)
-; SI-NEXT:    v_readfirstlane_b32 s6, v5
-; SI-NEXT:    v_writelane_b32 v47, s23, 38
-; SI-NEXT:    v_readfirstlane_b32 s78, v36
-; SI-NEXT:    v_writelane_b32 v47, s48, 39
-; SI-NEXT:    v_writelane_b32 v47, s50, 40
-; SI-NEXT:    v_readfirstlane_b32 s30, v15
-; SI-NEXT:    v_writelane_b32 v47, s14, 41
-; SI-NEXT:    v_readfirstlane_b32 s26, v28
-; SI-NEXT:    v_writelane_b32 v47, s19, 42
-; SI-NEXT:    v_writelane_b32 v47, s24, 43
-; SI-NEXT:    v_writelane_b32 v47, s25, 44
-; SI-NEXT:    v_writelane_b32 v47, s22, 45
-; SI-NEXT:    v_readfirstlane_b32 s49, v30
-; SI-NEXT:    v_writelane_b32 v47, vcc_lo, 46
-; SI-NEXT:    v_writelane_b32 v47, vcc_hi, 47
-; SI-NEXT:    v_writelane_b32 v47, s70, 48
-; SI-NEXT:    v_readfirstlane_b32 s21, v11
-; SI-NEXT:    v_readfirstlane_b32 s51, v17
-; SI-NEXT:    v_readfirstlane_b32 s66, v26
-; SI-NEXT:    v_readfirstlane_b32 s52, v27
-; SI-NEXT:    v_readfirstlane_b32 s69, v16
-; SI-NEXT:    v_readfirstlane_b32 s55, v18
-; SI-NEXT:    v_readfirstlane_b32 s77, v31
-; SI-NEXT:    v_readfirstlane_b32 s74, v10
-; SI-NEXT:    v_readfirstlane_b32 s46, v32
-; SI-NEXT:    v_readfirstlane_b32 s36, v7
-; SI-NEXT:    v_readfirstlane_b32 s90, v34
-; SI-NEXT:    v_readfirstlane_b32 s35, v6
-; SI-NEXT:    v_readfirstlane_b32 s56, v12
-; SI-NEXT:    v_readfirstlane_b32 s44, v49
-; SI-NEXT:    v_readfirstlane_b32 s57, v13
-; SI-NEXT:    v_readfirstlane_b32 s9, v51
-; SI-NEXT:    v_writelane_b32 v46, s9, 1
-; SI-NEXT:    v_writelane_b32 v46, s15, 2
-; SI-NEXT:    v_readfirstlane_b32 s42, v1
-; SI-NEXT:    v_writelane_b32 v46, s12, 3
-; SI-NEXT:    v_writelane_b32 v46, s42, 4
-; SI-NEXT:    v_readfirstlane_b32 s43, v50
-; SI-NEXT:    v_writelane_b32 v46, s44, 5
-; SI-NEXT:    v_writelane_b32 v46, s43, 6
-; SI-NEXT:    v_readfirstlane_b32 s45, v2
-; SI-NEXT:    v_writelane_b32 v46, s57, 7
-; SI-NEXT:    v_writelane_b32 v46, s45, 8
-; SI-NEXT:    v_readfirstlane_b32 s62, v48
-; SI-NEXT:    v_writelane_b32 v46, s58, 9
-; SI-NEXT:    v_writelane_b32 v46, s62, 10
-; SI-NEXT:    v_writelane_b32 v46, s56, 11
-; SI-NEXT:    v_writelane_b32 v46, s60, 12
-; SI-NEXT:    v_writelane_b32 v46, s63, 13
-; SI-NEXT:    v_writelane_b32 v46, s73, 14
-; SI-NEXT:    v_writelane_b32 v46, s6, 15
-; SI-NEXT:    v_writelane_b32 v46, s78, 16
-; SI-NEXT:    v_writelane_b32 v46, s72, 17
-; SI-NEXT:    v_writelane_b32 v46, s30, 18
-; SI-NEXT:    v_writelane_b32 v46, s26, 19
-; SI-NEXT:    v_writelane_b32 v46, s27, 20
-; SI-NEXT:    v_writelane_b32 v46, s53, 21
-; SI-NEXT:    v_writelane_b32 v46, s65, 22
-; SI-NEXT:    v_writelane_b32 v46, s49, 23
+; SI-NEXT:    v_readfirstlane_b32 s72, v13
+; SI-NEXT:    v_readfirstlane_b32 s75, v31
+; SI-NEXT:    v_readfirstlane_b32 s45, v32
+; SI-NEXT:    v_readfirstlane_b32 s25, v11
+; SI-NEXT:    v_readfirstlane_b32 s24, v15
+; SI-NEXT:    v_readfirstlane_b32 s77, v28
+; SI-NEXT:    v_readfirstlane_b32 s12, v30
+; SI-NEXT:    v_readfirstlane_b32 s36, v14
+; SI-NEXT:    v_readfirstlane_b32 s52, v18
+; SI-NEXT:    v_readfirstlane_b32 s92, v26
+; SI-NEXT:    v_readfirstlane_b32 s39, v27
+; SI-NEXT:    v_readfirstlane_b32 s48, v19
+; SI-NEXT:    v_readfirstlane_b32 s44, v17
+; SI-NEXT:    v_readfirstlane_b32 s61, v9
+; SI-NEXT:    v_readfirstlane_b32 s47, v49
+; SI-NEXT:    v_readfirstlane_b32 s56, v10
+; SI-NEXT:    v_readfirstlane_b32 s10, v51
+; SI-NEXT:    v_readfirstlane_b32 s8, v21
+; SI-NEXT:    v_readfirstlane_b32 s11, v54
+; SI-NEXT:    s_waitcnt vmcnt(13)
+; SI-NEXT:    v_readfirstlane_b32 s29, v16
+; SI-NEXT:    v_writelane_b32 v46, s11, 0
+; SI-NEXT:    v_writelane_b32 v46, s29, 1
+; SI-NEXT:    v_writelane_b32 v46, s13, 2
+; SI-NEXT:    v_writelane_b32 v46, s10, 3
+; SI-NEXT:    v_writelane_b32 v46, s40, 4
 ; SI-NEXT:    s_waitcnt vmcnt(11)
-; SI-NEXT:    v_readfirstlane_b32 s71, v29
-; SI-NEXT:    v_writelane_b32 v46, s17, 24
-; SI-NEXT:    v_readfirstlane_b32 s80, v43
-; SI-NEXT:    v_writelane_b32 v47, s71, 49
-; SI-NEXT:    v_writelane_b32 v46, s54, 25
+; SI-NEXT:    v_readfirstlane_b32 s41, v1
+; SI-NEXT:    v_writelane_b32 v46, s42, 5
+; SI-NEXT:    v_writelane_b32 v46, s41, 6
 ; SI-NEXT:    s_waitcnt vmcnt(10)
-; SI-NEXT:    v_readfirstlane_b32 s81, v44
-; SI-NEXT:    v_writelane_b32 v47, s80, 50
-; SI-NEXT:    v_writelane_b32 v46, s21, 26
+; SI-NEXT:    v_readfirstlane_b32 s43, v50
+; SI-NEXT:    v_writelane_b32 v46, s47, 7
+; SI-NEXT:    v_writelane_b32 v46, s43, 8
+; SI-NEXT:    v_writelane_b32 v46, s56, 9
+; SI-NEXT:    v_writelane_b32 v46, s60, 10
+; SI-NEXT:    v_writelane_b32 v46, s46, 11
+; SI-NEXT:    v_writelane_b32 v46, s58, 12
+; SI-NEXT:    v_writelane_b32 v46, s61, 13
+; SI-NEXT:    v_writelane_b32 v46, s62, 14
+; SI-NEXT:    v_writelane_b32 v46, s63, 15
+; SI-NEXT:    v_writelane_b32 v46, s73, 16
+; SI-NEXT:    v_writelane_b32 v46, s88, 17
+; SI-NEXT:    v_writelane_b32 v46, s74, 18
+; SI-NEXT:    v_writelane_b32 v46, s76, 19
+; SI-NEXT:    v_writelane_b32 v46, s90, 20
+; SI-NEXT:    v_writelane_b32 v46, s91, 21
+; SI-NEXT:    v_writelane_b32 v46, s95, 22
+; SI-NEXT:    v_writelane_b32 v46, vcc_lo, 23
+; SI-NEXT:    v_writelane_b32 v46, s27, 24
+; SI-NEXT:    v_writelane_b32 v46, s34, 25
+; SI-NEXT:    v_writelane_b32 v46, s5, 26
+; SI-NEXT:    v_writelane_b32 v46, s72, 27
+; SI-NEXT:    v_writelane_b32 v46, s75, 28
+; SI-NEXT:    v_writelane_b32 v46, s45, 29
+; SI-NEXT:    v_writelane_b32 v46, s78, 30
+; SI-NEXT:    v_writelane_b32 v46, s25, 31
+; SI-NEXT:    v_writelane_b32 v46, s24, 32
+; SI-NEXT:    v_writelane_b32 v46, s77, 33
+; SI-NEXT:    v_writelane_b32 v46, s30, 34
+; SI-NEXT:    v_writelane_b32 v46, s80, 35
+; SI-NEXT:    v_writelane_b32 v46, s94, 36
+; SI-NEXT:    v_writelane_b32 v46, s12, 37
+; SI-NEXT:    v_writelane_b32 v46, s54, 38
+; SI-NEXT:    v_writelane_b32 v46, s37, 39
 ; SI-NEXT:    s_waitcnt vmcnt(7)
-; SI-NEXT:    v_readfirstlane_b32 s82, v25
-; SI-NEXT:    v_writelane_b32 v47, s81, 51
-; SI-NEXT:    v_writelane_b32 v46, s64, 27
-; SI-NEXT:    v_readfirstlane_b32 s83, v41
-; SI-NEXT:    v_writelane_b32 v47, s82, 52
-; SI-NEXT:    v_writelane_b32 v46, s67, 28
+; SI-NEXT:    v_readfirstlane_b32 s71, v29
+; SI-NEXT:    v_writelane_b32 v46, s36, 40
+; SI-NEXT:    v_readfirstlane_b32 s83, v43
+; SI-NEXT:    v_writelane_b32 v47, s71, 51
+; SI-NEXT:    v_writelane_b32 v46, s38, 41
 ; SI-NEXT:    s_waitcnt vmcnt(6)
-; SI-NEXT:    v_readfirstlane_b32 s84, v42
-; SI-NEXT:    v_writelane_b32 v47, s83, 53
-; SI-NEXT:    v_writelane_b32 v46, s51, 29
-; SI-NEXT:    v_readfirstlane_b32 s85, v22
-; SI-NEXT:    v_writelane_b32 v47, s84, 54
-; SI-NEXT:    v_writelane_b32 v46, s66, 30
+; SI-NEXT:    v_readfirstlane_b32 s82, v44
+; SI-NEXT:    v_writelane_b32 v47, s83, 52
+; SI-NEXT:    v_writelane_b32 v46, s79, 42
 ; SI-NEXT:    s_waitcnt vmcnt(3)
-; SI-NEXT:    v_readfirstlane_b32 s86, v23
+; SI-NEXT:    v_readfirstlane_b32 s84, v24
+; SI-NEXT:    v_writelane_b32 v47, s82, 53
+; SI-NEXT:    v_writelane_b32 v46, s52, 43
+; SI-NEXT:    v_readfirstlane_b32 s85, v41
+; SI-NEXT:    v_writelane_b32 v47, s84, 54
+; SI-NEXT:    v_writelane_b32 v46, s92, 44
+; SI-NEXT:    s_waitcnt vmcnt(2)
+; SI-NEXT:    v_readfirstlane_b32 s86, v42
 ; SI-NEXT:    v_writelane_b32 v47, s85, 55
-; SI-NEXT:    v_writelane_b32 v46, s68, 31
-; SI-NEXT:    v_readfirstlane_b32 s87, v55
+; SI-NEXT:    v_writelane_b32 v46, s64, 45
+; SI-NEXT:    v_readfirstlane_b32 s87, v22
 ; SI-NEXT:    v_writelane_b32 v47, s86, 56
-; SI-NEXT:    v_writelane_b32 v46, s28, 32
-; SI-NEXT:    s_waitcnt vmcnt(2)
-; SI-NEXT:    v_readfirstlane_b32 s96, v40
+; SI-NEXT:    v_writelane_b32 v46, s81, 46
+; SI-NEXT:    s_waitcnt vmcnt(1)
+; SI-NEXT:    v_readfirstlane_b32 s96, v23
 ; SI-NEXT:    v_writelane_b32 v47, s87, 57
-; SI-NEXT:    v_writelane_b32 v46, s52, 33
-; SI-NEXT:    v_readfirstlane_b32 s97, v21
+; SI-NEXT:    v_writelane_b32 v46, s39, 47
+; SI-NEXT:    v_readfirstlane_b32 s97, v55
 ; SI-NEXT:    v_writelane_b32 v47, s96, 58
-; SI-NEXT:    v_writelane_b32 v46, s37, 34
-; SI-NEXT:    s_waitcnt vmcnt(1)
-; SI-NEXT:    v_readfirstlane_b32 s98, v20
+; SI-NEXT:    v_writelane_b32 v46, s57, 48
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_readfirstlane_b32 s98, v40
 ; SI-NEXT:    v_writelane_b32 v47, s97, 59
-; SI-NEXT:    v_writelane_b32 v46, s69, 35
+; SI-NEXT:    v_writelane_b32 v46, s48, 49
+; SI-NEXT:    v_readfirstlane_b32 s99, v20
 ; SI-NEXT:    v_writelane_b32 v47, s98, 60
-; SI-NEXT:    v_writelane_b32 v46, s94, 36
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_readfirstlane_b32 s10, v54
+; SI-NEXT:    v_writelane_b32 v46, s89, 50
 ; SI-NEXT:    v_writelane_b32 v47, s99, 61
-; SI-NEXT:    v_writelane_b32 v46, s91, 37
-; SI-NEXT:    v_readfirstlane_b32 s8, v19
-; SI-NEXT:    v_writelane_b32 v47, s10, 62
-; SI-NEXT:    v_writelane_b32 v46, s39, 38
-; SI-NEXT:    v_writelane_b32 v47, s8, 63
-; SI-NEXT:    v_writelane_b32 v46, s55, 39
-; SI-NEXT:    s_cbranch_scc0 .LBB89_4
+; SI-NEXT:    v_writelane_b32 v46, s59, 51
+; SI-NEXT:    v_writelane_b32 v47, s8, 62
+; SI-NEXT:    v_writelane_b32 v46, s66, 52
+; SI-NEXT:    v_writelane_b32 v47, s28, 63
+; SI-NEXT:    v_writelane_b32 v46, s44, 53
+; SI-NEXT:    s_cbranch_scc0 .LBB89_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    v_writelane_b32 v46, s38, 42
-; SI-NEXT:    s_and_b32 s4, s7, 0xff
-; SI-NEXT:    v_readlane_b32 s5, v47, 12
-; SI-NEXT:    v_writelane_b32 v46, s20, 43
+; SI-NEXT:    v_writelane_b32 v46, s4, 56
+; SI-NEXT:    s_and_b32 s4, s16, 0xff
+; SI-NEXT:    v_writelane_b32 v46, s49, 57
+; SI-NEXT:    s_mov_b32 s49, s31
+; SI-NEXT:    s_mov_b32 s31, s19
+; SI-NEXT:    s_mov_b32 s19, s14
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
-; SI-NEXT:    s_lshl_b32 s5, s5, 24
-; SI-NEXT:    v_writelane_b32 v46, s90, 44
-; SI-NEXT:    v_writelane_b32 v46, s88, 45
-; SI-NEXT:    s_or_b32 s88, s5, s4
-; SI-NEXT:    v_readlane_b32 s4, v47, 11
-; SI-NEXT:    s_and_b32 s4, s4, 0xff
-; SI-NEXT:    v_readlane_b32 s5, v47, 10
+; SI-NEXT:    s_mov_b32 s14, s5
+; SI-NEXT:    s_lshl_b32 s5, s7, 24
+; SI-NEXT:    s_or_b32 s16, s5, s4
+; SI-NEXT:    s_and_b32 s4, s18, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
-; SI-NEXT:    s_lshl_b32 s5, s5, 24
-; SI-NEXT:    s_or_b32 s38, s5, s4
-; SI-NEXT:    v_readlane_b32 s4, v47, 9
-; SI-NEXT:    v_readlane_b32 s5, v47, 8
-; SI-NEXT:    s_and_b32 s4, s4, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s5, 8
-; SI-NEXT:    v_writelane_b32 v46, s36, 46
+; SI-NEXT:    s_lshl_b32 s5, s6, 24
+; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    v_writelane_b32 v46, s4, 54
+; SI-NEXT:    s_and_b32 s4, s20, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s21, 8
 ; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 47
-; SI-NEXT:    v_readlane_b32 s4, v47, 7
-; SI-NEXT:    s_and_b32 s5, s4, 0xff
+; SI-NEXT:    v_writelane_b32 v46, s4, 58
+; SI-NEXT:    s_and_b32 s5, s22, 0xff
 ; SI-NEXT:    v_readlane_b32 s4, v47, 6
-; SI-NEXT:    s_mov_b32 s90, s6
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_lshl_b32 s6, s4, 24
 ; SI-NEXT:    v_readlane_b32 s4, v47, 5
-; SI-NEXT:    s_or_b32 s20, s6, s5
+; SI-NEXT:    s_or_b32 s18, s6, s5
 ; SI-NEXT:    s_and_b32 s5, s4, 0xff
-; SI-NEXT:    v_readlane_b32 s4, v47, 4
+; SI-NEXT:    v_readlane_b32 s6, v47, 4
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
-; SI-NEXT:    s_lshl_b32 s6, s4, 24
+; SI-NEXT:    s_lshl_b32 s6, s6, 24
 ; SI-NEXT:    s_or_b32 s5, s6, s5
-; SI-NEXT:    v_readlane_b32 s4, v47, 3
-; SI-NEXT:    v_writelane_b32 v46, s5, 41
-; SI-NEXT:    s_and_b32 s5, s4, 0xff
-; SI-NEXT:    v_readlane_b32 s4, v47, 2
+; SI-NEXT:    v_writelane_b32 v46, s5, 55
+; SI-NEXT:    v_readlane_b32 s5, v47, 3
+; SI-NEXT:    s_and_b32 s5, s5, 0xff
+; SI-NEXT:    v_readlane_b32 s6, v47, 2
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
-; SI-NEXT:    s_lshl_b32 s6, s4, 24
-; SI-NEXT:    s_or_b32 s5, s6, s5
-; SI-NEXT:    v_readlane_b32 s4, v47, 1
-; SI-NEXT:    v_writelane_b32 v46, s5, 40
-; SI-NEXT:    s_and_b32 s5, s4, 0xff
-; SI-NEXT:    v_readlane_b32 s4, v47, 0
-; SI-NEXT:    s_lshl_b32 s6, s4, 8
+; SI-NEXT:    s_lshl_b32 s6, s6, 24
+; SI-NEXT:    s_or_b32 s20, s6, s5
+; SI-NEXT:    v_readlane_b32 s5, v47, 1
+; SI-NEXT:    v_readlane_b32 s6, v47, 0
+; SI-NEXT:    s_and_b32 s5, s5, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 8
 ; SI-NEXT:    s_or_b32 s4, s5, s6
 ; SI-NEXT:    s_and_b32 s6, s70, 0xff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_lshl_b32 s7, vcc_lo, 24
-; SI-NEXT:    v_writelane_b32 v46, s4, 48
+; SI-NEXT:    s_lshl_b32 s7, vcc_hi, 24
+; SI-NEXT:    v_writelane_b32 v46, s4, 59
 ; SI-NEXT:    s_or_b32 s4, s7, s6
-; SI-NEXT:    s_and_b32 s6, vcc_hi, 0xff
+; SI-NEXT:    s_and_b32 s6, s69, 0xff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_lshl_b32 s7, s22, 24
-; SI-NEXT:    v_writelane_b32 v46, s4, 49
+; SI-NEXT:    s_lshl_b32 s7, s26, 24
+; SI-NEXT:    v_writelane_b32 v46, s4, 60
 ; SI-NEXT:    s_or_b32 s4, s7, s6
-; SI-NEXT:    s_and_b32 s6, s50, 0xff
+; SI-NEXT:    s_and_b32 s6, s23, 0xff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_lshl_b32 s7, s48, 24
-; SI-NEXT:    s_or_b32 s22, s7, s6
-; SI-NEXT:    s_and_b32 s6, s25, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s19, 8
-; SI-NEXT:    s_or_b32 s70, s6, s7
-; SI-NEXT:    s_and_b32 s7, s23, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s51, 24
+; SI-NEXT:    s_or_b32 s21, s7, s6
+; SI-NEXT:    s_and_b32 s6, s67, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s65, 8
+; SI-NEXT:    s_or_b32 vcc_hi, s6, s7
+; SI-NEXT:    s_and_b32 s7, s15, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s11, s11, 24
-; SI-NEXT:    s_or_b32 s23, s11, s7
-; SI-NEXT:    s_and_b32 s7, s24, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s11, s14, 24
-; SI-NEXT:    v_writelane_b32 v46, s4, 50
-; SI-NEXT:    s_or_b32 s4, s11, s7
-; SI-NEXT:    s_and_b32 s7, s16, 0xff
-; SI-NEXT:    v_writelane_b32 v46, s4, 51
+; SI-NEXT:    s_lshl_b32 s9, s9, 24
+; SI-NEXT:    s_or_b32 s22, s9, s7
+; SI-NEXT:    s_and_b32 s7, s17, 0xff
+; SI-NEXT:    v_writelane_b32 v46, s4, 61
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s11, s18, 24
-; SI-NEXT:    v_readlane_b32 s4, v47, 29
-; SI-NEXT:    s_or_b32 s6, s11, s7
-; SI-NEXT:    s_and_b32 s7, s4, 0xff
-; SI-NEXT:    v_readlane_b32 s4, v47, 28
-; SI-NEXT:    s_lshl_b32 s11, s4, 8
-; SI-NEXT:    v_readlane_b32 s4, v47, 27
-; SI-NEXT:    s_or_b32 s7, s7, s11
-; SI-NEXT:    s_and_b32 s11, s4, 0xff
-; SI-NEXT:    v_readlane_b32 s4, v47, 26
-; SI-NEXT:    s_lshl_b32 s11, s11, 16
-; SI-NEXT:    s_lshl_b32 s14, s4, 24
+; SI-NEXT:    s_lshl_b32 s9, s55, 24
 ; SI-NEXT:    v_readlane_b32 s4, v47, 25
-; SI-NEXT:    s_or_b32 s25, s14, s11
-; SI-NEXT:    s_and_b32 s11, s4, 0xff
+; SI-NEXT:    s_or_b32 s70, s9, s7
+; SI-NEXT:    s_and_b32 s7, s4, 0xff
 ; SI-NEXT:    v_readlane_b32 s4, v47, 24
-; SI-NEXT:    s_lshl_b32 s11, s11, 16
-; SI-NEXT:    s_lshl_b32 s14, s4, 24
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s9, s4, 24
 ; SI-NEXT:    v_readlane_b32 s4, v47, 23
-; SI-NEXT:    s_or_b32 s24, s14, s11
-; SI-NEXT:    s_and_b32 s11, s4, 0xff
+; SI-NEXT:    s_or_b32 s23, s9, s7
+; SI-NEXT:    s_and_b32 s7, s4, 0xff
 ; SI-NEXT:    v_readlane_b32 s4, v47, 22
-; SI-NEXT:    s_lshl_b32 s11, s11, 16
-; SI-NEXT:    s_lshl_b32 s14, s4, 24
+; SI-NEXT:    s_lshl_b32 s9, s4, 8
 ; SI-NEXT:    v_readlane_b32 s4, v47, 21
-; SI-NEXT:    s_or_b32 s48, s14, s11
-; SI-NEXT:    s_and_b32 s11, s4, 0xff
+; SI-NEXT:    s_or_b32 s5, s7, s9
+; SI-NEXT:    s_and_b32 s7, s4, 0xff
 ; SI-NEXT:    v_readlane_b32 s4, v47, 20
-; SI-NEXT:    s_lshl_b32 s14, s4, 8
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s9, s4, 24
 ; SI-NEXT:    v_readlane_b32 s4, v47, 19
-; SI-NEXT:    s_or_b32 s5, s11, s14
-; SI-NEXT:    s_and_b32 s11, s4, 0xff
-; SI-NEXT:    v_readlane_b32 s4, v47, 18
-; SI-NEXT:    s_lshl_b32 s11, s11, 16
-; SI-NEXT:    s_lshl_b32 s14, s4, 24
-; SI-NEXT:    s_or_b32 s4, s14, s11
-; SI-NEXT:    v_readlane_b32 s11, v47, 17
-; SI-NEXT:    s_and_b32 s11, s11, 0xff
-; SI-NEXT:    v_readlane_b32 s14, v47, 16
-; SI-NEXT:    s_lshl_b32 s11, s11, 16
-; SI-NEXT:    s_lshl_b32 s16, s14, 24
-; SI-NEXT:    s_or_b32 s50, s16, s11
-; SI-NEXT:    v_readlane_b32 s11, v47, 15
-; SI-NEXT:    s_and_b32 s16, s11, 0xff
-; SI-NEXT:    v_readlane_b32 s11, v47, 14
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s18, s11, 24
-; SI-NEXT:    v_readlane_b32 s11, v47, 13
-; SI-NEXT:    s_or_b32 s14, s18, s16
-; SI-NEXT:    s_and_b32 s16, s11, 0xff
-; SI-NEXT:    s_lshl_b32 s18, s81, 8
-; SI-NEXT:    s_or_b32 s18, s16, s18
-; SI-NEXT:    s_and_b32 s16, s71, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s80, 24
-; SI-NEXT:    s_or_b32 s80, s19, s16
-; SI-NEXT:    s_and_b32 s16, s85, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s84, 24
-; SI-NEXT:    s_or_b32 s71, s19, s16
-; SI-NEXT:    s_and_b32 s16, s82, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s83, 24
-; SI-NEXT:    s_or_b32 s81, s19, s16
-; SI-NEXT:    s_and_b32 s16, s97, 0xff
-; SI-NEXT:    s_lshl_b32 s19, s96, 8
-; SI-NEXT:    s_or_b32 vcc_lo, s16, s19
-; SI-NEXT:    s_and_b32 s16, s86, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s87, 24
-; SI-NEXT:    s_or_b32 s82, s19, s16
-; SI-NEXT:    s_and_b32 s16, s8, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s10, 24
-; SI-NEXT:    s_or_b32 s10, s19, s16
-; SI-NEXT:    s_and_b32 s16, s98, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s99, 24
-; SI-NEXT:    s_or_b32 s83, s19, s16
-; SI-NEXT:    s_and_b32 s16, s12, 0xff
-; SI-NEXT:    s_lshl_b32 s19, s15, 8
-; SI-NEXT:    s_or_b32 vcc_hi, s16, s19
-; SI-NEXT:    s_and_b32 s16, s13, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s9, 24
-; SI-NEXT:    s_or_b32 s13, s19, s16
-; SI-NEXT:    s_and_b32 s16, s57, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s43, 24
-; SI-NEXT:    s_or_b32 s12, s19, s16
-; SI-NEXT:    s_and_b32 s16, s42, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s44, 24
-; SI-NEXT:    s_or_b32 s96, s19, s16
-; SI-NEXT:    s_and_b32 s16, s56, 0xff
-; SI-NEXT:    s_lshl_b32 s19, s62, 8
-; SI-NEXT:    s_or_b32 s84, s16, s19
-; SI-NEXT:    s_and_b32 s16, s45, 0xff
-; SI-NEXT:    v_readlane_b32 s8, v47, 33
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s58, 24
+; SI-NEXT:    s_or_b32 s26, s9, s7
+; SI-NEXT:    s_and_b32 s7, s4, 0xff
+; SI-NEXT:    v_readlane_b32 s9, v47, 18
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s9, s9, 24
+; SI-NEXT:    s_or_b32 s6, s9, s7
+; SI-NEXT:    v_readlane_b32 s7, v47, 17
+; SI-NEXT:    s_and_b32 s7, s7, 0xff
+; SI-NEXT:    v_readlane_b32 s9, v47, 16
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s9, s9, 24
+; SI-NEXT:    s_or_b32 s69, s9, s7
+; SI-NEXT:    v_readlane_b32 s7, v47, 15
+; SI-NEXT:    v_readlane_b32 s9, v47, 14
+; SI-NEXT:    s_and_b32 s7, s7, 0xff
+; SI-NEXT:    s_lshl_b32 s9, s9, 8
+; SI-NEXT:    s_or_b32 s4, s7, s9
+; SI-NEXT:    v_readlane_b32 s7, v47, 13
+; SI-NEXT:    s_and_b32 s7, s7, 0xff
+; SI-NEXT:    v_readlane_b32 s9, v47, 12
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s9, s9, 24
+; SI-NEXT:    s_or_b32 s55, s9, s7
+; SI-NEXT:    v_readlane_b32 s7, v47, 11
+; SI-NEXT:    s_and_b32 s7, s7, 0xff
+; SI-NEXT:    v_readlane_b32 s9, v47, 10
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s9, s9, 24
+; SI-NEXT:    s_or_b32 s51, s9, s7
+; SI-NEXT:    v_readlane_b32 s7, v47, 9
+; SI-NEXT:    s_and_b32 s7, s7, 0xff
+; SI-NEXT:    v_readlane_b32 s9, v47, 8
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s15, s9, 24
+; SI-NEXT:    s_or_b32 s65, s15, s7
+; SI-NEXT:    v_readlane_b32 s7, v47, 7
+; SI-NEXT:    s_and_b32 s7, s7, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s82, 8
+; SI-NEXT:    s_or_b32 s82, s7, s17
+; SI-NEXT:    s_and_b32 s7, s71, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s83, 24
+; SI-NEXT:    s_or_b32 s71, s17, s7
+; SI-NEXT:    s_and_b32 s7, s87, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s86, 24
+; SI-NEXT:    s_or_b32 s67, s17, s7
+; SI-NEXT:    s_and_b32 s7, s84, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s85, 24
+; SI-NEXT:    s_or_b32 s86, s17, s7
+; SI-NEXT:    s_and_b32 s7, s99, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s98, 8
+; SI-NEXT:    s_or_b32 s83, s7, s17
+; SI-NEXT:    s_and_b32 s7, s96, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s97, 24
+; SI-NEXT:    s_or_b32 s87, s17, s7
+; SI-NEXT:    s_and_b32 s7, s29, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s11, 24
+; SI-NEXT:    s_or_b32 s11, s17, s7
+; SI-NEXT:    s_and_b32 s7, s8, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s28, 24
+; SI-NEXT:    s_or_b32 s9, s17, s7
+; SI-NEXT:    s_and_b32 s7, s42, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s40, 8
+; SI-NEXT:    s_or_b32 s84, s7, s17
+; SI-NEXT:    s_and_b32 s7, s13, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s10, 24
+; SI-NEXT:    s_or_b32 s15, s17, s7
+; SI-NEXT:    s_and_b32 s7, s56, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s43, 24
+; SI-NEXT:    s_or_b32 s29, s17, s7
+; SI-NEXT:    s_and_b32 s7, s41, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s47, 24
+; SI-NEXT:    s_or_b32 s40, s17, s7
+; SI-NEXT:    s_and_b32 s7, s61, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s58, 8
+; SI-NEXT:    s_or_b32 s85, s7, s17
+; SI-NEXT:    s_and_b32 s7, s60, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s46, 24
+; SI-NEXT:    s_or_b32 s42, s17, s7
+; SI-NEXT:    s_and_b32 s7, s88, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s73, 24
+; SI-NEXT:    s_or_b32 s41, s17, s7
+; SI-NEXT:    s_and_b32 s7, s62, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s63, 24
+; SI-NEXT:    s_or_b32 s28, s17, s7
+; SI-NEXT:    s_and_b32 s7, s91, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s90, 8
+; SI-NEXT:    s_mov_b32 s88, s86
+; SI-NEXT:    s_or_b32 s86, s7, s17
+; SI-NEXT:    s_and_b32 s7, s74, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s76, 24
+; SI-NEXT:    s_or_b32 s47, s17, s7
+; SI-NEXT:    s_and_b32 s7, s34, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s27, 24
+; SI-NEXT:    s_or_b32 s43, s17, s7
+; SI-NEXT:    s_and_b32 s7, s95, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, vcc_lo, 24
+; SI-NEXT:    s_or_b32 s27, s17, s7
+; SI-NEXT:    s_and_b32 s7, s25, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s45, 8
+; SI-NEXT:    s_mov_b32 s61, s21
+; SI-NEXT:    s_or_b32 s21, s7, s17
+; SI-NEXT:    s_and_b32 s7, s72, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s75, 24
+; SI-NEXT:    s_or_b32 s72, s17, s7
+; SI-NEXT:    s_and_b32 s7, s36, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s12, 24
+; SI-NEXT:    s_or_b32 s25, s17, s7
+; SI-NEXT:    s_and_b32 s7, s24, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s77, 24
+; SI-NEXT:    s_or_b32 s74, s17, s7
+; SI-NEXT:    s_and_b32 s7, s48, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s39, 8
+; SI-NEXT:    s_mov_b32 s46, s16
+; SI-NEXT:    s_or_b32 s16, s7, s17
+; SI-NEXT:    s_and_b32 s7, s52, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s92, 24
+; SI-NEXT:    s_or_b32 s52, s17, s7
+; SI-NEXT:    s_and_b32 s7, s44, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s66, 24
+; SI-NEXT:    s_mov_b32 s75, s51
+; SI-NEXT:    s_or_b32 s51, s17, s7
+; SI-NEXT:    s_and_b32 s7, s79, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s37, 24
+; SI-NEXT:    s_or_b32 s76, s17, s7
+; SI-NEXT:    s_and_b32 s7, s59, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s57, 8
 ; SI-NEXT:    s_mov_b32 s62, s22
-; SI-NEXT:    s_or_b32 s22, s19, s16
-; SI-NEXT:    s_and_b32 s16, s8, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s73, 24
-; SI-NEXT:    s_or_b32 s8, s19, s16
-; SI-NEXT:    s_and_b32 s16, s60, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v47, 32
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s63, 24
-; SI-NEXT:    s_or_b32 s15, s19, s16
-; SI-NEXT:    s_and_b32 s16, s9, 0xff
-; SI-NEXT:    s_lshl_b32 s19, s78, 8
-; SI-NEXT:    s_or_b32 s85, s16, s19
-; SI-NEXT:    s_and_b32 s16, s90, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v47, 31
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s9, 24
-; SI-NEXT:    s_mov_b32 s58, s24
-; SI-NEXT:    v_readlane_b32 s90, v46, 44
-; SI-NEXT:    s_or_b32 s24, s19, s16
-; SI-NEXT:    s_and_b32 s16, s35, 0xff
-; SI-NEXT:    v_readlane_b32 s36, v46, 46
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s90, 24
-; SI-NEXT:    s_or_b32 s9, s19, s16
-; SI-NEXT:    s_and_b32 s16, s36, 0xff
-; SI-NEXT:    s_mov_b32 s57, s38
-; SI-NEXT:    v_readlane_b32 s38, v46, 42
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s72, 24
-; SI-NEXT:    s_or_b32 s11, s19, s16
-; SI-NEXT:    s_and_b32 s16, s38, 0xff
-; SI-NEXT:    s_lshl_b32 s19, s46, 8
-; SI-NEXT:    s_or_b32 s86, s16, s19
-; SI-NEXT:    s_and_b32 s16, s74, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s77, 24
-; SI-NEXT:    s_or_b32 s43, s19, s16
-; SI-NEXT:    s_and_b32 s16, s21, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s49, 24
-; SI-NEXT:    s_or_b32 s44, s19, s16
-; SI-NEXT:    s_and_b32 s16, s30, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s26, 24
-; SI-NEXT:    s_or_b32 s42, s19, s16
-; SI-NEXT:    s_and_b32 s16, s69, 0xff
-; SI-NEXT:    s_lshl_b32 s19, s52, 8
-; SI-NEXT:    s_or_b32 s87, s16, s19
-; SI-NEXT:    s_and_b32 s16, s51, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s66, 24
-; SI-NEXT:    s_or_b32 s45, s19, s16
-; SI-NEXT:    s_and_b32 s16, s55, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s39, 24
-; SI-NEXT:    s_mov_b32 s66, s15
-; SI-NEXT:    s_or_b32 s15, s19, s16
-; SI-NEXT:    s_and_b32 s16, s67, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s54, 24
-; SI-NEXT:    s_or_b32 s30, s19, s16
-; SI-NEXT:    s_and_b32 s16, s91, 0xff
-; SI-NEXT:    s_lshl_b32 s19, s37, 8
-; SI-NEXT:    s_mov_b32 s63, s23
-; SI-NEXT:    s_or_b32 s23, s16, s19
-; SI-NEXT:    s_and_b32 s16, s64, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s17, 24
-; SI-NEXT:    s_or_b32 s67, s19, s16
-; SI-NEXT:    s_and_b32 s16, s94, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s28, 24
-; SI-NEXT:    s_mov_b32 s55, s13
-; SI-NEXT:    s_or_b32 s13, s19, s16
-; SI-NEXT:    s_and_b32 s16, s53, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s27, 24
-; SI-NEXT:    s_or_b32 s21, s19, s16
-; SI-NEXT:    s_and_b32 s16, s68, 0xff
-; SI-NEXT:    s_lshl_b32 s19, s65, 8
-; SI-NEXT:    s_or_b32 s26, s16, s19
-; SI-NEXT:    s_and_b32 s16, s47, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s95, 24
-; SI-NEXT:    s_mov_b32 s54, s12
-; SI-NEXT:    s_or_b32 s12, s19, s16
-; SI-NEXT:    s_and_b32 s16, s76, 0xff
+; SI-NEXT:    s_or_b32 s22, s7, s17
+; SI-NEXT:    s_and_b32 s7, s38, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s54, 24
+; SI-NEXT:    s_mov_b32 s77, s55
+; SI-NEXT:    s_or_b32 s55, s17, s7
+; SI-NEXT:    s_and_b32 s7, s89, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s81, 24
+; SI-NEXT:    s_or_b32 s54, s17, s7
+; SI-NEXT:    s_and_b32 s7, s80, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s30, 24
+; SI-NEXT:    s_or_b32 s45, s17, s7
+; SI-NEXT:    s_and_b32 s7, s64, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s94, 8
 ; SI-NEXT:    s_mov_b32 s60, s20
-; SI-NEXT:    v_readlane_b32 s20, v46, 43
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s31, 24
-; SI-NEXT:    s_mov_b32 s56, s88
-; SI-NEXT:    v_readlane_b32 s88, v46, 45
-; SI-NEXT:    s_mov_b32 s27, s9
-; SI-NEXT:    s_or_b32 s9, s19, s16
-; SI-NEXT:    s_and_b32 s16, s20, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s88, 24
-; SI-NEXT:    s_mov_b32 s91, s71
-; SI-NEXT:    s_or_b32 s71, s19, s16
-; SI-NEXT:    s_and_b32 s16, s41, 0xff
-; SI-NEXT:    s_lshl_b32 s19, s61, 8
-; SI-NEXT:    s_mov_b32 s78, s25
-; SI-NEXT:    s_or_b32 s25, s16, s19
-; SI-NEXT:    s_and_b32 s16, s89, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s59, 24
-; SI-NEXT:    s_mov_b32 s39, s81
-; SI-NEXT:    s_or_b32 s81, s19, s16
-; SI-NEXT:    s_and_b32 s16, s40, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s34, 24
-; SI-NEXT:    s_mov_b32 s51, s80
-; SI-NEXT:    s_or_b32 s80, s19, s16
-; SI-NEXT:    s_and_b32 s16, s93, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s79, 24
-; SI-NEXT:    v_readlane_b32 s97, v47, 30
-; SI-NEXT:    s_mov_b32 s52, s82
-; SI-NEXT:    s_or_b32 s82, s19, s16
-; SI-NEXT:    s_and_b32 s16, s29, 0xff
-; SI-NEXT:    s_lshl_b32 s19, s75, 8
-; SI-NEXT:    s_mov_b32 s37, s4
-; SI-NEXT:    s_mov_b32 s68, s24
-; SI-NEXT:    s_or_b32 s24, s16, s19
-; SI-NEXT:    s_and_b32 s16, s97, 0xff
-; SI-NEXT:    v_readlane_b32 s4, v46, 47
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_lshl_b32 s19, s92, 24
-; SI-NEXT:    s_lshl_b32 s94, s4, 16
-; SI-NEXT:    v_readlane_b32 s4, v46, 48
-; SI-NEXT:    s_mov_b32 s64, s96
-; SI-NEXT:    s_mov_b32 s53, s83
-; SI-NEXT:    s_mov_b32 s65, s22
-; SI-NEXT:    s_mov_b32 s49, s76
-; SI-NEXT:    s_mov_b32 s73, s92
-; SI-NEXT:    s_mov_b32 s72, s6
-; SI-NEXT:    s_or_b32 s83, s19, s16
-; SI-NEXT:    s_lshl_b32 s22, s4, 16
-; SI-NEXT:    s_lshl_b32 s19, s70, 16
-; SI-NEXT:    s_lshl_b32 s16, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s5, 16
-; SI-NEXT:    s_lshl_b32 s18, s18, 16
-; SI-NEXT:    s_lshl_b32 s7, vcc_lo, 16
-; SI-NEXT:    s_lshl_b32 s6, vcc_hi, 16
-; SI-NEXT:    s_lshl_b32 s99, s84, 16
-; SI-NEXT:    s_lshl_b32 s98, s85, 16
-; SI-NEXT:    s_lshl_b32 s97, s86, 16
-; SI-NEXT:    s_lshl_b32 s96, s87, 16
-; SI-NEXT:    s_lshl_b32 s87, s23, 16
-; SI-NEXT:    s_lshl_b32 s86, s26, 16
-; SI-NEXT:    v_readlane_b32 s26, v46, 50
-; SI-NEXT:    v_readlane_b32 s28, v46, 49
-; SI-NEXT:    s_lshl_b32 s85, s25, 16
-; SI-NEXT:    v_readlane_b32 s25, v46, 51
-; SI-NEXT:    s_lshl_b32 s84, s24, 16
-; SI-NEXT:    s_cbranch_execnz .LBB89_3
-; SI-NEXT:  .LBB89_2: ; %cmp.true
-; SI-NEXT:    s_add_i32 s4, s29, 3
-; SI-NEXT:    v_readlane_b32 s6, v47, 30
+; SI-NEXT:    s_or_b32 s20, s7, s17
+; SI-NEXT:    s_and_b32 s7, s78, 0xff
+; SI-NEXT:    v_readlane_b32 s8, v47, 31
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s8, 24
+; SI-NEXT:    s_or_b32 s66, s17, s7
+; SI-NEXT:    v_readlane_b32 s7, v47, 30
+; SI-NEXT:    s_and_b32 s7, s7, 0xff
+; SI-NEXT:    v_readlane_b32 s8, v47, 29
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s8, 24
+; SI-NEXT:    s_mov_b32 s78, s65
+; SI-NEXT:    s_or_b32 s65, s17, s7
+; SI-NEXT:    v_readlane_b32 s7, v47, 28
+; SI-NEXT:    s_and_b32 s7, s7, 0xff
+; SI-NEXT:    v_readlane_b32 s8, v47, 27
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s8, 24
+; SI-NEXT:    s_mov_b32 s44, s67
+; SI-NEXT:    s_or_b32 s67, s17, s7
+; SI-NEXT:    v_readlane_b32 s7, v47, 26
+; SI-NEXT:    s_and_b32 s7, s7, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s14, 8
+; SI-NEXT:    s_mov_b32 s63, s23
+; SI-NEXT:    s_or_b32 s23, s7, s17
+; SI-NEXT:    s_and_b32 s7, s35, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s68, 24
+; SI-NEXT:    s_mov_b32 s59, s69
+; SI-NEXT:    s_or_b32 s69, s17, s7
+; SI-NEXT:    s_and_b32 s7, s53, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s93, 24
+; SI-NEXT:    s_or_b32 s10, s17, s7
+; SI-NEXT:    s_and_b32 s7, s19, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s31, 24
+; SI-NEXT:    s_or_b32 s8, s17, s7
+; SI-NEXT:    s_and_b32 s7, s49, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s50, 8
+; SI-NEXT:    s_mov_b32 s56, s26
+; SI-NEXT:    s_or_b32 s26, s7, s17
+; SI-NEXT:    v_readlane_b32 s7, v46, 57
+; SI-NEXT:    s_mov_b32 s90, s7
+; SI-NEXT:    s_and_b32 s7, s7, 0xff
+; SI-NEXT:    v_readlane_b32 s12, v46, 56
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s17, s12, 24
+; SI-NEXT:    s_mov_b32 s79, s71
+; SI-NEXT:    s_or_b32 s71, s17, s7
+; SI-NEXT:    v_readlane_b32 s7, v46, 58
+; SI-NEXT:    s_lshl_b32 s17, s7, 16
+; SI-NEXT:    v_readlane_b32 s7, v46, 59
+; SI-NEXT:    s_mov_b32 s58, s18
+; SI-NEXT:    s_mov_b32 s91, s87
+; SI-NEXT:    s_mov_b32 vcc_lo, s35
+; SI-NEXT:    s_mov_b32 s95, s68
+; SI-NEXT:    s_mov_b32 s92, s53
+; SI-NEXT:    s_mov_b32 s30, s93
+; SI-NEXT:    s_mov_b32 s89, s19
+; SI-NEXT:    s_mov_b32 s36, s31
+; SI-NEXT:    s_mov_b32 s57, s49
+; SI-NEXT:    s_mov_b32 s94, s50
+; SI-NEXT:    s_mov_b32 s73, s12
+; SI-NEXT:    s_lshl_b32 s18, s7, 16
+; SI-NEXT:    s_lshl_b32 s7, vcc_hi, 16
+; SI-NEXT:    s_lshl_b32 s93, s5, 16
+; SI-NEXT:    s_lshl_b32 s99, s4, 16
+; SI-NEXT:    s_lshl_b32 s98, s82, 16
+; SI-NEXT:    s_lshl_b32 s97, s83, 16
+; SI-NEXT:    s_lshl_b32 s96, s84, 16
+; SI-NEXT:    s_lshl_b32 s87, s85, 16
+; SI-NEXT:    s_lshl_b32 s86, s86, 16
+; SI-NEXT:    s_lshl_b32 s85, s21, 16
+; SI-NEXT:    s_lshl_b32 s84, s16, 16
+; SI-NEXT:    s_lshl_b32 s83, s22, 16
+; SI-NEXT:    s_lshl_b32 s82, s20, 16
+; SI-NEXT:    s_lshl_b32 s81, s23, 16
+; SI-NEXT:    v_readlane_b32 s23, v46, 61
+; SI-NEXT:    v_readlane_b32 s24, v46, 60
+; SI-NEXT:    s_lshl_b32 s80, s26, 16
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB89_3
+; SI-NEXT:  .LBB89_2:
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    s_mov_b32 s92, s53
+; SI-NEXT:    s_mov_b32 s30, s93
+; SI-NEXT:    s_mov_b32 vcc_lo, s35
+; SI-NEXT:    s_mov_b32 s95, s68
+; SI-NEXT:    s_mov_b32 s57, s31
+; SI-NEXT:    s_mov_b32 s89, s14
+; SI-NEXT:    s_mov_b32 s36, s19
+; SI-NEXT:    s_mov_b32 s94, s50
+; SI-NEXT:    s_mov_b32 s90, s49
+; SI-NEXT:    s_mov_b32 s73, s4
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr17
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr18
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr23
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr70
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr99
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr97
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr96
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr87
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr86
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr85
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr84
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr83
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr82
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr65
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:    ; implicit-def: $sgpr81
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr80
+; SI-NEXT:    ; implicit-def: $sgpr71
+; SI-NEXT:  .LBB89_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB89_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    s_add_i32 s4, s57, 3
 ; SI-NEXT:    s_and_b32 s4, s4, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s75, 8
-; SI-NEXT:    s_add_i32 s6, s6, 3
+; SI-NEXT:    s_lshl_b32 s5, s94, 8
+; SI-NEXT:    s_add_i32 s6, s90, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s73, 24
@@ -145919,717 +146869,731 @@ define inreg <64 x bfloat> @bitcast_v128i8_to_v64bf16_scalar(<128 x i8> inreg %a
 ; SI-NEXT:    s_addk_i32 s4, 0x300
 ; SI-NEXT:    s_or_b32 s5, s5, s6
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
-; SI-NEXT:    s_add_i32 s29, s40, 3
+; SI-NEXT:    s_add_i32 s27, s92, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s5, s29, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s34, 8
-; SI-NEXT:    s_add_i32 s7, s93, 3
+; SI-NEXT:    s_and_b32 s5, s27, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s30, 8
+; SI-NEXT:    s_add_i32 s7, s89, 3
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_and_b32 s7, s7, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s79, 24
+; SI-NEXT:    s_lshl_b32 s6, s36, 24
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
 ; SI-NEXT:    s_addk_i32 s5, 0x300
 ; SI-NEXT:    s_or_b32 s6, s6, s7
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_add_i32 s40, s41, 3
 ; SI-NEXT:    s_or_b32 s5, s6, s5
-; SI-NEXT:    s_and_b32 s6, s40, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s61, 8
-; SI-NEXT:    s_add_i32 s10, s89, 3
+; SI-NEXT:    v_readlane_b32 s6, v47, 26
+; SI-NEXT:    s_add_i32 s14, s6, 3
+; SI-NEXT:    v_readlane_b32 s7, v46, 26
+; SI-NEXT:    s_and_b32 s6, s14, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 8
+; SI-NEXT:    s_add_i32 s16, vcc_lo, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_and_b32 s10, s10, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s59, 24
-; SI-NEXT:    s_lshl_b32 s10, s10, 16
+; SI-NEXT:    s_and_b32 s8, s16, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s95, 24
+; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_addk_i32 s6, 0x300
-; SI-NEXT:    s_or_b32 s7, s7, s10
+; SI-NEXT:    s_or_b32 s7, s7, s8
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_add_i32 s59, s49, 3
+; SI-NEXT:    s_or_b32 s8, s7, s6
+; SI-NEXT:    v_readlane_b32 s6, v47, 30
+; SI-NEXT:    s_add_i32 s57, s6, 3
+; SI-NEXT:    v_readlane_b32 s7, v47, 29
+; SI-NEXT:    v_readlane_b32 s9, v47, 28
+; SI-NEXT:    s_and_b32 s6, s57, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 8
+; SI-NEXT:    s_add_i32 s28, s9, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_and_b32 s7, s59, 0xff
-; SI-NEXT:    s_lshl_b32 s10, s31, 8
-; SI-NEXT:    s_add_i32 s8, s20, 3
-; SI-NEXT:    s_or_b32 s7, s10, s7
-; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    s_lshl_b32 s10, s88, 24
-; SI-NEXT:    s_lshl_b32 s8, s8, 16
+; SI-NEXT:    v_readlane_b32 s7, v47, 27
+; SI-NEXT:    s_and_b32 s9, s28, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 24
+; SI-NEXT:    s_lshl_b32 s9, s9, 16
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_or_b32 s7, s7, s9
+; SI-NEXT:    s_and_b32 s6, s6, 0xffff
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    v_readlane_b32 s7, v46, 45
+; SI-NEXT:    s_add_i32 s79, s7, 3
+; SI-NEXT:    v_readlane_b32 s9, v46, 36
+; SI-NEXT:    v_readlane_b32 s10, v46, 30
+; SI-NEXT:    s_and_b32 s7, s79, 0xff
+; SI-NEXT:    s_lshl_b32 s9, s9, 8
+; SI-NEXT:    s_add_i32 s41, s10, 3
+; SI-NEXT:    s_or_b32 s7, s9, s7
+; SI-NEXT:    v_readlane_b32 s9, v47, 31
+; SI-NEXT:    s_and_b32 s12, s41, 0xff
+; SI-NEXT:    s_lshl_b32 s9, s9, 24
+; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_addk_i32 s7, 0x300
-; SI-NEXT:    s_or_b32 s8, s10, s8
+; SI-NEXT:    s_or_b32 s9, s9, s12
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_or_b32 s7, s8, s7
-; SI-NEXT:    v_readlane_b32 s8, v46, 31
-; SI-NEXT:    s_add_i32 s89, s8, 3
-; SI-NEXT:    v_readlane_b32 s9, v46, 22
-; SI-NEXT:    s_and_b32 s8, s89, 0xff
-; SI-NEXT:    s_lshl_b32 s10, s9, 8
-; SI-NEXT:    s_add_i32 s43, s47, 3
-; SI-NEXT:    s_or_b32 s8, s10, s8
-; SI-NEXT:    s_and_b32 s11, s43, 0xff
-; SI-NEXT:    s_lshl_b32 s10, s95, 24
-; SI-NEXT:    s_lshl_b32 s11, s11, 16
-; SI-NEXT:    s_addk_i32 s8, 0x300
-; SI-NEXT:    s_or_b32 s10, s10, s11
-; SI-NEXT:    s_and_b32 s8, s8, 0xffff
-; SI-NEXT:    s_or_b32 s10, s10, s8
-; SI-NEXT:    v_readlane_b32 s8, v46, 36
-; SI-NEXT:    s_add_i32 s31, s8, 3
-; SI-NEXT:    v_readlane_b32 s9, v46, 32
-; SI-NEXT:    s_and_b32 s8, s31, 0xff
-; SI-NEXT:    s_lshl_b32 s11, s9, 8
-; SI-NEXT:    v_readlane_b32 s9, v46, 20
-; SI-NEXT:    s_or_b32 s8, s11, s8
-; SI-NEXT:    s_lshl_b32 s11, s9, 24
-; SI-NEXT:    v_readlane_b32 s9, v46, 21
-; SI-NEXT:    s_add_i32 s60, s9, 3
-; SI-NEXT:    s_and_b32 s14, s60, 0xff
+; SI-NEXT:    s_or_b32 s7, s9, s7
+; SI-NEXT:    v_readlane_b32 s9, v46, 50
+; SI-NEXT:    s_add_i32 s95, s9, 3
+; SI-NEXT:    v_readlane_b32 s10, v46, 46
+; SI-NEXT:    s_and_b32 s9, s95, 0xff
+; SI-NEXT:    s_lshl_b32 s12, s10, 8
+; SI-NEXT:    v_readlane_b32 s10, v46, 34
+; SI-NEXT:    s_or_b32 s9, s12, s9
+; SI-NEXT:    s_lshl_b32 s12, s10, 24
+; SI-NEXT:    v_readlane_b32 s10, v46, 35
+; SI-NEXT:    s_add_i32 s58, s10, 3
+; SI-NEXT:    s_and_b32 s13, s58, 0xff
+; SI-NEXT:    s_lshl_b32 s13, s13, 16
+; SI-NEXT:    s_addk_i32 s9, 0x300
+; SI-NEXT:    s_or_b32 s12, s12, s13
+; SI-NEXT:    s_and_b32 s9, s9, 0xffff
+; SI-NEXT:    s_or_b32 s13, s12, s9
+; SI-NEXT:    v_readlane_b32 s9, v46, 51
+; SI-NEXT:    s_add_i32 vcc_lo, s9, 3
+; SI-NEXT:    v_readlane_b32 s10, v46, 48
+; SI-NEXT:    s_and_b32 s9, vcc_lo, 0xff
+; SI-NEXT:    s_lshl_b32 s12, s10, 8
+; SI-NEXT:    v_readlane_b32 s10, v46, 38
+; SI-NEXT:    s_or_b32 s9, s12, s9
+; SI-NEXT:    s_lshl_b32 s12, s10, 24
+; SI-NEXT:    v_readlane_b32 s10, v46, 41
+; SI-NEXT:    s_add_i32 s74, s10, 3
+; SI-NEXT:    s_and_b32 s14, s74, 0xff
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
-; SI-NEXT:    s_addk_i32 s8, 0x300
-; SI-NEXT:    s_or_b32 s11, s11, s14
-; SI-NEXT:    s_and_b32 s8, s8, 0xffff
-; SI-NEXT:    s_or_b32 s11, s11, s8
-; SI-NEXT:    v_readlane_b32 s8, v46, 37
-; SI-NEXT:    s_add_i32 s34, s8, 3
-; SI-NEXT:    v_readlane_b32 s9, v46, 34
-; SI-NEXT:    s_and_b32 s8, s34, 0xff
-; SI-NEXT:    s_lshl_b32 s14, s9, 8
-; SI-NEXT:    v_readlane_b32 s9, v46, 24
-; SI-NEXT:    s_or_b32 s8, s14, s8
-; SI-NEXT:    s_lshl_b32 s14, s9, 24
-; SI-NEXT:    v_readlane_b32 s9, v46, 27
-; SI-NEXT:    s_add_i32 s76, s9, 3
+; SI-NEXT:    s_addk_i32 s9, 0x300
+; SI-NEXT:    s_or_b32 s12, s12, s14
+; SI-NEXT:    s_and_b32 s9, s9, 0xffff
+; SI-NEXT:    s_or_b32 s14, s12, s9
+; SI-NEXT:    v_readlane_b32 s9, v46, 53
+; SI-NEXT:    s_add_i32 s35, s9, 3
+; SI-NEXT:    v_readlane_b32 s10, v46, 52
+; SI-NEXT:    s_and_b32 s9, s35, 0xff
+; SI-NEXT:    s_lshl_b32 s12, s10, 8
+; SI-NEXT:    v_readlane_b32 s10, v46, 39
+; SI-NEXT:    s_or_b32 s9, s12, s9
+; SI-NEXT:    s_lshl_b32 s12, s10, 24
+; SI-NEXT:    v_readlane_b32 s10, v46, 42
+; SI-NEXT:    s_add_i32 s76, s10, 3
 ; SI-NEXT:    s_and_b32 s15, s76, 0xff
 ; SI-NEXT:    s_lshl_b32 s15, s15, 16
-; SI-NEXT:    s_addk_i32 s8, 0x300
-; SI-NEXT:    s_or_b32 s14, s14, s15
-; SI-NEXT:    s_and_b32 s8, s8, 0xffff
-; SI-NEXT:    s_or_b32 s14, s14, s8
-; SI-NEXT:    v_readlane_b32 s8, v46, 39
-; SI-NEXT:    s_add_i32 s39, s8, 3
-; SI-NEXT:    v_readlane_b32 s9, v46, 38
-; SI-NEXT:    s_and_b32 s8, s39, 0xff
-; SI-NEXT:    s_lshl_b32 s15, s9, 8
-; SI-NEXT:    v_readlane_b32 s9, v46, 25
-; SI-NEXT:    s_or_b32 s8, s15, s8
-; SI-NEXT:    s_lshl_b32 s15, s9, 24
-; SI-NEXT:    v_readlane_b32 s9, v46, 28
-; SI-NEXT:    s_add_i32 s78, s9, 3
-; SI-NEXT:    s_and_b32 s16, s78, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_addk_i32 s8, 0x300
-; SI-NEXT:    s_or_b32 s15, s15, s16
-; SI-NEXT:    s_and_b32 s8, s8, 0xffff
-; SI-NEXT:    s_or_b32 s15, s15, s8
-; SI-NEXT:    v_readlane_b32 s8, v46, 35
-; SI-NEXT:    s_add_i32 s30, s8, 3
-; SI-NEXT:    v_readlane_b32 s9, v46, 33
-; SI-NEXT:    s_and_b32 s8, s30, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s9, 8
-; SI-NEXT:    v_readlane_b32 s9, v46, 30
-; SI-NEXT:    s_or_b32 s8, s16, s8
-; SI-NEXT:    s_lshl_b32 s16, s9, 24
-; SI-NEXT:    v_readlane_b32 s9, v46, 29
-; SI-NEXT:    s_add_i32 s79, s9, 3
-; SI-NEXT:    s_and_b32 s17, s79, 0xff
+; SI-NEXT:    s_addk_i32 s9, 0x300
+; SI-NEXT:    s_or_b32 s12, s12, s15
+; SI-NEXT:    s_and_b32 s9, s9, 0xffff
+; SI-NEXT:    s_or_b32 s16, s12, s9
+; SI-NEXT:    v_readlane_b32 s9, v46, 49
+; SI-NEXT:    s_add_i32 s94, s9, 3
+; SI-NEXT:    v_readlane_b32 s10, v46, 47
+; SI-NEXT:    s_and_b32 s9, s94, 0xff
+; SI-NEXT:    s_lshl_b32 s12, s10, 8
+; SI-NEXT:    v_readlane_b32 s10, v46, 44
+; SI-NEXT:    s_or_b32 s9, s12, s9
+; SI-NEXT:    s_lshl_b32 s12, s10, 24
+; SI-NEXT:    v_readlane_b32 s10, v46, 43
+; SI-NEXT:    s_add_i32 s77, s10, 3
+; SI-NEXT:    s_and_b32 s15, s77, 0xff
+; SI-NEXT:    s_lshl_b32 s15, s15, 16
+; SI-NEXT:    s_addk_i32 s9, 0x300
+; SI-NEXT:    v_readlane_b32 s10, v46, 40
+; SI-NEXT:    s_or_b32 s12, s12, s15
+; SI-NEXT:    s_and_b32 s9, s9, 0xffff
+; SI-NEXT:    s_add_i32 s73, s10, 3
+; SI-NEXT:    v_readlane_b32 s10, v46, 37
+; SI-NEXT:    s_or_b32 s9, s12, s9
+; SI-NEXT:    s_and_b32 s12, s73, 0xff
+; SI-NEXT:    s_lshl_b32 s15, s10, 8
+; SI-NEXT:    v_readlane_b32 s10, v46, 33
+; SI-NEXT:    s_or_b32 s12, s15, s12
+; SI-NEXT:    s_lshl_b32 s15, s10, 24
+; SI-NEXT:    v_readlane_b32 s10, v46, 32
+; SI-NEXT:    s_add_i32 s46, s10, 3
+; SI-NEXT:    s_and_b32 s17, s46, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_addk_i32 s8, 0x300
-; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s8, s8, 0xffff
-; SI-NEXT:    s_or_b32 s16, s16, s8
-; SI-NEXT:    v_readlane_b32 s8, v46, 26
-; SI-NEXT:    s_add_i32 s75, s8, 3
-; SI-NEXT:    v_readlane_b32 s9, v46, 23
-; SI-NEXT:    s_and_b32 s8, s75, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s9, 8
-; SI-NEXT:    v_readlane_b32 s9, v46, 19
-; SI-NEXT:    s_or_b32 s8, s17, s8
-; SI-NEXT:    s_lshl_b32 s17, s9, 24
+; SI-NEXT:    s_addk_i32 s12, 0x300
+; SI-NEXT:    v_readlane_b32 s10, v46, 31
+; SI-NEXT:    s_or_b32 s15, s15, s17
+; SI-NEXT:    s_and_b32 s12, s12, 0xffff
+; SI-NEXT:    s_add_i32 s43, s10, 3
+; SI-NEXT:    v_readlane_b32 s10, v46, 29
+; SI-NEXT:    s_or_b32 s21, s15, s12
+; SI-NEXT:    s_lshl_b32 s15, s10, 8
+; SI-NEXT:    v_readlane_b32 s10, v46, 28
+; SI-NEXT:    s_lshl_b32 s11, s10, 24
+; SI-NEXT:    v_readlane_b32 s10, v46, 27
+; SI-NEXT:    s_and_b32 s12, s43, 0xff
+; SI-NEXT:    s_add_i32 s10, s10, 3
+; SI-NEXT:    s_or_b32 s12, s15, s12
+; SI-NEXT:    s_and_b32 s10, s10, 0xff
+; SI-NEXT:    s_lshl_b32 s10, s10, 16
+; SI-NEXT:    s_addk_i32 s12, 0x300
+; SI-NEXT:    s_or_b32 s10, s11, s10
+; SI-NEXT:    s_and_b32 s11, s12, 0xffff
+; SI-NEXT:    s_or_b32 s12, s10, s11
+; SI-NEXT:    v_readlane_b32 s10, v46, 25
+; SI-NEXT:    s_add_i32 s29, s10, 3
+; SI-NEXT:    v_readlane_b32 s11, v46, 24
+; SI-NEXT:    v_readlane_b32 s15, v46, 22
+; SI-NEXT:    s_and_b32 s10, s29, 0xff
+; SI-NEXT:    s_lshl_b32 s11, s11, 8
+; SI-NEXT:    s_add_i32 s19, s15, 3
+; SI-NEXT:    s_or_b32 s10, s11, s10
+; SI-NEXT:    v_readlane_b32 s11, v46, 23
+; SI-NEXT:    s_and_b32 s15, s19, 0xff
+; SI-NEXT:    s_lshl_b32 s11, s11, 24
+; SI-NEXT:    s_lshl_b32 s15, s15, 16
+; SI-NEXT:    s_addk_i32 s10, 0x300
+; SI-NEXT:    s_or_b32 s11, s11, s15
+; SI-NEXT:    s_and_b32 s10, s10, 0xffff
+; SI-NEXT:    s_or_b32 s25, s11, s10
+; SI-NEXT:    s_add_i32 s10, s6, 0x3000000
+; SI-NEXT:    v_readlane_b32 s6, v46, 21
+; SI-NEXT:    s_add_i32 s11, s7, 0x3000000
+; SI-NEXT:    s_add_i32 s19, s9, 0x3000000
+; SI-NEXT:    s_add_i32 s6, s6, 3
+; SI-NEXT:    v_readlane_b32 s7, v46, 20
 ; SI-NEXT:    v_readlane_b32 s9, v46, 18
-; SI-NEXT:    s_add_i32 s56, s9, 3
-; SI-NEXT:    s_and_b32 s18, s56, 0xff
-; SI-NEXT:    s_lshl_b32 s18, s18, 16
-; SI-NEXT:    s_addk_i32 s8, 0x300
-; SI-NEXT:    s_or_b32 s17, s17, s18
-; SI-NEXT:    s_and_b32 s8, s8, 0xffff
-; SI-NEXT:    s_add_i32 s45, s38, 3
-; SI-NEXT:    s_or_b32 s23, s17, s8
-; SI-NEXT:    s_and_b32 s8, s45, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s46, 8
-; SI-NEXT:    s_add_i32 s12, s74, 3
-; SI-NEXT:    s_or_b32 s8, s17, s8
-; SI-NEXT:    s_and_b32 s12, s12, 0xff
-; SI-NEXT:    s_lshl_b32 s13, s77, 24
-; SI-NEXT:    s_lshl_b32 s12, s12, 16
-; SI-NEXT:    s_addk_i32 s8, 0x300
-; SI-NEXT:    s_or_b32 s12, s13, s12
-; SI-NEXT:    s_and_b32 s8, s8, 0xffff
-; SI-NEXT:    s_add_i32 s9, s35, 3
-; SI-NEXT:    s_or_b32 s24, s12, s8
-; SI-NEXT:    s_and_b32 s8, s9, 0xff
-; SI-NEXT:    s_lshl_b32 s9, s90, 8
-; SI-NEXT:    s_add_i32 s21, s36, 3
-; SI-NEXT:    s_or_b32 s8, s9, s8
-; SI-NEXT:    v_readlane_b32 s9, v46, 17
-; SI-NEXT:    s_and_b32 s12, s21, 0xff
-; SI-NEXT:    s_lshl_b32 s9, s9, 24
-; SI-NEXT:    s_lshl_b32 s12, s12, 16
-; SI-NEXT:    s_addk_i32 s8, 0x300
-; SI-NEXT:    s_or_b32 s9, s9, s12
-; SI-NEXT:    s_and_b32 s8, s8, 0xffff
-; SI-NEXT:    s_or_b32 s27, s9, s8
-; SI-NEXT:    s_add_i32 s8, s6, 0x3000000
-; SI-NEXT:    v_readlane_b32 s6, v47, 32
-; SI-NEXT:    s_add_i32 s9, s7, 0x3000000
-; SI-NEXT:    s_add_i32 s12, s11, 0x3000000
+; SI-NEXT:    s_and_b32 s6, s6, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 8
+; SI-NEXT:    s_add_i32 s9, s9, 3
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    v_readlane_b32 s7, v46, 19
+; SI-NEXT:    s_and_b32 s9, s9, 0xff
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_lshl_b32 s7, s7, 24
+; SI-NEXT:    s_lshl_b32 s9, s9, 16
+; SI-NEXT:    s_and_b32 s6, s6, 0xffff
+; SI-NEXT:    s_or_b32 s7, s7, s9
+; SI-NEXT:    s_or_b32 s26, s7, s6
+; SI-NEXT:    v_readlane_b32 s6, v46, 17
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    v_readlane_b32 s7, v46, 16
-; SI-NEXT:    v_readlane_b32 s11, v46, 15
+; SI-NEXT:    v_readlane_b32 s9, v46, 14
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s7, 8
-; SI-NEXT:    s_add_i32 s11, s11, 3
+; SI-NEXT:    s_add_i32 s9, s9, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    v_readlane_b32 s7, v47, 31
-; SI-NEXT:    s_and_b32 s11, s11, 0xff
+; SI-NEXT:    v_readlane_b32 s7, v46, 15
+; SI-NEXT:    s_and_b32 s9, s9, 0xff
 ; SI-NEXT:    s_addk_i32 s6, 0x300
 ; SI-NEXT:    s_lshl_b32 s7, s7, 24
-; SI-NEXT:    s_lshl_b32 s11, s11, 16
+; SI-NEXT:    s_lshl_b32 s9, s9, 16
+; SI-NEXT:    s_and_b32 s6, s6, 0xffff
+; SI-NEXT:    s_or_b32 s7, s7, s9
+; SI-NEXT:    s_or_b32 s27, s7, s6
+; SI-NEXT:    v_readlane_b32 s6, v46, 13
+; SI-NEXT:    s_add_i32 s6, s6, 3
+; SI-NEXT:    v_readlane_b32 s7, v46, 12
+; SI-NEXT:    v_readlane_b32 s9, v46, 10
+; SI-NEXT:    s_and_b32 s6, s6, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 8
+; SI-NEXT:    s_add_i32 s9, s9, 3
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    v_readlane_b32 s7, v46, 11
+; SI-NEXT:    s_and_b32 s9, s9, 0xff
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_lshl_b32 s7, s7, 24
+; SI-NEXT:    s_lshl_b32 s9, s9, 16
+; SI-NEXT:    s_and_b32 s6, s6, 0xffff
+; SI-NEXT:    s_or_b32 s7, s7, s9
+; SI-NEXT:    s_or_b32 s28, s7, s6
+; SI-NEXT:    v_readlane_b32 s6, v46, 9
+; SI-NEXT:    s_add_i32 s6, s6, 3
+; SI-NEXT:    v_readlane_b32 s7, v46, 8
+; SI-NEXT:    v_readlane_b32 s9, v46, 6
+; SI-NEXT:    s_and_b32 s6, s6, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 8
+; SI-NEXT:    s_add_i32 s9, s9, 3
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    v_readlane_b32 s7, v46, 7
+; SI-NEXT:    s_and_b32 s9, s9, 0xff
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_lshl_b32 s7, s7, 24
+; SI-NEXT:    s_lshl_b32 s9, s9, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_or_b32 s7, s7, s11
+; SI-NEXT:    s_or_b32 s7, s7, s9
 ; SI-NEXT:    s_or_b32 s29, s7, s6
-; SI-NEXT:    v_readlane_b32 s6, v47, 33
+; SI-NEXT:    v_readlane_b32 s6, v46, 5
 ; SI-NEXT:    s_add_i32 s6, s6, 3
-; SI-NEXT:    v_readlane_b32 s7, v46, 14
-; SI-NEXT:    v_readlane_b32 s11, v46, 12
+; SI-NEXT:    v_readlane_b32 s7, v46, 4
+; SI-NEXT:    v_readlane_b32 s9, v46, 2
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s7, 8
-; SI-NEXT:    s_add_i32 s11, s11, 3
+; SI-NEXT:    s_add_i32 s9, s9, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    v_readlane_b32 s7, v46, 13
-; SI-NEXT:    s_and_b32 s11, s11, 0xff
+; SI-NEXT:    v_readlane_b32 s7, v46, 3
+; SI-NEXT:    s_and_b32 s9, s9, 0xff
 ; SI-NEXT:    s_addk_i32 s6, 0x300
 ; SI-NEXT:    s_lshl_b32 s7, s7, 24
-; SI-NEXT:    s_lshl_b32 s11, s11, 16
+; SI-NEXT:    s_lshl_b32 s9, s9, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_or_b32 s7, s7, s11
+; SI-NEXT:    s_or_b32 s7, s7, s9
 ; SI-NEXT:    s_or_b32 s40, s7, s6
-; SI-NEXT:    v_readlane_b32 s6, v46, 11
+; SI-NEXT:    v_readlane_b32 s6, v46, 1
 ; SI-NEXT:    s_add_i32 s6, s6, 3
-; SI-NEXT:    v_readlane_b32 s7, v46, 10
-; SI-NEXT:    v_readlane_b32 s11, v46, 8
+; SI-NEXT:    v_readlane_b32 s7, v46, 0
+; SI-NEXT:    v_readlane_b32 s9, v47, 62
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s7, 8
-; SI-NEXT:    s_add_i32 s11, s11, 3
+; SI-NEXT:    s_add_i32 s9, s9, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    v_readlane_b32 s7, v46, 9
-; SI-NEXT:    s_and_b32 s11, s11, 0xff
+; SI-NEXT:    v_readlane_b32 s7, v47, 63
+; SI-NEXT:    s_and_b32 s9, s9, 0xff
 ; SI-NEXT:    s_addk_i32 s6, 0x300
 ; SI-NEXT:    s_lshl_b32 s7, s7, 24
-; SI-NEXT:    s_lshl_b32 s11, s11, 16
+; SI-NEXT:    s_lshl_b32 s9, s9, 16
+; SI-NEXT:    s_and_b32 s6, s6, 0xffff
+; SI-NEXT:    s_or_b32 s7, s7, s9
+; SI-NEXT:    s_or_b32 s41, s7, s6
+; SI-NEXT:    v_readlane_b32 s6, v47, 61
+; SI-NEXT:    s_add_i32 s6, s6, 3
+; SI-NEXT:    v_readlane_b32 s7, v47, 60
+; SI-NEXT:    v_readlane_b32 s9, v47, 58
+; SI-NEXT:    s_and_b32 s6, s6, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 8
+; SI-NEXT:    s_add_i32 s9, s9, 3
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    v_readlane_b32 s7, v47, 59
+; SI-NEXT:    s_and_b32 s9, s9, 0xff
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_lshl_b32 s7, s7, 24
+; SI-NEXT:    s_lshl_b32 s9, s9, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_or_b32 s7, s7, s11
+; SI-NEXT:    s_or_b32 s7, s7, s9
 ; SI-NEXT:    s_or_b32 s42, s7, s6
-; SI-NEXT:    v_readlane_b32 s6, v46, 7
+; SI-NEXT:    v_readlane_b32 s6, v47, 57
 ; SI-NEXT:    s_add_i32 s6, s6, 3
-; SI-NEXT:    v_readlane_b32 s7, v46, 6
-; SI-NEXT:    v_readlane_b32 s11, v46, 4
+; SI-NEXT:    v_readlane_b32 s7, v47, 56
+; SI-NEXT:    v_readlane_b32 s9, v47, 54
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s7, 8
-; SI-NEXT:    s_add_i32 s11, s11, 3
+; SI-NEXT:    s_add_i32 s9, s9, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    v_readlane_b32 s7, v46, 5
-; SI-NEXT:    s_and_b32 s11, s11, 0xff
+; SI-NEXT:    v_readlane_b32 s7, v47, 55
+; SI-NEXT:    s_and_b32 s9, s9, 0xff
 ; SI-NEXT:    s_addk_i32 s6, 0x300
 ; SI-NEXT:    s_lshl_b32 s7, s7, 24
-; SI-NEXT:    s_lshl_b32 s11, s11, 16
+; SI-NEXT:    s_lshl_b32 s9, s9, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_or_b32 s7, s7, s11
-; SI-NEXT:    s_or_b32 s43, s7, s6
-; SI-NEXT:    v_readlane_b32 s6, v46, 3
+; SI-NEXT:    s_or_b32 s7, s7, s9
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    s_add_i32 s43, s6, 0x3000000
+; SI-NEXT:    v_readlane_b32 s6, v47, 7
 ; SI-NEXT:    s_add_i32 s6, s6, 3
-; SI-NEXT:    v_readlane_b32 s7, v46, 2
-; SI-NEXT:    v_readlane_b32 s11, v46, 0
+; SI-NEXT:    v_readlane_b32 s7, v47, 53
+; SI-NEXT:    v_readlane_b32 s9, v47, 51
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s7, 8
-; SI-NEXT:    s_add_i32 s11, s11, 3
+; SI-NEXT:    s_add_i32 s9, s9, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    v_readlane_b32 s7, v46, 1
-; SI-NEXT:    s_and_b32 s11, s11, 0xff
+; SI-NEXT:    v_readlane_b32 s7, v47, 52
+; SI-NEXT:    s_and_b32 s9, s9, 0xff
 ; SI-NEXT:    s_addk_i32 s6, 0x300
 ; SI-NEXT:    s_lshl_b32 s7, s7, 24
-; SI-NEXT:    s_lshl_b32 s11, s11, 16
+; SI-NEXT:    s_lshl_b32 s9, s9, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_or_b32 s7, s7, s11
+; SI-NEXT:    s_or_b32 s7, s7, s9
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    v_readlane_b32 s7, v47, 63
-; SI-NEXT:    s_add_i32 s13, s14, 0x3000000
+; SI-NEXT:    s_add_i32 s44, s6, 0x3000000
+; SI-NEXT:    v_readlane_b32 s6, v47, 11
+; SI-NEXT:    s_add_i32 s6, s6, 3
+; SI-NEXT:    v_readlane_b32 s7, v47, 10
+; SI-NEXT:    v_readlane_b32 s9, v47, 9
+; SI-NEXT:    s_and_b32 s6, s6, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 8
+; SI-NEXT:    s_add_i32 s9, s9, 3
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    v_readlane_b32 s7, v47, 8
+; SI-NEXT:    s_and_b32 s9, s9, 0xff
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_lshl_b32 s7, s7, 24
+; SI-NEXT:    s_lshl_b32 s9, s9, 16
+; SI-NEXT:    s_and_b32 s6, s6, 0xffff
+; SI-NEXT:    s_or_b32 s7, s7, s9
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    s_add_i32 s9, s6, 0x3000000
+; SI-NEXT:    v_readlane_b32 s6, v47, 15
+; SI-NEXT:    s_add_i32 s22, s12, 0x3000000
+; SI-NEXT:    s_add_i32 s6, s6, 3
+; SI-NEXT:    v_readlane_b32 s7, v47, 14
+; SI-NEXT:    v_readlane_b32 s12, v47, 13
+; SI-NEXT:    s_and_b32 s6, s6, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 8
+; SI-NEXT:    s_add_i32 s12, s12, 3
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    v_readlane_b32 s7, v47, 12
+; SI-NEXT:    s_and_b32 s12, s12, 0xff
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_lshl_b32 s7, s7, 24
+; SI-NEXT:    s_lshl_b32 s12, s12, 16
+; SI-NEXT:    s_and_b32 s6, s6, 0xffff
+; SI-NEXT:    s_or_b32 s7, s7, s12
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    s_add_i32 s15, s6, 0x3000000
+; SI-NEXT:    v_readlane_b32 s6, v47, 19
+; SI-NEXT:    s_add_i32 s6, s6, 3
+; SI-NEXT:    v_readlane_b32 s7, v47, 18
+; SI-NEXT:    v_readlane_b32 s12, v47, 17
+; SI-NEXT:    s_and_b32 s6, s6, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 8
+; SI-NEXT:    s_add_i32 s12, s12, 3
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    v_readlane_b32 s7, v47, 16
+; SI-NEXT:    s_and_b32 s12, s12, 0xff
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_lshl_b32 s7, s7, 24
+; SI-NEXT:    s_lshl_b32 s12, s12, 16
+; SI-NEXT:    s_and_b32 s6, s6, 0xffff
+; SI-NEXT:    s_or_b32 s7, s7, s12
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    s_add_i32 s12, s6, 0x3000000
+; SI-NEXT:    v_readlane_b32 s6, v47, 23
+; SI-NEXT:    s_add_i32 s6, s6, 3
+; SI-NEXT:    v_readlane_b32 s7, v47, 22
+; SI-NEXT:    v_readlane_b32 s17, v47, 21
+; SI-NEXT:    s_and_b32 s6, s6, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s7, 8
+; SI-NEXT:    s_add_i32 s17, s17, 3
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    v_readlane_b32 s7, v47, 20
+; SI-NEXT:    s_and_b32 s17, s17, 0xff
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_lshl_b32 s7, s7, 24
+; SI-NEXT:    s_lshl_b32 s17, s17, 16
+; SI-NEXT:    s_and_b32 s6, s6, 0xffff
+; SI-NEXT:    s_or_b32 s7, s7, s17
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    v_readlane_b32 s7, v47, 45
 ; SI-NEXT:    s_add_i32 s7, s7, 3
-; SI-NEXT:    v_readlane_b32 s11, v47, 62
-; SI-NEXT:    v_readlane_b32 s14, v47, 60
+; SI-NEXT:    v_readlane_b32 s17, v47, 43
+; SI-NEXT:    v_readlane_b32 s18, v47, 25
 ; SI-NEXT:    s_and_b32 s7, s7, 0xff
-; SI-NEXT:    s_lshl_b32 s11, s11, 8
-; SI-NEXT:    s_add_i32 s14, s14, 3
-; SI-NEXT:    s_or_b32 s7, s11, s7
-; SI-NEXT:    v_readlane_b32 s11, v47, 61
-; SI-NEXT:    s_and_b32 s14, s14, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_add_i32 s18, s18, 3
+; SI-NEXT:    s_or_b32 s7, s17, s7
+; SI-NEXT:    v_readlane_b32 s17, v47, 24
+; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s7, 0x300
-; SI-NEXT:    s_lshl_b32 s11, s11, 24
-; SI-NEXT:    s_lshl_b32 s14, s14, 16
+; SI-NEXT:    s_lshl_b32 s17, s17, 24
+; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_or_b32 s11, s11, s14
-; SI-NEXT:    s_or_b32 s44, s11, s7
-; SI-NEXT:    v_readlane_b32 s7, v47, 59
+; SI-NEXT:    s_or_b32 s17, s17, s18
+; SI-NEXT:    s_or_b32 s7, s17, s7
+; SI-NEXT:    s_add_i32 s20, s7, 0x3000000
+; SI-NEXT:    v_readlane_b32 s7, v47, 46
 ; SI-NEXT:    s_add_i32 s7, s7, 3
-; SI-NEXT:    v_readlane_b32 s11, v47, 58
-; SI-NEXT:    v_readlane_b32 s14, v47, 56
+; SI-NEXT:    v_readlane_b32 s17, v47, 44
+; SI-NEXT:    v_readlane_b32 s18, v47, 40
 ; SI-NEXT:    s_and_b32 s7, s7, 0xff
-; SI-NEXT:    s_lshl_b32 s11, s11, 8
-; SI-NEXT:    s_add_i32 s14, s14, 3
-; SI-NEXT:    s_or_b32 s7, s11, s7
-; SI-NEXT:    v_readlane_b32 s11, v47, 57
-; SI-NEXT:    s_and_b32 s14, s14, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_add_i32 s18, s18, 3
+; SI-NEXT:    s_or_b32 s7, s17, s7
+; SI-NEXT:    v_readlane_b32 s17, v47, 39
+; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s7, 0x300
-; SI-NEXT:    s_lshl_b32 s11, s11, 24
-; SI-NEXT:    s_lshl_b32 s14, s14, 16
+; SI-NEXT:    s_lshl_b32 s17, s17, 24
+; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_or_b32 s11, s11, s14
-; SI-NEXT:    s_or_b32 s7, s11, s7
-; SI-NEXT:    v_readlane_b32 s11, v47, 55
-; SI-NEXT:    s_add_i32 s21, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s11, s11, 3
-; SI-NEXT:    v_readlane_b32 s14, v47, 54
-; SI-NEXT:    v_readlane_b32 s16, v47, 52
-; SI-NEXT:    s_and_b32 s11, s11, 0xff
-; SI-NEXT:    s_lshl_b32 s14, s14, 8
-; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    s_or_b32 s11, s14, s11
-; SI-NEXT:    v_readlane_b32 s14, v47, 53
-; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_addk_i32 s11, 0x300
-; SI-NEXT:    s_lshl_b32 s14, s14, 24
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    s_or_b32 s14, s14, s16
-; SI-NEXT:    s_or_b32 s11, s14, s11
-; SI-NEXT:    s_add_i32 s45, s11, 0x3000000
-; SI-NEXT:    v_readlane_b32 s11, v47, 13
-; SI-NEXT:    s_add_i32 s11, s11, 3
-; SI-NEXT:    v_readlane_b32 s14, v47, 51
-; SI-NEXT:    v_readlane_b32 s16, v47, 49
-; SI-NEXT:    s_and_b32 s11, s11, 0xff
-; SI-NEXT:    s_lshl_b32 s14, s14, 8
-; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    s_or_b32 s11, s14, s11
-; SI-NEXT:    v_readlane_b32 s14, v47, 50
-; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_addk_i32 s11, 0x300
-; SI-NEXT:    s_lshl_b32 s14, s14, 24
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    s_or_b32 s14, s14, s16
-; SI-NEXT:    s_or_b32 s11, s14, s11
-; SI-NEXT:    s_add_i32 s18, s11, 0x3000000
-; SI-NEXT:    v_readlane_b32 s11, v47, 17
-; SI-NEXT:    s_add_i32 s11, s11, 3
-; SI-NEXT:    v_readlane_b32 s14, v47, 16
-; SI-NEXT:    v_readlane_b32 s16, v47, 15
-; SI-NEXT:    s_and_b32 s11, s11, 0xff
-; SI-NEXT:    s_lshl_b32 s14, s14, 8
-; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    s_or_b32 s11, s14, s11
-; SI-NEXT:    v_readlane_b32 s14, v47, 14
-; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_addk_i32 s11, 0x300
-; SI-NEXT:    s_lshl_b32 s14, s14, 24
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    s_or_b32 s14, s14, s16
-; SI-NEXT:    s_or_b32 s11, s14, s11
-; SI-NEXT:    v_readlane_b32 s14, v47, 21
-; SI-NEXT:    s_add_i32 s14, s14, 3
-; SI-NEXT:    v_readlane_b32 s16, v47, 20
-; SI-NEXT:    v_readlane_b32 s17, v47, 19
-; SI-NEXT:    s_and_b32 s14, s14, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 8
+; SI-NEXT:    s_or_b32 s17, s17, s18
+; SI-NEXT:    s_or_b32 s7, s17, s7
+; SI-NEXT:    v_readlane_b32 s17, v47, 49
 ; SI-NEXT:    s_add_i32 s17, s17, 3
-; SI-NEXT:    s_or_b32 s14, s16, s14
-; SI-NEXT:    v_readlane_b32 s16, v47, 18
+; SI-NEXT:    v_readlane_b32 s18, v47, 47
+; SI-NEXT:    v_readlane_b32 s23, v47, 42
 ; SI-NEXT:    s_and_b32 s17, s17, 0xff
-; SI-NEXT:    s_addk_i32 s14, 0x300
-; SI-NEXT:    s_lshl_b32 s16, s16, 24
-; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_and_b32 s14, s14, 0xffff
-; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_or_b32 s14, s16, s14
-; SI-NEXT:    s_add_i32 s17, s14, 0x3000000
-; SI-NEXT:    v_readlane_b32 s14, v47, 25
-; SI-NEXT:    s_add_i32 s14, s14, 3
-; SI-NEXT:    v_readlane_b32 s16, v47, 24
-; SI-NEXT:    v_readlane_b32 s19, v47, 23
-; SI-NEXT:    s_and_b32 s14, s14, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s16, 8
-; SI-NEXT:    s_add_i32 s19, s19, 3
-; SI-NEXT:    s_or_b32 s14, s16, s14
-; SI-NEXT:    v_readlane_b32 s16, v47, 22
-; SI-NEXT:    s_and_b32 s19, s19, 0xff
-; SI-NEXT:    s_addk_i32 s14, 0x300
-; SI-NEXT:    s_lshl_b32 s16, s16, 24
-; SI-NEXT:    s_lshl_b32 s19, s19, 16
-; SI-NEXT:    s_and_b32 s14, s14, 0xffff
-; SI-NEXT:    s_or_b32 s16, s16, s19
-; SI-NEXT:    s_or_b32 s14, s16, s14
-; SI-NEXT:    v_readlane_b32 s16, v47, 29
-; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s19, v47, 28
-; SI-NEXT:    v_readlane_b32 s20, v47, 27
-; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s19, s19, 8
-; SI-NEXT:    s_add_i32 s20, s20, 3
-; SI-NEXT:    s_or_b32 s16, s19, s16
-; SI-NEXT:    v_readlane_b32 s19, v47, 26
-; SI-NEXT:    s_and_b32 s20, s20, 0xff
-; SI-NEXT:    s_addk_i32 s16, 0x300
-; SI-NEXT:    s_lshl_b32 s19, s19, 24
-; SI-NEXT:    s_lshl_b32 s20, s20, 16
-; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    s_or_b32 s19, s19, s20
-; SI-NEXT:    s_or_b32 s16, s19, s16
-; SI-NEXT:    v_readlane_b32 s19, v47, 43
-; SI-NEXT:    s_add_i32 s19, s19, 3
-; SI-NEXT:    v_readlane_b32 s20, v47, 41
-; SI-NEXT:    v_readlane_b32 s22, v47, 36
-; SI-NEXT:    s_and_b32 s19, s19, 0xff
-; SI-NEXT:    s_lshl_b32 s20, s20, 8
-; SI-NEXT:    s_add_i32 s22, s22, 3
-; SI-NEXT:    s_or_b32 s19, s20, s19
-; SI-NEXT:    v_readlane_b32 s20, v47, 35
-; SI-NEXT:    s_and_b32 s22, s22, 0xff
-; SI-NEXT:    s_addk_i32 s19, 0x300
-; SI-NEXT:    s_lshl_b32 s20, s20, 24
-; SI-NEXT:    s_lshl_b32 s22, s22, 16
-; SI-NEXT:    s_and_b32 s19, s19, 0xffff
-; SI-NEXT:    s_or_b32 s20, s20, s22
-; SI-NEXT:    s_or_b32 s19, s20, s19
-; SI-NEXT:    s_add_i32 s25, s19, 0x3000000
-; SI-NEXT:    v_readlane_b32 s19, v47, 44
-; SI-NEXT:    s_add_i32 s19, s19, 3
-; SI-NEXT:    v_readlane_b32 s20, v47, 42
-; SI-NEXT:    v_readlane_b32 s22, v47, 38
-; SI-NEXT:    s_and_b32 s19, s19, 0xff
-; SI-NEXT:    s_lshl_b32 s20, s20, 8
-; SI-NEXT:    s_add_i32 s22, s22, 3
-; SI-NEXT:    s_or_b32 s19, s20, s19
-; SI-NEXT:    v_readlane_b32 s20, v47, 37
-; SI-NEXT:    s_and_b32 s22, s22, 0xff
-; SI-NEXT:    s_addk_i32 s19, 0x300
-; SI-NEXT:    s_lshl_b32 s20, s20, 24
-; SI-NEXT:    s_lshl_b32 s22, s22, 16
-; SI-NEXT:    s_and_b32 s19, s19, 0xffff
-; SI-NEXT:    s_or_b32 s20, s20, s22
-; SI-NEXT:    s_or_b32 s19, s20, s19
-; SI-NEXT:    v_readlane_b32 s20, v47, 47
-; SI-NEXT:    s_add_i32 s20, s20, 3
-; SI-NEXT:    v_readlane_b32 s22, v47, 45
-; SI-NEXT:    v_readlane_b32 s26, v47, 40
-; SI-NEXT:    s_and_b32 s20, s20, 0xff
-; SI-NEXT:    s_lshl_b32 s22, s22, 8
-; SI-NEXT:    s_add_i32 s26, s26, 3
-; SI-NEXT:    s_or_b32 s20, s22, s20
-; SI-NEXT:    v_readlane_b32 s22, v47, 39
-; SI-NEXT:    s_and_b32 s26, s26, 0xff
-; SI-NEXT:    s_addk_i32 s20, 0x300
-; SI-NEXT:    s_lshl_b32 s22, s22, 24
-; SI-NEXT:    s_lshl_b32 s26, s26, 16
-; SI-NEXT:    s_and_b32 s20, s20, 0xffff
-; SI-NEXT:    s_or_b32 s22, s22, s26
-; SI-NEXT:    s_or_b32 s20, s22, s20
-; SI-NEXT:    s_add_i32 s26, s20, 0x3000000
-; SI-NEXT:    v_readlane_b32 s20, v47, 1
-; SI-NEXT:    s_add_i32 s20, s20, 3
-; SI-NEXT:    v_readlane_b32 s22, v47, 0
-; SI-NEXT:    v_readlane_b32 s28, v47, 48
-; SI-NEXT:    s_and_b32 s20, s20, 0xff
-; SI-NEXT:    s_lshl_b32 s22, s22, 8
-; SI-NEXT:    s_add_i32 s28, s28, 3
-; SI-NEXT:    s_or_b32 s20, s22, s20
-; SI-NEXT:    v_readlane_b32 s22, v47, 46
-; SI-NEXT:    s_and_b32 s28, s28, 0xff
-; SI-NEXT:    s_addk_i32 s20, 0x300
-; SI-NEXT:    s_lshl_b32 s22, s22, 24
-; SI-NEXT:    s_lshl_b32 s28, s28, 16
-; SI-NEXT:    s_and_b32 s20, s20, 0xffff
-; SI-NEXT:    s_or_b32 s22, s22, s28
-; SI-NEXT:    s_or_b32 s20, s22, s20
-; SI-NEXT:    s_add_i32 s22, s20, 0x3000000
-; SI-NEXT:    v_readlane_b32 s20, v47, 5
-; SI-NEXT:    s_add_i32 s20, s20, 3
-; SI-NEXT:    v_readlane_b32 s28, v47, 4
-; SI-NEXT:    v_readlane_b32 s41, v47, 3
-; SI-NEXT:    s_and_b32 s20, s20, 0xff
-; SI-NEXT:    s_lshl_b32 s28, s28, 8
-; SI-NEXT:    s_add_i32 s41, s41, 3
-; SI-NEXT:    s_or_b32 s20, s28, s20
-; SI-NEXT:    v_readlane_b32 s28, v47, 2
-; SI-NEXT:    s_and_b32 s41, s41, 0xff
-; SI-NEXT:    s_addk_i32 s20, 0x300
-; SI-NEXT:    s_lshl_b32 s28, s28, 24
-; SI-NEXT:    s_lshl_b32 s41, s41, 16
-; SI-NEXT:    s_and_b32 s20, s20, 0xffff
-; SI-NEXT:    s_or_b32 s28, s28, s41
-; SI-NEXT:    s_or_b32 s20, s28, s20
-; SI-NEXT:    s_add_i32 s28, s20, 0x3000000
-; SI-NEXT:    v_readlane_b32 s20, v47, 9
-; SI-NEXT:    s_add_i32 s20, s20, 3
-; SI-NEXT:    v_readlane_b32 s41, v47, 8
-; SI-NEXT:    v_readlane_b32 s46, v47, 7
-; SI-NEXT:    s_and_b32 s20, s20, 0xff
-; SI-NEXT:    s_lshl_b32 s41, s41, 8
+; SI-NEXT:    s_lshl_b32 s18, s18, 8
+; SI-NEXT:    s_add_i32 s23, s23, 3
+; SI-NEXT:    s_or_b32 s17, s18, s17
+; SI-NEXT:    v_readlane_b32 s18, v47, 41
+; SI-NEXT:    s_and_b32 s23, s23, 0xff
+; SI-NEXT:    s_addk_i32 s17, 0x300
+; SI-NEXT:    s_lshl_b32 s18, s18, 24
+; SI-NEXT:    s_lshl_b32 s23, s23, 16
+; SI-NEXT:    s_and_b32 s17, s17, 0xffff
+; SI-NEXT:    s_or_b32 s18, s18, s23
+; SI-NEXT:    s_or_b32 s17, s18, s17
+; SI-NEXT:    s_add_i32 s23, s17, 0x3000000
+; SI-NEXT:    v_readlane_b32 s17, v47, 1
+; SI-NEXT:    s_add_i32 s17, s17, 3
+; SI-NEXT:    v_readlane_b32 s18, v47, 0
+; SI-NEXT:    v_readlane_b32 s24, v47, 50
+; SI-NEXT:    s_and_b32 s17, s17, 0xff
+; SI-NEXT:    s_lshl_b32 s18, s18, 8
+; SI-NEXT:    s_add_i32 s24, s24, 3
+; SI-NEXT:    s_or_b32 s17, s18, s17
+; SI-NEXT:    v_readlane_b32 s18, v47, 48
+; SI-NEXT:    s_and_b32 s24, s24, 0xff
+; SI-NEXT:    s_addk_i32 s17, 0x300
+; SI-NEXT:    s_lshl_b32 s18, s18, 24
+; SI-NEXT:    s_lshl_b32 s24, s24, 16
+; SI-NEXT:    s_and_b32 s17, s17, 0xffff
+; SI-NEXT:    s_or_b32 s18, s18, s24
+; SI-NEXT:    s_or_b32 s17, s18, s17
+; SI-NEXT:    s_add_i32 s18, s17, 0x3000000
+; SI-NEXT:    v_readlane_b32 s17, v47, 5
+; SI-NEXT:    s_add_i32 s17, s17, 3
+; SI-NEXT:    v_readlane_b32 s24, v47, 4
+; SI-NEXT:    v_readlane_b32 s45, v47, 3
+; SI-NEXT:    s_and_b32 s17, s17, 0xff
+; SI-NEXT:    s_lshl_b32 s24, s24, 8
+; SI-NEXT:    s_add_i32 s45, s45, 3
+; SI-NEXT:    s_or_b32 s17, s24, s17
+; SI-NEXT:    v_readlane_b32 s24, v47, 2
+; SI-NEXT:    s_and_b32 s45, s45, 0xff
+; SI-NEXT:    s_addk_i32 s17, 0x300
+; SI-NEXT:    s_lshl_b32 s24, s24, 24
+; SI-NEXT:    s_lshl_b32 s45, s45, 16
+; SI-NEXT:    s_and_b32 s17, s17, 0xffff
+; SI-NEXT:    s_or_b32 s24, s24, s45
+; SI-NEXT:    s_or_b32 s17, s24, s17
+; SI-NEXT:    s_add_i32 s24, s17, 0x3000000
+; SI-NEXT:    v_readlane_b32 s17, v47, 38
+; SI-NEXT:    s_add_i32 s17, s17, 3
+; SI-NEXT:    v_readlane_b32 s45, v47, 37
+; SI-NEXT:    v_readlane_b32 s46, v47, 36
+; SI-NEXT:    s_and_b32 s17, s17, 0xff
+; SI-NEXT:    s_lshl_b32 s45, s45, 8
 ; SI-NEXT:    s_add_i32 s46, s46, 3
-; SI-NEXT:    s_or_b32 s20, s41, s20
-; SI-NEXT:    v_readlane_b32 s41, v47, 6
+; SI-NEXT:    s_or_b32 s17, s45, s17
+; SI-NEXT:    v_readlane_b32 s45, v47, 6
 ; SI-NEXT:    s_and_b32 s46, s46, 0xff
-; SI-NEXT:    s_addk_i32 s20, 0x300
-; SI-NEXT:    s_lshl_b32 s41, s41, 24
+; SI-NEXT:    s_addk_i32 s17, 0x300
+; SI-NEXT:    s_lshl_b32 s45, s45, 24
 ; SI-NEXT:    s_lshl_b32 s46, s46, 16
-; SI-NEXT:    s_and_b32 s20, s20, 0xffff
-; SI-NEXT:    s_or_b32 s41, s41, s46
-; SI-NEXT:    s_or_b32 s20, s41, s20
-; SI-NEXT:    v_readlane_b32 s41, v47, 34
-; SI-NEXT:    s_add_i32 s41, s41, 3
-; SI-NEXT:    v_readlane_b32 s46, v47, 12
-; SI-NEXT:    v_readlane_b32 s47, v47, 11
-; SI-NEXT:    s_and_b32 s41, s41, 0xff
+; SI-NEXT:    s_and_b32 s17, s17, 0xffff
+; SI-NEXT:    s_or_b32 s45, s45, s46
+; SI-NEXT:    s_or_b32 s17, s45, s17
+; SI-NEXT:    v_readlane_b32 s45, v47, 35
+; SI-NEXT:    s_add_i32 s45, s45, 3
+; SI-NEXT:    v_readlane_b32 s46, v47, 34
+; SI-NEXT:    v_readlane_b32 s47, v47, 32
+; SI-NEXT:    s_and_b32 s45, s45, 0xff
 ; SI-NEXT:    s_lshl_b32 s46, s46, 8
 ; SI-NEXT:    s_add_i32 s47, s47, 3
-; SI-NEXT:    s_or_b32 s41, s46, s41
-; SI-NEXT:    v_readlane_b32 s46, v47, 10
+; SI-NEXT:    s_or_b32 s45, s46, s45
+; SI-NEXT:    v_readlane_b32 s46, v47, 33
 ; SI-NEXT:    s_and_b32 s47, s47, 0xff
-; SI-NEXT:    s_addk_i32 s41, 0x300
+; SI-NEXT:    s_addk_i32 s45, 0x300
 ; SI-NEXT:    s_lshl_b32 s46, s46, 24
 ; SI-NEXT:    s_lshl_b32 s47, s47, 16
-; SI-NEXT:    s_and_b32 s41, s41, 0xffff
+; SI-NEXT:    s_and_b32 s45, s45, 0xffff
 ; SI-NEXT:    s_or_b32 s46, s46, s47
-; SI-NEXT:    s_or_b32 s41, s46, s41
+; SI-NEXT:    s_or_b32 s45, s46, s45
+; SI-NEXT:    s_add_i32 s45, s45, 0x3000000
 ; SI-NEXT:    s_add_i32 s41, s41, 0x3000000
-; SI-NEXT:    s_add_i32 s40, s40, 0x3000000
-; SI-NEXT:    s_add_i32 s44, s44, 0x3000000
-; SI-NEXT:    s_add_i32 s20, s20, 0x3000000
-; SI-NEXT:    s_and_b32 s57, s41, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s56, s41, 16
-; SI-NEXT:    s_and_b32 s41, s28, 0xffff0000
+; SI-NEXT:    s_and_b32 s46, s45, 0xffff0000
 ; SI-NEXT:    s_add_i32 s4, s4, 0x3000000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
-; SI-NEXT:    s_add_i32 s10, s10, 0x3000000
-; SI-NEXT:    s_add_i32 s15, s15, 0x3000000
-; SI-NEXT:    s_add_i32 s23, s23, 0x3000000
-; SI-NEXT:    s_add_i32 s24, s24, 0x3000000
+; SI-NEXT:    s_add_i32 s8, s8, 0x3000000
+; SI-NEXT:    s_add_i32 s13, s13, 0x3000000
+; SI-NEXT:    s_add_i32 s14, s14, 0x3000000
+; SI-NEXT:    s_add_i32 s16, s16, 0x3000000
+; SI-NEXT:    s_add_i32 s21, s21, 0x3000000
+; SI-NEXT:    s_add_i32 s25, s25, 0x3000000
+; SI-NEXT:    s_add_i32 s26, s26, 0x3000000
 ; SI-NEXT:    s_add_i32 s27, s27, 0x3000000
+; SI-NEXT:    s_add_i32 s28, s28, 0x3000000
 ; SI-NEXT:    s_add_i32 s29, s29, 0x3000000
+; SI-NEXT:    s_add_i32 s40, s40, 0x3000000
 ; SI-NEXT:    s_add_i32 s42, s42, 0x3000000
-; SI-NEXT:    s_add_i32 s43, s43, 0x3000000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x3000000
 ; SI-NEXT:    s_add_i32 s7, s7, 0x3000000
-; SI-NEXT:    s_add_i32 s11, s11, 0x3000000
-; SI-NEXT:    s_add_i32 s14, s14, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s19, s19, 0x3000000
-; SI-NEXT:    s_and_b32 s60, s20, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s94, s20, 16
-; SI-NEXT:    v_writelane_b32 v46, s41, 40
-; SI-NEXT:    s_lshl_b32 s28, s28, 16
-; SI-NEXT:    s_lshl_b32 s20, s44, 16
-; SI-NEXT:    s_and_b32 s66, s40, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s40, s40, 16
-; SI-NEXT:    v_writelane_b32 v46, s28, 41
-; SI-NEXT:    s_and_b32 s28, s22, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s22, s22, 16
-; SI-NEXT:    s_and_b32 s62, s26, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s26, s26, 16
-; SI-NEXT:    s_and_b32 s63, s19, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s19, s19, 16
-; SI-NEXT:    s_and_b32 s72, s25, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s25, s25, 16
-; SI-NEXT:    s_and_b32 s78, s16, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    s_and_b32 s48, s14, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s58, s14, 16
-; SI-NEXT:    s_and_b32 s37, s17, 0xffff0000
+; SI-NEXT:    s_add_i32 s17, s17, 0x3000000
+; SI-NEXT:    v_writelane_b32 v46, s46, 54
+; SI-NEXT:    s_and_b32 s60, s24, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s24, s24, 16
+; SI-NEXT:    s_lshl_b32 s57, s41, 16
+; SI-NEXT:    s_lshl_b32 s46, s45, 16
+; SI-NEXT:    s_and_b32 s58, s17, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_and_b32 s14, s11, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s50, s11, 16
-; SI-NEXT:    s_and_b32 s51, s18, 0xffff0000
+; SI-NEXT:    v_writelane_b32 v46, s24, 55
+; SI-NEXT:    s_and_b32 s24, s18, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
-; SI-NEXT:    s_and_b32 s39, s45, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s91, s45, 16
-; SI-NEXT:    s_and_b32 s52, s7, 0xffff0000
+; SI-NEXT:    s_and_b32 s61, s23, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s23, s23, 16
+; SI-NEXT:    s_and_b32 s62, s7, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_and_b32 s53, s44, 0xffff0000
-; SI-NEXT:    s_and_b32 s55, s6, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_and_b32 s64, s43, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s54, s43, 16
-; SI-NEXT:    s_and_b32 s65, s42, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s99, s42, 16
-; SI-NEXT:    s_and_b32 s68, s29, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s98, s29, 16
-; SI-NEXT:    s_and_b32 s11, s27, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s27, s27, 16
-; SI-NEXT:    s_and_b32 s43, s24, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s97, s24, 16
-; SI-NEXT:    s_and_b32 s42, s23, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s44, s23, 16
-; SI-NEXT:    s_and_b32 s45, s21, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s96, s21, 16
-; SI-NEXT:    s_and_b32 s30, s15, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s15, s15, 16
-; SI-NEXT:    s_and_b32 s67, s13, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s87, s13, 16
-; SI-NEXT:    s_and_b32 s21, s12, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s13, s12, 16
-; SI-NEXT:    s_and_b32 s12, s10, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s86, s10, 16
-; SI-NEXT:    s_mov_b32 s10, s20
-; SI-NEXT:    s_and_b32 s71, s9, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s9, s9, 16
-; SI-NEXT:    s_and_b32 s81, s8, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s85, s8, 16
-; SI-NEXT:    s_mov_b32 s8, s40
-; SI-NEXT:    s_and_b32 s82, s5, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s80, s5, 16
-; SI-NEXT:    s_and_b32 s83, s4, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s84, s4, 16
-; SI-NEXT:  .LBB89_3: ; %end
-; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s57
+; SI-NEXT:    s_and_b32 s63, s20, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s70, s20, 16
+; SI-NEXT:    s_and_b32 s56, s6, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s93, s6, 16
+; SI-NEXT:    s_and_b32 s59, s12, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s6, s12, 16
+; SI-NEXT:    s_and_b32 s77, s15, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s99, s15, 16
+; SI-NEXT:    s_and_b32 s78, s9, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s75, s9, 16
+; SI-NEXT:    s_and_b32 s79, s44, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s98, s44, 16
+; SI-NEXT:    s_and_b32 s88, s43, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s44, s43, 16
+; SI-NEXT:    s_and_b32 s91, s42, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s97, s42, 16
+; SI-NEXT:    s_and_b32 s9, s41, 0xffff0000
+; SI-NEXT:    s_and_b32 s15, s40, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s96, s40, 16
+; SI-NEXT:    s_and_b32 s40, s29, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s29, s29, 16
+; SI-NEXT:    s_and_b32 s42, s28, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s87, s28, 16
+; SI-NEXT:    s_and_b32 s28, s27, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s41, s27, 16
+; SI-NEXT:    s_and_b32 s47, s26, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s86, s26, 16
+; SI-NEXT:    s_and_b32 s27, s25, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s43, s25, 16
+; SI-NEXT:    s_and_b32 s72, s22, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s85, s22, 16
+; SI-NEXT:    s_and_b32 s74, s21, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s25, s21, 16
+; SI-NEXT:    s_and_b32 s52, s19, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s84, s19, 16
+; SI-NEXT:    s_and_b32 s76, s16, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s51, s16, 16
+; SI-NEXT:    s_and_b32 s55, s14, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s83, s14, 16
+; SI-NEXT:    s_and_b32 s45, s13, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s54, s13, 16
+; SI-NEXT:    s_and_b32 s66, s11, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s82, s11, 16
+; SI-NEXT:    s_mov_b32 s11, s57
+; SI-NEXT:    s_and_b32 s67, s10, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s65, s10, 16
+; SI-NEXT:    s_and_b32 s69, s8, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s81, s8, 16
+; SI-NEXT:    s_and_b32 s8, s5, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s10, s5, 16
+; SI-NEXT:    s_and_b32 s71, s4, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s80, s4, 16
+; SI-NEXT:  .LBB89_5: ; %end
+; SI-NEXT:    v_readlane_b32 s4, v46, 54
+; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s4
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
-; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s56
+; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s46
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
-; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s60
+; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s58
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v1
-; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s94
+; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s17
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
-; SI-NEXT:    v_readlane_b32 s4, v46, 40
-; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s4
-; SI-NEXT:    v_readlane_b32 s4, v46, 41
+; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s60
+; SI-NEXT:    v_readlane_b32 s4, v46, 55
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
 ; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s4
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[2:3], 16
-; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s28
+; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s24
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v3
-; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s22
+; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s18
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
-; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s62
+; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s61
 ; SI-NEXT:    buffer_load_dword v44, off, s[0:3], s32 offset:336 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v43, off, s[0:3], s32 offset:340 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:344 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:348 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:352 ; 4-byte Folded Reload
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v4
-; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s26
+; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s23
 ; SI-NEXT:    v_lshr_b64 v[4:5], v[4:5], 16
-; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s63
+; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s62
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v5
-; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s19
+; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s7
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[5:6], 16
-; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s72
+; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s63
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v6
-; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s25
+; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s70
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[6:7], 16
-; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s78
+; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s56
 ; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v7
-; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s16
+; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s93
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[7:8], 16
-; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s48
+; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s59
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v8
-; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s58
+; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[8:9], v[8:9], 16
-; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s37
+; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s77
 ; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v9
-; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s17
+; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s99
 ; SI-NEXT:    v_lshr_b64 v[9:10], v[9:10], 16
-; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s14
+; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s78
 ; SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v10
-; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s50
+; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s75
 ; SI-NEXT:    v_lshr_b64 v[10:11], v[10:11], 16
-; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s51
+; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s79
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v11
-; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s18
+; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s98
 ; SI-NEXT:    v_lshr_b64 v[11:12], v[11:12], 16
-; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s39
+; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s88
 ; SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v12
-; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s91
+; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s44
 ; SI-NEXT:    v_lshr_b64 v[12:13], v[12:13], 16
-; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s52
+; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s91
 ; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v13
-; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s7
+; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s97
 ; SI-NEXT:    v_lshr_b64 v[13:14], v[13:14], 16
-; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s53
+; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s9
 ; SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v14
-; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s10
+; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s11
 ; SI-NEXT:    v_lshr_b64 v[14:15], v[14:15], 16
-; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s55
+; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s15
 ; SI-NEXT:    v_lshrrev_b32_e32 v16, 16, v15
-; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s6
+; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s96
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[15:16], 16
-; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s64
+; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s40
 ; SI-NEXT:    v_lshrrev_b32_e32 v17, 16, v16
-; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s54
+; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s29
 ; SI-NEXT:    v_lshr_b64 v[16:17], v[16:17], 16
-; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s65
+; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s42
 ; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v17
-; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s99
+; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s87
 ; SI-NEXT:    v_lshr_b64 v[17:18], v[17:18], 16
-; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s66
+; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s28
 ; SI-NEXT:    v_lshrrev_b32_e32 v19, 16, v18
-; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s8
+; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s41
 ; SI-NEXT:    v_lshr_b64 v[18:19], v[18:19], 16
-; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s68
+; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s47
 ; SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v19
-; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s98
+; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s86
 ; SI-NEXT:    v_lshr_b64 v[19:20], v[19:20], 16
-; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s11
-; SI-NEXT:    v_lshrrev_b32_e32 v21, 16, v20
 ; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s27
+; SI-NEXT:    v_lshrrev_b32_e32 v21, 16, v20
+; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s43
 ; SI-NEXT:    v_lshr_b64 v[20:21], v[20:21], 16
-; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s43
+; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s72
 ; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v21
-; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s97
+; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s85
 ; SI-NEXT:    v_lshr_b64 v[21:22], v[21:22], 16
-; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s42
+; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s74
 ; SI-NEXT:    v_lshrrev_b32_e32 v23, 16, v22
-; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s44
+; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s25
 ; SI-NEXT:    v_lshr_b64 v[22:23], v[22:23], 16
-; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s45
+; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s52
 ; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v23
-; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s96
+; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s84
 ; SI-NEXT:    v_lshr_b64 v[23:24], v[23:24], 16
-; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s30
+; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s76
 ; SI-NEXT:    v_lshrrev_b32_e32 v25, 16, v24
-; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s15
+; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s51
 ; SI-NEXT:    v_lshr_b64 v[24:25], v[24:25], 16
-; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s67
+; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s55
 ; SI-NEXT:    v_lshrrev_b32_e32 v26, 16, v25
-; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s87
+; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s83
 ; SI-NEXT:    v_lshr_b64 v[25:26], v[25:26], 16
-; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s21
+; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s45
 ; SI-NEXT:    v_lshrrev_b32_e32 v27, 16, v26
-; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s13
+; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s54
 ; SI-NEXT:    v_lshr_b64 v[26:27], v[26:27], 16
-; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s12
+; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s66
 ; SI-NEXT:    v_lshrrev_b32_e32 v28, 16, v27
-; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s86
+; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s82
 ; SI-NEXT:    v_lshr_b64 v[27:28], v[27:28], 16
-; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s71
+; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s67
 ; SI-NEXT:    v_lshrrev_b32_e32 v29, 16, v28
-; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s9
+; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s65
 ; SI-NEXT:    v_lshr_b64 v[28:29], v[28:29], 16
-; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s81
+; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s69
 ; SI-NEXT:    v_lshrrev_b32_e32 v30, 16, v29
-; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s85
+; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s81
 ; SI-NEXT:    v_lshr_b64 v[29:30], v[29:30], 16
-; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s82
+; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s8
 ; SI-NEXT:    v_lshrrev_b32_e32 v31, 16, v30
-; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s80
+; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s10
 ; SI-NEXT:    v_lshr_b64 v[30:31], v[30:31], 16
-; SI-NEXT:    v_mul_f32_e64 v31, 1.0, s83
+; SI-NEXT:    v_mul_f32_e64 v31, 1.0, s71
 ; SI-NEXT:    v_lshrrev_b32_e32 v32, 16, v31
-; SI-NEXT:    v_mul_f32_e64 v31, 1.0, s84
+; SI-NEXT:    v_mul_f32_e64 v31, 1.0, s80
 ; SI-NEXT:    v_readlane_b32 s30, v45, 34
 ; SI-NEXT:    v_lshr_b64 v[31:32], v[31:32], 16
 ; SI-NEXT:    v_readlane_b32 s31, v45, 35
@@ -146674,76 +147638,6 @@ define inreg <64 x bfloat> @bitcast_v128i8_to_v64bf16_scalar(<128 x i8> inreg %a
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB89_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_mov_b32 s49, s76
-; SI-NEXT:    s_mov_b32 s73, s92
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr22
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr19
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr16
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr17
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr18
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr99
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr98
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr97
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr96
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr87
-; SI-NEXT:    ; implicit-def: $sgpr67
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr21
-; SI-NEXT:    ; implicit-def: $sgpr86
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr71
-; SI-NEXT:    ; implicit-def: $sgpr85
-; SI-NEXT:    ; implicit-def: $sgpr81
-; SI-NEXT:    ; implicit-def: $sgpr80
-; SI-NEXT:    ; implicit-def: $sgpr82
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    ; implicit-def: $sgpr83
-; SI-NEXT:    s_branch .LBB89_2
 ;
 ; VI-LABEL: bitcast_v128i8_to_v64bf16_scalar:
 ; VI:       ; %bb.0:
@@ -146960,7 +147854,7 @@ define inreg <64 x bfloat> @bitcast_v128i8_to_v64bf16_scalar(<128 x i8> inreg %a
 ; VI-NEXT:    buffer_load_ushort v0, off, s[0:3], s32 offset:16
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:492 ; 4-byte Folded Spill
-; VI-NEXT:    s_cbranch_scc0 .LBB89_4
+; VI-NEXT:    s_cbranch_scc0 .LBB89_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; VI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:632 ; 4-byte Folded Spill
@@ -147180,12 +148074,32 @@ define inreg <64 x bfloat> @bitcast_v128i8_to_v64bf16_scalar(<128 x i8> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v35, v43
 ; VI-NEXT:    v_perm_b32 v43, v44, v43, s4
 ; VI-NEXT:    v_or_b32_e32 v31, v43, v31
+; VI-NEXT:    s_mov_b64 s[4:5], 0
 ; VI-NEXT:    v_mov_b32_e32 v43, v39
 ; VI-NEXT:    v_mov_b32_e32 v39, v34
 ; VI-NEXT:    v_mov_b32_e32 v34, v52
 ; VI-NEXT:    v_mov_b32_e32 v52, v45
-; VI-NEXT:    s_cbranch_execnz .LBB89_3
-; VI-NEXT:  .LBB89_2: ; %cmp.true
+; VI-NEXT:    s_branch .LBB89_3
+; VI-NEXT:  .LBB89_2:
+; VI-NEXT:    v_mov_b32_e32 v43, v39
+; VI-NEXT:    v_mov_b32_e32 v52, v34
+; VI-NEXT:    v_mov_b32_e32 v39, v33
+; VI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:512 ; 4-byte Folded Reload
+; VI-NEXT:    v_mov_b32_e32 v34, v53
+; VI-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:508 ; 4-byte Folded Reload
+; VI-NEXT:    buffer_load_dword v48, off, s[0:3], s32 offset:516 ; 4-byte Folded Reload
+; VI-NEXT:    v_mov_b32_e32 v62, v2
+; VI-NEXT:    v_mov_b32_e32 v35, v1
+; VI-NEXT:    v_mov_b32_e32 v55, v57
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; VI-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; VI-NEXT:  .LBB89_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB89_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:468 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:476 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
@@ -147600,7 +148514,7 @@ define inreg <64 x bfloat> @bitcast_v128i8_to_v64bf16_scalar(<128 x i8> inreg %a
 ; VI-NEXT:    v_or_b32_sdwa v27, v46, v27 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v18, vcc, 0x3000000, v18
 ; VI-NEXT:    v_add_u32_e32 v27, vcc, 0x3000000, v27
-; VI-NEXT:  .LBB89_3: ; %end
+; VI-NEXT:  .LBB89_5: ; %end
 ; VI-NEXT:    buffer_load_dword v63, off, s[0:3], s32 offset:336 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v62, off, s[0:3], s32 offset:340 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v61, off, s[0:3], s32 offset:344 ; 4-byte Folded Reload
@@ -147619,20 +148533,6 @@ define inreg <64 x bfloat> @bitcast_v128i8_to_v64bf16_scalar(<128 x i8> inreg %a
 ; VI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:396 ; 4-byte Folded Reload
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB89_4:
-; VI-NEXT:    v_mov_b32_e32 v43, v39
-; VI-NEXT:    v_mov_b32_e32 v52, v34
-; VI-NEXT:    v_mov_b32_e32 v39, v33
-; VI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:512 ; 4-byte Folded Reload
-; VI-NEXT:    v_mov_b32_e32 v34, v53
-; VI-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:508 ; 4-byte Folded Reload
-; VI-NEXT:    buffer_load_dword v48, off, s[0:3], s32 offset:516 ; 4-byte Folded Reload
-; VI-NEXT:    v_mov_b32_e32 v62, v2
-; VI-NEXT:    v_mov_b32_e32 v35, v1
-; VI-NEXT:    v_mov_b32_e32 v55, v57
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; VI-NEXT:    s_branch .LBB89_2
 ;
 ; GFX9-LABEL: bitcast_v128i8_to_v64bf16_scalar:
 ; GFX9:       ; %bb.0:
@@ -148124,8 +149024,10 @@ define inreg <64 x bfloat> @bitcast_v128i8_to_v64bf16_scalar(<128 x i8> inreg %a
 ; GFX9-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
 ; GFX9-NEXT:  .LBB89_3: ; %Flow
 ; GFX9-NEXT:    buffer_load_dword v36, off, s[0:3], s32 offset:400 ; 4-byte Folded Reload
-; GFX9-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GFX9-NEXT:    s_cbranch_vccnz .LBB89_5
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB89_5
 ; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_waitcnt vmcnt(5)
 ; GFX9-NEXT:    v_add_u32_e32 v0, 3, v48
@@ -148677,7 +149579,7 @@ define inreg <64 x bfloat> @bitcast_v128i8_to_v64bf16_scalar(<128 x i8> inreg %a
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v31
 ; GFX11-TRUE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB89_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB89_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v8, 0xc0c0004 :: v_dual_lshlrev_b32 v13, 8, v86
@@ -148829,9 +149731,18 @@ define inreg <64 x bfloat> @bitcast_v128i8_to_v64bf16_scalar(<128 x i8> inreg %a
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, s77
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e64 v30.h, v183.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v31.h, v41.l
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB89_3
-; GFX11-TRUE16-NEXT:  .LBB89_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB89_3
+; GFX11-TRUE16-NEXT:  .LBB89_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; GFX11-TRUE16-NEXT:  .LBB89_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB89_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v0, 3, v180
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 3, v166
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v2, 3, v182
@@ -149060,16 +149971,12 @@ define inreg <64 x bfloat> @bitcast_v128i8_to_v64bf16_scalar(<128 x i8> inreg %a
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v29.h, v102.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e64 v30.h, v129.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e64 v31.h, v133.l
-; GFX11-TRUE16-NEXT:  .LBB89_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB89_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; 8-byte Folded Reload
 ; GFX11-TRUE16-NEXT:    scratch_load_b32 v41, off, s32 offset:320
 ; GFX11-TRUE16-NEXT:    scratch_load_b32 v40, off, s32 offset:324
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB89_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; GFX11-TRUE16-NEXT:    s_branch .LBB89_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v128i8_to_v64bf16_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -149193,7 +150100,7 @@ define inreg <64 x bfloat> @bitcast_v128i8_to_v64bf16_scalar(<128 x i8> inreg %a
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v31
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB89_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB89_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, s74, 0xff
@@ -149384,9 +150291,18 @@ define inreg <64 x bfloat> @bitcast_v128i8_to_v64bf16_scalar(<128 x i8> inreg %a
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, s76
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v31, v31, 16, v40
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB89_3
-; GFX11-FAKE16-NEXT:  .LBB89_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB89_3
+; GFX11-FAKE16-NEXT:  .LBB89_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; GFX11-FAKE16-NEXT:  .LBB89_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB89_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v0, 3, v182
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 3, v180
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v3, 3, v178
@@ -149647,14 +150563,10 @@ define inreg <64 x bfloat> @bitcast_v128i8_to_v64bf16_scalar(<128 x i8> inreg %a
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v29, v150, 16, v29
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v30, v30, 16, v34
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v31, v31, 16, v35
-; GFX11-FAKE16-NEXT:  .LBB89_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB89_5: ; %end
 ; GFX11-FAKE16-NEXT:    scratch_load_b32 v40, off, s32 offset:320 ; 4-byte Folded Reload
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB89_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; GFX11-FAKE16-NEXT:    s_branch .LBB89_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -157162,7 +158074,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s29
 ; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s18
 ; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s28
-; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s19
+; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s19
 ; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s27
 ; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s20
 ; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s26
@@ -157173,24 +158085,24 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s23
 ; SI-NEXT:    v_mul_f32_e64 v45, 1.0, s14
 ; SI-NEXT:    v_mul_f32_e64 v60, 1.0, s15
-; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s12
+; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s12
 ; SI-NEXT:    v_mul_f32_e64 v33, 1.0, s13
 ; SI-NEXT:    v_mul_f32_e64 v35, 1.0, s10
-; SI-NEXT:    v_mul_f32_e64 v49, 1.0, s11
+; SI-NEXT:    v_mul_f32_e64 v51, 1.0, s11
 ; SI-NEXT:    v_mul_f32_e64 v56, 1.0, s8
 ; SI-NEXT:    v_mul_f32_e64 v34, 1.0, s9
 ; SI-NEXT:    v_mul_f32_e64 v54, 1.0, s6
 ; SI-NEXT:    v_mul_f32_e64 v40, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s4
-; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s5
-; SI-NEXT:    v_mul_f32_e64 v38, 1.0, s35
+; SI-NEXT:    v_mul_f32_e64 v38, 1.0, s5
+; SI-NEXT:    v_mul_f32_e64 v49, 1.0, s35
 ; SI-NEXT:    v_mul_f32_e64 v42, 1.0, s34
 ; SI-NEXT:    v_mul_f32_e64 v48, 1.0, s31
-; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s30
-; SI-NEXT:    v_mul_f32_e64 v51, 1.0, vcc_hi
-; SI-NEXT:    v_mul_f32_e64 v50, 1.0, vcc_lo
+; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s30
+; SI-NEXT:    v_mul_f32_e64 v50, 1.0, vcc_hi
+; SI-NEXT:    v_mul_f32_e64 v2, 1.0, vcc_lo
 ; SI-NEXT:    v_mul_f32_e64 v53, 1.0, s95
-; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s94
+; SI-NEXT:    v_mul_f32_e64 v36, 1.0, s94
 ; SI-NEXT:    v_mul_f32_e64 v44, 1.0, s93
 ; SI-NEXT:    v_mul_f32_e64 v47, 1.0, s92
 ; SI-NEXT:    v_mul_f32_e64 v41, 1.0, s91
@@ -157198,19 +158110,19 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_mul_f32_e64 v57, 1.0, s89
 ; SI-NEXT:    v_mul_f32_e64 v59, 1.0, s88
 ; SI-NEXT:    v_mul_f32_e64 v46, 1.0, s79
-; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s78
+; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s78
 ; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s77
 ; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s76
 ; SI-NEXT:    v_mul_f32_e64 v58, 1.0, s75
-; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s74
+; SI-NEXT:    v_mul_f32_e64 v43, 1.0, s74
 ; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s73
-; SI-NEXT:    v_mul_f32_e64 v36, 1.0, s72
+; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s72
 ; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s63
-; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s62
-; SI-NEXT:    v_mul_f32_e64 v43, 1.0, s61
-; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s60
+; SI-NEXT:    v_mul_f32_e64 v55, 1.0, s62
+; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s61
+; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s60
 ; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s59
-; SI-NEXT:    v_mul_f32_e64 v55, 1.0, s58
+; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s58
 ; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s47
 ; SI-NEXT:    v_mul_f32_e64 v39, 1.0, s45
 ; SI-NEXT:    buffer_store_dword v8, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
@@ -157222,7 +158134,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    buffer_store_dword v4, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v10, off, s[0:3], s32 offset:88 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v15, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v19, off, s[0:3], s32 offset:96 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v20, off, s[0:3], s32 offset:96 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v24, off, s[0:3], s32 offset:100 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v25, off, s[0:3], s32 offset:104 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v26, off, s[0:3], s32 offset:108 ; 4-byte Folded Spill
@@ -157240,8 +158152,8 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:156 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:160 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v9, off, s[0:3], s32 offset:164 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v14, off, s[0:3], s32 offset:168 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v20, off, s[0:3], s32 offset:172 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v16, off, s[0:3], s32 offset:168 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v19, off, s[0:3], s32 offset:172 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v37, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v39, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
 ; SI-NEXT:    s_cbranch_scc0 .LBB91_2
@@ -157249,15 +158161,15 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v15
-; SI-NEXT:    s_lshr_b64 s[8:9], s[4:5], 16
+; SI-NEXT:    s_lshr_b64 s[96:97], s[4:5], 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v7
-; SI-NEXT:    s_lshr_b32 s7, s4, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v24
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v25
 ; SI-NEXT:    s_lshr_b64 s[86:87], s[4:5], 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v9
-; SI-NEXT:    s_lshr_b32 s65, s4, 16
+; SI-NEXT:    s_lshr_b32 s49, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v27
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v29
@@ -157270,51 +158182,56 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s4, v31
 ; SI-NEXT:    s_lshr_b64 s[66:67], s[4:5], 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
-; SI-NEXT:    s_lshr_b32 s93, s4, 16
+; SI-NEXT:    s_lshr_b32 s75, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v45
+; SI-NEXT:    v_mov_b32_e32 v52, v13
+; SI-NEXT:    v_mov_b32_e32 v13, v23
+; SI-NEXT:    v_mov_b32_e32 v23, v17
+; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:76 ; 4-byte Folded Reload
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v60
+; SI-NEXT:    v_mov_b32_e32 v60, v36
+; SI-NEXT:    v_mov_b32_e32 v15, v28
+; SI-NEXT:    buffer_load_dword v28, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v36, off, s[0:3], s32 offset:72 ; 4-byte Folded Reload
+; SI-NEXT:    v_mov_b32_e32 v45, v38
+; SI-NEXT:    buffer_load_dword v38, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload
 ; SI-NEXT:    s_lshr_b64 s[52:53], s[4:5], 16
-; SI-NEXT:    v_readfirstlane_b32 s4, v20
+; SI-NEXT:    v_readfirstlane_b32 s4, v19
 ; SI-NEXT:    s_lshr_b32 s39, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v35
-; SI-NEXT:    v_mov_b32_e32 v35, v49
+; SI-NEXT:    v_mov_b32_e32 v35, v51
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v35
 ; SI-NEXT:    s_lshr_b64 s[34:35], s[4:5], 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v56
-; SI-NEXT:    v_mov_b32_e32 v52, v54
-; SI-NEXT:    s_lshr_b32 s91, s4, 16
-; SI-NEXT:    v_readfirstlane_b32 s4, v52
-; SI-NEXT:    v_mov_b32_e32 v45, v40
+; SI-NEXT:    v_mov_b32_e32 v51, v54
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v4
+; SI-NEXT:    s_lshr_b32 s15, s4, 16
+; SI-NEXT:    v_readfirstlane_b32 s4, v51
+; SI-NEXT:    v_mov_b32_e32 v4, v40
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
-; SI-NEXT:    v_readfirstlane_b32 s4, v45
+; SI-NEXT:    v_readfirstlane_b32 s4, v4
 ; SI-NEXT:    v_mov_b32_e32 v21, v22
-; SI-NEXT:    v_readfirstlane_b32 s6, v4
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[4:5], 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v21
-; SI-NEXT:    v_mov_b32_e32 v4, v38
-; SI-NEXT:    s_lshr_b32 s57, s4, 16
-; SI-NEXT:    v_readfirstlane_b32 s4, v4
+; SI-NEXT:    v_mov_b32_e32 v40, v49
+; SI-NEXT:    s_lshr_b32 s43, s4, 16
+; SI-NEXT:    v_readfirstlane_b32 s4, v40
 ; SI-NEXT:    v_mov_b32_e32 v54, v42
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v54
-; SI-NEXT:    v_mov_b32_e32 v22, v48
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[4:5], 16
-; SI-NEXT:    v_readfirstlane_b32 s4, v22
-; SI-NEXT:    v_mov_b32_e32 v40, v51
-; SI-NEXT:    s_lshr_b32 s89, s4, 16
-; SI-NEXT:    v_readfirstlane_b32 s4, v40
+; SI-NEXT:    v_readfirstlane_b32 s4, v48
 ; SI-NEXT:    v_mov_b32_e32 v42, v50
-; SI-NEXT:    s_lshr_b32 s5, s4, 16
+; SI-NEXT:    s_lshr_b32 s89, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v42
-; SI-NEXT:    v_mov_b32_e32 v49, v2
-; SI-NEXT:    v_mov_b32_e32 v2, v11
+; SI-NEXT:    s_lshr_b32 s5, s4, 16
+; SI-NEXT:    v_readfirstlane_b32 s4, v2
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[4:5], 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v53
-; SI-NEXT:    v_mov_b32_e32 v11, v44
 ; SI-NEXT:    s_lshr_b32 s73, s4, 16
-; SI-NEXT:    v_readfirstlane_b32 s4, v11
+; SI-NEXT:    v_readfirstlane_b32 s4, v44
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v47
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[4:5], 16
@@ -157329,282 +158246,279 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s4, v3
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v1
-; SI-NEXT:    v_mov_b32_e32 v44, v32
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[4:5], 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v58
-; SI-NEXT:    v_mov_b32_e32 v32, v13
-; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:76 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v48, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v51, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload
 ; SI-NEXT:    s_lshr_b32 s29, s4, 16
-; SI-NEXT:    s_waitcnt expcnt(6)
-; SI-NEXT:    v_mov_b32_e32 v1, v9
-; SI-NEXT:    s_waitcnt expcnt(4)
-; SI-NEXT:    v_mov_b32_e32 v9, v6
 ; SI-NEXT:    v_readfirstlane_b32 s4, v6
-; SI-NEXT:    v_mov_b32_e32 v6, v36
-; SI-NEXT:    buffer_load_dword v36, off, s[0:3], s32 offset:72 ; 4-byte Folded Reload
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
-; SI-NEXT:    v_readfirstlane_b32 s4, v6
-; SI-NEXT:    v_mov_b32_e32 v3, v23
+; SI-NEXT:    v_readfirstlane_b32 s4, v13
 ; SI-NEXT:    s_lshr_b64 s[24:25], s[4:5], 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v5
-; SI-NEXT:    v_mov_b32_e32 v23, v43
 ; SI-NEXT:    s_lshr_b32 s23, s4, 16
-; SI-NEXT:    v_readfirstlane_b32 s4, v23
+; SI-NEXT:    v_readfirstlane_b32 s4, v16
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
-; SI-NEXT:    v_readfirstlane_b32 s4, v32
+; SI-NEXT:    v_readfirstlane_b32 s4, v23
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[4:5], 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
 ; SI-NEXT:    s_lshr_b32 s19, s4, 16
-; SI-NEXT:    s_lshr_b64 s[96:97], s[6:7], 16
-; SI-NEXT:    s_mov_b32 s9, s96
-; SI-NEXT:    v_readfirstlane_b32 s90, v34
-; SI-NEXT:    s_lshr_b64 s[82:83], s[90:91], 16
-; SI-NEXT:    v_readfirstlane_b32 s64, v19
-; SI-NEXT:    s_lshr_b64 s[84:85], s[64:65], 16
+; SI-NEXT:    v_readfirstlane_b32 s14, v34
+; SI-NEXT:    s_lshr_b64 s[92:93], s[14:15], 16
+; SI-NEXT:    v_readfirstlane_b32 s72, v60
+; SI-NEXT:    s_lshr_b64 s[60:61], s[72:73], 16
+; SI-NEXT:    s_lshr_b64 s[98:99], vcc, 16
+; SI-NEXT:    s_mov_b32 s97, s98
+; SI-NEXT:    s_waitcnt vmcnt(3)
+; SI-NEXT:    v_readfirstlane_b32 s4, v17
+; SI-NEXT:    s_lshr_b32 s5, s4, 16
+; SI-NEXT:    v_readfirstlane_b32 s48, v20
+; SI-NEXT:    s_lshr_b64 s[84:85], s[48:49], 16
 ; SI-NEXT:    s_mov_b32 s87, s84
+; SI-NEXT:    s_waitcnt vmcnt(2)
+; SI-NEXT:    v_readfirstlane_b32 s6, v28
+; SI-NEXT:    s_waitcnt vmcnt(1)
+; SI-NEXT:    v_readfirstlane_b32 s4, v36
+; SI-NEXT:    s_lshr_b64 s[10:11], s[4:5], 16
+; SI-NEXT:    v_readfirstlane_b32 s4, v18
+; SI-NEXT:    s_lshr_b32 s7, s4, 16
+; SI-NEXT:    s_mov_b32 s5, s7
+; SI-NEXT:    v_writelane_b32 v61, s4, 30
+; SI-NEXT:    v_writelane_b32 v61, s5, 31
+; SI-NEXT:    v_readfirstlane_b32 s4, v39
+; SI-NEXT:    s_lshr_b32 s5, s4, 16
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_readfirstlane_b32 s4, v38
+; SI-NEXT:    s_lshr_b64 s[4:5], s[4:5], 16
+; SI-NEXT:    v_readfirstlane_b32 s5, v8
+; SI-NEXT:    s_lshr_b64 s[90:91], s[6:7], 16
+; SI-NEXT:    s_lshr_b32 s7, s5, 16
+; SI-NEXT:    v_readfirstlane_b32 s6, v37
+; SI-NEXT:    s_lshr_b64 s[8:9], s[6:7], 16
+; SI-NEXT:    s_mov_b32 s6, s92
+; SI-NEXT:    v_writelane_b32 v62, s6, 36
+; SI-NEXT:    v_writelane_b32 v62, s7, 37
+; SI-NEXT:    s_mov_b32 s6, s60
+; SI-NEXT:    v_writelane_b32 v62, s6, 56
+; SI-NEXT:    s_mov_b32 s5, s8
+; SI-NEXT:    v_writelane_b32 v62, s7, 57
+; SI-NEXT:    s_mov_b32 s14, s8
+; SI-NEXT:    s_lshr_b32 s6, s8, 8
+; SI-NEXT:    s_lshr_b64 s[8:9], s[96:97], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 4
+; SI-NEXT:    v_writelane_b32 v62, s9, 5
+; SI-NEXT:    s_lshr_b64 s[8:9], s[96:97], 16
+; SI-NEXT:    v_writelane_b32 v62, s8, 2
+; SI-NEXT:    v_writelane_b32 v62, s9, 3
+; SI-NEXT:    s_lshr_b64 s[8:9], s[96:97], 8
+; SI-NEXT:    v_writelane_b32 v62, s8, 0
+; SI-NEXT:    v_writelane_b32 v62, s9, 1
+; SI-NEXT:    s_lshr_b64 s[8:9], s[86:87], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 10
+; SI-NEXT:    v_writelane_b32 v62, s9, 11
+; SI-NEXT:    s_lshr_b64 s[8:9], s[86:87], 16
 ; SI-NEXT:    v_readfirstlane_b32 s68, v26
+; SI-NEXT:    v_writelane_b32 v62, s8, 8
 ; SI-NEXT:    s_lshr_b64 s[70:71], s[68:69], 16
+; SI-NEXT:    v_writelane_b32 v62, s9, 9
+; SI-NEXT:    s_lshr_b64 s[8:9], s[86:87], 8
 ; SI-NEXT:    s_mov_b32 s81, s70
-; SI-NEXT:    v_readfirstlane_b32 s92, v30
-; SI-NEXT:    s_lshr_b64 s[48:49], s[92:93], 16
-; SI-NEXT:    s_mov_b32 s67, s48
+; SI-NEXT:    v_writelane_b32 v62, s8, 6
+; SI-NEXT:    v_writelane_b32 v62, s9, 7
+; SI-NEXT:    s_lshr_b64 s[8:9], s[80:81], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 16
+; SI-NEXT:    v_writelane_b32 v62, s9, 17
+; SI-NEXT:    s_lshr_b64 s[8:9], s[80:81], 16
+; SI-NEXT:    v_readfirstlane_b32 s74, v30
+; SI-NEXT:    v_writelane_b32 v62, s8, 14
+; SI-NEXT:    s_lshr_b64 s[64:65], s[74:75], 16
+; SI-NEXT:    v_writelane_b32 v62, s9, 15
+; SI-NEXT:    s_lshr_b64 s[8:9], s[80:81], 8
+; SI-NEXT:    s_mov_b32 s67, s64
+; SI-NEXT:    v_writelane_b32 v62, s8, 12
+; SI-NEXT:    v_writelane_b32 v62, s9, 13
+; SI-NEXT:    s_lshr_b64 s[8:9], s[66:67], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 22
+; SI-NEXT:    v_writelane_b32 v62, s9, 23
+; SI-NEXT:    s_lshr_b64 s[8:9], s[66:67], 16
 ; SI-NEXT:    v_readfirstlane_b32 s38, v33
-; SI-NEXT:    s_lshr_b64 s[98:99], s[38:39], 16
-; SI-NEXT:    s_mov_b32 s53, s98
-; SI-NEXT:    s_mov_b32 s35, s82
-; SI-NEXT:    v_readfirstlane_b32 s56, v49
-; SI-NEXT:    s_lshr_b64 s[30:31], s[56:57], 16
+; SI-NEXT:    v_writelane_b32 v62, s8, 20
+; SI-NEXT:    s_lshr_b64 s[50:51], s[38:39], 16
+; SI-NEXT:    v_writelane_b32 v62, s9, 21
+; SI-NEXT:    s_lshr_b64 s[8:9], s[66:67], 8
+; SI-NEXT:    s_mov_b32 s53, s50
+; SI-NEXT:    v_writelane_b32 v62, s8, 18
+; SI-NEXT:    v_writelane_b32 v62, s9, 19
+; SI-NEXT:    s_lshr_b64 s[8:9], s[52:53], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 28
+; SI-NEXT:    v_writelane_b32 v62, s9, 29
+; SI-NEXT:    s_lshr_b64 s[8:9], s[52:53], 16
+; SI-NEXT:    v_writelane_b32 v62, s8, 26
+; SI-NEXT:    v_writelane_b32 v62, s9, 27
+; SI-NEXT:    s_lshr_b64 s[8:9], s[52:53], 8
+; SI-NEXT:    s_mov_b32 s35, s92
+; SI-NEXT:    v_writelane_b32 v62, s8, 24
+; SI-NEXT:    v_writelane_b32 v62, s9, 25
+; SI-NEXT:    s_lshr_b64 s[8:9], s[34:35], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 34
+; SI-NEXT:    v_writelane_b32 v62, s9, 35
+; SI-NEXT:    s_lshr_b64 s[8:9], s[34:35], 16
+; SI-NEXT:    v_readfirstlane_b32 s42, v45
+; SI-NEXT:    v_writelane_b32 v62, s8, 32
+; SI-NEXT:    s_lshr_b64 s[30:31], s[42:43], 16
+; SI-NEXT:    v_writelane_b32 v62, s9, 33
+; SI-NEXT:    s_lshr_b64 s[8:9], s[34:35], 8
 ; SI-NEXT:    s_mov_b32 s79, s30
-; SI-NEXT:    v_readfirstlane_b32 s88, v2
-; SI-NEXT:    s_lshr_b64 s[74:75], s[88:89], 16
-; SI-NEXT:    s_mov_b32 s95, s74
-; SI-NEXT:    v_mov_b32_e32 v38, v16
-; SI-NEXT:    v_readfirstlane_b32 s72, v38
-; SI-NEXT:    s_lshr_b64 s[60:61], s[72:73], 16
+; SI-NEXT:    v_writelane_b32 v62, s8, 30
+; SI-NEXT:    v_writelane_b32 v62, s9, 31
+; SI-NEXT:    s_lshr_b64 s[8:9], s[78:79], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 42
+; SI-NEXT:    v_writelane_b32 v62, s9, 43
+; SI-NEXT:    s_lshr_b64 s[8:9], s[78:79], 16
+; SI-NEXT:    v_readfirstlane_b32 s88, v52
+; SI-NEXT:    v_writelane_b32 v62, s8, 40
+; SI-NEXT:    s_lshr_b64 s[82:83], s[88:89], 16
+; SI-NEXT:    v_writelane_b32 v62, s9, 41
+; SI-NEXT:    s_lshr_b64 s[8:9], s[78:79], 8
+; SI-NEXT:    s_mov_b32 s95, s82
+; SI-NEXT:    v_writelane_b32 v62, s8, 38
+; SI-NEXT:    v_writelane_b32 v62, s9, 39
+; SI-NEXT:    s_lshr_b64 s[8:9], s[94:95], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 48
+; SI-NEXT:    v_writelane_b32 v62, s9, 49
+; SI-NEXT:    s_lshr_b64 s[8:9], s[94:95], 16
+; SI-NEXT:    v_writelane_b32 v62, s8, 46
+; SI-NEXT:    v_writelane_b32 v62, s9, 47
+; SI-NEXT:    s_lshr_b64 s[8:9], s[94:95], 8
 ; SI-NEXT:    s_mov_b32 s77, s60
-; SI-NEXT:    v_readfirstlane_b32 s58, v44
-; SI-NEXT:    s_lshr_b64 s[54:55], s[58:59], 16
-; SI-NEXT:    s_mov_b32 s63, s54
-; SI-NEXT:    v_mov_b32_e32 v15, v17
+; SI-NEXT:    v_writelane_b32 v62, s8, 44
+; SI-NEXT:    v_writelane_b32 v62, s9, 45
+; SI-NEXT:    s_lshr_b64 s[8:9], s[76:77], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 54
+; SI-NEXT:    v_mov_b32_e32 v49, v32
+; SI-NEXT:    v_writelane_b32 v62, s9, 55
+; SI-NEXT:    s_lshr_b64 s[8:9], s[76:77], 16
+; SI-NEXT:    v_readfirstlane_b32 s58, v49
+; SI-NEXT:    v_writelane_b32 v62, s8, 52
+; SI-NEXT:    s_lshr_b64 s[56:57], s[58:59], 16
+; SI-NEXT:    v_writelane_b32 v62, s9, 53
+; SI-NEXT:    s_lshr_b64 s[8:9], s[76:77], 8
+; SI-NEXT:    s_mov_b32 s63, s56
+; SI-NEXT:    v_writelane_b32 v62, s8, 50
+; SI-NEXT:    v_writelane_b32 v62, s9, 51
+; SI-NEXT:    s_lshr_b64 s[8:9], s[62:63], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 62
+; SI-NEXT:    v_writelane_b32 v62, s9, 63
+; SI-NEXT:    s_lshr_b64 s[8:9], s[62:63], 16
 ; SI-NEXT:    v_readfirstlane_b32 s44, v15
-; SI-NEXT:    s_lshr_b64 s[42:43], s[44:45], 16
-; SI-NEXT:    s_mov_b32 s47, s42
-; SI-NEXT:    v_readfirstlane_b32 s28, v3
+; SI-NEXT:    v_writelane_b32 v62, s8, 60
+; SI-NEXT:    s_lshr_b64 s[54:55], s[44:45], 16
+; SI-NEXT:    v_writelane_b32 v62, s9, 61
+; SI-NEXT:    s_lshr_b64 s[8:9], s[62:63], 8
+; SI-NEXT:    s_mov_b32 s47, s54
+; SI-NEXT:    v_writelane_b32 v62, s8, 58
+; SI-NEXT:    v_writelane_b32 v62, s9, 59
+; SI-NEXT:    s_lshr_b64 s[8:9], s[46:47], 24
+; SI-NEXT:    v_writelane_b32 v61, s8, 4
+; SI-NEXT:    v_mov_b32_e32 v32, v43
+; SI-NEXT:    v_writelane_b32 v61, s9, 5
+; SI-NEXT:    s_lshr_b64 s[8:9], s[46:47], 16
+; SI-NEXT:    v_readfirstlane_b32 s28, v32
+; SI-NEXT:    v_writelane_b32 v61, s8, 2
 ; SI-NEXT:    s_lshr_b64 s[26:27], s[28:29], 16
+; SI-NEXT:    v_writelane_b32 v61, s9, 3
+; SI-NEXT:    s_lshr_b64 s[8:9], s[46:47], 8
 ; SI-NEXT:    s_mov_b32 s41, s26
-; SI-NEXT:    v_mov_b32_e32 v17, v28
-; SI-NEXT:    v_readfirstlane_b32 s22, v17
-; SI-NEXT:    s_lshr_b64 s[36:37], s[22:23], 16
-; SI-NEXT:    s_mov_b32 s25, s36
-; SI-NEXT:    v_mov_b32_e32 v28, v55
-; SI-NEXT:    v_readfirstlane_b32 s18, v28
-; SI-NEXT:    s_lshr_b64 s[14:15], s[18:19], 16
-; SI-NEXT:    s_mov_b32 s17, s14
+; SI-NEXT:    v_writelane_b32 v61, s8, 0
+; SI-NEXT:    v_writelane_b32 v61, s9, 1
+; SI-NEXT:    s_lshr_b64 s[8:9], s[40:41], 24
+; SI-NEXT:    v_writelane_b32 v61, s8, 10
+; SI-NEXT:    s_waitcnt expcnt(6)
+; SI-NEXT:    v_mov_b32_e32 v1, v9
+; SI-NEXT:    s_waitcnt expcnt(4)
+; SI-NEXT:    v_mov_b32_e32 v9, v6
+; SI-NEXT:    v_mov_b32_e32 v6, v55
+; SI-NEXT:    v_writelane_b32 v61, s9, 11
+; SI-NEXT:    s_lshr_b64 s[8:9], s[40:41], 16
+; SI-NEXT:    v_readfirstlane_b32 s22, v6
+; SI-NEXT:    v_writelane_b32 v61, s8, 8
+; SI-NEXT:    s_lshr_b64 s[20:21], s[22:23], 16
+; SI-NEXT:    v_writelane_b32 v61, s9, 9
+; SI-NEXT:    s_lshr_b64 s[8:9], s[40:41], 8
+; SI-NEXT:    s_mov_b32 s25, s20
+; SI-NEXT:    v_writelane_b32 v61, s8, 6
+; SI-NEXT:    v_writelane_b32 v61, s9, 7
+; SI-NEXT:    s_lshr_b64 s[8:9], s[24:25], 24
+; SI-NEXT:    v_writelane_b32 v61, s8, 16
+; SI-NEXT:    v_writelane_b32 v61, s9, 17
+; SI-NEXT:    s_lshr_b64 s[8:9], s[24:25], 16
+; SI-NEXT:    v_readfirstlane_b32 s18, v11
+; SI-NEXT:    v_writelane_b32 v61, s8, 14
+; SI-NEXT:    s_lshr_b64 s[36:37], s[18:19], 16
+; SI-NEXT:    v_writelane_b32 v61, s9, 15
+; SI-NEXT:    s_lshr_b64 s[8:9], s[24:25], 8
+; SI-NEXT:    s_mov_b32 s17, s36
+; SI-NEXT:    v_writelane_b32 v61, s8, 12
+; SI-NEXT:    v_writelane_b32 v61, s9, 13
+; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
+; SI-NEXT:    v_writelane_b32 v61, s8, 22
+; SI-NEXT:    v_writelane_b32 v61, s9, 23
+; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
+; SI-NEXT:    v_writelane_b32 v61, s8, 20
+; SI-NEXT:    v_writelane_b32 v61, s9, 21
+; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 8
+; SI-NEXT:    s_mov_b32 s11, s90
+; SI-NEXT:    v_writelane_b32 v61, s8, 18
+; SI-NEXT:    v_writelane_b32 v61, s9, 19
+; SI-NEXT:    s_lshr_b64 s[8:9], s[10:11], 24
+; SI-NEXT:    v_writelane_b32 v61, s8, 28
+; SI-NEXT:    v_writelane_b32 v61, s9, 29
+; SI-NEXT:    s_lshr_b64 s[8:9], s[10:11], 16
+; SI-NEXT:    v_writelane_b32 v61, s8, 26
+; SI-NEXT:    v_writelane_b32 v61, s9, 27
+; SI-NEXT:    s_lshr_b64 s[8:9], s[10:11], 8
+; SI-NEXT:    v_writelane_b32 v61, s8, 24
+; SI-NEXT:    v_writelane_b32 v61, s9, 25
+; SI-NEXT:    s_lshr_b64 s[8:9], s[4:5], 24
+; SI-NEXT:    v_writelane_b32 v61, s8, 36
+; SI-NEXT:    v_writelane_b32 v61, s9, 37
+; SI-NEXT:    s_lshr_b64 s[8:9], s[4:5], 16
+; SI-NEXT:    v_writelane_b32 v61, s8, 34
+; SI-NEXT:    v_writelane_b32 v61, s9, 35
+; SI-NEXT:    s_lshr_b64 s[8:9], s[4:5], 8
+; SI-NEXT:    v_writelane_b32 v61, s8, 32
 ; SI-NEXT:    v_lshrrev_b32_e32 v25, 24, v7
 ; SI-NEXT:    v_lshrrev_b32_e32 v24, 24, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v20
-; SI-NEXT:    v_lshrrev_b32_e32 v1, 24, v53
+; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v19
+; SI-NEXT:    v_lshrrev_b32_e32 v1, 24, v21
+; SI-NEXT:    v_lshrrev_b32_e32 v3, 24, v53
 ; SI-NEXT:    v_lshrrev_b32_e32 v26, 24, v8
-; SI-NEXT:    s_lshr_b32 s88, s96, 8
+; SI-NEXT:    s_lshr_b32 s88, s98, 8
 ; SI-NEXT:    s_lshr_b32 s61, s84, 8
 ; SI-NEXT:    s_lshr_b32 s72, s70, 8
-; SI-NEXT:    s_lshr_b32 s75, s48, 8
-; SI-NEXT:    s_lshr_b32 s58, s98, 8
-; SI-NEXT:    s_lshr_b32 s43, s82, 8
+; SI-NEXT:    s_lshr_b32 s57, s64, 8
+; SI-NEXT:    s_lshr_b32 s58, s50, 8
+; SI-NEXT:    s_lshr_b32 s93, s92, 8
 ; SI-NEXT:    s_lshr_b32 s44, s30, 8
-; SI-NEXT:    s_mov_b32 s64, s74
-; SI-NEXT:    s_waitcnt vmcnt(3)
-; SI-NEXT:    v_readfirstlane_b32 s4, v13
-; SI-NEXT:    s_lshr_b32 s5, s4, 16
-; SI-NEXT:    s_waitcnt vmcnt(2)
-; SI-NEXT:    v_readfirstlane_b32 s12, v48
-; SI-NEXT:    s_lshr_b32 s27, s74, 8
-; SI-NEXT:    s_mov_b32 s92, s60
+; SI-NEXT:    s_lshr_b32 s27, s82, 8
 ; SI-NEXT:    s_lshr_b32 s28, s60, 8
-; SI-NEXT:    s_lshr_b32 s74, s54, 8
-; SI-NEXT:    s_mov_b32 s68, s42
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_readfirstlane_b32 s4, v36
-; SI-NEXT:    s_lshr_b64 s[10:11], s[4:5], 16
-; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    s_lshr_b32 s13, s4, 16
-; SI-NEXT:    s_mov_b32 s5, s13
-; SI-NEXT:    v_writelane_b32 v61, s4, 26
-; SI-NEXT:    v_writelane_b32 v61, s5, 27
-; SI-NEXT:    v_readfirstlane_b32 s4, v39
-; SI-NEXT:    s_lshr_b32 s5, s4, 16
-; SI-NEXT:    v_readfirstlane_b32 s4, v51
-; SI-NEXT:    s_lshr_b64 s[4:5], s[4:5], 16
-; SI-NEXT:    v_readfirstlane_b32 s5, v8
-; SI-NEXT:    s_lshr_b64 s[20:21], s[12:13], 16
-; SI-NEXT:    s_lshr_b32 s13, s5, 16
-; SI-NEXT:    v_readfirstlane_b32 s12, v37
-; SI-NEXT:    s_lshr_b64 vcc, s[12:13], 16
-; SI-NEXT:    s_mov_b32 s5, vcc_lo
-; SI-NEXT:    s_mov_b32 s90, vcc_lo
-; SI-NEXT:    s_lshr_b32 s6, vcc_lo, 8
-; SI-NEXT:    s_lshr_b64 vcc, s[8:9], 24
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 4
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 5
-; SI-NEXT:    s_lshr_b64 vcc, s[8:9], 16
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 2
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 3
-; SI-NEXT:    s_lshr_b64 vcc, s[8:9], 8
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 0
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 1
-; SI-NEXT:    s_lshr_b64 vcc, s[86:87], 24
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 10
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 11
-; SI-NEXT:    s_lshr_b64 vcc, s[86:87], 16
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 8
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 9
-; SI-NEXT:    s_lshr_b64 vcc, s[86:87], 8
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 6
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 7
-; SI-NEXT:    s_lshr_b64 vcc, s[80:81], 24
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 16
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 17
-; SI-NEXT:    s_lshr_b64 vcc, s[80:81], 16
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 14
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 15
-; SI-NEXT:    s_lshr_b64 vcc, s[80:81], 8
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 12
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 13
-; SI-NEXT:    s_lshr_b64 vcc, s[66:67], 24
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 22
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 23
-; SI-NEXT:    s_lshr_b64 vcc, s[66:67], 16
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 20
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 21
-; SI-NEXT:    s_lshr_b64 vcc, s[66:67], 8
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 18
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 19
-; SI-NEXT:    s_lshr_b64 vcc, s[52:53], 24
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 28
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 29
-; SI-NEXT:    s_lshr_b64 vcc, s[52:53], 16
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 26
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 27
-; SI-NEXT:    s_lshr_b64 vcc, s[52:53], 8
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 24
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 25
-; SI-NEXT:    s_lshr_b64 vcc, s[34:35], 24
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 34
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 35
-; SI-NEXT:    s_lshr_b64 vcc, s[34:35], 16
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 32
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 33
-; SI-NEXT:    s_lshr_b64 vcc, s[34:35], 8
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 30
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 31
-; SI-NEXT:    s_lshr_b64 vcc, s[78:79], 24
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 40
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 41
-; SI-NEXT:    s_lshr_b64 vcc, s[78:79], 16
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 38
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 39
-; SI-NEXT:    s_lshr_b64 vcc, s[78:79], 8
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 36
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 37
-; SI-NEXT:    s_lshr_b64 vcc, s[94:95], 24
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 46
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 47
-; SI-NEXT:    s_lshr_b64 vcc, s[94:95], 16
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 44
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 45
-; SI-NEXT:    s_lshr_b64 vcc, s[94:95], 8
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 42
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 43
-; SI-NEXT:    s_lshr_b64 vcc, s[76:77], 24
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 52
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 53
-; SI-NEXT:    s_lshr_b64 vcc, s[76:77], 16
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 50
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 51
-; SI-NEXT:    s_lshr_b64 vcc, s[76:77], 8
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 48
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 49
-; SI-NEXT:    s_lshr_b64 vcc, s[62:63], 24
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 58
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 59
-; SI-NEXT:    s_lshr_b64 vcc, s[62:63], 16
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 56
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 57
-; SI-NEXT:    s_lshr_b64 vcc, s[62:63], 8
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 54
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 55
-; SI-NEXT:    s_lshr_b64 vcc, s[46:47], 24
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 0
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 1
-; SI-NEXT:    s_lshr_b64 vcc, s[46:47], 16
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 62
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 63
-; SI-NEXT:    s_lshr_b64 vcc, s[46:47], 8
-; SI-NEXT:    v_writelane_b32 v62, vcc_lo, 60
-; SI-NEXT:    v_writelane_b32 v62, vcc_hi, 61
-; SI-NEXT:    s_lshr_b64 vcc, s[40:41], 24
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 6
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 7
-; SI-NEXT:    s_lshr_b64 vcc, s[40:41], 16
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 4
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 5
-; SI-NEXT:    s_lshr_b64 vcc, s[40:41], 8
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 2
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 3
-; SI-NEXT:    s_lshr_b64 vcc, s[24:25], 24
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 12
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 13
-; SI-NEXT:    s_lshr_b64 vcc, s[24:25], 16
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 10
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 11
-; SI-NEXT:    s_lshr_b64 vcc, s[24:25], 8
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 8
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 9
-; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 24
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 18
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 19
-; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 16
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 16
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 17
-; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 8
-; SI-NEXT:    s_mov_b32 s11, s20
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 14
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 15
-; SI-NEXT:    s_lshr_b64 vcc, s[10:11], 24
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 24
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 25
-; SI-NEXT:    s_lshr_b64 vcc, s[10:11], 16
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 22
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 23
-; SI-NEXT:    s_lshr_b64 vcc, s[10:11], 8
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 20
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 21
-; SI-NEXT:    s_lshr_b64 vcc, s[4:5], 24
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 32
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 33
-; SI-NEXT:    s_lshr_b64 vcc, s[4:5], 16
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 30
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 31
-; SI-NEXT:    s_lshr_b64 vcc, s[4:5], 8
-; SI-NEXT:    v_writelane_b32 v61, vcc_lo, 28
-; SI-NEXT:    s_lshr_b32 s22, s42, 8
-; SI-NEXT:    s_mov_b32 s56, s26
-; SI-NEXT:    s_lshr_b32 s21, s26, 8
-; SI-NEXT:    s_lshr_b32 s18, s36, 8
-; SI-NEXT:    s_mov_b32 s38, s14
-; SI-NEXT:    s_lshr_b32 s15, s14, 8
-; SI-NEXT:    s_mov_b32 s14, s20
-; SI-NEXT:    s_lshr_b32 s12, s20, 8
-; SI-NEXT:    v_writelane_b32 v61, vcc_hi, 29
-; SI-NEXT:    s_mov_b64 vcc, 0
-; SI-NEXT:    v_lshrrev_b32_e32 v19, 24, v10
+; SI-NEXT:    s_mov_b32 s74, s56
+; SI-NEXT:    s_lshr_b32 s21, s56, 8
+; SI-NEXT:    s_lshr_b32 s22, s54, 8
+; SI-NEXT:    s_mov_b32 s68, s26
+; SI-NEXT:    s_lshr_b32 s56, s26, 8
+; SI-NEXT:    s_mov_b32 s42, s20
+; SI-NEXT:    s_lshr_b32 s18, s20, 8
+; SI-NEXT:    s_lshr_b32 s91, s36, 8
+; SI-NEXT:    s_mov_b32 s38, s90
+; SI-NEXT:    s_lshr_b32 s12, s90, 8
+; SI-NEXT:    v_writelane_b32 v61, s9, 33
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    v_lshrrev_b32_e32 v20, 24, v10
+; SI-NEXT:    s_waitcnt expcnt(3)
+; SI-NEXT:    v_mov_b32_e32 v16, v14
 ; SI-NEXT:    v_lshrrev_b32_e32 v43, 24, v14
 ; SI-NEXT:    v_lshrrev_b32_e32 v55, 24, v56
-; SI-NEXT:    v_lshrrev_b32_e32 v50, 24, v21
-; SI-NEXT:    v_lshrrev_b32_e32 v60, 24, v22
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
+; SI-NEXT:    v_lshrrev_b32_e32 v50, 24, v48
+; SI-NEXT:    buffer_store_dword v3, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
 ; SI-NEXT:    v_lshrrev_b32_e32 v34, 24, v41
 ; SI-NEXT:    v_lshrrev_b32_e32 v33, 24, v46
 ; SI-NEXT:    v_lshrrev_b32_e32 v31, 24, v58
@@ -157613,57 +158527,50 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_lshrrev_b32_e32 v27, 24, v18
 ; SI-NEXT:    buffer_store_dword v26, off, s[0:3], s32 offset:52 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(4)
-; SI-NEXT:    v_mov_b32_e32 v20, v35
-; SI-NEXT:    v_mov_b32_e32 v14, v52
-; SI-NEXT:    s_waitcnt expcnt(3)
-; SI-NEXT:    v_mov_b32_e32 v37, v45
-; SI-NEXT:    v_mov_b32_e32 v45, v2
+; SI-NEXT:    v_mov_b32_e32 v19, v35
 ; SI-NEXT:    s_waitcnt expcnt(2)
-; SI-NEXT:    v_mov_b32_e32 v39, v4
-; SI-NEXT:    v_mov_b32_e32 v52, v44
-; SI-NEXT:    v_mov_b32_e32 v44, v11
-; SI-NEXT:    v_mov_b32_e32 v35, v3
-; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_mov_b32_e32 v1, v17
-; SI-NEXT:    v_mov_b32_e32 v11, v6
+; SI-NEXT:    v_mov_b32_e32 v39, v45
+; SI-NEXT:    v_mov_b32_e32 v45, v1
+; SI-NEXT:    v_mov_b32_e32 v14, v51
+; SI-NEXT:    v_mov_b32_e32 v37, v4
+; SI-NEXT:    v_mov_b32_e32 v51, v40
+; SI-NEXT:    v_mov_b32_e32 v40, v42
+; SI-NEXT:    v_mov_b32_e32 v42, v2
+; SI-NEXT:    v_mov_b32_e32 v35, v32
+; SI-NEXT:    v_mov_b32_e32 v1, v6
 ; SI-NEXT:    v_mov_b32_e32 v6, v10
 ; SI-NEXT:    v_mov_b32_e32 v10, v7
-; SI-NEXT:    v_mov_b32_e32 v17, v28
-; SI-NEXT:    v_mov_b32_e32 v16, v23
-; SI-NEXT:    v_mov_b32_e32 v23, v32
-; SI-NEXT:    v_mov_b32_e32 v28, v48
-; SI-NEXT:    v_mov_b32_e32 v32, v13
-; SI-NEXT:    v_mov_b32_e32 v48, v22
+; SI-NEXT:    v_mov_b32_e32 v32, v17
 ; SI-NEXT:    v_mov_b32_e32 v7, v5
-; SI-NEXT:    v_mov_b32_e32 v2, v12
-; SI-NEXT:    v_mov_b32_e32 v3, v18
+; SI-NEXT:    s_waitcnt expcnt(1)
+; SI-NEXT:    v_mov_b32_e32 v3, v12
+; SI-NEXT:    v_mov_b32_e32 v2, v18
 ; SI-NEXT:    s_branch .LBB91_3
 ; SI-NEXT:  .LBB91_2:
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    ; kill: killed $vgpr1
-; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_mov_b32_e32 v37, v40
+; SI-NEXT:    s_waitcnt expcnt(2)
+; SI-NEXT:    v_mov_b32_e32 v19, v51
 ; SI-NEXT:    v_writelane_b32 v62, s4, 0
 ; SI-NEXT:    v_writelane_b32 v62, s5, 1
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v45, v11
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_mov_b32_e32 v39, v38
 ; SI-NEXT:    v_writelane_b32 v62, s4, 2
 ; SI-NEXT:    v_writelane_b32 v62, s5, 3
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v40, v51
+; SI-NEXT:    v_mov_b32_e32 v51, v49
 ; SI-NEXT:    v_writelane_b32 v62, s4, 4
 ; SI-NEXT:    v_writelane_b32 v62, s5, 5
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v52, v32
+; SI-NEXT:    v_mov_b32_e32 v60, v36
 ; SI-NEXT:    v_writelane_b32 v62, s4, 6
 ; SI-NEXT:    v_writelane_b32 v62, s5, 7
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v1, v28
+; SI-NEXT:    v_mov_b32_e32 v49, v32
 ; SI-NEXT:    v_writelane_b32 v62, s4, 8
 ; SI-NEXT:    v_writelane_b32 v62, s5, 9
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v11, v36
+; SI-NEXT:    v_mov_b32_e32 v15, v28
 ; SI-NEXT:    v_writelane_b32 v62, s4, 10
 ; SI-NEXT:    v_writelane_b32 v62, s5, 11
 ; SI-NEXT:    ; implicit-def: $sgpr4
@@ -157673,130 +158580,126 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_writelane_b32 v62, s5, 13
 ; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    buffer_load_dword v36, off, s[0:3], s32 offset:72 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v51, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v38, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload
 ; SI-NEXT:    v_writelane_b32 v62, s4, 14
 ; SI-NEXT:    v_writelane_b32 v62, s5, 15
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr21
-; SI-NEXT:    ; implicit-def: $sgpr20
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    v_mov_b32_e32 v9, v6
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:    v_mov_b32_e32 v16, v14
 ; SI-NEXT:    v_writelane_b32 v62, s4, 16
 ; SI-NEXT:    v_writelane_b32 v62, s5, 17
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_mov_b64 vcc, -1
+; SI-NEXT:    v_mov_b32_e32 v9, v6
 ; SI-NEXT:    v_writelane_b32 v62, s4, 18
 ; SI-NEXT:    v_writelane_b32 v62, s5, 19
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v20, v49
+; SI-NEXT:    s_mov_b64 s[8:9], -1
 ; SI-NEXT:    v_writelane_b32 v62, s4, 20
 ; SI-NEXT:    v_writelane_b32 v62, s5, 21
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v49, v2
+; SI-NEXT:    v_mov_b32_e32 v14, v54
 ; SI-NEXT:    v_writelane_b32 v62, s4, 22
 ; SI-NEXT:    v_writelane_b32 v62, s5, 23
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v14, v54
+; SI-NEXT:    v_mov_b32_e32 v37, v40
 ; SI-NEXT:    v_writelane_b32 v62, s4, 24
 ; SI-NEXT:    v_writelane_b32 v62, s5, 25
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v39, v38
+; SI-NEXT:    v_mov_b32_e32 v52, v13
 ; SI-NEXT:    v_writelane_b32 v62, s4, 26
 ; SI-NEXT:    v_writelane_b32 v62, s5, 27
 ; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $vgpr1
 ; SI-NEXT:    v_mov_b32_e32 v54, v42
 ; SI-NEXT:    v_writelane_b32 v62, s4, 28
 ; SI-NEXT:    v_writelane_b32 v62, s5, 29
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v38, v16
+; SI-NEXT:    v_mov_b32_e32 v40, v50
 ; SI-NEXT:    v_writelane_b32 v62, s4, 30
 ; SI-NEXT:    v_writelane_b32 v62, s5, 31
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v42, v50
+; SI-NEXT:    v_mov_b32_e32 v42, v2
 ; SI-NEXT:    v_writelane_b32 v62, s4, 32
 ; SI-NEXT:    v_writelane_b32 v62, s5, 33
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v15, v17
+; SI-NEXT:    v_mov_b32_e32 v35, v43
 ; SI-NEXT:    v_writelane_b32 v62, s4, 34
 ; SI-NEXT:    v_writelane_b32 v62, s5, 35
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v35, v23
+; SI-NEXT:    v_mov_b32_e32 v1, v55
 ; SI-NEXT:    v_writelane_b32 v62, s4, 36
 ; SI-NEXT:    v_writelane_b32 v62, s5, 37
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v6, v21
+; SI-NEXT:    v_mov_b32_e32 v13, v23
 ; SI-NEXT:    v_writelane_b32 v62, s4, 38
 ; SI-NEXT:    v_writelane_b32 v62, s5, 39
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v17, v55
+; SI-NEXT:    v_mov_b32_e32 v6, v21
 ; SI-NEXT:    v_writelane_b32 v62, s4, 40
 ; SI-NEXT:    v_writelane_b32 v62, s5, 41
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v16, v43
+; SI-NEXT:    v_mov_b32_e32 v23, v17
 ; SI-NEXT:    v_writelane_b32 v62, s4, 42
 ; SI-NEXT:    v_writelane_b32 v62, s5, 43
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v23, v13
+; SI-NEXT:    v_mov_b32_e32 v21, v22
 ; SI-NEXT:    v_writelane_b32 v62, s4, 44
 ; SI-NEXT:    v_writelane_b32 v62, s5, 45
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v21, v22
+; SI-NEXT:    v_mov_b32_e32 v7, v5
 ; SI-NEXT:    v_writelane_b32 v62, s4, 46
 ; SI-NEXT:    v_writelane_b32 v62, s5, 47
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v7, v5
+; SI-NEXT:    v_mov_b32_e32 v3, v12
 ; SI-NEXT:    v_writelane_b32 v62, s4, 48
 ; SI-NEXT:    v_writelane_b32 v62, s5, 49
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v2, v12
+; SI-NEXT:    v_mov_b32_e32 v2, v18
 ; SI-NEXT:    v_writelane_b32 v62, s4, 50
 ; SI-NEXT:    v_writelane_b32 v62, s5, 51
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_mov_b32_e32 v3, v18
-; SI-NEXT:    v_writelane_b32 v62, s4, 52
-; SI-NEXT:    v_writelane_b32 v62, s5, 53
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr8
 ; SI-NEXT:    ; implicit-def: $sgpr96
+; SI-NEXT:    ; implicit-def: $sgpr98
 ; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $vcc_hi
 ; SI-NEXT:    ; implicit-def: $vgpr25
 ; SI-NEXT:    ; implicit-def: $sgpr86
 ; SI-NEXT:    ; implicit-def: $sgpr84
 ; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr65
+; SI-NEXT:    ; implicit-def: $sgpr49
 ; SI-NEXT:    ; implicit-def: $vgpr24
 ; SI-NEXT:    ; implicit-def: $sgpr80
 ; SI-NEXT:    ; implicit-def: $sgpr70
 ; SI-NEXT:    ; implicit-def: $sgpr72
 ; SI-NEXT:    ; implicit-def: $sgpr69
-; SI-NEXT:    ; implicit-def: $vgpr19
+; SI-NEXT:    ; implicit-def: $vgpr20
 ; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr57
 ; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr93
 ; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    ; implicit-def: $sgpr50
 ; SI-NEXT:    ; implicit-def: $sgpr58
 ; SI-NEXT:    ; implicit-def: $sgpr39
 ; SI-NEXT:    ; implicit-def: $vgpr10
 ; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr82
-; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr93
 ; SI-NEXT:    ; implicit-def: $sgpr78
 ; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $vgpr45
 ; SI-NEXT:    ; implicit-def: $sgpr27
 ; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr21
 ; SI-NEXT:    ; implicit-def: $vgpr34
 ; SI-NEXT:    ; implicit-def: $sgpr22
 ; SI-NEXT:    ; implicit-def: $vgpr33
+; SI-NEXT:    ; implicit-def: $sgpr56
 ; SI-NEXT:    ; implicit-def: $vgpr31
 ; SI-NEXT:    ; implicit-def: $sgpr18
 ; SI-NEXT:    ; implicit-def: $vgpr30
-; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr91
 ; SI-NEXT:    ; implicit-def: $vgpr29
 ; SI-NEXT:    ; implicit-def: $sgpr12
 ; SI-NEXT:    ; implicit-def: $vgpr27
@@ -157804,35 +158707,36 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    ; implicit-def: $vgpr26
 ; SI-NEXT:    ; kill: killed $vgpr26
 ; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr43
 ; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr82
 ; SI-NEXT:    ; implicit-def: $sgpr89
 ; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr92
 ; SI-NEXT:    ; implicit-def: $sgpr73
 ; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr74
 ; SI-NEXT:    ; implicit-def: $sgpr59
 ; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $sgpr54
 ; SI-NEXT:    ; implicit-def: $sgpr45
 ; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr68
 ; SI-NEXT:    ; implicit-def: $sgpr29
 ; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr42
 ; SI-NEXT:    ; implicit-def: $sgpr23
 ; SI-NEXT:    ; implicit-def: $sgpr16
-; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr36
 ; SI-NEXT:    ; implicit-def: $sgpr19
 ; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $vgpr60
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr7
 ; SI-NEXT:    ; implicit-def: $vgpr50
 ; SI-NEXT:    ; implicit-def: $vgpr43
 ; SI-NEXT:    ; implicit-def: $vgpr55
+; SI-NEXT:    v_writelane_b32 v62, s4, 52
+; SI-NEXT:    v_writelane_b32 v62, s5, 53
+; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    v_writelane_b32 v62, s4, 54
 ; SI-NEXT:    v_writelane_b32 v62, s5, 55
 ; SI-NEXT:    ; implicit-def: $sgpr4
@@ -157886,84 +158790,110 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    v_writelane_b32 v61, s4, 24
 ; SI-NEXT:    v_writelane_b32 v61, s5, 25
-; SI-NEXT:    ; implicit-def: $sgpr5
+; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    v_writelane_b32 v61, s4, 26
 ; SI-NEXT:    v_writelane_b32 v61, s5, 27
-; SI-NEXT:    v_writelane_b32 v61, s20, 28
-; SI-NEXT:    v_writelane_b32 v61, s21, 29
-; SI-NEXT:    ; implicit-def: $sgpr20
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v61, s20, 30
-; SI-NEXT:    v_writelane_b32 v61, s21, 31
-; SI-NEXT:    v_writelane_b32 v61, s90, 32
-; SI-NEXT:    v_writelane_b32 v61, s91, 33
-; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    v_writelane_b32 v61, s4, 28
+; SI-NEXT:    v_writelane_b32 v61, s5, 29
+; SI-NEXT:    ; implicit-def: $sgpr5
+; SI-NEXT:    v_writelane_b32 v61, s4, 30
+; SI-NEXT:    v_writelane_b32 v61, s5, 31
+; SI-NEXT:    v_writelane_b32 v61, s14, 32
+; SI-NEXT:    v_writelane_b32 v61, s15, 33
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v61, s14, 34
+; SI-NEXT:    v_writelane_b32 v61, s15, 35
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    v_writelane_b32 v61, s14, 36
+; SI-NEXT:    v_writelane_b32 v61, s15, 37
+; SI-NEXT:    ; implicit-def: $sgpr14
 ; SI-NEXT:  .LBB91_3: ; %Flow
 ; SI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:60 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload
-; SI-NEXT:    s_andn2_b64 vcc, exec, vcc
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v26, v27
 ; SI-NEXT:    v_mov_b32_e32 v27, v29
 ; SI-NEXT:    v_mov_b32_e32 v29, v30
 ; SI-NEXT:    v_mov_b32_e32 v30, v31
 ; SI-NEXT:    v_mov_b32_e32 v31, v33
-; SI-NEXT:    s_cbranch_vccnz .LBB91_5
+; SI-NEXT:    s_cbranch_scc1 .LBB91_5
 ; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v12
-; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v51
+; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v38
 ; SI-NEXT:    v_add_f32_e32 v10, 0x40c00000, v10
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
-; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v8
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v4
+; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v8
+; SI-NEXT:    s_lshr_b64 s[4:5], s[4:5], 16
 ; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v5
 ; SI-NEXT:    v_add_f32_e32 v18, 0x40c00000, v10
-; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v32
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
+; SI-NEXT:    v_readfirstlane_b32 s5, v18
+; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v32
+; SI-NEXT:    s_lshr_b32 s7, s5, 16
+; SI-NEXT:    v_readfirstlane_b32 s6, v4
 ; SI-NEXT:    v_add_f32_e32 v10, 0x40c00000, v10
-; SI-NEXT:    v_readfirstlane_b32 s12, v4
-; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v36
+; SI-NEXT:    s_lshr_b64 s[90:91], s[6:7], 16
 ; SI-NEXT:    v_readfirstlane_b32 s6, v10
-; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v3
+; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v2
+; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:168 ; 4-byte Folded Reload
+; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v36
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
 ; SI-NEXT:    v_add_f32_e32 v12, 0x40c00000, v10
 ; SI-NEXT:    s_lshr_b32 s9, s6, 16
 ; SI-NEXT:    v_readfirstlane_b32 s8, v4
+; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v28
 ; SI-NEXT:    v_readfirstlane_b32 s6, v12
+; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
+; SI-NEXT:    s_lshr_b32 s13, s6, 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[8:9], 16
-; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v28
-; SI-NEXT:    s_lshr_b32 s9, s6, 16
+; SI-NEXT:    v_readfirstlane_b32 s12, v4
+; SI-NEXT:    s_mov_b32 s9, s13
+; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v23
+; SI-NEXT:    v_and_b32_e32 v5, 0xffff0000, v3
+; SI-NEXT:    v_writelane_b32 v61, s8, 30
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
-; SI-NEXT:    s_mov_b32 s7, s9
-; SI-NEXT:    v_and_b32_e32 v8, 0xffff0000, v16
+; SI-NEXT:    v_add_f32_e32 v5, 0x40c00000, v5
+; SI-NEXT:    v_writelane_b32 v61, s9, 31
 ; SI-NEXT:    v_readfirstlane_b32 s8, v4
-; SI-NEXT:    v_writelane_b32 v61, s6, 26
-; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v23
-; SI-NEXT:    v_add_f32_e32 v8, 0x40c00000, v8
-; SI-NEXT:    v_and_b32_e32 v5, 0xffff0000, v2
-; SI-NEXT:    v_writelane_b32 v61, s7, 27
+; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v11
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
+; SI-NEXT:    v_readfirstlane_b32 s18, v4
+; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v13
+; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v3
+; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v51
+; SI-NEXT:    v_add_f32_e32 v10, 0x40c00000, v10
+; SI-NEXT:    v_mov_b32_e32 v17, v16
+; SI-NEXT:    v_and_b32_e32 v11, 0xffff0000, v6
+; SI-NEXT:    v_add_f32_e32 v11, 0x40c00000, v11
+; SI-NEXT:    s_lshr_b64 s[20:21], s[12:13], 16
+; SI-NEXT:    s_mov_b32 s11, s20
+; SI-NEXT:    s_mov_b32 s5, s90
+; SI-NEXT:    v_lshrrev_b32_e32 v20, 24, v11
+; SI-NEXT:    v_lshrrev_b32_e32 v27, 24, v5
+; SI-NEXT:    v_lshrrev_b32_e32 v26, 24, v12
+; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:152 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:124 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(2)
+; SI-NEXT:    v_and_b32_e32 v8, 0xffff0000, v2
+; SI-NEXT:    v_add_f32_e32 v8, 0x40c00000, v8
 ; SI-NEXT:    v_readfirstlane_b32 s6, v8
-; SI-NEXT:    v_add_f32_e32 v5, 0x40c00000, v5
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v9
-; SI-NEXT:    s_lshr_b64 s[20:21], s[8:9], 16
 ; SI-NEXT:    s_lshr_b32 s9, s6, 16
-; SI-NEXT:    v_readfirstlane_b32 s8, v4
-; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v17
 ; SI-NEXT:    v_readfirstlane_b32 s6, v5
 ; SI-NEXT:    v_add_f32_e32 v2, 0x40c00000, v2
-; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
 ; SI-NEXT:    s_lshr_b32 s19, s6, 16
 ; SI-NEXT:    v_readfirstlane_b32 s6, v2
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v1
 ; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:156 ; 4-byte Folded Reload
-; SI-NEXT:    v_readfirstlane_b32 s18, v4
-; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:152 ; 4-byte Folded Reload
-; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v11
-; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v3
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[8:9], 16
 ; SI-NEXT:    v_readfirstlane_b32 s8, v3
 ; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v2
@@ -157980,41 +158910,26 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v8, 0x40c00000, v8
 ; SI-NEXT:    v_and_b32_e32 v9, 0xffff0000, v40
 ; SI-NEXT:    v_add_f32_e32 v9, 0x40c00000, v9
-; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v39
-; SI-NEXT:    v_add_f32_e32 v10, 0x40c00000, v10
-; SI-NEXT:    v_and_b32_e32 v11, 0xffff0000, v6
-; SI-NEXT:    v_add_f32_e32 v11, 0x40c00000, v11
-; SI-NEXT:    s_lshr_b64 s[36:37], s[22:23], 16
-; SI-NEXT:    s_mov_b32 s25, s36
-; SI-NEXT:    s_lshr_b64 s[26:27], s[18:19], 16
-; SI-NEXT:    s_mov_b32 s17, s26
-; SI-NEXT:    s_mov_b32 s11, s20
-; SI-NEXT:    s_lshr_b64 s[4:5], s[4:5], 16
-; SI-NEXT:    v_readfirstlane_b32 s5, v18
-; SI-NEXT:    s_lshr_b32 s13, s5, 16
-; SI-NEXT:    s_lshr_b64 vcc, s[12:13], 16
-; SI-NEXT:    s_mov_b32 s5, vcc_lo
-; SI-NEXT:    s_lshr_b32 s18, s36, 8
-; SI-NEXT:    s_lshr_b32 s12, s20, 8
-; SI-NEXT:    v_lshrrev_b32_e32 v19, 24, v11
+; SI-NEXT:    s_lshr_b64 s[26:27], s[22:23], 16
+; SI-NEXT:    s_mov_b32 s25, s26
+; SI-NEXT:    s_lshr_b64 s[36:37], s[18:19], 16
+; SI-NEXT:    s_mov_b32 s17, s36
+; SI-NEXT:    s_lshr_b32 s18, s26, 8
+; SI-NEXT:    s_lshr_b32 s91, s36, 8
 ; SI-NEXT:    v_lshrrev_b32_e32 v29, 24, v2
-; SI-NEXT:    v_lshrrev_b32_e32 v27, 24, v5
-; SI-NEXT:    v_lshrrev_b32_e32 v26, 24, v12
-; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:124 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:112 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(3)
-; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v1
-; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v3
 ; SI-NEXT:    s_waitcnt vmcnt(2)
 ; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v4
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
+; SI-NEXT:    v_readfirstlane_b32 s6, v4
+; SI-NEXT:    s_lshr_b32 s9, s6, 16
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v1
+; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v3
 ; SI-NEXT:    v_readfirstlane_b32 s8, v3
 ; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v35
-; SI-NEXT:    v_readfirstlane_b32 s6, v4
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v3
 ; SI-NEXT:    v_readfirstlane_b32 s28, v4
 ; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v59
-; SI-NEXT:    s_lshr_b32 s9, s6, 16
 ; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v58
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[8:9], 16
@@ -158033,7 +158948,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 16
 ; SI-NEXT:    v_add_f32_e32 v7, 0x40c00000, v7
 ; SI-NEXT:    v_readfirstlane_b32 s8, v4
-; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v52
+; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v49
 ; SI-NEXT:    v_readfirstlane_b32 s6, v7
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
 ; SI-NEXT:    s_lshr_b32 s45, s6, 16
@@ -158046,7 +158961,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[8:9], 16
 ; SI-NEXT:    v_add_f32_e32 v8, 0x40c00000, v8
 ; SI-NEXT:    v_readfirstlane_b32 s8, v4
-; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v38
+; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v60
 ; SI-NEXT:    v_readfirstlane_b32 s6, v8
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
 ; SI-NEXT:    s_lshr_b32 s59, s6, 16
@@ -158059,7 +158974,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[8:9], 16
 ; SI-NEXT:    v_add_f32_e32 v9, 0x40c00000, v9
 ; SI-NEXT:    v_readfirstlane_b32 s8, v4
-; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v45
+; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v52
 ; SI-NEXT:    v_readfirstlane_b32 s6, v9
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
 ; SI-NEXT:    s_lshr_b32 s73, s6, 16
@@ -158073,15 +158988,15 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v13, 0x40c00000, v10
 ; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v14
 ; SI-NEXT:    v_readfirstlane_b32 s8, v4
-; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v49
+; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v39
 ; SI-NEXT:    v_readfirstlane_b32 s6, v13
 ; SI-NEXT:    v_add_f32_e32 v10, 0x40c00000, v10
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
 ; SI-NEXT:    s_lshr_b32 s89, s6, 16
 ; SI-NEXT:    v_readfirstlane_b32 s6, v10
 ; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v21
-; SI-NEXT:    v_readfirstlane_b32 s56, v4
-; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v20
+; SI-NEXT:    v_readfirstlane_b32 s42, v4
+; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v19
 ; SI-NEXT:    s_lshr_b32 s9, s6, 16
 ; SI-NEXT:    v_add_f32_e32 v14, 0x40c00000, v10
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
@@ -158090,29 +159005,29 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s8, v4
 ; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:144 ; 4-byte Folded Reload
 ; SI-NEXT:    v_readfirstlane_b32 s6, v14
-; SI-NEXT:    s_lshr_b32 s57, s6, 16
+; SI-NEXT:    s_lshr_b32 s43, s6, 16
 ; SI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:136 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:172 ; 4-byte Folded Reload
-; SI-NEXT:    s_lshr_b64 s[30:31], s[56:57], 16
-; SI-NEXT:    s_mov_b32 s79, s30
-; SI-NEXT:    s_lshr_b64 s[50:51], s[88:89], 16
-; SI-NEXT:    s_mov_b32 s95, s50
-; SI-NEXT:    s_lshr_b64 s[74:75], s[72:73], 16
-; SI-NEXT:    s_mov_b32 s77, s74
-; SI-NEXT:    s_lshr_b64 s[54:55], s[58:59], 16
-; SI-NEXT:    s_mov_b32 s63, s54
-; SI-NEXT:    s_lshr_b64 s[60:61], s[44:45], 16
-; SI-NEXT:    s_mov_b32 s47, s60
-; SI-NEXT:    s_lshr_b64 s[42:43], s[28:29], 16
-; SI-NEXT:    s_mov_b32 s41, s42
-; SI-NEXT:    s_lshr_b32 s44, s30, 8
-; SI-NEXT:    s_lshr_b32 s27, s50, 8
-; SI-NEXT:    s_lshr_b32 s28, s74, 8
-; SI-NEXT:    s_lshr_b32 s22, s60, 8
-; SI-NEXT:    s_mov_b32 s56, s42
-; SI-NEXT:    s_lshr_b32 s21, s42, 8
-; SI-NEXT:    v_lshrrev_b32_e32 v50, 24, v14
-; SI-NEXT:    v_lshrrev_b32_e32 v60, 24, v13
+; SI-NEXT:    s_lshr_b64 s[12:13], s[42:43], 16
+; SI-NEXT:    s_mov_b32 s79, s12
+; SI-NEXT:    s_lshr_b64 s[82:83], s[88:89], 16
+; SI-NEXT:    s_mov_b32 s95, s82
+; SI-NEXT:    s_lshr_b64 s[92:93], s[72:73], 16
+; SI-NEXT:    s_mov_b32 s77, s92
+; SI-NEXT:    s_lshr_b64 s[60:61], s[58:59], 16
+; SI-NEXT:    s_mov_b32 s63, s60
+; SI-NEXT:    s_lshr_b64 s[54:55], s[44:45], 16
+; SI-NEXT:    s_mov_b32 s47, s54
+; SI-NEXT:    s_lshr_b64 s[56:57], s[28:29], 16
+; SI-NEXT:    s_mov_b32 s41, s56
+; SI-NEXT:    s_lshr_b32 s44, s12, 8
+; SI-NEXT:    s_lshr_b32 s27, s82, 8
+; SI-NEXT:    s_lshr_b32 s28, s92, 8
+; SI-NEXT:    s_lshr_b32 s21, s60, 8
+; SI-NEXT:    s_lshr_b32 s22, s54, 8
+; SI-NEXT:    s_mov_b32 s42, s26
+; SI-NEXT:    v_lshrrev_b32_e32 v45, 24, v14
+; SI-NEXT:    v_lshrrev_b32_e32 v50, 24, v13
 ; SI-NEXT:    v_lshrrev_b32_e32 v34, 24, v8
 ; SI-NEXT:    v_lshrrev_b32_e32 v31, 24, v7
 ; SI-NEXT:    v_lshrrev_b32_e32 v30, 24, v3
@@ -158123,18 +159038,18 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_waitcnt vmcnt(2)
 ; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v4
 ; SI-NEXT:    v_add_f32_e32 v10, 0x40c00000, v4
-; SI-NEXT:    v_readfirstlane_b32 s90, v10
+; SI-NEXT:    v_readfirstlane_b32 s14, v10
 ; SI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:140 ; 4-byte Folded Reload
 ; SI-NEXT:    s_lshr_b32 s9, s6, 16
 ; SI-NEXT:    s_lshr_b64 s[34:35], s[8:9], 16
 ; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v56
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
 ; SI-NEXT:    v_readfirstlane_b32 s6, v4
-; SI-NEXT:    s_lshr_b32 s91, s6, 16
-; SI-NEXT:    s_lshr_b64 s[82:83], s[90:91], 16
-; SI-NEXT:    s_mov_b32 s35, s82
-; SI-NEXT:    s_lshr_b32 s43, s82, 8
-; SI-NEXT:    s_mov_b32 s90, vcc_lo
+; SI-NEXT:    s_lshr_b32 s15, s6, 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[14:15], 16
+; SI-NEXT:    s_mov_b32 s35, s30
+; SI-NEXT:    s_lshr_b32 s93, s30, 8
+; SI-NEXT:    s_mov_b32 s14, s90
 ; SI-NEXT:    v_lshrrev_b32_e32 v55, 24, v4
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v10
@@ -158155,12 +159070,12 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v10, 0x40c00000, v10
 ; SI-NEXT:    v_readfirstlane_b32 s6, v10
 ; SI-NEXT:    s_lshr_b32 s39, s6, 16
-; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:168 ; 4-byte Folded Reload
-; SI-NEXT:    s_lshr_b64 s[98:99], s[38:39], 16
-; SI-NEXT:    s_mov_b32 s53, s98
-; SI-NEXT:    s_lshr_b32 s58, s98, 8
-; SI-NEXT:    s_mov_b32 s38, s26
+; SI-NEXT:    s_lshr_b64 s[50:51], s[38:39], 16
+; SI-NEXT:    s_mov_b32 s53, s50
+; SI-NEXT:    s_lshr_b32 s58, s50, 8
+; SI-NEXT:    s_mov_b32 s38, s20
 ; SI-NEXT:    v_lshrrev_b32_e32 v10, 24, v10
+; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:164 ; 4-byte Folded Reload
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_and_b32_e32 v15, 0xffff0000, v15
 ; SI-NEXT:    v_add_f32_e32 v15, 0x40c00000, v15
@@ -158171,33 +159086,36 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s6, v16
 ; SI-NEXT:    s_lshr_b32 s9, s6, 16
 ; SI-NEXT:    s_lshr_b64 s[66:67], s[8:9], 16
-; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    s_waitcnt vmcnt(1)
+; SI-NEXT:    v_and_b32_e32 v6, 0xffff0000, v1
+; SI-NEXT:    v_add_f32_e32 v6, 0x40c00000, v6
+; SI-NEXT:    v_lshrrev_b32_e32 v24, 24, v6
+; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:160 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_and_b32_e32 v15, 0xffff0000, v15
 ; SI-NEXT:    v_add_f32_e32 v16, 0x40c00000, v15
-; SI-NEXT:    v_readfirstlane_b32 s92, v16
+; SI-NEXT:    v_readfirstlane_b32 s74, v16
 ; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:116 ; 4-byte Folded Reload
-; SI-NEXT:    v_and_b32_e32 v15, 0xffff0000, v1
-; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:164 ; 4-byte Folded Reload
+; SI-NEXT:    v_and_b32_e32 v15, 0xffff0000, v17
+; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:112 ; 4-byte Folded Reload
 ; SI-NEXT:    v_add_f32_e32 v15, 0x40c00000, v15
 ; SI-NEXT:    v_readfirstlane_b32 s6, v15
-; SI-NEXT:    s_lshr_b32 s93, s6, 16
-; SI-NEXT:    s_lshr_b64 s[48:49], s[92:93], 16
-; SI-NEXT:    s_mov_b32 s67, s48
-; SI-NEXT:    s_lshr_b32 s75, s48, 8
-; SI-NEXT:    s_mov_b32 s92, s74
-; SI-NEXT:    s_lshr_b32 s74, s54, 8
+; SI-NEXT:    s_lshr_b32 s75, s6, 16
+; SI-NEXT:    s_lshr_b64 s[64:65], s[74:75], 16
+; SI-NEXT:    s_mov_b32 s67, s64
+; SI-NEXT:    s_lshr_b32 s57, s64, 8
+; SI-NEXT:    s_mov_b32 s74, s60
 ; SI-NEXT:    v_lshrrev_b32_e32 v43, 24, v15
+; SI-NEXT:    s_waitcnt vmcnt(2)
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v1
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v25, 24, v1
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_and_b32_e32 v16, 0xffff0000, v16
 ; SI-NEXT:    v_add_f32_e32 v16, 0x40c00000, v16
 ; SI-NEXT:    v_readfirstlane_b32 s8, v16
 ; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:108 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(1)
-; SI-NEXT:    v_and_b32_e32 v6, 0xffff0000, v1
-; SI-NEXT:    v_add_f32_e32 v6, 0x40c00000, v6
-; SI-NEXT:    v_lshrrev_b32_e32 v24, 24, v6
-; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:160 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(1)
+; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v16, 0xffff0000, v16
 ; SI-NEXT:    v_add_f32_e32 v16, 0x40c00000, v16
 ; SI-NEXT:    v_readfirstlane_b32 s68, v16
@@ -158213,11 +159131,8 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_lshr_b64 s[70:71], s[68:69], 16
 ; SI-NEXT:    s_mov_b32 s81, s70
 ; SI-NEXT:    s_lshr_b32 s72, s70, 8
-; SI-NEXT:    s_mov_b32 s68, s60
-; SI-NEXT:    s_waitcnt vmcnt(2)
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v1
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v25, 24, v1
+; SI-NEXT:    s_mov_b32 s68, s56
+; SI-NEXT:    s_lshr_b32 s56, s56, 8
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_and_b32_e32 v16, 0xffff0000, v16
 ; SI-NEXT:    v_add_f32_e32 v16, 0x40c00000, v16
@@ -158226,7 +159141,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v16, 0xffff0000, v16
 ; SI-NEXT:    v_add_f32_e32 v16, 0x40c00000, v16
-; SI-NEXT:    v_readfirstlane_b32 s64, v16
+; SI-NEXT:    v_readfirstlane_b32 s48, v16
 ; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:92 ; 4-byte Folded Reload
 ; SI-NEXT:    v_and_b32_e32 v17, 0xffff0000, v17
 ; SI-NEXT:    v_add_f32_e32 v17, 0x40c00000, v17
@@ -158235,11 +159150,10 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_lshr_b32 s9, s6, 16
 ; SI-NEXT:    s_lshr_b64 s[86:87], s[8:9], 16
 ; SI-NEXT:    v_readfirstlane_b32 s6, v6
-; SI-NEXT:    s_lshr_b32 s65, s6, 16
-; SI-NEXT:    s_lshr_b64 s[84:85], s[64:65], 16
+; SI-NEXT:    s_lshr_b32 s49, s6, 16
+; SI-NEXT:    s_lshr_b64 s[84:85], s[48:49], 16
 ; SI-NEXT:    s_mov_b32 s87, s84
 ; SI-NEXT:    s_lshr_b32 s61, s84, 8
-; SI-NEXT:    s_mov_b32 s64, s50
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_and_b32_e32 v16, 0xffff0000, v16
 ; SI-NEXT:    v_add_f32_e32 v16, 0x40c00000, v16
@@ -158251,9 +159165,12 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s6, v17
 ; SI-NEXT:    s_lshr_b32 s9, s6, 16
 ; SI-NEXT:    v_readfirstlane_b32 s6, v1
-; SI-NEXT:    s_lshr_b32 s7, s6, 16
-; SI-NEXT:    s_lshr_b64 s[8:9], s[8:9], 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s6, 16
+; SI-NEXT:    s_lshr_b64 s[96:97], s[8:9], 16
+; SI-NEXT:    s_mov_b32 s6, s30
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 24, v9
+; SI-NEXT:    s_mov_b32 s30, s12
+; SI-NEXT:    s_lshr_b32 s12, s20, 8
 ; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 24, v18
@@ -158261,178 +159178,181 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_waitcnt vmcnt(2)
 ; SI-NEXT:    v_and_b32_e32 v16, 0xffff0000, v16
 ; SI-NEXT:    v_add_f32_e32 v16, 0x40c00000, v16
-; SI-NEXT:    v_readfirstlane_b32 s6, v16
-; SI-NEXT:    s_lshr_b64 s[96:97], s[6:7], 16
-; SI-NEXT:    s_mov_b32 s9, s96
-; SI-NEXT:    s_lshr_b64 s[14:15], s[8:9], 24
-; SI-NEXT:    v_writelane_b32 v62, s14, 4
-; SI-NEXT:    v_writelane_b32 v62, s15, 5
-; SI-NEXT:    s_lshr_b64 s[14:15], s[8:9], 16
-; SI-NEXT:    v_writelane_b32 v62, s14, 2
-; SI-NEXT:    v_writelane_b32 v62, s15, 3
-; SI-NEXT:    s_lshr_b64 s[14:15], s[8:9], 8
-; SI-NEXT:    v_writelane_b32 v62, s14, 0
-; SI-NEXT:    v_writelane_b32 v62, s15, 1
-; SI-NEXT:    s_lshr_b64 s[14:15], s[86:87], 24
-; SI-NEXT:    v_writelane_b32 v62, s14, 10
-; SI-NEXT:    v_writelane_b32 v62, s15, 11
-; SI-NEXT:    s_lshr_b64 s[14:15], s[86:87], 16
-; SI-NEXT:    v_writelane_b32 v62, s14, 8
-; SI-NEXT:    v_writelane_b32 v62, s15, 9
-; SI-NEXT:    s_lshr_b64 s[14:15], s[86:87], 8
-; SI-NEXT:    v_writelane_b32 v62, s14, 6
-; SI-NEXT:    v_writelane_b32 v62, s15, 7
-; SI-NEXT:    s_lshr_b64 s[14:15], s[80:81], 24
-; SI-NEXT:    v_writelane_b32 v62, s14, 16
-; SI-NEXT:    v_writelane_b32 v62, s15, 17
-; SI-NEXT:    s_lshr_b64 s[14:15], s[80:81], 16
-; SI-NEXT:    v_writelane_b32 v62, s14, 14
-; SI-NEXT:    v_writelane_b32 v62, s15, 15
-; SI-NEXT:    s_lshr_b64 s[14:15], s[80:81], 8
-; SI-NEXT:    v_writelane_b32 v62, s14, 12
-; SI-NEXT:    v_writelane_b32 v62, s15, 13
-; SI-NEXT:    s_lshr_b64 s[14:15], s[66:67], 24
-; SI-NEXT:    v_writelane_b32 v62, s14, 22
-; SI-NEXT:    v_writelane_b32 v62, s15, 23
-; SI-NEXT:    s_lshr_b64 s[14:15], s[66:67], 16
-; SI-NEXT:    v_writelane_b32 v62, s14, 20
-; SI-NEXT:    v_writelane_b32 v62, s15, 21
-; SI-NEXT:    s_lshr_b64 s[14:15], s[66:67], 8
-; SI-NEXT:    v_writelane_b32 v62, s14, 18
-; SI-NEXT:    v_writelane_b32 v62, s15, 19
-; SI-NEXT:    s_lshr_b64 s[14:15], s[52:53], 24
-; SI-NEXT:    v_writelane_b32 v62, s14, 28
-; SI-NEXT:    v_writelane_b32 v62, s15, 29
-; SI-NEXT:    s_lshr_b64 s[14:15], s[52:53], 16
-; SI-NEXT:    v_writelane_b32 v62, s14, 26
-; SI-NEXT:    v_writelane_b32 v62, s15, 27
-; SI-NEXT:    s_lshr_b64 s[14:15], s[52:53], 8
-; SI-NEXT:    v_writelane_b32 v62, s14, 24
-; SI-NEXT:    v_writelane_b32 v62, s15, 25
-; SI-NEXT:    s_lshr_b64 s[14:15], s[34:35], 24
-; SI-NEXT:    v_writelane_b32 v62, s14, 34
-; SI-NEXT:    v_writelane_b32 v62, s15, 35
-; SI-NEXT:    s_lshr_b64 s[14:15], s[34:35], 16
-; SI-NEXT:    v_writelane_b32 v62, s14, 32
-; SI-NEXT:    v_writelane_b32 v62, s15, 33
-; SI-NEXT:    s_lshr_b64 s[14:15], s[34:35], 8
-; SI-NEXT:    v_writelane_b32 v62, s14, 30
-; SI-NEXT:    v_writelane_b32 v62, s15, 31
-; SI-NEXT:    s_lshr_b64 s[14:15], s[78:79], 24
-; SI-NEXT:    v_writelane_b32 v62, s14, 40
-; SI-NEXT:    v_writelane_b32 v62, s15, 41
-; SI-NEXT:    s_lshr_b64 s[14:15], s[78:79], 16
-; SI-NEXT:    v_writelane_b32 v62, s14, 38
-; SI-NEXT:    v_writelane_b32 v62, s15, 39
-; SI-NEXT:    s_lshr_b64 s[14:15], s[78:79], 8
-; SI-NEXT:    v_writelane_b32 v62, s14, 36
-; SI-NEXT:    v_writelane_b32 v62, s15, 37
-; SI-NEXT:    s_lshr_b64 s[14:15], s[94:95], 24
-; SI-NEXT:    v_writelane_b32 v62, s14, 46
-; SI-NEXT:    v_writelane_b32 v62, s15, 47
-; SI-NEXT:    s_lshr_b64 s[14:15], s[94:95], 16
-; SI-NEXT:    v_writelane_b32 v62, s14, 44
-; SI-NEXT:    v_writelane_b32 v62, s15, 45
-; SI-NEXT:    s_lshr_b64 s[14:15], s[94:95], 8
-; SI-NEXT:    v_writelane_b32 v62, s14, 42
-; SI-NEXT:    v_writelane_b32 v62, s15, 43
-; SI-NEXT:    s_lshr_b64 s[14:15], s[76:77], 24
-; SI-NEXT:    v_writelane_b32 v62, s14, 52
-; SI-NEXT:    v_writelane_b32 v62, s15, 53
-; SI-NEXT:    s_lshr_b64 s[14:15], s[76:77], 16
-; SI-NEXT:    v_writelane_b32 v62, s14, 50
-; SI-NEXT:    v_writelane_b32 v62, s15, 51
-; SI-NEXT:    s_lshr_b64 s[14:15], s[76:77], 8
-; SI-NEXT:    v_writelane_b32 v62, s14, 48
-; SI-NEXT:    v_writelane_b32 v62, s15, 49
-; SI-NEXT:    s_lshr_b64 s[14:15], s[62:63], 24
-; SI-NEXT:    v_writelane_b32 v62, s14, 58
-; SI-NEXT:    v_writelane_b32 v62, s15, 59
-; SI-NEXT:    s_lshr_b64 s[14:15], s[62:63], 16
-; SI-NEXT:    v_writelane_b32 v62, s14, 56
-; SI-NEXT:    v_writelane_b32 v62, s15, 57
-; SI-NEXT:    s_lshr_b64 s[14:15], s[62:63], 8
-; SI-NEXT:    v_writelane_b32 v62, s14, 54
-; SI-NEXT:    v_writelane_b32 v62, s15, 55
-; SI-NEXT:    s_lshr_b64 s[14:15], s[46:47], 24
-; SI-NEXT:    v_writelane_b32 v61, s14, 0
-; SI-NEXT:    v_writelane_b32 v61, s15, 1
-; SI-NEXT:    s_lshr_b64 s[14:15], s[46:47], 16
-; SI-NEXT:    v_writelane_b32 v62, s14, 62
-; SI-NEXT:    v_writelane_b32 v62, s15, 63
-; SI-NEXT:    s_lshr_b64 s[14:15], s[46:47], 8
-; SI-NEXT:    v_writelane_b32 v62, s14, 60
-; SI-NEXT:    v_writelane_b32 v62, s15, 61
-; SI-NEXT:    s_lshr_b64 s[14:15], s[40:41], 24
-; SI-NEXT:    v_writelane_b32 v61, s14, 6
-; SI-NEXT:    v_writelane_b32 v61, s15, 7
-; SI-NEXT:    s_lshr_b64 s[14:15], s[40:41], 16
-; SI-NEXT:    v_writelane_b32 v61, s14, 4
-; SI-NEXT:    v_writelane_b32 v61, s15, 5
-; SI-NEXT:    s_lshr_b64 s[14:15], s[40:41], 8
-; SI-NEXT:    v_writelane_b32 v61, s14, 2
-; SI-NEXT:    v_writelane_b32 v61, s15, 3
-; SI-NEXT:    s_lshr_b64 s[14:15], s[24:25], 24
-; SI-NEXT:    v_writelane_b32 v61, s14, 12
-; SI-NEXT:    v_writelane_b32 v61, s15, 13
-; SI-NEXT:    s_lshr_b64 s[14:15], s[24:25], 16
-; SI-NEXT:    v_writelane_b32 v61, s14, 10
-; SI-NEXT:    v_writelane_b32 v61, s15, 11
-; SI-NEXT:    s_lshr_b64 s[14:15], s[24:25], 8
-; SI-NEXT:    v_writelane_b32 v61, s14, 8
-; SI-NEXT:    v_writelane_b32 v61, s15, 9
-; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 24
-; SI-NEXT:    v_writelane_b32 v61, s14, 18
-; SI-NEXT:    v_writelane_b32 v61, s15, 19
-; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 16
-; SI-NEXT:    v_writelane_b32 v61, s14, 16
-; SI-NEXT:    v_writelane_b32 v61, s15, 17
-; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 8
-; SI-NEXT:    v_writelane_b32 v61, s14, 14
-; SI-NEXT:    v_writelane_b32 v61, s15, 15
-; SI-NEXT:    s_lshr_b64 s[14:15], s[10:11], 24
-; SI-NEXT:    v_writelane_b32 v61, s14, 24
-; SI-NEXT:    v_writelane_b32 v61, s15, 25
-; SI-NEXT:    s_lshr_b64 s[14:15], s[10:11], 16
-; SI-NEXT:    v_writelane_b32 v61, s14, 22
-; SI-NEXT:    v_writelane_b32 v61, s15, 23
-; SI-NEXT:    s_lshr_b64 s[14:15], s[10:11], 8
-; SI-NEXT:    v_writelane_b32 v61, s14, 20
-; SI-NEXT:    v_writelane_b32 v61, s15, 21
-; SI-NEXT:    s_lshr_b64 s[14:15], s[4:5], 24
-; SI-NEXT:    v_writelane_b32 v61, s14, 32
-; SI-NEXT:    v_writelane_b32 v61, s15, 33
-; SI-NEXT:    s_lshr_b64 s[14:15], s[4:5], 16
-; SI-NEXT:    v_writelane_b32 v61, s14, 30
-; SI-NEXT:    v_writelane_b32 v61, s15, 31
-; SI-NEXT:    s_lshr_b64 s[14:15], s[4:5], 8
-; SI-NEXT:    v_writelane_b32 v61, s14, 28
-; SI-NEXT:    v_writelane_b32 v61, s15, 29
-; SI-NEXT:    s_lshr_b32 s88, s96, 8
-; SI-NEXT:    s_lshr_b32 s15, s26, 8
-; SI-NEXT:    s_mov_b32 s14, s20
-; SI-NEXT:    s_lshr_b32 s6, vcc_lo, 8
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v16
+; SI-NEXT:    s_lshr_b64 s[98:99], vcc, 16
+; SI-NEXT:    s_mov_b32 s97, s98
+; SI-NEXT:    s_lshr_b64 s[8:9], s[96:97], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 4
+; SI-NEXT:    v_writelane_b32 v62, s9, 5
+; SI-NEXT:    s_lshr_b64 s[8:9], s[96:97], 16
+; SI-NEXT:    v_writelane_b32 v62, s8, 2
+; SI-NEXT:    v_writelane_b32 v62, s9, 3
+; SI-NEXT:    s_lshr_b64 s[8:9], s[96:97], 8
+; SI-NEXT:    v_writelane_b32 v62, s8, 0
+; SI-NEXT:    v_writelane_b32 v62, s9, 1
+; SI-NEXT:    s_lshr_b64 s[8:9], s[86:87], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 10
+; SI-NEXT:    v_writelane_b32 v62, s9, 11
+; SI-NEXT:    s_lshr_b64 s[8:9], s[86:87], 16
+; SI-NEXT:    v_writelane_b32 v62, s8, 8
+; SI-NEXT:    v_writelane_b32 v62, s9, 9
+; SI-NEXT:    s_lshr_b64 s[8:9], s[86:87], 8
+; SI-NEXT:    v_writelane_b32 v62, s8, 6
+; SI-NEXT:    v_writelane_b32 v62, s9, 7
+; SI-NEXT:    s_lshr_b64 s[8:9], s[80:81], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 16
+; SI-NEXT:    v_writelane_b32 v62, s9, 17
+; SI-NEXT:    s_lshr_b64 s[8:9], s[80:81], 16
+; SI-NEXT:    v_writelane_b32 v62, s8, 14
+; SI-NEXT:    v_writelane_b32 v62, s9, 15
+; SI-NEXT:    s_lshr_b64 s[8:9], s[80:81], 8
+; SI-NEXT:    v_writelane_b32 v62, s8, 12
+; SI-NEXT:    v_writelane_b32 v62, s9, 13
+; SI-NEXT:    s_lshr_b64 s[8:9], s[66:67], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 22
+; SI-NEXT:    v_writelane_b32 v62, s9, 23
+; SI-NEXT:    s_lshr_b64 s[8:9], s[66:67], 16
+; SI-NEXT:    v_writelane_b32 v62, s8, 20
+; SI-NEXT:    v_writelane_b32 v62, s9, 21
+; SI-NEXT:    s_lshr_b64 s[8:9], s[66:67], 8
+; SI-NEXT:    v_writelane_b32 v62, s8, 18
+; SI-NEXT:    v_writelane_b32 v62, s9, 19
+; SI-NEXT:    s_lshr_b64 s[8:9], s[52:53], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 28
+; SI-NEXT:    v_writelane_b32 v62, s9, 29
+; SI-NEXT:    s_lshr_b64 s[8:9], s[52:53], 16
+; SI-NEXT:    v_writelane_b32 v62, s8, 26
+; SI-NEXT:    v_writelane_b32 v62, s9, 27
+; SI-NEXT:    s_lshr_b64 s[8:9], s[52:53], 8
+; SI-NEXT:    v_writelane_b32 v62, s8, 24
+; SI-NEXT:    v_writelane_b32 v62, s9, 25
+; SI-NEXT:    s_lshr_b64 s[8:9], s[34:35], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 34
+; SI-NEXT:    v_writelane_b32 v62, s9, 35
+; SI-NEXT:    s_lshr_b64 s[8:9], s[34:35], 16
+; SI-NEXT:    v_writelane_b32 v62, s8, 32
+; SI-NEXT:    v_writelane_b32 v62, s9, 33
+; SI-NEXT:    s_lshr_b64 s[8:9], s[34:35], 8
+; SI-NEXT:    v_writelane_b32 v62, s8, 30
+; SI-NEXT:    v_writelane_b32 v62, s9, 31
+; SI-NEXT:    s_lshr_b64 s[8:9], s[78:79], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 42
+; SI-NEXT:    v_writelane_b32 v62, s9, 43
+; SI-NEXT:    s_lshr_b64 s[8:9], s[78:79], 16
+; SI-NEXT:    v_writelane_b32 v62, s8, 40
+; SI-NEXT:    v_writelane_b32 v62, s9, 41
+; SI-NEXT:    s_lshr_b64 s[8:9], s[78:79], 8
+; SI-NEXT:    v_writelane_b32 v62, s8, 38
+; SI-NEXT:    v_writelane_b32 v62, s9, 39
+; SI-NEXT:    s_lshr_b64 s[8:9], s[94:95], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 48
+; SI-NEXT:    v_writelane_b32 v62, s9, 49
+; SI-NEXT:    s_lshr_b64 s[8:9], s[94:95], 16
+; SI-NEXT:    v_writelane_b32 v62, s8, 46
+; SI-NEXT:    v_writelane_b32 v62, s9, 47
+; SI-NEXT:    s_lshr_b64 s[8:9], s[94:95], 8
+; SI-NEXT:    v_writelane_b32 v62, s8, 44
+; SI-NEXT:    v_writelane_b32 v62, s9, 45
+; SI-NEXT:    s_lshr_b64 s[8:9], s[76:77], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 54
+; SI-NEXT:    v_writelane_b32 v62, s9, 55
+; SI-NEXT:    s_lshr_b64 s[8:9], s[76:77], 16
+; SI-NEXT:    v_writelane_b32 v62, s8, 52
+; SI-NEXT:    v_writelane_b32 v62, s9, 53
+; SI-NEXT:    s_lshr_b64 s[8:9], s[76:77], 8
+; SI-NEXT:    v_writelane_b32 v62, s8, 50
+; SI-NEXT:    v_writelane_b32 v62, s9, 51
+; SI-NEXT:    s_lshr_b64 s[8:9], s[62:63], 24
+; SI-NEXT:    v_writelane_b32 v62, s8, 62
+; SI-NEXT:    v_writelane_b32 v62, s9, 63
+; SI-NEXT:    s_lshr_b64 s[8:9], s[62:63], 16
+; SI-NEXT:    v_writelane_b32 v62, s8, 60
+; SI-NEXT:    v_writelane_b32 v62, s9, 61
+; SI-NEXT:    s_lshr_b64 s[8:9], s[62:63], 8
+; SI-NEXT:    v_writelane_b32 v62, s8, 58
+; SI-NEXT:    v_writelane_b32 v62, s9, 59
+; SI-NEXT:    s_lshr_b64 s[8:9], s[46:47], 24
+; SI-NEXT:    v_writelane_b32 v61, s8, 4
+; SI-NEXT:    v_writelane_b32 v61, s9, 5
+; SI-NEXT:    s_lshr_b64 s[8:9], s[46:47], 16
+; SI-NEXT:    v_writelane_b32 v61, s8, 2
+; SI-NEXT:    v_writelane_b32 v61, s9, 3
+; SI-NEXT:    s_lshr_b64 s[8:9], s[46:47], 8
+; SI-NEXT:    v_writelane_b32 v61, s8, 0
+; SI-NEXT:    v_writelane_b32 v61, s9, 1
+; SI-NEXT:    s_lshr_b64 s[8:9], s[40:41], 24
+; SI-NEXT:    v_writelane_b32 v61, s8, 10
+; SI-NEXT:    v_writelane_b32 v61, s9, 11
+; SI-NEXT:    s_lshr_b64 s[8:9], s[40:41], 16
+; SI-NEXT:    v_writelane_b32 v61, s8, 8
+; SI-NEXT:    v_writelane_b32 v61, s9, 9
+; SI-NEXT:    s_lshr_b64 s[8:9], s[40:41], 8
+; SI-NEXT:    v_writelane_b32 v61, s8, 6
+; SI-NEXT:    v_writelane_b32 v61, s9, 7
+; SI-NEXT:    s_lshr_b64 s[8:9], s[24:25], 24
+; SI-NEXT:    v_writelane_b32 v61, s8, 16
+; SI-NEXT:    v_writelane_b32 v61, s9, 17
+; SI-NEXT:    s_lshr_b64 s[8:9], s[24:25], 16
+; SI-NEXT:    v_writelane_b32 v61, s8, 14
+; SI-NEXT:    v_writelane_b32 v61, s9, 15
+; SI-NEXT:    s_lshr_b64 s[8:9], s[24:25], 8
+; SI-NEXT:    v_writelane_b32 v61, s8, 12
+; SI-NEXT:    v_writelane_b32 v61, s9, 13
+; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
+; SI-NEXT:    v_writelane_b32 v61, s8, 22
+; SI-NEXT:    v_writelane_b32 v61, s9, 23
+; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
+; SI-NEXT:    v_writelane_b32 v61, s8, 20
+; SI-NEXT:    v_writelane_b32 v61, s9, 21
+; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 8
+; SI-NEXT:    v_writelane_b32 v61, s8, 18
+; SI-NEXT:    v_writelane_b32 v61, s9, 19
+; SI-NEXT:    s_lshr_b64 s[8:9], s[10:11], 24
+; SI-NEXT:    v_writelane_b32 v61, s8, 28
+; SI-NEXT:    v_writelane_b32 v61, s9, 29
+; SI-NEXT:    s_lshr_b64 s[8:9], s[10:11], 16
+; SI-NEXT:    v_writelane_b32 v61, s8, 26
+; SI-NEXT:    v_writelane_b32 v61, s9, 27
+; SI-NEXT:    s_lshr_b64 s[8:9], s[10:11], 8
+; SI-NEXT:    v_writelane_b32 v61, s8, 24
+; SI-NEXT:    v_writelane_b32 v61, s9, 25
+; SI-NEXT:    s_lshr_b64 s[8:9], s[4:5], 24
+; SI-NEXT:    v_writelane_b32 v61, s8, 36
+; SI-NEXT:    v_writelane_b32 v61, s9, 37
+; SI-NEXT:    s_lshr_b64 s[8:9], s[4:5], 16
+; SI-NEXT:    v_writelane_b32 v61, s8, 34
+; SI-NEXT:    v_writelane_b32 v62, s6, 36
+; SI-NEXT:    v_writelane_b32 v61, s9, 35
+; SI-NEXT:    s_lshr_b64 s[8:9], s[4:5], 8
+; SI-NEXT:    v_writelane_b32 v62, s7, 37
+; SI-NEXT:    s_mov_b32 s6, s92
+; SI-NEXT:    v_writelane_b32 v61, s8, 32
+; SI-NEXT:    v_writelane_b32 v62, s6, 56
+; SI-NEXT:    v_writelane_b32 v61, s9, 33
+; SI-NEXT:    s_lshr_b32 s88, s98, 8
+; SI-NEXT:    v_writelane_b32 v62, s7, 57
+; SI-NEXT:    s_lshr_b32 s6, s90, 8
 ; SI-NEXT:  .LBB91_5: ; %end
-; SI-NEXT:    s_and_b32 s5, s8, 0xff
 ; SI-NEXT:    v_readlane_b32 s8, v62, 0
+; SI-NEXT:    s_and_b32 s5, s96, 0xff
 ; SI-NEXT:    v_readlane_b32 s9, v62, 1
 ; SI-NEXT:    s_lshl_b32 s8, s8, 8
 ; SI-NEXT:    s_or_b32 s5, s5, s8
 ; SI-NEXT:    v_readlane_b32 s8, v62, 2
 ; SI-NEXT:    v_readlane_b32 s9, v62, 3
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 vcc_lo, v62, 4
+; SI-NEXT:    v_readlane_b32 s96, v62, 4
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
-; SI-NEXT:    s_lshl_b32 s9, vcc_lo, 24
+; SI-NEXT:    s_lshl_b32 s9, s96, 24
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_or_b32 s5, s5, s8
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
-; SI-NEXT:    s_and_b32 s5, s96, 0xff
+; SI-NEXT:    s_and_b32 s5, s98, 0xff
 ; SI-NEXT:    s_lshl_b32 s8, s88, 8
 ; SI-NEXT:    s_or_b32 s5, s5, s8
-; SI-NEXT:    s_and_b32 s8, s7, 0xff
+; SI-NEXT:    s_and_b32 s8, vcc_hi, 0xff
 ; SI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_waitcnt expcnt(0)
@@ -158440,7 +159360,6 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    v_or_b32_e32 v1, s8, v1
 ; SI-NEXT:    v_readlane_b32 s8, v62, 6
-; SI-NEXT:    v_readlane_b32 vcc_hi, v62, 5
 ; SI-NEXT:    v_or_b32_e32 v1, s5, v1
 ; SI-NEXT:    s_and_b32 s5, s86, 0xff
 ; SI-NEXT:    v_readlane_b32 s9, v62, 7
@@ -158464,7 +159383,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 8, v0
 ; SI-NEXT:    s_or_b32 s5, s5, s8
-; SI-NEXT:    s_and_b32 s8, s65, 0xff
+; SI-NEXT:    s_and_b32 s8, s49, 0xff
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v24
@@ -158497,7 +159416,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_and_b32 s8, s69, 0xff
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
-; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v19
+; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v20
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    v_or_b32_e32 v1, s8, v1
 ; SI-NEXT:    v_readlane_b32 s8, v62, 18
@@ -158520,12 +159439,12 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_or_b32 s5, s5, s8
 ; SI-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen
 ; SI-NEXT:    v_mov_b32_e32 v2, s5
-; SI-NEXT:    s_and_b32 s5, s48, 0xff
-; SI-NEXT:    s_lshl_b32 s8, s75, 8
+; SI-NEXT:    s_and_b32 s5, s64, 0xff
+; SI-NEXT:    s_lshl_b32 s8, s57, 8
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 24, v0
 ; SI-NEXT:    s_or_b32 s5, s5, s8
-; SI-NEXT:    s_and_b32 s8, s93, 0xff
+; SI-NEXT:    s_and_b32 s8, s75, 0xff
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v43
@@ -158551,7 +159470,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_or_b32 s5, s5, s8
 ; SI-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen
 ; SI-NEXT:    v_mov_b32_e32 v2, s5
-; SI-NEXT:    s_and_b32 s5, s98, 0xff
+; SI-NEXT:    s_and_b32 s5, s50, 0xff
 ; SI-NEXT:    s_lshl_b32 s8, s58, 8
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 32, v0
@@ -158580,31 +159499,34 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v2, vcc, 36, v0
 ; SI-NEXT:    s_or_b32 s5, s5, s8
+; SI-NEXT:    v_readlane_b32 s8, v62, 36
 ; SI-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen
 ; SI-NEXT:    v_mov_b32_e32 v2, s5
-; SI-NEXT:    s_and_b32 s5, s82, 0xff
-; SI-NEXT:    s_lshl_b32 s8, s43, 8
+; SI-NEXT:    s_and_b32 s5, s8, 0xff
+; SI-NEXT:    s_lshl_b32 s8, s93, 8
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 40, v0
 ; SI-NEXT:    s_or_b32 s5, s5, s8
-; SI-NEXT:    s_and_b32 s8, s91, 0xff
+; SI-NEXT:    s_and_b32 s8, s15, 0xff
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
+; SI-NEXT:    v_readlane_b32 s9, v62, 37
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v55
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    v_or_b32_e32 v1, s8, v1
-; SI-NEXT:    v_readlane_b32 s8, v62, 36
+; SI-NEXT:    v_readlane_b32 s8, v62, 38
 ; SI-NEXT:    v_or_b32_e32 v1, s5, v1
 ; SI-NEXT:    s_and_b32 s5, s78, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v62, 37
+; SI-NEXT:    v_readlane_b32 s9, v62, 39
 ; SI-NEXT:    s_lshl_b32 s8, s8, 8
+; SI-NEXT:    v_readlane_b32 s61, v62, 35
 ; SI-NEXT:    s_or_b32 s5, s5, s8
-; SI-NEXT:    v_readlane_b32 s8, v62, 38
-; SI-NEXT:    v_readlane_b32 s9, v62, 39
+; SI-NEXT:    v_readlane_b32 s8, v62, 40
+; SI-NEXT:    v_readlane_b32 s9, v62, 41
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s42, v62, 40
+; SI-NEXT:    v_readlane_b32 s60, v62, 42
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
-; SI-NEXT:    s_lshl_b32 s9, s42, 24
+; SI-NEXT:    s_lshl_b32 s9, s60, 24
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_waitcnt expcnt(0)
@@ -158617,25 +159539,25 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 48, v0
 ; SI-NEXT:    s_or_b32 s5, s5, s8
-; SI-NEXT:    s_and_b32 s8, s57, 0xff
+; SI-NEXT:    s_and_b32 s8, s43, 0xff
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
-; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v50
+; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v45
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    v_or_b32_e32 v1, s8, v1
-; SI-NEXT:    v_readlane_b32 s8, v62, 42
+; SI-NEXT:    v_readlane_b32 s8, v62, 44
 ; SI-NEXT:    v_or_b32_e32 v1, s5, v1
 ; SI-NEXT:    s_and_b32 s5, s94, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v62, 43
+; SI-NEXT:    v_readlane_b32 s9, v62, 45
 ; SI-NEXT:    s_lshl_b32 s8, s8, 8
-; SI-NEXT:    v_readlane_b32 s43, v62, 41
+; SI-NEXT:    v_readlane_b32 s61, v62, 43
 ; SI-NEXT:    s_or_b32 s5, s5, s8
-; SI-NEXT:    v_readlane_b32 s8, v62, 44
-; SI-NEXT:    v_readlane_b32 s9, v62, 45
+; SI-NEXT:    v_readlane_b32 s8, v62, 46
+; SI-NEXT:    v_readlane_b32 s9, v62, 47
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s42, v62, 46
+; SI-NEXT:    v_readlane_b32 s60, v62, 48
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
-; SI-NEXT:    s_lshl_b32 s9, s42, 24
+; SI-NEXT:    s_lshl_b32 s9, s60, 24
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_waitcnt expcnt(0)
@@ -158643,7 +159565,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_or_b32 s5, s5, s8
 ; SI-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen
 ; SI-NEXT:    v_mov_b32_e32 v2, s5
-; SI-NEXT:    s_and_b32 s5, s64, 0xff
+; SI-NEXT:    s_and_b32 s5, s82, 0xff
 ; SI-NEXT:    s_lshl_b32 s8, s27, 8
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 56, v0
@@ -158651,19 +159573,19 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_and_b32 s8, s89, 0xff
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
-; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v60
+; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v50
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    v_or_b32_e32 v1, s8, v1
-; SI-NEXT:    v_readlane_b32 s8, v62, 48
+; SI-NEXT:    v_readlane_b32 s8, v62, 50
 ; SI-NEXT:    v_or_b32_e32 v1, s5, v1
 ; SI-NEXT:    s_and_b32 s5, s76, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v62, 49
+; SI-NEXT:    v_readlane_b32 s9, v62, 51
 ; SI-NEXT:    s_lshl_b32 s8, s8, 8
 ; SI-NEXT:    s_or_b32 s5, s5, s8
-; SI-NEXT:    v_readlane_b32 s8, v62, 50
-; SI-NEXT:    v_readlane_b32 s9, v62, 51
+; SI-NEXT:    v_readlane_b32 s8, v62, 52
+; SI-NEXT:    v_readlane_b32 s9, v62, 53
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s26, v62, 52
+; SI-NEXT:    v_readlane_b32 s26, v62, 54
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_lshl_b32 s9, s26, 24
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -158677,21 +159599,23 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v2, s5
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:56 ; 4-byte Folded Reload
-; SI-NEXT:    s_and_b32 s5, s92, 0xff
+; SI-NEXT:    v_readlane_b32 s8, v62, 56
+; SI-NEXT:    s_and_b32 s5, s8, 0xff
 ; SI-NEXT:    s_lshl_b32 s8, s28, 8
 ; SI-NEXT:    s_or_b32 s5, s5, s8
 ; SI-NEXT:    s_and_b32 s8, s73, 0xff
+; SI-NEXT:    v_readlane_b32 s9, v62, 57
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    v_readlane_b32 s27, v62, 53
-; SI-NEXT:    v_readlane_b32 s26, v62, 58
+; SI-NEXT:    v_readlane_b32 s27, v62, 55
+; SI-NEXT:    v_readlane_b32 s26, v62, 62
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v2, vcc, 0x44, v0
-; SI-NEXT:    v_readlane_b32 s27, v62, 59
 ; SI-NEXT:    s_and_b32 s4, s4, 0xff
+; SI-NEXT:    v_readlane_b32 s97, v62, 5
 ; SI-NEXT:    v_readlane_b32 s30, v63, 34
-; SI-NEXT:    v_readlane_b32 s61, v62, 35
-; SI-NEXT:    v_readlane_b32 s43, v62, 47
+; SI-NEXT:    v_readlane_b32 s61, v62, 49
+; SI-NEXT:    v_readlane_b32 s27, v62, 63
 ; SI-NEXT:    v_readlane_b32 s31, v63, 35
 ; SI-NEXT:    v_readlane_b32 s99, v63, 33
 ; SI-NEXT:    v_readlane_b32 s98, v63, 32
@@ -158726,14 +159650,14 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v1
 ; SI-NEXT:    v_or_b32_e32 v1, s8, v1
-; SI-NEXT:    v_readlane_b32 s8, v62, 54
+; SI-NEXT:    v_readlane_b32 s8, v62, 58
 ; SI-NEXT:    v_or_b32_e32 v1, s5, v1
 ; SI-NEXT:    s_and_b32 s5, s62, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v62, 55
+; SI-NEXT:    v_readlane_b32 s9, v62, 59
 ; SI-NEXT:    s_lshl_b32 s8, s8, 8
 ; SI-NEXT:    s_or_b32 s5, s5, s8
-; SI-NEXT:    v_readlane_b32 s8, v62, 56
-; SI-NEXT:    v_readlane_b32 s9, v62, 57
+; SI-NEXT:    v_readlane_b32 s8, v62, 60
+; SI-NEXT:    v_readlane_b32 s9, v62, 61
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_lshl_b32 s9, s26, 24
@@ -158742,8 +159666,8 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_or_b32 s5, s5, s8
 ; SI-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen
 ; SI-NEXT:    v_mov_b32_e32 v2, s5
-; SI-NEXT:    s_and_b32 s5, s54, 0xff
-; SI-NEXT:    s_lshl_b32 s8, s74, 8
+; SI-NEXT:    s_and_b32 s5, s74, 0xff
+; SI-NEXT:    s_lshl_b32 s8, s21, 8
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x48, v0
 ; SI-NEXT:    s_or_b32 s5, s5, s8
@@ -158753,18 +159677,18 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v34
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    v_or_b32_e32 v1, s8, v1
-; SI-NEXT:    v_readlane_b32 s8, v62, 60
+; SI-NEXT:    v_readlane_b32 s8, v61, 0
 ; SI-NEXT:    v_or_b32_e32 v1, s5, v1
 ; SI-NEXT:    s_and_b32 s5, s46, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v62, 61
+; SI-NEXT:    v_readlane_b32 s9, v61, 1
 ; SI-NEXT:    s_lshl_b32 s8, s8, 8
 ; SI-NEXT:    s_or_b32 s5, s5, s8
-; SI-NEXT:    v_readlane_b32 s8, v62, 62
-; SI-NEXT:    v_readlane_b32 s9, v62, 63
+; SI-NEXT:    v_readlane_b32 s8, v61, 2
+; SI-NEXT:    v_readlane_b32 s9, v61, 3
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s26, v61, 0
+; SI-NEXT:    v_readlane_b32 s20, v61, 4
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
-; SI-NEXT:    s_lshl_b32 s9, s26, 24
+; SI-NEXT:    s_lshl_b32 s9, s20, 24
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_waitcnt expcnt(0)
@@ -158772,7 +159696,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_or_b32 s5, s5, s8
 ; SI-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen
 ; SI-NEXT:    v_mov_b32_e32 v2, s5
-; SI-NEXT:    s_and_b32 s5, s68, 0xff
+; SI-NEXT:    s_and_b32 s5, s54, 0xff
 ; SI-NEXT:    s_lshl_b32 s8, s22, 8
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x50, v0
@@ -158783,19 +159707,19 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v31
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    v_or_b32_e32 v1, s8, v1
-; SI-NEXT:    v_readlane_b32 s8, v61, 2
+; SI-NEXT:    v_readlane_b32 s8, v61, 6
 ; SI-NEXT:    v_or_b32_e32 v1, s5, v1
 ; SI-NEXT:    s_and_b32 s5, s40, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v61, 3
+; SI-NEXT:    v_readlane_b32 s9, v61, 7
 ; SI-NEXT:    s_lshl_b32 s8, s8, 8
-; SI-NEXT:    v_readlane_b32 s27, v61, 1
+; SI-NEXT:    v_readlane_b32 s21, v61, 5
 ; SI-NEXT:    s_or_b32 s5, s5, s8
-; SI-NEXT:    v_readlane_b32 s8, v61, 4
-; SI-NEXT:    v_readlane_b32 s9, v61, 5
+; SI-NEXT:    v_readlane_b32 s8, v61, 8
+; SI-NEXT:    v_readlane_b32 s9, v61, 9
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s26, v61, 6
+; SI-NEXT:    v_readlane_b32 s20, v61, 10
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
-; SI-NEXT:    s_lshl_b32 s9, s26, 24
+; SI-NEXT:    s_lshl_b32 s9, s20, 24
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_waitcnt expcnt(0)
@@ -158803,8 +159727,8 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_or_b32 s5, s5, s8
 ; SI-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen
 ; SI-NEXT:    v_mov_b32_e32 v2, s5
-; SI-NEXT:    s_and_b32 s5, s56, 0xff
-; SI-NEXT:    s_lshl_b32 s8, s21, 8
+; SI-NEXT:    s_and_b32 s5, s68, 0xff
+; SI-NEXT:    s_lshl_b32 s8, s56, 8
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x58, v0
 ; SI-NEXT:    s_or_b32 s5, s5, s8
@@ -158814,16 +159738,17 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v30
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    v_or_b32_e32 v1, s8, v1
-; SI-NEXT:    v_readlane_b32 s8, v61, 8
+; SI-NEXT:    v_readlane_b32 s8, v61, 12
 ; SI-NEXT:    v_or_b32_e32 v1, s5, v1
 ; SI-NEXT:    s_and_b32 s5, s24, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v61, 9
+; SI-NEXT:    v_readlane_b32 s9, v61, 13
 ; SI-NEXT:    s_lshl_b32 s8, s8, 8
+; SI-NEXT:    v_readlane_b32 s21, v61, 11
 ; SI-NEXT:    s_or_b32 s5, s5, s8
-; SI-NEXT:    v_readlane_b32 s8, v61, 10
-; SI-NEXT:    v_readlane_b32 s9, v61, 11
+; SI-NEXT:    v_readlane_b32 s8, v61, 14
+; SI-NEXT:    v_readlane_b32 s9, v61, 15
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s20, v61, 12
+; SI-NEXT:    v_readlane_b32 s20, v61, 16
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_lshl_b32 s9, s20, 24
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -158833,7 +159758,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_or_b32 s5, s5, s8
 ; SI-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen
 ; SI-NEXT:    v_mov_b32_e32 v2, s5
-; SI-NEXT:    s_and_b32 s5, s36, 0xff
+; SI-NEXT:    s_and_b32 s5, s42, 0xff
 ; SI-NEXT:    s_lshl_b32 s8, s18, 8
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x60, v0
@@ -158844,16 +159769,16 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v29
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    v_or_b32_e32 v1, s8, v1
-; SI-NEXT:    v_readlane_b32 s8, v61, 14
+; SI-NEXT:    v_readlane_b32 s8, v61, 18
 ; SI-NEXT:    v_or_b32_e32 v1, s5, v1
 ; SI-NEXT:    s_and_b32 s5, s16, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v61, 15
+; SI-NEXT:    v_readlane_b32 s9, v61, 19
 ; SI-NEXT:    s_lshl_b32 s8, s8, 8
 ; SI-NEXT:    s_or_b32 s5, s5, s8
-; SI-NEXT:    v_readlane_b32 s8, v61, 16
-; SI-NEXT:    v_readlane_b32 s9, v61, 17
+; SI-NEXT:    v_readlane_b32 s8, v61, 20
+; SI-NEXT:    v_readlane_b32 s9, v61, 21
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s16, v61, 18
+; SI-NEXT:    v_readlane_b32 s16, v61, 22
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_lshl_b32 s9, s16, 24
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -158863,8 +159788,8 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_or_b32 s5, s5, s8
 ; SI-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen
 ; SI-NEXT:    v_mov_b32_e32 v2, s5
-; SI-NEXT:    s_and_b32 s5, s38, 0xff
-; SI-NEXT:    s_lshl_b32 s8, s15, 8
+; SI-NEXT:    s_and_b32 s5, s36, 0xff
+; SI-NEXT:    s_lshl_b32 s8, s91, 8
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x68, v0
 ; SI-NEXT:    s_or_b32 s5, s5, s8
@@ -158874,16 +159799,16 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v27
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    v_or_b32_e32 v1, s8, v1
-; SI-NEXT:    v_readlane_b32 s8, v61, 20
+; SI-NEXT:    v_readlane_b32 s8, v61, 24
 ; SI-NEXT:    v_or_b32_e32 v1, s5, v1
 ; SI-NEXT:    s_and_b32 s5, s10, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v61, 21
+; SI-NEXT:    v_readlane_b32 s9, v61, 25
 ; SI-NEXT:    s_lshl_b32 s8, s8, 8
 ; SI-NEXT:    s_or_b32 s5, s5, s8
-; SI-NEXT:    v_readlane_b32 s8, v61, 22
-; SI-NEXT:    v_readlane_b32 s9, v61, 23
+; SI-NEXT:    v_readlane_b32 s8, v61, 26
+; SI-NEXT:    v_readlane_b32 s9, v61, 27
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s10, v61, 24
+; SI-NEXT:    v_readlane_b32 s10, v61, 28
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_lshl_b32 s9, s10, 24
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -158893,11 +159818,11 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_or_b32 s5, s5, s8
 ; SI-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen
 ; SI-NEXT:    v_mov_b32_e32 v2, s5
-; SI-NEXT:    s_and_b32 s5, s14, 0xff
+; SI-NEXT:    s_and_b32 s5, s38, 0xff
 ; SI-NEXT:    s_lshl_b32 s8, s12, 8
 ; SI-NEXT:    s_or_b32 s5, s5, s8
-; SI-NEXT:    v_readlane_b32 s8, v61, 26
-; SI-NEXT:    v_readlane_b32 s9, v61, 27
+; SI-NEXT:    v_readlane_b32 s8, v61, 30
+; SI-NEXT:    v_readlane_b32 s9, v61, 31
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x70, v0
 ; SI-NEXT:    s_and_b32 s8, s9, 0xff
@@ -158905,16 +159830,16 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 24, v26
 ; SI-NEXT:    v_or_b32_e32 v1, s8, v1
-; SI-NEXT:    v_readlane_b32 s8, v61, 28
+; SI-NEXT:    v_readlane_b32 s8, v61, 32
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    v_readlane_b32 s9, v61, 29
+; SI-NEXT:    v_readlane_b32 s9, v61, 33
 ; SI-NEXT:    v_or_b32_e32 v1, s5, v1
 ; SI-NEXT:    s_lshl_b32 s5, s8, 8
-; SI-NEXT:    v_readlane_b32 s8, v61, 30
-; SI-NEXT:    v_readlane_b32 s9, v61, 31
+; SI-NEXT:    v_readlane_b32 s8, v61, 34
+; SI-NEXT:    v_readlane_b32 s9, v61, 35
 ; SI-NEXT:    s_or_b32 s4, s4, s5
 ; SI-NEXT:    s_and_b32 s5, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s8, v61, 32
+; SI-NEXT:    v_readlane_b32 s8, v61, 36
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_lshl_b32 s8, s8, 24
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
@@ -158928,18 +159853,17 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:52 ; 4-byte Folded Reload
-; SI-NEXT:    s_and_b32 s4, s90, 0xff
+; SI-NEXT:    s_and_b32 s4, s14, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 8
 ; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    s_and_b32 s5, s13, 0xff
+; SI-NEXT:    s_and_b32 s5, s7, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    v_add_i32_e32 v0, vcc, 0x7c, v0
-; SI-NEXT:    v_readlane_b32 s27, v61, 7
-; SI-NEXT:    v_readlane_b32 s21, v61, 13
-; SI-NEXT:    v_readlane_b32 s17, v61, 19
-; SI-NEXT:    v_readlane_b32 s11, v61, 25
-; SI-NEXT:    v_readlane_b32 s9, v61, 33
+; SI-NEXT:    v_readlane_b32 s21, v61, 17
+; SI-NEXT:    v_readlane_b32 s17, v61, 23
+; SI-NEXT:    v_readlane_b32 s11, v61, 29
+; SI-NEXT:    v_readlane_b32 s9, v61, 37
 ; SI-NEXT:    v_readlane_b32 s68, v63, 18
 ; SI-NEXT:    v_readlane_b32 s54, v63, 12
 ; SI-NEXT:    v_readlane_b32 s38, v63, 4
@@ -159044,7 +159968,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v1
 ; VI-NEXT:    ; implicit-def: $vgpr62 : SGPR spill to VGPR lane
-; VI-NEXT:    s_cbranch_scc0 .LBB91_3
+; VI-NEXT:    s_cbranch_scc0 .LBB91_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s46, s5, 24
 ; VI-NEXT:    v_writelane_b32 v62, s46, 2
@@ -159195,13 +160119,175 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; VI-NEXT:    s_lshr_b64 s[78:79], s[6:7], 24
 ; VI-NEXT:    s_lshr_b64 s[88:89], s[8:9], 24
 ; VI-NEXT:    s_lshr_b64 s[90:91], s[10:11], 24
-; VI-NEXT:    s_lshr_b64 s[30:31], s[12:13], 24
-; VI-NEXT:    s_lshr_b64 s[34:35], s[14:15], 24
-; VI-NEXT:    s_lshr_b64 s[36:37], s[40:41], 24
-; VI-NEXT:    s_lshr_b64 s[38:39], s[42:43], 24
-; VI-NEXT:    s_lshr_b64 s[48:49], s[44:45], 24
-; VI-NEXT:    s_cbranch_execnz .LBB91_4
-; VI-NEXT:  .LBB91_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b64 vcc, s[12:13], 24
+; VI-NEXT:    s_lshr_b64 s[30:31], s[14:15], 24
+; VI-NEXT:    s_lshr_b64 s[34:35], s[40:41], 24
+; VI-NEXT:    s_lshr_b64 s[36:37], s[42:43], 24
+; VI-NEXT:    s_lshr_b64 s[38:39], s[44:45], 24
+; VI-NEXT:    s_mov_b64 s[48:49], 0
+; VI-NEXT:    s_branch .LBB91_3
+; VI-NEXT:  .LBB91_2:
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    s_mov_b64 s[48:49], -1
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr80
+; VI-NEXT:    ; implicit-def: $sgpr81
+; VI-NEXT:    ; implicit-def: $sgpr84
+; VI-NEXT:    ; implicit-def: $sgpr85
+; VI-NEXT:    ; implicit-def: $sgpr82
+; VI-NEXT:    ; implicit-def: $sgpr83
+; VI-NEXT:    ; implicit-def: $sgpr50
+; VI-NEXT:    ; implicit-def: $sgpr86
+; VI-NEXT:    ; implicit-def: $sgpr87
+; VI-NEXT:    ; implicit-def: $sgpr51
+; VI-NEXT:    ; implicit-def: $sgpr52
+; VI-NEXT:    ; implicit-def: $sgpr53
+; VI-NEXT:    ; implicit-def: $sgpr65
+; VI-NEXT:    ; implicit-def: $sgpr66
+; VI-NEXT:    ; implicit-def: $sgpr54
+; VI-NEXT:    ; implicit-def: $sgpr55
+; VI-NEXT:    ; implicit-def: $sgpr64
+; VI-NEXT:    ; implicit-def: $sgpr70
+; VI-NEXT:    ; implicit-def: $sgpr71
+; VI-NEXT:    ; implicit-def: $sgpr67
+; VI-NEXT:    ; implicit-def: $sgpr68
+; VI-NEXT:    ; implicit-def: $sgpr69
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr38
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:  .LBB91_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[48:49], s[48:49], exec
+; VI-NEXT:    s_cselect_b32 s47, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s47, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB91_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s46, s45, 16
 ; VI-NEXT:    v_mov_b32_e32 v2, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v1, s46, v2
@@ -160020,164 +161106,8 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; VI-NEXT:    v_lshrrev_b32_e32 v57, 8, v36
 ; VI-NEXT:    v_lshrrev_b32_e32 v36, 16, v53
 ; VI-NEXT:    v_lshrrev_b32_e32 v53, 8, v53
-; VI-NEXT:    s_branch .LBB91_5
-; VI-NEXT:  .LBB91_3:
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr80
-; VI-NEXT:    ; implicit-def: $sgpr81
-; VI-NEXT:    ; implicit-def: $sgpr84
-; VI-NEXT:    ; implicit-def: $sgpr85
-; VI-NEXT:    ; implicit-def: $sgpr82
-; VI-NEXT:    ; implicit-def: $sgpr83
-; VI-NEXT:    ; implicit-def: $sgpr50
-; VI-NEXT:    ; implicit-def: $sgpr86
-; VI-NEXT:    ; implicit-def: $sgpr87
-; VI-NEXT:    ; implicit-def: $sgpr51
-; VI-NEXT:    ; implicit-def: $sgpr52
-; VI-NEXT:    ; implicit-def: $sgpr53
-; VI-NEXT:    ; implicit-def: $sgpr65
-; VI-NEXT:    ; implicit-def: $sgpr66
-; VI-NEXT:    ; implicit-def: $sgpr54
-; VI-NEXT:    ; implicit-def: $sgpr55
-; VI-NEXT:    ; implicit-def: $sgpr64
-; VI-NEXT:    ; implicit-def: $sgpr70
-; VI-NEXT:    ; implicit-def: $sgpr71
-; VI-NEXT:    ; implicit-def: $sgpr67
-; VI-NEXT:    ; implicit-def: $sgpr68
-; VI-NEXT:    ; implicit-def: $sgpr69
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr48
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    s_branch .LBB91_2
-; VI-NEXT:  .LBB91_4:
+; VI-NEXT:    s_branch .LBB91_6
+; VI-NEXT:  .LBB91_5:
 ; VI-NEXT:    v_readlane_b32 s47, v62, 0
 ; VI-NEXT:    v_mov_b32_e32 v1, s47
 ; VI-NEXT:    v_readlane_b32 s47, v62, 1
@@ -160358,25 +161288,25 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; VI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:160 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v8, off, s[0:3], s32 offset:164 ; 4-byte Folded Spill
 ; VI-NEXT:    v_mov_b32_e32 v1, s10
-; VI-NEXT:    v_mov_b32_e32 v7, s30
+; VI-NEXT:    v_mov_b32_e32 v7, vcc_lo
 ; VI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:184 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v8, off, s[0:3], s32 offset:188 ; 4-byte Folded Spill
 ; VI-NEXT:    v_mov_b32_e32 v1, s11
-; VI-NEXT:    v_mov_b32_e32 v7, s34
+; VI-NEXT:    v_mov_b32_e32 v7, s30
 ; VI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:220 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v8, off, s[0:3], s32 offset:224 ; 4-byte Folded Spill
 ; VI-NEXT:    v_mov_b32_e32 v1, s13
-; VI-NEXT:    v_mov_b32_e32 v7, s36
+; VI-NEXT:    v_mov_b32_e32 v7, s34
 ; VI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:392 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:396 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:244 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v8, off, s[0:3], s32 offset:248 ; 4-byte Folded Spill
 ; VI-NEXT:    v_mov_b32_e32 v1, s46
-; VI-NEXT:    v_mov_b32_e32 v7, s38
+; VI-NEXT:    v_mov_b32_e32 v7, s36
 ; VI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:280 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:284 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:296 ; 4-byte Folded Spill
@@ -160406,7 +161336,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v3, s60
 ; VI-NEXT:    v_mov_b32_e32 v45, s78
 ; VI-NEXT:    v_mov_b32_e32 v43, s88
-; VI-NEXT:    v_mov_b32_e32 v7, s48
+; VI-NEXT:    v_mov_b32_e32 v7, s38
 ; VI-NEXT:    v_mov_b32_e32 v55, s47
 ; VI-NEXT:    v_readlane_b32 s47, v62, 57
 ; VI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:308 ; 4-byte Folded Spill
@@ -160453,7 +161383,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v43, s67
 ; VI-NEXT:    v_mov_b32_e32 v7, v20
 ; VI-NEXT:    v_mov_b32_e32 v20, v10
-; VI-NEXT:  .LBB91_5: ; %end
+; VI-NEXT:  .LBB91_6: ; %end
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; VI-NEXT:    v_perm_b32 v6, v33, v6, s4
 ; VI-NEXT:    v_perm_b32 v26, v26, v58, s4
@@ -160906,7 +161836,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v1
 ; GFX9-NEXT:    ; implicit-def: $vgpr62 : SGPR spill to VGPR lane
-; GFX9-NEXT:    s_cbranch_scc0 .LBB91_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB91_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s46, s5, 24
 ; GFX9-NEXT:    v_writelane_b32 v62, s46, 17
@@ -161051,11 +161981,165 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX9-NEXT:    s_lshr_b64 s[90:91], s[10:11], 24
 ; GFX9-NEXT:    s_lshr_b64 s[92:93], s[14:15], 24
 ; GFX9-NEXT:    s_lshr_b64 s[94:95], s[12:13], 24
-; GFX9-NEXT:    s_lshr_b64 s[30:31], s[40:41], 24
-; GFX9-NEXT:    s_lshr_b64 s[34:35], s[42:43], 24
-; GFX9-NEXT:    s_lshr_b64 s[36:37], s[44:45], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB91_4
-; GFX9-NEXT:  .LBB91_2: ; %cmp.true
+; GFX9-NEXT:    s_lshr_b64 vcc, s[40:41], 24
+; GFX9-NEXT:    s_lshr_b64 s[30:31], s[42:43], 24
+; GFX9-NEXT:    s_lshr_b64 s[34:35], s[44:45], 24
+; GFX9-NEXT:    s_mov_b64 s[36:37], 0
+; GFX9-NEXT:    s_branch .LBB91_3
+; GFX9-NEXT:  .LBB91_2:
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    s_mov_b64 s[36:37], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr51
+; GFX9-NEXT:    ; implicit-def: $sgpr50
+; GFX9-NEXT:    ; implicit-def: $sgpr53
+; GFX9-NEXT:    ; implicit-def: $sgpr52
+; GFX9-NEXT:    ; implicit-def: $sgpr83
+; GFX9-NEXT:    ; implicit-def: $sgpr55
+; GFX9-NEXT:    ; implicit-def: $sgpr54
+; GFX9-NEXT:    ; implicit-def: $sgpr38
+; GFX9-NEXT:    ; implicit-def: $sgpr69
+; GFX9-NEXT:    ; implicit-def: $sgpr64
+; GFX9-NEXT:    ; implicit-def: $sgpr87
+; GFX9-NEXT:    ; implicit-def: $sgpr70
+; GFX9-NEXT:    ; implicit-def: $sgpr84
+; GFX9-NEXT:    ; implicit-def: $sgpr65
+; GFX9-NEXT:    ; implicit-def: $sgpr82
+; GFX9-NEXT:    ; implicit-def: $sgpr98
+; GFX9-NEXT:    ; implicit-def: $sgpr71
+; GFX9-NEXT:    ; implicit-def: $sgpr39
+; GFX9-NEXT:    ; implicit-def: $sgpr66
+; GFX9-NEXT:    ; implicit-def: $sgpr85
+; GFX9-NEXT:    ; implicit-def: $sgpr48
+; GFX9-NEXT:    ; implicit-def: $sgpr80
+; GFX9-NEXT:    ; implicit-def: $sgpr96
+; GFX9-NEXT:    ; implicit-def: $sgpr67
+; GFX9-NEXT:    ; implicit-def: $sgpr86
+; GFX9-NEXT:    ; implicit-def: $sgpr49
+; GFX9-NEXT:    ; implicit-def: $sgpr81
+; GFX9-NEXT:    ; implicit-def: $sgpr99
+; GFX9-NEXT:    ; implicit-def: $sgpr68
+; GFX9-NEXT:    ; implicit-def: $sgpr97
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr34
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:  .LBB91_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GFX9-NEXT:    s_cselect_b32 s47, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s47, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB91_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s46, s45, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v13, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s46, v13
@@ -161839,156 +162923,8 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 8, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v1
 ; GFX9-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:336 ; 4-byte Folded Spill
-; GFX9-NEXT:    s_branch .LBB91_5
-; GFX9-NEXT:  .LBB91_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr51
-; GFX9-NEXT:    ; implicit-def: $sgpr50
-; GFX9-NEXT:    ; implicit-def: $sgpr53
-; GFX9-NEXT:    ; implicit-def: $sgpr52
-; GFX9-NEXT:    ; implicit-def: $sgpr83
-; GFX9-NEXT:    ; implicit-def: $sgpr55
-; GFX9-NEXT:    ; implicit-def: $sgpr54
-; GFX9-NEXT:    ; implicit-def: $sgpr38
-; GFX9-NEXT:    ; implicit-def: $sgpr69
-; GFX9-NEXT:    ; implicit-def: $sgpr64
-; GFX9-NEXT:    ; implicit-def: $sgpr87
-; GFX9-NEXT:    ; implicit-def: $sgpr70
-; GFX9-NEXT:    ; implicit-def: $sgpr84
-; GFX9-NEXT:    ; implicit-def: $sgpr65
-; GFX9-NEXT:    ; implicit-def: $sgpr82
-; GFX9-NEXT:    ; implicit-def: $sgpr98
-; GFX9-NEXT:    ; implicit-def: $sgpr71
-; GFX9-NEXT:    ; implicit-def: $sgpr39
-; GFX9-NEXT:    ; implicit-def: $sgpr66
-; GFX9-NEXT:    ; implicit-def: $sgpr85
-; GFX9-NEXT:    ; implicit-def: $sgpr48
-; GFX9-NEXT:    ; implicit-def: $sgpr80
-; GFX9-NEXT:    ; implicit-def: $sgpr96
-; GFX9-NEXT:    ; implicit-def: $sgpr67
-; GFX9-NEXT:    ; implicit-def: $sgpr86
-; GFX9-NEXT:    ; implicit-def: $sgpr49
-; GFX9-NEXT:    ; implicit-def: $sgpr81
-; GFX9-NEXT:    ; implicit-def: $sgpr99
-; GFX9-NEXT:    ; implicit-def: $sgpr68
-; GFX9-NEXT:    ; implicit-def: $sgpr97
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr36
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    s_branch .LBB91_2
-; GFX9-NEXT:  .LBB91_4:
+; GFX9-NEXT:    s_branch .LBB91_6
+; GFX9-NEXT:  .LBB91_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s28
 ; GFX9-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:276 ; 4-byte Folded Spill
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s29
@@ -162242,10 +163178,10 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v48, s72
 ; GFX9-NEXT:    v_mov_b32_e32 v49, s74
 ; GFX9-NEXT:    v_mov_b32_e32 v50, s76
-; GFX9-NEXT:    v_mov_b32_e32 v20, s30
-; GFX9-NEXT:    v_mov_b32_e32 v31, s34
-; GFX9-NEXT:    v_mov_b32_e32 v34, s36
-; GFX9-NEXT:  .LBB91_5: ; %end
+; GFX9-NEXT:    v_mov_b32_e32 v20, vcc_lo
+; GFX9-NEXT:    v_mov_b32_e32 v31, s30
+; GFX9-NEXT:    v_mov_b32_e32 v34, s34
+; GFX9-NEXT:  .LBB91_6: ; %end
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; GFX9-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:224 ; 4-byte Folded Reload
 ; GFX9-NEXT:    v_perm_b32 v14, v14, v33, s4
@@ -162709,78 +163645,78 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s41, v2
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s42, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 vcc_lo, 0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s104, 0
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr76 : SGPR spill to VGPR lane
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr77 : SGPR spill to VGPR lane
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB91_3
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB91_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s27, 24
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s68, s5, 24
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s67, s5, 24
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v76, s42, 17
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s27, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s100, s5, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s70, s5, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s104, s4, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s99, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s69, s5, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s103, s4, 16
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v76, s42, 1
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s27, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s80, s4, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s65, s7, 24
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s99, s7, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s71, s4, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s64, s7, 24
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s98, s7, 16
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v76, s42, 18
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s26, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s67, s7, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s103, s6, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s71, s6, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s66, s7, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s102, s6, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s70, s6, 8
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v76, s42, 0
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s26, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s54, s9, 24
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s98, s9, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s64, s9, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s53, s9, 24
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s97, s9, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s55, s9, 8
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v76, s42, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s25, 24
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s102, s8, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s69, s8, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s51, s11, 24
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s101, s8, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s68, s8, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s50, s11, 24
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v76, s42, 20
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s25, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s97, s11, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s53, s11, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s101, s10, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s96, s11, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s52, s11, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s100, s10, 16
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v76, s42, 3
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s25, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s66, s10, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s48, s13, 24
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s87, s13, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s65, s10, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s39, s13, 24
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s86, s13, 16
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v76, s42, 21
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s24, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s50, s13, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s96, s12, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s55, s12, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s49, s13, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s87, s12, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s54, s12, 8
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v76, s42, 2
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s24, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s37, s15, 24
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s85, s15, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s39, s15, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s36, s15, 24
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s84, s15, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s38, s15, 8
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v76, s42, 19
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s23, 24
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s86, s14, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s52, s14, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s35, s41, 24
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s85, s14, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s51, s14, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s34, s41, 24
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v76, s42, 23
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s23, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s83, s41, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s36, s41, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s84, s40, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s82, s41, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s35, s41, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s83, s40, 16
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v76, s42, 5
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s23, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s49, s40, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 vcc_hi, s29, 24
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s81, s29, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s48, s40, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s30, s29, 24
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s80, s29, 16
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v76, s42, 24
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s22, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s34, s29, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s82, s28, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s38, s28, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s31, s29, 8
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s81, s28, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s37, s28, 8
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v76, s42, 4
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s22, 8
 ; GFX11-TRUE16-NEXT:    s_lshr_b64 s[72:73], s[26:27], 24
@@ -162805,7 +163741,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s20, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b64 s[92:93], s[14:15], 24
 ; GFX11-TRUE16-NEXT:    s_lshr_b64 s[94:95], s[40:41], 24
-; GFX11-TRUE16-NEXT:    s_lshr_b64 s[30:31], s[28:29], 24
+; GFX11-TRUE16-NEXT:    s_lshr_b64 vcc, s[28:29], 24
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v76, s42, 6
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s20, 8
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
@@ -162861,9 +163797,152 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v77, s42, 5
 ; GFX11-TRUE16-NEXT:    s_lshr_b64 s[42:43], s[0:1], 24
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, vcc_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB91_4
-; GFX11-TRUE16-NEXT:  .LBB91_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB91_3
+; GFX11-TRUE16-NEXT:  .LBB91_2:
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    s_mov_b32 s104, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr37
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr81
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr31
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr80
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr30
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr48
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr83
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr35
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr82
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr34
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr51
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr85
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr38
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr84
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr36
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr54
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr87
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr49
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr86
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr39
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr65
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr100
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr52
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr96
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr50
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr68
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr101
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr55
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr97
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr53
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr70
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr102
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr66
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr98
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr64
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr71
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr103
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr69
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr99
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr67
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vcc_lo
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr94
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr92
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-TRUE16-NEXT:  .LBB91_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s43, s104, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s43, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s43, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB91_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s42, s29, 16
 ; GFX11-TRUE16-NEXT:    s_and_b32 s29, s29, 0xffff0000
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s42
@@ -163560,146 +164639,8 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v35, 24, v6
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v6, 8, v6
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, 8, v5
-; GFX11-TRUE16-NEXT:    s_branch .LBB91_5
-; GFX11-TRUE16-NEXT:  .LBB91_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr38
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr82
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr34
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr81
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vcc_hi
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr49
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr84
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr36
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr83
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr35
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr52
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr86
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr39
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr85
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr37
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr55
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr96
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr50
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr87
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr48
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr66
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr101
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr53
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr97
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr51
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr69
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr102
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr64
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr98
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr54
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr71
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr103
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr67
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr99
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr65
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr80
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr104
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr70
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr100
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr68
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr30
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr94
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr92
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-TRUE16-NEXT:    s_branch .LBB91_2
-; GFX11-TRUE16-NEXT:  .LBB91_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB91_6
+; GFX11-TRUE16-NEXT:  .LBB91_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v118, s2 :: v_dual_mov_b32 v115, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 0
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v86, s8 :: v_dual_mov_b32 v165, s26
@@ -163727,57 +164668,57 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v163, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 5
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v113, s104 :: v_dual_mov_b32 v112, s100
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v103, s103 :: v_dual_mov_b32 v100, s102
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v113, s103 :: v_dual_mov_b32 v112, s99
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v103, s102 :: v_dual_mov_b32 v100, s101
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v161, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 6
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v101, s99 :: v_dual_mov_b32 v96, s101
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v97, s98 :: v_dual_mov_b32 v84, s96
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v101, s98 :: v_dual_mov_b32 v96, s100
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v97, s97 :: v_dual_mov_b32 v84, s87
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v160, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 7
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v85, s97 :: v_dual_mov_b32 v70, s13
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v83, s12 :: v_dual_mov_b32 v80, s87
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v85, s96 :: v_dual_mov_b32 v70, s13
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v83, s12 :: v_dual_mov_b32 v80, s86
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v149, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 8
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v68, s14 :: v_dual_mov_b32 v69, s86
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v68, s14 :: v_dual_mov_b32 v69, s85
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v65, s15 :: v_dual_mov_b32 v64, s40
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v148, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 9
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v67, s85 :: v_dual_mov_b32 v66, s84
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v54, s41 :: v_dual_mov_b32 v55, s83
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v67, s84 :: v_dual_mov_b32 v66, s83
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v54, s41 :: v_dual_mov_b32 v55, s82
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v145, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 10
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v52, s28 :: v_dual_mov_b32 v53, s82
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v50, s29 :: v_dual_mov_b32 v51, s81
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v52, s28 :: v_dual_mov_b32 v53, s81
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v50, s29 :: v_dual_mov_b32 v51, s80
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v144, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 11
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v20, s80 :: v_dual_mov_b32 v19, s70
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v24, s68 :: v_dual_mov_b32 v13, s71
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v20, s71 :: v_dual_mov_b32 v19, s69
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v24, s67 :: v_dual_mov_b32 v13, s70
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v133, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 12
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s65 :: v_dual_mov_b32 v14, s67
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v11, s69 :: v_dual_mov_b32 v12, s64
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s64 :: v_dual_mov_b32 v14, s66
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v11, s68 :: v_dual_mov_b32 v12, s55
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v132, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 13
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s54 :: v_dual_mov_b32 v28, s51
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v9, s66 :: v_dual_mov_b32 v10, s53
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s53 :: v_dual_mov_b32 v28, s50
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v9, s65 :: v_dual_mov_b32 v10, s52
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v129, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 14
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v7, s55 :: v_dual_mov_b32 v8, s50
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s48 :: v_dual_mov_b32 v6, s39
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v7, s54 :: v_dual_mov_b32 v8, s49
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s39 :: v_dual_mov_b32 v6, s38
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v128, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 15
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v5, s52 :: v_dual_mov_b32 v48, s35
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v35, s37 :: v_dual_mov_b32 v36, s36
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v5, s51 :: v_dual_mov_b32 v48, s34
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v35, s36 :: v_dual_mov_b32 v36, s35
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v117, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 16
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v49, s49 :: v_dual_mov_b32 v44, s38
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v45, vcc_hi :: v_dual_mov_b32 v4, s34
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v49, s48 :: v_dual_mov_b32 v44, s37
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v45, s30 :: v_dual_mov_b32 v4, s31
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v178, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 17
@@ -163796,7 +164737,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 20
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v22, s90 :: v_dual_mov_b32 v23, s92
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, s94
-; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, s30
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, vcc_lo
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v181, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v76, 21
@@ -163846,7 +164787,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v63, s0
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s0, v77, 7
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v72, s0
-; GFX11-TRUE16-NEXT:  .LBB91_5: ; %end
+; GFX11-TRUE16-NEXT:  .LBB91_6: ; %end
 ; GFX11-TRUE16-NEXT:    v_perm_b32 v2, v128, v38, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    v_perm_b32 v38, v115, v73, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    v_perm_b32 v115, v117, v63, 0xc0c0004
@@ -164159,78 +165100,78 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s41, v2
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s42, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 vcc_lo, 0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s104, 0
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr76 : SGPR spill to VGPR lane
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr77 : SGPR spill to VGPR lane
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB91_3
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB91_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s27, 24
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s68, s5, 24
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s67, s5, 24
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v76, s42, 17
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s27, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s100, s5, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s70, s5, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s104, s4, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s99, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s69, s5, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s103, s4, 16
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v76, s42, 1
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s27, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s80, s4, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s65, s7, 24
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s99, s7, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s71, s4, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s64, s7, 24
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s98, s7, 16
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v76, s42, 18
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s26, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s67, s7, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s103, s6, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s71, s6, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s66, s7, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s102, s6, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s70, s6, 8
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v76, s42, 0
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s26, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s54, s9, 24
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s98, s9, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s64, s9, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s53, s9, 24
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s97, s9, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s55, s9, 8
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v76, s42, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s25, 24
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s102, s8, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s69, s8, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s51, s11, 24
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s101, s8, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s68, s8, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s50, s11, 24
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v76, s42, 20
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s25, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s97, s11, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s53, s11, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s101, s10, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s96, s11, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s52, s11, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s100, s10, 16
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v76, s42, 3
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s25, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s66, s10, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s48, s13, 24
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s87, s13, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s65, s10, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s39, s13, 24
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s86, s13, 16
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v76, s42, 21
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s24, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s50, s13, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s96, s12, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s55, s12, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s49, s13, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s87, s12, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s54, s12, 8
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v76, s42, 2
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s24, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s37, s15, 24
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s85, s15, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s39, s15, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s36, s15, 24
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s84, s15, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s38, s15, 8
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v76, s42, 19
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s23, 24
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s86, s14, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s52, s14, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s35, s41, 24
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s85, s14, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s51, s14, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s34, s41, 24
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v76, s42, 23
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s23, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s83, s41, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s36, s41, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s84, s40, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s82, s41, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s35, s41, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s83, s40, 16
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v76, s42, 5
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s23, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s49, s40, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 vcc_hi, s29, 24
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s81, s29, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s48, s40, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s30, s29, 24
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s80, s29, 16
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v76, s42, 24
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s22, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s34, s29, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s82, s28, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s38, s28, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s31, s29, 8
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s81, s28, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s37, s28, 8
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v76, s42, 4
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s22, 8
 ; GFX11-FAKE16-NEXT:    s_lshr_b64 s[72:73], s[26:27], 24
@@ -164255,7 +165196,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s20, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b64 s[92:93], s[14:15], 24
 ; GFX11-FAKE16-NEXT:    s_lshr_b64 s[94:95], s[40:41], 24
-; GFX11-FAKE16-NEXT:    s_lshr_b64 s[30:31], s[28:29], 24
+; GFX11-FAKE16-NEXT:    s_lshr_b64 vcc, s[28:29], 24
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v76, s42, 6
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s20, 8
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
@@ -164311,9 +165252,152 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v77, s42, 5
 ; GFX11-FAKE16-NEXT:    s_lshr_b64 s[42:43], s[0:1], 24
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, vcc_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB91_4
-; GFX11-FAKE16-NEXT:  .LBB91_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB91_3
+; GFX11-FAKE16-NEXT:  .LBB91_2:
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    s_mov_b32 s104, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr37
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr81
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr31
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr80
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr30
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr48
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr83
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr35
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr82
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr34
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr51
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr85
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr38
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr84
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr36
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr54
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr87
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr49
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr86
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr39
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr65
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr100
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr52
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr96
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr50
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr68
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr101
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr55
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr97
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr53
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr70
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr102
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr66
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr98
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr64
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr71
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr103
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr69
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr99
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr67
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vcc_lo
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr94
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr92
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
+; GFX11-FAKE16-NEXT:  .LBB91_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s43, s104, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s43, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s43, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB91_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s42, s29, 16
 ; GFX11-FAKE16-NEXT:    s_and_b32 s29, s29, 0xffff0000
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s42
@@ -165030,146 +166114,8 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v37, 24, v6
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v6, 8, v6
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 8, v5
-; GFX11-FAKE16-NEXT:    s_branch .LBB91_5
-; GFX11-FAKE16-NEXT:  .LBB91_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr38
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr82
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr34
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr81
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vcc_hi
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr49
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr84
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr36
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr83
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr35
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr52
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr86
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr39
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr85
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr37
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr55
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr96
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr50
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr87
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr48
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr66
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr101
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr53
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr97
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr51
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr69
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr102
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr64
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr98
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr54
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr71
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr103
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr67
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr99
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr65
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr80
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr104
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr70
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr100
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr68
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr30
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr94
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr92
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; kill: killed $sgpr43
-; GFX11-FAKE16-NEXT:    s_branch .LBB91_2
-; GFX11-FAKE16-NEXT:  .LBB91_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB91_6
+; GFX11-FAKE16-NEXT:  .LBB91_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v112, s0 :: v_dual_mov_b32 v103, s1
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 0
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v160, s26 :: v_dual_mov_b32 v151, s27
@@ -165196,56 +166142,56 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v162, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 5
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v71, s10 :: v_dual_mov_b32 v68, s11
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v102, s104 :: v_dual_mov_b32 v101, s100
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v102, s103 :: v_dual_mov_b32 v101, s99
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v149, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 6
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v100, s103 :: v_dual_mov_b32 v97, s102
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v98, s99 :: v_dual_mov_b32 v85, s101
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v100, s102 :: v_dual_mov_b32 v97, s101
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v98, s98 :: v_dual_mov_b32 v85, s100
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v150, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 7
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v86, s98 :: v_dual_mov_b32 v81, s96
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v82, s97 :: v_dual_mov_b32 v67, s13
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v86, s97 :: v_dual_mov_b32 v81, s87
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v82, s96 :: v_dual_mov_b32 v67, s13
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v145, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 8
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v80, s12 :: v_dual_mov_b32 v69, s87
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v65, s14 :: v_dual_mov_b32 v66, s86
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v80, s12 :: v_dual_mov_b32 v69, s86
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v65, s14 :: v_dual_mov_b32 v66, s85
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v147, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 9
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v54, s15 :: v_dual_mov_b32 v53, s40
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v64, s85 :: v_dual_mov_b32 v55, s84
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v64, s84 :: v_dual_mov_b32 v55, s83
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v133, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 10
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v51, s41 :: v_dual_mov_b32 v52, s83
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v49, s28 :: v_dual_mov_b32 v50, s82
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v51, s41 :: v_dual_mov_b32 v52, s82
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v49, s28 :: v_dual_mov_b32 v50, s81
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v134, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 11
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v39, s29 :: v_dual_mov_b32 v48, s81
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v22, s80 :: v_dual_mov_b32 v23, s65
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v39, s29 :: v_dual_mov_b32 v48, s80
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v22, s71 :: v_dual_mov_b32 v23, s64
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v130, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 12
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v16, s71 :: v_dual_mov_b32 v17, s67
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v11, s69 :: v_dual_mov_b32 v24, s54
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v16, s70 :: v_dual_mov_b32 v17, s66
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v11, s68 :: v_dual_mov_b32 v24, s53
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v129, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 13
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v12, s64 :: v_dual_mov_b32 v9, s66
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v30, s51 :: v_dual_mov_b32 v7, s55
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v12, s55 :: v_dual_mov_b32 v9, s65
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v30, s50 :: v_dual_mov_b32 v7, s54
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v118, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 14
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v10, s53 :: v_dual_mov_b32 v31, s48
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v8, s50 :: v_dual_mov_b32 v5, s52
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v10, s52 :: v_dual_mov_b32 v31, s39
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v8, s49 :: v_dual_mov_b32 v5, s51
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v117, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 15
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v37, s37 :: v_dual_mov_b32 v6, s39
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v43, s49 :: v_dual_mov_b32 v38, s36
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v37, s36 :: v_dual_mov_b32 v6, s38
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v43, s48 :: v_dual_mov_b32 v38, s35
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v114, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 16
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v41, s35 :: v_dual_mov_b32 v44, s38
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v45, vcc_hi :: v_dual_mov_b32 v4, s34
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v41, s34 :: v_dual_mov_b32 v44, s37
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v45, s30 :: v_dual_mov_b32 v4, s31
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v176, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 17
@@ -165264,12 +166210,12 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 20
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v20, s90 :: v_dual_mov_b32 v21, s92
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, s94
-; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, s30
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, vcc_lo
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v179, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 21
-; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v29, s68
-; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v15, s70
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v29, s67
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v15, s69
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v177, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v76, 22
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
@@ -165316,7 +166262,7 @@ define inreg <128 x i8> @bitcast_v64bf16_to_v128i8_scalar(<64 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v63, s0
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s0, v77, 7
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v72, s0
-; GFX11-FAKE16-NEXT:  .LBB91_5: ; %end
+; GFX11-FAKE16-NEXT:  .LBB91_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v117, v35, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v35, v112, v73, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v112, v114, v63, 0xc0c0004
@@ -171934,361 +172880,363 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s4, v24
 ; SI-NEXT:    v_writelane_b32 v47, s4, 20
 ; SI-NEXT:    v_readfirstlane_b32 s4, v23
-; SI-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:332
 ; SI-NEXT:    v_writelane_b32 v47, s4, 21
 ; SI-NEXT:    v_readfirstlane_b32 s4, v22
 ; SI-NEXT:    v_writelane_b32 v47, s4, 22
 ; SI-NEXT:    v_readfirstlane_b32 s4, v21
-; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:328
+; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:332
 ; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 offset:324
+; SI-NEXT:    v_readfirstlane_b32 s92, v19
+; SI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:328
+; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:320
 ; SI-NEXT:    v_writelane_b32 v47, s4, 23
 ; SI-NEXT:    v_readfirstlane_b32 s4, v20
-; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:320
+; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:316
 ; SI-NEXT:    v_writelane_b32 v47, s4, 24
-; SI-NEXT:    v_readfirstlane_b32 s4, v19
-; SI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:316
-; SI-NEXT:    v_writelane_b32 v47, s4, 25
-; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v47, s4, 26
 ; SI-NEXT:    v_readfirstlane_b32 s4, v17
-; SI-NEXT:    v_writelane_b32 v47, s4, 27
+; SI-NEXT:    v_writelane_b32 v47, s4, 25
 ; SI-NEXT:    v_readfirstlane_b32 s4, v16
-; SI-NEXT:    v_writelane_b32 v47, s4, 28
+; SI-NEXT:    v_writelane_b32 v47, s4, 26
 ; SI-NEXT:    v_readfirstlane_b32 s4, v15
-; SI-NEXT:    v_writelane_b32 v47, s4, 29
+; SI-NEXT:    v_writelane_b32 v47, s4, 27
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
-; SI-NEXT:    v_writelane_b32 v47, s4, 30
+; SI-NEXT:    v_writelane_b32 v47, s4, 28
 ; SI-NEXT:    v_readfirstlane_b32 s4, v13
-; SI-NEXT:    v_writelane_b32 v47, s4, 31
-; SI-NEXT:    v_readfirstlane_b32 s4, v12
-; SI-NEXT:    v_writelane_b32 v47, s4, 32
-; SI-NEXT:    v_readfirstlane_b32 s4, v11
-; SI-NEXT:    v_writelane_b32 v47, s4, 33
-; SI-NEXT:    v_readfirstlane_b32 s4, v10
-; SI-NEXT:    v_writelane_b32 v47, s4, 34
+; SI-NEXT:    v_writelane_b32 v47, s4, 29
 ; SI-NEXT:    v_readfirstlane_b32 s4, v9
-; SI-NEXT:    v_writelane_b32 v47, s4, 35
+; SI-NEXT:    v_writelane_b32 v47, s4, 30
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
-; SI-NEXT:    v_writelane_b32 v47, s4, 36
+; SI-NEXT:    v_writelane_b32 v47, s4, 31
 ; SI-NEXT:    v_readfirstlane_b32 s4, v7
-; SI-NEXT:    v_writelane_b32 v47, s4, 37
+; SI-NEXT:    v_writelane_b32 v47, s4, 32
 ; SI-NEXT:    v_readfirstlane_b32 s4, v6
-; SI-NEXT:    v_writelane_b32 v47, s4, 38
-; SI-NEXT:    v_readfirstlane_b32 s4, v5
-; SI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:312
-; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:308
-; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:304
-; SI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:300
-; SI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:296
-; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:292
+; SI-NEXT:    v_readfirstlane_b32 s7, v18
+; SI-NEXT:    v_writelane_b32 v47, s4, 33
+; SI-NEXT:    v_readfirstlane_b32 s10, v0
+; SI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:244
+; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:240
+; SI-NEXT:    v_readfirstlane_b32 s6, v11
 ; SI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:288
 ; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:284
 ; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:280
+; SI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:264
+; SI-NEXT:    v_readfirstlane_b32 s11, v5
 ; SI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:276
-; SI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:264
-; SI-NEXT:    v_writelane_b32 v47, s4, 39
-; SI-NEXT:    v_readfirstlane_b32 s4, v4
-; SI-NEXT:    v_writelane_b32 v47, s4, 40
-; SI-NEXT:    v_readfirstlane_b32 s4, v3
-; SI-NEXT:    v_writelane_b32 v47, s4, 41
+; SI-NEXT:    v_readfirstlane_b32 s12, v4
 ; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:272
+; SI-NEXT:    v_readfirstlane_b32 s9, v3
 ; SI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:268
-; SI-NEXT:    v_readfirstlane_b32 s69, v2
+; SI-NEXT:    v_readfirstlane_b32 s14, v2
 ; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:260
+; SI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:312
+; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:308
+; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:304
+; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:292
+; SI-NEXT:    v_readfirstlane_b32 s13, v12
+; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:300
+; SI-NEXT:    v_readfirstlane_b32 s8, v10
+; SI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:296
 ; SI-NEXT:    ; implicit-def: $vgpr46 : SGPR spill to VGPR lane
 ; SI-NEXT:    s_waitcnt vmcnt(14)
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v23
+; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v21
 ; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
 ; SI-NEXT:    v_readfirstlane_b32 s4, v1
-; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:256
+; SI-NEXT:    v_writelane_b32 v47, s4, 34
+; SI-NEXT:    v_readfirstlane_b32 s4, v19
+; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:236
+; SI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:232
+; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:256
 ; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:252
-; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:248
-; SI-NEXT:    v_writelane_b32 v47, s4, 42
-; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:244
-; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:240
-; SI-NEXT:    v_readfirstlane_b32 s83, v21
-; SI-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:236
-; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:232
-; SI-NEXT:    v_readfirstlane_b32 s86, v22
-; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:228
-; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 offset:224
-; SI-NEXT:    v_readfirstlane_b32 s99, v20
+; SI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:248
+; SI-NEXT:    v_writelane_b32 v47, s4, 35
+; SI-NEXT:    v_readfirstlane_b32 s4, v22
+; SI-NEXT:    v_writelane_b32 v47, s4, 36
+; SI-NEXT:    v_readfirstlane_b32 s4, v24
 ; SI-NEXT:    buffer_load_dword v25, off, s[0:3], s32 offset:220
-; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:216
-; SI-NEXT:    v_readfirstlane_b32 s17, v19
+; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:216
+; SI-NEXT:    v_readfirstlane_b32 s19, v20
 ; SI-NEXT:    buffer_load_dword v29, off, s[0:3], s32 offset:212
-; SI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:208
-; SI-NEXT:    v_writelane_b32 v47, s4, 43
+; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:208
+; SI-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:228
+; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 offset:224
+; SI-NEXT:    v_writelane_b32 v47, s4, 37
+; SI-NEXT:    v_readfirstlane_b32 s84, v18
+; SI-NEXT:    v_readfirstlane_b32 s95, v0
+; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:60
+; SI-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:56
 ; SI-NEXT:    s_waitcnt vmcnt(14)
-; SI-NEXT:    v_readfirstlane_b32 s66, v14
-; SI-NEXT:    v_readfirstlane_b32 s84, v13
-; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:196
-; SI-NEXT:    buffer_load_dword v27, off, s[0:3], s32 offset:192
-; SI-NEXT:    v_readfirstlane_b32 s8, v12
-; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:188
-; SI-NEXT:    buffer_load_dword v28, off, s[0:3], s32 offset:184
-; SI-NEXT:    v_readfirstlane_b32 s9, v11
-; SI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:180
-; SI-NEXT:    buffer_load_dword v30, off, s[0:3], s32 offset:176
-; SI-NEXT:    v_readfirstlane_b32 s16, v10
-; SI-NEXT:    v_readfirstlane_b32 s46, v6
-; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:140
-; SI-NEXT:    buffer_load_dword v35, off, s[0:3], s32 offset:136
-; SI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:172
-; SI-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:168
-; SI-NEXT:    v_readfirstlane_b32 s24, v8
+; SI-NEXT:    v_readfirstlane_b32 s68, v8
 ; SI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:156
 ; SI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:152
-; SI-NEXT:    v_readfirstlane_b32 s29, v7
-; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:148
-; SI-NEXT:    buffer_load_dword v34, off, s[0:3], s32 offset:144
-; SI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:204
-; SI-NEXT:    buffer_load_dword v26, off, s[0:3], s32 offset:200
-; SI-NEXT:    v_readfirstlane_b32 s10, v4
-; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:124
-; SI-NEXT:    buffer_load_dword v37, off, s[0:3], s32 offset:120
-; SI-NEXT:    v_readfirstlane_b32 s13, v3
-; SI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:116
-; SI-NEXT:    buffer_load_dword v38, off, s[0:3], s32 offset:112
-; SI-NEXT:    v_readfirstlane_b32 s19, v9
-; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:164
-; SI-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:160
-; SI-NEXT:    v_readfirstlane_b32 s47, v5
+; SI-NEXT:    v_readfirstlane_b32 s44, v6
+; SI-NEXT:    v_readfirstlane_b32 s26, v11
+; SI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:108
+; SI-NEXT:    buffer_load_dword v39, off, s[0:3], s32 offset:104
+; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:140
+; SI-NEXT:    buffer_load_dword v35, off, s[0:3], s32 offset:136
+; SI-NEXT:    v_readfirstlane_b32 s45, v5
 ; SI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:132
 ; SI-NEXT:    buffer_load_dword v36, off, s[0:3], s32 offset:128
-; SI-NEXT:    v_readfirstlane_b32 s27, v15
-; SI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:108
-; SI-NEXT:    buffer_load_dword v39, off, s[0:3], s32 offset:104
-; SI-NEXT:    s_waitcnt vmcnt(14)
+; SI-NEXT:    v_readfirstlane_b32 s74, v4
+; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:124
+; SI-NEXT:    buffer_load_dword v37, off, s[0:3], s32 offset:120
+; SI-NEXT:    v_readfirstlane_b32 s93, v3
 ; SI-NEXT:    v_readfirstlane_b32 s28, v2
 ; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:100
 ; SI-NEXT:    buffer_load_dword v48, off, s[0:3], s32 offset:96
-; SI-NEXT:    v_readfirstlane_b32 s54, v16
-; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:92
-; SI-NEXT:    buffer_load_dword v49, off, s[0:3], s32 offset:88
-; SI-NEXT:    v_readfirstlane_b32 s59, v17
-; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:76
-; SI-NEXT:    buffer_load_dword v51, off, s[0:3], s32 offset:72
-; SI-NEXT:    v_readfirstlane_b32 s61, v18
+; SI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:116
+; SI-NEXT:    buffer_load_dword v38, off, s[0:3], s32 offset:112
+; SI-NEXT:    v_readfirstlane_b32 s29, v7
+; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:148
+; SI-NEXT:    buffer_load_dword v34, off, s[0:3], s32 offset:144
+; SI-NEXT:    v_readfirstlane_b32 s64, v15
+; SI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:204
+; SI-NEXT:    buffer_load_dword v26, off, s[0:3], s32 offset:200
+; SI-NEXT:    v_readfirstlane_b32 s22, v16
+; SI-NEXT:    s_waitcnt vmcnt(14)
+; SI-NEXT:    v_readfirstlane_b32 s4, v10
+; SI-NEXT:    v_writelane_b32 v47, s4, 38
+; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:196
+; SI-NEXT:    buffer_load_dword v27, off, s[0:3], s32 offset:192
+; SI-NEXT:    v_readfirstlane_b32 s24, v9
+; SI-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:164
+; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:160
+; SI-NEXT:    v_readfirstlane_b32 s75, v13
+; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:188
+; SI-NEXT:    buffer_load_dword v28, off, s[0:3], s32 offset:184
+; SI-NEXT:    v_readfirstlane_b32 s99, v12
+; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:180
+; SI-NEXT:    buffer_load_dword v30, off, s[0:3], s32 offset:176
+; SI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:172
+; SI-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:168
 ; SI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:68
 ; SI-NEXT:    buffer_load_dword v52, off, s[0:3], s32 offset:64
-; SI-NEXT:    v_readfirstlane_b32 s44, v1
-; SI-NEXT:    v_readfirstlane_b32 s52, v21
-; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:44
+; SI-NEXT:    v_readfirstlane_b32 s4, v17
+; SI-NEXT:    v_readfirstlane_b32 s66, v21
+; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:52
+; SI-NEXT:    buffer_load_dword v54, off, s[0:3], s32 offset:48
+; SI-NEXT:    v_readfirstlane_b32 s81, v19
+; SI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:44
 ; SI-NEXT:    buffer_load_dword v55, off, s[0:3], s32 offset:40
-; SI-NEXT:    v_readfirstlane_b32 s53, v24
-; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:36
-; SI-NEXT:    s_waitcnt expcnt(4)
-; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:32
-; SI-NEXT:    v_readfirstlane_b32 s45, v22
-; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 offset:28
-; SI-NEXT:    s_waitcnt expcnt(3)
-; SI-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:24
-; SI-NEXT:    v_readfirstlane_b32 s60, v20
-; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:12
+; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:92
+; SI-NEXT:    buffer_load_dword v49, off, s[0:3], s32 offset:88
+; SI-NEXT:    v_readfirstlane_b32 s31, v1
+; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:84
+; SI-NEXT:    buffer_load_dword v50, off, s[0:3], s32 offset:80
+; SI-NEXT:    v_readfirstlane_b32 s57, v14
+; SI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:76
+; SI-NEXT:    buffer_load_dword v51, off, s[0:3], s32 offset:72
+; SI-NEXT:    v_readfirstlane_b32 s83, v24
+; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:12
 ; SI-NEXT:    s_waitcnt expcnt(1)
 ; SI-NEXT:    buffer_load_dword v43, off, s[0:3], s32 offset:8
-; SI-NEXT:    v_readfirstlane_b32 s62, v29
+; SI-NEXT:    v_readfirstlane_b32 s86, v29
 ; SI-NEXT:    buffer_load_dword v29, off, s[0:3], s32 offset:4
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    buffer_load_dword v44, off, s[0:3], s32
-; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:84
-; SI-NEXT:    buffer_load_dword v50, off, s[0:3], s32 offset:80
-; SI-NEXT:    v_readfirstlane_b32 s14, v0
-; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:60
-; SI-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:56
-; SI-NEXT:    v_readfirstlane_b32 s15, v23
-; SI-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:52
-; SI-NEXT:    buffer_load_dword v54, off, s[0:3], s32 offset:48
-; SI-NEXT:    v_readfirstlane_b32 s56, v25
+; SI-NEXT:    v_readfirstlane_b32 s80, v23
+; SI-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:36
+; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:32
+; SI-NEXT:    v_readfirstlane_b32 s65, v22
+; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 offset:28
+; SI-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:24
+; SI-NEXT:    v_readfirstlane_b32 s46, v25
 ; SI-NEXT:    buffer_load_dword v25, off, s[0:3], s32 offset:20
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:16
-; SI-NEXT:    v_writelane_b32 v46, s54, 0
-; SI-NEXT:    v_writelane_b32 v46, s53, 1
-; SI-NEXT:    v_readfirstlane_b32 s40, v19
-; SI-NEXT:    v_readfirstlane_b32 s50, v13
-; SI-NEXT:    v_readfirstlane_b32 s64, v27
-; SI-NEXT:    v_readfirstlane_b32 s85, v12
-; SI-NEXT:    v_readfirstlane_b32 s58, v28
-; SI-NEXT:    v_readfirstlane_b32 s57, v11
-; SI-NEXT:    v_readfirstlane_b32 s11, v30
-; SI-NEXT:    v_readfirstlane_b32 s7, v6
-; SI-NEXT:    v_writelane_b32 v46, s7, 2
-; SI-NEXT:    v_writelane_b32 v46, s64, 3
-; SI-NEXT:    v_writelane_b32 v46, s44, 4
-; SI-NEXT:    v_writelane_b32 v46, s85, 5
-; SI-NEXT:    v_writelane_b32 v46, s8, 6
-; SI-NEXT:    v_writelane_b32 v46, s45, 7
-; SI-NEXT:    v_writelane_b32 v46, s46, 8
-; SI-NEXT:    v_writelane_b32 v46, s47, 9
-; SI-NEXT:    v_writelane_b32 v46, s56, 10
-; SI-NEXT:    v_writelane_b32 v46, s9, 11
-; SI-NEXT:    v_writelane_b32 v46, s57, 12
-; SI-NEXT:    v_writelane_b32 v46, s58, 13
-; SI-NEXT:    v_writelane_b32 v46, s10, 14
+; SI-NEXT:    v_writelane_b32 v47, s4, 39
+; SI-NEXT:    v_readfirstlane_b32 s67, v20
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v0
+; SI-NEXT:    v_writelane_b32 v46, vcc_hi, 0
+; SI-NEXT:    v_readfirstlane_b32 s34, v53
+; SI-NEXT:    v_readfirstlane_b32 s55, v8
+; SI-NEXT:    v_readfirstlane_b32 s90, v33
+; SI-NEXT:    v_readfirstlane_b32 s27, v11
+; SI-NEXT:    v_readfirstlane_b32 s36, v39
 ; SI-NEXT:    s_waitcnt vmcnt(14)
-; SI-NEXT:    v_readfirstlane_b32 s92, v3
-; SI-NEXT:    v_writelane_b32 v46, s11, 15
-; SI-NEXT:    v_readfirstlane_b32 s12, v10
-; SI-NEXT:    v_readfirstlane_b32 s30, v37
-; SI-NEXT:    v_writelane_b32 v46, s59, 16
-; SI-NEXT:    v_readfirstlane_b32 s36, v7
-; SI-NEXT:    v_writelane_b32 v46, s12, 17
-; SI-NEXT:    v_readfirstlane_b32 s48, v33
-; SI-NEXT:    v_writelane_b32 v46, s60, 18
-; SI-NEXT:    v_writelane_b32 v46, s61, 19
-; SI-NEXT:    v_writelane_b32 v46, s13, 20
-; SI-NEXT:    v_writelane_b32 v46, s62, 21
-; SI-NEXT:    v_readfirstlane_b32 s6, v34
-; SI-NEXT:    v_writelane_b32 v46, s14, 22
-; SI-NEXT:    v_writelane_b32 v46, s15, 23
-; SI-NEXT:    v_readfirstlane_b32 s41, v14
-; SI-NEXT:    v_readfirstlane_b32 s51, v26
-; SI-NEXT:    v_readfirstlane_b32 s87, v31
-; SI-NEXT:    v_readfirstlane_b32 s23, v9
-; SI-NEXT:    v_readfirstlane_b32 s25, v32
-; SI-NEXT:    v_readfirstlane_b32 s26, v8
-; SI-NEXT:    v_readfirstlane_b32 s4, v51
-; SI-NEXT:    v_writelane_b32 v47, s4, 44
-; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v47, s4, 45
-; SI-NEXT:    v_readfirstlane_b32 s4, v52
-; SI-NEXT:    v_writelane_b32 v47, s4, 46
-; SI-NEXT:    v_readfirstlane_b32 s4, v55
-; SI-NEXT:    v_writelane_b32 v47, s4, 47
-; SI-NEXT:    v_readfirstlane_b32 s4, v24
-; SI-NEXT:    v_writelane_b32 v47, s4, 48
-; SI-NEXT:    v_readfirstlane_b32 s4, v40
-; SI-NEXT:    v_writelane_b32 v47, s4, 49
+; SI-NEXT:    v_readfirstlane_b32 s50, v35
+; SI-NEXT:    v_readfirstlane_b32 s49, v5
+; SI-NEXT:    v_readfirstlane_b32 s51, v36
+; SI-NEXT:    v_readfirstlane_b32 s52, v4
+; SI-NEXT:    v_readfirstlane_b32 s54, v37
+; SI-NEXT:    v_readfirstlane_b32 s73, v6
+; SI-NEXT:    v_readfirstlane_b32 s35, v2
+; SI-NEXT:    v_readfirstlane_b32 s37, v48
+; SI-NEXT:    v_readfirstlane_b32 s53, v3
+; SI-NEXT:    v_readfirstlane_b32 s69, v7
+; SI-NEXT:    v_readfirstlane_b32 s72, v34
+; SI-NEXT:    v_readfirstlane_b32 s21, v15
+; SI-NEXT:    v_readfirstlane_b32 s87, v26
+; SI-NEXT:    v_readfirstlane_b32 s70, v38
+; SI-NEXT:    v_readfirstlane_b32 s71, v16
+; SI-NEXT:    v_readfirstlane_b32 s82, v27
+; SI-NEXT:    v_readfirstlane_b32 s4, v32
+; SI-NEXT:    v_writelane_b32 v47, s4, 40
+; SI-NEXT:    v_writelane_b32 v47, s13, 41
+; SI-NEXT:    v_readfirstlane_b32 s79, v13
+; SI-NEXT:    v_writelane_b32 v47, s11, 42
+; SI-NEXT:    v_writelane_b32 v47, s12, 43
+; SI-NEXT:    v_writelane_b32 v47, s6, 44
+; SI-NEXT:    v_writelane_b32 v47, s7, 45
+; SI-NEXT:    v_writelane_b32 v47, s8, 46
+; SI-NEXT:    v_writelane_b32 v47, s9, 47
+; SI-NEXT:    v_readfirstlane_b32 s47, v12
+; SI-NEXT:    v_writelane_b32 v47, s10, 48
+; SI-NEXT:    v_readfirstlane_b32 s56, v28
+; SI-NEXT:    v_writelane_b32 v47, s14, 49
+; SI-NEXT:    v_readfirstlane_b32 s89, v30
+; SI-NEXT:    v_readfirstlane_b32 s91, v10
+; SI-NEXT:    v_readfirstlane_b32 s77, v18
+; SI-NEXT:    v_readfirstlane_b32 s25, v31
+; SI-NEXT:    v_readfirstlane_b32 s98, v9
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v52
+; SI-NEXT:    v_readfirstlane_b32 s30, v21
+; SI-NEXT:    v_writelane_b32 v46, s30, 1
+; SI-NEXT:    v_writelane_b32 v46, s34, 2
+; SI-NEXT:    v_writelane_b32 v46, s35, 3
+; SI-NEXT:    v_readfirstlane_b32 s60, v54
+; SI-NEXT:    v_writelane_b32 v46, s36, 4
+; SI-NEXT:    v_readfirstlane_b32 s61, v19
+; SI-NEXT:    v_writelane_b32 v46, s60, 5
+; SI-NEXT:    v_writelane_b32 v46, s61, 6
+; SI-NEXT:    v_readfirstlane_b32 s38, v17
+; SI-NEXT:    v_writelane_b32 v46, s37, 7
+; SI-NEXT:    s_waitcnt vmcnt(13)
+; SI-NEXT:    v_readfirstlane_b32 s39, v1
+; SI-NEXT:    v_writelane_b32 v46, s38, 8
+; SI-NEXT:    v_readfirstlane_b32 s48, v49
+; SI-NEXT:    v_writelane_b32 v46, s39, 9
 ; SI-NEXT:    s_waitcnt vmcnt(12)
-; SI-NEXT:    v_readfirstlane_b32 s4, v41
-; SI-NEXT:    v_writelane_b32 v47, s4, 50
-; SI-NEXT:    s_waitcnt vmcnt(10)
-; SI-NEXT:    v_readfirstlane_b32 s4, v43
-; SI-NEXT:    v_writelane_b32 v47, s4, 51
-; SI-NEXT:    s_waitcnt vmcnt(9)
-; SI-NEXT:    v_readfirstlane_b32 s4, v29
-; SI-NEXT:    v_writelane_b32 v47, s4, 52
-; SI-NEXT:    s_waitcnt vmcnt(8)
-; SI-NEXT:    v_readfirstlane_b32 s4, v44
-; SI-NEXT:    v_writelane_b32 v47, s4, 53
-; SI-NEXT:    v_writelane_b32 v47, s92, 54
-; SI-NEXT:    v_writelane_b32 v47, s30, 55
-; SI-NEXT:    v_writelane_b32 v47, s36, 56
-; SI-NEXT:    v_writelane_b32 v47, s48, 57
-; SI-NEXT:    v_writelane_b32 v47, s66, 58
-; SI-NEXT:    v_writelane_b32 v47, s52, 59
-; SI-NEXT:    v_writelane_b32 v47, s84, 60
-; SI-NEXT:    v_writelane_b32 v47, s6, 61
-; SI-NEXT:    v_readfirstlane_b32 s67, v35
-; SI-NEXT:    v_readfirstlane_b32 s94, v5
-; SI-NEXT:    v_readfirstlane_b32 s65, v36
-; SI-NEXT:    v_readfirstlane_b32 s22, v4
-; SI-NEXT:    v_readfirstlane_b32 s18, v38
-; SI-NEXT:    v_readfirstlane_b32 s20, v15
-; SI-NEXT:    v_readfirstlane_b32 s35, v39
-; SI-NEXT:    v_readfirstlane_b32 s31, v2
-; SI-NEXT:    v_readfirstlane_b32 s78, v48
-; SI-NEXT:    v_readfirstlane_b32 s98, v16
-; SI-NEXT:    v_readfirstlane_b32 s97, v49
+; SI-NEXT:    v_readfirstlane_b32 s62, v50
+; SI-NEXT:    v_writelane_b32 v46, s48, 10
+; SI-NEXT:    v_writelane_b32 v46, s62, 11
+; SI-NEXT:    v_writelane_b32 v46, s49, 12
+; SI-NEXT:    s_waitcnt vmcnt(11)
+; SI-NEXT:    v_readfirstlane_b32 s63, v14
+; SI-NEXT:    v_writelane_b32 v46, s50, 13
+; SI-NEXT:    v_writelane_b32 v46, s63, 14
+; SI-NEXT:    v_writelane_b32 v46, s51, 15
+; SI-NEXT:    v_writelane_b32 v46, s52, 16
+; SI-NEXT:    v_writelane_b32 v46, s53, 17
+; SI-NEXT:    v_writelane_b32 v46, s54, 18
+; SI-NEXT:    v_writelane_b32 v46, s55, 19
+; SI-NEXT:    v_writelane_b32 v46, s64, 20
+; SI-NEXT:    v_writelane_b32 v46, s81, 21
+; SI-NEXT:    v_writelane_b32 v46, s72, 22
+; SI-NEXT:    v_writelane_b32 v46, s71, 23
+; SI-NEXT:    v_writelane_b32 v46, s87, 24
+; SI-NEXT:    v_writelane_b32 v46, s80, 25
+; SI-NEXT:    v_writelane_b32 v46, s73, 26
+; SI-NEXT:    v_writelane_b32 v46, s82, 27
+; SI-NEXT:    v_writelane_b32 v46, s79, 28
+; SI-NEXT:    v_writelane_b32 v46, s75, 29
+; SI-NEXT:    v_writelane_b32 v46, s65, 30
+; SI-NEXT:    v_writelane_b32 v46, s44, 31
+; SI-NEXT:    v_writelane_b32 v46, s45, 32
+; SI-NEXT:    v_writelane_b32 v46, s46, 33
 ; SI-NEXT:    s_waitcnt vmcnt(7)
-; SI-NEXT:    v_readfirstlane_b32 s55, v1
+; SI-NEXT:    v_readfirstlane_b32 s16, v29
+; SI-NEXT:    v_writelane_b32 v46, s47, 34
+; SI-NEXT:    v_readfirstlane_b32 s17, v43
+; SI-NEXT:    v_writelane_b32 v47, s16, 50
+; SI-NEXT:    v_writelane_b32 v46, s56, 35
 ; SI-NEXT:    s_waitcnt vmcnt(6)
-; SI-NEXT:    v_readfirstlane_b32 s81, v50
-; SI-NEXT:    v_readfirstlane_b32 s71, v17
+; SI-NEXT:    v_readfirstlane_b32 s15, v44
+; SI-NEXT:    v_writelane_b32 v47, s17, 51
+; SI-NEXT:    v_writelane_b32 v46, s74, 36
 ; SI-NEXT:    s_waitcnt vmcnt(5)
-; SI-NEXT:    v_readfirstlane_b32 s96, v0
+; SI-NEXT:    v_readfirstlane_b32 s18, v23
+; SI-NEXT:    v_writelane_b32 v47, s15, 52
+; SI-NEXT:    v_writelane_b32 v46, s89, 37
+; SI-NEXT:    v_readfirstlane_b32 s23, v55
+; SI-NEXT:    v_writelane_b32 v47, s18, 53
+; SI-NEXT:    v_writelane_b32 v46, s57, 38
 ; SI-NEXT:    s_waitcnt vmcnt(4)
-; SI-NEXT:    v_readfirstlane_b32 s79, v53
+; SI-NEXT:    v_readfirstlane_b32 s40, v40
+; SI-NEXT:    v_writelane_b32 v47, s23, 54
+; SI-NEXT:    v_writelane_b32 v46, s91, 39
 ; SI-NEXT:    s_waitcnt vmcnt(3)
-; SI-NEXT:    v_readfirstlane_b32 s90, v23
-; SI-NEXT:    s_waitcnt vmcnt(2)
-; SI-NEXT:    v_readfirstlane_b32 s37, v54
-; SI-NEXT:    v_readfirstlane_b32 s82, v21
-; SI-NEXT:    v_readfirstlane_b32 s80, v22
-; SI-NEXT:    s_waitcnt vmcnt(1)
-; SI-NEXT:    v_readfirstlane_b32 s70, v25
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_readfirstlane_b32 s76, v42
-; SI-NEXT:    v_readfirstlane_b32 s21, v20
-; SI-NEXT:    v_writelane_b32 v47, s50, 62
-; SI-NEXT:    v_writelane_b32 v46, s40, 24
-; SI-NEXT:    v_writelane_b32 v47, s51, 63
-; SI-NEXT:    v_writelane_b32 v46, s41, 25
-; SI-NEXT:    s_cbranch_scc0 .LBB93_4
+; SI-NEXT:    v_readfirstlane_b32 s41, v22
+; SI-NEXT:    v_writelane_b32 v47, s40, 55
+; SI-NEXT:    v_writelane_b32 v46, s83, 40
+; SI-NEXT:    s_waitcnt vmcnt(1)
+; SI-NEXT:    v_readfirstlane_b32 s42, v25
+; SI-NEXT:    v_writelane_b32 v47, s41, 56
+; SI-NEXT:    v_writelane_b32 v46, s84, 41
+; SI-NEXT:    v_readfirstlane_b32 s43, v41
+; SI-NEXT:    v_writelane_b32 v47, s42, 57
+; SI-NEXT:    v_writelane_b32 v46, s93, 42
+; SI-NEXT:    v_writelane_b32 v47, s43, 58
+; SI-NEXT:    v_writelane_b32 v46, s86, 43
+; SI-NEXT:    v_readfirstlane_b32 s78, v51
+; SI-NEXT:    v_writelane_b32 v47, s77, 59
+; SI-NEXT:    v_writelane_b32 v46, s95, 44
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_readfirstlane_b32 s58, v42
+; SI-NEXT:    v_writelane_b32 v47, s78, 60
+; SI-NEXT:    v_writelane_b32 v46, s66, 45
+; SI-NEXT:    v_readfirstlane_b32 s59, v24
+; SI-NEXT:    v_writelane_b32 v47, s58, 61
+; SI-NEXT:    v_writelane_b32 v46, s67, 46
+; SI-NEXT:    v_writelane_b32 v47, s59, 62
+; SI-NEXT:    v_writelane_b32 v46, s21, 47
+; SI-NEXT:    v_writelane_b32 v47, vcc_lo, 63
+; SI-NEXT:    v_writelane_b32 v46, s31, 48
+; SI-NEXT:    s_cbranch_scc0 .LBB93_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_readlane_b32 s4, v47, 13
 ; SI-NEXT:    v_readlane_b32 s5, v47, 12
 ; SI-NEXT:    s_and_b32 s4, s4, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 26
+; SI-NEXT:    s_or_b32 s20, s4, s5
 ; SI-NEXT:    v_readlane_b32 s4, v47, 5
 ; SI-NEXT:    v_readlane_b32 s5, v47, 4
 ; SI-NEXT:    s_and_b32 s4, s4, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_readlane_b32 s5, v47, 41
-; SI-NEXT:    v_writelane_b32 v46, s4, 28
-; SI-NEXT:    s_and_b32 s4, s69, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s5, 8
-; SI-NEXT:    v_writelane_b32 v46, s69, 44
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 30
-; SI-NEXT:    v_readlane_b32 s4, v47, 34
-; SI-NEXT:    v_readlane_b32 s5, v47, 33
-; SI-NEXT:    s_and_b32 s4, s4, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s5, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 32
-; SI-NEXT:    v_readlane_b32 s4, v47, 26
-; SI-NEXT:    v_readlane_b32 s5, v47, 25
-; SI-NEXT:    s_and_b32 s4, s4, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s5, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 34
+; SI-NEXT:    s_or_b32 s88, s4, s5
+; SI-NEXT:    s_and_b32 s4, s14, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s9, 8
+; SI-NEXT:    s_or_b32 s94, s4, s5
+; SI-NEXT:    s_and_b32 s4, s8, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s6, 8
+; SI-NEXT:    s_or_b32 s85, s4, s5
+; SI-NEXT:    s_and_b32 s4, s7, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s92, 8
+; SI-NEXT:    s_or_b32 s96, s4, s5
 ; SI-NEXT:    v_readlane_b32 s4, v47, 18
 ; SI-NEXT:    v_readlane_b32 s5, v47, 17
 ; SI-NEXT:    s_and_b32 s4, s4, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 36
-; SI-NEXT:    s_and_b32 s4, s21, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s76, 8
-; SI-NEXT:    v_writelane_b32 v46, s24, 45
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 38
-; SI-NEXT:    s_and_b32 s4, s82, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s37, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 40
-; SI-NEXT:    s_and_b32 s4, s71, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s81, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 42
-; SI-NEXT:    s_and_b32 s4, s20, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s18, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 46
-; SI-NEXT:    s_and_b32 s4, s7, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s6, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 47
-; SI-NEXT:    s_and_b32 s4, s12, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s11, 8
+; SI-NEXT:    v_writelane_b32 v46, s22, 49
+; SI-NEXT:    s_or_b32 s22, s4, s5
+; SI-NEXT:    s_and_b32 s4, s59, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s58, 8
+; SI-NEXT:    s_or_b32 s58, s4, s5
+; SI-NEXT:    s_and_b32 s4, s61, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s60, 8
+; SI-NEXT:    s_or_b32 s59, s4, s5
+; SI-NEXT:    s_and_b32 s4, s63, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s62, 8
+; SI-NEXT:    s_or_b32 s60, s4, s5
+; SI-NEXT:    s_and_b32 s4, s27, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s70, 8
+; SI-NEXT:    s_or_b32 s61, s4, s5
+; SI-NEXT:    s_and_b32 s4, s73, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s72, 8
+; SI-NEXT:    s_or_b32 s62, s4, s5
+; SI-NEXT:    s_and_b32 s4, s91, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s89, 8
 ; SI-NEXT:    s_or_b32 s63, s4, s5
-; SI-NEXT:    s_and_b32 s4, s41, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s40, 8
+; SI-NEXT:    s_and_b32 s4, s21, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s67, 8
 ; SI-NEXT:    s_or_b32 s72, s4, s5
-; SI-NEXT:    s_and_b32 s4, s15, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s14, 8
+; SI-NEXT:    s_and_b32 s4, s66, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s95, 8
 ; SI-NEXT:    s_or_b32 s73, s4, s5
-; SI-NEXT:    s_and_b32 s4, s13, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s10, 8
+; SI-NEXT:    s_and_b32 s4, s93, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s74, 8
 ; SI-NEXT:    s_or_b32 s74, s4, s5
-; SI-NEXT:    s_and_b32 s4, s9, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s8, 8
+; SI-NEXT:    s_and_b32 s4, s99, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s75, 8
 ; SI-NEXT:    s_or_b32 s75, s4, s5
 ; SI-NEXT:    v_readlane_b32 s4, v47, 9
 ; SI-NEXT:    v_readlane_b32 s5, v47, 8
@@ -172300,61 +173248,63 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    v_readlane_b32 s6, v47, 6
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_lshl_b32 s6, s6, 24
-; SI-NEXT:    s_or_b32 s68, s6, s4
+; SI-NEXT:    s_or_b32 s7, s6, s4
 ; SI-NEXT:    v_readlane_b32 s4, v47, 11
 ; SI-NEXT:    s_and_b32 s4, s4, 0xff
 ; SI-NEXT:    v_readlane_b32 s6, v47, 10
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_lshl_b32 s6, s6, 24
+; SI-NEXT:    s_and_b32 s5, s5, 0xffff
+; SI-NEXT:    v_writelane_b32 v46, s7, 50
 ; SI-NEXT:    s_or_b32 s4, s6, s4
+; SI-NEXT:    s_or_b32 s5, s5, s7
 ; SI-NEXT:    v_readlane_b32 s6, v47, 1
 ; SI-NEXT:    v_readlane_b32 s7, v47, 0
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s7, 8
 ; SI-NEXT:    s_or_b32 s7, s6, s7
-; SI-NEXT:    v_readlane_b32 s6, v47, 43
-; SI-NEXT:    s_and_b32 s6, s6, 0xff
-; SI-NEXT:    v_readlane_b32 s8, v47, 42
+; SI-NEXT:    s_and_b32 s6, s10, 0xff
+; SI-NEXT:    v_readlane_b32 s8, v47, 34
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_lshl_b32 s8, s8, 24
-; SI-NEXT:    s_or_b32 s91, s8, s6
+; SI-NEXT:    s_or_b32 s9, s8, s6
 ; SI-NEXT:    v_readlane_b32 s6, v47, 3
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
 ; SI-NEXT:    v_readlane_b32 s8, v47, 2
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_lshl_b32 s8, s8, 24
+; SI-NEXT:    s_and_b32 s7, s7, 0xffff
+; SI-NEXT:    v_writelane_b32 v46, s9, 51
 ; SI-NEXT:    s_or_b32 s6, s8, s6
-; SI-NEXT:    v_readlane_b32 s8, v47, 38
-; SI-NEXT:    v_readlane_b32 s9, v47, 37
+; SI-NEXT:    s_or_b32 s7, s7, s9
+; SI-NEXT:    v_readlane_b32 s8, v47, 33
+; SI-NEXT:    v_readlane_b32 s9, v47, 32
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
 ; SI-NEXT:    s_lshl_b32 s9, s9, 8
 ; SI-NEXT:    s_or_b32 s9, s8, s9
-; SI-NEXT:    v_readlane_b32 s8, v47, 36
+; SI-NEXT:    v_readlane_b32 s8, v47, 31
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s10, v47, 35
+; SI-NEXT:    v_readlane_b32 s10, v47, 30
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_lshl_b32 s10, s10, 24
-; SI-NEXT:    s_or_b32 s88, s10, s8
-; SI-NEXT:    v_readlane_b32 s8, v47, 40
-; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s10, v47, 39
+; SI-NEXT:    s_or_b32 s14, s10, s8
+; SI-NEXT:    s_and_b32 s8, s12, 0xff
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
-; SI-NEXT:    s_lshl_b32 s10, s10, 24
+; SI-NEXT:    s_lshl_b32 s10, s11, 24
 ; SI-NEXT:    s_or_b32 s8, s10, s8
-; SI-NEXT:    v_readlane_b32 s10, v47, 30
-; SI-NEXT:    v_readlane_b32 s11, v47, 29
+; SI-NEXT:    v_readlane_b32 s10, v47, 28
+; SI-NEXT:    v_readlane_b32 s11, v47, 27
 ; SI-NEXT:    s_and_b32 s10, s10, 0xff
 ; SI-NEXT:    s_lshl_b32 s11, s11, 8
 ; SI-NEXT:    s_or_b32 s11, s10, s11
-; SI-NEXT:    v_readlane_b32 s10, v47, 28
+; SI-NEXT:    v_readlane_b32 s10, v47, 26
 ; SI-NEXT:    s_and_b32 s10, s10, 0xff
-; SI-NEXT:    v_readlane_b32 s12, v47, 27
+; SI-NEXT:    v_readlane_b32 s12, v47, 25
 ; SI-NEXT:    s_lshl_b32 s10, s10, 16
 ; SI-NEXT:    s_lshl_b32 s12, s12, 24
-; SI-NEXT:    s_or_b32 s95, s12, s10
-; SI-NEXT:    v_readlane_b32 s10, v47, 32
-; SI-NEXT:    s_and_b32 s10, s10, 0xff
-; SI-NEXT:    v_readlane_b32 s12, v47, 31
+; SI-NEXT:    s_or_b32 s91, s12, s10
+; SI-NEXT:    s_and_b32 s10, s13, 0xff
+; SI-NEXT:    v_readlane_b32 s12, v47, 29
 ; SI-NEXT:    s_lshl_b32 s10, s10, 16
 ; SI-NEXT:    s_lshl_b32 s12, s12, 24
 ; SI-NEXT:    s_or_b32 s10, s12, s10
@@ -172362,13 +173312,16 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    v_readlane_b32 s13, v47, 21
 ; SI-NEXT:    s_and_b32 s12, s12, 0xff
 ; SI-NEXT:    s_lshl_b32 s13, s13, 8
+; SI-NEXT:    s_and_b32 s9, s9, 0xffff
 ; SI-NEXT:    s_or_b32 s13, s12, s13
 ; SI-NEXT:    v_readlane_b32 s12, v47, 20
+; SI-NEXT:    v_writelane_b32 v46, s14, 52
+; SI-NEXT:    s_or_b32 s9, s9, s14
 ; SI-NEXT:    s_and_b32 s12, s12, 0xff
 ; SI-NEXT:    v_readlane_b32 s14, v47, 19
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_lshl_b32 s14, s14, 24
-; SI-NEXT:    s_or_b32 s89, s14, s12
+; SI-NEXT:    s_or_b32 s93, s14, s12
 ; SI-NEXT:    v_readlane_b32 s12, v47, 24
 ; SI-NEXT:    s_and_b32 s12, s12, 0xff
 ; SI-NEXT:    v_readlane_b32 s14, v47, 23
@@ -172376,366 +173329,337 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s14, s14, 24
 ; SI-NEXT:    s_or_b32 s12, s14, s12
 ; SI-NEXT:    v_readlane_b32 s14, v47, 14
-; SI-NEXT:    v_readlane_b32 s15, v47, 53
 ; SI-NEXT:    s_and_b32 s14, s14, 0xff
 ; SI-NEXT:    s_lshl_b32 s15, s15, 8
-; SI-NEXT:    v_writelane_b32 v46, s71, 48
 ; SI-NEXT:    s_or_b32 s15, s14, s15
-; SI-NEXT:    v_readlane_b32 s14, v47, 52
-; SI-NEXT:    s_and_b32 s14, s14, 0xff
-; SI-NEXT:    v_writelane_b32 v46, s16, 49
-; SI-NEXT:    v_readlane_b32 s16, v47, 51
+; SI-NEXT:    s_and_b32 s14, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
-; SI-NEXT:    v_writelane_b32 v46, s18, 50
-; SI-NEXT:    s_lshl_b32 s18, s16, 24
-; SI-NEXT:    s_or_b32 s93, s18, s14
+; SI-NEXT:    s_mov_b32 s67, s29
+; SI-NEXT:    s_mov_b32 s29, s28
+; SI-NEXT:    s_mov_b32 s28, s26
+; SI-NEXT:    s_mov_b32 s26, s68
+; SI-NEXT:    s_mov_b32 s68, s24
+; SI-NEXT:    s_mov_b32 s24, s25
+; SI-NEXT:    s_lshl_b32 s25, s17, 24
+; SI-NEXT:    s_or_b32 s17, s25, s14
 ; SI-NEXT:    v_readlane_b32 s14, v47, 16
+; SI-NEXT:    v_writelane_b32 v46, s90, 53
 ; SI-NEXT:    s_and_b32 s14, s14, 0xff
 ; SI-NEXT:    v_readlane_b32 s16, v47, 15
+; SI-NEXT:    v_writelane_b32 v46, s69, 54
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
-; SI-NEXT:    s_lshl_b32 s18, s16, 24
-; SI-NEXT:    v_readlane_b32 s16, v47, 49
-; SI-NEXT:    s_or_b32 s14, s18, s14
-; SI-NEXT:    s_and_b32 s18, s80, 0xff
-; SI-NEXT:    s_lshl_b32 s40, s16, 8
-; SI-NEXT:    v_readlane_b32 s16, v47, 48
-; SI-NEXT:    s_or_b32 s41, s18, s40
-; SI-NEXT:    s_and_b32 s18, s16, 0xff
-; SI-NEXT:    v_readlane_b32 s16, v47, 47
-; SI-NEXT:    s_lshl_b32 s18, s18, 16
-; SI-NEXT:    s_lshl_b32 s40, s16, 24
-; SI-NEXT:    s_mov_b32 s24, s21
-; SI-NEXT:    s_or_b32 s21, s40, s18
-; SI-NEXT:    s_and_b32 s40, s70, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v47, 50
-; SI-NEXT:    s_lshl_b32 s40, s40, 16
-; SI-NEXT:    s_lshl_b32 s42, s18, 24
-; SI-NEXT:    v_readlane_b32 s18, v47, 46
-; SI-NEXT:    s_or_b32 s40, s42, s40
-; SI-NEXT:    s_and_b32 s42, s96, 0xff
-; SI-NEXT:    s_lshl_b32 s43, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v47, 45
-; SI-NEXT:    s_or_b32 s43, s42, s43
-; SI-NEXT:    s_and_b32 s42, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v47, 44
-; SI-NEXT:    s_mov_b32 s34, s76
-; SI-NEXT:    s_lshl_b32 s42, s42, 16
-; SI-NEXT:    s_lshl_b32 s76, s18, 24
-; SI-NEXT:    s_or_b32 s69, s76, s42
-; SI-NEXT:    s_and_b32 s42, s90, 0xff
+; SI-NEXT:    s_lshl_b32 s25, s16, 24
+; SI-NEXT:    s_or_b32 s14, s25, s14
+; SI-NEXT:    s_and_b32 s25, s41, 0xff
+; SI-NEXT:    v_writelane_b32 v46, s27, 55
+; SI-NEXT:    s_lshl_b32 s27, s40, 8
+; SI-NEXT:    s_or_b32 s25, s25, s27
+; SI-NEXT:    s_and_b32 s27, s18, 0xff
+; SI-NEXT:    s_lshl_b32 s27, s27, 16
+; SI-NEXT:    s_lshl_b32 s18, s23, 24
+; SI-NEXT:    s_or_b32 s18, s18, s27
+; SI-NEXT:    s_and_b32 s27, s42, 0xff
+; SI-NEXT:    s_lshl_b32 s27, s27, 16
+; SI-NEXT:    s_lshl_b32 s40, s43, 24
+; SI-NEXT:    s_and_b32 s25, s25, 0xffff
+; SI-NEXT:    s_or_b32 s40, s40, s27
+; SI-NEXT:    s_or_b32 s41, s25, s18
+; SI-NEXT:    s_and_b32 s25, vcc_hi, 0xff
+; SI-NEXT:    s_lshl_b32 s27, vcc_lo, 8
+; SI-NEXT:    s_or_b32 s27, s25, s27
+; SI-NEXT:    s_and_b32 s25, s77, 0xff
+; SI-NEXT:    s_lshl_b32 s25, s25, 16
+; SI-NEXT:    s_lshl_b32 s42, s78, 24
+; SI-NEXT:    s_or_b32 s66, s42, s25
+; SI-NEXT:    s_and_b32 s42, s30, 0xff
 ; SI-NEXT:    s_lshl_b32 s42, s42, 16
-; SI-NEXT:    s_lshl_b32 s76, s79, 24
-; SI-NEXT:    s_or_b32 s42, s76, s42
-; SI-NEXT:    s_and_b32 s76, s98, 0xff
-; SI-NEXT:    s_lshl_b32 s77, s78, 8
-; SI-NEXT:    v_writelane_b32 v46, s20, 51
+; SI-NEXT:    s_lshl_b32 s43, s34, 24
+; SI-NEXT:    s_and_b32 s27, s27, 0xffff
+; SI-NEXT:    s_or_b32 s42, s43, s42
+; SI-NEXT:    s_or_b32 s43, s27, s66
+; SI-NEXT:    s_and_b32 s27, s38, 0xff
+; SI-NEXT:    s_lshl_b32 s76, s37, 8
+; SI-NEXT:    s_or_b32 s76, s27, s76
+; SI-NEXT:    s_and_b32 s27, s35, 0xff
+; SI-NEXT:    s_lshl_b32 s27, s27, 16
+; SI-NEXT:    s_lshl_b32 s77, s36, 24
+; SI-NEXT:    s_or_b32 s90, s77, s27
+; SI-NEXT:    s_and_b32 s77, s39, 0xff
+; SI-NEXT:    s_lshl_b32 s77, s77, 16
+; SI-NEXT:    s_lshl_b32 s78, s48, 24
+; SI-NEXT:    s_and_b32 s76, s76, 0xffff
+; SI-NEXT:    s_or_b32 s34, s78, s77
+; SI-NEXT:    s_or_b32 s35, s76, s90
+; SI-NEXT:    s_and_b32 s76, s52, 0xff
+; SI-NEXT:    s_lshl_b32 s77, s51, 8
 ; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s31, 0xff
-; SI-NEXT:    v_writelane_b32 v46, s78, 52
+; SI-NEXT:    s_and_b32 s77, s49, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s35, 24
-; SI-NEXT:    s_mov_b32 s16, s70
-; SI-NEXT:    s_or_b32 s70, s78, s77
-; SI-NEXT:    s_and_b32 s77, s55, 0xff
+; SI-NEXT:    s_lshl_b32 s78, s50, 24
+; SI-NEXT:    s_or_b32 s69, s78, s77
+; SI-NEXT:    s_and_b32 s77, s53, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s97, 24
+; SI-NEXT:    s_lshl_b32 s78, s54, 24
 ; SI-NEXT:    s_and_b32 s76, s76, 0xffff
-; SI-NEXT:    s_or_b32 vcc_lo, s78, s77
-; SI-NEXT:    s_or_b32 vcc_hi, s76, s70
-; SI-NEXT:    s_and_b32 s76, s22, 0xff
-; SI-NEXT:    s_lshl_b32 s77, s65, 8
+; SI-NEXT:    s_or_b32 s36, s78, s77
+; SI-NEXT:    s_or_b32 s37, s76, s69
+; SI-NEXT:    s_and_b32 s76, s55, 0xff
+; SI-NEXT:    s_lshl_b32 s77, s98, 8
+; SI-NEXT:    v_readlane_b32 s16, v47, 40
 ; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s94, 0xff
+; SI-NEXT:    s_and_b32 s77, s16, 0xff
+; SI-NEXT:    v_writelane_b32 v46, s70, 56
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s67, 24
-; SI-NEXT:    s_or_b32 s71, s78, s77
-; SI-NEXT:    s_and_b32 s77, s92, 0xff
+; SI-NEXT:    s_lshl_b32 s78, s24, 24
+; SI-NEXT:    v_readlane_b32 s16, v46, 54
+; SI-NEXT:    s_or_b32 s70, s78, s77
+; SI-NEXT:    s_and_b32 s77, s16, 0xff
+; SI-NEXT:    v_readlane_b32 s16, v46, 53
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s30, 24
+; SI-NEXT:    s_lshl_b32 s78, s16, 24
 ; SI-NEXT:    s_and_b32 s76, s76, 0xffff
 ; SI-NEXT:    s_or_b32 s38, s78, s77
-; SI-NEXT:    s_or_b32 s39, s76, s71
-; SI-NEXT:    s_and_b32 s76, s26, 0xff
-; SI-NEXT:    s_lshl_b32 s77, s25, 8
+; SI-NEXT:    s_or_b32 s39, s76, s70
+; SI-NEXT:    s_and_b32 s76, s79, 0xff
+; SI-NEXT:    s_lshl_b32 s77, s82, 8
 ; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s23, 0xff
+; SI-NEXT:    s_and_b32 s77, s71, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
 ; SI-NEXT:    s_lshl_b32 s78, s87, 24
-; SI-NEXT:    v_writelane_b32 v46, s80, 53
-; SI-NEXT:    s_or_b32 s80, s78, s77
-; SI-NEXT:    s_and_b32 s77, s36, 0xff
+; SI-NEXT:    s_or_b32 s71, s78, s77
+; SI-NEXT:    s_and_b32 s77, s47, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s48, 24
+; SI-NEXT:    s_lshl_b32 s78, s56, 24
 ; SI-NEXT:    s_and_b32 s76, s76, 0xffff
 ; SI-NEXT:    s_or_b32 s48, s78, s77
-; SI-NEXT:    s_or_b32 s49, s76, s80
-; SI-NEXT:    s_and_b32 s76, s85, 0xff
-; SI-NEXT:    s_lshl_b32 s77, s64, 8
-; SI-NEXT:    v_writelane_b32 v46, s98, 54
+; SI-NEXT:    s_or_b32 s49, s76, s71
+; SI-NEXT:    s_and_b32 s76, s46, 0xff
+; SI-NEXT:    s_lshl_b32 s77, s65, 8
 ; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s50, 0xff
-; SI-NEXT:    v_writelane_b32 v46, s24, 55
+; SI-NEXT:    s_and_b32 s77, s80, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s51, 24
-; SI-NEXT:    v_writelane_b32 v46, s34, 56
-; SI-NEXT:    v_writelane_b32 v46, s81, 57
-; SI-NEXT:    s_or_b32 s81, s78, s77
-; SI-NEXT:    s_and_b32 s77, s57, 0xff
+; SI-NEXT:    s_lshl_b32 s78, s81, 24
+; SI-NEXT:    s_or_b32 vcc_hi, s78, s77
+; SI-NEXT:    s_and_b32 s77, s86, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s58, 24
+; SI-NEXT:    s_lshl_b32 s78, s83, 24
 ; SI-NEXT:    s_and_b32 s76, s76, 0xffff
+; SI-NEXT:    v_readlane_b32 s16, v47, 39
 ; SI-NEXT:    s_or_b32 s50, s78, s77
-; SI-NEXT:    s_or_b32 s51, s76, s81
-; SI-NEXT:    s_and_b32 s76, s56, 0xff
-; SI-NEXT:    s_lshl_b32 s77, s45, 8
-; SI-NEXT:    v_writelane_b32 v46, s22, 58
+; SI-NEXT:    s_or_b32 s51, s76, vcc_hi
+; SI-NEXT:    s_and_b32 s76, s31, 0xff
+; SI-NEXT:    s_lshl_b32 s77, s16, 8
 ; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s53, 0xff
-; SI-NEXT:    v_writelane_b32 v46, s65, 59
+; SI-NEXT:    s_and_b32 s77, s29, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s52, 24
-; SI-NEXT:    v_writelane_b32 v46, s67, 60
-; SI-NEXT:    v_writelane_b32 v46, s94, 61
-; SI-NEXT:    s_mov_b32 s94, s82
-; SI-NEXT:    s_or_b32 s82, s78, s77
-; SI-NEXT:    s_and_b32 s77, s62, 0xff
+; SI-NEXT:    s_lshl_b32 s78, s28, 24
+; SI-NEXT:    s_or_b32 s31, s78, s77
+; SI-NEXT:    s_and_b32 s77, s84, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s60, 24
+; SI-NEXT:    s_lshl_b32 s78, s57, 24
 ; SI-NEXT:    s_and_b32 s76, s76, 0xffff
 ; SI-NEXT:    s_or_b32 s52, s78, s77
-; SI-NEXT:    s_or_b32 s53, s76, s82
-; SI-NEXT:    s_and_b32 s76, s44, 0xff
-; SI-NEXT:    s_lshl_b32 s77, s54, 8
+; SI-NEXT:    s_or_b32 s53, s76, s31
+; SI-NEXT:    s_and_b32 s76, s67, 0xff
+; SI-NEXT:    s_lshl_b32 s77, s26, 8
 ; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s28, 0xff
+; SI-NEXT:    s_and_b32 s77, s68, 0xff
+; SI-NEXT:    v_readlane_b32 s16, v47, 38
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s27, 24
-; SI-NEXT:    v_writelane_b32 v46, s97, 62
-; SI-NEXT:    s_mov_b32 s92, s28
-; SI-NEXT:    s_mov_b32 s28, s27
-; SI-NEXT:    s_mov_b32 s27, s26
-; SI-NEXT:    s_mov_b32 s26, s25
-; SI-NEXT:    s_mov_b32 s25, s87
-; SI-NEXT:    s_or_b32 s87, s78, s77
-; SI-NEXT:    s_and_b32 s77, s61, 0xff
-; SI-NEXT:    s_mov_b32 s24, s23
-; SI-NEXT:    s_mov_b32 s23, s16
+; SI-NEXT:    s_lshl_b32 s78, s16, 24
+; SI-NEXT:    s_or_b32 s82, s78, s77
+; SI-NEXT:    s_and_b32 s77, s45, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s59, 24
+; SI-NEXT:    s_lshl_b32 s78, s44, 24
 ; SI-NEXT:    s_and_b32 s76, s76, 0xffff
-; SI-NEXT:    v_readlane_b32 s16, v46, 45
-; SI-NEXT:    s_mov_b32 s85, s55
+; SI-NEXT:    v_readlane_b32 s16, v47, 37
 ; SI-NEXT:    s_or_b32 s54, s78, s77
-; SI-NEXT:    s_or_b32 s55, s76, s87
-; SI-NEXT:    s_and_b32 s76, s29, 0xff
+; SI-NEXT:    s_or_b32 s55, s76, s82
+; SI-NEXT:    s_and_b32 s76, s19, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s16, 8
-; SI-NEXT:    v_readlane_b32 s18, v46, 26
+; SI-NEXT:    v_readlane_b32 s16, v47, 36
+; SI-NEXT:    s_and_b32 s15, s15, 0xffff
 ; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s19, 0xff
-; SI-NEXT:    v_readlane_b32 s16, v46, 49
-; SI-NEXT:    s_and_b32 s44, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 28
+; SI-NEXT:    s_and_b32 s77, s16, 0xff
+; SI-NEXT:    v_readlane_b32 s16, v47, 35
+; SI-NEXT:    s_or_b32 s15, s15, s17
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
 ; SI-NEXT:    s_lshl_b32 s78, s16, 24
-; SI-NEXT:    s_and_b32 s45, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 30
-; SI-NEXT:    s_mov_b32 s20, s19
-; SI-NEXT:    s_mov_b32 s19, s37
-; SI-NEXT:    s_mov_b32 s37, s35
-; SI-NEXT:    s_mov_b32 s35, s31
-; SI-NEXT:    s_mov_b32 s31, s79
-; SI-NEXT:    s_mov_b32 s79, s90
-; SI-NEXT:    s_mov_b32 s90, s96
-; SI-NEXT:    s_or_b32 s96, s78, s77
-; SI-NEXT:    s_lshl_b32 s78, s46, 24
-; SI-NEXT:    s_and_b32 s46, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 32
-; SI-NEXT:    s_and_b32 s77, s47, 0xff
-; SI-NEXT:    s_and_b32 s47, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 34
-; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_and_b32 s76, s76, 0xffff
-; SI-NEXT:    s_and_b32 s56, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 36
-; SI-NEXT:    s_or_b32 s64, s78, s77
-; SI-NEXT:    s_or_b32 s65, s76, s96
-; SI-NEXT:    s_and_b32 s76, s17, 0xff
-; SI-NEXT:    s_lshl_b32 s77, s99, 8
-; SI-NEXT:    s_and_b32 s57, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 38
-; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s86, 0xff
-; SI-NEXT:    s_and_b32 s30, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 40
-; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s83, 24
-; SI-NEXT:    s_and_b32 s34, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 42
-; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_mov_b32 s16, s83
-; SI-NEXT:    s_or_b32 s83, s78, s77
-; SI-NEXT:    s_and_b32 s77, s84, 0xff
-; SI-NEXT:    s_and_b32 s36, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 46
-; SI-NEXT:    s_or_b32 s5, s5, s68
-; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s66, 24
-; SI-NEXT:    s_and_b32 s76, s76, 0xffff
-; SI-NEXT:    s_and_b32 s84, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 47
-; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_or_b32 s66, s78, s77
-; SI-NEXT:    s_or_b32 s67, s76, s83
-; SI-NEXT:    s_mov_b32 s78, s86
-; SI-NEXT:    s_and_b32 s86, s18, 0xffff
-; SI-NEXT:    s_mov_b32 s76, s99
-; SI-NEXT:    s_and_b32 s99, s74, 0xffff
-; SI-NEXT:    s_and_b32 s18, s75, 0xffff
+; SI-NEXT:    v_readlane_b32 s16, v46, 49
+; SI-NEXT:    s_and_b32 s44, s20, 0xffff
+; SI-NEXT:    s_mov_b32 s25, s99
+; SI-NEXT:    s_or_b32 s87, s78, s77
+; SI-NEXT:    s_and_b32 s77, s16, 0xff
+; SI-NEXT:    s_and_b32 s57, s22, 0xffff
+; SI-NEXT:    s_and_b32 s22, s74, 0xffff
+; SI-NEXT:    s_and_b32 s99, s75, 0xffff
 ; SI-NEXT:    s_or_b32 s74, s44, s4
 ; SI-NEXT:    s_mov_b32 s75, s5
-; SI-NEXT:    s_lshr_b64 s[4:5], s[4:5], 16
-; SI-NEXT:    s_or_b32 s7, s7, s91
-; SI-NEXT:    v_writelane_b32 v46, s4, 26
-; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    v_writelane_b32 v46, s5, 27
-; SI-NEXT:    s_lshr_b64 s[4:5], s[6:7], 16
-; SI-NEXT:    s_or_b32 s9, s9, s88
-; SI-NEXT:    v_writelane_b32 v46, s4, 28
+; SI-NEXT:    s_lshr_b64 s[20:21], s[4:5], 16
+; SI-NEXT:    s_lshr_b64 s[4:5], s[14:15], 16
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    v_writelane_b32 v46, s5, 29
-; SI-NEXT:    s_lshr_b64 s[4:5], s[8:9], 16
-; SI-NEXT:    s_or_b32 s11, s11, s95
-; SI-NEXT:    v_writelane_b32 v46, s4, 30
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    v_writelane_b32 v46, s5, 31
-; SI-NEXT:    s_lshr_b64 s[4:5], s[10:11], 16
-; SI-NEXT:    s_or_b32 s13, s13, s89
-; SI-NEXT:    v_writelane_b32 v46, s4, 32
-; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    v_writelane_b32 v46, s5, 33
-; SI-NEXT:    s_lshr_b64 s[4:5], s[12:13], 16
-; SI-NEXT:    s_or_b32 s15, s15, s93
-; SI-NEXT:    v_writelane_b32 v46, s4, 34
-; SI-NEXT:    s_and_b32 s41, s41, 0xffff
-; SI-NEXT:    v_writelane_b32 v46, s5, 35
-; SI-NEXT:    s_lshr_b64 s[4:5], s[14:15], 16
-; SI-NEXT:    s_or_b32 s41, s41, s21
-; SI-NEXT:    v_writelane_b32 v46, s4, 36
-; SI-NEXT:    s_and_b32 s43, s43, 0xffff
-; SI-NEXT:    v_writelane_b32 v46, s5, 37
-; SI-NEXT:    s_lshr_b64 s[4:5], s[40:41], 16
-; SI-NEXT:    s_or_b32 s43, s43, s69
-; SI-NEXT:    v_writelane_b32 v46, s4, 38
-; SI-NEXT:    v_writelane_b32 v46, s5, 39
-; SI-NEXT:    s_lshr_b64 s[4:5], s[42:43], 16
-; SI-NEXT:    v_writelane_b32 v46, s4, 40
-; SI-NEXT:    v_writelane_b32 v46, s5, 41
-; SI-NEXT:    s_lshr_b64 s[4:5], vcc, 16
-; SI-NEXT:    s_and_b32 s97, s63, 0xffff
-; SI-NEXT:    s_and_b32 s98, s72, 0xffff
-; SI-NEXT:    s_and_b32 s22, s73, 0xffff
-; SI-NEXT:    v_writelane_b32 v46, s4, 42
+; SI-NEXT:    s_lshl_b32 s77, s77, 16
+; SI-NEXT:    s_lshl_b32 s78, s64, 24
+; SI-NEXT:    s_and_b32 s76, s76, 0xffff
+; SI-NEXT:    v_readlane_b32 s5, v46, 50
+; SI-NEXT:    s_or_b32 s11, s11, s91
+; SI-NEXT:    s_or_b32 s13, s13, s93
+; SI-NEXT:    s_mov_b32 s27, s98
+; SI-NEXT:    s_or_b32 s64, s78, s77
+; SI-NEXT:    s_or_b32 s65, s76, s87
+; SI-NEXT:    s_and_b32 s45, s88, 0xffff
+; SI-NEXT:    s_and_b32 s46, s94, 0xffff
+; SI-NEXT:    s_and_b32 s47, s85, 0xffff
+; SI-NEXT:    s_and_b32 s56, s96, 0xffff
+; SI-NEXT:    s_and_b32 vcc_lo, s58, 0xffff
+; SI-NEXT:    s_and_b32 s30, s59, 0xffff
+; SI-NEXT:    s_and_b32 s96, s60, 0xffff
+; SI-NEXT:    s_and_b32 s83, s61, 0xffff
+; SI-NEXT:    s_and_b32 s16, s62, 0xffff
+; SI-NEXT:    s_and_b32 s86, s63, 0xffff
+; SI-NEXT:    s_and_b32 s97, s72, 0xffff
+; SI-NEXT:    s_and_b32 s98, s73, 0xffff
+; SI-NEXT:    s_lshr_b64 s[76:77], s[6:7], 16
+; SI-NEXT:    s_lshr_b32 s23, s5, 16
+; SI-NEXT:    v_readlane_b32 s5, v46, 51
 ; SI-NEXT:    s_or_b32 s72, s45, s6
 ; SI-NEXT:    s_mov_b32 s73, s7
 ; SI-NEXT:    s_or_b32 s62, s46, s8
 ; SI-NEXT:    s_mov_b32 s63, s9
+; SI-NEXT:    s_lshr_b64 s[78:79], s[8:9], 16
 ; SI-NEXT:    s_or_b32 s60, s47, s10
 ; SI-NEXT:    s_mov_b32 s61, s11
+; SI-NEXT:    s_lshr_b64 s[80:81], s[10:11], 16
 ; SI-NEXT:    s_or_b32 s58, s56, s12
 ; SI-NEXT:    s_mov_b32 s59, s13
+; SI-NEXT:    s_lshr_b64 s[10:11], s[12:13], 16
 ; SI-NEXT:    s_or_b32 s56, s57, s14
 ; SI-NEXT:    s_mov_b32 s57, s15
-; SI-NEXT:    s_or_b32 s46, s30, s40
+; SI-NEXT:    s_or_b32 s46, vcc_lo, s40
 ; SI-NEXT:    s_mov_b32 s47, s41
-; SI-NEXT:    v_writelane_b32 v46, s5, 43
-; SI-NEXT:    s_or_b32 s40, s84, s38
-; SI-NEXT:    s_mov_b32 s41, s39
+; SI-NEXT:    s_lshr_b64 s[6:7], s[40:41], 16
+; SI-NEXT:    s_or_b32 s44, s30, s42
+; SI-NEXT:    s_mov_b32 s45, s43
+; SI-NEXT:    s_lshr_b64 s[88:89], s[42:43], 16
+; SI-NEXT:    s_or_b32 s42, s96, s34
+; SI-NEXT:    s_mov_b32 s43, s35
+; SI-NEXT:    s_lshr_b64 s[84:85], s[34:35], 16
+; SI-NEXT:    s_or_b32 s40, s83, s36
+; SI-NEXT:    s_mov_b32 s41, s37
+; SI-NEXT:    s_lshr_b64 s[8:9], s[36:37], 16
+; SI-NEXT:    s_or_b32 s14, s16, s38
+; SI-NEXT:    s_mov_b32 s15, s39
 ; SI-NEXT:    s_lshr_b64 s[38:39], s[38:39], 16
-; SI-NEXT:    s_or_b32 s14, s86, s48
-; SI-NEXT:    s_mov_b32 s15, s49
+; SI-NEXT:    s_or_b32 s12, s86, s48
+; SI-NEXT:    s_mov_b32 s13, s49
 ; SI-NEXT:    s_lshr_b64 s[48:49], s[48:49], 16
-; SI-NEXT:    s_or_b32 s12, s97, s50
-; SI-NEXT:    s_mov_b32 s13, s51
+; SI-NEXT:    s_or_b32 s94, s97, s50
+; SI-NEXT:    s_mov_b32 s95, s51
 ; SI-NEXT:    s_lshr_b64 s[50:51], s[50:51], 16
-; SI-NEXT:    s_or_b32 s10, s98, s52
-; SI-NEXT:    s_mov_b32 s11, s53
+; SI-NEXT:    s_or_b32 s36, s98, s52
+; SI-NEXT:    s_mov_b32 s37, s53
 ; SI-NEXT:    s_lshr_b64 s[52:53], s[52:53], 16
-; SI-NEXT:    s_or_b32 s8, s22, s54
-; SI-NEXT:    s_mov_b32 s9, s55
+; SI-NEXT:    s_or_b32 s34, s22, s54
+; SI-NEXT:    s_mov_b32 s35, s55
 ; SI-NEXT:    s_lshr_b64 s[54:55], s[54:55], 16
-; SI-NEXT:    s_or_b32 s6, s99, s64
-; SI-NEXT:    s_mov_b32 s7, s65
+; SI-NEXT:    s_lshr_b32 s77, s5, 16
+; SI-NEXT:    v_readlane_b32 s5, v46, 52
+; SI-NEXT:    v_readlane_b32 s22, v46, 49
+; SI-NEXT:    s_or_b32 s96, s99, s64
+; SI-NEXT:    s_mov_b32 s97, s65
 ; SI-NEXT:    s_lshr_b64 s[64:65], s[64:65], 16
-; SI-NEXT:    s_or_b32 s4, s18, s66
-; SI-NEXT:    s_mov_b32 s5, s67
-; SI-NEXT:    s_lshr_b64 s[66:67], s[66:67], 16
-; SI-NEXT:    s_or_b32 s44, s34, s42
-; SI-NEXT:    s_mov_b32 s45, s43
-; SI-NEXT:    s_or_b32 s42, s36, vcc_lo
-; SI-NEXT:    s_mov_b32 s43, vcc_hi
-; SI-NEXT:    s_mov_b32 s86, s78
-; SI-NEXT:    s_mov_b32 s99, s76
-; SI-NEXT:    v_readlane_b32 s18, v46, 50
-; SI-NEXT:    s_lshr_b32 s77, s68, 16
-; SI-NEXT:    s_lshr_b32 s68, s91, 16
-; SI-NEXT:    s_lshr_b32 s88, s88, 16
-; SI-NEXT:    s_lshr_b32 s84, s95, 16
-; SI-NEXT:    s_lshr_b32 s89, s89, 16
-; SI-NEXT:    s_lshr_b32 s91, s93, 16
-; SI-NEXT:    s_lshr_b32 s93, s21, 16
-; SI-NEXT:    s_lshr_b32 s95, s69, 16
-; SI-NEXT:    s_lshr_b32 s30, s70, 16
-; SI-NEXT:    s_lshr_b32 s34, s71, 16
-; SI-NEXT:    s_lshr_b32 s36, s80, 16
-; SI-NEXT:    v_readlane_b32 s69, v46, 44
-; SI-NEXT:    v_readlane_b32 s80, v46, 53
-; SI-NEXT:    s_lshr_b32 s39, s81, 16
-; SI-NEXT:    v_readlane_b32 s81, v46, 57
-; SI-NEXT:    v_readlane_b32 s76, v46, 56
-; SI-NEXT:    v_readlane_b32 s21, v46, 55
-; SI-NEXT:    v_readlane_b32 s98, v46, 54
-; SI-NEXT:    s_lshr_b32 s49, s82, 16
-; SI-NEXT:    s_mov_b32 s82, s94
-; SI-NEXT:    v_readlane_b32 s71, v46, 48
-; SI-NEXT:    v_readlane_b32 s78, v46, 52
-; SI-NEXT:    s_mov_b32 s55, s85
-; SI-NEXT:    v_readlane_b32 s97, v46, 62
-; SI-NEXT:    v_readlane_b32 s94, v46, 61
-; SI-NEXT:    v_readlane_b32 s67, v46, 60
-; SI-NEXT:    v_readlane_b32 s65, v46, 59
-; SI-NEXT:    v_readlane_b32 s22, v46, 58
-; SI-NEXT:    s_lshr_b32 s51, s87, 16
-; SI-NEXT:    s_mov_b32 s70, s23
-; SI-NEXT:    s_mov_b32 s23, s24
-; SI-NEXT:    v_readlane_b32 s24, v46, 45
-; SI-NEXT:    s_mov_b32 s87, s25
-; SI-NEXT:    s_mov_b32 s25, s26
-; SI-NEXT:    s_mov_b32 s26, s27
-; SI-NEXT:    s_mov_b32 s27, s28
-; SI-NEXT:    s_mov_b32 s28, s92
-; SI-NEXT:    s_lshr_b32 s53, s96, 16
-; SI-NEXT:    s_mov_b32 s96, s90
-; SI-NEXT:    s_mov_b32 s90, s79
-; SI-NEXT:    s_mov_b32 s79, s31
-; SI-NEXT:    s_mov_b32 s31, s35
-; SI-NEXT:    s_mov_b32 s35, s37
-; SI-NEXT:    s_mov_b32 s37, s19
-; SI-NEXT:    s_mov_b32 s19, s20
-; SI-NEXT:    v_readlane_b32 s20, v46, 51
-; SI-NEXT:    s_lshr_b32 s92, s83, 16
-; SI-NEXT:    s_mov_b32 s83, s16
-; SI-NEXT:    v_readlane_b32 s16, v46, 49
-; SI-NEXT:    s_cbranch_execnz .LBB93_3
-; SI-NEXT:  .LBB93_2: ; %cmp.true
-; SI-NEXT:    v_readlane_b32 s4, v46, 11
-; SI-NEXT:    s_add_i32 s85, s4, 3
-; SI-NEXT:    v_readlane_b32 s5, v46, 6
-; SI-NEXT:    v_readlane_b32 s6, v47, 60
+; SI-NEXT:    s_lshr_b32 s5, s5, 16
+; SI-NEXT:    s_lshr_b32 s91, s91, 16
+; SI-NEXT:    s_lshr_b32 s93, s93, 16
+; SI-NEXT:    s_lshr_b32 s11, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s18, 16
+; SI-NEXT:    s_lshr_b32 s30, s66, 16
+; SI-NEXT:    s_lshr_b32 s7, s90, 16
+; SI-NEXT:    s_lshr_b32 s9, s69, 16
+; SI-NEXT:    s_lshr_b32 s39, s70, 16
+; SI-NEXT:    s_mov_b32 s98, s27
+; SI-NEXT:    s_mov_b32 s99, s25
+; SI-NEXT:    v_readlane_b32 s70, v46, 56
+; SI-NEXT:    v_readlane_b32 s27, v46, 55
+; SI-NEXT:    s_lshr_b32 s49, s71, 16
+; SI-NEXT:    s_lshr_b32 s51, vcc_hi, 16
+; SI-NEXT:    s_mov_b32 s25, s24
+; SI-NEXT:    s_mov_b32 s24, s68
+; SI-NEXT:    s_mov_b32 s68, s26
+; SI-NEXT:    s_mov_b32 s26, s28
+; SI-NEXT:    s_mov_b32 s28, s29
+; SI-NEXT:    s_mov_b32 s29, s67
+; SI-NEXT:    v_readlane_b32 s69, v46, 54
+; SI-NEXT:    v_readlane_b32 s90, v46, 53
+; SI-NEXT:    s_lshr_b32 s53, s31, 16
+; SI-NEXT:    s_lshr_b32 s55, s82, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s87, 16
+; SI-NEXT:    s_mov_b64 s[66:67], 0
+; SI-NEXT:    s_branch .LBB93_3
+; SI-NEXT:  .LBB93_2:
+; SI-NEXT:    s_mov_b64 s[66:67], -1
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr20
+; SI-NEXT:    ; implicit-def: $sgpr23
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr5
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr80
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr84
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr96
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:  .LBB93_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[66:67], s[66:67], exec
+; SI-NEXT:    s_cselect_b32 s17, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s17, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB93_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    s_add_i32 s85, s99, 3
+; SI-NEXT:    v_readlane_b32 s5, v46, 29
 ; SI-NEXT:    s_and_b32 s4, s85, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 8
-; SI-NEXT:    s_add_i32 s6, s6, 3
+; SI-NEXT:    s_add_i32 s6, s22, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    v_readlane_b32 s5, v47, 58
+; SI-NEXT:    v_readlane_b32 s5, v46, 20
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 24
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
@@ -172743,27 +173667,30 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_or_b32 s5, s5, s6
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s5, s17, 3
+; SI-NEXT:    s_add_i32 s5, s19, 3
+; SI-NEXT:    v_readlane_b32 s6, v47, 37
+; SI-NEXT:    v_readlane_b32 s7, v47, 36
 ; SI-NEXT:    s_and_b32 s5, s5, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s99, 8
-; SI-NEXT:    s_add_i32 s7, s86, 3
+; SI-NEXT:    s_lshl_b32 s6, s6, 8
+; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_or_b32 s5, s6, s5
+; SI-NEXT:    v_readlane_b32 s6, v47, 35
 ; SI-NEXT:    s_and_b32 s7, s7, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s83, 24
+; SI-NEXT:    s_lshl_b32 s6, s6, 24
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
 ; SI-NEXT:    s_addk_i32 s5, 0x300
 ; SI-NEXT:    s_or_b32 s6, s6, s7
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s6, s5
-; SI-NEXT:    v_readlane_b32 s6, v46, 20
+; SI-NEXT:    v_readlane_b32 s6, v46, 42
 ; SI-NEXT:    s_add_i32 s6, s6, 3
-; SI-NEXT:    v_readlane_b32 s7, v46, 14
-; SI-NEXT:    v_readlane_b32 s8, v46, 9
+; SI-NEXT:    v_readlane_b32 s7, v46, 36
+; SI-NEXT:    v_readlane_b32 s8, v46, 32
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s7, 8
 ; SI-NEXT:    s_add_i32 s83, s8, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    v_readlane_b32 s7, v46, 8
+; SI-NEXT:    v_readlane_b32 s7, v46, 31
 ; SI-NEXT:    s_and_b32 s8, s83, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s7, 24
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
@@ -172773,25 +173700,27 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_add_i32 s7, s29, 3
 ; SI-NEXT:    s_and_b32 s7, s7, 0xff
-; SI-NEXT:    s_lshl_b32 s8, s24, 8
-; SI-NEXT:    s_add_i32 s9, s19, 3
+; SI-NEXT:    s_lshl_b32 s8, s68, 8
+; SI-NEXT:    s_add_i32 s9, s24, 3
+; SI-NEXT:    s_add_i32 s96, s4, 0x3000000
 ; SI-NEXT:    s_or_b32 s7, s8, s7
+; SI-NEXT:    v_readlane_b32 s4, v47, 38
 ; SI-NEXT:    s_and_b32 s9, s9, 0xff
-; SI-NEXT:    s_lshl_b32 s8, s16, 24
+; SI-NEXT:    s_lshl_b32 s8, s4, 24
 ; SI-NEXT:    s_lshl_b32 s9, s9, 16
 ; SI-NEXT:    s_addk_i32 s7, 0x300
 ; SI-NEXT:    s_or_b32 s8, s8, s9
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
 ; SI-NEXT:    s_or_b32 s7, s8, s7
-; SI-NEXT:    v_readlane_b32 s8, v46, 23
+; SI-NEXT:    v_readlane_b32 s8, v46, 45
 ; SI-NEXT:    s_add_i32 s8, s8, 3
-; SI-NEXT:    v_readlane_b32 s9, v46, 22
-; SI-NEXT:    v_readlane_b32 s10, v46, 19
+; SI-NEXT:    v_readlane_b32 s9, v46, 44
+; SI-NEXT:    v_readlane_b32 s10, v46, 41
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
 ; SI-NEXT:    s_lshl_b32 s9, s9, 8
 ; SI-NEXT:    s_add_i32 s68, s10, 3
 ; SI-NEXT:    s_or_b32 s8, s9, s8
-; SI-NEXT:    v_readlane_b32 s9, v46, 16
+; SI-NEXT:    v_readlane_b32 s9, v46, 38
 ; SI-NEXT:    s_and_b32 s10, s68, 0xff
 ; SI-NEXT:    s_lshl_b32 s9, s9, 24
 ; SI-NEXT:    s_lshl_b32 s10, s10, 16
@@ -172799,45 +173728,45 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_or_b32 s9, s9, s10
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
 ; SI-NEXT:    s_or_b32 s8, s9, s8
-; SI-NEXT:    v_readlane_b32 s9, v46, 4
+; SI-NEXT:    v_readlane_b32 s9, v46, 48
 ; SI-NEXT:    s_add_i32 s9, s9, 3
-; SI-NEXT:    v_readlane_b32 s10, v46, 0
+; SI-NEXT:    v_readlane_b32 s4, v47, 39
 ; SI-NEXT:    s_and_b32 s9, s9, 0xff
-; SI-NEXT:    s_lshl_b32 s10, s10, 8
+; SI-NEXT:    s_lshl_b32 s10, s4, 8
 ; SI-NEXT:    s_add_i32 s11, s28, 3
 ; SI-NEXT:    s_or_b32 s9, s10, s9
 ; SI-NEXT:    s_and_b32 s11, s11, 0xff
-; SI-NEXT:    s_lshl_b32 s10, s27, 24
+; SI-NEXT:    s_lshl_b32 s10, s26, 24
 ; SI-NEXT:    s_lshl_b32 s11, s11, 16
 ; SI-NEXT:    s_addk_i32 s9, 0x300
 ; SI-NEXT:    s_or_b32 s10, s10, s11
 ; SI-NEXT:    s_and_b32 s9, s9, 0xffff
 ; SI-NEXT:    s_or_b32 s9, s10, s9
-; SI-NEXT:    v_readlane_b32 s10, v46, 25
+; SI-NEXT:    v_readlane_b32 s10, v46, 47
 ; SI-NEXT:    s_add_i32 s17, s10, 3
-; SI-NEXT:    v_readlane_b32 s11, v46, 24
-; SI-NEXT:    v_readlane_b32 s12, v46, 21
+; SI-NEXT:    v_readlane_b32 s11, v46, 46
+; SI-NEXT:    v_readlane_b32 s12, v46, 43
 ; SI-NEXT:    s_and_b32 s10, s17, 0xff
 ; SI-NEXT:    s_lshl_b32 s11, s11, 8
-; SI-NEXT:    s_add_i32 s12, s12, 3
+; SI-NEXT:    s_add_i32 s23, s12, 3
 ; SI-NEXT:    s_or_b32 s10, s11, s10
-; SI-NEXT:    v_readlane_b32 s11, v46, 18
-; SI-NEXT:    s_and_b32 s12, s12, 0xff
+; SI-NEXT:    v_readlane_b32 s11, v46, 40
+; SI-NEXT:    s_and_b32 s12, s23, 0xff
 ; SI-NEXT:    s_lshl_b32 s11, s11, 24
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_addk_i32 s10, 0x300
 ; SI-NEXT:    s_or_b32 s11, s11, s12
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_or_b32 s10, s11, s10
-; SI-NEXT:    v_readlane_b32 s11, v46, 10
+; SI-NEXT:    v_readlane_b32 s11, v46, 33
 ; SI-NEXT:    s_add_i32 s84, s11, 3
-; SI-NEXT:    v_readlane_b32 s12, v46, 7
-; SI-NEXT:    v_readlane_b32 s13, v46, 1
+; SI-NEXT:    v_readlane_b32 s12, v46, 30
+; SI-NEXT:    v_readlane_b32 s13, v46, 25
 ; SI-NEXT:    s_and_b32 s11, s84, 0xff
 ; SI-NEXT:    s_lshl_b32 s12, s12, 8
 ; SI-NEXT:    s_add_i32 s13, s13, 3
 ; SI-NEXT:    s_or_b32 s11, s12, s11
-; SI-NEXT:    v_readlane_b32 s12, v47, 59
+; SI-NEXT:    v_readlane_b32 s12, v46, 21
 ; SI-NEXT:    s_and_b32 s13, s13, 0xff
 ; SI-NEXT:    s_lshl_b32 s12, s12, 24
 ; SI-NEXT:    s_lshl_b32 s13, s13, 16
@@ -172845,15 +173774,15 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_or_b32 s12, s12, s13
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
 ; SI-NEXT:    s_or_b32 s11, s12, s11
-; SI-NEXT:    v_readlane_b32 s12, v46, 17
+; SI-NEXT:    v_readlane_b32 s12, v46, 39
 ; SI-NEXT:    s_add_i32 s99, s12, 3
-; SI-NEXT:    v_readlane_b32 s13, v46, 15
-; SI-NEXT:    v_readlane_b32 s14, v46, 12
+; SI-NEXT:    v_readlane_b32 s13, v46, 37
+; SI-NEXT:    v_readlane_b32 s14, v46, 34
 ; SI-NEXT:    s_and_b32 s12, s99, 0xff
 ; SI-NEXT:    s_lshl_b32 s13, s13, 8
 ; SI-NEXT:    s_add_i32 s86, s14, 3
 ; SI-NEXT:    s_or_b32 s12, s13, s12
-; SI-NEXT:    v_readlane_b32 s13, v46, 13
+; SI-NEXT:    v_readlane_b32 s13, v46, 35
 ; SI-NEXT:    s_and_b32 s14, s86, 0xff
 ; SI-NEXT:    s_lshl_b32 s13, s13, 24
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
@@ -172861,15 +173790,15 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_or_b32 s13, s13, s14
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_or_b32 s12, s13, s12
-; SI-NEXT:    v_readlane_b32 s13, v46, 5
+; SI-NEXT:    v_readlane_b32 s13, v46, 28
 ; SI-NEXT:    s_add_i32 s13, s13, 3
-; SI-NEXT:    v_readlane_b32 s14, v46, 3
-; SI-NEXT:    v_readlane_b32 s15, v47, 62
+; SI-NEXT:    v_readlane_b32 s14, v46, 27
+; SI-NEXT:    v_readlane_b32 s15, v46, 23
 ; SI-NEXT:    s_and_b32 s13, s13, 0xff
 ; SI-NEXT:    s_lshl_b32 s14, s14, 8
 ; SI-NEXT:    s_add_i32 s15, s15, 3
 ; SI-NEXT:    s_or_b32 s13, s14, s13
-; SI-NEXT:    v_readlane_b32 s14, v47, 63
+; SI-NEXT:    v_readlane_b32 s14, v46, 24
 ; SI-NEXT:    s_and_b32 s15, s15, 0xff
 ; SI-NEXT:    s_lshl_b32 s14, s14, 24
 ; SI-NEXT:    s_lshl_b32 s15, s15, 16
@@ -172877,41 +173806,41 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_or_b32 s14, s14, s15
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
 ; SI-NEXT:    s_or_b32 s13, s14, s13
-; SI-NEXT:    v_readlane_b32 s14, v46, 2
+; SI-NEXT:    v_readlane_b32 s14, v46, 26
 ; SI-NEXT:    s_add_i32 s14, s14, 3
-; SI-NEXT:    v_readlane_b32 s15, v47, 61
-; SI-NEXT:    v_readlane_b32 s16, v47, 56
+; SI-NEXT:    v_readlane_b32 s15, v46, 22
 ; SI-NEXT:    s_and_b32 s14, s14, 0xff
 ; SI-NEXT:    s_lshl_b32 s15, s15, 8
-; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    s_add_i32 s16, s69, 3
 ; SI-NEXT:    s_or_b32 s14, s15, s14
-; SI-NEXT:    v_readlane_b32 s15, v47, 57
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s15, s15, 24
+; SI-NEXT:    s_lshl_b32 s15, s90, 24
 ; SI-NEXT:    s_lshl_b32 s16, s16, 16
 ; SI-NEXT:    s_addk_i32 s14, 0x300
 ; SI-NEXT:    s_or_b32 s15, s15, s16
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_or_b32 s14, s15, s14
-; SI-NEXT:    s_add_i32 s15, s26, 3
+; SI-NEXT:    v_readlane_b32 s15, v46, 19
+; SI-NEXT:    s_add_i32 s15, s15, 3
+; SI-NEXT:    v_readlane_b32 s4, v47, 40
 ; SI-NEXT:    s_and_b32 s15, s15, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s25, 8
-; SI-NEXT:    s_add_i32 s17, s23, 3
+; SI-NEXT:    s_lshl_b32 s16, s98, 8
+; SI-NEXT:    s_add_i32 s17, s4, 3
 ; SI-NEXT:    s_or_b32 s15, s16, s15
 ; SI-NEXT:    s_and_b32 s17, s17, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s87, 24
+; SI-NEXT:    s_lshl_b32 s16, s25, 24
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_addk_i32 s15, 0x300
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
 ; SI-NEXT:    s_or_b32 s15, s16, s15
-; SI-NEXT:    s_add_i32 s16, s20, 3
-; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v47, 54
+; SI-NEXT:    s_add_i32 s16, s27, 3
+; SI-NEXT:    v_readlane_b32 s18, v46, 17
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s70, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 55
+; SI-NEXT:    v_readlane_b32 s17, v46, 18
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
@@ -172920,66 +173849,83 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s40, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s22, 3
+; SI-NEXT:    v_readlane_b32 s16, v46, 16
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v46, 15
+; SI-NEXT:    v_readlane_b32 s18, v46, 12
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s65, 8
-; SI-NEXT:    s_add_i32 s18, s94, 3
+; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
+; SI-NEXT:    v_readlane_b32 s17, v46, 13
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
-; SI-NEXT:    s_lshl_b32 s17, s67, 24
+; SI-NEXT:    s_lshl_b32 s17, s17, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s41, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s71, 3
+; SI-NEXT:    v_readlane_b32 s16, v46, 14
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v46, 11
+; SI-NEXT:    v_readlane_b32 s18, v46, 9
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s81, 8
-; SI-NEXT:    s_add_i32 s18, s55, 3
+; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
+; SI-NEXT:    v_readlane_b32 s17, v46, 10
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
-; SI-NEXT:    s_lshl_b32 s17, s97, 24
+; SI-NEXT:    s_lshl_b32 s17, s17, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s42, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s98, 3
+; SI-NEXT:    v_readlane_b32 s16, v46, 8
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v46, 7
+; SI-NEXT:    v_readlane_b32 s18, v46, 3
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s78, 8
-; SI-NEXT:    s_add_i32 s18, s31, 3
+; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
+; SI-NEXT:    v_readlane_b32 s17, v46, 4
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
-; SI-NEXT:    s_lshl_b32 s17, s35, 24
+; SI-NEXT:    s_lshl_b32 s17, s17, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s43, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s82, 3
+; SI-NEXT:    v_readlane_b32 s16, v46, 6
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v46, 5
+; SI-NEXT:    v_readlane_b32 s18, v46, 1
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s37, 8
-; SI-NEXT:    s_add_i32 s18, s90, 3
+; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
+; SI-NEXT:    v_readlane_b32 s17, v46, 2
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
-; SI-NEXT:    s_lshl_b32 s17, s79, 24
+; SI-NEXT:    s_lshl_b32 s17, s17, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s44, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s96, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 46
-; SI-NEXT:    v_readlane_b32 s18, v47, 45
+; SI-NEXT:    v_readlane_b32 s16, v46, 0
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v47, 63
+; SI-NEXT:    v_readlane_b32 s18, v47, 59
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 44
+; SI-NEXT:    v_readlane_b32 s17, v47, 60
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
@@ -172988,12 +173934,15 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s45, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s21, 3
+; SI-NEXT:    v_readlane_b32 s16, v47, 62
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v47, 61
+; SI-NEXT:    v_readlane_b32 s18, v47, 57
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s76, 8
-; SI-NEXT:    s_add_i32 s18, s70, 3
+; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 50
+; SI-NEXT:    v_readlane_b32 s17, v47, 58
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
@@ -173002,14 +173951,15 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s46, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s80, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 49
-; SI-NEXT:    v_readlane_b32 s18, v47, 48
+; SI-NEXT:    v_readlane_b32 s16, v47, 56
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v47, 55
+; SI-NEXT:    v_readlane_b32 s18, v47, 53
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 47
+; SI-NEXT:    v_readlane_b32 s17, v47, 54
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
@@ -173037,8 +173987,8 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_add_i32 s56, s16, 0x3000000
 ; SI-NEXT:    v_readlane_b32 s16, v47, 14
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 53
-; SI-NEXT:    v_readlane_b32 s18, v47, 52
+; SI-NEXT:    v_readlane_b32 s17, v47, 52
+; SI-NEXT:    v_readlane_b32 s18, v47, 50
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
@@ -173052,12 +174002,11 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s57, s16, 0x3000000
-; SI-NEXT:    v_readlane_b32 s16, v47, 26
+; SI-NEXT:    v_readlane_b32 s16, v47, 45
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 25
 ; SI-NEXT:    v_readlane_b32 s18, v47, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_lshl_b32 s17, s92, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    v_readlane_b32 s17, v47, 23
@@ -173086,32 +174035,32 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s59, s16, 0x3000000
-; SI-NEXT:    v_readlane_b32 s16, v47, 34
+; SI-NEXT:    v_readlane_b32 s16, v47, 46
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 33
-; SI-NEXT:    v_readlane_b32 s18, v47, 32
+; SI-NEXT:    v_readlane_b32 s17, v47, 44
+; SI-NEXT:    v_readlane_b32 s18, v47, 41
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 31
+; SI-NEXT:    v_readlane_b32 s4, v47, 29
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
-; SI-NEXT:    s_lshl_b32 s17, s17, 24
+; SI-NEXT:    s_lshl_b32 s17, s4, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s60, s16, 0x3000000
-; SI-NEXT:    v_readlane_b32 s16, v47, 30
+; SI-NEXT:    v_readlane_b32 s16, v47, 28
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 29
-; SI-NEXT:    v_readlane_b32 s18, v47, 28
+; SI-NEXT:    v_readlane_b32 s17, v47, 27
+; SI-NEXT:    v_readlane_b32 s18, v47, 26
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 27
+; SI-NEXT:    v_readlane_b32 s17, v47, 25
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
@@ -173120,14 +174069,15 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s61, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s69, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 41
-; SI-NEXT:    v_readlane_b32 s18, v47, 40
+; SI-NEXT:    v_readlane_b32 s16, v47, 49
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v47, 47
+; SI-NEXT:    v_readlane_b32 s18, v47, 43
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 39
+; SI-NEXT:    v_readlane_b32 s17, v47, 42
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
@@ -173136,15 +174086,15 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s62, s16, 0x3000000
-; SI-NEXT:    v_readlane_b32 s16, v47, 38
+; SI-NEXT:    v_readlane_b32 s16, v47, 33
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 37
-; SI-NEXT:    v_readlane_b32 s18, v47, 36
+; SI-NEXT:    v_readlane_b32 s17, v47, 32
+; SI-NEXT:    v_readlane_b32 s18, v47, 31
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 35
+; SI-NEXT:    v_readlane_b32 s17, v47, 30
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
@@ -173173,15 +174123,15 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    v_readlane_b32 s16, v47, 1
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    v_readlane_b32 s17, v47, 0
-; SI-NEXT:    v_readlane_b32 s18, v47, 43
+; SI-NEXT:    v_readlane_b32 s18, v47, 48
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 42
+; SI-NEXT:    v_readlane_b32 s4, v47, 34
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
-; SI-NEXT:    s_lshl_b32 s17, s17, 24
+; SI-NEXT:    s_lshl_b32 s17, s4, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
@@ -173219,191 +174169,154 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
-; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    s_add_i32 s75, s16, 0x3000000
-; SI-NEXT:    s_lshr_b64 s[16:17], s[74:75], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 26
-; SI-NEXT:    v_writelane_b32 v46, s17, 27
-; SI-NEXT:    s_lshr_b64 s[16:17], s[72:73], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 28
-; SI-NEXT:    v_writelane_b32 v46, s17, 29
-; SI-NEXT:    s_lshr_b64 s[16:17], s[62:63], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 30
-; SI-NEXT:    v_writelane_b32 v46, s17, 31
-; SI-NEXT:    s_lshr_b64 s[16:17], s[60:61], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 32
-; SI-NEXT:    v_writelane_b32 v46, s17, 33
-; SI-NEXT:    s_lshr_b64 s[16:17], s[58:59], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 34
-; SI-NEXT:    v_writelane_b32 v46, s17, 35
-; SI-NEXT:    s_lshr_b64 s[16:17], s[56:57], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 36
-; SI-NEXT:    v_writelane_b32 v46, s17, 37
-; SI-NEXT:    s_lshr_b64 s[16:17], s[46:47], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 38
-; SI-NEXT:    v_writelane_b32 v46, s17, 39
-; SI-NEXT:    s_lshr_b64 s[16:17], s[44:45], 16
-; SI-NEXT:    s_add_i32 s10, s10, 0x3000000
-; SI-NEXT:    s_add_i32 s11, s11, 0x3000000
+; SI-NEXT:    s_add_i32 s34, s6, 0x3000000
+; SI-NEXT:    s_add_i32 s35, s7, 0x3000000
+; SI-NEXT:    s_add_i32 s36, s8, 0x3000000
+; SI-NEXT:    s_add_i32 s37, s9, 0x3000000
+; SI-NEXT:    s_add_i32 s94, s10, 0x3000000
+; SI-NEXT:    s_add_i32 s95, s11, 0x3000000
 ; SI-NEXT:    s_add_i32 s12, s12, 0x3000000
 ; SI-NEXT:    s_add_i32 s13, s13, 0x3000000
 ; SI-NEXT:    s_add_i32 s14, s14, 0x3000000
 ; SI-NEXT:    s_add_i32 s15, s15, 0x3000000
-; SI-NEXT:    v_writelane_b32 v46, s16, 40
-; SI-NEXT:    s_add_i32 s4, s4, 0x3000000
-; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
-; SI-NEXT:    s_add_i32 s6, s6, 0x3000000
-; SI-NEXT:    s_add_i32 s7, s7, 0x3000000
-; SI-NEXT:    s_add_i32 s8, s8, 0x3000000
-; SI-NEXT:    s_add_i32 s9, s9, 0x3000000
-; SI-NEXT:    v_writelane_b32 v46, s17, 41
-; SI-NEXT:    s_lshr_b64 s[16:17], s[42:43], 16
-; SI-NEXT:    s_lshr_b64 s[38:39], s[40:41], 16
-; SI-NEXT:    s_lshr_b64 s[48:49], s[14:15], 16
-; SI-NEXT:    s_lshr_b64 s[50:51], s[12:13], 16
-; SI-NEXT:    s_lshr_b64 s[52:53], s[10:11], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 42
-; SI-NEXT:    s_lshr_b64 s[54:55], s[8:9], 16
-; SI-NEXT:    s_lshr_b64 s[64:65], s[6:7], 16
-; SI-NEXT:    s_lshr_b64 s[66:67], s[4:5], 16
-; SI-NEXT:    s_lshr_b32 s77, s75, 16
-; SI-NEXT:    s_lshr_b32 s68, s73, 16
-; SI-NEXT:    s_lshr_b32 s88, s63, 16
-; SI-NEXT:    s_lshr_b32 s84, s61, 16
-; SI-NEXT:    s_lshr_b32 s89, s59, 16
-; SI-NEXT:    s_lshr_b32 s91, s57, 16
-; SI-NEXT:    s_lshr_b32 s93, s47, 16
-; SI-NEXT:    s_lshr_b32 s95, s45, 16
-; SI-NEXT:    s_lshr_b32 s30, s43, 16
-; SI-NEXT:    s_lshr_b32 s34, s41, 16
-; SI-NEXT:    s_lshr_b32 s36, s15, 16
-; SI-NEXT:    s_lshr_b32 s39, s13, 16
-; SI-NEXT:    s_lshr_b32 s49, s11, 16
-; SI-NEXT:    s_lshr_b32 s51, s9, 16
-; SI-NEXT:    s_lshr_b32 s53, s7, 16
-; SI-NEXT:    s_lshr_b32 s92, s5, 16
-; SI-NEXT:    v_writelane_b32 v46, s17, 43
-; SI-NEXT:  .LBB93_3: ; %end
+; SI-NEXT:    s_or_b32 s16, s17, s16
+; SI-NEXT:    s_add_i32 s97, s5, 0x3000000
+; SI-NEXT:    s_add_i32 s75, s16, 0x3000000
+; SI-NEXT:    s_lshr_b64 s[76:77], s[72:73], 16
+; SI-NEXT:    s_lshr_b64 s[10:11], s[58:59], 16
+; SI-NEXT:    s_lshr_b64 s[4:5], s[56:57], 16
+; SI-NEXT:    s_lshr_b64 s[6:7], s[46:47], 16
+; SI-NEXT:    s_lshr_b64 s[8:9], s[40:41], 16
+; SI-NEXT:    s_lshr_b64 s[38:39], s[14:15], 16
+; SI-NEXT:    s_lshr_b64 s[48:49], s[12:13], 16
+; SI-NEXT:    s_lshr_b64 s[50:51], s[94:95], 16
+; SI-NEXT:    s_lshr_b64 s[52:53], s[36:37], 16
+; SI-NEXT:    s_lshr_b64 s[54:55], s[34:35], 16
+; SI-NEXT:    s_lshr_b64 s[20:21], s[74:75], 16
+; SI-NEXT:    s_lshr_b64 s[78:79], s[62:63], 16
+; SI-NEXT:    s_lshr_b64 s[80:81], s[60:61], 16
+; SI-NEXT:    s_lshr_b64 s[88:89], s[44:45], 16
+; SI-NEXT:    s_lshr_b64 s[84:85], s[42:43], 16
+; SI-NEXT:    s_lshr_b64 s[64:65], s[96:97], 16
+; SI-NEXT:    s_lshr_b32 s23, s75, 16
+; SI-NEXT:    s_lshr_b32 s77, s73, 16
+; SI-NEXT:    s_lshr_b32 s5, s63, 16
+; SI-NEXT:    s_lshr_b32 s91, s61, 16
+; SI-NEXT:    s_lshr_b32 s93, s59, 16
+; SI-NEXT:    s_lshr_b32 s11, s57, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s47, 16
+; SI-NEXT:    s_lshr_b32 s30, s45, 16
+; SI-NEXT:    s_lshr_b32 s7, s43, 16
+; SI-NEXT:    s_lshr_b32 s9, s41, 16
+; SI-NEXT:    s_lshr_b32 s39, s15, 16
+; SI-NEXT:    s_lshr_b32 s49, s13, 16
+; SI-NEXT:    s_lshr_b32 s51, s95, 16
+; SI-NEXT:    s_lshr_b32 s53, s37, 16
+; SI-NEXT:    s_lshr_b32 s55, s35, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s97, 16
+; SI-NEXT:  .LBB93_5: ; %end
 ; SI-NEXT:    buffer_load_dword v44, off, s[0:3], s32 offset:336 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v43, off, s[0:3], s32 offset:340 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:344 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:348 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:352 ; 4-byte Folded Reload
-; SI-NEXT:    v_readlane_b32 s18, v46, 26
 ; SI-NEXT:    s_and_b32 s17, s74, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v46, 27
-; SI-NEXT:    s_lshl_b32 s18, s18, 16
+; SI-NEXT:    s_lshl_b32 s18, s20, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_and_b32 s18, s75, 0xffff
-; SI-NEXT:    s_lshl_b32 s19, s77, 16
-; SI-NEXT:    v_readlane_b32 s20, v46, 28
+; SI-NEXT:    s_lshl_b32 s19, s23, 16
 ; SI-NEXT:    s_or_b32 s18, s18, s19
 ; SI-NEXT:    s_and_b32 s19, s72, 0xffff
-; SI-NEXT:    v_readlane_b32 s21, v46, 29
-; SI-NEXT:    s_lshl_b32 s20, s20, 16
+; SI-NEXT:    s_lshl_b32 s20, s76, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s20
 ; SI-NEXT:    s_and_b32 s20, s73, 0xffff
-; SI-NEXT:    s_lshl_b32 s21, s68, 16
-; SI-NEXT:    v_readlane_b32 s22, v46, 30
+; SI-NEXT:    s_lshl_b32 s21, s77, 16
 ; SI-NEXT:    s_or_b32 s20, s20, s21
 ; SI-NEXT:    s_and_b32 s21, s62, 0xffff
-; SI-NEXT:    v_readlane_b32 s23, v46, 31
-; SI-NEXT:    s_lshl_b32 s22, s22, 16
+; SI-NEXT:    s_lshl_b32 s22, s78, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s22
 ; SI-NEXT:    s_and_b32 s22, s63, 0xffff
-; SI-NEXT:    s_lshl_b32 s23, s88, 16
-; SI-NEXT:    v_readlane_b32 s24, v46, 32
+; SI-NEXT:    s_lshl_b32 s23, s5, 16
 ; SI-NEXT:    s_or_b32 s22, s22, s23
 ; SI-NEXT:    s_and_b32 s23, s60, 0xffff
-; SI-NEXT:    v_readlane_b32 s25, v46, 33
-; SI-NEXT:    s_lshl_b32 s24, s24, 16
+; SI-NEXT:    s_lshl_b32 s24, s80, 16
 ; SI-NEXT:    s_or_b32 s23, s23, s24
 ; SI-NEXT:    s_and_b32 s24, s61, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s84, 16
-; SI-NEXT:    v_readlane_b32 s26, v46, 34
+; SI-NEXT:    s_lshl_b32 s25, s91, 16
 ; SI-NEXT:    s_or_b32 s24, s24, s25
 ; SI-NEXT:    s_and_b32 s25, s58, 0xffff
-; SI-NEXT:    v_readlane_b32 s27, v46, 35
-; SI-NEXT:    s_lshl_b32 s26, s26, 16
+; SI-NEXT:    s_lshl_b32 s26, s10, 16
 ; SI-NEXT:    s_or_b32 s25, s25, s26
 ; SI-NEXT:    s_and_b32 s26, s59, 0xffff
-; SI-NEXT:    s_lshl_b32 s27, s89, 16
-; SI-NEXT:    v_readlane_b32 s28, v46, 36
+; SI-NEXT:    s_lshl_b32 s27, s93, 16
 ; SI-NEXT:    s_or_b32 s26, s26, s27
 ; SI-NEXT:    s_and_b32 s27, s56, 0xffff
-; SI-NEXT:    v_readlane_b32 s29, v46, 37
-; SI-NEXT:    s_lshl_b32 s28, s28, 16
+; SI-NEXT:    s_lshl_b32 s28, s4, 16
 ; SI-NEXT:    s_or_b32 s27, s27, s28
 ; SI-NEXT:    s_and_b32 s28, s57, 0xffff
-; SI-NEXT:    s_lshl_b32 s29, s91, 16
-; SI-NEXT:    v_readlane_b32 s56, v46, 38
+; SI-NEXT:    s_lshl_b32 s29, s11, 16
 ; SI-NEXT:    s_or_b32 s28, s28, s29
 ; SI-NEXT:    s_and_b32 s29, s46, 0xffff
-; SI-NEXT:    v_readlane_b32 s57, v46, 39
-; SI-NEXT:    s_lshl_b32 s46, s56, 16
+; SI-NEXT:    s_lshl_b32 s46, s6, 16
 ; SI-NEXT:    s_or_b32 s29, s29, s46
 ; SI-NEXT:    s_and_b32 s46, s47, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s93, 16
-; SI-NEXT:    v_readlane_b32 s56, v46, 40
+; SI-NEXT:    s_lshl_b32 s47, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s46, s46, s47
 ; SI-NEXT:    s_and_b32 s44, s44, 0xffff
-; SI-NEXT:    v_readlane_b32 s57, v46, 41
-; SI-NEXT:    s_lshl_b32 s47, s56, 16
+; SI-NEXT:    s_lshl_b32 s47, s88, 16
 ; SI-NEXT:    s_or_b32 s44, s44, s47
 ; SI-NEXT:    s_and_b32 s45, s45, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s95, 16
-; SI-NEXT:    v_readlane_b32 s56, v46, 42
+; SI-NEXT:    s_lshl_b32 s47, s30, 16
 ; SI-NEXT:    s_or_b32 s45, s45, s47
 ; SI-NEXT:    s_and_b32 s42, s42, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s56, 16
+; SI-NEXT:    s_lshl_b32 s47, s84, 16
 ; SI-NEXT:    s_or_b32 s42, s42, s47
 ; SI-NEXT:    s_and_b32 s43, s43, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s30, 16
+; SI-NEXT:    s_lshl_b32 s47, s7, 16
 ; SI-NEXT:    s_or_b32 s43, s43, s47
 ; SI-NEXT:    s_and_b32 s40, s40, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s38, 16
+; SI-NEXT:    s_lshl_b32 s47, s8, 16
 ; SI-NEXT:    s_or_b32 s40, s40, s47
 ; SI-NEXT:    s_and_b32 s41, s41, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s34, 16
+; SI-NEXT:    s_lshl_b32 s47, s9, 16
 ; SI-NEXT:    s_or_b32 s41, s41, s47
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s48, 16
+; SI-NEXT:    s_lshl_b32 s47, s38, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s47
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s36, 16
+; SI-NEXT:    s_lshl_b32 s47, s39, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s47
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s50, 16
+; SI-NEXT:    s_lshl_b32 s47, s48, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s47
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s39, 16
+; SI-NEXT:    s_lshl_b32 s47, s49, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s47
-; SI-NEXT:    s_and_b32 s10, s10, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s52, 16
+; SI-NEXT:    s_and_b32 s10, s94, 0xffff
+; SI-NEXT:    s_lshl_b32 s47, s50, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s47
-; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s49, 16
+; SI-NEXT:    s_and_b32 s11, s95, 0xffff
+; SI-NEXT:    s_lshl_b32 s47, s51, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s47
-; SI-NEXT:    s_and_b32 s8, s8, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s54, 16
+; SI-NEXT:    s_and_b32 s8, s36, 0xffff
+; SI-NEXT:    s_lshl_b32 s47, s52, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s47
-; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s51, 16
+; SI-NEXT:    s_and_b32 s9, s37, 0xffff
+; SI-NEXT:    s_lshl_b32 s47, s53, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s47
-; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s64, 16
+; SI-NEXT:    s_and_b32 s6, s34, 0xffff
+; SI-NEXT:    s_lshl_b32 s47, s54, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s47
-; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s53, 16
+; SI-NEXT:    s_and_b32 s7, s35, 0xffff
+; SI-NEXT:    s_lshl_b32 s47, s55, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s47
-; SI-NEXT:    s_and_b32 s4, s4, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s66, 16
-; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s92, 16
+; SI-NEXT:    s_and_b32 s4, s96, 0xffff
+; SI-NEXT:    s_lshl_b32 s47, s64, 16
+; SI-NEXT:    s_and_b32 s5, s97, 0xffff
+; SI-NEXT:    s_lshl_b32 s16, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s47
 ; SI-NEXT:    s_or_b32 s5, s5, s16
 ; SI-NEXT:    v_readlane_b32 s30, v45, 34
-; SI-NEXT:    v_readlane_b32 s57, v46, 43
 ; SI-NEXT:    v_mov_b32_e32 v0, s17
 ; SI-NEXT:    v_mov_b32_e32 v1, s18
 ; SI-NEXT:    v_mov_b32_e32 v2, s19
@@ -173478,74 +174391,6 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB93_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 26
-; SI-NEXT:    v_writelane_b32 v46, s5, 27
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    v_writelane_b32 v46, s4, 28
-; SI-NEXT:    v_writelane_b32 v46, s5, 29
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 30
-; SI-NEXT:    v_writelane_b32 v46, s5, 31
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 32
-; SI-NEXT:    v_writelane_b32 v46, s5, 33
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 34
-; SI-NEXT:    v_writelane_b32 v46, s5, 35
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 36
-; SI-NEXT:    v_writelane_b32 v46, s5, 37
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 38
-; SI-NEXT:    v_writelane_b32 v46, s5, 39
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 40
-; SI-NEXT:    v_writelane_b32 v46, s5, 41
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 42
-; SI-NEXT:    v_writelane_b32 v46, s5, 43
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_branch .LBB93_2
 ;
 ; VI-LABEL: bitcast_v128i8_to_v64f16_scalar:
 ; VI:       ; %bb.0:
@@ -173762,7 +174607,7 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; VI-NEXT:    buffer_load_ushort v0, off, s[0:3], s32 offset:16
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:492 ; 4-byte Folded Spill
-; VI-NEXT:    s_cbranch_scc0 .LBB93_4
+; VI-NEXT:    s_cbranch_scc0 .LBB93_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; VI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:632 ; 4-byte Folded Spill
@@ -173982,12 +174827,32 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v35, v43
 ; VI-NEXT:    v_perm_b32 v43, v44, v43, s4
 ; VI-NEXT:    v_or_b32_e32 v31, v43, v31
+; VI-NEXT:    s_mov_b64 s[4:5], 0
 ; VI-NEXT:    v_mov_b32_e32 v43, v39
 ; VI-NEXT:    v_mov_b32_e32 v39, v34
 ; VI-NEXT:    v_mov_b32_e32 v34, v52
 ; VI-NEXT:    v_mov_b32_e32 v52, v45
-; VI-NEXT:    s_cbranch_execnz .LBB93_3
-; VI-NEXT:  .LBB93_2: ; %cmp.true
+; VI-NEXT:    s_branch .LBB93_3
+; VI-NEXT:  .LBB93_2:
+; VI-NEXT:    v_mov_b32_e32 v43, v39
+; VI-NEXT:    v_mov_b32_e32 v52, v34
+; VI-NEXT:    v_mov_b32_e32 v39, v33
+; VI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:512 ; 4-byte Folded Reload
+; VI-NEXT:    v_mov_b32_e32 v34, v53
+; VI-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:508 ; 4-byte Folded Reload
+; VI-NEXT:    buffer_load_dword v48, off, s[0:3], s32 offset:516 ; 4-byte Folded Reload
+; VI-NEXT:    v_mov_b32_e32 v62, v2
+; VI-NEXT:    v_mov_b32_e32 v35, v1
+; VI-NEXT:    v_mov_b32_e32 v55, v57
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; VI-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; VI-NEXT:  .LBB93_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB93_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:468 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:476 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
@@ -174402,7 +175267,7 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; VI-NEXT:    v_or_b32_sdwa v27, v46, v27 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v18, vcc, 0x3000000, v18
 ; VI-NEXT:    v_add_u32_e32 v27, vcc, 0x3000000, v27
-; VI-NEXT:  .LBB93_3: ; %end
+; VI-NEXT:  .LBB93_5: ; %end
 ; VI-NEXT:    buffer_load_dword v63, off, s[0:3], s32 offset:336 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v62, off, s[0:3], s32 offset:340 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v61, off, s[0:3], s32 offset:344 ; 4-byte Folded Reload
@@ -174421,20 +175286,6 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; VI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:396 ; 4-byte Folded Reload
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB93_4:
-; VI-NEXT:    v_mov_b32_e32 v43, v39
-; VI-NEXT:    v_mov_b32_e32 v52, v34
-; VI-NEXT:    v_mov_b32_e32 v39, v33
-; VI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:512 ; 4-byte Folded Reload
-; VI-NEXT:    v_mov_b32_e32 v34, v53
-; VI-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:508 ; 4-byte Folded Reload
-; VI-NEXT:    buffer_load_dword v48, off, s[0:3], s32 offset:516 ; 4-byte Folded Reload
-; VI-NEXT:    v_mov_b32_e32 v62, v2
-; VI-NEXT:    v_mov_b32_e32 v35, v1
-; VI-NEXT:    v_mov_b32_e32 v55, v57
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; VI-NEXT:    s_branch .LBB93_2
 ;
 ; GFX9-LABEL: bitcast_v128i8_to_v64f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -174926,8 +175777,10 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; GFX9-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
 ; GFX9-NEXT:  .LBB93_3: ; %Flow
 ; GFX9-NEXT:    buffer_load_dword v36, off, s[0:3], s32 offset:400 ; 4-byte Folded Reload
-; GFX9-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GFX9-NEXT:    s_cbranch_vccnz .LBB93_5
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB93_5
 ; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_waitcnt vmcnt(5)
 ; GFX9-NEXT:    v_add_u32_e32 v0, 3, v48
@@ -175479,7 +176332,7 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v31
 ; GFX11-TRUE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB93_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB93_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v8, 0xc0c0004 :: v_dual_lshlrev_b32 v13, 8, v86
@@ -175631,9 +176484,18 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, s77
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e64 v30.h, v183.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v31.h, v41.l
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB93_3
-; GFX11-TRUE16-NEXT:  .LBB93_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB93_3
+; GFX11-TRUE16-NEXT:  .LBB93_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; GFX11-TRUE16-NEXT:  .LBB93_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB93_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v0, 3, v180
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 3, v166
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v2, 3, v182
@@ -175862,16 +176724,12 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v29.h, v102.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e64 v30.h, v129.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e64 v31.h, v133.l
-; GFX11-TRUE16-NEXT:  .LBB93_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB93_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; 8-byte Folded Reload
 ; GFX11-TRUE16-NEXT:    scratch_load_b32 v41, off, s32 offset:320
 ; GFX11-TRUE16-NEXT:    scratch_load_b32 v40, off, s32 offset:324
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB93_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; GFX11-TRUE16-NEXT:    s_branch .LBB93_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v128i8_to_v64f16_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -175995,7 +176853,7 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v31
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB93_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB93_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, s74, 0xff
@@ -176186,9 +177044,18 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, s76
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v31, v31, 16, v40
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB93_3
-; GFX11-FAKE16-NEXT:  .LBB93_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB93_3
+; GFX11-FAKE16-NEXT:  .LBB93_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; GFX11-FAKE16-NEXT:  .LBB93_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB93_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v0, 3, v182
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 3, v180
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v3, 3, v178
@@ -176449,14 +177316,10 @@ define inreg <64 x half> @bitcast_v128i8_to_v64f16_scalar(<128 x i8> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v29, v150, 16, v29
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v30, v30, 16, v34
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v31, v31, 16, v35
-; GFX11-FAKE16-NEXT:  .LBB93_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB93_5: ; %end
 ; GFX11-FAKE16-NEXT:    scratch_load_b32 v40, off, s32 offset:320 ; 4-byte Folded Reload
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB93_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; GFX11-FAKE16-NEXT:    s_branch .LBB93_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -181308,164 +182171,165 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s8, s22, 16
 ; SI-NEXT:    v_writelane_b32 v37, s7, 3
 ; SI-NEXT:    s_lshr_b32 s9, s24, 16
-; SI-NEXT:    v_readfirstlane_b32 s34, v18
-; SI-NEXT:    v_readfirstlane_b32 s83, v17
-; SI-NEXT:    v_readfirstlane_b32 s70, v16
-; SI-NEXT:    v_readfirstlane_b32 s80, v15
-; SI-NEXT:    v_readfirstlane_b32 s66, v14
-; SI-NEXT:    v_readfirstlane_b32 s68, v13
-; SI-NEXT:    v_readfirstlane_b32 s54, v12
-; SI-NEXT:    v_readfirstlane_b32 s64, v11
-; SI-NEXT:    v_readfirstlane_b32 s51, v10
-; SI-NEXT:    v_readfirstlane_b32 s53, v9
-; SI-NEXT:    v_readfirstlane_b32 s39, v8
-; SI-NEXT:    v_readfirstlane_b32 s49, v7
-; SI-NEXT:    v_readfirstlane_b32 s35, v6
-; SI-NEXT:    v_readfirstlane_b32 s37, v5
-; SI-NEXT:    v_readfirstlane_b32 s94, v4
-; SI-NEXT:    v_readfirstlane_b32 s31, v3
-; SI-NEXT:    v_readfirstlane_b32 s91, v2
-; SI-NEXT:    v_readfirstlane_b32 s93, v1
+; SI-NEXT:    v_readfirstlane_b32 s30, v18
+; SI-NEXT:    v_readfirstlane_b32 s71, v17
+; SI-NEXT:    v_readfirstlane_b32 s66, v16
+; SI-NEXT:    v_readfirstlane_b32 s68, v15
+; SI-NEXT:    v_readfirstlane_b32 s54, v14
+; SI-NEXT:    v_readfirstlane_b32 s64, v13
+; SI-NEXT:    v_readfirstlane_b32 s50, v12
+; SI-NEXT:    v_readfirstlane_b32 s52, v11
+; SI-NEXT:    v_readfirstlane_b32 s39, v10
+; SI-NEXT:    v_readfirstlane_b32 s49, v9
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v8
+; SI-NEXT:    v_readfirstlane_b32 s37, v7
+; SI-NEXT:    v_readfirstlane_b32 s31, v6
+; SI-NEXT:    v_readfirstlane_b32 s35, v5
+; SI-NEXT:    v_readfirstlane_b32 s92, v4
+; SI-NEXT:    v_readfirstlane_b32 s95, v3
+; SI-NEXT:    v_readfirstlane_b32 s89, v2
+; SI-NEXT:    v_readfirstlane_b32 s91, v1
 ; SI-NEXT:    v_writelane_b32 v37, s8, 4
-; SI-NEXT:    s_lshr_b32 s90, s29, 16
+; SI-NEXT:    s_lshr_b32 s88, s29, 16
 ; SI-NEXT:    s_lshr_b32 s11, s28, 16
-; SI-NEXT:    s_lshr_b32 s89, s27, 16
+; SI-NEXT:    s_lshr_b32 s79, s27, 16
 ; SI-NEXT:    s_lshr_b32 s10, s26, 16
-; SI-NEXT:    s_lshr_b32 s88, s25, 16
-; SI-NEXT:    s_lshr_b32 s79, s23, 16
-; SI-NEXT:    s_lshr_b32 s86, s21, 16
-; SI-NEXT:    s_lshr_b32 s77, s19, 16
-; SI-NEXT:    s_lshr_b32 s76, s17, 16
-; SI-NEXT:    s_lshr_b32 s82, s34, 16
-; SI-NEXT:    s_lshr_b32 s84, s83, 16
-; SI-NEXT:    s_lshr_b32 s71, s70, 16
-; SI-NEXT:    s_lshr_b32 s81, s80, 16
+; SI-NEXT:    s_lshr_b32 s78, s25, 16
+; SI-NEXT:    s_lshr_b32 s77, s23, 16
+; SI-NEXT:    s_lshr_b32 s76, s21, 16
+; SI-NEXT:    s_lshr_b32 s99, s19, 16
+; SI-NEXT:    s_lshr_b32 s98, s17, 16
+; SI-NEXT:    s_lshr_b32 s70, s30, 16
+; SI-NEXT:    s_lshr_b32 s80, s71, 16
 ; SI-NEXT:    s_lshr_b32 s67, s66, 16
-; SI-NEXT:    s_lshr_b32 s38, s68, 16
+; SI-NEXT:    s_lshr_b32 s82, s68, 16
 ; SI-NEXT:    s_lshr_b32 s55, s54, 16
-; SI-NEXT:    s_lshr_b32 s99, s64, 16
-; SI-NEXT:    s_lshr_b32 s52, s51, 16
-; SI-NEXT:    s_lshr_b32 s69, s53, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s64, 16
+; SI-NEXT:    s_lshr_b32 s51, s50, 16
+; SI-NEXT:    s_lshr_b32 s87, s52, 16
 ; SI-NEXT:    s_lshr_b32 s48, s39, 16
-; SI-NEXT:    s_lshr_b32 s98, s49, 16
-; SI-NEXT:    s_lshr_b32 s36, s35, 16
-; SI-NEXT:    s_lshr_b32 s65, s37, 16
-; SI-NEXT:    s_lshr_b32 s95, s94, 16
-; SI-NEXT:    s_lshr_b32 s85, s31, 16
-; SI-NEXT:    s_lshr_b32 s92, s91, 16
-; SI-NEXT:    s_lshr_b32 s30, s93, 16
+; SI-NEXT:    s_lshr_b32 s65, s49, 16
+; SI-NEXT:    s_lshr_b32 s36, vcc_hi, 16
+; SI-NEXT:    s_lshr_b32 s86, s37, 16
+; SI-NEXT:    s_lshr_b32 s34, s31, 16
+; SI-NEXT:    s_lshr_b32 s53, s35, 16
+; SI-NEXT:    s_lshr_b32 s93, s92, 16
+; SI-NEXT:    s_lshr_b32 s81, s95, 16
+; SI-NEXT:    s_lshr_b32 s90, s89, 16
+; SI-NEXT:    s_lshr_b32 s94, s91, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v19
 ; SI-NEXT:    v_writelane_b32 v37, s9, 5
-; SI-NEXT:    s_mov_b32 s97, s16
+; SI-NEXT:    s_mov_b32 s85, s16
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_writelane_b32 v37, s10, 6
 ; SI-NEXT:    v_writelane_b32 v37, s11, 7
 ; SI-NEXT:    ; implicit-def: $vgpr36 : SGPR spill to VGPR lane
 ; SI-NEXT:    ; implicit-def: $vgpr35 : SGPR spill to VGPR lane
-; SI-NEXT:    s_cbranch_scc0 .LBB95_3
+; SI-NEXT:    s_cbranch_scc0 .LBB95_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_and_b32 s4, s97, 0xffff
+; SI-NEXT:    s_and_b32 s4, s85, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s74, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s76, 16
+; SI-NEXT:    s_lshl_b32 s5, s98, 16
 ; SI-NEXT:    s_or_b32 s75, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s72, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s77, 16
+; SI-NEXT:    s_lshl_b32 s5, s99, 16
 ; SI-NEXT:    s_or_b32 s73, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s62, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s76, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s8, 16
 ; SI-NEXT:    s_or_b32 s58, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s79, 16
+; SI-NEXT:    s_lshl_b32 s5, s77, 16
 ; SI-NEXT:    s_or_b32 s59, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s9, 16
 ; SI-NEXT:    s_or_b32 s56, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s88, 16
+; SI-NEXT:    s_lshl_b32 s5, s78, 16
 ; SI-NEXT:    s_or_b32 s57, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s10, 16
 ; SI-NEXT:    s_or_b32 s60, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s89, 16
+; SI-NEXT:    s_lshl_b32 s5, s79, 16
 ; SI-NEXT:    s_or_b32 s61, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s11, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s90, 16
+; SI-NEXT:    s_lshl_b32 s5, s88, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
-; SI-NEXT:    s_and_b32 s4, s93, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
-; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s91, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s92, 16
+; SI-NEXT:    s_lshl_b32 s5, s94, 16
+; SI-NEXT:    s_or_b32 s44, s4, s5
+; SI-NEXT:    s_and_b32 s4, s89, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s90, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_and_b32 s4, s95, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
-; SI-NEXT:    s_and_b32 s4, s94, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s95, 16
+; SI-NEXT:    s_and_b32 s4, s92, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s93, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
-; SI-NEXT:    s_and_b32 s4, s37, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s65, 16
-; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s36, 16
+; SI-NEXT:    s_lshl_b32 s5, s53, 16
+; SI-NEXT:    s_or_b32 s40, s4, s5
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
-; SI-NEXT:    s_and_b32 s4, s49, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_and_b32 s4, s37, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s14, s4, s5
-; SI-NEXT:    s_and_b32 s4, s39, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s48, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s36, 16
 ; SI-NEXT:    s_or_b32 s15, s4, s5
-; SI-NEXT:    s_and_b32 s4, s53, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_and_b32 s4, s49, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s65, 16
 ; SI-NEXT:    s_or_b32 s12, s4, s5
-; SI-NEXT:    s_and_b32 s4, s51, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s52, 16
+; SI-NEXT:    s_and_b32 s4, s39, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s48, 16
 ; SI-NEXT:    s_or_b32 s13, s4, s5
-; SI-NEXT:    s_and_b32 s4, s64, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_and_b32 s4, s52, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s10, s4, s5
-; SI-NEXT:    s_and_b32 s4, s54, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s55, 16
+; SI-NEXT:    s_and_b32 s4, s50, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s51, 16
 ; SI-NEXT:    s_or_b32 s11, s4, s5
-; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s38, 16
+; SI-NEXT:    s_and_b32 s4, s64, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s8, s4, s5
-; SI-NEXT:    s_and_b32 s4, s66, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s67, 16
+; SI-NEXT:    s_and_b32 s4, s54, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s55, 16
 ; SI-NEXT:    s_lshr_b32 s16, s75, 8
 ; SI-NEXT:    s_or_b32 s9, s4, s5
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_and_b32 s4, s68, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    v_writelane_b32 v35, s16, 2
 ; SI-NEXT:    s_lshr_b32 s16, s73, 8
 ; SI-NEXT:    s_or_b32 s6, s4, s5
-; SI-NEXT:    s_and_b32 s4, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_and_b32 s4, s66, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s67, 16
 ; SI-NEXT:    v_writelane_b32 v35, s16, 1
 ; SI-NEXT:    s_lshr_b32 s16, s63, 8
 ; SI-NEXT:    s_or_b32 s7, s4, s5
-; SI-NEXT:    s_and_b32 s4, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_and_b32 s4, s71, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    v_writelane_b32 v35, s16, 0
 ; SI-NEXT:    s_lshr_b32 s16, s59, 8
 ; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    s_and_b32 s5, s34, 0xffff
-; SI-NEXT:    s_lshl_b32 vcc_lo, s82, 16
+; SI-NEXT:    s_and_b32 s5, s30, 0xffff
+; SI-NEXT:    s_mov_b32 s69, vcc_lo
+; SI-NEXT:    s_lshl_b32 vcc_lo, s70, 16
 ; SI-NEXT:    v_writelane_b32 v36, s16, 63
 ; SI-NEXT:    s_lshr_b32 s16, s57, 8
 ; SI-NEXT:    s_or_b32 s5, s5, vcc_lo
@@ -181492,43 +182356,41 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v36, vcc_lo, 52
 ; SI-NEXT:    s_lshr_b32 vcc_lo, s5, 8
 ; SI-NEXT:    v_writelane_b32 v36, vcc_lo, 51
-; SI-NEXT:    s_bfe_u32 s16, s76, 0x80008
+; SI-NEXT:    s_bfe_u32 s16, s98, 0x80008
 ; SI-NEXT:    v_writelane_b32 v36, s16, 50
-; SI-NEXT:    s_bfe_u32 s16, s77, 0x80008
+; SI-NEXT:    s_bfe_u32 s16, s99, 0x80008
 ; SI-NEXT:    v_writelane_b32 v36, s16, 49
-; SI-NEXT:    s_bfe_u32 s16, s86, 0x80008
+; SI-NEXT:    s_bfe_u32 s16, s76, 0x80008
 ; SI-NEXT:    v_writelane_b32 v36, s16, 48
-; SI-NEXT:    s_bfe_u32 s16, s79, 0x80008
+; SI-NEXT:    s_bfe_u32 s16, s77, 0x80008
 ; SI-NEXT:    v_writelane_b32 v36, s16, 47
-; SI-NEXT:    s_bfe_u32 s16, s88, 0x80008
+; SI-NEXT:    s_bfe_u32 s16, s78, 0x80008
 ; SI-NEXT:    v_writelane_b32 v36, s16, 46
-; SI-NEXT:    s_bfe_u32 s16, s89, 0x80008
+; SI-NEXT:    s_bfe_u32 s16, s79, 0x80008
 ; SI-NEXT:    v_writelane_b32 v36, s16, 45
-; SI-NEXT:    s_bfe_u32 s16, s90, 0x80008
+; SI-NEXT:    s_bfe_u32 s16, s88, 0x80008
 ; SI-NEXT:    v_writelane_b32 v36, s16, 44
-; SI-NEXT:    s_bfe_u32 s16, s92, 0x80008
+; SI-NEXT:    s_bfe_u32 s16, s90, 0x80008
 ; SI-NEXT:    v_writelane_b32 v36, s16, 43
-; SI-NEXT:    s_bfe_u32 s16, s95, 0x80008
+; SI-NEXT:    s_bfe_u32 s16, s93, 0x80008
 ; SI-NEXT:    v_writelane_b32 v36, s16, 42
-; SI-NEXT:    s_bfe_u32 s16, s36, 0x80008
+; SI-NEXT:    s_bfe_u32 s16, s34, 0x80008
 ; SI-NEXT:    v_writelane_b32 v36, s16, 41
-; SI-NEXT:    s_bfe_u32 s16, s48, 0x80008
+; SI-NEXT:    s_bfe_u32 s16, s36, 0x80008
 ; SI-NEXT:    v_writelane_b32 v36, s16, 40
-; SI-NEXT:    s_bfe_u32 s16, s52, 0x80008
+; SI-NEXT:    s_bfe_u32 s16, s48, 0x80008
 ; SI-NEXT:    v_writelane_b32 v36, s16, 39
-; SI-NEXT:    s_bfe_u32 s16, s55, 0x80008
+; SI-NEXT:    s_bfe_u32 s16, s51, 0x80008
 ; SI-NEXT:    v_writelane_b32 v36, s16, 38
-; SI-NEXT:    s_mov_b32 s78, s81
-; SI-NEXT:    s_mov_b32 s81, s38
-; SI-NEXT:    s_mov_b32 s38, s77
-; SI-NEXT:    s_mov_b32 s77, s99
-; SI-NEXT:    s_mov_b32 s99, s69
-; SI-NEXT:    s_mov_b32 s69, s76
-; SI-NEXT:    s_mov_b32 s76, s98
-; SI-NEXT:    s_mov_b32 s98, s65
-; SI-NEXT:    s_mov_b32 s65, s97
-; SI-NEXT:    s_mov_b32 s97, s85
-; SI-NEXT:    s_mov_b32 s85, s17
+; SI-NEXT:    s_mov_b32 vcc_lo, s99
+; SI-NEXT:    s_mov_b32 s99, s87
+; SI-NEXT:    s_mov_b32 s87, s65
+; SI-NEXT:    s_mov_b32 s65, s98
+; SI-NEXT:    s_mov_b32 s98, s86
+; SI-NEXT:    s_mov_b32 s86, s53
+; SI-NEXT:    s_mov_b32 s53, s85
+; SI-NEXT:    s_mov_b32 s85, s81
+; SI-NEXT:    s_mov_b32 s81, s17
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[74:75], 24
 ; SI-NEXT:    v_writelane_b32 v37, s16, 12
 ; SI-NEXT:    v_writelane_b32 v37, s17, 13
@@ -181547,24 +182409,24 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[72:73], 8
 ; SI-NEXT:    v_writelane_b32 v37, s16, 14
 ; SI-NEXT:    v_writelane_b32 v37, s17, 15
-; SI-NEXT:    s_lshr_b64 vcc, s[62:63], 24
-; SI-NEXT:    v_writelane_b32 v37, vcc_lo, 24
-; SI-NEXT:    v_writelane_b32 v37, vcc_hi, 25
+; SI-NEXT:    s_lshr_b64 s[96:97], s[62:63], 24
+; SI-NEXT:    v_writelane_b32 v37, s96, 24
+; SI-NEXT:    v_writelane_b32 v37, s97, 25
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[62:63], 16
 ; SI-NEXT:    v_writelane_b32 v37, s16, 22
 ; SI-NEXT:    v_writelane_b32 v37, s17, 23
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[62:63], 8
 ; SI-NEXT:    v_writelane_b32 v37, s16, 20
 ; SI-NEXT:    v_writelane_b32 v37, s17, 21
-; SI-NEXT:    s_lshr_b64 vcc, s[58:59], 24
-; SI-NEXT:    v_writelane_b32 v37, vcc_lo, 30
-; SI-NEXT:    v_writelane_b32 v37, vcc_hi, 31
-; SI-NEXT:    s_lshr_b64 vcc, s[58:59], 16
-; SI-NEXT:    v_writelane_b32 v37, vcc_lo, 28
-; SI-NEXT:    v_writelane_b32 v37, vcc_hi, 29
-; SI-NEXT:    s_lshr_b64 vcc, s[58:59], 8
-; SI-NEXT:    v_writelane_b32 v37, vcc_lo, 26
-; SI-NEXT:    v_writelane_b32 v37, vcc_hi, 27
+; SI-NEXT:    s_lshr_b64 s[96:97], s[58:59], 24
+; SI-NEXT:    v_writelane_b32 v37, s96, 30
+; SI-NEXT:    v_writelane_b32 v37, s97, 31
+; SI-NEXT:    s_lshr_b64 s[96:97], s[58:59], 16
+; SI-NEXT:    v_writelane_b32 v37, s96, 28
+; SI-NEXT:    v_writelane_b32 v37, s97, 29
+; SI-NEXT:    s_lshr_b64 s[96:97], s[58:59], 8
+; SI-NEXT:    v_writelane_b32 v37, s96, 26
+; SI-NEXT:    v_writelane_b32 v37, s97, 27
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[56:57], 24
 ; SI-NEXT:    v_writelane_b32 v37, s16, 36
 ; SI-NEXT:    v_writelane_b32 v37, s17, 37
@@ -181664,32 +182526,258 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[6:7], 8
 ; SI-NEXT:    v_writelane_b32 v36, s16, 28
 ; SI-NEXT:    v_writelane_b32 v36, s17, 29
-; SI-NEXT:    s_lshr_b64 vcc, s[4:5], 16
-; SI-NEXT:    v_writelane_b32 v36, vcc_lo, 36
-; SI-NEXT:    v_writelane_b32 v36, vcc_hi, 37
-; SI-NEXT:    s_lshr_b64 vcc, s[4:5], 8
+; SI-NEXT:    s_lshr_b64 s[96:97], s[4:5], 16
+; SI-NEXT:    v_writelane_b32 v36, s96, 36
+; SI-NEXT:    v_writelane_b32 v36, s97, 37
+; SI-NEXT:    s_lshr_b64 s[96:97], s[4:5], 8
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[4:5], 24
-; SI-NEXT:    v_writelane_b32 v36, vcc_lo, 34
-; SI-NEXT:    s_bfe_u32 s87, s67, 0x80008
-; SI-NEXT:    s_bfe_u32 s50, s71, 0x80008
-; SI-NEXT:    s_bfe_u32 s96, s82, 0x80008
-; SI-NEXT:    s_mov_b32 s17, s85
-; SI-NEXT:    s_mov_b32 s85, s97
-; SI-NEXT:    s_mov_b32 s97, s65
-; SI-NEXT:    s_mov_b32 s65, s98
-; SI-NEXT:    s_mov_b32 s98, s76
-; SI-NEXT:    s_mov_b32 s76, s69
-; SI-NEXT:    s_mov_b32 s69, s99
-; SI-NEXT:    s_mov_b32 s99, s77
-; SI-NEXT:    s_mov_b32 s77, s38
-; SI-NEXT:    s_mov_b32 s38, s81
-; SI-NEXT:    s_mov_b32 s81, s78
-; SI-NEXT:    v_writelane_b32 v36, vcc_hi, 35
-; SI-NEXT:    s_cbranch_execnz .LBB95_4
-; SI-NEXT:  .LBB95_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s83
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s84
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s82
+; SI-NEXT:    v_writelane_b32 v36, s96, 34
+; SI-NEXT:    s_bfe_u32 s83, s55, 0x80008
+; SI-NEXT:    s_bfe_u32 s38, s67, 0x80008
+; SI-NEXT:    s_bfe_u32 s84, s70, 0x80008
+; SI-NEXT:    s_mov_b32 s17, s81
+; SI-NEXT:    s_mov_b32 s81, s85
+; SI-NEXT:    s_mov_b32 s85, s53
+; SI-NEXT:    s_mov_b32 s53, s86
+; SI-NEXT:    s_mov_b32 s86, s98
+; SI-NEXT:    s_mov_b32 s98, s65
+; SI-NEXT:    s_mov_b32 s65, s87
+; SI-NEXT:    s_mov_b32 s87, s99
+; SI-NEXT:    s_mov_b32 s99, vcc_lo
+; SI-NEXT:    s_mov_b32 vcc_lo, s69
+; SI-NEXT:    v_writelane_b32 v36, s97, 35
+; SI-NEXT:    s_mov_b64 s[96:97], 0
+; SI-NEXT:    s_branch .LBB95_3
+; SI-NEXT:  .LBB95_2:
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr16
+; SI-NEXT:    s_mov_b64 s[96:97], -1
+; SI-NEXT:    v_writelane_b32 v37, s4, 8
+; SI-NEXT:    v_writelane_b32 v37, s5, 9
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr83
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr84
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    v_writelane_b32 v37, s4, 10
+; SI-NEXT:    v_writelane_b32 v37, s5, 11
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 12
+; SI-NEXT:    v_writelane_b32 v37, s5, 13
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 14
+; SI-NEXT:    v_writelane_b32 v37, s5, 15
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 16
+; SI-NEXT:    v_writelane_b32 v37, s5, 17
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 18
+; SI-NEXT:    v_writelane_b32 v37, s5, 19
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 20
+; SI-NEXT:    v_writelane_b32 v37, s5, 21
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 22
+; SI-NEXT:    v_writelane_b32 v37, s5, 23
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 24
+; SI-NEXT:    v_writelane_b32 v37, s5, 25
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 26
+; SI-NEXT:    v_writelane_b32 v37, s5, 27
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 28
+; SI-NEXT:    v_writelane_b32 v37, s5, 29
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 30
+; SI-NEXT:    v_writelane_b32 v37, s5, 31
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 32
+; SI-NEXT:    v_writelane_b32 v37, s5, 33
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 34
+; SI-NEXT:    v_writelane_b32 v37, s5, 35
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 36
+; SI-NEXT:    v_writelane_b32 v37, s5, 37
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 38
+; SI-NEXT:    v_writelane_b32 v37, s5, 39
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 40
+; SI-NEXT:    v_writelane_b32 v37, s5, 41
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 42
+; SI-NEXT:    v_writelane_b32 v37, s5, 43
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 44
+; SI-NEXT:    v_writelane_b32 v37, s5, 45
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 46
+; SI-NEXT:    v_writelane_b32 v37, s5, 47
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 48
+; SI-NEXT:    v_writelane_b32 v37, s5, 49
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 50
+; SI-NEXT:    v_writelane_b32 v37, s5, 51
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 52
+; SI-NEXT:    v_writelane_b32 v37, s5, 53
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 54
+; SI-NEXT:    v_writelane_b32 v37, s5, 55
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 56
+; SI-NEXT:    v_writelane_b32 v37, s5, 57
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 58
+; SI-NEXT:    v_writelane_b32 v37, s5, 59
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 60
+; SI-NEXT:    v_writelane_b32 v37, s5, 61
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v37, s4, 62
+; SI-NEXT:    v_writelane_b32 v37, s5, 63
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 0
+; SI-NEXT:    v_writelane_b32 v36, s5, 1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 2
+; SI-NEXT:    v_writelane_b32 v36, s5, 3
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 4
+; SI-NEXT:    v_writelane_b32 v36, s5, 5
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 6
+; SI-NEXT:    v_writelane_b32 v36, s5, 7
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 8
+; SI-NEXT:    v_writelane_b32 v36, s5, 9
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 10
+; SI-NEXT:    v_writelane_b32 v36, s5, 11
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 12
+; SI-NEXT:    v_writelane_b32 v36, s5, 13
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 14
+; SI-NEXT:    v_writelane_b32 v36, s5, 15
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 16
+; SI-NEXT:    v_writelane_b32 v36, s5, 17
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 18
+; SI-NEXT:    v_writelane_b32 v36, s5, 19
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 20
+; SI-NEXT:    v_writelane_b32 v36, s5, 21
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 22
+; SI-NEXT:    v_writelane_b32 v36, s5, 23
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 24
+; SI-NEXT:    v_writelane_b32 v36, s5, 25
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 26
+; SI-NEXT:    v_writelane_b32 v36, s5, 27
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 28
+; SI-NEXT:    v_writelane_b32 v36, s5, 29
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 30
+; SI-NEXT:    v_writelane_b32 v36, s5, 31
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s4, 32
+; SI-NEXT:    v_writelane_b32 v36, s5, 33
+; SI-NEXT:    v_writelane_b32 v36, s16, 34
+; SI-NEXT:    v_writelane_b32 v36, s17, 35
+; SI-NEXT:    ; implicit-def: $sgpr16
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v36, s16, 36
+; SI-NEXT:    v_writelane_b32 v36, s17, 37
+; SI-NEXT:    ; implicit-def: $sgpr16
+; SI-NEXT:  .LBB95_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[96:97], s[96:97], exec
+; SI-NEXT:    s_cselect_b32 s96, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s96, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB95_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, s80
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, s70
 ; SI-NEXT:    v_readlane_b32 s46, v37, 7
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
@@ -181697,8 +182785,8 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v1
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v3
 ; SI-NEXT:    v_readfirstlane_b32 s5, v2
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s34
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, s82
 ; SI-NEXT:    v_cvt_f16_f32_e32 v1, v1
 ; SI-NEXT:    v_readfirstlane_b32 s4, v4
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
@@ -181707,20 +182795,20 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s6, v2
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s80
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s68
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    v_readfirstlane_b32 s6, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, s67
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v2
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, s66
 ; SI-NEXT:    v_readfirstlane_b32 s7, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s38
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, vcc_lo
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
@@ -181730,17 +182818,17 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s7, v2
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
 ; SI-NEXT:    v_readfirstlane_b32 s8, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, s64
 ; SI-NEXT:    s_or_b32 s7, s8, s7
 ; SI-NEXT:    v_readfirstlane_b32 s8, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s67
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s55
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v3
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s66
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s54
 ; SI-NEXT:    v_readfirstlane_b32 s9, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s99
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s87
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
@@ -181748,19 +182836,19 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    v_readfirstlane_b32 s10, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s64
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s52
 ; SI-NEXT:    v_readfirstlane_b32 s9, v3
 ; SI-NEXT:    s_lshl_b32 s9, s9, 16
 ; SI-NEXT:    s_or_b32 s9, s10, s9
 ; SI-NEXT:    v_readfirstlane_b32 s10, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s55
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s51
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v4
 ; SI-NEXT:    s_lshl_b32 s10, s10, 16
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s54
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s50
 ; SI-NEXT:    v_readfirstlane_b32 s11, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s65
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
@@ -181770,17 +182858,17 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s11, v4
 ; SI-NEXT:    s_lshl_b32 s11, s11, 16
 ; SI-NEXT:    v_readfirstlane_b32 s12, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s53
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s49
 ; SI-NEXT:    s_or_b32 s11, s12, s11
 ; SI-NEXT:    v_readfirstlane_b32 s12, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s52
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s48
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v5
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s51
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s39
 ; SI-NEXT:    v_readfirstlane_b32 s13, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s98
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, s86
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
@@ -181788,19 +182876,19 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; SI-NEXT:    s_or_b32 s12, s13, s12
 ; SI-NEXT:    v_readfirstlane_b32 s14, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s49
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s37
 ; SI-NEXT:    v_readfirstlane_b32 s13, v5
 ; SI-NEXT:    s_lshl_b32 s13, s13, 16
 ; SI-NEXT:    s_or_b32 s13, s14, s13
 ; SI-NEXT:    v_readfirstlane_b32 s14, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s48
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, s36
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v6
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s39
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, vcc_hi
 ; SI-NEXT:    v_readfirstlane_b32 s15, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s65
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s53
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
@@ -181810,17 +182898,17 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s15, v6
 ; SI-NEXT:    s_lshl_b32 s15, s15, 16
 ; SI-NEXT:    v_readfirstlane_b32 s40, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s37
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, s35
 ; SI-NEXT:    s_or_b32 s15, s40, s15
 ; SI-NEXT:    v_readfirstlane_b32 s40, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s36
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s34
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v7
 ; SI-NEXT:    s_lshl_b32 s40, s40, 16
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s31
 ; SI-NEXT:    v_readfirstlane_b32 s41, v9
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s85
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s81
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
@@ -181828,19 +182916,19 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
 ; SI-NEXT:    s_or_b32 s40, s41, s40
 ; SI-NEXT:    v_readfirstlane_b32 s42, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s95
 ; SI-NEXT:    v_readfirstlane_b32 s41, v7
 ; SI-NEXT:    s_lshl_b32 s41, s41, 16
 ; SI-NEXT:    s_or_b32 s41, s42, s41
 ; SI-NEXT:    v_readfirstlane_b32 s42, v9
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s95
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s93
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v8
 ; SI-NEXT:    s_lshl_b32 s42, s42, 16
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v9
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s94
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s92
 ; SI-NEXT:    v_readfirstlane_b32 s43, v10
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v10, s94
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
@@ -181850,15 +182938,15 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s43, v8
 ; SI-NEXT:    s_lshl_b32 s43, s43, 16
 ; SI-NEXT:    v_readfirstlane_b32 s44, v9
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s93
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s91
 ; SI-NEXT:    s_or_b32 s43, s44, s43
 ; SI-NEXT:    v_readfirstlane_b32 s44, v10
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, s92
+; SI-NEXT:    v_cvt_f32_f16_e32 v10, s90
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v11, v9
 ; SI-NEXT:    s_lshl_b32 s44, s44, 16
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v10
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, s91
+; SI-NEXT:    v_cvt_f32_f16_e32 v10, s89
 ; SI-NEXT:    v_readfirstlane_b32 s45, v11
 ; SI-NEXT:    v_cvt_f32_f16_e32 v11, s46
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
@@ -181870,7 +182958,7 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s46, v10
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s28
 ; SI-NEXT:    v_readfirstlane_b32 s28, v11
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s90
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, s88
 ; SI-NEXT:    v_readfirstlane_b32 s45, v9
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v10
@@ -181890,7 +182978,7 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v11, s26
 ; SI-NEXT:    s_lshl_b32 s28, s28, 16
 ; SI-NEXT:    v_readfirstlane_b32 s26, v12
-; SI-NEXT:    v_cvt_f32_f16_e32 v12, s89
+; SI-NEXT:    v_cvt_f32_f16_e32 v12, s79
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
 ; SI-NEXT:    v_cvt_f16_f32_e32 v13, v11
 ; SI-NEXT:    s_or_b32 s46, s46, s28
@@ -181922,7 +183010,7 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
 ; SI-NEXT:    v_readfirstlane_b32 s24, v13
-; SI-NEXT:    v_cvt_f32_f16_e32 v13, s88
+; SI-NEXT:    v_cvt_f32_f16_e32 v13, s78
 ; SI-NEXT:    v_cvt_f32_f16_e32 v14, s25
 ; SI-NEXT:    v_readfirstlane_b32 s25, v12
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s22
@@ -181940,7 +183028,7 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s24, v12
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s23
 ; SI-NEXT:    v_readfirstlane_b32 s22, v14
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s79
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s77
 ; SI-NEXT:    v_readlane_b32 s23, v37, 3
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
@@ -181961,7 +183049,7 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s22, v12
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s21
 ; SI-NEXT:    v_readfirstlane_b32 s20, v14
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s86
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s76
 ; SI-NEXT:    v_readlane_b32 s21, v37, 2
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
@@ -182001,7 +183089,7 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v36, s50, 14
 ; SI-NEXT:    v_writelane_b32 v36, s51, 15
 ; SI-NEXT:    s_lshr_b64 s[50:51], s[12:13], 16
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s77
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s99
 ; SI-NEXT:    v_writelane_b32 v36, s50, 12
 ; SI-NEXT:    v_writelane_b32 v36, s51, 13
 ; SI-NEXT:    s_lshr_b64 s[50:51], s[12:13], 8
@@ -182021,7 +183109,7 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v36, s50, 16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s97
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s85
 ; SI-NEXT:    v_writelane_b32 v36, s51, 17
 ; SI-NEXT:    s_lshr_b64 s[50:51], s[8:9], 24
 ; SI-NEXT:    v_cvt_f16_f32_e32 v14, v14
@@ -182038,7 +183126,7 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    s_or_b32 s73, s16, s18
 ; SI-NEXT:    v_readfirstlane_b32 s16, v14
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s76
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s98
 ; SI-NEXT:    v_writelane_b32 v36, s50, 22
 ; SI-NEXT:    v_cvt_f32_f16_e32 v15, s17
 ; SI-NEXT:    v_writelane_b32 v36, s51, 23
@@ -182133,229 +183221,8 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[80:81], s[14:15], 8
 ; SI-NEXT:    v_writelane_b32 v36, s51, 35
 ; SI-NEXT:    s_mov_b32 s50, s86
-; SI-NEXT:    s_branch .LBB95_5
-; SI-NEXT:  .LBB95_3:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr16
-; SI-NEXT:    v_writelane_b32 v37, s4, 8
-; SI-NEXT:    v_writelane_b32 v37, s5, 9
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr87
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr96
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    v_writelane_b32 v37, s4, 10
-; SI-NEXT:    v_writelane_b32 v37, s5, 11
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 12
-; SI-NEXT:    v_writelane_b32 v37, s5, 13
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 14
-; SI-NEXT:    v_writelane_b32 v37, s5, 15
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 16
-; SI-NEXT:    v_writelane_b32 v37, s5, 17
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 18
-; SI-NEXT:    v_writelane_b32 v37, s5, 19
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 20
-; SI-NEXT:    v_writelane_b32 v37, s5, 21
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 22
-; SI-NEXT:    v_writelane_b32 v37, s5, 23
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 24
-; SI-NEXT:    v_writelane_b32 v37, s5, 25
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 26
-; SI-NEXT:    v_writelane_b32 v37, s5, 27
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 28
-; SI-NEXT:    v_writelane_b32 v37, s5, 29
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 30
-; SI-NEXT:    v_writelane_b32 v37, s5, 31
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 32
-; SI-NEXT:    v_writelane_b32 v37, s5, 33
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 34
-; SI-NEXT:    v_writelane_b32 v37, s5, 35
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 36
-; SI-NEXT:    v_writelane_b32 v37, s5, 37
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 38
-; SI-NEXT:    v_writelane_b32 v37, s5, 39
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 40
-; SI-NEXT:    v_writelane_b32 v37, s5, 41
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 42
-; SI-NEXT:    v_writelane_b32 v37, s5, 43
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 44
-; SI-NEXT:    v_writelane_b32 v37, s5, 45
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 46
-; SI-NEXT:    v_writelane_b32 v37, s5, 47
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 48
-; SI-NEXT:    v_writelane_b32 v37, s5, 49
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 50
-; SI-NEXT:    v_writelane_b32 v37, s5, 51
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 52
-; SI-NEXT:    v_writelane_b32 v37, s5, 53
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 54
-; SI-NEXT:    v_writelane_b32 v37, s5, 55
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 56
-; SI-NEXT:    v_writelane_b32 v37, s5, 57
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 58
-; SI-NEXT:    v_writelane_b32 v37, s5, 59
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 60
-; SI-NEXT:    v_writelane_b32 v37, s5, 61
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v37, s4, 62
-; SI-NEXT:    v_writelane_b32 v37, s5, 63
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 0
-; SI-NEXT:    v_writelane_b32 v36, s5, 1
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 2
-; SI-NEXT:    v_writelane_b32 v36, s5, 3
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 4
-; SI-NEXT:    v_writelane_b32 v36, s5, 5
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 6
-; SI-NEXT:    v_writelane_b32 v36, s5, 7
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 8
-; SI-NEXT:    v_writelane_b32 v36, s5, 9
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 10
-; SI-NEXT:    v_writelane_b32 v36, s5, 11
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 12
-; SI-NEXT:    v_writelane_b32 v36, s5, 13
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 14
-; SI-NEXT:    v_writelane_b32 v36, s5, 15
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 16
-; SI-NEXT:    v_writelane_b32 v36, s5, 17
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 18
-; SI-NEXT:    v_writelane_b32 v36, s5, 19
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 20
-; SI-NEXT:    v_writelane_b32 v36, s5, 21
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 22
-; SI-NEXT:    v_writelane_b32 v36, s5, 23
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 24
-; SI-NEXT:    v_writelane_b32 v36, s5, 25
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 26
-; SI-NEXT:    v_writelane_b32 v36, s5, 27
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 28
-; SI-NEXT:    v_writelane_b32 v36, s5, 29
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 30
-; SI-NEXT:    v_writelane_b32 v36, s5, 31
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s4, 32
-; SI-NEXT:    v_writelane_b32 v36, s5, 33
-; SI-NEXT:    v_writelane_b32 v36, s16, 34
-; SI-NEXT:    v_writelane_b32 v36, s17, 35
-; SI-NEXT:    ; implicit-def: $sgpr16
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v36, s16, 36
-; SI-NEXT:    v_writelane_b32 v36, s17, 37
-; SI-NEXT:    ; implicit-def: $sgpr16
-; SI-NEXT:    s_branch .LBB95_2
-; SI-NEXT:  .LBB95_4:
+; SI-NEXT:    s_branch .LBB95_6
+; SI-NEXT:  .LBB95_5:
 ; SI-NEXT:    v_readlane_b32 s17, v36, 38
 ; SI-NEXT:    v_mov_b32_e32 v17, s17
 ; SI-NEXT:    v_readlane_b32 s17, v36, 39
@@ -182381,12 +183248,12 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_readlane_b32 s17, v36, 49
 ; SI-NEXT:    v_mov_b32_e32 v31, s17
 ; SI-NEXT:    v_readlane_b32 s17, v36, 50
-; SI-NEXT:    v_mov_b32_e32 v10, s90
-; SI-NEXT:    v_mov_b32_e32 v11, s89
-; SI-NEXT:    v_mov_b32_e32 v13, s88
-; SI-NEXT:    v_mov_b32_e32 v16, s79
-; SI-NEXT:    v_mov_b32_e32 v23, s77
-; SI-NEXT:    v_mov_b32_e32 v27, s76
+; SI-NEXT:    v_mov_b32_e32 v9, s90
+; SI-NEXT:    v_mov_b32_e32 v10, s88
+; SI-NEXT:    v_mov_b32_e32 v11, s79
+; SI-NEXT:    v_mov_b32_e32 v13, s78
+; SI-NEXT:    v_mov_b32_e32 v16, s77
+; SI-NEXT:    v_mov_b32_e32 v20, s76
 ; SI-NEXT:    v_mov_b32_e32 v32, s17
 ; SI-NEXT:    v_readlane_b32 s17, v36, 51
 ; SI-NEXT:    v_readlane_b32 s76, v37, 30
@@ -182399,18 +183266,17 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_readlane_b32 s91, v37, 27
 ; SI-NEXT:    v_writelane_b32 v37, s16, 0
 ; SI-NEXT:    v_writelane_b32 v37, s17, 1
-; SI-NEXT:    v_mov_b32_e32 v8, s95
 ; SI-NEXT:    v_readlane_b32 s94, v37, 22
 ; SI-NEXT:    v_readlane_b32 s95, v37, 23
 ; SI-NEXT:    s_mov_b32 s95, s17
 ; SI-NEXT:    v_readlane_b32 s16, v36, 36
-; SI-NEXT:    v_mov_b32_e32 v4, s55
-; SI-NEXT:    v_mov_b32_e32 v6, s48
+; SI-NEXT:    v_mov_b32_e32 v3, s55
+; SI-NEXT:    v_mov_b32_e32 v5, s48
 ; SI-NEXT:    v_readlane_b32 s17, v36, 37
 ; SI-NEXT:    v_readlane_b32 s54, v37, 10
 ; SI-NEXT:    v_readlane_b32 s48, v37, 42
-; SI-NEXT:    v_mov_b32_e32 v5, s52
-; SI-NEXT:    v_mov_b32_e32 v7, s36
+; SI-NEXT:    v_mov_b32_e32 v6, s36
+; SI-NEXT:    v_mov_b32_e32 v14, s38
 ; SI-NEXT:    v_readlane_b32 s22, v36, 54
 ; SI-NEXT:    v_readlane_b32 s23, v36, 57
 ; SI-NEXT:    v_readlane_b32 s36, v37, 20
@@ -182429,12 +183295,15 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    s_mov_b32 s55, s23
 ; SI-NEXT:    s_mov_b32 s49, s22
 ; SI-NEXT:    v_readlane_b32 s22, v37, 38
-; SI-NEXT:    v_mov_b32_e32 v1, s82
-; SI-NEXT:    v_mov_b32_e32 v2, s71
-; SI-NEXT:    v_mov_b32_e32 v3, s67
-; SI-NEXT:    v_mov_b32_e32 v9, s92
-; SI-NEXT:    v_mov_b32_e32 v12, s96
-; SI-NEXT:    v_mov_b32_e32 v14, s50
+; SI-NEXT:    v_mov_b32_e32 v1, s70
+; SI-NEXT:    v_mov_b32_e32 v2, s67
+; SI-NEXT:    v_mov_b32_e32 v4, s51
+; SI-NEXT:    v_mov_b32_e32 v7, s34
+; SI-NEXT:    v_mov_b32_e32 v8, s93
+; SI-NEXT:    v_mov_b32_e32 v23, s99
+; SI-NEXT:    v_mov_b32_e32 v27, s98
+; SI-NEXT:    v_mov_b32_e32 v12, s84
+; SI-NEXT:    v_mov_b32_e32 v15, s83
 ; SI-NEXT:    v_readlane_b32 vcc_lo, v37, 18
 ; SI-NEXT:    s_mov_b32 s37, s18
 ; SI-NEXT:    s_mov_b32 s39, s20
@@ -182457,8 +183326,6 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_readlane_b32 s34, v37, 56
 ; SI-NEXT:    v_readlane_b32 s70, v37, 52
 ; SI-NEXT:    v_readlane_b32 s82, v37, 50
-; SI-NEXT:    v_mov_b32_e32 v20, s86
-; SI-NEXT:    v_mov_b32_e32 v15, s87
 ; SI-NEXT:    v_readlane_b32 s19, v36, 56
 ; SI-NEXT:    v_readlane_b32 s26, v36, 58
 ; SI-NEXT:    v_readlane_b32 s27, v36, 59
@@ -182486,7 +183353,7 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_readlane_b32 s35, v37, 57
 ; SI-NEXT:    v_readlane_b32 s71, v37, 53
 ; SI-NEXT:    v_readlane_b32 s83, v37, 51
-; SI-NEXT:  .LBB95_5: ; %end
+; SI-NEXT:  .LBB95_6: ; %end
 ; SI-NEXT:    s_lshl_b32 s16, s16, 8
 ; SI-NEXT:    s_and_b32 s17, s74, 0xff
 ; SI-NEXT:    s_or_b32 s16, s17, s16
@@ -183027,7 +183894,7 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v1
 ; VI-NEXT:    ; implicit-def: $vgpr62 : SGPR spill to VGPR lane
-; VI-NEXT:    s_cbranch_scc0 .LBB95_3
+; VI-NEXT:    s_cbranch_scc0 .LBB95_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s46, s5, 24
 ; VI-NEXT:    v_writelane_b32 v62, s46, 16
@@ -183178,13 +184045,175 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b64 s[78:79], s[6:7], 24
 ; VI-NEXT:    s_lshr_b64 s[88:89], s[8:9], 24
 ; VI-NEXT:    s_lshr_b64 s[90:91], s[10:11], 24
-; VI-NEXT:    s_lshr_b64 s[30:31], s[12:13], 24
-; VI-NEXT:    s_lshr_b64 s[34:35], s[14:15], 24
-; VI-NEXT:    s_lshr_b64 s[36:37], s[40:41], 24
-; VI-NEXT:    s_lshr_b64 s[38:39], s[42:43], 24
-; VI-NEXT:    s_lshr_b64 s[48:49], s[44:45], 24
-; VI-NEXT:    s_cbranch_execnz .LBB95_4
-; VI-NEXT:  .LBB95_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b64 vcc, s[12:13], 24
+; VI-NEXT:    s_lshr_b64 s[30:31], s[14:15], 24
+; VI-NEXT:    s_lshr_b64 s[34:35], s[40:41], 24
+; VI-NEXT:    s_lshr_b64 s[36:37], s[42:43], 24
+; VI-NEXT:    s_lshr_b64 s[38:39], s[44:45], 24
+; VI-NEXT:    s_mov_b64 s[48:49], 0
+; VI-NEXT:    s_branch .LBB95_3
+; VI-NEXT:  .LBB95_2:
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    s_mov_b64 s[48:49], -1
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr71
+; VI-NEXT:    ; implicit-def: $sgpr70
+; VI-NEXT:    ; implicit-def: $sgpr51
+; VI-NEXT:    ; implicit-def: $sgpr69
+; VI-NEXT:    ; implicit-def: $sgpr68
+; VI-NEXT:    ; implicit-def: $sgpr50
+; VI-NEXT:    ; implicit-def: $sgpr67
+; VI-NEXT:    ; implicit-def: $sgpr66
+; VI-NEXT:    ; implicit-def: $sgpr83
+; VI-NEXT:    ; implicit-def: $sgpr65
+; VI-NEXT:    ; implicit-def: $sgpr64
+; VI-NEXT:    ; implicit-def: $sgpr82
+; VI-NEXT:    ; implicit-def: $sgpr55
+; VI-NEXT:    ; implicit-def: $sgpr54
+; VI-NEXT:    ; implicit-def: $sgpr81
+; VI-NEXT:    ; implicit-def: $sgpr87
+; VI-NEXT:    ; implicit-def: $sgpr86
+; VI-NEXT:    ; implicit-def: $sgpr80
+; VI-NEXT:    ; implicit-def: $sgpr85
+; VI-NEXT:    ; implicit-def: $sgpr84
+; VI-NEXT:    ; implicit-def: $sgpr53
+; VI-NEXT:    ; implicit-def: $sgpr52
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr38
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:  .LBB95_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[48:49], s[48:49], exec
+; VI-NEXT:    s_cselect_b32 s47, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s47, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB95_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s46, s45, 16
 ; VI-NEXT:    v_mov_b32_e32 v7, 0x200
 ; VI-NEXT:    v_add_f16_e32 v36, s46, v7
@@ -183483,164 +184512,8 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; VI-NEXT:    v_bfe_u32 v15, v39, 8, 8
 ; VI-NEXT:    v_bfe_u32 v22, v60, 8, 8
 ; VI-NEXT:    v_bfe_u32 v30, v42, 8, 8
-; VI-NEXT:    s_branch .LBB95_5
-; VI-NEXT:  .LBB95_3:
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr71
-; VI-NEXT:    ; implicit-def: $sgpr70
-; VI-NEXT:    ; implicit-def: $sgpr51
-; VI-NEXT:    ; implicit-def: $sgpr69
-; VI-NEXT:    ; implicit-def: $sgpr68
-; VI-NEXT:    ; implicit-def: $sgpr50
-; VI-NEXT:    ; implicit-def: $sgpr67
-; VI-NEXT:    ; implicit-def: $sgpr66
-; VI-NEXT:    ; implicit-def: $sgpr83
-; VI-NEXT:    ; implicit-def: $sgpr65
-; VI-NEXT:    ; implicit-def: $sgpr64
-; VI-NEXT:    ; implicit-def: $sgpr82
-; VI-NEXT:    ; implicit-def: $sgpr55
-; VI-NEXT:    ; implicit-def: $sgpr54
-; VI-NEXT:    ; implicit-def: $sgpr81
-; VI-NEXT:    ; implicit-def: $sgpr87
-; VI-NEXT:    ; implicit-def: $sgpr86
-; VI-NEXT:    ; implicit-def: $sgpr80
-; VI-NEXT:    ; implicit-def: $sgpr85
-; VI-NEXT:    ; implicit-def: $sgpr84
-; VI-NEXT:    ; implicit-def: $sgpr53
-; VI-NEXT:    ; implicit-def: $sgpr52
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr48
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    s_branch .LBB95_2
-; VI-NEXT:  .LBB95_4:
+; VI-NEXT:    s_branch .LBB95_6
+; VI-NEXT:  .LBB95_5:
 ; VI-NEXT:    v_mov_b32_e32 v1, s44
 ; VI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
 ; VI-NEXT:    v_mov_b32_e32 v1, s45
@@ -183891,12 +184764,12 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v20, s76
 ; VI-NEXT:    v_mov_b32_e32 v2, s88
 ; VI-NEXT:    v_mov_b32_e32 v3, s90
-; VI-NEXT:    v_mov_b32_e32 v4, s30
-; VI-NEXT:    v_mov_b32_e32 v5, s34
-; VI-NEXT:    v_mov_b32_e32 v8, s36
-; VI-NEXT:    v_mov_b32_e32 v24, s38
-; VI-NEXT:    v_mov_b32_e32 v14, s48
-; VI-NEXT:  .LBB95_5: ; %end
+; VI-NEXT:    v_mov_b32_e32 v4, vcc_lo
+; VI-NEXT:    v_mov_b32_e32 v5, s30
+; VI-NEXT:    v_mov_b32_e32 v8, s34
+; VI-NEXT:    v_mov_b32_e32 v24, s36
+; VI-NEXT:    v_mov_b32_e32 v14, s38
+; VI-NEXT:  .LBB95_6: ; %end
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; VI-NEXT:    v_perm_b32 v20, v23, v20, s4
 ; VI-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:160 ; 4-byte Folded Reload
@@ -184339,7 +185212,7 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v1
 ; GFX9-NEXT:    ; implicit-def: $vgpr62 : SGPR spill to VGPR lane
-; GFX9-NEXT:    s_cbranch_scc0 .LBB95_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB95_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s46, s5, 24
 ; GFX9-NEXT:    v_writelane_b32 v62, s46, 49
@@ -184484,11 +185357,165 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b64 s[90:91], s[10:11], 24
 ; GFX9-NEXT:    s_lshr_b64 s[92:93], s[12:13], 24
 ; GFX9-NEXT:    s_lshr_b64 s[94:95], s[14:15], 24
-; GFX9-NEXT:    s_lshr_b64 s[30:31], s[40:41], 24
-; GFX9-NEXT:    s_lshr_b64 s[34:35], s[42:43], 24
-; GFX9-NEXT:    s_lshr_b64 s[36:37], s[44:45], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB95_4
-; GFX9-NEXT:  .LBB95_2: ; %cmp.true
+; GFX9-NEXT:    s_lshr_b64 vcc, s[40:41], 24
+; GFX9-NEXT:    s_lshr_b64 s[30:31], s[42:43], 24
+; GFX9-NEXT:    s_lshr_b64 s[34:35], s[44:45], 24
+; GFX9-NEXT:    s_mov_b64 s[36:37], 0
+; GFX9-NEXT:    s_branch .LBB95_3
+; GFX9-NEXT:  .LBB95_2:
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    s_mov_b64 s[36:37], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr81
+; GFX9-NEXT:    ; implicit-def: $sgpr71
+; GFX9-NEXT:    ; implicit-def: $sgpr80
+; GFX9-NEXT:    ; implicit-def: $sgpr70
+; GFX9-NEXT:    ; implicit-def: $sgpr69
+; GFX9-NEXT:    ; implicit-def: $sgpr68
+; GFX9-NEXT:    ; implicit-def: $sgpr66
+; GFX9-NEXT:    ; implicit-def: $sgpr67
+; GFX9-NEXT:    ; implicit-def: $sgpr65
+; GFX9-NEXT:    ; implicit-def: $sgpr64
+; GFX9-NEXT:    ; implicit-def: $sgpr55
+; GFX9-NEXT:    ; implicit-def: $sgpr53
+; GFX9-NEXT:    ; implicit-def: $sgpr54
+; GFX9-NEXT:    ; implicit-def: $sgpr52
+; GFX9-NEXT:    ; implicit-def: $sgpr51
+; GFX9-NEXT:    ; implicit-def: $sgpr50
+; GFX9-NEXT:    ; implicit-def: $sgpr48
+; GFX9-NEXT:    ; implicit-def: $sgpr49
+; GFX9-NEXT:    ; implicit-def: $sgpr39
+; GFX9-NEXT:    ; implicit-def: $sgpr38
+; GFX9-NEXT:    ; implicit-def: $sgpr99
+; GFX9-NEXT:    ; implicit-def: $sgpr97
+; GFX9-NEXT:    ; implicit-def: $sgpr98
+; GFX9-NEXT:    ; implicit-def: $sgpr96
+; GFX9-NEXT:    ; implicit-def: $sgpr87
+; GFX9-NEXT:    ; implicit-def: $sgpr86
+; GFX9-NEXT:    ; implicit-def: $sgpr84
+; GFX9-NEXT:    ; implicit-def: $sgpr85
+; GFX9-NEXT:    ; implicit-def: $sgpr83
+; GFX9-NEXT:    ; implicit-def: $sgpr82
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr34
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:  .LBB95_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GFX9-NEXT:    s_cselect_b32 s47, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s47, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB95_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v15, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v26, s5, v15 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v25, s4, v15 op_sel_hi:[1,0]
@@ -184714,156 +185741,8 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; GFX9-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:340 ; 4-byte Folded Spill
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v22, 8, v19
 ; GFX9-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:332 ; 4-byte Folded Spill
-; GFX9-NEXT:    s_branch .LBB95_5
-; GFX9-NEXT:  .LBB95_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr81
-; GFX9-NEXT:    ; implicit-def: $sgpr71
-; GFX9-NEXT:    ; implicit-def: $sgpr80
-; GFX9-NEXT:    ; implicit-def: $sgpr70
-; GFX9-NEXT:    ; implicit-def: $sgpr69
-; GFX9-NEXT:    ; implicit-def: $sgpr68
-; GFX9-NEXT:    ; implicit-def: $sgpr66
-; GFX9-NEXT:    ; implicit-def: $sgpr67
-; GFX9-NEXT:    ; implicit-def: $sgpr65
-; GFX9-NEXT:    ; implicit-def: $sgpr64
-; GFX9-NEXT:    ; implicit-def: $sgpr55
-; GFX9-NEXT:    ; implicit-def: $sgpr53
-; GFX9-NEXT:    ; implicit-def: $sgpr54
-; GFX9-NEXT:    ; implicit-def: $sgpr52
-; GFX9-NEXT:    ; implicit-def: $sgpr51
-; GFX9-NEXT:    ; implicit-def: $sgpr50
-; GFX9-NEXT:    ; implicit-def: $sgpr48
-; GFX9-NEXT:    ; implicit-def: $sgpr49
-; GFX9-NEXT:    ; implicit-def: $sgpr39
-; GFX9-NEXT:    ; implicit-def: $sgpr38
-; GFX9-NEXT:    ; implicit-def: $sgpr99
-; GFX9-NEXT:    ; implicit-def: $sgpr97
-; GFX9-NEXT:    ; implicit-def: $sgpr98
-; GFX9-NEXT:    ; implicit-def: $sgpr96
-; GFX9-NEXT:    ; implicit-def: $sgpr87
-; GFX9-NEXT:    ; implicit-def: $sgpr86
-; GFX9-NEXT:    ; implicit-def: $sgpr84
-; GFX9-NEXT:    ; implicit-def: $sgpr85
-; GFX9-NEXT:    ; implicit-def: $sgpr83
-; GFX9-NEXT:    ; implicit-def: $sgpr82
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr36
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    s_branch .LBB95_2
-; GFX9-NEXT:  .LBB95_4:
+; GFX9-NEXT:    s_branch .LBB95_6
+; GFX9-NEXT:  .LBB95_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s81
 ; GFX9-NEXT:    buffer_store_dword v15, off, s[0:3], s32 offset:332 ; 4-byte Folded Spill
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s71
@@ -185129,19 +186008,19 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; GFX9-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:152 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
 ; GFX9-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:156 ; 4-byte Folded Spill
-; GFX9-NEXT:    v_mov_b32_e32 v22, s30
+; GFX9-NEXT:    v_mov_b32_e32 v22, vcc_lo
 ; GFX9-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:192 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
 ; GFX9-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:196 ; 4-byte Folded Spill
-; GFX9-NEXT:    v_mov_b32_e32 v22, s34
+; GFX9-NEXT:    v_mov_b32_e32 v22, s30
 ; GFX9-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:244 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
 ; GFX9-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:248 ; 4-byte Folded Spill
-; GFX9-NEXT:    v_mov_b32_e32 v22, s36
+; GFX9-NEXT:    v_mov_b32_e32 v22, s34
 ; GFX9-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:320 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
 ; GFX9-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:324 ; 4-byte Folded Spill
-; GFX9-NEXT:  .LBB95_5: ; %end
+; GFX9-NEXT:  .LBB95_6: ; %end
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; GFX9-NEXT:    v_perm_b32 v37, v37, v52, s4
 ; GFX9-NEXT:    v_perm_b32 v31, v31, v53, s4
@@ -185598,74 +186477,74 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v2
 ; GFX11-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
-; GFX11-NEXT:    s_mov_b32 vcc_lo, 0
+; GFX11-NEXT:    s_mov_b32 s100, 0
 ; GFX11-NEXT:    ; implicit-def: $vgpr76 : SGPR spill to VGPR lane
 ; GFX11-NEXT:    ; implicit-def: $vgpr77 : SGPR spill to VGPR lane
-; GFX11-NEXT:    s_cbranch_scc0 .LBB95_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB95_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s42, s27, 24
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s5, 24
+; GFX11-NEXT:    s_lshr_b32 s30, s5, 24
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 7
 ; GFX11-NEXT:    s_lshr_b32 s42, s27, 16
-; GFX11-NEXT:    s_lshr_b32 s34, s5, 16
-; GFX11-NEXT:    s_lshr_b32 s36, s5, 8
-; GFX11-NEXT:    s_lshr_b32 s35, s4, 16
+; GFX11-NEXT:    s_lshr_b32 s31, s5, 16
+; GFX11-NEXT:    s_lshr_b32 s35, s5, 8
+; GFX11-NEXT:    s_lshr_b32 s34, s4, 16
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 6
 ; GFX11-NEXT:    s_lshr_b32 s42, s27, 8
-; GFX11-NEXT:    s_lshr_b32 s37, s4, 8
-; GFX11-NEXT:    s_lshr_b32 s38, s7, 24
-; GFX11-NEXT:    s_lshr_b32 s39, s7, 16
+; GFX11-NEXT:    s_lshr_b32 s36, s4, 8
+; GFX11-NEXT:    s_lshr_b32 s37, s7, 24
+; GFX11-NEXT:    s_lshr_b32 s38, s7, 16
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 5
 ; GFX11-NEXT:    s_lshr_b32 s42, s26, 16
-; GFX11-NEXT:    s_lshr_b32 s49, s7, 8
-; GFX11-NEXT:    s_lshr_b32 s48, s6, 16
-; GFX11-NEXT:    s_lshr_b32 s50, s6, 8
+; GFX11-NEXT:    s_lshr_b32 s48, s7, 8
+; GFX11-NEXT:    s_lshr_b32 s39, s6, 16
+; GFX11-NEXT:    s_lshr_b32 s49, s6, 8
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 4
 ; GFX11-NEXT:    s_lshr_b32 s42, s26, 8
-; GFX11-NEXT:    s_lshr_b32 s51, s9, 24
-; GFX11-NEXT:    s_lshr_b32 s52, s9, 16
-; GFX11-NEXT:    s_lshr_b32 s54, s9, 8
+; GFX11-NEXT:    s_lshr_b32 s50, s9, 24
+; GFX11-NEXT:    s_lshr_b32 s51, s9, 16
+; GFX11-NEXT:    s_lshr_b32 s53, s9, 8
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 3
 ; GFX11-NEXT:    s_lshr_b32 s42, s25, 24
-; GFX11-NEXT:    s_lshr_b32 s53, s8, 16
-; GFX11-NEXT:    s_lshr_b32 s55, s8, 8
-; GFX11-NEXT:    s_lshr_b32 s64, s11, 24
+; GFX11-NEXT:    s_lshr_b32 s52, s8, 16
+; GFX11-NEXT:    s_lshr_b32 s54, s8, 8
+; GFX11-NEXT:    s_lshr_b32 s55, s11, 24
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 2
 ; GFX11-NEXT:    s_lshr_b32 s42, s25, 16
-; GFX11-NEXT:    s_lshr_b32 s65, s11, 16
-; GFX11-NEXT:    s_lshr_b32 s67, s11, 8
-; GFX11-NEXT:    s_lshr_b32 s66, s10, 16
+; GFX11-NEXT:    s_lshr_b32 s64, s11, 16
+; GFX11-NEXT:    s_lshr_b32 s66, s11, 8
+; GFX11-NEXT:    s_lshr_b32 s65, s10, 16
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 1
 ; GFX11-NEXT:    s_lshr_b32 s42, s25, 8
-; GFX11-NEXT:    s_lshr_b32 s68, s10, 8
-; GFX11-NEXT:    s_lshr_b32 s69, s13, 24
-; GFX11-NEXT:    s_lshr_b32 s70, s13, 16
+; GFX11-NEXT:    s_lshr_b32 s67, s10, 8
+; GFX11-NEXT:    s_lshr_b32 s68, s13, 24
+; GFX11-NEXT:    s_lshr_b32 s69, s13, 16
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 0
 ; GFX11-NEXT:    s_lshr_b32 s42, s24, 16
-; GFX11-NEXT:    s_lshr_b32 s80, s13, 8
+; GFX11-NEXT:    s_lshr_b32 s71, s13, 8
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 31
 ; GFX11-NEXT:    s_lshr_b32 s42, s24, 8
-; GFX11-NEXT:    s_lshr_b32 s71, s12, 16
-; GFX11-NEXT:    s_lshr_b32 s81, s12, 8
-; GFX11-NEXT:    s_lshr_b32 s82, s15, 24
+; GFX11-NEXT:    s_lshr_b32 s70, s12, 16
+; GFX11-NEXT:    s_lshr_b32 s80, s12, 8
+; GFX11-NEXT:    s_lshr_b32 s81, s15, 24
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 30
 ; GFX11-NEXT:    s_lshr_b32 s42, s23, 24
-; GFX11-NEXT:    s_lshr_b32 s83, s15, 16
-; GFX11-NEXT:    s_lshr_b32 s85, s15, 8
-; GFX11-NEXT:    s_lshr_b32 s84, s14, 16
+; GFX11-NEXT:    s_lshr_b32 s82, s15, 16
+; GFX11-NEXT:    s_lshr_b32 s84, s15, 8
+; GFX11-NEXT:    s_lshr_b32 s83, s14, 16
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 29
 ; GFX11-NEXT:    s_lshr_b32 s42, s23, 16
-; GFX11-NEXT:    s_lshr_b32 s86, s14, 8
-; GFX11-NEXT:    s_lshr_b32 s87, s41, 24
-; GFX11-NEXT:    s_lshr_b32 s96, s41, 16
+; GFX11-NEXT:    s_lshr_b32 s85, s14, 8
+; GFX11-NEXT:    s_lshr_b32 s86, s41, 24
+; GFX11-NEXT:    s_lshr_b32 s87, s41, 16
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 28
 ; GFX11-NEXT:    s_lshr_b32 s42, s23, 8
-; GFX11-NEXT:    s_lshr_b32 s98, s41, 8
-; GFX11-NEXT:    s_lshr_b32 s97, s40, 16
-; GFX11-NEXT:    s_lshr_b32 s99, s40, 8
+; GFX11-NEXT:    s_lshr_b32 s97, s41, 8
+; GFX11-NEXT:    s_lshr_b32 s96, s40, 16
+; GFX11-NEXT:    s_lshr_b32 s98, s40, 8
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 27
 ; GFX11-NEXT:    s_lshr_b32 s42, s22, 16
-; GFX11-NEXT:    s_lshr_b32 s100, s29, 24
+; GFX11-NEXT:    s_lshr_b32 s99, s29, 24
 ; GFX11-NEXT:    s_lshr_b32 s101, s29, 16
 ; GFX11-NEXT:    s_lshr_b32 s103, s29, 8
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 26
@@ -185696,7 +186575,7 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 21
 ; GFX11-NEXT:    s_lshr_b32 s42, s20, 8
 ; GFX11-NEXT:    s_lshr_b64 s[94:95], s[40:41], 24
-; GFX11-NEXT:    s_lshr_b64 s[30:31], s[28:29], 24
+; GFX11-NEXT:    s_lshr_b64 vcc, s[28:29], 24
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 20
 ; GFX11-NEXT:    s_lshr_b32 s42, s19, 24
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
@@ -185749,9 +186628,152 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s42, s0, 8
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 0
 ; GFX11-NEXT:    s_lshr_b64 s[42:43], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, vcc_lo
-; GFX11-NEXT:    s_cbranch_vccnz .LBB95_4
-; GFX11-NEXT:  .LBB95_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB95_3
+; GFX11-NEXT:  .LBB95_2:
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    s_mov_b32 s100, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr104
+; GFX11-NEXT:    ; implicit-def: $sgpr102
+; GFX11-NEXT:    ; implicit-def: $sgpr103
+; GFX11-NEXT:    ; implicit-def: $sgpr101
+; GFX11-NEXT:    ; implicit-def: $sgpr99
+; GFX11-NEXT:    ; implicit-def: $sgpr98
+; GFX11-NEXT:    ; implicit-def: $sgpr96
+; GFX11-NEXT:    ; implicit-def: $sgpr97
+; GFX11-NEXT:    ; implicit-def: $sgpr87
+; GFX11-NEXT:    ; implicit-def: $sgpr86
+; GFX11-NEXT:    ; implicit-def: $sgpr85
+; GFX11-NEXT:    ; implicit-def: $sgpr83
+; GFX11-NEXT:    ; implicit-def: $sgpr84
+; GFX11-NEXT:    ; implicit-def: $sgpr82
+; GFX11-NEXT:    ; implicit-def: $sgpr81
+; GFX11-NEXT:    ; implicit-def: $sgpr80
+; GFX11-NEXT:    ; implicit-def: $sgpr70
+; GFX11-NEXT:    ; implicit-def: $sgpr71
+; GFX11-NEXT:    ; implicit-def: $sgpr69
+; GFX11-NEXT:    ; implicit-def: $sgpr68
+; GFX11-NEXT:    ; implicit-def: $sgpr67
+; GFX11-NEXT:    ; implicit-def: $sgpr65
+; GFX11-NEXT:    ; implicit-def: $sgpr66
+; GFX11-NEXT:    ; implicit-def: $sgpr64
+; GFX11-NEXT:    ; implicit-def: $sgpr55
+; GFX11-NEXT:    ; implicit-def: $sgpr54
+; GFX11-NEXT:    ; implicit-def: $sgpr52
+; GFX11-NEXT:    ; implicit-def: $sgpr53
+; GFX11-NEXT:    ; implicit-def: $sgpr51
+; GFX11-NEXT:    ; implicit-def: $sgpr50
+; GFX11-NEXT:    ; implicit-def: $sgpr49
+; GFX11-NEXT:    ; implicit-def: $sgpr39
+; GFX11-NEXT:    ; implicit-def: $sgpr48
+; GFX11-NEXT:    ; implicit-def: $sgpr38
+; GFX11-NEXT:    ; implicit-def: $sgpr37
+; GFX11-NEXT:    ; implicit-def: $sgpr36
+; GFX11-NEXT:    ; implicit-def: $sgpr34
+; GFX11-NEXT:    ; implicit-def: $sgpr35
+; GFX11-NEXT:    ; implicit-def: $sgpr31
+; GFX11-NEXT:    ; implicit-def: $sgpr30
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $vcc_lo
+; GFX11-NEXT:    ; implicit-def: $sgpr94
+; GFX11-NEXT:    ; implicit-def: $sgpr92
+; GFX11-NEXT:    ; implicit-def: $sgpr90
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:  .LBB95_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s43, s100, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s43, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s43, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB95_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v28, 0x200, s19 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v18, 0x200, s27 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v17, 0x200, s26 op_sel_hi:[0,1]
@@ -185880,146 +186902,8 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v132, 8, v16
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v145, 16, v15
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v134, 8, v15
-; GFX11-NEXT:    s_branch .LBB95_5
-; GFX11-NEXT:  .LBB95_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr104
-; GFX11-NEXT:    ; implicit-def: $sgpr102
-; GFX11-NEXT:    ; implicit-def: $sgpr103
-; GFX11-NEXT:    ; implicit-def: $sgpr101
-; GFX11-NEXT:    ; implicit-def: $sgpr100
-; GFX11-NEXT:    ; implicit-def: $sgpr99
-; GFX11-NEXT:    ; implicit-def: $sgpr97
-; GFX11-NEXT:    ; implicit-def: $sgpr98
-; GFX11-NEXT:    ; implicit-def: $sgpr96
-; GFX11-NEXT:    ; implicit-def: $sgpr87
-; GFX11-NEXT:    ; implicit-def: $sgpr86
-; GFX11-NEXT:    ; implicit-def: $sgpr84
-; GFX11-NEXT:    ; implicit-def: $sgpr85
-; GFX11-NEXT:    ; implicit-def: $sgpr83
-; GFX11-NEXT:    ; implicit-def: $sgpr82
-; GFX11-NEXT:    ; implicit-def: $sgpr81
-; GFX11-NEXT:    ; implicit-def: $sgpr71
-; GFX11-NEXT:    ; implicit-def: $sgpr80
-; GFX11-NEXT:    ; implicit-def: $sgpr70
-; GFX11-NEXT:    ; implicit-def: $sgpr69
-; GFX11-NEXT:    ; implicit-def: $sgpr68
-; GFX11-NEXT:    ; implicit-def: $sgpr66
-; GFX11-NEXT:    ; implicit-def: $sgpr67
-; GFX11-NEXT:    ; implicit-def: $sgpr65
-; GFX11-NEXT:    ; implicit-def: $sgpr64
-; GFX11-NEXT:    ; implicit-def: $sgpr55
-; GFX11-NEXT:    ; implicit-def: $sgpr53
-; GFX11-NEXT:    ; implicit-def: $sgpr54
-; GFX11-NEXT:    ; implicit-def: $sgpr52
-; GFX11-NEXT:    ; implicit-def: $sgpr51
-; GFX11-NEXT:    ; implicit-def: $sgpr50
-; GFX11-NEXT:    ; implicit-def: $sgpr48
-; GFX11-NEXT:    ; implicit-def: $sgpr49
-; GFX11-NEXT:    ; implicit-def: $sgpr39
-; GFX11-NEXT:    ; implicit-def: $sgpr38
-; GFX11-NEXT:    ; implicit-def: $sgpr37
-; GFX11-NEXT:    ; implicit-def: $sgpr35
-; GFX11-NEXT:    ; implicit-def: $sgpr36
-; GFX11-NEXT:    ; implicit-def: $sgpr34
-; GFX11-NEXT:    ; implicit-def: $vcc_hi
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr30
-; GFX11-NEXT:    ; implicit-def: $sgpr94
-; GFX11-NEXT:    ; implicit-def: $sgpr92
-; GFX11-NEXT:    ; implicit-def: $sgpr90
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    s_branch .LBB95_2
-; GFX11-NEXT:  .LBB95_4:
+; GFX11-NEXT:    s_branch .LBB95_6
+; GFX11-NEXT:  .LBB95_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v35, s0 :: v_dual_mov_b32 v36, s1
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 0
 ; GFX11-NEXT:    v_dual_mov_b32 v15, s28 :: v_dual_mov_b32 v16, s29
@@ -186059,47 +186943,47 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; GFX11-NEXT:    v_mov_b32_e32 v57, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 8
 ; GFX11-NEXT:    v_dual_mov_b32 v132, s103 :: v_dual_mov_b32 v135, s101
-; GFX11-NEXT:    v_dual_mov_b32 v144, s100 :: v_dual_mov_b32 v131, s99
+; GFX11-NEXT:    v_dual_mov_b32 v144, s99 :: v_dual_mov_b32 v131, s98
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_mov_b32_e32 v58, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 9
-; GFX11-NEXT:    v_dual_mov_b32 v133, s97 :: v_dual_mov_b32 v128, s98
-; GFX11-NEXT:    v_dual_mov_b32 v129, s96 :: v_dual_mov_b32 v130, s87
+; GFX11-NEXT:    v_dual_mov_b32 v133, s96 :: v_dual_mov_b32 v128, s97
+; GFX11-NEXT:    v_dual_mov_b32 v129, s87 :: v_dual_mov_b32 v130, s86
 ; GFX11-NEXT:    v_mov_b32_e32 v59, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 10
-; GFX11-NEXT:    v_dual_mov_b32 v116, s86 :: v_dual_mov_b32 v119, s84
-; GFX11-NEXT:    v_dual_mov_b32 v114, s85 :: v_dual_mov_b32 v117, s83
+; GFX11-NEXT:    v_dual_mov_b32 v116, s85 :: v_dual_mov_b32 v119, s83
+; GFX11-NEXT:    v_dual_mov_b32 v114, s84 :: v_dual_mov_b32 v117, s82
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_mov_b32_e32 v45, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 11
-; GFX11-NEXT:    v_dual_mov_b32 v118, s82 :: v_dual_mov_b32 v113, s81
-; GFX11-NEXT:    v_dual_mov_b32 v115, s71 :: v_dual_mov_b32 v102, s80
+; GFX11-NEXT:    v_dual_mov_b32 v118, s81 :: v_dual_mov_b32 v113, s80
+; GFX11-NEXT:    v_dual_mov_b32 v115, s70 :: v_dual_mov_b32 v102, s71
 ; GFX11-NEXT:    v_mov_b32_e32 v47, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 12
-; GFX11-NEXT:    v_dual_mov_b32 v103, s70 :: v_dual_mov_b32 v112, s69
-; GFX11-NEXT:    v_dual_mov_b32 v98, s68 :: v_dual_mov_b32 v101, s66
+; GFX11-NEXT:    v_dual_mov_b32 v103, s69 :: v_dual_mov_b32 v112, s68
+; GFX11-NEXT:    v_dual_mov_b32 v98, s67 :: v_dual_mov_b32 v101, s65
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_mov_b32_e32 v40, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 13
-; GFX11-NEXT:    v_dual_mov_b32 v96, s67 :: v_dual_mov_b32 v99, s65
-; GFX11-NEXT:    v_dual_mov_b32 v100, s64 :: v_dual_mov_b32 v87, s55
+; GFX11-NEXT:    v_dual_mov_b32 v96, s66 :: v_dual_mov_b32 v99, s64
+; GFX11-NEXT:    v_dual_mov_b32 v100, s55 :: v_dual_mov_b32 v87, s54
 ; GFX11-NEXT:    v_mov_b32_e32 v44, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 14
-; GFX11-NEXT:    v_dual_mov_b32 v97, s53 :: v_dual_mov_b32 v86, s51
-; GFX11-NEXT:    v_dual_mov_b32 v83, s54 :: v_dual_mov_b32 v82, s50
+; GFX11-NEXT:    v_dual_mov_b32 v97, s52 :: v_dual_mov_b32 v86, s50
+; GFX11-NEXT:    v_dual_mov_b32 v83, s53 :: v_dual_mov_b32 v82, s49
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_mov_b32_e32 v46, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 15
-; GFX11-NEXT:    v_dual_mov_b32 v85, s52 :: v_dual_mov_b32 v84, s48
-; GFX11-NEXT:    v_dual_mov_b32 v55, s49 :: v_dual_mov_b32 v80, s39
+; GFX11-NEXT:    v_dual_mov_b32 v85, s51 :: v_dual_mov_b32 v84, s39
+; GFX11-NEXT:    v_dual_mov_b32 v55, s48 :: v_dual_mov_b32 v80, s38
 ; GFX11-NEXT:    v_mov_b32_e32 v182, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 16
-; GFX11-NEXT:    v_dual_mov_b32 v81, s38 :: v_dual_mov_b32 v32, s37
-; GFX11-NEXT:    v_dual_mov_b32 v71, s35 :: v_dual_mov_b32 v26, s36
+; GFX11-NEXT:    v_dual_mov_b32 v81, s37 :: v_dual_mov_b32 v32, s36
+; GFX11-NEXT:    v_dual_mov_b32 v71, s34 :: v_dual_mov_b32 v26, s35
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_mov_b32_e32 v43, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 17
-; GFX11-NEXT:    v_dual_mov_b32 v39, s34 :: v_dual_mov_b32 v50, vcc_hi
+; GFX11-NEXT:    v_dual_mov_b32 v39, s31 :: v_dual_mov_b32 v50, s30
 ; GFX11-NEXT:    v_dual_mov_b32 v51, s72 :: v_dual_mov_b32 v52, s62
 ; GFX11-NEXT:    v_mov_b32_e32 v183, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 18
@@ -186118,7 +187002,7 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; GFX11-NEXT:    v_mov_b32_e32 v177, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 21
 ; GFX11-NEXT:    v_mov_b32_e32 v49, s92
-; GFX11-NEXT:    v_mov_b32_e32 v67, s30
+; GFX11-NEXT:    v_mov_b32_e32 v67, vcc_lo
 ; GFX11-NEXT:    v_mov_b32_e32 v181, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 22
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
@@ -186165,7 +187049,7 @@ define inreg <128 x i8> @bitcast_v64f16_to_v128i8_scalar(<64 x half> inreg %a, i
 ; GFX11-NEXT:    v_mov_b32_e32 v147, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v77, 7
 ; GFX11-NEXT:    v_mov_b32_e32 v148, s0
-; GFX11-NEXT:  .LBB95_5: ; %end
+; GFX11-NEXT:  .LBB95_6: ; %end
 ; GFX11-NEXT:    v_perm_b32 v68, v73, v70, 0xc0c0004
 ; GFX11-NEXT:    v_perm_b32 v70, v62, v72, 0xc0c0004
 ; GFX11-NEXT:    v_perm_b32 v69, v60, v69, 0xc0c0004
@@ -192783,361 +193667,363 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s4, v24
 ; SI-NEXT:    v_writelane_b32 v47, s4, 20
 ; SI-NEXT:    v_readfirstlane_b32 s4, v23
-; SI-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:332
 ; SI-NEXT:    v_writelane_b32 v47, s4, 21
 ; SI-NEXT:    v_readfirstlane_b32 s4, v22
 ; SI-NEXT:    v_writelane_b32 v47, s4, 22
 ; SI-NEXT:    v_readfirstlane_b32 s4, v21
-; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:328
+; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:332
 ; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 offset:324
+; SI-NEXT:    v_readfirstlane_b32 s92, v19
+; SI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:328
+; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:320
 ; SI-NEXT:    v_writelane_b32 v47, s4, 23
 ; SI-NEXT:    v_readfirstlane_b32 s4, v20
-; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:320
+; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:316
 ; SI-NEXT:    v_writelane_b32 v47, s4, 24
-; SI-NEXT:    v_readfirstlane_b32 s4, v19
-; SI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:316
-; SI-NEXT:    v_writelane_b32 v47, s4, 25
-; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v47, s4, 26
 ; SI-NEXT:    v_readfirstlane_b32 s4, v17
-; SI-NEXT:    v_writelane_b32 v47, s4, 27
+; SI-NEXT:    v_writelane_b32 v47, s4, 25
 ; SI-NEXT:    v_readfirstlane_b32 s4, v16
-; SI-NEXT:    v_writelane_b32 v47, s4, 28
+; SI-NEXT:    v_writelane_b32 v47, s4, 26
 ; SI-NEXT:    v_readfirstlane_b32 s4, v15
-; SI-NEXT:    v_writelane_b32 v47, s4, 29
+; SI-NEXT:    v_writelane_b32 v47, s4, 27
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
-; SI-NEXT:    v_writelane_b32 v47, s4, 30
+; SI-NEXT:    v_writelane_b32 v47, s4, 28
 ; SI-NEXT:    v_readfirstlane_b32 s4, v13
-; SI-NEXT:    v_writelane_b32 v47, s4, 31
-; SI-NEXT:    v_readfirstlane_b32 s4, v12
-; SI-NEXT:    v_writelane_b32 v47, s4, 32
-; SI-NEXT:    v_readfirstlane_b32 s4, v11
-; SI-NEXT:    v_writelane_b32 v47, s4, 33
-; SI-NEXT:    v_readfirstlane_b32 s4, v10
-; SI-NEXT:    v_writelane_b32 v47, s4, 34
+; SI-NEXT:    v_writelane_b32 v47, s4, 29
 ; SI-NEXT:    v_readfirstlane_b32 s4, v9
-; SI-NEXT:    v_writelane_b32 v47, s4, 35
+; SI-NEXT:    v_writelane_b32 v47, s4, 30
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
-; SI-NEXT:    v_writelane_b32 v47, s4, 36
+; SI-NEXT:    v_writelane_b32 v47, s4, 31
 ; SI-NEXT:    v_readfirstlane_b32 s4, v7
-; SI-NEXT:    v_writelane_b32 v47, s4, 37
+; SI-NEXT:    v_writelane_b32 v47, s4, 32
 ; SI-NEXT:    v_readfirstlane_b32 s4, v6
-; SI-NEXT:    v_writelane_b32 v47, s4, 38
-; SI-NEXT:    v_readfirstlane_b32 s4, v5
-; SI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:312
-; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:308
-; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:304
-; SI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:300
-; SI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:296
-; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:292
+; SI-NEXT:    v_readfirstlane_b32 s7, v18
+; SI-NEXT:    v_writelane_b32 v47, s4, 33
+; SI-NEXT:    v_readfirstlane_b32 s10, v0
+; SI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:244
+; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:240
+; SI-NEXT:    v_readfirstlane_b32 s6, v11
 ; SI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:288
 ; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:284
 ; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:280
+; SI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:264
+; SI-NEXT:    v_readfirstlane_b32 s11, v5
 ; SI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:276
-; SI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:264
-; SI-NEXT:    v_writelane_b32 v47, s4, 39
-; SI-NEXT:    v_readfirstlane_b32 s4, v4
-; SI-NEXT:    v_writelane_b32 v47, s4, 40
-; SI-NEXT:    v_readfirstlane_b32 s4, v3
-; SI-NEXT:    v_writelane_b32 v47, s4, 41
+; SI-NEXT:    v_readfirstlane_b32 s12, v4
 ; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:272
+; SI-NEXT:    v_readfirstlane_b32 s9, v3
 ; SI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:268
-; SI-NEXT:    v_readfirstlane_b32 s69, v2
+; SI-NEXT:    v_readfirstlane_b32 s14, v2
 ; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:260
+; SI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:312
+; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:308
+; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:304
+; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:292
+; SI-NEXT:    v_readfirstlane_b32 s13, v12
+; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:300
+; SI-NEXT:    v_readfirstlane_b32 s8, v10
+; SI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:296
 ; SI-NEXT:    ; implicit-def: $vgpr46 : SGPR spill to VGPR lane
 ; SI-NEXT:    s_waitcnt vmcnt(14)
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v23
+; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v21
 ; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
 ; SI-NEXT:    v_readfirstlane_b32 s4, v1
-; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:256
+; SI-NEXT:    v_writelane_b32 v47, s4, 34
+; SI-NEXT:    v_readfirstlane_b32 s4, v19
+; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:236
+; SI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:232
+; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:256
 ; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:252
-; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:248
-; SI-NEXT:    v_writelane_b32 v47, s4, 42
-; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:244
-; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:240
-; SI-NEXT:    v_readfirstlane_b32 s83, v21
-; SI-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:236
-; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:232
-; SI-NEXT:    v_readfirstlane_b32 s86, v22
-; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:228
-; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 offset:224
-; SI-NEXT:    v_readfirstlane_b32 s99, v20
+; SI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:248
+; SI-NEXT:    v_writelane_b32 v47, s4, 35
+; SI-NEXT:    v_readfirstlane_b32 s4, v22
+; SI-NEXT:    v_writelane_b32 v47, s4, 36
+; SI-NEXT:    v_readfirstlane_b32 s4, v24
 ; SI-NEXT:    buffer_load_dword v25, off, s[0:3], s32 offset:220
-; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:216
-; SI-NEXT:    v_readfirstlane_b32 s17, v19
+; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:216
+; SI-NEXT:    v_readfirstlane_b32 s19, v20
 ; SI-NEXT:    buffer_load_dword v29, off, s[0:3], s32 offset:212
-; SI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:208
-; SI-NEXT:    v_writelane_b32 v47, s4, 43
+; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:208
+; SI-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:228
+; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 offset:224
+; SI-NEXT:    v_writelane_b32 v47, s4, 37
+; SI-NEXT:    v_readfirstlane_b32 s84, v18
+; SI-NEXT:    v_readfirstlane_b32 s95, v0
+; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:60
+; SI-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:56
 ; SI-NEXT:    s_waitcnt vmcnt(14)
-; SI-NEXT:    v_readfirstlane_b32 s66, v14
-; SI-NEXT:    v_readfirstlane_b32 s84, v13
-; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:196
-; SI-NEXT:    buffer_load_dword v27, off, s[0:3], s32 offset:192
-; SI-NEXT:    v_readfirstlane_b32 s8, v12
-; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:188
-; SI-NEXT:    buffer_load_dword v28, off, s[0:3], s32 offset:184
-; SI-NEXT:    v_readfirstlane_b32 s9, v11
-; SI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:180
-; SI-NEXT:    buffer_load_dword v30, off, s[0:3], s32 offset:176
-; SI-NEXT:    v_readfirstlane_b32 s16, v10
-; SI-NEXT:    v_readfirstlane_b32 s46, v6
-; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:140
-; SI-NEXT:    buffer_load_dword v35, off, s[0:3], s32 offset:136
-; SI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:172
-; SI-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:168
-; SI-NEXT:    v_readfirstlane_b32 s24, v8
+; SI-NEXT:    v_readfirstlane_b32 s68, v8
 ; SI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:156
 ; SI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:152
-; SI-NEXT:    v_readfirstlane_b32 s29, v7
-; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:148
-; SI-NEXT:    buffer_load_dword v34, off, s[0:3], s32 offset:144
-; SI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:204
-; SI-NEXT:    buffer_load_dword v26, off, s[0:3], s32 offset:200
-; SI-NEXT:    v_readfirstlane_b32 s10, v4
-; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:124
-; SI-NEXT:    buffer_load_dword v37, off, s[0:3], s32 offset:120
-; SI-NEXT:    v_readfirstlane_b32 s13, v3
-; SI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:116
-; SI-NEXT:    buffer_load_dword v38, off, s[0:3], s32 offset:112
-; SI-NEXT:    v_readfirstlane_b32 s19, v9
-; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:164
-; SI-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:160
-; SI-NEXT:    v_readfirstlane_b32 s47, v5
+; SI-NEXT:    v_readfirstlane_b32 s44, v6
+; SI-NEXT:    v_readfirstlane_b32 s26, v11
+; SI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:108
+; SI-NEXT:    buffer_load_dword v39, off, s[0:3], s32 offset:104
+; SI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:140
+; SI-NEXT:    buffer_load_dword v35, off, s[0:3], s32 offset:136
+; SI-NEXT:    v_readfirstlane_b32 s45, v5
 ; SI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:132
 ; SI-NEXT:    buffer_load_dword v36, off, s[0:3], s32 offset:128
-; SI-NEXT:    v_readfirstlane_b32 s27, v15
-; SI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:108
-; SI-NEXT:    buffer_load_dword v39, off, s[0:3], s32 offset:104
-; SI-NEXT:    s_waitcnt vmcnt(14)
+; SI-NEXT:    v_readfirstlane_b32 s74, v4
+; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:124
+; SI-NEXT:    buffer_load_dword v37, off, s[0:3], s32 offset:120
+; SI-NEXT:    v_readfirstlane_b32 s93, v3
 ; SI-NEXT:    v_readfirstlane_b32 s28, v2
 ; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:100
 ; SI-NEXT:    buffer_load_dword v48, off, s[0:3], s32 offset:96
-; SI-NEXT:    v_readfirstlane_b32 s54, v16
-; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:92
-; SI-NEXT:    buffer_load_dword v49, off, s[0:3], s32 offset:88
-; SI-NEXT:    v_readfirstlane_b32 s59, v17
-; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:76
-; SI-NEXT:    buffer_load_dword v51, off, s[0:3], s32 offset:72
-; SI-NEXT:    v_readfirstlane_b32 s61, v18
+; SI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:116
+; SI-NEXT:    buffer_load_dword v38, off, s[0:3], s32 offset:112
+; SI-NEXT:    v_readfirstlane_b32 s29, v7
+; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:148
+; SI-NEXT:    buffer_load_dword v34, off, s[0:3], s32 offset:144
+; SI-NEXT:    v_readfirstlane_b32 s64, v15
+; SI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:204
+; SI-NEXT:    buffer_load_dword v26, off, s[0:3], s32 offset:200
+; SI-NEXT:    v_readfirstlane_b32 s22, v16
+; SI-NEXT:    s_waitcnt vmcnt(14)
+; SI-NEXT:    v_readfirstlane_b32 s4, v10
+; SI-NEXT:    v_writelane_b32 v47, s4, 38
+; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:196
+; SI-NEXT:    buffer_load_dword v27, off, s[0:3], s32 offset:192
+; SI-NEXT:    v_readfirstlane_b32 s24, v9
+; SI-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:164
+; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:160
+; SI-NEXT:    v_readfirstlane_b32 s75, v13
+; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:188
+; SI-NEXT:    buffer_load_dword v28, off, s[0:3], s32 offset:184
+; SI-NEXT:    v_readfirstlane_b32 s99, v12
+; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:180
+; SI-NEXT:    buffer_load_dword v30, off, s[0:3], s32 offset:176
+; SI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:172
+; SI-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:168
 ; SI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:68
 ; SI-NEXT:    buffer_load_dword v52, off, s[0:3], s32 offset:64
-; SI-NEXT:    v_readfirstlane_b32 s44, v1
-; SI-NEXT:    v_readfirstlane_b32 s52, v21
-; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:44
+; SI-NEXT:    v_readfirstlane_b32 s4, v17
+; SI-NEXT:    v_readfirstlane_b32 s66, v21
+; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:52
+; SI-NEXT:    buffer_load_dword v54, off, s[0:3], s32 offset:48
+; SI-NEXT:    v_readfirstlane_b32 s81, v19
+; SI-NEXT:    buffer_load_dword v19, off, s[0:3], s32 offset:44
 ; SI-NEXT:    buffer_load_dword v55, off, s[0:3], s32 offset:40
-; SI-NEXT:    v_readfirstlane_b32 s53, v24
-; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:36
-; SI-NEXT:    s_waitcnt expcnt(4)
-; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:32
-; SI-NEXT:    v_readfirstlane_b32 s45, v22
-; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 offset:28
-; SI-NEXT:    s_waitcnt expcnt(3)
-; SI-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:24
-; SI-NEXT:    v_readfirstlane_b32 s60, v20
-; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 offset:12
+; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:92
+; SI-NEXT:    buffer_load_dword v49, off, s[0:3], s32 offset:88
+; SI-NEXT:    v_readfirstlane_b32 s31, v1
+; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:84
+; SI-NEXT:    buffer_load_dword v50, off, s[0:3], s32 offset:80
+; SI-NEXT:    v_readfirstlane_b32 s57, v14
+; SI-NEXT:    buffer_load_dword v14, off, s[0:3], s32 offset:76
+; SI-NEXT:    buffer_load_dword v51, off, s[0:3], s32 offset:72
+; SI-NEXT:    v_readfirstlane_b32 s83, v24
+; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:12
 ; SI-NEXT:    s_waitcnt expcnt(1)
 ; SI-NEXT:    buffer_load_dword v43, off, s[0:3], s32 offset:8
-; SI-NEXT:    v_readfirstlane_b32 s62, v29
+; SI-NEXT:    v_readfirstlane_b32 s86, v29
 ; SI-NEXT:    buffer_load_dword v29, off, s[0:3], s32 offset:4
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    buffer_load_dword v44, off, s[0:3], s32
-; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:84
-; SI-NEXT:    buffer_load_dword v50, off, s[0:3], s32 offset:80
-; SI-NEXT:    v_readfirstlane_b32 s14, v0
-; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:60
-; SI-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:56
-; SI-NEXT:    v_readfirstlane_b32 s15, v23
-; SI-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:52
-; SI-NEXT:    buffer_load_dword v54, off, s[0:3], s32 offset:48
-; SI-NEXT:    v_readfirstlane_b32 s56, v25
+; SI-NEXT:    v_readfirstlane_b32 s80, v23
+; SI-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:36
+; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:32
+; SI-NEXT:    v_readfirstlane_b32 s65, v22
+; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 offset:28
+; SI-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:24
+; SI-NEXT:    v_readfirstlane_b32 s46, v25
 ; SI-NEXT:    buffer_load_dword v25, off, s[0:3], s32 offset:20
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:16
-; SI-NEXT:    v_writelane_b32 v46, s54, 0
-; SI-NEXT:    v_writelane_b32 v46, s53, 1
-; SI-NEXT:    v_readfirstlane_b32 s40, v19
-; SI-NEXT:    v_readfirstlane_b32 s50, v13
-; SI-NEXT:    v_readfirstlane_b32 s64, v27
-; SI-NEXT:    v_readfirstlane_b32 s85, v12
-; SI-NEXT:    v_readfirstlane_b32 s58, v28
-; SI-NEXT:    v_readfirstlane_b32 s57, v11
-; SI-NEXT:    v_readfirstlane_b32 s11, v30
-; SI-NEXT:    v_readfirstlane_b32 s7, v6
-; SI-NEXT:    v_writelane_b32 v46, s7, 2
-; SI-NEXT:    v_writelane_b32 v46, s64, 3
-; SI-NEXT:    v_writelane_b32 v46, s44, 4
-; SI-NEXT:    v_writelane_b32 v46, s85, 5
-; SI-NEXT:    v_writelane_b32 v46, s8, 6
-; SI-NEXT:    v_writelane_b32 v46, s45, 7
-; SI-NEXT:    v_writelane_b32 v46, s46, 8
-; SI-NEXT:    v_writelane_b32 v46, s47, 9
-; SI-NEXT:    v_writelane_b32 v46, s56, 10
-; SI-NEXT:    v_writelane_b32 v46, s9, 11
-; SI-NEXT:    v_writelane_b32 v46, s57, 12
-; SI-NEXT:    v_writelane_b32 v46, s58, 13
-; SI-NEXT:    v_writelane_b32 v46, s10, 14
+; SI-NEXT:    v_writelane_b32 v47, s4, 39
+; SI-NEXT:    v_readfirstlane_b32 s67, v20
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v0
+; SI-NEXT:    v_writelane_b32 v46, vcc_hi, 0
+; SI-NEXT:    v_readfirstlane_b32 s34, v53
+; SI-NEXT:    v_readfirstlane_b32 s55, v8
+; SI-NEXT:    v_readfirstlane_b32 s90, v33
+; SI-NEXT:    v_readfirstlane_b32 s27, v11
+; SI-NEXT:    v_readfirstlane_b32 s36, v39
 ; SI-NEXT:    s_waitcnt vmcnt(14)
-; SI-NEXT:    v_readfirstlane_b32 s92, v3
-; SI-NEXT:    v_writelane_b32 v46, s11, 15
-; SI-NEXT:    v_readfirstlane_b32 s12, v10
-; SI-NEXT:    v_readfirstlane_b32 s30, v37
-; SI-NEXT:    v_writelane_b32 v46, s59, 16
-; SI-NEXT:    v_readfirstlane_b32 s36, v7
-; SI-NEXT:    v_writelane_b32 v46, s12, 17
-; SI-NEXT:    v_readfirstlane_b32 s48, v33
-; SI-NEXT:    v_writelane_b32 v46, s60, 18
-; SI-NEXT:    v_writelane_b32 v46, s61, 19
-; SI-NEXT:    v_writelane_b32 v46, s13, 20
-; SI-NEXT:    v_writelane_b32 v46, s62, 21
-; SI-NEXT:    v_readfirstlane_b32 s6, v34
-; SI-NEXT:    v_writelane_b32 v46, s14, 22
-; SI-NEXT:    v_writelane_b32 v46, s15, 23
-; SI-NEXT:    v_readfirstlane_b32 s41, v14
-; SI-NEXT:    v_readfirstlane_b32 s51, v26
-; SI-NEXT:    v_readfirstlane_b32 s87, v31
-; SI-NEXT:    v_readfirstlane_b32 s23, v9
-; SI-NEXT:    v_readfirstlane_b32 s25, v32
-; SI-NEXT:    v_readfirstlane_b32 s26, v8
-; SI-NEXT:    v_readfirstlane_b32 s4, v51
-; SI-NEXT:    v_writelane_b32 v47, s4, 44
-; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v47, s4, 45
-; SI-NEXT:    v_readfirstlane_b32 s4, v52
-; SI-NEXT:    v_writelane_b32 v47, s4, 46
-; SI-NEXT:    v_readfirstlane_b32 s4, v55
-; SI-NEXT:    v_writelane_b32 v47, s4, 47
-; SI-NEXT:    v_readfirstlane_b32 s4, v24
-; SI-NEXT:    v_writelane_b32 v47, s4, 48
-; SI-NEXT:    v_readfirstlane_b32 s4, v40
-; SI-NEXT:    v_writelane_b32 v47, s4, 49
+; SI-NEXT:    v_readfirstlane_b32 s50, v35
+; SI-NEXT:    v_readfirstlane_b32 s49, v5
+; SI-NEXT:    v_readfirstlane_b32 s51, v36
+; SI-NEXT:    v_readfirstlane_b32 s52, v4
+; SI-NEXT:    v_readfirstlane_b32 s54, v37
+; SI-NEXT:    v_readfirstlane_b32 s73, v6
+; SI-NEXT:    v_readfirstlane_b32 s35, v2
+; SI-NEXT:    v_readfirstlane_b32 s37, v48
+; SI-NEXT:    v_readfirstlane_b32 s53, v3
+; SI-NEXT:    v_readfirstlane_b32 s69, v7
+; SI-NEXT:    v_readfirstlane_b32 s72, v34
+; SI-NEXT:    v_readfirstlane_b32 s21, v15
+; SI-NEXT:    v_readfirstlane_b32 s87, v26
+; SI-NEXT:    v_readfirstlane_b32 s70, v38
+; SI-NEXT:    v_readfirstlane_b32 s71, v16
+; SI-NEXT:    v_readfirstlane_b32 s82, v27
+; SI-NEXT:    v_readfirstlane_b32 s4, v32
+; SI-NEXT:    v_writelane_b32 v47, s4, 40
+; SI-NEXT:    v_writelane_b32 v47, s13, 41
+; SI-NEXT:    v_readfirstlane_b32 s79, v13
+; SI-NEXT:    v_writelane_b32 v47, s11, 42
+; SI-NEXT:    v_writelane_b32 v47, s12, 43
+; SI-NEXT:    v_writelane_b32 v47, s6, 44
+; SI-NEXT:    v_writelane_b32 v47, s7, 45
+; SI-NEXT:    v_writelane_b32 v47, s8, 46
+; SI-NEXT:    v_writelane_b32 v47, s9, 47
+; SI-NEXT:    v_readfirstlane_b32 s47, v12
+; SI-NEXT:    v_writelane_b32 v47, s10, 48
+; SI-NEXT:    v_readfirstlane_b32 s56, v28
+; SI-NEXT:    v_writelane_b32 v47, s14, 49
+; SI-NEXT:    v_readfirstlane_b32 s89, v30
+; SI-NEXT:    v_readfirstlane_b32 s91, v10
+; SI-NEXT:    v_readfirstlane_b32 s77, v18
+; SI-NEXT:    v_readfirstlane_b32 s25, v31
+; SI-NEXT:    v_readfirstlane_b32 s98, v9
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v52
+; SI-NEXT:    v_readfirstlane_b32 s30, v21
+; SI-NEXT:    v_writelane_b32 v46, s30, 1
+; SI-NEXT:    v_writelane_b32 v46, s34, 2
+; SI-NEXT:    v_writelane_b32 v46, s35, 3
+; SI-NEXT:    v_readfirstlane_b32 s60, v54
+; SI-NEXT:    v_writelane_b32 v46, s36, 4
+; SI-NEXT:    v_readfirstlane_b32 s61, v19
+; SI-NEXT:    v_writelane_b32 v46, s60, 5
+; SI-NEXT:    v_writelane_b32 v46, s61, 6
+; SI-NEXT:    v_readfirstlane_b32 s38, v17
+; SI-NEXT:    v_writelane_b32 v46, s37, 7
+; SI-NEXT:    s_waitcnt vmcnt(13)
+; SI-NEXT:    v_readfirstlane_b32 s39, v1
+; SI-NEXT:    v_writelane_b32 v46, s38, 8
+; SI-NEXT:    v_readfirstlane_b32 s48, v49
+; SI-NEXT:    v_writelane_b32 v46, s39, 9
 ; SI-NEXT:    s_waitcnt vmcnt(12)
-; SI-NEXT:    v_readfirstlane_b32 s4, v41
-; SI-NEXT:    v_writelane_b32 v47, s4, 50
-; SI-NEXT:    s_waitcnt vmcnt(10)
-; SI-NEXT:    v_readfirstlane_b32 s4, v43
-; SI-NEXT:    v_writelane_b32 v47, s4, 51
-; SI-NEXT:    s_waitcnt vmcnt(9)
-; SI-NEXT:    v_readfirstlane_b32 s4, v29
-; SI-NEXT:    v_writelane_b32 v47, s4, 52
-; SI-NEXT:    s_waitcnt vmcnt(8)
-; SI-NEXT:    v_readfirstlane_b32 s4, v44
-; SI-NEXT:    v_writelane_b32 v47, s4, 53
-; SI-NEXT:    v_writelane_b32 v47, s92, 54
-; SI-NEXT:    v_writelane_b32 v47, s30, 55
-; SI-NEXT:    v_writelane_b32 v47, s36, 56
-; SI-NEXT:    v_writelane_b32 v47, s48, 57
-; SI-NEXT:    v_writelane_b32 v47, s66, 58
-; SI-NEXT:    v_writelane_b32 v47, s52, 59
-; SI-NEXT:    v_writelane_b32 v47, s84, 60
-; SI-NEXT:    v_writelane_b32 v47, s6, 61
-; SI-NEXT:    v_readfirstlane_b32 s67, v35
-; SI-NEXT:    v_readfirstlane_b32 s94, v5
-; SI-NEXT:    v_readfirstlane_b32 s65, v36
-; SI-NEXT:    v_readfirstlane_b32 s22, v4
-; SI-NEXT:    v_readfirstlane_b32 s18, v38
-; SI-NEXT:    v_readfirstlane_b32 s20, v15
-; SI-NEXT:    v_readfirstlane_b32 s35, v39
-; SI-NEXT:    v_readfirstlane_b32 s31, v2
-; SI-NEXT:    v_readfirstlane_b32 s78, v48
-; SI-NEXT:    v_readfirstlane_b32 s98, v16
-; SI-NEXT:    v_readfirstlane_b32 s97, v49
+; SI-NEXT:    v_readfirstlane_b32 s62, v50
+; SI-NEXT:    v_writelane_b32 v46, s48, 10
+; SI-NEXT:    v_writelane_b32 v46, s62, 11
+; SI-NEXT:    v_writelane_b32 v46, s49, 12
+; SI-NEXT:    s_waitcnt vmcnt(11)
+; SI-NEXT:    v_readfirstlane_b32 s63, v14
+; SI-NEXT:    v_writelane_b32 v46, s50, 13
+; SI-NEXT:    v_writelane_b32 v46, s63, 14
+; SI-NEXT:    v_writelane_b32 v46, s51, 15
+; SI-NEXT:    v_writelane_b32 v46, s52, 16
+; SI-NEXT:    v_writelane_b32 v46, s53, 17
+; SI-NEXT:    v_writelane_b32 v46, s54, 18
+; SI-NEXT:    v_writelane_b32 v46, s55, 19
+; SI-NEXT:    v_writelane_b32 v46, s64, 20
+; SI-NEXT:    v_writelane_b32 v46, s81, 21
+; SI-NEXT:    v_writelane_b32 v46, s72, 22
+; SI-NEXT:    v_writelane_b32 v46, s71, 23
+; SI-NEXT:    v_writelane_b32 v46, s87, 24
+; SI-NEXT:    v_writelane_b32 v46, s80, 25
+; SI-NEXT:    v_writelane_b32 v46, s73, 26
+; SI-NEXT:    v_writelane_b32 v46, s82, 27
+; SI-NEXT:    v_writelane_b32 v46, s79, 28
+; SI-NEXT:    v_writelane_b32 v46, s75, 29
+; SI-NEXT:    v_writelane_b32 v46, s65, 30
+; SI-NEXT:    v_writelane_b32 v46, s44, 31
+; SI-NEXT:    v_writelane_b32 v46, s45, 32
+; SI-NEXT:    v_writelane_b32 v46, s46, 33
 ; SI-NEXT:    s_waitcnt vmcnt(7)
-; SI-NEXT:    v_readfirstlane_b32 s55, v1
+; SI-NEXT:    v_readfirstlane_b32 s16, v29
+; SI-NEXT:    v_writelane_b32 v46, s47, 34
+; SI-NEXT:    v_readfirstlane_b32 s17, v43
+; SI-NEXT:    v_writelane_b32 v47, s16, 50
+; SI-NEXT:    v_writelane_b32 v46, s56, 35
 ; SI-NEXT:    s_waitcnt vmcnt(6)
-; SI-NEXT:    v_readfirstlane_b32 s81, v50
-; SI-NEXT:    v_readfirstlane_b32 s71, v17
+; SI-NEXT:    v_readfirstlane_b32 s15, v44
+; SI-NEXT:    v_writelane_b32 v47, s17, 51
+; SI-NEXT:    v_writelane_b32 v46, s74, 36
 ; SI-NEXT:    s_waitcnt vmcnt(5)
-; SI-NEXT:    v_readfirstlane_b32 s96, v0
+; SI-NEXT:    v_readfirstlane_b32 s18, v23
+; SI-NEXT:    v_writelane_b32 v47, s15, 52
+; SI-NEXT:    v_writelane_b32 v46, s89, 37
+; SI-NEXT:    v_readfirstlane_b32 s23, v55
+; SI-NEXT:    v_writelane_b32 v47, s18, 53
+; SI-NEXT:    v_writelane_b32 v46, s57, 38
 ; SI-NEXT:    s_waitcnt vmcnt(4)
-; SI-NEXT:    v_readfirstlane_b32 s79, v53
+; SI-NEXT:    v_readfirstlane_b32 s40, v40
+; SI-NEXT:    v_writelane_b32 v47, s23, 54
+; SI-NEXT:    v_writelane_b32 v46, s91, 39
 ; SI-NEXT:    s_waitcnt vmcnt(3)
-; SI-NEXT:    v_readfirstlane_b32 s90, v23
-; SI-NEXT:    s_waitcnt vmcnt(2)
-; SI-NEXT:    v_readfirstlane_b32 s37, v54
-; SI-NEXT:    v_readfirstlane_b32 s82, v21
-; SI-NEXT:    v_readfirstlane_b32 s80, v22
-; SI-NEXT:    s_waitcnt vmcnt(1)
-; SI-NEXT:    v_readfirstlane_b32 s70, v25
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_readfirstlane_b32 s76, v42
-; SI-NEXT:    v_readfirstlane_b32 s21, v20
-; SI-NEXT:    v_writelane_b32 v47, s50, 62
-; SI-NEXT:    v_writelane_b32 v46, s40, 24
-; SI-NEXT:    v_writelane_b32 v47, s51, 63
-; SI-NEXT:    v_writelane_b32 v46, s41, 25
-; SI-NEXT:    s_cbranch_scc0 .LBB97_4
+; SI-NEXT:    v_readfirstlane_b32 s41, v22
+; SI-NEXT:    v_writelane_b32 v47, s40, 55
+; SI-NEXT:    v_writelane_b32 v46, s83, 40
+; SI-NEXT:    s_waitcnt vmcnt(1)
+; SI-NEXT:    v_readfirstlane_b32 s42, v25
+; SI-NEXT:    v_writelane_b32 v47, s41, 56
+; SI-NEXT:    v_writelane_b32 v46, s84, 41
+; SI-NEXT:    v_readfirstlane_b32 s43, v41
+; SI-NEXT:    v_writelane_b32 v47, s42, 57
+; SI-NEXT:    v_writelane_b32 v46, s93, 42
+; SI-NEXT:    v_writelane_b32 v47, s43, 58
+; SI-NEXT:    v_writelane_b32 v46, s86, 43
+; SI-NEXT:    v_readfirstlane_b32 s78, v51
+; SI-NEXT:    v_writelane_b32 v47, s77, 59
+; SI-NEXT:    v_writelane_b32 v46, s95, 44
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_readfirstlane_b32 s58, v42
+; SI-NEXT:    v_writelane_b32 v47, s78, 60
+; SI-NEXT:    v_writelane_b32 v46, s66, 45
+; SI-NEXT:    v_readfirstlane_b32 s59, v24
+; SI-NEXT:    v_writelane_b32 v47, s58, 61
+; SI-NEXT:    v_writelane_b32 v46, s67, 46
+; SI-NEXT:    v_writelane_b32 v47, s59, 62
+; SI-NEXT:    v_writelane_b32 v46, s21, 47
+; SI-NEXT:    v_writelane_b32 v47, vcc_lo, 63
+; SI-NEXT:    v_writelane_b32 v46, s31, 48
+; SI-NEXT:    s_cbranch_scc0 .LBB97_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_readlane_b32 s4, v47, 13
 ; SI-NEXT:    v_readlane_b32 s5, v47, 12
 ; SI-NEXT:    s_and_b32 s4, s4, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 26
+; SI-NEXT:    s_or_b32 s20, s4, s5
 ; SI-NEXT:    v_readlane_b32 s4, v47, 5
 ; SI-NEXT:    v_readlane_b32 s5, v47, 4
 ; SI-NEXT:    s_and_b32 s4, s4, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_readlane_b32 s5, v47, 41
-; SI-NEXT:    v_writelane_b32 v46, s4, 28
-; SI-NEXT:    s_and_b32 s4, s69, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s5, 8
-; SI-NEXT:    v_writelane_b32 v46, s69, 44
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 30
-; SI-NEXT:    v_readlane_b32 s4, v47, 34
-; SI-NEXT:    v_readlane_b32 s5, v47, 33
-; SI-NEXT:    s_and_b32 s4, s4, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s5, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 32
-; SI-NEXT:    v_readlane_b32 s4, v47, 26
-; SI-NEXT:    v_readlane_b32 s5, v47, 25
-; SI-NEXT:    s_and_b32 s4, s4, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s5, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 34
+; SI-NEXT:    s_or_b32 s88, s4, s5
+; SI-NEXT:    s_and_b32 s4, s14, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s9, 8
+; SI-NEXT:    s_or_b32 s94, s4, s5
+; SI-NEXT:    s_and_b32 s4, s8, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s6, 8
+; SI-NEXT:    s_or_b32 s85, s4, s5
+; SI-NEXT:    s_and_b32 s4, s7, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s92, 8
+; SI-NEXT:    s_or_b32 s96, s4, s5
 ; SI-NEXT:    v_readlane_b32 s4, v47, 18
 ; SI-NEXT:    v_readlane_b32 s5, v47, 17
 ; SI-NEXT:    s_and_b32 s4, s4, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 36
-; SI-NEXT:    s_and_b32 s4, s21, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s76, 8
-; SI-NEXT:    v_writelane_b32 v46, s24, 45
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 38
-; SI-NEXT:    s_and_b32 s4, s82, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s37, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 40
-; SI-NEXT:    s_and_b32 s4, s71, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s81, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 42
-; SI-NEXT:    s_and_b32 s4, s20, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s18, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 46
-; SI-NEXT:    s_and_b32 s4, s7, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s6, 8
-; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_writelane_b32 v46, s4, 47
-; SI-NEXT:    s_and_b32 s4, s12, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s11, 8
+; SI-NEXT:    v_writelane_b32 v46, s22, 49
+; SI-NEXT:    s_or_b32 s22, s4, s5
+; SI-NEXT:    s_and_b32 s4, s59, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s58, 8
+; SI-NEXT:    s_or_b32 s58, s4, s5
+; SI-NEXT:    s_and_b32 s4, s61, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s60, 8
+; SI-NEXT:    s_or_b32 s59, s4, s5
+; SI-NEXT:    s_and_b32 s4, s63, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s62, 8
+; SI-NEXT:    s_or_b32 s60, s4, s5
+; SI-NEXT:    s_and_b32 s4, s27, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s70, 8
+; SI-NEXT:    s_or_b32 s61, s4, s5
+; SI-NEXT:    s_and_b32 s4, s73, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s72, 8
+; SI-NEXT:    s_or_b32 s62, s4, s5
+; SI-NEXT:    s_and_b32 s4, s91, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s89, 8
 ; SI-NEXT:    s_or_b32 s63, s4, s5
-; SI-NEXT:    s_and_b32 s4, s41, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s40, 8
+; SI-NEXT:    s_and_b32 s4, s21, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s67, 8
 ; SI-NEXT:    s_or_b32 s72, s4, s5
-; SI-NEXT:    s_and_b32 s4, s15, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s14, 8
+; SI-NEXT:    s_and_b32 s4, s66, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s95, 8
 ; SI-NEXT:    s_or_b32 s73, s4, s5
-; SI-NEXT:    s_and_b32 s4, s13, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s10, 8
+; SI-NEXT:    s_and_b32 s4, s93, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s74, 8
 ; SI-NEXT:    s_or_b32 s74, s4, s5
-; SI-NEXT:    s_and_b32 s4, s9, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s8, 8
+; SI-NEXT:    s_and_b32 s4, s99, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s75, 8
 ; SI-NEXT:    s_or_b32 s75, s4, s5
 ; SI-NEXT:    v_readlane_b32 s4, v47, 9
 ; SI-NEXT:    v_readlane_b32 s5, v47, 8
@@ -193149,61 +194035,63 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    v_readlane_b32 s6, v47, 6
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_lshl_b32 s6, s6, 24
-; SI-NEXT:    s_or_b32 s68, s6, s4
+; SI-NEXT:    s_or_b32 s7, s6, s4
 ; SI-NEXT:    v_readlane_b32 s4, v47, 11
 ; SI-NEXT:    s_and_b32 s4, s4, 0xff
 ; SI-NEXT:    v_readlane_b32 s6, v47, 10
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_lshl_b32 s6, s6, 24
+; SI-NEXT:    s_and_b32 s5, s5, 0xffff
+; SI-NEXT:    v_writelane_b32 v46, s7, 50
 ; SI-NEXT:    s_or_b32 s4, s6, s4
+; SI-NEXT:    s_or_b32 s5, s5, s7
 ; SI-NEXT:    v_readlane_b32 s6, v47, 1
 ; SI-NEXT:    v_readlane_b32 s7, v47, 0
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s7, 8
 ; SI-NEXT:    s_or_b32 s7, s6, s7
-; SI-NEXT:    v_readlane_b32 s6, v47, 43
-; SI-NEXT:    s_and_b32 s6, s6, 0xff
-; SI-NEXT:    v_readlane_b32 s8, v47, 42
+; SI-NEXT:    s_and_b32 s6, s10, 0xff
+; SI-NEXT:    v_readlane_b32 s8, v47, 34
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_lshl_b32 s8, s8, 24
-; SI-NEXT:    s_or_b32 s91, s8, s6
+; SI-NEXT:    s_or_b32 s9, s8, s6
 ; SI-NEXT:    v_readlane_b32 s6, v47, 3
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
 ; SI-NEXT:    v_readlane_b32 s8, v47, 2
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_lshl_b32 s8, s8, 24
+; SI-NEXT:    s_and_b32 s7, s7, 0xffff
+; SI-NEXT:    v_writelane_b32 v46, s9, 51
 ; SI-NEXT:    s_or_b32 s6, s8, s6
-; SI-NEXT:    v_readlane_b32 s8, v47, 38
-; SI-NEXT:    v_readlane_b32 s9, v47, 37
+; SI-NEXT:    s_or_b32 s7, s7, s9
+; SI-NEXT:    v_readlane_b32 s8, v47, 33
+; SI-NEXT:    v_readlane_b32 s9, v47, 32
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
 ; SI-NEXT:    s_lshl_b32 s9, s9, 8
 ; SI-NEXT:    s_or_b32 s9, s8, s9
-; SI-NEXT:    v_readlane_b32 s8, v47, 36
+; SI-NEXT:    v_readlane_b32 s8, v47, 31
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s10, v47, 35
+; SI-NEXT:    v_readlane_b32 s10, v47, 30
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_lshl_b32 s10, s10, 24
-; SI-NEXT:    s_or_b32 s88, s10, s8
-; SI-NEXT:    v_readlane_b32 s8, v47, 40
-; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s10, v47, 39
+; SI-NEXT:    s_or_b32 s14, s10, s8
+; SI-NEXT:    s_and_b32 s8, s12, 0xff
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
-; SI-NEXT:    s_lshl_b32 s10, s10, 24
+; SI-NEXT:    s_lshl_b32 s10, s11, 24
 ; SI-NEXT:    s_or_b32 s8, s10, s8
-; SI-NEXT:    v_readlane_b32 s10, v47, 30
-; SI-NEXT:    v_readlane_b32 s11, v47, 29
+; SI-NEXT:    v_readlane_b32 s10, v47, 28
+; SI-NEXT:    v_readlane_b32 s11, v47, 27
 ; SI-NEXT:    s_and_b32 s10, s10, 0xff
 ; SI-NEXT:    s_lshl_b32 s11, s11, 8
 ; SI-NEXT:    s_or_b32 s11, s10, s11
-; SI-NEXT:    v_readlane_b32 s10, v47, 28
+; SI-NEXT:    v_readlane_b32 s10, v47, 26
 ; SI-NEXT:    s_and_b32 s10, s10, 0xff
-; SI-NEXT:    v_readlane_b32 s12, v47, 27
+; SI-NEXT:    v_readlane_b32 s12, v47, 25
 ; SI-NEXT:    s_lshl_b32 s10, s10, 16
 ; SI-NEXT:    s_lshl_b32 s12, s12, 24
-; SI-NEXT:    s_or_b32 s95, s12, s10
-; SI-NEXT:    v_readlane_b32 s10, v47, 32
-; SI-NEXT:    s_and_b32 s10, s10, 0xff
-; SI-NEXT:    v_readlane_b32 s12, v47, 31
+; SI-NEXT:    s_or_b32 s91, s12, s10
+; SI-NEXT:    s_and_b32 s10, s13, 0xff
+; SI-NEXT:    v_readlane_b32 s12, v47, 29
 ; SI-NEXT:    s_lshl_b32 s10, s10, 16
 ; SI-NEXT:    s_lshl_b32 s12, s12, 24
 ; SI-NEXT:    s_or_b32 s10, s12, s10
@@ -193211,13 +194099,16 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    v_readlane_b32 s13, v47, 21
 ; SI-NEXT:    s_and_b32 s12, s12, 0xff
 ; SI-NEXT:    s_lshl_b32 s13, s13, 8
+; SI-NEXT:    s_and_b32 s9, s9, 0xffff
 ; SI-NEXT:    s_or_b32 s13, s12, s13
 ; SI-NEXT:    v_readlane_b32 s12, v47, 20
+; SI-NEXT:    v_writelane_b32 v46, s14, 52
+; SI-NEXT:    s_or_b32 s9, s9, s14
 ; SI-NEXT:    s_and_b32 s12, s12, 0xff
 ; SI-NEXT:    v_readlane_b32 s14, v47, 19
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_lshl_b32 s14, s14, 24
-; SI-NEXT:    s_or_b32 s89, s14, s12
+; SI-NEXT:    s_or_b32 s93, s14, s12
 ; SI-NEXT:    v_readlane_b32 s12, v47, 24
 ; SI-NEXT:    s_and_b32 s12, s12, 0xff
 ; SI-NEXT:    v_readlane_b32 s14, v47, 23
@@ -193225,366 +194116,337 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s14, s14, 24
 ; SI-NEXT:    s_or_b32 s12, s14, s12
 ; SI-NEXT:    v_readlane_b32 s14, v47, 14
-; SI-NEXT:    v_readlane_b32 s15, v47, 53
 ; SI-NEXT:    s_and_b32 s14, s14, 0xff
 ; SI-NEXT:    s_lshl_b32 s15, s15, 8
-; SI-NEXT:    v_writelane_b32 v46, s71, 48
 ; SI-NEXT:    s_or_b32 s15, s14, s15
-; SI-NEXT:    v_readlane_b32 s14, v47, 52
-; SI-NEXT:    s_and_b32 s14, s14, 0xff
-; SI-NEXT:    v_writelane_b32 v46, s16, 49
-; SI-NEXT:    v_readlane_b32 s16, v47, 51
+; SI-NEXT:    s_and_b32 s14, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
-; SI-NEXT:    v_writelane_b32 v46, s18, 50
-; SI-NEXT:    s_lshl_b32 s18, s16, 24
-; SI-NEXT:    s_or_b32 s93, s18, s14
+; SI-NEXT:    s_mov_b32 s67, s29
+; SI-NEXT:    s_mov_b32 s29, s28
+; SI-NEXT:    s_mov_b32 s28, s26
+; SI-NEXT:    s_mov_b32 s26, s68
+; SI-NEXT:    s_mov_b32 s68, s24
+; SI-NEXT:    s_mov_b32 s24, s25
+; SI-NEXT:    s_lshl_b32 s25, s17, 24
+; SI-NEXT:    s_or_b32 s17, s25, s14
 ; SI-NEXT:    v_readlane_b32 s14, v47, 16
+; SI-NEXT:    v_writelane_b32 v46, s90, 53
 ; SI-NEXT:    s_and_b32 s14, s14, 0xff
 ; SI-NEXT:    v_readlane_b32 s16, v47, 15
+; SI-NEXT:    v_writelane_b32 v46, s69, 54
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
-; SI-NEXT:    s_lshl_b32 s18, s16, 24
-; SI-NEXT:    v_readlane_b32 s16, v47, 49
-; SI-NEXT:    s_or_b32 s14, s18, s14
-; SI-NEXT:    s_and_b32 s18, s80, 0xff
-; SI-NEXT:    s_lshl_b32 s40, s16, 8
-; SI-NEXT:    v_readlane_b32 s16, v47, 48
-; SI-NEXT:    s_or_b32 s41, s18, s40
-; SI-NEXT:    s_and_b32 s18, s16, 0xff
-; SI-NEXT:    v_readlane_b32 s16, v47, 47
-; SI-NEXT:    s_lshl_b32 s18, s18, 16
-; SI-NEXT:    s_lshl_b32 s40, s16, 24
-; SI-NEXT:    s_mov_b32 s24, s21
-; SI-NEXT:    s_or_b32 s21, s40, s18
-; SI-NEXT:    s_and_b32 s40, s70, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v47, 50
-; SI-NEXT:    s_lshl_b32 s40, s40, 16
-; SI-NEXT:    s_lshl_b32 s42, s18, 24
-; SI-NEXT:    v_readlane_b32 s18, v47, 46
-; SI-NEXT:    s_or_b32 s40, s42, s40
-; SI-NEXT:    s_and_b32 s42, s96, 0xff
-; SI-NEXT:    s_lshl_b32 s43, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v47, 45
-; SI-NEXT:    s_or_b32 s43, s42, s43
-; SI-NEXT:    s_and_b32 s42, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v47, 44
-; SI-NEXT:    s_mov_b32 s34, s76
-; SI-NEXT:    s_lshl_b32 s42, s42, 16
-; SI-NEXT:    s_lshl_b32 s76, s18, 24
-; SI-NEXT:    s_or_b32 s69, s76, s42
-; SI-NEXT:    s_and_b32 s42, s90, 0xff
+; SI-NEXT:    s_lshl_b32 s25, s16, 24
+; SI-NEXT:    s_or_b32 s14, s25, s14
+; SI-NEXT:    s_and_b32 s25, s41, 0xff
+; SI-NEXT:    v_writelane_b32 v46, s27, 55
+; SI-NEXT:    s_lshl_b32 s27, s40, 8
+; SI-NEXT:    s_or_b32 s25, s25, s27
+; SI-NEXT:    s_and_b32 s27, s18, 0xff
+; SI-NEXT:    s_lshl_b32 s27, s27, 16
+; SI-NEXT:    s_lshl_b32 s18, s23, 24
+; SI-NEXT:    s_or_b32 s18, s18, s27
+; SI-NEXT:    s_and_b32 s27, s42, 0xff
+; SI-NEXT:    s_lshl_b32 s27, s27, 16
+; SI-NEXT:    s_lshl_b32 s40, s43, 24
+; SI-NEXT:    s_and_b32 s25, s25, 0xffff
+; SI-NEXT:    s_or_b32 s40, s40, s27
+; SI-NEXT:    s_or_b32 s41, s25, s18
+; SI-NEXT:    s_and_b32 s25, vcc_hi, 0xff
+; SI-NEXT:    s_lshl_b32 s27, vcc_lo, 8
+; SI-NEXT:    s_or_b32 s27, s25, s27
+; SI-NEXT:    s_and_b32 s25, s77, 0xff
+; SI-NEXT:    s_lshl_b32 s25, s25, 16
+; SI-NEXT:    s_lshl_b32 s42, s78, 24
+; SI-NEXT:    s_or_b32 s66, s42, s25
+; SI-NEXT:    s_and_b32 s42, s30, 0xff
 ; SI-NEXT:    s_lshl_b32 s42, s42, 16
-; SI-NEXT:    s_lshl_b32 s76, s79, 24
-; SI-NEXT:    s_or_b32 s42, s76, s42
-; SI-NEXT:    s_and_b32 s76, s98, 0xff
-; SI-NEXT:    s_lshl_b32 s77, s78, 8
-; SI-NEXT:    v_writelane_b32 v46, s20, 51
+; SI-NEXT:    s_lshl_b32 s43, s34, 24
+; SI-NEXT:    s_and_b32 s27, s27, 0xffff
+; SI-NEXT:    s_or_b32 s42, s43, s42
+; SI-NEXT:    s_or_b32 s43, s27, s66
+; SI-NEXT:    s_and_b32 s27, s38, 0xff
+; SI-NEXT:    s_lshl_b32 s76, s37, 8
+; SI-NEXT:    s_or_b32 s76, s27, s76
+; SI-NEXT:    s_and_b32 s27, s35, 0xff
+; SI-NEXT:    s_lshl_b32 s27, s27, 16
+; SI-NEXT:    s_lshl_b32 s77, s36, 24
+; SI-NEXT:    s_or_b32 s90, s77, s27
+; SI-NEXT:    s_and_b32 s77, s39, 0xff
+; SI-NEXT:    s_lshl_b32 s77, s77, 16
+; SI-NEXT:    s_lshl_b32 s78, s48, 24
+; SI-NEXT:    s_and_b32 s76, s76, 0xffff
+; SI-NEXT:    s_or_b32 s34, s78, s77
+; SI-NEXT:    s_or_b32 s35, s76, s90
+; SI-NEXT:    s_and_b32 s76, s52, 0xff
+; SI-NEXT:    s_lshl_b32 s77, s51, 8
 ; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s31, 0xff
-; SI-NEXT:    v_writelane_b32 v46, s78, 52
+; SI-NEXT:    s_and_b32 s77, s49, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s35, 24
-; SI-NEXT:    s_mov_b32 s16, s70
-; SI-NEXT:    s_or_b32 s70, s78, s77
-; SI-NEXT:    s_and_b32 s77, s55, 0xff
+; SI-NEXT:    s_lshl_b32 s78, s50, 24
+; SI-NEXT:    s_or_b32 s69, s78, s77
+; SI-NEXT:    s_and_b32 s77, s53, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s97, 24
+; SI-NEXT:    s_lshl_b32 s78, s54, 24
 ; SI-NEXT:    s_and_b32 s76, s76, 0xffff
-; SI-NEXT:    s_or_b32 vcc_lo, s78, s77
-; SI-NEXT:    s_or_b32 vcc_hi, s76, s70
-; SI-NEXT:    s_and_b32 s76, s22, 0xff
-; SI-NEXT:    s_lshl_b32 s77, s65, 8
+; SI-NEXT:    s_or_b32 s36, s78, s77
+; SI-NEXT:    s_or_b32 s37, s76, s69
+; SI-NEXT:    s_and_b32 s76, s55, 0xff
+; SI-NEXT:    s_lshl_b32 s77, s98, 8
+; SI-NEXT:    v_readlane_b32 s16, v47, 40
 ; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s94, 0xff
+; SI-NEXT:    s_and_b32 s77, s16, 0xff
+; SI-NEXT:    v_writelane_b32 v46, s70, 56
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s67, 24
-; SI-NEXT:    s_or_b32 s71, s78, s77
-; SI-NEXT:    s_and_b32 s77, s92, 0xff
+; SI-NEXT:    s_lshl_b32 s78, s24, 24
+; SI-NEXT:    v_readlane_b32 s16, v46, 54
+; SI-NEXT:    s_or_b32 s70, s78, s77
+; SI-NEXT:    s_and_b32 s77, s16, 0xff
+; SI-NEXT:    v_readlane_b32 s16, v46, 53
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s30, 24
+; SI-NEXT:    s_lshl_b32 s78, s16, 24
 ; SI-NEXT:    s_and_b32 s76, s76, 0xffff
 ; SI-NEXT:    s_or_b32 s38, s78, s77
-; SI-NEXT:    s_or_b32 s39, s76, s71
-; SI-NEXT:    s_and_b32 s76, s26, 0xff
-; SI-NEXT:    s_lshl_b32 s77, s25, 8
+; SI-NEXT:    s_or_b32 s39, s76, s70
+; SI-NEXT:    s_and_b32 s76, s79, 0xff
+; SI-NEXT:    s_lshl_b32 s77, s82, 8
 ; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s23, 0xff
+; SI-NEXT:    s_and_b32 s77, s71, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
 ; SI-NEXT:    s_lshl_b32 s78, s87, 24
-; SI-NEXT:    v_writelane_b32 v46, s80, 53
-; SI-NEXT:    s_or_b32 s80, s78, s77
-; SI-NEXT:    s_and_b32 s77, s36, 0xff
+; SI-NEXT:    s_or_b32 s71, s78, s77
+; SI-NEXT:    s_and_b32 s77, s47, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s48, 24
+; SI-NEXT:    s_lshl_b32 s78, s56, 24
 ; SI-NEXT:    s_and_b32 s76, s76, 0xffff
 ; SI-NEXT:    s_or_b32 s48, s78, s77
-; SI-NEXT:    s_or_b32 s49, s76, s80
-; SI-NEXT:    s_and_b32 s76, s85, 0xff
-; SI-NEXT:    s_lshl_b32 s77, s64, 8
-; SI-NEXT:    v_writelane_b32 v46, s98, 54
+; SI-NEXT:    s_or_b32 s49, s76, s71
+; SI-NEXT:    s_and_b32 s76, s46, 0xff
+; SI-NEXT:    s_lshl_b32 s77, s65, 8
 ; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s50, 0xff
-; SI-NEXT:    v_writelane_b32 v46, s24, 55
+; SI-NEXT:    s_and_b32 s77, s80, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s51, 24
-; SI-NEXT:    v_writelane_b32 v46, s34, 56
-; SI-NEXT:    v_writelane_b32 v46, s81, 57
-; SI-NEXT:    s_or_b32 s81, s78, s77
-; SI-NEXT:    s_and_b32 s77, s57, 0xff
+; SI-NEXT:    s_lshl_b32 s78, s81, 24
+; SI-NEXT:    s_or_b32 vcc_hi, s78, s77
+; SI-NEXT:    s_and_b32 s77, s86, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s58, 24
+; SI-NEXT:    s_lshl_b32 s78, s83, 24
 ; SI-NEXT:    s_and_b32 s76, s76, 0xffff
+; SI-NEXT:    v_readlane_b32 s16, v47, 39
 ; SI-NEXT:    s_or_b32 s50, s78, s77
-; SI-NEXT:    s_or_b32 s51, s76, s81
-; SI-NEXT:    s_and_b32 s76, s56, 0xff
-; SI-NEXT:    s_lshl_b32 s77, s45, 8
-; SI-NEXT:    v_writelane_b32 v46, s22, 58
+; SI-NEXT:    s_or_b32 s51, s76, vcc_hi
+; SI-NEXT:    s_and_b32 s76, s31, 0xff
+; SI-NEXT:    s_lshl_b32 s77, s16, 8
 ; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s53, 0xff
-; SI-NEXT:    v_writelane_b32 v46, s65, 59
+; SI-NEXT:    s_and_b32 s77, s29, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s52, 24
-; SI-NEXT:    v_writelane_b32 v46, s67, 60
-; SI-NEXT:    v_writelane_b32 v46, s94, 61
-; SI-NEXT:    s_mov_b32 s94, s82
-; SI-NEXT:    s_or_b32 s82, s78, s77
-; SI-NEXT:    s_and_b32 s77, s62, 0xff
+; SI-NEXT:    s_lshl_b32 s78, s28, 24
+; SI-NEXT:    s_or_b32 s31, s78, s77
+; SI-NEXT:    s_and_b32 s77, s84, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s60, 24
+; SI-NEXT:    s_lshl_b32 s78, s57, 24
 ; SI-NEXT:    s_and_b32 s76, s76, 0xffff
 ; SI-NEXT:    s_or_b32 s52, s78, s77
-; SI-NEXT:    s_or_b32 s53, s76, s82
-; SI-NEXT:    s_and_b32 s76, s44, 0xff
-; SI-NEXT:    s_lshl_b32 s77, s54, 8
+; SI-NEXT:    s_or_b32 s53, s76, s31
+; SI-NEXT:    s_and_b32 s76, s67, 0xff
+; SI-NEXT:    s_lshl_b32 s77, s26, 8
 ; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s28, 0xff
+; SI-NEXT:    s_and_b32 s77, s68, 0xff
+; SI-NEXT:    v_readlane_b32 s16, v47, 38
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s27, 24
-; SI-NEXT:    v_writelane_b32 v46, s97, 62
-; SI-NEXT:    s_mov_b32 s92, s28
-; SI-NEXT:    s_mov_b32 s28, s27
-; SI-NEXT:    s_mov_b32 s27, s26
-; SI-NEXT:    s_mov_b32 s26, s25
-; SI-NEXT:    s_mov_b32 s25, s87
-; SI-NEXT:    s_or_b32 s87, s78, s77
-; SI-NEXT:    s_and_b32 s77, s61, 0xff
-; SI-NEXT:    s_mov_b32 s24, s23
-; SI-NEXT:    s_mov_b32 s23, s16
+; SI-NEXT:    s_lshl_b32 s78, s16, 24
+; SI-NEXT:    s_or_b32 s82, s78, s77
+; SI-NEXT:    s_and_b32 s77, s45, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s59, 24
+; SI-NEXT:    s_lshl_b32 s78, s44, 24
 ; SI-NEXT:    s_and_b32 s76, s76, 0xffff
-; SI-NEXT:    v_readlane_b32 s16, v46, 45
-; SI-NEXT:    s_mov_b32 s85, s55
+; SI-NEXT:    v_readlane_b32 s16, v47, 37
 ; SI-NEXT:    s_or_b32 s54, s78, s77
-; SI-NEXT:    s_or_b32 s55, s76, s87
-; SI-NEXT:    s_and_b32 s76, s29, 0xff
+; SI-NEXT:    s_or_b32 s55, s76, s82
+; SI-NEXT:    s_and_b32 s76, s19, 0xff
 ; SI-NEXT:    s_lshl_b32 s77, s16, 8
-; SI-NEXT:    v_readlane_b32 s18, v46, 26
+; SI-NEXT:    v_readlane_b32 s16, v47, 36
+; SI-NEXT:    s_and_b32 s15, s15, 0xffff
 ; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s19, 0xff
-; SI-NEXT:    v_readlane_b32 s16, v46, 49
-; SI-NEXT:    s_and_b32 s44, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 28
+; SI-NEXT:    s_and_b32 s77, s16, 0xff
+; SI-NEXT:    v_readlane_b32 s16, v47, 35
+; SI-NEXT:    s_or_b32 s15, s15, s17
 ; SI-NEXT:    s_lshl_b32 s77, s77, 16
 ; SI-NEXT:    s_lshl_b32 s78, s16, 24
-; SI-NEXT:    s_and_b32 s45, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 30
-; SI-NEXT:    s_mov_b32 s20, s19
-; SI-NEXT:    s_mov_b32 s19, s37
-; SI-NEXT:    s_mov_b32 s37, s35
-; SI-NEXT:    s_mov_b32 s35, s31
-; SI-NEXT:    s_mov_b32 s31, s79
-; SI-NEXT:    s_mov_b32 s79, s90
-; SI-NEXT:    s_mov_b32 s90, s96
-; SI-NEXT:    s_or_b32 s96, s78, s77
-; SI-NEXT:    s_lshl_b32 s78, s46, 24
-; SI-NEXT:    s_and_b32 s46, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 32
-; SI-NEXT:    s_and_b32 s77, s47, 0xff
-; SI-NEXT:    s_and_b32 s47, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 34
-; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_and_b32 s76, s76, 0xffff
-; SI-NEXT:    s_and_b32 s56, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 36
-; SI-NEXT:    s_or_b32 s64, s78, s77
-; SI-NEXT:    s_or_b32 s65, s76, s96
-; SI-NEXT:    s_and_b32 s76, s17, 0xff
-; SI-NEXT:    s_lshl_b32 s77, s99, 8
-; SI-NEXT:    s_and_b32 s57, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 38
-; SI-NEXT:    s_or_b32 s76, s76, s77
-; SI-NEXT:    s_and_b32 s77, s86, 0xff
-; SI-NEXT:    s_and_b32 s30, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 40
-; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s83, 24
-; SI-NEXT:    s_and_b32 s34, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 42
-; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_mov_b32 s16, s83
-; SI-NEXT:    s_or_b32 s83, s78, s77
-; SI-NEXT:    s_and_b32 s77, s84, 0xff
-; SI-NEXT:    s_and_b32 s36, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 46
-; SI-NEXT:    s_or_b32 s5, s5, s68
-; SI-NEXT:    s_lshl_b32 s77, s77, 16
-; SI-NEXT:    s_lshl_b32 s78, s66, 24
-; SI-NEXT:    s_and_b32 s76, s76, 0xffff
-; SI-NEXT:    s_and_b32 s84, s18, 0xffff
-; SI-NEXT:    v_readlane_b32 s18, v46, 47
-; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_or_b32 s66, s78, s77
-; SI-NEXT:    s_or_b32 s67, s76, s83
-; SI-NEXT:    s_mov_b32 s78, s86
-; SI-NEXT:    s_and_b32 s86, s18, 0xffff
-; SI-NEXT:    s_mov_b32 s76, s99
-; SI-NEXT:    s_and_b32 s99, s74, 0xffff
-; SI-NEXT:    s_and_b32 s18, s75, 0xffff
+; SI-NEXT:    v_readlane_b32 s16, v46, 49
+; SI-NEXT:    s_and_b32 s44, s20, 0xffff
+; SI-NEXT:    s_mov_b32 s25, s99
+; SI-NEXT:    s_or_b32 s87, s78, s77
+; SI-NEXT:    s_and_b32 s77, s16, 0xff
+; SI-NEXT:    s_and_b32 s57, s22, 0xffff
+; SI-NEXT:    s_and_b32 s22, s74, 0xffff
+; SI-NEXT:    s_and_b32 s99, s75, 0xffff
 ; SI-NEXT:    s_or_b32 s74, s44, s4
 ; SI-NEXT:    s_mov_b32 s75, s5
-; SI-NEXT:    s_lshr_b64 s[4:5], s[4:5], 16
-; SI-NEXT:    s_or_b32 s7, s7, s91
-; SI-NEXT:    v_writelane_b32 v46, s4, 26
-; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    v_writelane_b32 v46, s5, 27
-; SI-NEXT:    s_lshr_b64 s[4:5], s[6:7], 16
-; SI-NEXT:    s_or_b32 s9, s9, s88
-; SI-NEXT:    v_writelane_b32 v46, s4, 28
+; SI-NEXT:    s_lshr_b64 s[20:21], s[4:5], 16
+; SI-NEXT:    s_lshr_b64 s[4:5], s[14:15], 16
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    v_writelane_b32 v46, s5, 29
-; SI-NEXT:    s_lshr_b64 s[4:5], s[8:9], 16
-; SI-NEXT:    s_or_b32 s11, s11, s95
-; SI-NEXT:    v_writelane_b32 v46, s4, 30
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    v_writelane_b32 v46, s5, 31
-; SI-NEXT:    s_lshr_b64 s[4:5], s[10:11], 16
-; SI-NEXT:    s_or_b32 s13, s13, s89
-; SI-NEXT:    v_writelane_b32 v46, s4, 32
-; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    v_writelane_b32 v46, s5, 33
-; SI-NEXT:    s_lshr_b64 s[4:5], s[12:13], 16
-; SI-NEXT:    s_or_b32 s15, s15, s93
-; SI-NEXT:    v_writelane_b32 v46, s4, 34
-; SI-NEXT:    s_and_b32 s41, s41, 0xffff
-; SI-NEXT:    v_writelane_b32 v46, s5, 35
-; SI-NEXT:    s_lshr_b64 s[4:5], s[14:15], 16
-; SI-NEXT:    s_or_b32 s41, s41, s21
-; SI-NEXT:    v_writelane_b32 v46, s4, 36
-; SI-NEXT:    s_and_b32 s43, s43, 0xffff
-; SI-NEXT:    v_writelane_b32 v46, s5, 37
-; SI-NEXT:    s_lshr_b64 s[4:5], s[40:41], 16
-; SI-NEXT:    s_or_b32 s43, s43, s69
-; SI-NEXT:    v_writelane_b32 v46, s4, 38
-; SI-NEXT:    v_writelane_b32 v46, s5, 39
-; SI-NEXT:    s_lshr_b64 s[4:5], s[42:43], 16
-; SI-NEXT:    v_writelane_b32 v46, s4, 40
-; SI-NEXT:    v_writelane_b32 v46, s5, 41
-; SI-NEXT:    s_lshr_b64 s[4:5], vcc, 16
-; SI-NEXT:    s_and_b32 s97, s63, 0xffff
-; SI-NEXT:    s_and_b32 s98, s72, 0xffff
-; SI-NEXT:    s_and_b32 s22, s73, 0xffff
-; SI-NEXT:    v_writelane_b32 v46, s4, 42
+; SI-NEXT:    s_lshl_b32 s77, s77, 16
+; SI-NEXT:    s_lshl_b32 s78, s64, 24
+; SI-NEXT:    s_and_b32 s76, s76, 0xffff
+; SI-NEXT:    v_readlane_b32 s5, v46, 50
+; SI-NEXT:    s_or_b32 s11, s11, s91
+; SI-NEXT:    s_or_b32 s13, s13, s93
+; SI-NEXT:    s_mov_b32 s27, s98
+; SI-NEXT:    s_or_b32 s64, s78, s77
+; SI-NEXT:    s_or_b32 s65, s76, s87
+; SI-NEXT:    s_and_b32 s45, s88, 0xffff
+; SI-NEXT:    s_and_b32 s46, s94, 0xffff
+; SI-NEXT:    s_and_b32 s47, s85, 0xffff
+; SI-NEXT:    s_and_b32 s56, s96, 0xffff
+; SI-NEXT:    s_and_b32 vcc_lo, s58, 0xffff
+; SI-NEXT:    s_and_b32 s30, s59, 0xffff
+; SI-NEXT:    s_and_b32 s96, s60, 0xffff
+; SI-NEXT:    s_and_b32 s83, s61, 0xffff
+; SI-NEXT:    s_and_b32 s16, s62, 0xffff
+; SI-NEXT:    s_and_b32 s86, s63, 0xffff
+; SI-NEXT:    s_and_b32 s97, s72, 0xffff
+; SI-NEXT:    s_and_b32 s98, s73, 0xffff
+; SI-NEXT:    s_lshr_b64 s[76:77], s[6:7], 16
+; SI-NEXT:    s_lshr_b32 s23, s5, 16
+; SI-NEXT:    v_readlane_b32 s5, v46, 51
 ; SI-NEXT:    s_or_b32 s72, s45, s6
 ; SI-NEXT:    s_mov_b32 s73, s7
 ; SI-NEXT:    s_or_b32 s62, s46, s8
 ; SI-NEXT:    s_mov_b32 s63, s9
+; SI-NEXT:    s_lshr_b64 s[78:79], s[8:9], 16
 ; SI-NEXT:    s_or_b32 s60, s47, s10
 ; SI-NEXT:    s_mov_b32 s61, s11
+; SI-NEXT:    s_lshr_b64 s[80:81], s[10:11], 16
 ; SI-NEXT:    s_or_b32 s58, s56, s12
 ; SI-NEXT:    s_mov_b32 s59, s13
+; SI-NEXT:    s_lshr_b64 s[10:11], s[12:13], 16
 ; SI-NEXT:    s_or_b32 s56, s57, s14
 ; SI-NEXT:    s_mov_b32 s57, s15
-; SI-NEXT:    s_or_b32 s46, s30, s40
+; SI-NEXT:    s_or_b32 s46, vcc_lo, s40
 ; SI-NEXT:    s_mov_b32 s47, s41
-; SI-NEXT:    v_writelane_b32 v46, s5, 43
-; SI-NEXT:    s_or_b32 s40, s84, s38
-; SI-NEXT:    s_mov_b32 s41, s39
+; SI-NEXT:    s_lshr_b64 s[6:7], s[40:41], 16
+; SI-NEXT:    s_or_b32 s44, s30, s42
+; SI-NEXT:    s_mov_b32 s45, s43
+; SI-NEXT:    s_lshr_b64 s[88:89], s[42:43], 16
+; SI-NEXT:    s_or_b32 s42, s96, s34
+; SI-NEXT:    s_mov_b32 s43, s35
+; SI-NEXT:    s_lshr_b64 s[84:85], s[34:35], 16
+; SI-NEXT:    s_or_b32 s40, s83, s36
+; SI-NEXT:    s_mov_b32 s41, s37
+; SI-NEXT:    s_lshr_b64 s[8:9], s[36:37], 16
+; SI-NEXT:    s_or_b32 s14, s16, s38
+; SI-NEXT:    s_mov_b32 s15, s39
 ; SI-NEXT:    s_lshr_b64 s[38:39], s[38:39], 16
-; SI-NEXT:    s_or_b32 s14, s86, s48
-; SI-NEXT:    s_mov_b32 s15, s49
+; SI-NEXT:    s_or_b32 s12, s86, s48
+; SI-NEXT:    s_mov_b32 s13, s49
 ; SI-NEXT:    s_lshr_b64 s[48:49], s[48:49], 16
-; SI-NEXT:    s_or_b32 s12, s97, s50
-; SI-NEXT:    s_mov_b32 s13, s51
+; SI-NEXT:    s_or_b32 s94, s97, s50
+; SI-NEXT:    s_mov_b32 s95, s51
 ; SI-NEXT:    s_lshr_b64 s[50:51], s[50:51], 16
-; SI-NEXT:    s_or_b32 s10, s98, s52
-; SI-NEXT:    s_mov_b32 s11, s53
+; SI-NEXT:    s_or_b32 s36, s98, s52
+; SI-NEXT:    s_mov_b32 s37, s53
 ; SI-NEXT:    s_lshr_b64 s[52:53], s[52:53], 16
-; SI-NEXT:    s_or_b32 s8, s22, s54
-; SI-NEXT:    s_mov_b32 s9, s55
+; SI-NEXT:    s_or_b32 s34, s22, s54
+; SI-NEXT:    s_mov_b32 s35, s55
 ; SI-NEXT:    s_lshr_b64 s[54:55], s[54:55], 16
-; SI-NEXT:    s_or_b32 s6, s99, s64
-; SI-NEXT:    s_mov_b32 s7, s65
+; SI-NEXT:    s_lshr_b32 s77, s5, 16
+; SI-NEXT:    v_readlane_b32 s5, v46, 52
+; SI-NEXT:    v_readlane_b32 s22, v46, 49
+; SI-NEXT:    s_or_b32 s96, s99, s64
+; SI-NEXT:    s_mov_b32 s97, s65
 ; SI-NEXT:    s_lshr_b64 s[64:65], s[64:65], 16
-; SI-NEXT:    s_or_b32 s4, s18, s66
-; SI-NEXT:    s_mov_b32 s5, s67
-; SI-NEXT:    s_lshr_b64 s[66:67], s[66:67], 16
-; SI-NEXT:    s_or_b32 s44, s34, s42
-; SI-NEXT:    s_mov_b32 s45, s43
-; SI-NEXT:    s_or_b32 s42, s36, vcc_lo
-; SI-NEXT:    s_mov_b32 s43, vcc_hi
-; SI-NEXT:    s_mov_b32 s86, s78
-; SI-NEXT:    s_mov_b32 s99, s76
-; SI-NEXT:    v_readlane_b32 s18, v46, 50
-; SI-NEXT:    s_lshr_b32 s77, s68, 16
-; SI-NEXT:    s_lshr_b32 s68, s91, 16
-; SI-NEXT:    s_lshr_b32 s88, s88, 16
-; SI-NEXT:    s_lshr_b32 s84, s95, 16
-; SI-NEXT:    s_lshr_b32 s89, s89, 16
-; SI-NEXT:    s_lshr_b32 s91, s93, 16
-; SI-NEXT:    s_lshr_b32 s93, s21, 16
-; SI-NEXT:    s_lshr_b32 s95, s69, 16
-; SI-NEXT:    s_lshr_b32 s30, s70, 16
-; SI-NEXT:    s_lshr_b32 s34, s71, 16
-; SI-NEXT:    s_lshr_b32 s36, s80, 16
-; SI-NEXT:    v_readlane_b32 s69, v46, 44
-; SI-NEXT:    v_readlane_b32 s80, v46, 53
-; SI-NEXT:    s_lshr_b32 s39, s81, 16
-; SI-NEXT:    v_readlane_b32 s81, v46, 57
-; SI-NEXT:    v_readlane_b32 s76, v46, 56
-; SI-NEXT:    v_readlane_b32 s21, v46, 55
-; SI-NEXT:    v_readlane_b32 s98, v46, 54
-; SI-NEXT:    s_lshr_b32 s49, s82, 16
-; SI-NEXT:    s_mov_b32 s82, s94
-; SI-NEXT:    v_readlane_b32 s71, v46, 48
-; SI-NEXT:    v_readlane_b32 s78, v46, 52
-; SI-NEXT:    s_mov_b32 s55, s85
-; SI-NEXT:    v_readlane_b32 s97, v46, 62
-; SI-NEXT:    v_readlane_b32 s94, v46, 61
-; SI-NEXT:    v_readlane_b32 s67, v46, 60
-; SI-NEXT:    v_readlane_b32 s65, v46, 59
-; SI-NEXT:    v_readlane_b32 s22, v46, 58
-; SI-NEXT:    s_lshr_b32 s51, s87, 16
-; SI-NEXT:    s_mov_b32 s70, s23
-; SI-NEXT:    s_mov_b32 s23, s24
-; SI-NEXT:    v_readlane_b32 s24, v46, 45
-; SI-NEXT:    s_mov_b32 s87, s25
-; SI-NEXT:    s_mov_b32 s25, s26
-; SI-NEXT:    s_mov_b32 s26, s27
-; SI-NEXT:    s_mov_b32 s27, s28
-; SI-NEXT:    s_mov_b32 s28, s92
-; SI-NEXT:    s_lshr_b32 s53, s96, 16
-; SI-NEXT:    s_mov_b32 s96, s90
-; SI-NEXT:    s_mov_b32 s90, s79
-; SI-NEXT:    s_mov_b32 s79, s31
-; SI-NEXT:    s_mov_b32 s31, s35
-; SI-NEXT:    s_mov_b32 s35, s37
-; SI-NEXT:    s_mov_b32 s37, s19
-; SI-NEXT:    s_mov_b32 s19, s20
-; SI-NEXT:    v_readlane_b32 s20, v46, 51
-; SI-NEXT:    s_lshr_b32 s92, s83, 16
-; SI-NEXT:    s_mov_b32 s83, s16
-; SI-NEXT:    v_readlane_b32 s16, v46, 49
-; SI-NEXT:    s_cbranch_execnz .LBB97_3
-; SI-NEXT:  .LBB97_2: ; %cmp.true
-; SI-NEXT:    v_readlane_b32 s4, v46, 11
-; SI-NEXT:    s_add_i32 s85, s4, 3
-; SI-NEXT:    v_readlane_b32 s5, v46, 6
-; SI-NEXT:    v_readlane_b32 s6, v47, 60
+; SI-NEXT:    s_lshr_b32 s5, s5, 16
+; SI-NEXT:    s_lshr_b32 s91, s91, 16
+; SI-NEXT:    s_lshr_b32 s93, s93, 16
+; SI-NEXT:    s_lshr_b32 s11, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s18, 16
+; SI-NEXT:    s_lshr_b32 s30, s66, 16
+; SI-NEXT:    s_lshr_b32 s7, s90, 16
+; SI-NEXT:    s_lshr_b32 s9, s69, 16
+; SI-NEXT:    s_lshr_b32 s39, s70, 16
+; SI-NEXT:    s_mov_b32 s98, s27
+; SI-NEXT:    s_mov_b32 s99, s25
+; SI-NEXT:    v_readlane_b32 s70, v46, 56
+; SI-NEXT:    v_readlane_b32 s27, v46, 55
+; SI-NEXT:    s_lshr_b32 s49, s71, 16
+; SI-NEXT:    s_lshr_b32 s51, vcc_hi, 16
+; SI-NEXT:    s_mov_b32 s25, s24
+; SI-NEXT:    s_mov_b32 s24, s68
+; SI-NEXT:    s_mov_b32 s68, s26
+; SI-NEXT:    s_mov_b32 s26, s28
+; SI-NEXT:    s_mov_b32 s28, s29
+; SI-NEXT:    s_mov_b32 s29, s67
+; SI-NEXT:    v_readlane_b32 s69, v46, 54
+; SI-NEXT:    v_readlane_b32 s90, v46, 53
+; SI-NEXT:    s_lshr_b32 s53, s31, 16
+; SI-NEXT:    s_lshr_b32 s55, s82, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s87, 16
+; SI-NEXT:    s_mov_b64 s[66:67], 0
+; SI-NEXT:    s_branch .LBB97_3
+; SI-NEXT:  .LBB97_2:
+; SI-NEXT:    s_mov_b64 s[66:67], -1
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr20
+; SI-NEXT:    ; implicit-def: $sgpr23
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr5
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr80
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr84
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr96
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:  .LBB97_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[66:67], s[66:67], exec
+; SI-NEXT:    s_cselect_b32 s17, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s17, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB97_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    s_add_i32 s85, s99, 3
+; SI-NEXT:    v_readlane_b32 s5, v46, 29
 ; SI-NEXT:    s_and_b32 s4, s85, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 8
-; SI-NEXT:    s_add_i32 s6, s6, 3
+; SI-NEXT:    s_add_i32 s6, s22, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    v_readlane_b32 s5, v47, 58
+; SI-NEXT:    v_readlane_b32 s5, v46, 20
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 24
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
@@ -193592,27 +194454,30 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s5, s5, s6
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s5, s17, 3
+; SI-NEXT:    s_add_i32 s5, s19, 3
+; SI-NEXT:    v_readlane_b32 s6, v47, 37
+; SI-NEXT:    v_readlane_b32 s7, v47, 36
 ; SI-NEXT:    s_and_b32 s5, s5, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s99, 8
-; SI-NEXT:    s_add_i32 s7, s86, 3
+; SI-NEXT:    s_lshl_b32 s6, s6, 8
+; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_or_b32 s5, s6, s5
+; SI-NEXT:    v_readlane_b32 s6, v47, 35
 ; SI-NEXT:    s_and_b32 s7, s7, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s83, 24
+; SI-NEXT:    s_lshl_b32 s6, s6, 24
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
 ; SI-NEXT:    s_addk_i32 s5, 0x300
 ; SI-NEXT:    s_or_b32 s6, s6, s7
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s6, s5
-; SI-NEXT:    v_readlane_b32 s6, v46, 20
+; SI-NEXT:    v_readlane_b32 s6, v46, 42
 ; SI-NEXT:    s_add_i32 s6, s6, 3
-; SI-NEXT:    v_readlane_b32 s7, v46, 14
-; SI-NEXT:    v_readlane_b32 s8, v46, 9
+; SI-NEXT:    v_readlane_b32 s7, v46, 36
+; SI-NEXT:    v_readlane_b32 s8, v46, 32
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s7, 8
 ; SI-NEXT:    s_add_i32 s83, s8, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    v_readlane_b32 s7, v46, 8
+; SI-NEXT:    v_readlane_b32 s7, v46, 31
 ; SI-NEXT:    s_and_b32 s8, s83, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s7, 24
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
@@ -193622,25 +194487,27 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_add_i32 s7, s29, 3
 ; SI-NEXT:    s_and_b32 s7, s7, 0xff
-; SI-NEXT:    s_lshl_b32 s8, s24, 8
-; SI-NEXT:    s_add_i32 s9, s19, 3
+; SI-NEXT:    s_lshl_b32 s8, s68, 8
+; SI-NEXT:    s_add_i32 s9, s24, 3
+; SI-NEXT:    s_add_i32 s96, s4, 0x3000000
 ; SI-NEXT:    s_or_b32 s7, s8, s7
+; SI-NEXT:    v_readlane_b32 s4, v47, 38
 ; SI-NEXT:    s_and_b32 s9, s9, 0xff
-; SI-NEXT:    s_lshl_b32 s8, s16, 24
+; SI-NEXT:    s_lshl_b32 s8, s4, 24
 ; SI-NEXT:    s_lshl_b32 s9, s9, 16
 ; SI-NEXT:    s_addk_i32 s7, 0x300
 ; SI-NEXT:    s_or_b32 s8, s8, s9
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
 ; SI-NEXT:    s_or_b32 s7, s8, s7
-; SI-NEXT:    v_readlane_b32 s8, v46, 23
+; SI-NEXT:    v_readlane_b32 s8, v46, 45
 ; SI-NEXT:    s_add_i32 s8, s8, 3
-; SI-NEXT:    v_readlane_b32 s9, v46, 22
-; SI-NEXT:    v_readlane_b32 s10, v46, 19
+; SI-NEXT:    v_readlane_b32 s9, v46, 44
+; SI-NEXT:    v_readlane_b32 s10, v46, 41
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
 ; SI-NEXT:    s_lshl_b32 s9, s9, 8
 ; SI-NEXT:    s_add_i32 s68, s10, 3
 ; SI-NEXT:    s_or_b32 s8, s9, s8
-; SI-NEXT:    v_readlane_b32 s9, v46, 16
+; SI-NEXT:    v_readlane_b32 s9, v46, 38
 ; SI-NEXT:    s_and_b32 s10, s68, 0xff
 ; SI-NEXT:    s_lshl_b32 s9, s9, 24
 ; SI-NEXT:    s_lshl_b32 s10, s10, 16
@@ -193648,45 +194515,45 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s9, s9, s10
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
 ; SI-NEXT:    s_or_b32 s8, s9, s8
-; SI-NEXT:    v_readlane_b32 s9, v46, 4
+; SI-NEXT:    v_readlane_b32 s9, v46, 48
 ; SI-NEXT:    s_add_i32 s9, s9, 3
-; SI-NEXT:    v_readlane_b32 s10, v46, 0
+; SI-NEXT:    v_readlane_b32 s4, v47, 39
 ; SI-NEXT:    s_and_b32 s9, s9, 0xff
-; SI-NEXT:    s_lshl_b32 s10, s10, 8
+; SI-NEXT:    s_lshl_b32 s10, s4, 8
 ; SI-NEXT:    s_add_i32 s11, s28, 3
 ; SI-NEXT:    s_or_b32 s9, s10, s9
 ; SI-NEXT:    s_and_b32 s11, s11, 0xff
-; SI-NEXT:    s_lshl_b32 s10, s27, 24
+; SI-NEXT:    s_lshl_b32 s10, s26, 24
 ; SI-NEXT:    s_lshl_b32 s11, s11, 16
 ; SI-NEXT:    s_addk_i32 s9, 0x300
 ; SI-NEXT:    s_or_b32 s10, s10, s11
 ; SI-NEXT:    s_and_b32 s9, s9, 0xffff
 ; SI-NEXT:    s_or_b32 s9, s10, s9
-; SI-NEXT:    v_readlane_b32 s10, v46, 25
+; SI-NEXT:    v_readlane_b32 s10, v46, 47
 ; SI-NEXT:    s_add_i32 s17, s10, 3
-; SI-NEXT:    v_readlane_b32 s11, v46, 24
-; SI-NEXT:    v_readlane_b32 s12, v46, 21
+; SI-NEXT:    v_readlane_b32 s11, v46, 46
+; SI-NEXT:    v_readlane_b32 s12, v46, 43
 ; SI-NEXT:    s_and_b32 s10, s17, 0xff
 ; SI-NEXT:    s_lshl_b32 s11, s11, 8
-; SI-NEXT:    s_add_i32 s12, s12, 3
+; SI-NEXT:    s_add_i32 s23, s12, 3
 ; SI-NEXT:    s_or_b32 s10, s11, s10
-; SI-NEXT:    v_readlane_b32 s11, v46, 18
-; SI-NEXT:    s_and_b32 s12, s12, 0xff
+; SI-NEXT:    v_readlane_b32 s11, v46, 40
+; SI-NEXT:    s_and_b32 s12, s23, 0xff
 ; SI-NEXT:    s_lshl_b32 s11, s11, 24
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_addk_i32 s10, 0x300
 ; SI-NEXT:    s_or_b32 s11, s11, s12
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_or_b32 s10, s11, s10
-; SI-NEXT:    v_readlane_b32 s11, v46, 10
+; SI-NEXT:    v_readlane_b32 s11, v46, 33
 ; SI-NEXT:    s_add_i32 s84, s11, 3
-; SI-NEXT:    v_readlane_b32 s12, v46, 7
-; SI-NEXT:    v_readlane_b32 s13, v46, 1
+; SI-NEXT:    v_readlane_b32 s12, v46, 30
+; SI-NEXT:    v_readlane_b32 s13, v46, 25
 ; SI-NEXT:    s_and_b32 s11, s84, 0xff
 ; SI-NEXT:    s_lshl_b32 s12, s12, 8
 ; SI-NEXT:    s_add_i32 s13, s13, 3
 ; SI-NEXT:    s_or_b32 s11, s12, s11
-; SI-NEXT:    v_readlane_b32 s12, v47, 59
+; SI-NEXT:    v_readlane_b32 s12, v46, 21
 ; SI-NEXT:    s_and_b32 s13, s13, 0xff
 ; SI-NEXT:    s_lshl_b32 s12, s12, 24
 ; SI-NEXT:    s_lshl_b32 s13, s13, 16
@@ -193694,15 +194561,15 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s12, s12, s13
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
 ; SI-NEXT:    s_or_b32 s11, s12, s11
-; SI-NEXT:    v_readlane_b32 s12, v46, 17
+; SI-NEXT:    v_readlane_b32 s12, v46, 39
 ; SI-NEXT:    s_add_i32 s99, s12, 3
-; SI-NEXT:    v_readlane_b32 s13, v46, 15
-; SI-NEXT:    v_readlane_b32 s14, v46, 12
+; SI-NEXT:    v_readlane_b32 s13, v46, 37
+; SI-NEXT:    v_readlane_b32 s14, v46, 34
 ; SI-NEXT:    s_and_b32 s12, s99, 0xff
 ; SI-NEXT:    s_lshl_b32 s13, s13, 8
 ; SI-NEXT:    s_add_i32 s86, s14, 3
 ; SI-NEXT:    s_or_b32 s12, s13, s12
-; SI-NEXT:    v_readlane_b32 s13, v46, 13
+; SI-NEXT:    v_readlane_b32 s13, v46, 35
 ; SI-NEXT:    s_and_b32 s14, s86, 0xff
 ; SI-NEXT:    s_lshl_b32 s13, s13, 24
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
@@ -193710,15 +194577,15 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s13, s13, s14
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_or_b32 s12, s13, s12
-; SI-NEXT:    v_readlane_b32 s13, v46, 5
+; SI-NEXT:    v_readlane_b32 s13, v46, 28
 ; SI-NEXT:    s_add_i32 s13, s13, 3
-; SI-NEXT:    v_readlane_b32 s14, v46, 3
-; SI-NEXT:    v_readlane_b32 s15, v47, 62
+; SI-NEXT:    v_readlane_b32 s14, v46, 27
+; SI-NEXT:    v_readlane_b32 s15, v46, 23
 ; SI-NEXT:    s_and_b32 s13, s13, 0xff
 ; SI-NEXT:    s_lshl_b32 s14, s14, 8
 ; SI-NEXT:    s_add_i32 s15, s15, 3
 ; SI-NEXT:    s_or_b32 s13, s14, s13
-; SI-NEXT:    v_readlane_b32 s14, v47, 63
+; SI-NEXT:    v_readlane_b32 s14, v46, 24
 ; SI-NEXT:    s_and_b32 s15, s15, 0xff
 ; SI-NEXT:    s_lshl_b32 s14, s14, 24
 ; SI-NEXT:    s_lshl_b32 s15, s15, 16
@@ -193726,41 +194593,41 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s14, s14, s15
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
 ; SI-NEXT:    s_or_b32 s13, s14, s13
-; SI-NEXT:    v_readlane_b32 s14, v46, 2
+; SI-NEXT:    v_readlane_b32 s14, v46, 26
 ; SI-NEXT:    s_add_i32 s14, s14, 3
-; SI-NEXT:    v_readlane_b32 s15, v47, 61
-; SI-NEXT:    v_readlane_b32 s16, v47, 56
+; SI-NEXT:    v_readlane_b32 s15, v46, 22
 ; SI-NEXT:    s_and_b32 s14, s14, 0xff
 ; SI-NEXT:    s_lshl_b32 s15, s15, 8
-; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    s_add_i32 s16, s69, 3
 ; SI-NEXT:    s_or_b32 s14, s15, s14
-; SI-NEXT:    v_readlane_b32 s15, v47, 57
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s15, s15, 24
+; SI-NEXT:    s_lshl_b32 s15, s90, 24
 ; SI-NEXT:    s_lshl_b32 s16, s16, 16
 ; SI-NEXT:    s_addk_i32 s14, 0x300
 ; SI-NEXT:    s_or_b32 s15, s15, s16
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_or_b32 s14, s15, s14
-; SI-NEXT:    s_add_i32 s15, s26, 3
+; SI-NEXT:    v_readlane_b32 s15, v46, 19
+; SI-NEXT:    s_add_i32 s15, s15, 3
+; SI-NEXT:    v_readlane_b32 s4, v47, 40
 ; SI-NEXT:    s_and_b32 s15, s15, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s25, 8
-; SI-NEXT:    s_add_i32 s17, s23, 3
+; SI-NEXT:    s_lshl_b32 s16, s98, 8
+; SI-NEXT:    s_add_i32 s17, s4, 3
 ; SI-NEXT:    s_or_b32 s15, s16, s15
 ; SI-NEXT:    s_and_b32 s17, s17, 0xff
-; SI-NEXT:    s_lshl_b32 s16, s87, 24
+; SI-NEXT:    s_lshl_b32 s16, s25, 24
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_addk_i32 s15, 0x300
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
 ; SI-NEXT:    s_or_b32 s15, s16, s15
-; SI-NEXT:    s_add_i32 s16, s20, 3
-; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v47, 54
+; SI-NEXT:    s_add_i32 s16, s27, 3
+; SI-NEXT:    v_readlane_b32 s18, v46, 17
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s70, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 55
+; SI-NEXT:    v_readlane_b32 s17, v46, 18
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
@@ -193769,66 +194636,83 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s40, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s22, 3
+; SI-NEXT:    v_readlane_b32 s16, v46, 16
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v46, 15
+; SI-NEXT:    v_readlane_b32 s18, v46, 12
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s65, 8
-; SI-NEXT:    s_add_i32 s18, s94, 3
+; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
+; SI-NEXT:    v_readlane_b32 s17, v46, 13
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
-; SI-NEXT:    s_lshl_b32 s17, s67, 24
+; SI-NEXT:    s_lshl_b32 s17, s17, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s41, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s71, 3
+; SI-NEXT:    v_readlane_b32 s16, v46, 14
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v46, 11
+; SI-NEXT:    v_readlane_b32 s18, v46, 9
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s81, 8
-; SI-NEXT:    s_add_i32 s18, s55, 3
+; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
+; SI-NEXT:    v_readlane_b32 s17, v46, 10
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
-; SI-NEXT:    s_lshl_b32 s17, s97, 24
+; SI-NEXT:    s_lshl_b32 s17, s17, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s42, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s98, 3
+; SI-NEXT:    v_readlane_b32 s16, v46, 8
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v46, 7
+; SI-NEXT:    v_readlane_b32 s18, v46, 3
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s78, 8
-; SI-NEXT:    s_add_i32 s18, s31, 3
+; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
+; SI-NEXT:    v_readlane_b32 s17, v46, 4
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
-; SI-NEXT:    s_lshl_b32 s17, s35, 24
+; SI-NEXT:    s_lshl_b32 s17, s17, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s43, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s82, 3
+; SI-NEXT:    v_readlane_b32 s16, v46, 6
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v46, 5
+; SI-NEXT:    v_readlane_b32 s18, v46, 1
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s37, 8
-; SI-NEXT:    s_add_i32 s18, s90, 3
+; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
+; SI-NEXT:    v_readlane_b32 s17, v46, 2
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
-; SI-NEXT:    s_lshl_b32 s17, s79, 24
+; SI-NEXT:    s_lshl_b32 s17, s17, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s44, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s96, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 46
-; SI-NEXT:    v_readlane_b32 s18, v47, 45
+; SI-NEXT:    v_readlane_b32 s16, v46, 0
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v47, 63
+; SI-NEXT:    v_readlane_b32 s18, v47, 59
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 44
+; SI-NEXT:    v_readlane_b32 s17, v47, 60
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
@@ -193837,12 +194721,15 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s45, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s21, 3
+; SI-NEXT:    v_readlane_b32 s16, v47, 62
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v47, 61
+; SI-NEXT:    v_readlane_b32 s18, v47, 57
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s76, 8
-; SI-NEXT:    s_add_i32 s18, s70, 3
+; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 50
+; SI-NEXT:    v_readlane_b32 s17, v47, 58
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
@@ -193851,14 +194738,15 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s46, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s80, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 49
-; SI-NEXT:    v_readlane_b32 s18, v47, 48
+; SI-NEXT:    v_readlane_b32 s16, v47, 56
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v47, 55
+; SI-NEXT:    v_readlane_b32 s18, v47, 53
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 47
+; SI-NEXT:    v_readlane_b32 s17, v47, 54
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
@@ -193886,8 +194774,8 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s56, s16, 0x3000000
 ; SI-NEXT:    v_readlane_b32 s16, v47, 14
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 53
-; SI-NEXT:    v_readlane_b32 s18, v47, 52
+; SI-NEXT:    v_readlane_b32 s17, v47, 52
+; SI-NEXT:    v_readlane_b32 s18, v47, 50
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
@@ -193901,12 +194789,11 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s57, s16, 0x3000000
-; SI-NEXT:    v_readlane_b32 s16, v47, 26
+; SI-NEXT:    v_readlane_b32 s16, v47, 45
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 25
 ; SI-NEXT:    v_readlane_b32 s18, v47, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_lshl_b32 s17, s92, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    v_readlane_b32 s17, v47, 23
@@ -193935,32 +194822,32 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s59, s16, 0x3000000
-; SI-NEXT:    v_readlane_b32 s16, v47, 34
+; SI-NEXT:    v_readlane_b32 s16, v47, 46
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 33
-; SI-NEXT:    v_readlane_b32 s18, v47, 32
+; SI-NEXT:    v_readlane_b32 s17, v47, 44
+; SI-NEXT:    v_readlane_b32 s18, v47, 41
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 31
+; SI-NEXT:    v_readlane_b32 s4, v47, 29
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
-; SI-NEXT:    s_lshl_b32 s17, s17, 24
+; SI-NEXT:    s_lshl_b32 s17, s4, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s60, s16, 0x3000000
-; SI-NEXT:    v_readlane_b32 s16, v47, 30
+; SI-NEXT:    v_readlane_b32 s16, v47, 28
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 29
-; SI-NEXT:    v_readlane_b32 s18, v47, 28
+; SI-NEXT:    v_readlane_b32 s17, v47, 27
+; SI-NEXT:    v_readlane_b32 s18, v47, 26
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 27
+; SI-NEXT:    v_readlane_b32 s17, v47, 25
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
@@ -193969,14 +194856,15 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s61, s16, 0x3000000
-; SI-NEXT:    s_add_i32 s16, s69, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 41
-; SI-NEXT:    v_readlane_b32 s18, v47, 40
+; SI-NEXT:    v_readlane_b32 s16, v47, 49
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s17, v47, 47
+; SI-NEXT:    v_readlane_b32 s18, v47, 43
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 39
+; SI-NEXT:    v_readlane_b32 s17, v47, 42
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
@@ -193985,15 +194873,15 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s62, s16, 0x3000000
-; SI-NEXT:    v_readlane_b32 s16, v47, 38
+; SI-NEXT:    v_readlane_b32 s16, v47, 33
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s17, v47, 37
-; SI-NEXT:    v_readlane_b32 s18, v47, 36
+; SI-NEXT:    v_readlane_b32 s17, v47, 32
+; SI-NEXT:    v_readlane_b32 s18, v47, 31
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 35
+; SI-NEXT:    v_readlane_b32 s17, v47, 30
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
@@ -194022,15 +194910,15 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    v_readlane_b32 s16, v47, 1
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    v_readlane_b32 s17, v47, 0
-; SI-NEXT:    v_readlane_b32 s18, v47, 43
+; SI-NEXT:    v_readlane_b32 s18, v47, 48
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v47, 42
+; SI-NEXT:    v_readlane_b32 s4, v47, 34
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
 ; SI-NEXT:    s_addk_i32 s16, 0x300
-; SI-NEXT:    s_lshl_b32 s17, s17, 24
+; SI-NEXT:    s_lshl_b32 s17, s4, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
@@ -194068,191 +194956,154 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
-; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    s_add_i32 s75, s16, 0x3000000
-; SI-NEXT:    s_lshr_b64 s[16:17], s[74:75], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 26
-; SI-NEXT:    v_writelane_b32 v46, s17, 27
-; SI-NEXT:    s_lshr_b64 s[16:17], s[72:73], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 28
-; SI-NEXT:    v_writelane_b32 v46, s17, 29
-; SI-NEXT:    s_lshr_b64 s[16:17], s[62:63], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 30
-; SI-NEXT:    v_writelane_b32 v46, s17, 31
-; SI-NEXT:    s_lshr_b64 s[16:17], s[60:61], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 32
-; SI-NEXT:    v_writelane_b32 v46, s17, 33
-; SI-NEXT:    s_lshr_b64 s[16:17], s[58:59], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 34
-; SI-NEXT:    v_writelane_b32 v46, s17, 35
-; SI-NEXT:    s_lshr_b64 s[16:17], s[56:57], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 36
-; SI-NEXT:    v_writelane_b32 v46, s17, 37
-; SI-NEXT:    s_lshr_b64 s[16:17], s[46:47], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 38
-; SI-NEXT:    v_writelane_b32 v46, s17, 39
-; SI-NEXT:    s_lshr_b64 s[16:17], s[44:45], 16
-; SI-NEXT:    s_add_i32 s10, s10, 0x3000000
-; SI-NEXT:    s_add_i32 s11, s11, 0x3000000
+; SI-NEXT:    s_add_i32 s34, s6, 0x3000000
+; SI-NEXT:    s_add_i32 s35, s7, 0x3000000
+; SI-NEXT:    s_add_i32 s36, s8, 0x3000000
+; SI-NEXT:    s_add_i32 s37, s9, 0x3000000
+; SI-NEXT:    s_add_i32 s94, s10, 0x3000000
+; SI-NEXT:    s_add_i32 s95, s11, 0x3000000
 ; SI-NEXT:    s_add_i32 s12, s12, 0x3000000
 ; SI-NEXT:    s_add_i32 s13, s13, 0x3000000
 ; SI-NEXT:    s_add_i32 s14, s14, 0x3000000
 ; SI-NEXT:    s_add_i32 s15, s15, 0x3000000
-; SI-NEXT:    v_writelane_b32 v46, s16, 40
-; SI-NEXT:    s_add_i32 s4, s4, 0x3000000
-; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
-; SI-NEXT:    s_add_i32 s6, s6, 0x3000000
-; SI-NEXT:    s_add_i32 s7, s7, 0x3000000
-; SI-NEXT:    s_add_i32 s8, s8, 0x3000000
-; SI-NEXT:    s_add_i32 s9, s9, 0x3000000
-; SI-NEXT:    v_writelane_b32 v46, s17, 41
-; SI-NEXT:    s_lshr_b64 s[16:17], s[42:43], 16
-; SI-NEXT:    s_lshr_b64 s[38:39], s[40:41], 16
-; SI-NEXT:    s_lshr_b64 s[48:49], s[14:15], 16
-; SI-NEXT:    s_lshr_b64 s[50:51], s[12:13], 16
-; SI-NEXT:    s_lshr_b64 s[52:53], s[10:11], 16
-; SI-NEXT:    v_writelane_b32 v46, s16, 42
-; SI-NEXT:    s_lshr_b64 s[54:55], s[8:9], 16
-; SI-NEXT:    s_lshr_b64 s[64:65], s[6:7], 16
-; SI-NEXT:    s_lshr_b64 s[66:67], s[4:5], 16
-; SI-NEXT:    s_lshr_b32 s77, s75, 16
-; SI-NEXT:    s_lshr_b32 s68, s73, 16
-; SI-NEXT:    s_lshr_b32 s88, s63, 16
-; SI-NEXT:    s_lshr_b32 s84, s61, 16
-; SI-NEXT:    s_lshr_b32 s89, s59, 16
-; SI-NEXT:    s_lshr_b32 s91, s57, 16
-; SI-NEXT:    s_lshr_b32 s93, s47, 16
-; SI-NEXT:    s_lshr_b32 s95, s45, 16
-; SI-NEXT:    s_lshr_b32 s30, s43, 16
-; SI-NEXT:    s_lshr_b32 s34, s41, 16
-; SI-NEXT:    s_lshr_b32 s36, s15, 16
-; SI-NEXT:    s_lshr_b32 s39, s13, 16
-; SI-NEXT:    s_lshr_b32 s49, s11, 16
-; SI-NEXT:    s_lshr_b32 s51, s9, 16
-; SI-NEXT:    s_lshr_b32 s53, s7, 16
-; SI-NEXT:    s_lshr_b32 s92, s5, 16
-; SI-NEXT:    v_writelane_b32 v46, s17, 43
-; SI-NEXT:  .LBB97_3: ; %end
+; SI-NEXT:    s_or_b32 s16, s17, s16
+; SI-NEXT:    s_add_i32 s97, s5, 0x3000000
+; SI-NEXT:    s_add_i32 s75, s16, 0x3000000
+; SI-NEXT:    s_lshr_b64 s[76:77], s[72:73], 16
+; SI-NEXT:    s_lshr_b64 s[10:11], s[58:59], 16
+; SI-NEXT:    s_lshr_b64 s[4:5], s[56:57], 16
+; SI-NEXT:    s_lshr_b64 s[6:7], s[46:47], 16
+; SI-NEXT:    s_lshr_b64 s[8:9], s[40:41], 16
+; SI-NEXT:    s_lshr_b64 s[38:39], s[14:15], 16
+; SI-NEXT:    s_lshr_b64 s[48:49], s[12:13], 16
+; SI-NEXT:    s_lshr_b64 s[50:51], s[94:95], 16
+; SI-NEXT:    s_lshr_b64 s[52:53], s[36:37], 16
+; SI-NEXT:    s_lshr_b64 s[54:55], s[34:35], 16
+; SI-NEXT:    s_lshr_b64 s[20:21], s[74:75], 16
+; SI-NEXT:    s_lshr_b64 s[78:79], s[62:63], 16
+; SI-NEXT:    s_lshr_b64 s[80:81], s[60:61], 16
+; SI-NEXT:    s_lshr_b64 s[88:89], s[44:45], 16
+; SI-NEXT:    s_lshr_b64 s[84:85], s[42:43], 16
+; SI-NEXT:    s_lshr_b64 s[64:65], s[96:97], 16
+; SI-NEXT:    s_lshr_b32 s23, s75, 16
+; SI-NEXT:    s_lshr_b32 s77, s73, 16
+; SI-NEXT:    s_lshr_b32 s5, s63, 16
+; SI-NEXT:    s_lshr_b32 s91, s61, 16
+; SI-NEXT:    s_lshr_b32 s93, s59, 16
+; SI-NEXT:    s_lshr_b32 s11, s57, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s47, 16
+; SI-NEXT:    s_lshr_b32 s30, s45, 16
+; SI-NEXT:    s_lshr_b32 s7, s43, 16
+; SI-NEXT:    s_lshr_b32 s9, s41, 16
+; SI-NEXT:    s_lshr_b32 s39, s15, 16
+; SI-NEXT:    s_lshr_b32 s49, s13, 16
+; SI-NEXT:    s_lshr_b32 s51, s95, 16
+; SI-NEXT:    s_lshr_b32 s53, s37, 16
+; SI-NEXT:    s_lshr_b32 s55, s35, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s97, 16
+; SI-NEXT:  .LBB97_5: ; %end
 ; SI-NEXT:    buffer_load_dword v44, off, s[0:3], s32 offset:336 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v43, off, s[0:3], s32 offset:340 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:344 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:348 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:352 ; 4-byte Folded Reload
-; SI-NEXT:    v_readlane_b32 s18, v46, 26
 ; SI-NEXT:    s_and_b32 s17, s74, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v46, 27
-; SI-NEXT:    s_lshl_b32 s18, s18, 16
+; SI-NEXT:    s_lshl_b32 s18, s20, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_and_b32 s18, s75, 0xffff
-; SI-NEXT:    s_lshl_b32 s19, s77, 16
-; SI-NEXT:    v_readlane_b32 s20, v46, 28
+; SI-NEXT:    s_lshl_b32 s19, s23, 16
 ; SI-NEXT:    s_or_b32 s18, s18, s19
 ; SI-NEXT:    s_and_b32 s19, s72, 0xffff
-; SI-NEXT:    v_readlane_b32 s21, v46, 29
-; SI-NEXT:    s_lshl_b32 s20, s20, 16
+; SI-NEXT:    s_lshl_b32 s20, s76, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s20
 ; SI-NEXT:    s_and_b32 s20, s73, 0xffff
-; SI-NEXT:    s_lshl_b32 s21, s68, 16
-; SI-NEXT:    v_readlane_b32 s22, v46, 30
+; SI-NEXT:    s_lshl_b32 s21, s77, 16
 ; SI-NEXT:    s_or_b32 s20, s20, s21
 ; SI-NEXT:    s_and_b32 s21, s62, 0xffff
-; SI-NEXT:    v_readlane_b32 s23, v46, 31
-; SI-NEXT:    s_lshl_b32 s22, s22, 16
+; SI-NEXT:    s_lshl_b32 s22, s78, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s22
 ; SI-NEXT:    s_and_b32 s22, s63, 0xffff
-; SI-NEXT:    s_lshl_b32 s23, s88, 16
-; SI-NEXT:    v_readlane_b32 s24, v46, 32
+; SI-NEXT:    s_lshl_b32 s23, s5, 16
 ; SI-NEXT:    s_or_b32 s22, s22, s23
 ; SI-NEXT:    s_and_b32 s23, s60, 0xffff
-; SI-NEXT:    v_readlane_b32 s25, v46, 33
-; SI-NEXT:    s_lshl_b32 s24, s24, 16
+; SI-NEXT:    s_lshl_b32 s24, s80, 16
 ; SI-NEXT:    s_or_b32 s23, s23, s24
 ; SI-NEXT:    s_and_b32 s24, s61, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s84, 16
-; SI-NEXT:    v_readlane_b32 s26, v46, 34
+; SI-NEXT:    s_lshl_b32 s25, s91, 16
 ; SI-NEXT:    s_or_b32 s24, s24, s25
 ; SI-NEXT:    s_and_b32 s25, s58, 0xffff
-; SI-NEXT:    v_readlane_b32 s27, v46, 35
-; SI-NEXT:    s_lshl_b32 s26, s26, 16
+; SI-NEXT:    s_lshl_b32 s26, s10, 16
 ; SI-NEXT:    s_or_b32 s25, s25, s26
 ; SI-NEXT:    s_and_b32 s26, s59, 0xffff
-; SI-NEXT:    s_lshl_b32 s27, s89, 16
-; SI-NEXT:    v_readlane_b32 s28, v46, 36
+; SI-NEXT:    s_lshl_b32 s27, s93, 16
 ; SI-NEXT:    s_or_b32 s26, s26, s27
 ; SI-NEXT:    s_and_b32 s27, s56, 0xffff
-; SI-NEXT:    v_readlane_b32 s29, v46, 37
-; SI-NEXT:    s_lshl_b32 s28, s28, 16
+; SI-NEXT:    s_lshl_b32 s28, s4, 16
 ; SI-NEXT:    s_or_b32 s27, s27, s28
 ; SI-NEXT:    s_and_b32 s28, s57, 0xffff
-; SI-NEXT:    s_lshl_b32 s29, s91, 16
-; SI-NEXT:    v_readlane_b32 s56, v46, 38
+; SI-NEXT:    s_lshl_b32 s29, s11, 16
 ; SI-NEXT:    s_or_b32 s28, s28, s29
 ; SI-NEXT:    s_and_b32 s29, s46, 0xffff
-; SI-NEXT:    v_readlane_b32 s57, v46, 39
-; SI-NEXT:    s_lshl_b32 s46, s56, 16
+; SI-NEXT:    s_lshl_b32 s46, s6, 16
 ; SI-NEXT:    s_or_b32 s29, s29, s46
 ; SI-NEXT:    s_and_b32 s46, s47, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s93, 16
-; SI-NEXT:    v_readlane_b32 s56, v46, 40
+; SI-NEXT:    s_lshl_b32 s47, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s46, s46, s47
 ; SI-NEXT:    s_and_b32 s44, s44, 0xffff
-; SI-NEXT:    v_readlane_b32 s57, v46, 41
-; SI-NEXT:    s_lshl_b32 s47, s56, 16
+; SI-NEXT:    s_lshl_b32 s47, s88, 16
 ; SI-NEXT:    s_or_b32 s44, s44, s47
 ; SI-NEXT:    s_and_b32 s45, s45, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s95, 16
-; SI-NEXT:    v_readlane_b32 s56, v46, 42
+; SI-NEXT:    s_lshl_b32 s47, s30, 16
 ; SI-NEXT:    s_or_b32 s45, s45, s47
 ; SI-NEXT:    s_and_b32 s42, s42, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s56, 16
+; SI-NEXT:    s_lshl_b32 s47, s84, 16
 ; SI-NEXT:    s_or_b32 s42, s42, s47
 ; SI-NEXT:    s_and_b32 s43, s43, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s30, 16
+; SI-NEXT:    s_lshl_b32 s47, s7, 16
 ; SI-NEXT:    s_or_b32 s43, s43, s47
 ; SI-NEXT:    s_and_b32 s40, s40, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s38, 16
+; SI-NEXT:    s_lshl_b32 s47, s8, 16
 ; SI-NEXT:    s_or_b32 s40, s40, s47
 ; SI-NEXT:    s_and_b32 s41, s41, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s34, 16
+; SI-NEXT:    s_lshl_b32 s47, s9, 16
 ; SI-NEXT:    s_or_b32 s41, s41, s47
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s48, 16
+; SI-NEXT:    s_lshl_b32 s47, s38, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s47
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s36, 16
+; SI-NEXT:    s_lshl_b32 s47, s39, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s47
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s50, 16
+; SI-NEXT:    s_lshl_b32 s47, s48, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s47
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s39, 16
+; SI-NEXT:    s_lshl_b32 s47, s49, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s47
-; SI-NEXT:    s_and_b32 s10, s10, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s52, 16
+; SI-NEXT:    s_and_b32 s10, s94, 0xffff
+; SI-NEXT:    s_lshl_b32 s47, s50, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s47
-; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s49, 16
+; SI-NEXT:    s_and_b32 s11, s95, 0xffff
+; SI-NEXT:    s_lshl_b32 s47, s51, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s47
-; SI-NEXT:    s_and_b32 s8, s8, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s54, 16
+; SI-NEXT:    s_and_b32 s8, s36, 0xffff
+; SI-NEXT:    s_lshl_b32 s47, s52, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s47
-; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s51, 16
+; SI-NEXT:    s_and_b32 s9, s37, 0xffff
+; SI-NEXT:    s_lshl_b32 s47, s53, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s47
-; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s64, 16
+; SI-NEXT:    s_and_b32 s6, s34, 0xffff
+; SI-NEXT:    s_lshl_b32 s47, s54, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s47
-; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s53, 16
+; SI-NEXT:    s_and_b32 s7, s35, 0xffff
+; SI-NEXT:    s_lshl_b32 s47, s55, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s47
-; SI-NEXT:    s_and_b32 s4, s4, 0xffff
-; SI-NEXT:    s_lshl_b32 s47, s66, 16
-; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s92, 16
+; SI-NEXT:    s_and_b32 s4, s96, 0xffff
+; SI-NEXT:    s_lshl_b32 s47, s64, 16
+; SI-NEXT:    s_and_b32 s5, s97, 0xffff
+; SI-NEXT:    s_lshl_b32 s16, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s47
 ; SI-NEXT:    s_or_b32 s5, s5, s16
 ; SI-NEXT:    v_readlane_b32 s30, v45, 34
-; SI-NEXT:    v_readlane_b32 s57, v46, 43
 ; SI-NEXT:    v_mov_b32_e32 v0, s17
 ; SI-NEXT:    v_mov_b32_e32 v1, s18
 ; SI-NEXT:    v_mov_b32_e32 v2, s19
@@ -194327,74 +195178,6 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB97_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 26
-; SI-NEXT:    v_writelane_b32 v46, s5, 27
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    v_writelane_b32 v46, s4, 28
-; SI-NEXT:    v_writelane_b32 v46, s5, 29
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 30
-; SI-NEXT:    v_writelane_b32 v46, s5, 31
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 32
-; SI-NEXT:    v_writelane_b32 v46, s5, 33
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 34
-; SI-NEXT:    v_writelane_b32 v46, s5, 35
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 36
-; SI-NEXT:    v_writelane_b32 v46, s5, 37
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 38
-; SI-NEXT:    v_writelane_b32 v46, s5, 39
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 40
-; SI-NEXT:    v_writelane_b32 v46, s5, 41
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v46, s4, 42
-; SI-NEXT:    v_writelane_b32 v46, s5, 43
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_branch .LBB97_2
 ;
 ; VI-LABEL: bitcast_v128i8_to_v64i16_scalar:
 ; VI:       ; %bb.0:
@@ -194611,7 +195394,7 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; VI-NEXT:    buffer_load_ushort v0, off, s[0:3], s32 offset:16
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:492 ; 4-byte Folded Spill
-; VI-NEXT:    s_cbranch_scc0 .LBB97_4
+; VI-NEXT:    s_cbranch_scc0 .LBB97_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; VI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:632 ; 4-byte Folded Spill
@@ -194831,12 +195614,32 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v35, v43
 ; VI-NEXT:    v_perm_b32 v43, v44, v43, s4
 ; VI-NEXT:    v_or_b32_e32 v31, v43, v31
+; VI-NEXT:    s_mov_b64 s[4:5], 0
 ; VI-NEXT:    v_mov_b32_e32 v43, v39
 ; VI-NEXT:    v_mov_b32_e32 v39, v34
 ; VI-NEXT:    v_mov_b32_e32 v34, v52
 ; VI-NEXT:    v_mov_b32_e32 v52, v45
-; VI-NEXT:    s_cbranch_execnz .LBB97_3
-; VI-NEXT:  .LBB97_2: ; %cmp.true
+; VI-NEXT:    s_branch .LBB97_3
+; VI-NEXT:  .LBB97_2:
+; VI-NEXT:    v_mov_b32_e32 v43, v39
+; VI-NEXT:    v_mov_b32_e32 v52, v34
+; VI-NEXT:    v_mov_b32_e32 v39, v33
+; VI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:512 ; 4-byte Folded Reload
+; VI-NEXT:    v_mov_b32_e32 v34, v53
+; VI-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:508 ; 4-byte Folded Reload
+; VI-NEXT:    buffer_load_dword v48, off, s[0:3], s32 offset:516 ; 4-byte Folded Reload
+; VI-NEXT:    v_mov_b32_e32 v62, v2
+; VI-NEXT:    v_mov_b32_e32 v35, v1
+; VI-NEXT:    v_mov_b32_e32 v55, v57
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; VI-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; VI-NEXT:  .LBB97_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB97_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:468 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:476 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
@@ -195251,7 +196054,7 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; VI-NEXT:    v_or_b32_sdwa v27, v46, v27 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v18, vcc, 0x3000000, v18
 ; VI-NEXT:    v_add_u32_e32 v27, vcc, 0x3000000, v27
-; VI-NEXT:  .LBB97_3: ; %end
+; VI-NEXT:  .LBB97_5: ; %end
 ; VI-NEXT:    buffer_load_dword v63, off, s[0:3], s32 offset:336 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v62, off, s[0:3], s32 offset:340 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v61, off, s[0:3], s32 offset:344 ; 4-byte Folded Reload
@@ -195270,20 +196073,6 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; VI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:396 ; 4-byte Folded Reload
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB97_4:
-; VI-NEXT:    v_mov_b32_e32 v43, v39
-; VI-NEXT:    v_mov_b32_e32 v52, v34
-; VI-NEXT:    v_mov_b32_e32 v39, v33
-; VI-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:512 ; 4-byte Folded Reload
-; VI-NEXT:    v_mov_b32_e32 v34, v53
-; VI-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:508 ; 4-byte Folded Reload
-; VI-NEXT:    buffer_load_dword v48, off, s[0:3], s32 offset:516 ; 4-byte Folded Reload
-; VI-NEXT:    v_mov_b32_e32 v62, v2
-; VI-NEXT:    v_mov_b32_e32 v35, v1
-; VI-NEXT:    v_mov_b32_e32 v55, v57
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; VI-NEXT:    s_branch .LBB97_2
 ;
 ; GFX9-LABEL: bitcast_v128i8_to_v64i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -195775,8 +196564,10 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; GFX9-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
 ; GFX9-NEXT:  .LBB97_3: ; %Flow
 ; GFX9-NEXT:    buffer_load_dword v36, off, s[0:3], s32 offset:400 ; 4-byte Folded Reload
-; GFX9-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GFX9-NEXT:    s_cbranch_vccnz .LBB97_5
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB97_5
 ; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_waitcnt vmcnt(5)
 ; GFX9-NEXT:    v_add_u32_e32 v0, 3, v48
@@ -196328,7 +197119,7 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v31
 ; GFX11-TRUE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB97_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB97_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v8, 0xc0c0004 :: v_dual_lshlrev_b32 v13, 8, v86
@@ -196480,9 +197271,18 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, s77
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e64 v30.h, v183.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v31.h, v41.l
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB97_3
-; GFX11-TRUE16-NEXT:  .LBB97_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB97_3
+; GFX11-TRUE16-NEXT:  .LBB97_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; GFX11-TRUE16-NEXT:  .LBB97_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB97_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v0, 3, v180
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 3, v166
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v2, 3, v182
@@ -196711,16 +197511,12 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v29.h, v102.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e64 v30.h, v129.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e64 v31.h, v133.l
-; GFX11-TRUE16-NEXT:  .LBB97_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB97_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; 8-byte Folded Reload
 ; GFX11-TRUE16-NEXT:    scratch_load_b32 v41, off, s32 offset:320
 ; GFX11-TRUE16-NEXT:    scratch_load_b32 v40, off, s32 offset:324
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB97_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; GFX11-TRUE16-NEXT:    s_branch .LBB97_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v128i8_to_v64i16_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -196844,7 +197640,7 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v31
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB97_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB97_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, s74, 0xff
@@ -197035,9 +197831,18 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, s76
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v31, v31, 16, v40
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB97_3
-; GFX11-FAKE16-NEXT:  .LBB97_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB97_3
+; GFX11-FAKE16-NEXT:  .LBB97_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
+; GFX11-FAKE16-NEXT:  .LBB97_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB97_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v0, 3, v182
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 3, v180
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v3, 3, v178
@@ -197298,14 +198103,10 @@ define inreg <64 x i16> @bitcast_v128i8_to_v64i16_scalar(<128 x i8> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v29, v150, 16, v29
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v30, v30, 16, v34
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v31, v31, 16, v35
-; GFX11-FAKE16-NEXT:  .LBB97_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB97_5: ; %end
 ; GFX11-FAKE16-NEXT:    scratch_load_b32 v40, off, s32 offset:320 ; 4-byte Folded Reload
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB97_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
-; GFX11-FAKE16-NEXT:    s_branch .LBB97_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -202227,9 +203028,8 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v20, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v21, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:12 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
-; SI-NEXT:    s_waitcnt expcnt(3)
+; SI-NEXT:    s_waitcnt expcnt(2)
 ; SI-NEXT:    v_writelane_b32 v20, s34, 0
 ; SI-NEXT:    v_writelane_b32 v20, s35, 1
 ; SI-NEXT:    v_writelane_b32 v20, s36, 2
@@ -202266,799 +203066,1037 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v20, s99, 33
 ; SI-NEXT:    v_writelane_b32 v20, s30, 34
 ; SI-NEXT:    v_writelane_b32 v20, s31, 35
-; SI-NEXT:    s_lshr_b32 s5, s16, 16
-; SI-NEXT:    v_readfirstlane_b32 s49, v18
-; SI-NEXT:    v_readfirstlane_b32 s51, v17
-; SI-NEXT:    v_readfirstlane_b32 s38, v16
-; SI-NEXT:    v_readfirstlane_b32 s48, v15
-; SI-NEXT:    v_readfirstlane_b32 s37, v14
-; SI-NEXT:    v_readfirstlane_b32 s95, v13
-; SI-NEXT:    v_readfirstlane_b32 s96, v12
-; SI-NEXT:    v_readfirstlane_b32 s36, v11
-; SI-NEXT:    v_readfirstlane_b32 s85, v10
-; SI-NEXT:    v_readfirstlane_b32 s87, v9
-; SI-NEXT:    v_readfirstlane_b32 s34, v8
-; SI-NEXT:    v_readfirstlane_b32 s84, v7
-; SI-NEXT:    v_readfirstlane_b32 s71, v6
-; SI-NEXT:    v_readfirstlane_b32 s81, v5
-; SI-NEXT:    v_readfirstlane_b32 s68, v4
-; SI-NEXT:    v_readfirstlane_b32 s70, v3
-; SI-NEXT:    v_readfirstlane_b32 s67, v2
-; SI-NEXT:    v_readfirstlane_b32 s31, v1
+; SI-NEXT:    v_readfirstlane_b32 s30, v8
+; SI-NEXT:    s_lshr_b32 s7, s30, 16
+; SI-NEXT:    v_readfirstlane_b32 s69, v6
 ; SI-NEXT:    ; implicit-def: $vgpr21 : SGPR spill to VGPR lane
-; SI-NEXT:    s_lshr_b32 s75, s29, 16
-; SI-NEXT:    s_lshr_b32 s66, s28, 16
-; SI-NEXT:    s_lshr_b32 s78, s27, 16
-; SI-NEXT:    s_lshr_b32 s55, s26, 16
-; SI-NEXT:    s_lshr_b32 s79, s25, 16
-; SI-NEXT:    s_lshr_b32 s54, s24, 16
-; SI-NEXT:    s_lshr_b32 s90, s23, 16
-; SI-NEXT:    s_lshr_b32 s7, s22, 16
-; SI-NEXT:    s_lshr_b32 s91, s21, 16
-; SI-NEXT:    s_lshr_b32 s53, s20, 16
-; SI-NEXT:    s_lshr_b32 s92, s19, 16
-; SI-NEXT:    s_lshr_b32 s6, s18, 16
-; SI-NEXT:    s_lshr_b32 s93, s17, 16
-; SI-NEXT:    s_lshr_b32 s58, s49, 16
-; SI-NEXT:    s_lshr_b32 s50, s51, 16
-; SI-NEXT:    s_lshr_b32 s59, s38, 16
-; SI-NEXT:    s_lshr_b32 s39, s48, 16
-; SI-NEXT:    s_lshr_b32 s60, s37, 16
-; SI-NEXT:    s_lshr_b32 s94, s95, 16
-; SI-NEXT:    s_lshr_b32 s61, s96, 16
-; SI-NEXT:    s_lshr_b32 s97, s36, 16
-; SI-NEXT:    s_lshr_b32 s62, s85, 16
-; SI-NEXT:    s_lshr_b32 s86, s87, 16
-; SI-NEXT:    s_lshr_b32 s63, s34, 16
-; SI-NEXT:    s_lshr_b32 s35, s84, 16
-; SI-NEXT:    s_lshr_b32 s72, s71, 16
-; SI-NEXT:    s_lshr_b32 s80, s81, 16
-; SI-NEXT:    s_lshr_b32 s73, s68, 16
-; SI-NEXT:    s_lshr_b32 s69, s70, 16
-; SI-NEXT:    s_lshr_b32 s74, s67, 16
-; SI-NEXT:    s_lshr_b32 s30, s31, 16
+; SI-NEXT:    s_lshr_b32 s6, s69, 16
+; SI-NEXT:    v_readfirstlane_b32 s66, v4
+; SI-NEXT:    s_waitcnt expcnt(1)
+; SI-NEXT:    v_writelane_b32 v21, s7, 0
+; SI-NEXT:    s_lshr_b32 s9, s66, 16
+; SI-NEXT:    v_readfirstlane_b32 s55, v2
+; SI-NEXT:    v_writelane_b32 v21, s6, 1
+; SI-NEXT:    s_lshr_b32 s8, s55, 16
+; SI-NEXT:    v_writelane_b32 v21, s9, 2
+; SI-NEXT:    s_lshr_b32 s11, s29, 16
+; SI-NEXT:    v_writelane_b32 v21, s8, 3
+; SI-NEXT:    s_lshr_b32 s10, s27, 16
+; SI-NEXT:    v_writelane_b32 v21, s11, 4
+; SI-NEXT:    s_lshr_b32 s13, s25, 16
+; SI-NEXT:    v_writelane_b32 v21, s10, 5
+; SI-NEXT:    s_lshr_b32 s12, s23, 16
+; SI-NEXT:    v_writelane_b32 v21, s13, 6
+; SI-NEXT:    s_lshr_b32 s15, s21, 16
+; SI-NEXT:    v_writelane_b32 v21, s12, 7
+; SI-NEXT:    s_lshr_b32 s14, s19, 16
+; SI-NEXT:    v_writelane_b32 v21, s15, 8
+; SI-NEXT:    s_lshr_b32 s5, s16, 16
+; SI-NEXT:    v_writelane_b32 v21, s14, 9
+; SI-NEXT:    s_lshr_b32 s40, s18, 16
+; SI-NEXT:    v_writelane_b32 v21, s5, 10
+; SI-NEXT:    s_lshr_b32 s41, s20, 16
+; SI-NEXT:    v_writelane_b32 v21, s40, 11
+; SI-NEXT:    s_lshr_b32 s42, s22, 16
+; SI-NEXT:    v_writelane_b32 v21, s41, 12
+; SI-NEXT:    s_lshr_b32 s43, s24, 16
+; SI-NEXT:    v_writelane_b32 v21, s42, 13
+; SI-NEXT:    s_lshr_b32 s44, s26, 16
+; SI-NEXT:    v_writelane_b32 v21, s43, 14
+; SI-NEXT:    s_lshr_b32 s45, s28, 16
+; SI-NEXT:    v_readfirstlane_b32 s95, v1
+; SI-NEXT:    v_writelane_b32 v21, s44, 15
+; SI-NEXT:    v_readfirstlane_b32 s68, v3
+; SI-NEXT:    s_lshr_b32 s60, s95, 16
+; SI-NEXT:    v_writelane_b32 v21, s45, 16
+; SI-NEXT:    v_readfirstlane_b32 s71, v5
+; SI-NEXT:    s_lshr_b32 s62, s68, 16
+; SI-NEXT:    v_writelane_b32 v21, s60, 17
+; SI-NEXT:    v_readfirstlane_b32 s80, v7
+; SI-NEXT:    s_lshr_b32 s63, s71, 16
+; SI-NEXT:    v_writelane_b32 v21, s62, 18
+; SI-NEXT:    v_readfirstlane_b32 s85, v9
+; SI-NEXT:    s_lshr_b32 s72, s80, 16
+; SI-NEXT:    v_writelane_b32 v21, s63, 19
+; SI-NEXT:    v_readfirstlane_b32 s34, v11
+; SI-NEXT:    s_lshr_b32 s73, s85, 16
+; SI-NEXT:    v_writelane_b32 v21, s72, 20
+; SI-NEXT:    v_readfirstlane_b32 s93, v13
+; SI-NEXT:    s_lshr_b32 s74, s34, 16
+; SI-NEXT:    v_writelane_b32 v21, s73, 21
+; SI-NEXT:    v_readfirstlane_b32 s39, v18
+; SI-NEXT:    v_readfirstlane_b32 s49, v17
+; SI-NEXT:    v_readfirstlane_b32 s36, v16
+; SI-NEXT:    v_readfirstlane_b32 s38, v15
+; SI-NEXT:    v_readfirstlane_b32 s35, v14
+; SI-NEXT:    s_lshr_b32 s78, s93, 16
+; SI-NEXT:    v_readfirstlane_b32 s86, v12
+; SI-NEXT:    v_readfirstlane_b32 s81, v10
+; SI-NEXT:    v_writelane_b32 v21, s74, 22
+; SI-NEXT:    s_lshr_b32 s91, s17, 16
+; SI-NEXT:    s_lshr_b32 s59, s39, 16
+; SI-NEXT:    s_lshr_b32 s92, s49, 16
+; SI-NEXT:    s_lshr_b32 s51, s36, 16
+; SI-NEXT:    s_lshr_b32 s90, s38, 16
+; SI-NEXT:    s_lshr_b32 s61, s35, 16
+; SI-NEXT:    s_lshr_b32 s53, s86, 16
+; SI-NEXT:    s_lshr_b32 s58, s81, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v19
-; SI-NEXT:    s_waitcnt expcnt(2)
-; SI-NEXT:    v_writelane_b32 v21, s5, 0
+; SI-NEXT:    v_writelane_b32 v21, s78, 23
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_writelane_b32 v21, s6, 1
-; SI-NEXT:    v_writelane_b32 v21, s7, 2
+; SI-NEXT:    v_writelane_b32 v21, s90, 24
+; SI-NEXT:    v_writelane_b32 v21, s92, 25
 ; SI-NEXT:    ; implicit-def: $vgpr22 : SGPR spill to VGPR lane
-; SI-NEXT:    ; implicit-def: $vgpr23 : SGPR spill to VGPR lane
-; SI-NEXT:    s_cbranch_scc0 .LBB99_4
+; SI-NEXT:    s_cbranch_scc0 .LBB99_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
-; SI-NEXT:    s_or_b32 s98, s4, s5
+; SI-NEXT:    s_or_b32 vcc_lo, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s93, 16
-; SI-NEXT:    s_or_b32 s99, s4, s5
+; SI-NEXT:    s_lshl_b32 s5, s91, 16
+; SI-NEXT:    s_or_b32 vcc_hi, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s6, 16
+; SI-NEXT:    s_lshl_b32 s5, s40, 16
 ; SI-NEXT:    s_or_b32 s82, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s92, 16
+; SI-NEXT:    s_lshl_b32 s5, s14, 16
 ; SI-NEXT:    s_or_b32 s83, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s53, 16
+; SI-NEXT:    s_lshl_b32 s5, s41, 16
 ; SI-NEXT:    s_or_b32 s64, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s91, 16
+; SI-NEXT:    s_lshl_b32 s5, s15, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s7, 16
+; SI-NEXT:    s_lshl_b32 s5, s42, 16
 ; SI-NEXT:    s_or_b32 s88, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s90, 16
+; SI-NEXT:    s_lshl_b32 s5, s12, 16
 ; SI-NEXT:    s_or_b32 s89, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s54, 16
+; SI-NEXT:    s_lshl_b32 s5, s43, 16
 ; SI-NEXT:    s_or_b32 s56, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s79, 16
+; SI-NEXT:    s_lshl_b32 s5, s13, 16
 ; SI-NEXT:    s_or_b32 s57, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s55, 16
+; SI-NEXT:    s_lshl_b32 s5, s44, 16
 ; SI-NEXT:    s_or_b32 s76, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s78, 16
+; SI-NEXT:    s_lshl_b32 s5, s10, 16
 ; SI-NEXT:    s_or_b32 s77, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s66, 16
+; SI-NEXT:    s_lshl_b32 s5, s45, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s75, 16
+; SI-NEXT:    s_lshl_b32 s5, s11, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, s95, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s60, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
-; SI-NEXT:    s_and_b32 s4, s67, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s74, 16
+; SI-NEXT:    s_and_b32 s4, s55, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s8, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
-; SI-NEXT:    s_and_b32 s4, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
-; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s73, 16
+; SI-NEXT:    s_lshl_b32 s5, s62, 16
+; SI-NEXT:    s_or_b32 s42, s4, s5
+; SI-NEXT:    s_and_b32 s4, s66, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s9, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
-; SI-NEXT:    s_and_b32 s4, s81, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
-; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s71, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s72, 16
+; SI-NEXT:    s_lshl_b32 s5, s63, 16
+; SI-NEXT:    s_or_b32 s40, s4, s5
+; SI-NEXT:    s_and_b32 s4, s69, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
-; SI-NEXT:    s_and_b32 s4, s84, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s80, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s72, 16
+; SI-NEXT:    s_mov_b32 s79, s14
 ; SI-NEXT:    s_or_b32 s14, s4, s5
-; SI-NEXT:    s_and_b32 s4, s34, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s63, 16
+; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s7, 16
+; SI-NEXT:    s_mov_b32 s50, s15
 ; SI-NEXT:    s_or_b32 s15, s4, s5
-; SI-NEXT:    s_and_b32 s4, s87, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
-; SI-NEXT:    s_or_b32 s12, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s85, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s62, 16
+; SI-NEXT:    s_lshl_b32 s5, s73, 16
+; SI-NEXT:    s_mov_b32 s75, s12
+; SI-NEXT:    s_or_b32 s12, s4, s5
+; SI-NEXT:    s_and_b32 s4, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s58, 16
+; SI-NEXT:    s_mov_b32 s37, s13
 ; SI-NEXT:    s_or_b32 s13, s4, s5
-; SI-NEXT:    s_and_b32 s4, s36, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_and_b32 s4, s34, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s74, 16
+; SI-NEXT:    s_mov_b32 s73, s10
 ; SI-NEXT:    s_or_b32 s10, s4, s5
-; SI-NEXT:    s_and_b32 s4, s96, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s61, 16
+; SI-NEXT:    s_and_b32 s4, s86, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s53, 16
+; SI-NEXT:    s_mov_b32 s72, s11
 ; SI-NEXT:    s_or_b32 s11, s4, s5
-; SI-NEXT:    s_and_b32 s4, s95, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s94, 16
+; SI-NEXT:    s_and_b32 s4, s93, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s78, 16
+; SI-NEXT:    s_mov_b32 s63, s8
 ; SI-NEXT:    s_or_b32 s8, s4, s5
-; SI-NEXT:    s_and_b32 s4, s37, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s60, 16
+; SI-NEXT:    s_and_b32 s4, s35, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s61, 16
+; SI-NEXT:    s_mov_b32 s62, s9
 ; SI-NEXT:    s_or_b32 s9, s4, s5
-; SI-NEXT:    s_and_b32 s4, s48, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s39, 16
-; SI-NEXT:    s_or_b32 s6, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s38, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s59, 16
+; SI-NEXT:    s_lshl_b32 s5, s90, 16
+; SI-NEXT:    s_mov_b32 s94, s6
+; SI-NEXT:    s_or_b32 s6, s4, s5
+; SI-NEXT:    s_and_b32 s4, s36, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s51, 16
+; SI-NEXT:    s_mov_b32 s60, s7
 ; SI-NEXT:    s_or_b32 s7, s4, s5
-; SI-NEXT:    s_and_b32 s4, s51, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s50, 16
+; SI-NEXT:    s_and_b32 s4, s49, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s92, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    s_and_b32 s5, s49, 0xffff
-; SI-NEXT:    s_lshl_b32 vcc_lo, s58, 16
-; SI-NEXT:    s_or_b32 s5, s5, vcc_lo
-; SI-NEXT:    s_lshr_b32 vcc_lo, s99, 8
-; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 36
-; SI-NEXT:    s_lshr_b32 vcc_lo, s83, 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 38
-; SI-NEXT:    s_lshr_b32 vcc_lo, s65, 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 40
-; SI-NEXT:    s_lshr_b32 vcc_lo, s89, 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 42
-; SI-NEXT:    s_lshr_b32 vcc_lo, s57, 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 44
-; SI-NEXT:    s_lshr_b32 vcc_lo, s77, 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 46
-; SI-NEXT:    s_lshr_b32 vcc_lo, s47, 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 48
-; SI-NEXT:    s_lshr_b32 vcc_lo, s45, 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 50
-; SI-NEXT:    s_lshr_b32 vcc_lo, s43, 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 52
-; SI-NEXT:    s_lshr_b32 vcc_lo, s41, 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 54
-; SI-NEXT:    s_lshr_b32 vcc_lo, s15, 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 56
-; SI-NEXT:    s_lshr_b32 vcc_lo, s13, 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 58
-; SI-NEXT:    s_lshr_b32 vcc_lo, s11, 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 60
-; SI-NEXT:    s_lshr_b32 vcc_lo, s9, 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 62
-; SI-NEXT:    s_lshr_b32 vcc_lo, s7, 8
+; SI-NEXT:    s_and_b32 s5, s39, 0xffff
+; SI-NEXT:    s_lshl_b32 s96, s59, 16
+; SI-NEXT:    s_or_b32 s5, s5, s96
+; SI-NEXT:    s_lshr_b64 s[96:97], vcc, 24
+; SI-NEXT:    v_writelane_b32 v21, s96, 30
+; SI-NEXT:    v_writelane_b32 v21, s97, 31
+; SI-NEXT:    s_lshr_b64 s[96:97], vcc, 16
+; SI-NEXT:    v_writelane_b32 v21, s96, 28
+; SI-NEXT:    v_writelane_b32 v21, s97, 29
+; SI-NEXT:    s_lshr_b64 s[96:97], vcc, 8
+; SI-NEXT:    v_writelane_b32 v21, s96, 26
+; SI-NEXT:    v_writelane_b32 v21, s97, 27
+; SI-NEXT:    s_lshr_b64 s[96:97], s[82:83], 24
+; SI-NEXT:    v_writelane_b32 v21, s96, 36
+; SI-NEXT:    v_writelane_b32 v21, s97, 37
+; SI-NEXT:    s_lshr_b64 s[96:97], s[82:83], 16
+; SI-NEXT:    v_writelane_b32 v21, s96, 34
+; SI-NEXT:    v_writelane_b32 v21, s97, 35
+; SI-NEXT:    s_lshr_b64 s[96:97], s[82:83], 8
+; SI-NEXT:    v_writelane_b32 v21, s96, 32
+; SI-NEXT:    v_writelane_b32 v21, s97, 33
+; SI-NEXT:    s_lshr_b64 s[96:97], s[64:65], 24
+; SI-NEXT:    v_writelane_b32 v21, s96, 42
+; SI-NEXT:    v_writelane_b32 v21, s97, 43
+; SI-NEXT:    s_lshr_b64 s[96:97], s[64:65], 16
+; SI-NEXT:    v_writelane_b32 v21, s96, 40
+; SI-NEXT:    v_writelane_b32 v21, s97, 41
+; SI-NEXT:    s_lshr_b64 s[96:97], s[64:65], 8
+; SI-NEXT:    v_writelane_b32 v21, s96, 38
+; SI-NEXT:    v_writelane_b32 v21, s97, 39
+; SI-NEXT:    s_lshr_b64 s[96:97], s[88:89], 24
+; SI-NEXT:    v_writelane_b32 v21, s96, 48
+; SI-NEXT:    v_writelane_b32 v21, s97, 49
+; SI-NEXT:    s_lshr_b64 s[96:97], s[88:89], 16
+; SI-NEXT:    v_writelane_b32 v21, s96, 46
+; SI-NEXT:    v_writelane_b32 v21, s97, 47
+; SI-NEXT:    s_lshr_b64 s[96:97], s[88:89], 8
+; SI-NEXT:    v_writelane_b32 v21, s96, 44
+; SI-NEXT:    s_lshr_b32 s74, vcc_hi, 8
+; SI-NEXT:    v_writelane_b32 v21, s97, 45
+; SI-NEXT:    s_lshr_b64 s[96:97], s[56:57], 24
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v22, s74, 53
+; SI-NEXT:    s_lshr_b32 s74, s83, 8
+; SI-NEXT:    v_writelane_b32 v21, s96, 54
+; SI-NEXT:    v_writelane_b32 v22, s74, 55
+; SI-NEXT:    s_lshr_b32 s74, s65, 8
+; SI-NEXT:    v_writelane_b32 v21, s97, 55
+; SI-NEXT:    s_lshr_b64 s[96:97], s[56:57], 16
+; SI-NEXT:    v_writelane_b32 v22, s74, 57
+; SI-NEXT:    s_lshr_b32 s74, s89, 8
+; SI-NEXT:    v_writelane_b32 v21, s96, 52
+; SI-NEXT:    v_writelane_b32 v22, s74, 59
+; SI-NEXT:    s_lshr_b32 s74, s57, 8
+; SI-NEXT:    v_writelane_b32 v21, s97, 53
+; SI-NEXT:    s_lshr_b64 s[96:97], s[56:57], 8
+; SI-NEXT:    v_writelane_b32 v22, s74, 61
+; SI-NEXT:    s_lshr_b32 s74, s77, 8
+; SI-NEXT:    v_writelane_b32 v21, s96, 50
+; SI-NEXT:    v_writelane_b32 v22, s74, 50
+; SI-NEXT:    s_bfe_u32 s52, s91, 0x80008
+; SI-NEXT:    v_writelane_b32 v21, s97, 51
+; SI-NEXT:    s_lshr_b64 s[96:97], s[76:77], 24
+; SI-NEXT:    v_writelane_b32 v22, s52, 52
+; SI-NEXT:    s_bfe_u32 s79, s79, 0x80008
+; SI-NEXT:    v_writelane_b32 v21, s96, 60
+; SI-NEXT:    v_writelane_b32 v22, s79, 54
+; SI-NEXT:    s_bfe_u32 s79, s50, 0x80008
+; SI-NEXT:    v_writelane_b32 v21, s97, 61
+; SI-NEXT:    s_lshr_b64 s[96:97], s[76:77], 16
+; SI-NEXT:    v_writelane_b32 v22, s79, 56
+; SI-NEXT:    s_bfe_u32 s75, s75, 0x80008
+; SI-NEXT:    v_writelane_b32 v21, s96, 58
+; SI-NEXT:    v_writelane_b32 v22, s75, 58
+; SI-NEXT:    s_bfe_u32 s75, s37, 0x80008
+; SI-NEXT:    v_writelane_b32 v21, s97, 59
+; SI-NEXT:    s_lshr_b64 s[96:97], s[76:77], 8
+; SI-NEXT:    v_writelane_b32 v22, s75, 60
+; SI-NEXT:    s_bfe_u32 s73, s73, 0x80008
+; SI-NEXT:    v_writelane_b32 v21, s96, 56
+; SI-NEXT:    v_writelane_b32 v22, s73, 51
+; SI-NEXT:    v_writelane_b32 v21, s97, 57
+; SI-NEXT:    s_lshr_b64 s[96:97], s[46:47], 24
+; SI-NEXT:    v_writelane_b32 v22, s96, 2
+; SI-NEXT:    v_writelane_b32 v22, s97, 3
+; SI-NEXT:    s_lshr_b64 s[96:97], s[46:47], 16
+; SI-NEXT:    v_writelane_b32 v22, s96, 0
+; SI-NEXT:    v_writelane_b32 v22, s97, 1
+; SI-NEXT:    s_lshr_b64 s[96:97], s[46:47], 8
+; SI-NEXT:    v_writelane_b32 v21, s96, 62
+; SI-NEXT:    v_writelane_b32 v21, s97, 63
+; SI-NEXT:    s_lshr_b64 s[96:97], s[44:45], 24
+; SI-NEXT:    v_writelane_b32 v22, s96, 8
+; SI-NEXT:    v_writelane_b32 v22, s97, 9
+; SI-NEXT:    s_lshr_b64 s[96:97], s[44:45], 16
+; SI-NEXT:    v_writelane_b32 v22, s96, 6
+; SI-NEXT:    v_writelane_b32 v22, s97, 7
+; SI-NEXT:    s_lshr_b64 s[96:97], s[44:45], 8
+; SI-NEXT:    v_writelane_b32 v22, s96, 4
+; SI-NEXT:    v_writelane_b32 v22, s97, 5
+; SI-NEXT:    s_lshr_b64 s[96:97], s[42:43], 24
+; SI-NEXT:    v_writelane_b32 v22, s96, 14
+; SI-NEXT:    v_writelane_b32 v22, s97, 15
+; SI-NEXT:    s_lshr_b64 s[96:97], s[42:43], 16
+; SI-NEXT:    v_writelane_b32 v22, s96, 12
+; SI-NEXT:    v_writelane_b32 v22, s97, 13
+; SI-NEXT:    s_lshr_b64 s[96:97], s[42:43], 8
+; SI-NEXT:    v_writelane_b32 v22, s96, 10
+; SI-NEXT:    v_writelane_b32 v22, s97, 11
+; SI-NEXT:    s_lshr_b64 s[96:97], s[40:41], 24
+; SI-NEXT:    v_writelane_b32 v22, s96, 20
+; SI-NEXT:    v_writelane_b32 v22, s97, 21
+; SI-NEXT:    s_lshr_b64 s[96:97], s[40:41], 16
+; SI-NEXT:    v_writelane_b32 v22, s96, 18
+; SI-NEXT:    v_writelane_b32 v22, s97, 19
+; SI-NEXT:    s_lshr_b64 s[96:97], s[40:41], 8
+; SI-NEXT:    v_writelane_b32 v22, s96, 16
+; SI-NEXT:    v_writelane_b32 v22, s97, 17
+; SI-NEXT:    s_lshr_b64 s[96:97], s[14:15], 24
+; SI-NEXT:    v_writelane_b32 v22, s96, 26
+; SI-NEXT:    v_writelane_b32 v22, s97, 27
+; SI-NEXT:    s_lshr_b64 s[96:97], s[14:15], 16
+; SI-NEXT:    v_writelane_b32 v22, s96, 24
+; SI-NEXT:    v_writelane_b32 v22, s97, 25
+; SI-NEXT:    s_lshr_b64 s[96:97], s[14:15], 8
+; SI-NEXT:    v_writelane_b32 v22, s96, 22
+; SI-NEXT:    v_writelane_b32 v22, s97, 23
+; SI-NEXT:    s_lshr_b64 s[96:97], s[12:13], 24
+; SI-NEXT:    v_writelane_b32 v22, s96, 32
+; SI-NEXT:    v_writelane_b32 v22, s97, 33
+; SI-NEXT:    s_lshr_b64 s[96:97], s[12:13], 16
+; SI-NEXT:    v_writelane_b32 v22, s96, 30
+; SI-NEXT:    v_writelane_b32 v22, s97, 31
+; SI-NEXT:    s_lshr_b64 s[96:97], s[12:13], 8
+; SI-NEXT:    v_writelane_b32 v22, s96, 28
+; SI-NEXT:    v_writelane_b32 v22, s97, 29
+; SI-NEXT:    s_lshr_b64 s[96:97], s[10:11], 24
+; SI-NEXT:    v_writelane_b32 v22, s96, 38
+; SI-NEXT:    v_writelane_b32 v22, s97, 39
+; SI-NEXT:    s_lshr_b64 s[96:97], s[10:11], 16
+; SI-NEXT:    v_writelane_b32 v22, s96, 36
+; SI-NEXT:    v_writelane_b32 v22, s97, 37
+; SI-NEXT:    s_lshr_b64 s[96:97], s[10:11], 8
+; SI-NEXT:    v_writelane_b32 v22, s96, 34
+; SI-NEXT:    v_writelane_b32 v22, s97, 35
+; SI-NEXT:    s_lshr_b64 s[96:97], s[8:9], 24
+; SI-NEXT:    v_writelane_b32 v22, s96, 44
+; SI-NEXT:    v_writelane_b32 v22, s97, 45
+; SI-NEXT:    s_lshr_b64 s[96:97], s[8:9], 16
+; SI-NEXT:    v_writelane_b32 v22, s96, 42
+; SI-NEXT:    v_writelane_b32 v22, s97, 43
+; SI-NEXT:    s_lshr_b64 s[96:97], s[8:9], 8
+; SI-NEXT:    v_writelane_b32 v22, s96, 40
+; SI-NEXT:    v_writelane_b32 v22, s97, 41
+; SI-NEXT:    s_lshr_b64 s[96:97], s[6:7], 16
+; SI-NEXT:    v_writelane_b32 v22, s96, 48
+; SI-NEXT:    s_bfe_u32 s37, s94, 0x80008
+; SI-NEXT:    s_mov_b32 s94, s58
+; SI-NEXT:    s_bfe_u32 s84, s58, 0x80008
+; SI-NEXT:    s_bfe_u32 s98, s59, 0x80008
+; SI-NEXT:    s_mov_b32 s50, s59
+; SI-NEXT:    s_lshr_b64 s[58:59], s[6:7], 24
+; SI-NEXT:    v_writelane_b32 v22, s97, 49
+; SI-NEXT:    s_lshr_b64 s[96:97], s[6:7], 8
+; SI-NEXT:    s_bfe_u32 s54, s51, 0x80008
+; SI-NEXT:    s_mov_b32 s59, s50
+; SI-NEXT:    v_writelane_b32 v22, s96, 46
+; SI-NEXT:    s_mov_b32 s52, s51
+; SI-NEXT:    s_lshr_b64 s[50:51], s[4:5], 24
+; SI-NEXT:    s_bfe_u32 s75, s63, 0x80008
+; SI-NEXT:    s_bfe_u32 s63, s53, 0x80008
+; SI-NEXT:    v_writelane_b32 v22, s97, 47
+; SI-NEXT:    s_mov_b32 s51, s52
+; SI-NEXT:    s_mov_b32 s96, s53
+; SI-NEXT:    s_lshr_b64 s[52:53], s[4:5], 16
+; SI-NEXT:    s_bfe_u32 s79, s72, 0x80008
+; SI-NEXT:    s_bfe_u32 s73, s62, 0x80008
+; SI-NEXT:    s_bfe_u32 s72, s60, 0x80008
+; SI-NEXT:    s_bfe_u32 s62, s61, 0x80008
+; SI-NEXT:    s_mov_b32 s53, s96
+; SI-NEXT:    s_mov_b32 s96, s61
+; SI-NEXT:    s_lshr_b64 s[60:61], s[4:5], 8
+; SI-NEXT:    s_lshr_b32 s90, s47, 8
+; SI-NEXT:    s_lshr_b32 s78, s45, 8
+; SI-NEXT:    s_lshr_b32 s74, s43, 8
+; SI-NEXT:    s_lshr_b32 s48, s41, 8
+; SI-NEXT:    s_lshr_b32 s92, s15, 8
+; SI-NEXT:    s_lshr_b32 s87, s13, 8
+; SI-NEXT:    s_lshr_b32 s31, s11, 8
+; SI-NEXT:    s_lshr_b32 s70, s9, 8
+; SI-NEXT:    s_lshr_b32 s67, s7, 8
+; SI-NEXT:    s_lshr_b32 s99, s5, 8
+; SI-NEXT:    s_mov_b32 s61, s96
+; SI-NEXT:    s_mov_b64 s[96:97], 0
+; SI-NEXT:    s_branch .LBB99_3
+; SI-NEXT:  .LBB99_2:
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    s_mov_b32 s94, s58
+; SI-NEXT:    v_writelane_b32 v21, s4, 26
+; SI-NEXT:    v_writelane_b32 v21, s5, 27
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    s_mov_b64 s[96:97], -1
+; SI-NEXT:    v_writelane_b32 v21, s4, 28
+; SI-NEXT:    v_writelane_b32 v21, s5, 29
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr82
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr87
+; SI-NEXT:    ; implicit-def: $sgpr84
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr70
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr99
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    v_writelane_b32 v21, s4, 30
+; SI-NEXT:    v_writelane_b32 v21, s5, 31
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 32
+; SI-NEXT:    v_writelane_b32 v21, s5, 33
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 34
+; SI-NEXT:    v_writelane_b32 v21, s5, 35
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 36
+; SI-NEXT:    v_writelane_b32 v21, s5, 37
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 38
+; SI-NEXT:    v_writelane_b32 v21, s5, 39
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 40
+; SI-NEXT:    v_writelane_b32 v21, s5, 41
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 42
+; SI-NEXT:    v_writelane_b32 v21, s5, 43
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 44
+; SI-NEXT:    v_writelane_b32 v21, s5, 45
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 46
+; SI-NEXT:    v_writelane_b32 v21, s5, 47
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 48
+; SI-NEXT:    v_writelane_b32 v21, s5, 49
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; kill: killed $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 50
+; SI-NEXT:    v_writelane_b32 v21, s5, 51
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 52
+; SI-NEXT:    v_writelane_b32 v21, s5, 53
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 54
+; SI-NEXT:    v_writelane_b32 v21, s5, 55
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 56
+; SI-NEXT:    v_writelane_b32 v21, s5, 57
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 58
+; SI-NEXT:    v_writelane_b32 v21, s5, 59
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 60
+; SI-NEXT:    v_writelane_b32 v21, s5, 61
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v21, s4, 62
+; SI-NEXT:    v_writelane_b32 v21, s5, 63
+; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v23, vcc_lo, 0
-; SI-NEXT:    s_bfe_u32 vcc_lo, s93, 0x80008
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 35
-; SI-NEXT:    s_bfe_u32 vcc_lo, s92, 0x80008
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 37
-; SI-NEXT:    s_bfe_u32 vcc_lo, s91, 0x80008
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 39
-; SI-NEXT:    s_bfe_u32 vcc_lo, s90, 0x80008
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 41
-; SI-NEXT:    s_bfe_u32 vcc_lo, s79, 0x80008
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 43
-; SI-NEXT:    s_bfe_u32 vcc_lo, s78, 0x80008
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 45
-; SI-NEXT:    s_bfe_u32 vcc_lo, s75, 0x80008
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 47
-; SI-NEXT:    s_bfe_u32 vcc_lo, s74, 0x80008
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 49
-; SI-NEXT:    s_bfe_u32 vcc_lo, s73, 0x80008
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 51
-; SI-NEXT:    s_bfe_u32 vcc_lo, s72, 0x80008
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 53
-; SI-NEXT:    s_bfe_u32 vcc_lo, s63, 0x80008
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 55
-; SI-NEXT:    s_bfe_u32 vcc_lo, s62, 0x80008
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 57
-; SI-NEXT:    s_bfe_u32 vcc_lo, s61, 0x80008
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 59
-; SI-NEXT:    s_bfe_u32 vcc_lo, s60, 0x80008
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 61
-; SI-NEXT:    s_bfe_u32 vcc_lo, s59, 0x80008
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 63
-; SI-NEXT:    s_bfe_u32 vcc_lo, s58, 0x80008
-; SI-NEXT:    v_writelane_b32 v23, vcc_lo, 1
-; SI-NEXT:    s_lshr_b64 vcc, s[98:99], 24
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 7
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 8
-; SI-NEXT:    s_lshr_b64 vcc, s[98:99], 16
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 5
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 6
-; SI-NEXT:    s_lshr_b64 vcc, s[98:99], 8
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 3
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 4
-; SI-NEXT:    s_lshr_b64 vcc, s[82:83], 24
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 13
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 14
-; SI-NEXT:    s_lshr_b64 vcc, s[82:83], 16
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 11
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 12
-; SI-NEXT:    s_lshr_b64 vcc, s[82:83], 8
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 9
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 10
-; SI-NEXT:    s_lshr_b64 vcc, s[64:65], 24
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 19
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 20
-; SI-NEXT:    s_lshr_b64 vcc, s[64:65], 16
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 17
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 18
-; SI-NEXT:    s_lshr_b64 vcc, s[64:65], 8
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 15
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 16
-; SI-NEXT:    s_lshr_b64 vcc, s[88:89], 24
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 25
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 26
-; SI-NEXT:    s_lshr_b64 vcc, s[88:89], 16
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 23
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 24
-; SI-NEXT:    s_lshr_b64 vcc, s[88:89], 8
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 21
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 22
-; SI-NEXT:    s_lshr_b64 vcc, s[56:57], 24
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 31
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 32
-; SI-NEXT:    s_lshr_b64 vcc, s[56:57], 16
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 29
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 30
-; SI-NEXT:    s_lshr_b64 vcc, s[56:57], 8
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 27
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 28
-; SI-NEXT:    s_lshr_b64 vcc, s[76:77], 24
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 37
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 38
-; SI-NEXT:    s_lshr_b64 vcc, s[76:77], 16
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 35
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 36
-; SI-NEXT:    s_lshr_b64 vcc, s[76:77], 8
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 33
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 34
-; SI-NEXT:    s_lshr_b64 vcc, s[46:47], 24
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 43
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 44
-; SI-NEXT:    s_lshr_b64 vcc, s[46:47], 16
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 41
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 42
-; SI-NEXT:    s_lshr_b64 vcc, s[46:47], 8
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 39
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 40
-; SI-NEXT:    s_lshr_b64 vcc, s[44:45], 24
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 49
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 50
-; SI-NEXT:    s_lshr_b64 vcc, s[44:45], 16
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 47
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 48
-; SI-NEXT:    s_lshr_b64 vcc, s[44:45], 8
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 45
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 46
-; SI-NEXT:    s_lshr_b64 vcc, s[42:43], 24
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 55
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 56
-; SI-NEXT:    s_lshr_b64 vcc, s[42:43], 16
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 53
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 54
-; SI-NEXT:    s_lshr_b64 vcc, s[42:43], 8
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 51
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 52
-; SI-NEXT:    s_lshr_b64 vcc, s[40:41], 24
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 61
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 62
-; SI-NEXT:    s_lshr_b64 vcc, s[40:41], 16
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 59
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 60
-; SI-NEXT:    s_lshr_b64 vcc, s[40:41], 8
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 57
-; SI-NEXT:    v_writelane_b32 v21, vcc_hi, 58
-; SI-NEXT:    s_lshr_b64 vcc, s[14:15], 24
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 3
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 4
-; SI-NEXT:    s_lshr_b64 vcc, s[14:15], 16
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 1
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 2
-; SI-NEXT:    s_lshr_b64 vcc, s[14:15], 8
-; SI-NEXT:    v_writelane_b32 v21, vcc_lo, 63
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 0
-; SI-NEXT:    s_lshr_b64 vcc, s[12:13], 24
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 9
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 10
-; SI-NEXT:    s_lshr_b64 vcc, s[12:13], 16
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 7
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 8
-; SI-NEXT:    s_lshr_b64 vcc, s[12:13], 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 5
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 6
-; SI-NEXT:    s_lshr_b64 vcc, s[10:11], 24
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 15
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 16
-; SI-NEXT:    s_lshr_b64 vcc, s[10:11], 16
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 13
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 14
-; SI-NEXT:    s_lshr_b64 vcc, s[10:11], 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 11
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 12
-; SI-NEXT:    s_lshr_b64 vcc, s[8:9], 24
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 21
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 22
-; SI-NEXT:    s_lshr_b64 vcc, s[8:9], 16
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 19
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 20
-; SI-NEXT:    s_lshr_b64 vcc, s[8:9], 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 17
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 18
-; SI-NEXT:    s_lshr_b64 vcc, s[6:7], 24
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 27
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 28
-; SI-NEXT:    s_lshr_b64 vcc, s[6:7], 16
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 25
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 26
-; SI-NEXT:    s_lshr_b64 vcc, s[6:7], 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 23
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 24
-; SI-NEXT:    s_lshr_b64 vcc, s[4:5], 24
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 33
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 34
-; SI-NEXT:    s_lshr_b64 vcc, s[4:5], 16
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 31
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 32
-; SI-NEXT:    s_lshr_b64 vcc, s[4:5], 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_lo, 29
-; SI-NEXT:    s_lshr_b32 s52, s5, 8
-; SI-NEXT:    v_writelane_b32 v22, vcc_hi, 30
-; SI-NEXT:    s_cbranch_execnz .LBB99_3
-; SI-NEXT:  .LBB99_2: ; %cmp.true
-; SI-NEXT:    s_add_i32 s51, s51, 3
-; SI-NEXT:    s_and_b32 s4, s51, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s50, 16
+; SI-NEXT:    v_writelane_b32 v22, s4, 0
+; SI-NEXT:    v_writelane_b32 v22, s5, 1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 2
+; SI-NEXT:    v_writelane_b32 v22, s5, 3
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 4
+; SI-NEXT:    v_writelane_b32 v22, s5, 5
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 6
+; SI-NEXT:    v_writelane_b32 v22, s5, 7
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 8
+; SI-NEXT:    v_writelane_b32 v22, s5, 9
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 10
+; SI-NEXT:    v_writelane_b32 v22, s5, 11
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 12
+; SI-NEXT:    v_writelane_b32 v22, s5, 13
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 14
+; SI-NEXT:    v_writelane_b32 v22, s5, 15
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 16
+; SI-NEXT:    v_writelane_b32 v22, s5, 17
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 18
+; SI-NEXT:    v_writelane_b32 v22, s5, 19
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 20
+; SI-NEXT:    v_writelane_b32 v22, s5, 21
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 22
+; SI-NEXT:    v_writelane_b32 v22, s5, 23
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 24
+; SI-NEXT:    v_writelane_b32 v22, s5, 25
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 26
+; SI-NEXT:    v_writelane_b32 v22, s5, 27
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 28
+; SI-NEXT:    v_writelane_b32 v22, s5, 29
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 30
+; SI-NEXT:    v_writelane_b32 v22, s5, 31
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 32
+; SI-NEXT:    v_writelane_b32 v22, s5, 33
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 34
+; SI-NEXT:    v_writelane_b32 v22, s5, 35
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 36
+; SI-NEXT:    v_writelane_b32 v22, s5, 37
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 38
+; SI-NEXT:    v_writelane_b32 v22, s5, 39
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 40
+; SI-NEXT:    v_writelane_b32 v22, s5, 41
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 42
+; SI-NEXT:    v_writelane_b32 v22, s5, 43
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 44
+; SI-NEXT:    v_writelane_b32 v22, s5, 45
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 46
+; SI-NEXT:    v_writelane_b32 v22, s5, 47
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v22, s4, 48
+; SI-NEXT:    v_writelane_b32 v22, s5, 49
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:  .LBB99_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[96:97], s[96:97], exec
+; SI-NEXT:    s_cselect_b32 s96, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s96, 1
+; SI-NEXT:    s_mov_b32 s96, s50
+; SI-NEXT:    s_mov_b32 s50, s52
+; SI-NEXT:    s_mov_b32 s52, s60
+; SI-NEXT:    s_mov_b32 s60, s98
+; SI-NEXT:    s_mov_b32 s97, s94
+; SI-NEXT:    s_mov_b32 s94, s67
+; SI-NEXT:    s_mov_b32 s67, s70
+; SI-NEXT:    s_mov_b32 s70, s31
+; SI-NEXT:    s_mov_b32 s31, s87
+; SI-NEXT:    s_mov_b32 s87, s92
+; SI-NEXT:    s_mov_b32 s92, s48
+; SI-NEXT:    s_mov_b32 s48, s74
+; SI-NEXT:    s_mov_b32 s74, s78
+; SI-NEXT:    s_mov_b32 s78, s90
+; SI-NEXT:    v_readlane_b32 s90, v22, 50
+; SI-NEXT:    v_readlane_b32 s98, v22, 51
+; SI-NEXT:    s_cbranch_scc1 .LBB99_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s49, s49, 3
+; SI-NEXT:    v_readlane_b32 s5, v21, 25
+; SI-NEXT:    s_and_b32 s4, s49, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
+; SI-NEXT:    s_add_i32 s39, s39, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s5, s49, 0xffff
-; SI-NEXT:    s_lshl_b32 s6, s58, 16
-; SI-NEXT:    s_add_i32 s48, s48, 3
-; SI-NEXT:    s_or_b32 s5, s6, s5
-; SI-NEXT:    s_and_b32 s6, s48, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s39, 16
+; SI-NEXT:    s_and_b32 s5, s39, 0xffff
+; SI-NEXT:    s_lshl_b32 s6, s59, 16
 ; SI-NEXT:    s_add_i32 s38, s38, 3
+; SI-NEXT:    v_readlane_b32 s7, v21, 24
+; SI-NEXT:    s_or_b32 s5, s6, s5
+; SI-NEXT:    s_and_b32 s6, s38, 0xffff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_add_i32 s36, s36, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_and_b32 s7, s38, 0xffff
-; SI-NEXT:    s_lshl_b32 s8, s59, 16
-; SI-NEXT:    s_add_i32 s95, s95, 3
+; SI-NEXT:    s_and_b32 s7, s36, 0xffff
+; SI-NEXT:    s_lshl_b32 s8, s51, 16
+; SI-NEXT:    s_add_i32 s93, s93, 3
+; SI-NEXT:    v_readlane_b32 s9, v21, 23
 ; SI-NEXT:    s_or_b32 s7, s8, s7
-; SI-NEXT:    s_and_b32 s8, s95, 0xffff
-; SI-NEXT:    s_lshl_b32 s9, s94, 16
-; SI-NEXT:    s_add_i32 s37, s37, 3
+; SI-NEXT:    s_and_b32 s8, s93, 0xffff
+; SI-NEXT:    s_lshl_b32 s9, s9, 16
+; SI-NEXT:    s_add_i32 s35, s35, 3
 ; SI-NEXT:    s_or_b32 s8, s9, s8
-; SI-NEXT:    s_and_b32 s9, s37, 0xffff
-; SI-NEXT:    s_lshl_b32 s10, s60, 16
-; SI-NEXT:    s_add_i32 s36, s36, 3
+; SI-NEXT:    s_and_b32 s9, s35, 0xffff
+; SI-NEXT:    s_lshl_b32 s10, s61, 16
+; SI-NEXT:    s_add_i32 s34, s34, 3
+; SI-NEXT:    v_readlane_b32 s11, v21, 22
 ; SI-NEXT:    s_or_b32 s9, s10, s9
-; SI-NEXT:    s_and_b32 s10, s36, 0xffff
-; SI-NEXT:    s_lshl_b32 s11, s97, 16
-; SI-NEXT:    s_add_i32 s96, s96, 3
+; SI-NEXT:    s_and_b32 s10, s34, 0xffff
+; SI-NEXT:    s_lshl_b32 s11, s11, 16
+; SI-NEXT:    s_add_i32 s86, s86, 3
 ; SI-NEXT:    s_or_b32 s10, s11, s10
-; SI-NEXT:    s_and_b32 s11, s96, 0xffff
-; SI-NEXT:    s_lshl_b32 s12, s61, 16
-; SI-NEXT:    s_add_i32 s87, s87, 3
-; SI-NEXT:    s_or_b32 s11, s12, s11
-; SI-NEXT:    s_and_b32 s12, s87, 0xffff
-; SI-NEXT:    s_lshl_b32 s13, s86, 16
+; SI-NEXT:    s_and_b32 s11, s86, 0xffff
+; SI-NEXT:    s_lshl_b32 s12, s53, 16
 ; SI-NEXT:    s_add_i32 s85, s85, 3
+; SI-NEXT:    v_readlane_b32 s13, v21, 21
+; SI-NEXT:    s_or_b32 s11, s12, s11
+; SI-NEXT:    s_and_b32 s12, s85, 0xffff
+; SI-NEXT:    s_lshl_b32 s13, s13, 16
+; SI-NEXT:    s_add_i32 s81, s81, 3
 ; SI-NEXT:    s_or_b32 s12, s13, s12
-; SI-NEXT:    s_and_b32 s13, s85, 0xffff
-; SI-NEXT:    s_lshl_b32 s14, s62, 16
-; SI-NEXT:    s_add_i32 s84, s84, 3
+; SI-NEXT:    s_and_b32 s13, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s14, s97, 16
+; SI-NEXT:    s_add_i32 s80, s80, 3
+; SI-NEXT:    v_readlane_b32 s15, v21, 20
 ; SI-NEXT:    s_or_b32 s13, s14, s13
-; SI-NEXT:    s_and_b32 s14, s84, 0xffff
-; SI-NEXT:    s_lshl_b32 s15, s35, 16
-; SI-NEXT:    s_add_i32 s34, s34, 3
+; SI-NEXT:    s_and_b32 s14, s80, 0xffff
+; SI-NEXT:    s_lshl_b32 s15, s15, 16
+; SI-NEXT:    s_add_i32 s30, s30, 3
+; SI-NEXT:    v_readlane_b32 s40, v21, 0
 ; SI-NEXT:    s_or_b32 s14, s15, s14
-; SI-NEXT:    s_and_b32 s15, s34, 0xffff
-; SI-NEXT:    s_lshl_b32 s40, s63, 16
-; SI-NEXT:    s_add_i32 s81, s81, 3
-; SI-NEXT:    s_or_b32 s15, s40, s15
-; SI-NEXT:    s_and_b32 s40, s81, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s80, 16
+; SI-NEXT:    s_and_b32 s15, s30, 0xffff
+; SI-NEXT:    s_lshl_b32 s40, s40, 16
 ; SI-NEXT:    s_add_i32 s71, s71, 3
+; SI-NEXT:    v_readlane_b32 s41, v21, 19
+; SI-NEXT:    s_or_b32 s15, s40, s15
+; SI-NEXT:    s_and_b32 s40, s71, 0xffff
+; SI-NEXT:    s_lshl_b32 s41, s41, 16
+; SI-NEXT:    s_add_i32 s69, s69, 3
+; SI-NEXT:    v_readlane_b32 s42, v21, 1
 ; SI-NEXT:    s_or_b32 s40, s41, s40
-; SI-NEXT:    s_and_b32 s41, s71, 0xffff
-; SI-NEXT:    s_lshl_b32 s42, s72, 16
-; SI-NEXT:    s_add_i32 s70, s70, 3
-; SI-NEXT:    s_or_b32 s41, s42, s41
-; SI-NEXT:    s_and_b32 s42, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s69, 16
+; SI-NEXT:    s_and_b32 s41, s69, 0xffff
+; SI-NEXT:    s_lshl_b32 s42, s42, 16
 ; SI-NEXT:    s_add_i32 s68, s68, 3
+; SI-NEXT:    v_readlane_b32 s43, v21, 18
+; SI-NEXT:    s_or_b32 s41, s42, s41
+; SI-NEXT:    s_and_b32 s42, s68, 0xffff
+; SI-NEXT:    s_lshl_b32 s43, s43, 16
+; SI-NEXT:    s_add_i32 s66, s66, 3
+; SI-NEXT:    v_readlane_b32 s44, v21, 2
 ; SI-NEXT:    s_or_b32 s42, s43, s42
-; SI-NEXT:    s_and_b32 s43, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s73, 16
-; SI-NEXT:    s_add_i32 s31, s31, 3
+; SI-NEXT:    s_and_b32 s43, s66, 0xffff
+; SI-NEXT:    s_lshl_b32 s44, s44, 16
+; SI-NEXT:    s_add_i32 s95, s95, 3
+; SI-NEXT:    v_readlane_b32 s45, v21, 17
 ; SI-NEXT:    s_or_b32 s43, s44, s43
-; SI-NEXT:    s_and_b32 s44, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s45, s30, 16
-; SI-NEXT:    s_add_i32 s67, s67, 3
+; SI-NEXT:    s_and_b32 s44, s95, 0xffff
+; SI-NEXT:    s_lshl_b32 s45, s45, 16
+; SI-NEXT:    s_add_i32 s55, s55, 3
+; SI-NEXT:    v_readlane_b32 s46, v21, 3
 ; SI-NEXT:    s_or_b32 s44, s45, s44
-; SI-NEXT:    s_and_b32 s45, s67, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s74, 16
-; SI-NEXT:    s_add_i32 s28, s28, 3
+; SI-NEXT:    s_and_b32 s45, s55, 0xffff
+; SI-NEXT:    s_lshl_b32 s46, s46, 16
 ; SI-NEXT:    s_or_b32 s45, s46, s45
+; SI-NEXT:    s_add_i32 s28, s28, 3
+; SI-NEXT:    v_readlane_b32 s46, v21, 16
 ; SI-NEXT:    s_and_b32 s28, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s66, 16
+; SI-NEXT:    s_lshl_b32 s46, s46, 16
 ; SI-NEXT:    s_or_b32 s28, s46, s28
 ; SI-NEXT:    s_add_i32 s29, s29, 3
 ; SI-NEXT:    s_add_i32 s46, s28, 0x30000
 ; SI-NEXT:    s_and_b32 s28, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s29, s75, 16
+; SI-NEXT:    v_readlane_b32 s29, v21, 4
+; SI-NEXT:    s_lshl_b32 s29, s29, 16
 ; SI-NEXT:    s_or_b32 s28, s29, s28
-; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s47, s28, 0x30000
+; SI-NEXT:    s_add_i32 s26, s26, 3
+; SI-NEXT:    v_readlane_b32 s28, v21, 15
 ; SI-NEXT:    s_and_b32 s26, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s28, s55, 16
+; SI-NEXT:    s_lshl_b32 s28, s28, 16
 ; SI-NEXT:    s_or_b32 s26, s28, s26
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s76, s26, 0x30000
 ; SI-NEXT:    s_and_b32 s26, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s27, s78, 16
+; SI-NEXT:    v_readlane_b32 s27, v21, 5
+; SI-NEXT:    s_lshl_b32 s27, s27, 16
 ; SI-NEXT:    s_or_b32 s26, s27, s26
-; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s77, s26, 0x30000
+; SI-NEXT:    s_add_i32 s24, s24, 3
+; SI-NEXT:    v_readlane_b32 s26, v21, 14
 ; SI-NEXT:    s_and_b32 s24, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s26, s54, 16
+; SI-NEXT:    s_lshl_b32 s26, s26, 16
 ; SI-NEXT:    s_or_b32 s24, s26, s24
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s56, s24, 0x30000
 ; SI-NEXT:    s_and_b32 s24, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s79, 16
+; SI-NEXT:    v_readlane_b32 s25, v21, 6
+; SI-NEXT:    s_lshl_b32 s25, s25, 16
 ; SI-NEXT:    s_or_b32 s24, s25, s24
 ; SI-NEXT:    s_add_i32 s57, s24, 0x30000
 ; SI-NEXT:    s_add_i32 s22, s22, 3
-; SI-NEXT:    v_readlane_b32 s24, v21, 2
+; SI-NEXT:    v_readlane_b32 s24, v21, 13
 ; SI-NEXT:    s_and_b32 s22, s22, 0xffff
 ; SI-NEXT:    s_lshl_b32 s24, s24, 16
 ; SI-NEXT:    s_or_b32 s22, s24, s22
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s88, s22, 0x30000
 ; SI-NEXT:    s_and_b32 s22, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s23, s90, 16
+; SI-NEXT:    v_readlane_b32 s23, v21, 7
+; SI-NEXT:    s_lshl_b32 s23, s23, 16
 ; SI-NEXT:    s_or_b32 s22, s23, s22
-; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s89, s22, 0x30000
+; SI-NEXT:    s_add_i32 s20, s20, 3
+; SI-NEXT:    v_readlane_b32 s22, v21, 12
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s22, s53, 16
+; SI-NEXT:    s_lshl_b32 s22, s22, 16
 ; SI-NEXT:    s_or_b32 s20, s22, s20
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s64, s20, 0x30000
 ; SI-NEXT:    s_and_b32 s20, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s21, s91, 16
+; SI-NEXT:    v_readlane_b32 s21, v21, 8
+; SI-NEXT:    s_lshl_b32 s21, s21, 16
 ; SI-NEXT:    s_or_b32 s20, s21, s20
 ; SI-NEXT:    s_add_i32 s65, s20, 0x30000
 ; SI-NEXT:    s_add_i32 s18, s18, 3
-; SI-NEXT:    v_readlane_b32 s20, v21, 1
+; SI-NEXT:    v_readlane_b32 s20, v21, 11
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_lshl_b32 s20, s20, 16
 ; SI-NEXT:    s_or_b32 s18, s20, s18
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s82, s18, 0x30000
 ; SI-NEXT:    s_and_b32 s18, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s19, s92, 16
+; SI-NEXT:    v_readlane_b32 s19, v21, 9
+; SI-NEXT:    s_lshl_b32 s19, s19, 16
 ; SI-NEXT:    s_or_b32 s18, s19, s18
 ; SI-NEXT:    s_add_i32 s83, s18, 0x30000
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s18, v21, 0
+; SI-NEXT:    v_readlane_b32 s18, v21, 10
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_or_b32 s16, s18, s16
 ; SI-NEXT:    s_add_i32 s17, s17, 3
-; SI-NEXT:    s_add_i32 s98, s16, 0x30000
+; SI-NEXT:    s_add_i32 vcc_lo, s16, 0x30000
 ; SI-NEXT:    s_and_b32 s16, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s93, 16
+; SI-NEXT:    s_lshl_b32 s17, s91, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    s_add_i32 s99, s16, 0x30000
-; SI-NEXT:    s_lshr_b64 s[16:17], s[98:99], 24
-; SI-NEXT:    v_writelane_b32 v21, s16, 7
-; SI-NEXT:    v_writelane_b32 v21, s17, 8
-; SI-NEXT:    s_lshr_b64 s[16:17], s[98:99], 16
-; SI-NEXT:    v_writelane_b32 v21, s16, 5
-; SI-NEXT:    v_writelane_b32 v21, s17, 6
-; SI-NEXT:    s_lshr_b64 s[16:17], s[98:99], 8
-; SI-NEXT:    v_writelane_b32 v21, s16, 3
-; SI-NEXT:    v_writelane_b32 v21, s17, 4
+; SI-NEXT:    s_add_i32 vcc_hi, s16, 0x30000
+; SI-NEXT:    s_lshr_b64 s[16:17], vcc, 24
+; SI-NEXT:    v_writelane_b32 v21, s16, 30
+; SI-NEXT:    v_writelane_b32 v21, s17, 31
+; SI-NEXT:    s_lshr_b64 s[16:17], vcc, 16
+; SI-NEXT:    v_writelane_b32 v21, s16, 28
+; SI-NEXT:    v_writelane_b32 v21, s17, 29
+; SI-NEXT:    s_lshr_b64 s[16:17], vcc, 8
+; SI-NEXT:    v_writelane_b32 v21, s16, 26
+; SI-NEXT:    v_writelane_b32 v21, s17, 27
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[82:83], 24
-; SI-NEXT:    v_writelane_b32 v21, s16, 13
-; SI-NEXT:    v_writelane_b32 v21, s17, 14
+; SI-NEXT:    v_writelane_b32 v21, s16, 36
+; SI-NEXT:    v_writelane_b32 v21, s17, 37
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[82:83], 16
-; SI-NEXT:    v_writelane_b32 v21, s16, 11
-; SI-NEXT:    v_writelane_b32 v21, s17, 12
+; SI-NEXT:    v_writelane_b32 v21, s16, 34
+; SI-NEXT:    v_writelane_b32 v21, s17, 35
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[82:83], 8
-; SI-NEXT:    v_writelane_b32 v21, s16, 9
-; SI-NEXT:    v_writelane_b32 v21, s17, 10
+; SI-NEXT:    v_writelane_b32 v21, s16, 32
+; SI-NEXT:    v_writelane_b32 v21, s17, 33
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[64:65], 24
-; SI-NEXT:    v_writelane_b32 v21, s16, 19
-; SI-NEXT:    v_writelane_b32 v21, s17, 20
+; SI-NEXT:    v_writelane_b32 v21, s16, 42
+; SI-NEXT:    v_writelane_b32 v21, s17, 43
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[64:65], 16
-; SI-NEXT:    v_writelane_b32 v21, s16, 17
-; SI-NEXT:    v_writelane_b32 v21, s17, 18
+; SI-NEXT:    v_writelane_b32 v21, s16, 40
+; SI-NEXT:    v_writelane_b32 v21, s17, 41
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[64:65], 8
-; SI-NEXT:    v_writelane_b32 v21, s16, 15
-; SI-NEXT:    v_writelane_b32 v21, s17, 16
+; SI-NEXT:    v_writelane_b32 v21, s16, 38
+; SI-NEXT:    v_writelane_b32 v21, s17, 39
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[88:89], 24
-; SI-NEXT:    v_writelane_b32 v21, s16, 25
-; SI-NEXT:    v_writelane_b32 v21, s17, 26
+; SI-NEXT:    v_writelane_b32 v21, s16, 48
+; SI-NEXT:    v_writelane_b32 v21, s17, 49
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[88:89], 16
-; SI-NEXT:    v_writelane_b32 v21, s16, 23
-; SI-NEXT:    v_writelane_b32 v21, s17, 24
+; SI-NEXT:    v_writelane_b32 v21, s16, 46
+; SI-NEXT:    v_writelane_b32 v21, s17, 47
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[88:89], 8
-; SI-NEXT:    v_writelane_b32 v21, s16, 21
-; SI-NEXT:    v_writelane_b32 v21, s17, 22
+; SI-NEXT:    v_writelane_b32 v21, s16, 44
+; SI-NEXT:    v_writelane_b32 v21, s17, 45
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[56:57], 24
-; SI-NEXT:    v_writelane_b32 v21, s16, 31
-; SI-NEXT:    v_writelane_b32 v21, s17, 32
+; SI-NEXT:    v_writelane_b32 v21, s16, 54
+; SI-NEXT:    v_writelane_b32 v21, s17, 55
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[56:57], 16
-; SI-NEXT:    v_writelane_b32 v21, s16, 29
-; SI-NEXT:    v_writelane_b32 v21, s17, 30
+; SI-NEXT:    v_writelane_b32 v21, s16, 52
+; SI-NEXT:    v_writelane_b32 v21, s17, 53
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[56:57], 8
-; SI-NEXT:    v_writelane_b32 v21, s16, 27
-; SI-NEXT:    v_writelane_b32 v21, s17, 28
+; SI-NEXT:    v_writelane_b32 v21, s16, 50
+; SI-NEXT:    v_writelane_b32 v21, s17, 51
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[76:77], 24
-; SI-NEXT:    v_writelane_b32 v21, s16, 37
-; SI-NEXT:    v_writelane_b32 v21, s17, 38
+; SI-NEXT:    v_writelane_b32 v21, s16, 60
+; SI-NEXT:    v_writelane_b32 v21, s17, 61
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[76:77], 16
-; SI-NEXT:    v_writelane_b32 v21, s16, 35
-; SI-NEXT:    v_writelane_b32 v21, s17, 36
+; SI-NEXT:    v_writelane_b32 v21, s16, 58
+; SI-NEXT:    v_writelane_b32 v21, s17, 59
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[76:77], 8
-; SI-NEXT:    v_writelane_b32 v21, s16, 33
-; SI-NEXT:    v_writelane_b32 v21, s17, 34
+; SI-NEXT:    v_writelane_b32 v21, s16, 56
+; SI-NEXT:    v_writelane_b32 v21, s17, 57
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[46:47], 24
-; SI-NEXT:    v_writelane_b32 v21, s16, 43
-; SI-NEXT:    v_writelane_b32 v21, s17, 44
+; SI-NEXT:    v_writelane_b32 v22, s16, 2
+; SI-NEXT:    v_writelane_b32 v22, s17, 3
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[46:47], 16
-; SI-NEXT:    v_writelane_b32 v21, s16, 41
-; SI-NEXT:    v_writelane_b32 v21, s17, 42
+; SI-NEXT:    v_writelane_b32 v22, s16, 0
+; SI-NEXT:    v_writelane_b32 v22, s17, 1
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[46:47], 8
 ; SI-NEXT:    s_add_i32 s44, s44, 0x30000
 ; SI-NEXT:    s_add_i32 s45, s45, 0x30000
-; SI-NEXT:    v_writelane_b32 v21, s16, 39
-; SI-NEXT:    v_writelane_b32 v21, s17, 40
+; SI-NEXT:    v_writelane_b32 v21, s16, 62
+; SI-NEXT:    v_writelane_b32 v21, s17, 63
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[44:45], 24
-; SI-NEXT:    v_writelane_b32 v21, s16, 49
-; SI-NEXT:    v_writelane_b32 v21, s17, 50
+; SI-NEXT:    v_writelane_b32 v22, s16, 8
+; SI-NEXT:    v_writelane_b32 v22, s17, 9
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[44:45], 16
-; SI-NEXT:    v_writelane_b32 v21, s16, 47
-; SI-NEXT:    v_writelane_b32 v21, s17, 48
+; SI-NEXT:    v_writelane_b32 v22, s16, 6
+; SI-NEXT:    v_writelane_b32 v22, s17, 7
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[44:45], 8
 ; SI-NEXT:    s_add_i32 s42, s42, 0x30000
 ; SI-NEXT:    s_add_i32 s43, s43, 0x30000
-; SI-NEXT:    v_writelane_b32 v21, s16, 45
-; SI-NEXT:    v_writelane_b32 v21, s17, 46
+; SI-NEXT:    v_writelane_b32 v22, s16, 4
+; SI-NEXT:    v_writelane_b32 v22, s17, 5
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[42:43], 24
-; SI-NEXT:    v_writelane_b32 v21, s16, 55
-; SI-NEXT:    v_writelane_b32 v21, s17, 56
+; SI-NEXT:    v_writelane_b32 v22, s16, 14
+; SI-NEXT:    v_writelane_b32 v22, s17, 15
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[42:43], 16
-; SI-NEXT:    v_writelane_b32 v21, s16, 53
-; SI-NEXT:    v_writelane_b32 v21, s17, 54
+; SI-NEXT:    v_writelane_b32 v22, s16, 12
+; SI-NEXT:    v_writelane_b32 v22, s17, 13
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[42:43], 8
 ; SI-NEXT:    s_add_i32 s40, s40, 0x30000
 ; SI-NEXT:    s_add_i32 s41, s41, 0x30000
-; SI-NEXT:    v_writelane_b32 v21, s16, 51
-; SI-NEXT:    v_writelane_b32 v21, s17, 52
+; SI-NEXT:    v_writelane_b32 v22, s16, 10
+; SI-NEXT:    v_writelane_b32 v22, s17, 11
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[40:41], 24
-; SI-NEXT:    v_writelane_b32 v21, s16, 61
-; SI-NEXT:    v_writelane_b32 v21, s17, 62
+; SI-NEXT:    v_writelane_b32 v22, s16, 20
+; SI-NEXT:    v_writelane_b32 v22, s17, 21
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[40:41], 16
-; SI-NEXT:    v_writelane_b32 v21, s16, 59
-; SI-NEXT:    v_writelane_b32 v21, s17, 60
+; SI-NEXT:    v_writelane_b32 v22, s16, 18
+; SI-NEXT:    v_writelane_b32 v22, s17, 19
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[40:41], 8
 ; SI-NEXT:    s_add_i32 s14, s14, 0x30000
 ; SI-NEXT:    s_add_i32 s15, s15, 0x30000
-; SI-NEXT:    v_writelane_b32 v21, s16, 57
-; SI-NEXT:    v_writelane_b32 v21, s17, 58
+; SI-NEXT:    v_writelane_b32 v22, s16, 16
+; SI-NEXT:    v_writelane_b32 v22, s17, 17
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[14:15], 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 3
-; SI-NEXT:    v_writelane_b32 v22, s17, 4
+; SI-NEXT:    v_writelane_b32 v22, s16, 26
+; SI-NEXT:    v_writelane_b32 v22, s17, 27
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[14:15], 16
-; SI-NEXT:    v_writelane_b32 v22, s16, 1
-; SI-NEXT:    v_writelane_b32 v22, s17, 2
+; SI-NEXT:    v_writelane_b32 v22, s16, 24
+; SI-NEXT:    v_writelane_b32 v22, s17, 25
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[14:15], 8
 ; SI-NEXT:    s_add_i32 s12, s12, 0x30000
 ; SI-NEXT:    s_add_i32 s13, s13, 0x30000
-; SI-NEXT:    v_writelane_b32 v21, s16, 63
-; SI-NEXT:    v_writelane_b32 v22, s17, 0
+; SI-NEXT:    v_writelane_b32 v22, s16, 22
+; SI-NEXT:    v_writelane_b32 v22, s17, 23
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[12:13], 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 9
-; SI-NEXT:    v_writelane_b32 v22, s17, 10
+; SI-NEXT:    v_writelane_b32 v22, s16, 32
+; SI-NEXT:    v_writelane_b32 v22, s17, 33
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[12:13], 16
-; SI-NEXT:    v_writelane_b32 v22, s16, 7
-; SI-NEXT:    v_writelane_b32 v22, s17, 8
+; SI-NEXT:    v_writelane_b32 v22, s16, 30
+; SI-NEXT:    v_writelane_b32 v22, s17, 31
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[12:13], 8
 ; SI-NEXT:    s_add_i32 s10, s10, 0x30000
 ; SI-NEXT:    s_add_i32 s11, s11, 0x30000
-; SI-NEXT:    v_writelane_b32 v22, s16, 5
-; SI-NEXT:    v_writelane_b32 v22, s17, 6
+; SI-NEXT:    v_writelane_b32 v22, s16, 28
+; SI-NEXT:    v_writelane_b32 v22, s17, 29
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[10:11], 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 15
-; SI-NEXT:    v_writelane_b32 v22, s17, 16
+; SI-NEXT:    v_writelane_b32 v22, s16, 38
+; SI-NEXT:    v_writelane_b32 v22, s17, 39
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[10:11], 16
-; SI-NEXT:    v_writelane_b32 v22, s16, 13
-; SI-NEXT:    v_writelane_b32 v22, s17, 14
+; SI-NEXT:    v_writelane_b32 v22, s16, 36
+; SI-NEXT:    v_writelane_b32 v22, s17, 37
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[10:11], 8
 ; SI-NEXT:    s_add_i32 s8, s8, 0x30000
 ; SI-NEXT:    s_add_i32 s9, s9, 0x30000
-; SI-NEXT:    v_writelane_b32 v22, s16, 11
-; SI-NEXT:    v_writelane_b32 v22, s17, 12
+; SI-NEXT:    v_writelane_b32 v22, s16, 34
+; SI-NEXT:    v_writelane_b32 v22, s17, 35
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[8:9], 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 21
-; SI-NEXT:    v_writelane_b32 v22, s17, 22
+; SI-NEXT:    v_writelane_b32 v22, s16, 44
+; SI-NEXT:    v_writelane_b32 v22, s17, 45
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[8:9], 16
-; SI-NEXT:    v_writelane_b32 v22, s16, 19
-; SI-NEXT:    v_writelane_b32 v22, s17, 20
+; SI-NEXT:    v_writelane_b32 v22, s16, 42
+; SI-NEXT:    v_writelane_b32 v22, s17, 43
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[8:9], 8
 ; SI-NEXT:    s_add_i32 s6, s6, 0x30000
 ; SI-NEXT:    s_add_i32 s7, s7, 0x30000
-; SI-NEXT:    v_writelane_b32 v22, s16, 17
-; SI-NEXT:    v_writelane_b32 v22, s17, 18
-; SI-NEXT:    s_lshr_b64 s[16:17], s[6:7], 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 27
-; SI-NEXT:    v_writelane_b32 v22, s17, 28
+; SI-NEXT:    v_writelane_b32 v22, s16, 40
+; SI-NEXT:    v_writelane_b32 v22, s17, 41
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[6:7], 16
-; SI-NEXT:    v_writelane_b32 v22, s16, 25
-; SI-NEXT:    v_writelane_b32 v22, s17, 26
+; SI-NEXT:    v_writelane_b32 v22, s16, 48
+; SI-NEXT:    v_writelane_b32 v22, s17, 49
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[6:7], 8
-; SI-NEXT:    s_add_i32 s4, s4, 0x30000
-; SI-NEXT:    s_add_i32 s5, s5, 0x30000
-; SI-NEXT:    v_writelane_b32 v22, s16, 23
-; SI-NEXT:    v_writelane_b32 v22, s17, 24
-; SI-NEXT:    s_lshr_b64 s[16:17], s[4:5], 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 33
-; SI-NEXT:    v_writelane_b32 v22, s17, 34
-; SI-NEXT:    s_lshr_b64 s[16:17], s[4:5], 16
-; SI-NEXT:    v_writelane_b32 v22, s16, 31
-; SI-NEXT:    v_writelane_b32 v22, s17, 32
-; SI-NEXT:    s_lshr_b64 s[16:17], s[4:5], 8
-; SI-NEXT:    v_writelane_b32 v22, s16, 29
-; SI-NEXT:    v_writelane_b32 v22, s17, 30
-; SI-NEXT:    s_lshr_b32 s16, s99, 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 35
-; SI-NEXT:    s_lshr_b32 s16, s99, 8
-; SI-NEXT:    v_writelane_b32 v22, s16, 36
-; SI-NEXT:    s_lshr_b32 s16, s83, 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 37
-; SI-NEXT:    s_lshr_b32 s16, s83, 8
-; SI-NEXT:    v_writelane_b32 v22, s16, 38
-; SI-NEXT:    s_lshr_b32 s16, s65, 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 39
-; SI-NEXT:    s_lshr_b32 s16, s65, 8
-; SI-NEXT:    v_writelane_b32 v22, s16, 40
-; SI-NEXT:    s_lshr_b32 s16, s89, 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 41
-; SI-NEXT:    s_lshr_b32 s16, s89, 8
-; SI-NEXT:    v_writelane_b32 v22, s16, 42
-; SI-NEXT:    s_lshr_b32 s16, s57, 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 43
-; SI-NEXT:    s_lshr_b32 s16, s57, 8
-; SI-NEXT:    v_writelane_b32 v22, s16, 44
-; SI-NEXT:    s_lshr_b32 s16, s77, 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 45
-; SI-NEXT:    s_lshr_b32 s16, s77, 8
 ; SI-NEXT:    v_writelane_b32 v22, s16, 46
-; SI-NEXT:    s_lshr_b32 s16, s47, 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 47
-; SI-NEXT:    s_lshr_b32 s16, s47, 8
-; SI-NEXT:    v_writelane_b32 v22, s16, 48
-; SI-NEXT:    s_lshr_b32 s16, s45, 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 49
-; SI-NEXT:    s_lshr_b32 s16, s45, 8
-; SI-NEXT:    v_writelane_b32 v22, s16, 50
-; SI-NEXT:    s_lshr_b32 s16, s43, 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 51
-; SI-NEXT:    s_lshr_b32 s16, s43, 8
+; SI-NEXT:    v_writelane_b32 v22, s17, 47
+; SI-NEXT:    s_lshr_b32 s16, vcc_hi, 24
 ; SI-NEXT:    v_writelane_b32 v22, s16, 52
-; SI-NEXT:    s_lshr_b32 s16, s41, 24
+; SI-NEXT:    s_lshr_b32 s16, vcc_hi, 8
 ; SI-NEXT:    v_writelane_b32 v22, s16, 53
-; SI-NEXT:    s_lshr_b32 s16, s41, 8
+; SI-NEXT:    s_lshr_b32 s16, s83, 24
 ; SI-NEXT:    v_writelane_b32 v22, s16, 54
-; SI-NEXT:    s_lshr_b32 s16, s15, 24
+; SI-NEXT:    s_lshr_b32 s16, s83, 16
+; SI-NEXT:    v_writelane_b32 v21, s16, 9
+; SI-NEXT:    s_lshr_b32 s16, s83, 8
 ; SI-NEXT:    v_writelane_b32 v22, s16, 55
-; SI-NEXT:    s_lshr_b32 s16, s15, 8
+; SI-NEXT:    s_lshr_b32 s16, s65, 24
 ; SI-NEXT:    v_writelane_b32 v22, s16, 56
-; SI-NEXT:    s_lshr_b32 s16, s13, 24
+; SI-NEXT:    s_lshr_b32 s16, s65, 16
+; SI-NEXT:    v_writelane_b32 v21, s16, 8
+; SI-NEXT:    s_lshr_b32 s16, s65, 8
 ; SI-NEXT:    v_writelane_b32 v22, s16, 57
-; SI-NEXT:    s_lshr_b32 s16, s13, 8
+; SI-NEXT:    s_lshr_b32 s16, s89, 24
 ; SI-NEXT:    v_writelane_b32 v22, s16, 58
-; SI-NEXT:    s_lshr_b32 s16, s11, 24
+; SI-NEXT:    s_lshr_b32 s16, s89, 16
+; SI-NEXT:    v_writelane_b32 v21, s16, 7
+; SI-NEXT:    s_lshr_b32 s16, s89, 8
 ; SI-NEXT:    v_writelane_b32 v22, s16, 59
-; SI-NEXT:    s_lshr_b32 s16, s11, 8
+; SI-NEXT:    s_lshr_b32 s16, s57, 24
 ; SI-NEXT:    v_writelane_b32 v22, s16, 60
-; SI-NEXT:    s_lshr_b32 s16, s9, 24
+; SI-NEXT:    s_lshr_b32 s16, s57, 16
+; SI-NEXT:    v_writelane_b32 v21, s16, 6
+; SI-NEXT:    s_lshr_b32 s16, s57, 8
 ; SI-NEXT:    v_writelane_b32 v22, s16, 61
-; SI-NEXT:    s_lshr_b32 s16, s9, 8
-; SI-NEXT:    v_writelane_b32 v22, s16, 62
-; SI-NEXT:    s_lshr_b32 s16, s7, 24
-; SI-NEXT:    v_writelane_b32 v22, s16, 63
-; SI-NEXT:    s_lshr_b32 s16, s7, 8
-; SI-NEXT:    s_lshr_b32 s93, s99, 16
-; SI-NEXT:    s_lshr_b32 s92, s83, 16
-; SI-NEXT:    s_lshr_b32 s91, s65, 16
-; SI-NEXT:    s_lshr_b32 s90, s89, 16
-; SI-NEXT:    s_lshr_b32 s79, s57, 16
-; SI-NEXT:    s_lshr_b32 s78, s77, 16
-; SI-NEXT:    s_lshr_b32 s75, s47, 16
-; SI-NEXT:    s_lshr_b32 s74, s45, 16
-; SI-NEXT:    s_lshr_b32 s73, s43, 16
-; SI-NEXT:    s_lshr_b32 s72, s41, 16
-; SI-NEXT:    s_lshr_b32 s63, s15, 16
-; SI-NEXT:    s_lshr_b32 s62, s13, 16
-; SI-NEXT:    s_lshr_b32 s61, s11, 16
-; SI-NEXT:    s_lshr_b32 s60, s9, 16
-; SI-NEXT:    s_lshr_b32 s59, s7, 16
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v23, s16, 0
-; SI-NEXT:    s_lshr_b32 s16, s5, 24
-; SI-NEXT:    s_lshr_b32 s58, s5, 16
-; SI-NEXT:    s_lshr_b32 s52, s5, 8
-; SI-NEXT:    v_writelane_b32 v23, s16, 1
-; SI-NEXT:  .LBB99_3: ; %end
-; SI-NEXT:    v_readlane_b32 s18, v21, 3
-; SI-NEXT:    v_readlane_b32 s19, v21, 4
+; SI-NEXT:    s_lshr_b32 s16, s77, 16
+; SI-NEXT:    v_writelane_b32 v21, s16, 5
+; SI-NEXT:    s_lshr_b32 s16, s47, 16
+; SI-NEXT:    v_writelane_b32 v21, s16, 4
+; SI-NEXT:    s_lshr_b32 s16, s45, 16
+; SI-NEXT:    s_add_i32 s4, s4, 0x30000
+; SI-NEXT:    s_add_i32 s5, s5, 0x30000
+; SI-NEXT:    v_writelane_b32 v21, s16, 3
+; SI-NEXT:    s_lshr_b32 s16, s43, 16
+; SI-NEXT:    s_lshr_b64 s[58:59], s[6:7], 24
+; SI-NEXT:    s_lshr_b64 s[96:97], s[4:5], 24
+; SI-NEXT:    s_lshr_b64 s[50:51], s[4:5], 16
+; SI-NEXT:    s_lshr_b64 s[52:53], s[4:5], 8
+; SI-NEXT:    v_writelane_b32 v21, s16, 2
+; SI-NEXT:    s_lshr_b32 s16, s41, 16
+; SI-NEXT:    s_lshr_b32 s91, vcc_hi, 16
+; SI-NEXT:    s_lshr_b32 s98, s77, 24
+; SI-NEXT:    s_lshr_b32 s90, s77, 8
+; SI-NEXT:    s_lshr_b32 s79, s47, 24
+; SI-NEXT:    s_lshr_b32 s78, s47, 8
+; SI-NEXT:    s_lshr_b32 s75, s45, 24
+; SI-NEXT:    s_lshr_b32 s74, s45, 8
+; SI-NEXT:    s_lshr_b32 s73, s43, 24
+; SI-NEXT:    s_lshr_b32 s48, s43, 8
+; SI-NEXT:    s_lshr_b32 s37, s41, 24
+; SI-NEXT:    v_writelane_b32 v21, s16, 1
+; SI-NEXT:    s_lshr_b32 s92, s41, 8
+; SI-NEXT:    s_lshr_b32 s72, s15, 24
+; SI-NEXT:    s_lshr_b32 s16, s15, 16
+; SI-NEXT:    s_lshr_b32 s87, s15, 8
+; SI-NEXT:    s_lshr_b32 s84, s13, 24
+; SI-NEXT:    s_lshr_b32 s97, s13, 16
+; SI-NEXT:    s_lshr_b32 s31, s13, 8
+; SI-NEXT:    s_lshr_b32 s63, s11, 24
+; SI-NEXT:    s_lshr_b32 s53, s11, 16
+; SI-NEXT:    s_lshr_b32 s70, s11, 8
+; SI-NEXT:    s_lshr_b32 s62, s9, 24
+; SI-NEXT:    s_lshr_b32 s61, s9, 16
+; SI-NEXT:    s_lshr_b32 s67, s9, 8
+; SI-NEXT:    s_lshr_b32 s54, s7, 24
+; SI-NEXT:    s_lshr_b32 s51, s7, 16
+; SI-NEXT:    s_lshr_b32 s94, s7, 8
+; SI-NEXT:    s_lshr_b32 s60, s5, 24
+; SI-NEXT:    s_lshr_b32 s59, s5, 16
+; SI-NEXT:    s_lshr_b32 s99, s5, 8
+; SI-NEXT:    v_writelane_b32 v21, s16, 0
+; SI-NEXT:  .LBB99_5: ; %end
+; SI-NEXT:    v_readlane_b32 s18, v21, 26
+; SI-NEXT:    v_readlane_b32 s19, v21, 27
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 5
-; SI-NEXT:    s_and_b32 s16, s98, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 6
+; SI-NEXT:    v_readlane_b32 s18, v21, 28
+; SI-NEXT:    s_and_b32 s16, vcc_lo, 0xff
+; SI-NEXT:    v_readlane_b32 s19, v21, 29
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 7
+; SI-NEXT:    v_readlane_b32 s18, v21, 30
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v22, 36
+; SI-NEXT:    v_readlane_b32 s17, v22, 53
 ; SI-NEXT:    v_mov_b32_e32 v1, s16
-; SI-NEXT:    s_and_b32 s16, s99, 0xff
+; SI-NEXT:    s_and_b32 s16, vcc_hi, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s93, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v22, 35
-; SI-NEXT:    v_readlane_b32 s19, v21, 8
+; SI-NEXT:    s_and_b32 s17, s91, 0xff
+; SI-NEXT:    v_readlane_b32 s18, v22, 52
+; SI-NEXT:    v_readlane_b32 s19, v21, 31
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v21, 9
+; SI-NEXT:    v_readlane_b32 s18, v21, 32
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v21, 10
+; SI-NEXT:    v_readlane_b32 s19, v21, 33
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 11
+; SI-NEXT:    v_readlane_b32 s18, v21, 34
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s82, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 12
+; SI-NEXT:    v_readlane_b32 s19, v21, 35
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 13
+; SI-NEXT:    v_readlane_b32 s18, v21, 36
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
@@ -203067,289 +204105,288 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 4, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v22, 38
+; SI-NEXT:    v_readlane_b32 s17, v22, 55
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s83, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s92, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v22, 37
-; SI-NEXT:    v_readlane_b32 s19, v21, 14
+; SI-NEXT:    v_readlane_b32 s17, v21, 9
+; SI-NEXT:    s_and_b32 s17, s17, 0xff
+; SI-NEXT:    v_readlane_b32 s18, v22, 54
+; SI-NEXT:    v_readlane_b32 s19, v21, 37
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v21, 15
+; SI-NEXT:    v_readlane_b32 s18, v21, 38
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v21, 16
+; SI-NEXT:    v_readlane_b32 s19, v21, 39
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 8, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 17
+; SI-NEXT:    v_readlane_b32 s18, v21, 40
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s64, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 18
+; SI-NEXT:    v_readlane_b32 s19, v21, 41
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 19
+; SI-NEXT:    v_readlane_b32 s18, v21, 42
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 12, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v22, 40
+; SI-NEXT:    v_readlane_b32 s17, v22, 57
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s65, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s91, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v22, 39
-; SI-NEXT:    v_readlane_b32 s19, v21, 20
+; SI-NEXT:    v_readlane_b32 s17, v21, 8
+; SI-NEXT:    s_and_b32 s17, s17, 0xff
+; SI-NEXT:    v_readlane_b32 s18, v22, 56
+; SI-NEXT:    v_readlane_b32 s19, v21, 43
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v21, 21
+; SI-NEXT:    v_readlane_b32 s18, v21, 44
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v21, 22
+; SI-NEXT:    v_readlane_b32 s19, v21, 45
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 16, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 23
+; SI-NEXT:    v_readlane_b32 s18, v21, 46
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s88, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 24
+; SI-NEXT:    v_readlane_b32 s19, v21, 47
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 25
+; SI-NEXT:    v_readlane_b32 s18, v21, 48
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 20, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v22, 42
+; SI-NEXT:    v_readlane_b32 s17, v22, 59
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s89, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s90, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v22, 41
-; SI-NEXT:    v_readlane_b32 s19, v21, 26
+; SI-NEXT:    v_readlane_b32 s17, v21, 7
+; SI-NEXT:    s_and_b32 s17, s17, 0xff
+; SI-NEXT:    v_readlane_b32 s18, v22, 58
+; SI-NEXT:    v_readlane_b32 s19, v21, 49
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v21, 27
+; SI-NEXT:    v_readlane_b32 s18, v21, 50
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v21, 28
+; SI-NEXT:    v_readlane_b32 s19, v21, 51
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 24, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 29
+; SI-NEXT:    v_readlane_b32 s18, v21, 52
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s56, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 30
+; SI-NEXT:    v_readlane_b32 s19, v21, 53
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 31
+; SI-NEXT:    v_readlane_b32 s18, v21, 54
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 28, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v22, 44
+; SI-NEXT:    v_readlane_b32 s17, v22, 61
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s57, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s79, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v22, 43
-; SI-NEXT:    v_readlane_b32 s19, v21, 32
+; SI-NEXT:    v_readlane_b32 s17, v21, 6
+; SI-NEXT:    s_and_b32 s17, s17, 0xff
+; SI-NEXT:    v_readlane_b32 s18, v22, 60
+; SI-NEXT:    v_readlane_b32 s19, v21, 55
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v21, 33
+; SI-NEXT:    v_readlane_b32 s18, v21, 56
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v21, 34
+; SI-NEXT:    v_readlane_b32 s19, v21, 57
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 32, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 35
+; SI-NEXT:    v_readlane_b32 s18, v21, 58
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s76, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 36
+; SI-NEXT:    v_readlane_b32 s19, v21, 59
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 37
+; SI-NEXT:    v_readlane_b32 s18, v21, 60
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 36, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v22, 46
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s77, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_lshl_b32 s17, s90, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s78, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v22, 45
-; SI-NEXT:    v_readlane_b32 s19, v21, 38
+; SI-NEXT:    v_readlane_b32 s17, v21, 5
+; SI-NEXT:    s_and_b32 s17, s17, 0xff
+; SI-NEXT:    v_readlane_b32 s19, v21, 61
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s18, 24
+; SI-NEXT:    s_lshl_b32 s18, s98, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v21, 39
+; SI-NEXT:    v_readlane_b32 s18, v21, 62
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v21, 40
+; SI-NEXT:    v_readlane_b32 s19, v21, 63
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 40, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 41
+; SI-NEXT:    v_readlane_b32 s18, v22, 0
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s46, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 42
+; SI-NEXT:    v_readlane_b32 s19, v22, 1
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 43
+; SI-NEXT:    v_readlane_b32 s18, v22, 2
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 44, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v22, 48
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s47, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_lshl_b32 s17, s78, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s75, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v22, 47
-; SI-NEXT:    v_readlane_b32 s19, v21, 44
+; SI-NEXT:    v_readlane_b32 s17, v21, 4
+; SI-NEXT:    s_and_b32 s17, s17, 0xff
+; SI-NEXT:    v_readlane_b32 s19, v22, 3
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s18, 24
+; SI-NEXT:    s_lshl_b32 s18, s79, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v21, 45
+; SI-NEXT:    v_readlane_b32 s18, v22, 4
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v21, 46
+; SI-NEXT:    v_readlane_b32 s19, v22, 5
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 48, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 47
+; SI-NEXT:    v_readlane_b32 s18, v22, 6
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s44, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 48
+; SI-NEXT:    v_readlane_b32 s19, v22, 7
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 49
+; SI-NEXT:    v_readlane_b32 s18, v22, 8
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 52, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v22, 50
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s45, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_lshl_b32 s17, s74, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s74, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v22, 49
-; SI-NEXT:    v_readlane_b32 s19, v21, 50
+; SI-NEXT:    v_readlane_b32 s17, v21, 3
+; SI-NEXT:    s_and_b32 s17, s17, 0xff
+; SI-NEXT:    v_readlane_b32 s19, v22, 9
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s18, 24
+; SI-NEXT:    s_lshl_b32 s18, s75, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v21, 51
+; SI-NEXT:    v_readlane_b32 s18, v22, 10
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v21, 52
+; SI-NEXT:    v_readlane_b32 s19, v22, 11
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 56, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 53
+; SI-NEXT:    v_readlane_b32 s18, v22, 12
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s42, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 54
+; SI-NEXT:    v_readlane_b32 s19, v22, 13
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 55
+; SI-NEXT:    v_readlane_b32 s18, v22, 14
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 60, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v22, 52
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s43, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_lshl_b32 s17, s48, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s73, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v22, 51
-; SI-NEXT:    v_readlane_b32 s19, v21, 56
+; SI-NEXT:    v_readlane_b32 s17, v21, 2
+; SI-NEXT:    s_and_b32 s17, s17, 0xff
+; SI-NEXT:    v_readlane_b32 s19, v22, 15
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s18, 24
+; SI-NEXT:    s_lshl_b32 s18, s73, 24
 ; SI-NEXT:    s_or_b32 s17, s18, s17
-; SI-NEXT:    v_readlane_b32 s18, v21, 57
+; SI-NEXT:    v_readlane_b32 s18, v22, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    v_readlane_b32 s19, v21, 58
+; SI-NEXT:    v_readlane_b32 s19, v22, 17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 64, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s18, 8
-; SI-NEXT:    v_readlane_b32 s18, v21, 59
+; SI-NEXT:    v_readlane_b32 s18, v22, 18
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s40, 0xff
-; SI-NEXT:    v_readlane_b32 s19, v21, 60
+; SI-NEXT:    v_readlane_b32 s19, v22, 19
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v21, 61
+; SI-NEXT:    v_readlane_b32 s18, v22, 20
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_lshl_b32 s18, s18, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x44, v0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s17, v22, 54
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s41, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_lshl_b32 s17, s92, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s72, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v22, 53
+; SI-NEXT:    v_readlane_b32 s17, v21, 1
+; SI-NEXT:    s_and_b32 s17, s17, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s18, 24
+; SI-NEXT:    s_lshl_b32 s18, s37, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x48, v0
@@ -203357,16 +204394,16 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
-; SI-NEXT:    v_readlane_b32 s16, v21, 63
+; SI-NEXT:    v_readlane_b32 s16, v22, 22
 ; SI-NEXT:    s_and_b32 s14, s14, 0xff
-; SI-NEXT:    v_readlane_b32 s17, v22, 0
+; SI-NEXT:    v_readlane_b32 s17, v22, 23
 ; SI-NEXT:    s_lshl_b32 s16, s16, 8
-; SI-NEXT:    v_readlane_b32 s19, v21, 62
+; SI-NEXT:    v_readlane_b32 s19, v22, 21
 ; SI-NEXT:    s_or_b32 s14, s14, s16
-; SI-NEXT:    v_readlane_b32 s16, v22, 1
-; SI-NEXT:    v_readlane_b32 s17, v22, 2
+; SI-NEXT:    v_readlane_b32 s16, v22, 24
+; SI-NEXT:    v_readlane_b32 s17, v22, 25
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v22, 3
+; SI-NEXT:    v_readlane_b32 s18, v22, 26
 ; SI-NEXT:    s_lshl_b32 s16, s16, 16
 ; SI-NEXT:    s_lshl_b32 s17, s18, 24
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
@@ -203377,13 +204414,12 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s14
 ; SI-NEXT:    s_and_b32 s14, s15, 0xff
-; SI-NEXT:    v_readlane_b32 s15, v22, 56
-; SI-NEXT:    s_lshl_b32 s15, s15, 8
+; SI-NEXT:    s_lshl_b32 s15, s87, 8
 ; SI-NEXT:    s_or_b32 s14, s14, s15
-; SI-NEXT:    s_and_b32 s15, s63, 0xff
-; SI-NEXT:    v_readlane_b32 s16, v22, 55
+; SI-NEXT:    v_readlane_b32 s15, v21, 0
+; SI-NEXT:    s_and_b32 s15, s15, 0xff
 ; SI-NEXT:    s_lshl_b32 s15, s15, 16
-; SI-NEXT:    s_lshl_b32 s16, s16, 24
+; SI-NEXT:    s_lshl_b32 s16, s72, 24
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_or_b32 s15, s16, s15
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x50, v0
@@ -203391,15 +204427,15 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s14
-; SI-NEXT:    v_readlane_b32 s14, v22, 5
+; SI-NEXT:    v_readlane_b32 s14, v22, 28
 ; SI-NEXT:    s_and_b32 s12, s12, 0xff
-; SI-NEXT:    v_readlane_b32 s15, v22, 6
+; SI-NEXT:    v_readlane_b32 s15, v22, 29
 ; SI-NEXT:    s_lshl_b32 s14, s14, 8
 ; SI-NEXT:    s_or_b32 s12, s12, s14
-; SI-NEXT:    v_readlane_b32 s14, v22, 7
-; SI-NEXT:    v_readlane_b32 s15, v22, 8
+; SI-NEXT:    v_readlane_b32 s14, v22, 30
+; SI-NEXT:    v_readlane_b32 s15, v22, 31
 ; SI-NEXT:    s_and_b32 s14, s14, 0xff
-; SI-NEXT:    v_readlane_b32 s16, v22, 9
+; SI-NEXT:    v_readlane_b32 s16, v22, 32
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_lshl_b32 s15, s16, 24
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
@@ -203410,13 +204446,11 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s12
 ; SI-NEXT:    s_and_b32 s12, s13, 0xff
-; SI-NEXT:    v_readlane_b32 s13, v22, 58
-; SI-NEXT:    s_lshl_b32 s13, s13, 8
+; SI-NEXT:    s_lshl_b32 s13, s31, 8
 ; SI-NEXT:    s_or_b32 s12, s12, s13
-; SI-NEXT:    s_and_b32 s13, s62, 0xff
-; SI-NEXT:    v_readlane_b32 s14, v22, 57
+; SI-NEXT:    s_and_b32 s13, s97, 0xff
 ; SI-NEXT:    s_lshl_b32 s13, s13, 16
-; SI-NEXT:    s_lshl_b32 s14, s14, 24
+; SI-NEXT:    s_lshl_b32 s14, s84, 24
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_or_b32 s13, s14, s13
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x58, v0
@@ -203424,15 +204458,15 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s12
-; SI-NEXT:    v_readlane_b32 s12, v22, 11
+; SI-NEXT:    v_readlane_b32 s12, v22, 34
 ; SI-NEXT:    s_and_b32 s10, s10, 0xff
-; SI-NEXT:    v_readlane_b32 s13, v22, 12
+; SI-NEXT:    v_readlane_b32 s13, v22, 35
 ; SI-NEXT:    s_lshl_b32 s12, s12, 8
 ; SI-NEXT:    s_or_b32 s10, s10, s12
-; SI-NEXT:    v_readlane_b32 s12, v22, 13
-; SI-NEXT:    v_readlane_b32 s13, v22, 14
+; SI-NEXT:    v_readlane_b32 s12, v22, 36
+; SI-NEXT:    v_readlane_b32 s13, v22, 37
 ; SI-NEXT:    s_and_b32 s12, s12, 0xff
-; SI-NEXT:    v_readlane_b32 s14, v22, 15
+; SI-NEXT:    v_readlane_b32 s14, v22, 38
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_lshl_b32 s13, s14, 24
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
@@ -203443,13 +204477,11 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s10
 ; SI-NEXT:    s_and_b32 s10, s11, 0xff
-; SI-NEXT:    v_readlane_b32 s11, v22, 60
-; SI-NEXT:    s_lshl_b32 s11, s11, 8
+; SI-NEXT:    s_lshl_b32 s11, s70, 8
 ; SI-NEXT:    s_or_b32 s10, s10, s11
-; SI-NEXT:    s_and_b32 s11, s61, 0xff
-; SI-NEXT:    v_readlane_b32 s12, v22, 59
+; SI-NEXT:    s_and_b32 s11, s53, 0xff
 ; SI-NEXT:    s_lshl_b32 s11, s11, 16
-; SI-NEXT:    s_lshl_b32 s12, s12, 24
+; SI-NEXT:    s_lshl_b32 s12, s63, 24
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_or_b32 s11, s12, s11
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x60, v0
@@ -203457,15 +204489,15 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s10
-; SI-NEXT:    v_readlane_b32 s10, v22, 17
+; SI-NEXT:    v_readlane_b32 s10, v22, 40
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s11, v22, 18
+; SI-NEXT:    v_readlane_b32 s11, v22, 41
 ; SI-NEXT:    s_lshl_b32 s10, s10, 8
 ; SI-NEXT:    s_or_b32 s8, s8, s10
-; SI-NEXT:    v_readlane_b32 s10, v22, 19
-; SI-NEXT:    v_readlane_b32 s11, v22, 20
+; SI-NEXT:    v_readlane_b32 s10, v22, 42
+; SI-NEXT:    v_readlane_b32 s11, v22, 43
 ; SI-NEXT:    s_and_b32 s10, s10, 0xff
-; SI-NEXT:    v_readlane_b32 s12, v22, 21
+; SI-NEXT:    v_readlane_b32 s12, v22, 44
 ; SI-NEXT:    s_lshl_b32 s10, s10, 16
 ; SI-NEXT:    s_lshl_b32 s11, s12, 24
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
@@ -203476,13 +204508,11 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s8
 ; SI-NEXT:    s_and_b32 s8, s9, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v22, 62
-; SI-NEXT:    s_lshl_b32 s9, s9, 8
+; SI-NEXT:    s_lshl_b32 s9, s67, 8
 ; SI-NEXT:    s_or_b32 s8, s8, s9
-; SI-NEXT:    s_and_b32 s9, s60, 0xff
-; SI-NEXT:    v_readlane_b32 s10, v22, 61
+; SI-NEXT:    s_and_b32 s9, s61, 0xff
 ; SI-NEXT:    s_lshl_b32 s9, s9, 16
-; SI-NEXT:    s_lshl_b32 s10, s10, 24
+; SI-NEXT:    s_lshl_b32 s10, s62, 24
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
 ; SI-NEXT:    s_or_b32 s9, s10, s9
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x68, v0
@@ -203490,17 +204520,16 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s8
-; SI-NEXT:    v_readlane_b32 s8, v22, 23
+; SI-NEXT:    v_readlane_b32 s8, v22, 46
 ; SI-NEXT:    s_and_b32 s6, s6, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v22, 24
+; SI-NEXT:    v_readlane_b32 s9, v22, 47
 ; SI-NEXT:    s_lshl_b32 s8, s8, 8
 ; SI-NEXT:    s_or_b32 s6, s6, s8
-; SI-NEXT:    v_readlane_b32 s8, v22, 25
-; SI-NEXT:    v_readlane_b32 s9, v22, 26
+; SI-NEXT:    v_readlane_b32 s8, v22, 48
+; SI-NEXT:    v_readlane_b32 s9, v22, 49
 ; SI-NEXT:    s_and_b32 s8, s8, 0xff
-; SI-NEXT:    v_readlane_b32 s10, v22, 27
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
-; SI-NEXT:    s_lshl_b32 s9, s10, 24
+; SI-NEXT:    s_lshl_b32 s9, s58, 24
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x6c, v0
@@ -203509,13 +204538,11 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    s_and_b32 s6, s7, 0xff
-; SI-NEXT:    v_readlane_b32 s7, v23, 0
-; SI-NEXT:    s_lshl_b32 s7, s7, 8
+; SI-NEXT:    s_lshl_b32 s7, s94, 8
 ; SI-NEXT:    s_or_b32 s6, s6, s7
-; SI-NEXT:    s_and_b32 s7, s59, 0xff
-; SI-NEXT:    v_readlane_b32 s8, v22, 63
+; SI-NEXT:    s_and_b32 s7, s51, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s8, s8, 24
+; SI-NEXT:    s_lshl_b32 s8, s54, 24
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_or_b32 s7, s8, s7
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x70, v0
@@ -203523,17 +204550,12 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
-; SI-NEXT:    v_readlane_b32 s6, v22, 29
 ; SI-NEXT:    s_and_b32 s4, s4, 0xff
-; SI-NEXT:    v_readlane_b32 s7, v22, 30
-; SI-NEXT:    s_lshl_b32 s6, s6, 8
+; SI-NEXT:    s_lshl_b32 s6, s52, 8
 ; SI-NEXT:    s_or_b32 s4, s4, s6
-; SI-NEXT:    v_readlane_b32 s6, v22, 31
-; SI-NEXT:    v_readlane_b32 s7, v22, 32
-; SI-NEXT:    s_and_b32 s6, s6, 0xff
-; SI-NEXT:    v_readlane_b32 s8, v22, 33
+; SI-NEXT:    s_and_b32 s6, s50, 0xff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_lshl_b32 s7, s8, 24
+; SI-NEXT:    s_lshl_b32 s7, s96, 24
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x74, v0
@@ -203542,12 +204564,11 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
 ; SI-NEXT:    s_and_b32 s4, s5, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s52, 8
+; SI-NEXT:    s_lshl_b32 s5, s99, 8
 ; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    s_and_b32 s5, s58, 0xff
-; SI-NEXT:    v_readlane_b32 s6, v23, 1
+; SI-NEXT:    s_and_b32 s5, s59, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
-; SI-NEXT:    s_lshl_b32 s6, s6, 24
+; SI-NEXT:    s_lshl_b32 s6, s60, 24
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, 0x78, v0
@@ -203556,12 +204577,10 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    v_add_i32_e32 v0, vcc, 0x7c, v0
 ; SI-NEXT:    v_mov_b32_e32 v1, s4
 ; SI-NEXT:    v_readlane_b32 s30, v20, 34
-; SI-NEXT:    v_readlane_b32 s19, v22, 4
-; SI-NEXT:    v_readlane_b32 s17, v22, 10
-; SI-NEXT:    v_readlane_b32 s15, v22, 16
-; SI-NEXT:    v_readlane_b32 s13, v22, 22
-; SI-NEXT:    v_readlane_b32 s11, v22, 28
-; SI-NEXT:    v_readlane_b32 s9, v22, 34
+; SI-NEXT:    v_readlane_b32 s19, v22, 27
+; SI-NEXT:    v_readlane_b32 s17, v22, 33
+; SI-NEXT:    v_readlane_b32 s15, v22, 39
+; SI-NEXT:    v_readlane_b32 s13, v22, 45
 ; SI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; SI-NEXT:    v_readlane_b32 s31, v20, 35
 ; SI-NEXT:    v_readlane_b32 s99, v20, 33
@@ -203602,236 +204621,9 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; SI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v21, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 offset:8 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v23, off, s[0:3], s32 offset:12 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB99_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    v_writelane_b32 v21, s4, 3
-; SI-NEXT:    v_writelane_b32 v21, s5, 4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr98
-; SI-NEXT:    ; implicit-def: $sgpr82
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    v_writelane_b32 v21, s4, 5
-; SI-NEXT:    v_writelane_b32 v21, s5, 6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 7
-; SI-NEXT:    v_writelane_b32 v21, s5, 8
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 9
-; SI-NEXT:    v_writelane_b32 v21, s5, 10
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 11
-; SI-NEXT:    v_writelane_b32 v21, s5, 12
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 13
-; SI-NEXT:    v_writelane_b32 v21, s5, 14
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 15
-; SI-NEXT:    v_writelane_b32 v21, s5, 16
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 17
-; SI-NEXT:    v_writelane_b32 v21, s5, 18
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 19
-; SI-NEXT:    v_writelane_b32 v21, s5, 20
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 21
-; SI-NEXT:    v_writelane_b32 v21, s5, 22
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 23
-; SI-NEXT:    v_writelane_b32 v21, s5, 24
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 25
-; SI-NEXT:    v_writelane_b32 v21, s5, 26
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; kill: killed $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 27
-; SI-NEXT:    v_writelane_b32 v21, s5, 28
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 29
-; SI-NEXT:    v_writelane_b32 v21, s5, 30
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 31
-; SI-NEXT:    v_writelane_b32 v21, s5, 32
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 33
-; SI-NEXT:    v_writelane_b32 v21, s5, 34
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 35
-; SI-NEXT:    v_writelane_b32 v21, s5, 36
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 37
-; SI-NEXT:    v_writelane_b32 v21, s5, 38
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 39
-; SI-NEXT:    v_writelane_b32 v21, s5, 40
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 41
-; SI-NEXT:    v_writelane_b32 v21, s5, 42
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 43
-; SI-NEXT:    v_writelane_b32 v21, s5, 44
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 45
-; SI-NEXT:    v_writelane_b32 v21, s5, 46
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 47
-; SI-NEXT:    v_writelane_b32 v21, s5, 48
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 49
-; SI-NEXT:    v_writelane_b32 v21, s5, 50
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 51
-; SI-NEXT:    v_writelane_b32 v21, s5, 52
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 53
-; SI-NEXT:    v_writelane_b32 v21, s5, 54
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 55
-; SI-NEXT:    v_writelane_b32 v21, s5, 56
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 57
-; SI-NEXT:    v_writelane_b32 v21, s5, 58
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 59
-; SI-NEXT:    v_writelane_b32 v21, s5, 60
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 61
-; SI-NEXT:    v_writelane_b32 v21, s5, 62
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v21, s4, 63
-; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_writelane_b32 v22, s5, 0
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v22, s4, 1
-; SI-NEXT:    v_writelane_b32 v22, s5, 2
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v22, s4, 3
-; SI-NEXT:    v_writelane_b32 v22, s5, 4
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v22, s4, 5
-; SI-NEXT:    v_writelane_b32 v22, s5, 6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v22, s4, 7
-; SI-NEXT:    v_writelane_b32 v22, s5, 8
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v22, s4, 9
-; SI-NEXT:    v_writelane_b32 v22, s5, 10
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v22, s4, 11
-; SI-NEXT:    v_writelane_b32 v22, s5, 12
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v22, s4, 13
-; SI-NEXT:    v_writelane_b32 v22, s5, 14
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v22, s4, 15
-; SI-NEXT:    v_writelane_b32 v22, s5, 16
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v22, s4, 17
-; SI-NEXT:    v_writelane_b32 v22, s5, 18
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v22, s4, 19
-; SI-NEXT:    v_writelane_b32 v22, s5, 20
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v22, s4, 21
-; SI-NEXT:    v_writelane_b32 v22, s5, 22
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v22, s4, 23
-; SI-NEXT:    v_writelane_b32 v22, s5, 24
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v22, s4, 25
-; SI-NEXT:    v_writelane_b32 v22, s5, 26
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v22, s4, 27
-; SI-NEXT:    v_writelane_b32 v22, s5, 28
-; SI-NEXT:    v_writelane_b32 v22, s52, 29
-; SI-NEXT:    v_writelane_b32 v22, s53, 30
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v22, s52, 31
-; SI-NEXT:    v_writelane_b32 v22, s53, 32
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    v_writelane_b32 v22, s52, 33
-; SI-NEXT:    v_writelane_b32 v22, s53, 34
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    s_branch .LBB99_2
 ;
 ; VI-LABEL: bitcast_v64i16_to_v128i8_scalar:
 ; VI:       ; %bb.0:
@@ -203893,164 +204685,345 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; VI-NEXT:    s_cmp_lg_u32 s44, 0
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
-; VI-NEXT:    s_cbranch_scc0 .LBB99_4
+; VI-NEXT:    s_cbranch_scc0 .LBB99_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_lshr_b32 s46, s45, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 0
-; VI-NEXT:    s_lshr_b32 s46, s45, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 1
-; VI-NEXT:    s_lshr_b32 s46, s45, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 2
-; VI-NEXT:    s_lshr_b32 s46, s44, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 3
-; VI-NEXT:    s_lshr_b32 s46, s44, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 4
-; VI-NEXT:    s_lshr_b32 s46, s29, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 5
-; VI-NEXT:    s_lshr_b32 s46, s29, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 6
-; VI-NEXT:    s_lshr_b32 s46, s29, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 7
-; VI-NEXT:    s_lshr_b32 s46, s28, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 8
 ; VI-NEXT:    s_lshr_b32 s46, s28, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 9
-; VI-NEXT:    s_lshr_b32 s46, s27, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 10
-; VI-NEXT:    s_lshr_b32 s46, s27, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 11
-; VI-NEXT:    s_lshr_b32 s46, s27, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 12
-; VI-NEXT:    s_lshr_b32 s46, s26, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 13
-; VI-NEXT:    s_lshr_b32 s46, s26, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 14
-; VI-NEXT:    s_lshr_b32 s46, s25, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 15
-; VI-NEXT:    s_lshr_b32 s46, s25, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 16
-; VI-NEXT:    s_lshr_b32 s46, s24, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 17
-; VI-NEXT:    s_lshr_b32 s46, s23, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 18
-; VI-NEXT:    s_lshr_b32 s46, s23, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 19
-; VI-NEXT:    s_lshr_b32 s46, s22, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 20
-; VI-NEXT:    s_lshr_b32 s46, s21, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 21
-; VI-NEXT:    s_lshr_b32 s46, s21, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 22
-; VI-NEXT:    s_lshr_b32 s46, s20, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 23
-; VI-NEXT:    s_lshr_b32 s46, s19, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 24
-; VI-NEXT:    s_lshr_b32 s46, s19, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 25
-; VI-NEXT:    s_lshr_b32 s46, s18, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 26
-; VI-NEXT:    s_lshr_b32 s46, s17, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 27
-; VI-NEXT:    s_lshr_b32 s46, s17, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 28
-; VI-NEXT:    s_lshr_b32 s46, s16, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 29
-; VI-NEXT:    s_lshr_b32 s46, s5, 24
 ; VI-NEXT:    v_writelane_b32 v33, s46, 30
-; VI-NEXT:    s_lshr_b32 s46, s5, 16
+; VI-NEXT:    s_lshr_b32 s46, s27, 8
 ; VI-NEXT:    v_writelane_b32 v33, s46, 31
-; VI-NEXT:    s_lshr_b32 s46, s5, 8
+; VI-NEXT:    s_lshr_b32 s46, s26, 8
 ; VI-NEXT:    v_writelane_b32 v33, s46, 32
-; VI-NEXT:    s_lshr_b32 s46, s4, 16
+; VI-NEXT:    s_lshr_b32 s46, s25, 8
 ; VI-NEXT:    v_writelane_b32 v33, s46, 33
-; VI-NEXT:    s_lshr_b32 s46, s4, 8
+; VI-NEXT:    s_lshr_b32 s46, s24, 8
 ; VI-NEXT:    v_writelane_b32 v33, s46, 34
-; VI-NEXT:    s_lshr_b32 s46, s7, 24
+; VI-NEXT:    s_lshr_b32 s46, s23, 8
 ; VI-NEXT:    v_writelane_b32 v33, s46, 35
-; VI-NEXT:    s_lshr_b32 s46, s7, 16
+; VI-NEXT:    s_lshr_b32 s46, s22, 8
 ; VI-NEXT:    v_writelane_b32 v33, s46, 36
-; VI-NEXT:    s_lshr_b32 s46, s7, 8
+; VI-NEXT:    s_lshr_b32 s46, s21, 8
 ; VI-NEXT:    v_writelane_b32 v33, s46, 37
-; VI-NEXT:    s_lshr_b32 s46, s6, 16
+; VI-NEXT:    s_lshr_b32 s46, s20, 8
 ; VI-NEXT:    v_writelane_b32 v33, s46, 38
-; VI-NEXT:    s_lshr_b32 s46, s6, 8
+; VI-NEXT:    s_lshr_b32 s46, s19, 8
 ; VI-NEXT:    v_writelane_b32 v33, s46, 39
-; VI-NEXT:    s_lshr_b32 s46, s9, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 40
-; VI-NEXT:    s_lshr_b32 s46, s9, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 41
-; VI-NEXT:    s_lshr_b32 s46, s9, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 42
-; VI-NEXT:    s_lshr_b32 s46, s8, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 43
-; VI-NEXT:    s_lshr_b32 s46, s8, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 44
-; VI-NEXT:    s_lshr_b32 s46, s11, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 45
-; VI-NEXT:    s_lshr_b32 s46, s11, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 46
-; VI-NEXT:    s_lshr_b32 s46, s11, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 47
-; VI-NEXT:    s_lshr_b32 s46, s10, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 48
-; VI-NEXT:    s_lshr_b32 s46, s10, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 49
-; VI-NEXT:    s_lshr_b32 s46, s13, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 50
-; VI-NEXT:    s_lshr_b32 s46, s13, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 51
-; VI-NEXT:    s_lshr_b32 s46, s13, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 52
-; VI-NEXT:    s_lshr_b32 s46, s12, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 53
-; VI-NEXT:    s_lshr_b32 s46, s12, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 54
-; VI-NEXT:    s_lshr_b32 s46, s15, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 55
-; VI-NEXT:    s_lshr_b32 s46, s15, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 56
-; VI-NEXT:    s_lshr_b32 s46, s14, 16
-; VI-NEXT:    s_lshr_b32 s71, s25, 8
-; VI-NEXT:    s_lshr_b32 s87, s24, 8
-; VI-NEXT:    s_lshr_b32 s86, s23, 8
-; VI-NEXT:    s_lshr_b32 s64, s22, 8
-; VI-NEXT:    s_lshr_b32 s66, s21, 8
-; VI-NEXT:    s_lshr_b32 s54, s20, 8
-; VI-NEXT:    s_lshr_b32 s82, s19, 8
-; VI-NEXT:    s_lshr_b32 s81, s18, 8
-; VI-NEXT:    s_lshr_b32 s67, s17, 8
-; VI-NEXT:    s_lshr_b32 s68, s16, 8
-; VI-NEXT:    s_lshr_b32 s69, s15, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 57
-; VI-NEXT:    s_lshr_b32 s83, s14, 8
-; VI-NEXT:    s_lshr_b32 s84, s41, 24
-; VI-NEXT:    s_lshr_b32 s80, s41, 16
-; VI-NEXT:    s_lshr_b32 s51, s41, 8
-; VI-NEXT:    s_lshr_b32 s50, s40, 16
-; VI-NEXT:    s_lshr_b32 s85, s40, 8
-; VI-NEXT:    s_lshr_b32 s55, s43, 24
-; VI-NEXT:    s_lshr_b32 s65, s43, 16
-; VI-NEXT:    s_lshr_b32 s52, s43, 8
-; VI-NEXT:    s_lshr_b32 s53, s42, 16
-; VI-NEXT:    s_lshr_b32 s70, s42, 8
-; VI-NEXT:    s_lshr_b64 s[78:79], s[44:45], 24
-; VI-NEXT:    s_lshr_b64 s[88:89], s[28:29], 24
-; VI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 24
-; VI-NEXT:    s_lshr_b64 s[30:31], s[24:25], 24
+; VI-NEXT:    s_lshr_b32 s46, s17, 16
+; VI-NEXT:    v_writelane_b32 v33, s46, 28
+; VI-NEXT:    s_lshr_b32 s46, s16, 16
+; VI-NEXT:    v_writelane_b32 v33, s46, 29
+; VI-NEXT:    s_lshr_b32 s47, s10, 8
+; VI-NEXT:    v_writelane_b32 v33, s47, 40
+; VI-NEXT:    s_lshr_b32 s47, s13, 24
+; VI-NEXT:    v_writelane_b32 v33, s47, 41
+; VI-NEXT:    s_lshr_b32 s47, s13, 16
+; VI-NEXT:    v_writelane_b32 v33, s47, 42
+; VI-NEXT:    s_lshr_b32 s47, s13, 8
+; VI-NEXT:    v_writelane_b32 v33, s47, 43
+; VI-NEXT:    s_lshr_b32 s47, s12, 16
+; VI-NEXT:    v_writelane_b32 v33, s47, 44
+; VI-NEXT:    s_lshr_b32 s47, s12, 8
+; VI-NEXT:    v_writelane_b32 v33, s47, 45
+; VI-NEXT:    s_lshr_b32 s47, s15, 24
+; VI-NEXT:    v_writelane_b32 v33, s47, 46
+; VI-NEXT:    s_lshr_b32 s47, s15, 16
+; VI-NEXT:    v_writelane_b32 v33, s47, 47
+; VI-NEXT:    s_lshr_b32 s47, s15, 8
+; VI-NEXT:    v_writelane_b32 v33, s47, 48
+; VI-NEXT:    s_lshr_b32 s47, s14, 16
+; VI-NEXT:    v_writelane_b32 v33, s47, 49
+; VI-NEXT:    s_lshr_b32 s47, s14, 8
+; VI-NEXT:    v_writelane_b32 v33, s47, 50
+; VI-NEXT:    s_lshr_b32 s47, s41, 24
+; VI-NEXT:    v_writelane_b32 v33, s47, 51
+; VI-NEXT:    s_lshr_b32 s47, s41, 16
+; VI-NEXT:    v_writelane_b32 v33, s47, 52
+; VI-NEXT:    s_lshr_b32 s47, s41, 8
+; VI-NEXT:    v_writelane_b32 v33, s47, 53
+; VI-NEXT:    s_lshr_b32 s47, s40, 16
+; VI-NEXT:    v_writelane_b32 v33, s47, 54
+; VI-NEXT:    s_lshr_b32 s47, s40, 8
+; VI-NEXT:    v_writelane_b32 v33, s47, 55
+; VI-NEXT:    s_lshr_b32 s47, s43, 24
+; VI-NEXT:    v_writelane_b32 v33, s47, 56
+; VI-NEXT:    s_lshr_b32 s47, s43, 16
+; VI-NEXT:    v_writelane_b32 v33, s47, 57
+; VI-NEXT:    s_lshr_b32 s47, s43, 8
+; VI-NEXT:    v_writelane_b32 v33, s47, 58
+; VI-NEXT:    s_lshr_b32 s47, s42, 16
+; VI-NEXT:    v_writelane_b32 v33, s47, 59
+; VI-NEXT:    s_lshr_b32 s47, s42, 8
+; VI-NEXT:    v_writelane_b32 v33, s47, 60
+; VI-NEXT:    s_lshr_b64 s[34:35], s[44:45], 24
+; VI-NEXT:    v_writelane_b32 v33, s34, 14
+; VI-NEXT:    v_writelane_b32 v33, s35, 15
+; VI-NEXT:    s_lshr_b64 s[34:35], s[28:29], 24
+; VI-NEXT:    v_writelane_b32 v33, s34, 12
+; VI-NEXT:    v_writelane_b32 v33, s35, 13
+; VI-NEXT:    s_lshr_b64 s[34:35], s[26:27], 24
+; VI-NEXT:    v_writelane_b32 v33, s34, 10
+; VI-NEXT:    v_writelane_b32 v33, s35, 11
+; VI-NEXT:    s_lshr_b64 s[34:35], s[24:25], 24
+; VI-NEXT:    v_writelane_b32 v33, s34, 8
+; VI-NEXT:    v_writelane_b32 v33, s35, 9
 ; VI-NEXT:    s_lshr_b64 s[34:35], s[22:23], 24
-; VI-NEXT:    s_lshr_b64 s[36:37], s[20:21], 24
-; VI-NEXT:    s_lshr_b64 s[38:39], s[18:19], 24
-; VI-NEXT:    s_lshr_b64 s[48:49], s[16:17], 24
-; VI-NEXT:    s_lshr_b64 s[46:47], s[4:5], 24
-; VI-NEXT:    s_lshr_b64 s[56:57], s[6:7], 24
-; VI-NEXT:    s_lshr_b64 s[58:59], s[8:9], 24
-; VI-NEXT:    s_lshr_b64 s[60:61], s[10:11], 24
-; VI-NEXT:    s_lshr_b64 s[62:63], s[12:13], 24
-; VI-NEXT:    s_lshr_b64 s[72:73], s[14:15], 24
-; VI-NEXT:    s_lshr_b64 s[74:75], s[40:41], 24
-; VI-NEXT:    s_lshr_b64 s[76:77], s[42:43], 24
-; VI-NEXT:    s_cbranch_execnz .LBB99_3
-; VI-NEXT:  .LBB99_2: ; %cmp.true
+; VI-NEXT:    v_writelane_b32 v33, s34, 6
+; VI-NEXT:    v_writelane_b32 v33, s35, 7
+; VI-NEXT:    s_lshr_b64 s[34:35], s[20:21], 24
+; VI-NEXT:    v_writelane_b32 v33, s34, 4
+; VI-NEXT:    v_writelane_b32 v33, s35, 5
+; VI-NEXT:    s_lshr_b64 s[34:35], s[18:19], 24
+; VI-NEXT:    v_writelane_b32 v33, s34, 2
+; VI-NEXT:    v_writelane_b32 v33, s35, 3
+; VI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 24
+; VI-NEXT:    v_writelane_b32 v33, s34, 0
+; VI-NEXT:    v_writelane_b32 v33, s35, 1
+; VI-NEXT:    s_lshr_b64 s[48:49], s[4:5], 24
+; VI-NEXT:    v_writelane_b32 v33, s48, 26
+; VI-NEXT:    v_writelane_b32 v33, s49, 27
+; VI-NEXT:    s_lshr_b64 s[48:49], s[8:9], 24
+; VI-NEXT:    v_writelane_b32 v33, s48, 24
+; VI-NEXT:    v_writelane_b32 v33, s49, 25
+; VI-NEXT:    s_lshr_b64 s[48:49], s[10:11], 24
+; VI-NEXT:    v_writelane_b32 v33, s48, 22
+; VI-NEXT:    v_writelane_b32 v33, s49, 23
+; VI-NEXT:    s_lshr_b64 s[48:49], s[14:15], 24
+; VI-NEXT:    v_writelane_b32 v33, s48, 20
+; VI-NEXT:    v_writelane_b32 v33, s49, 21
+; VI-NEXT:    s_lshr_b64 s[48:49], s[40:41], 24
+; VI-NEXT:    v_writelane_b32 v33, s48, 18
+; VI-NEXT:    v_writelane_b32 v33, s49, 19
+; VI-NEXT:    s_lshr_b64 s[48:49], s[42:43], 24
+; VI-NEXT:    v_writelane_b32 v33, s48, 16
+; VI-NEXT:    s_lshr_b32 s69, s45, 24
+; VI-NEXT:    s_lshr_b32 s71, s45, 16
+; VI-NEXT:    s_lshr_b32 s80, s45, 8
+; VI-NEXT:    s_lshr_b32 s87, s44, 16
+; VI-NEXT:    s_lshr_b32 s83, s44, 8
+; VI-NEXT:    s_lshr_b32 s84, s29, 24
+; VI-NEXT:    s_lshr_b32 s50, s29, 16
+; VI-NEXT:    s_lshr_b32 s89, s29, 8
+; VI-NEXT:    s_lshr_b32 s51, s28, 16
+; VI-NEXT:    s_lshr_b32 s86, s27, 24
+; VI-NEXT:    s_lshr_b32 s65, s27, 16
+; VI-NEXT:    s_lshr_b32 s55, s26, 16
+; VI-NEXT:    s_lshr_b32 s52, s25, 24
+; VI-NEXT:    s_lshr_b32 s66, s25, 16
+; VI-NEXT:    s_lshr_b32 s70, s24, 16
+; VI-NEXT:    s_lshr_b32 s56, s23, 24
+; VI-NEXT:    s_lshr_b32 s57, s23, 16
+; VI-NEXT:    s_lshr_b32 s58, s22, 16
+; VI-NEXT:    s_lshr_b32 s59, s21, 24
+; VI-NEXT:    s_lshr_b32 s68, s21, 16
+; VI-NEXT:    s_lshr_b32 s62, s20, 16
+; VI-NEXT:    s_lshr_b32 s63, s19, 24
+; VI-NEXT:    s_lshr_b32 s73, s19, 16
+; VI-NEXT:    s_lshr_b32 s75, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s18, 8
+; VI-NEXT:    s_lshr_b32 s77, s17, 24
+; VI-NEXT:    s_lshr_b32 s31, s17, 8
+; VI-NEXT:    s_lshr_b32 s36, s16, 8
+; VI-NEXT:    s_lshr_b32 s85, s5, 24
+; VI-NEXT:    s_lshr_b32 s53, s5, 16
+; VI-NEXT:    s_lshr_b32 s64, s5, 8
+; VI-NEXT:    s_lshr_b32 s54, s4, 16
+; VI-NEXT:    s_lshr_b32 s46, s4, 8
+; VI-NEXT:    s_lshr_b32 s82, s7, 24
+; VI-NEXT:    s_lshr_b32 s81, s7, 16
+; VI-NEXT:    s_lshr_b32 s67, s7, 8
+; VI-NEXT:    s_lshr_b32 s61, s6, 16
+; VI-NEXT:    s_lshr_b32 s60, s6, 8
+; VI-NEXT:    s_lshr_b32 s76, s9, 24
+; VI-NEXT:    s_lshr_b32 s72, s9, 16
+; VI-NEXT:    s_lshr_b32 s74, s9, 8
+; VI-NEXT:    s_lshr_b32 s79, s8, 16
+; VI-NEXT:    s_lshr_b32 s78, s8, 8
+; VI-NEXT:    s_lshr_b32 s90, s11, 24
+; VI-NEXT:    s_lshr_b32 s88, s11, 16
+; VI-NEXT:    s_lshr_b32 s91, s11, 8
+; VI-NEXT:    s_lshr_b32 vcc_lo, s10, 16
+; VI-NEXT:    s_lshr_b64 s[34:35], s[6:7], 24
+; VI-NEXT:    s_lshr_b64 s[38:39], s[12:13], 24
+; VI-NEXT:    v_writelane_b32 v33, s49, 17
+; VI-NEXT:    s_mov_b64 s[48:49], 0
+; VI-NEXT:    s_branch .LBB99_3
+; VI-NEXT:  .LBB99_2:
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    s_mov_b64 s[48:49], -1
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s30, 0
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s31, 1
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr68
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr70
+; VI-NEXT:    ; implicit-def: $sgpr66
+; VI-NEXT:    ; implicit-def: $sgpr52
+; VI-NEXT:    ; implicit-def: $sgpr55
+; VI-NEXT:    ; implicit-def: $sgpr65
+; VI-NEXT:    ; implicit-def: $sgpr86
+; VI-NEXT:    ; implicit-def: $sgpr51
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr50
+; VI-NEXT:    ; implicit-def: $sgpr84
+; VI-NEXT:    ; implicit-def: $sgpr83
+; VI-NEXT:    ; implicit-def: $sgpr87
+; VI-NEXT:    ; implicit-def: $sgpr80
+; VI-NEXT:    ; implicit-def: $sgpr71
+; VI-NEXT:    ; implicit-def: $sgpr69
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr67
+; VI-NEXT:    ; implicit-def: $sgpr81
+; VI-NEXT:    ; implicit-def: $sgpr82
+; VI-NEXT:    ; implicit-def: $sgpr54
+; VI-NEXT:    ; implicit-def: $sgpr64
+; VI-NEXT:    ; implicit-def: $sgpr53
+; VI-NEXT:    ; implicit-def: $sgpr85
+; VI-NEXT:    ; implicit-def: $sgpr38
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s30, 2
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s31, 3
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s30, 4
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s31, 5
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s30, 6
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s31, 7
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s30, 8
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s31, 9
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s30, 10
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s31, 11
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s30, 12
+; VI-NEXT:    v_writelane_b32 v33, s31, 13
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s30, 14
+; VI-NEXT:    v_writelane_b32 v33, s31, 15
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s30, 16
+; VI-NEXT:    v_writelane_b32 v33, s31, 17
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s30, 18
+; VI-NEXT:    v_writelane_b32 v33, s31, 19
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s30, 20
+; VI-NEXT:    v_writelane_b32 v33, s31, 21
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s30, 22
+; VI-NEXT:    v_writelane_b32 v33, s31, 23
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s30, 24
+; VI-NEXT:    v_writelane_b32 v33, s31, 25
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; kill: killed $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    v_writelane_b32 v33, s30, 26
+; VI-NEXT:    v_writelane_b32 v33, s31, 27
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:  .LBB99_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[48:49], s[48:49], exec
+; VI-NEXT:    s_cselect_b32 s47, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s47, 1
+; VI-NEXT:    s_mov_b32 s48, s85
+; VI-NEXT:    s_mov_b32 s49, s53
+; VI-NEXT:    s_mov_b32 s53, s54
+; VI-NEXT:    s_mov_b32 s47, s82
+; VI-NEXT:    s_mov_b32 s54, s81
+; VI-NEXT:    s_mov_b32 s81, s67
+; VI-NEXT:    s_mov_b32 s67, s61
+; VI-NEXT:    s_mov_b32 s61, s76
+; VI-NEXT:    s_mov_b32 s76, s79
+; VI-NEXT:    v_readlane_b32 s79, v33, 28
+; VI-NEXT:    v_readlane_b32 s82, v33, 29
+; VI-NEXT:    s_mov_b32 s85, s90
+; VI-NEXT:    s_mov_b32 s90, vcc_lo
+; VI-NEXT:    s_cbranch_scc1 .LBB99_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_and_b32 s46, s43, 0xffff0000
 ; VI-NEXT:    s_add_i32 s43, s43, 3
 ; VI-NEXT:    s_and_b32 s43, s43, 0xffff
@@ -204177,509 +205150,515 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; VI-NEXT:    s_or_b32 s45, s46, s45
 ; VI-NEXT:    s_and_b32 s46, s44, 0xffff0000
 ; VI-NEXT:    s_add_i32 s44, s44, 3
-; VI-NEXT:    s_add_i32 s45, s45, 0x30000
-; VI-NEXT:    s_and_b32 s44, s44, 0xffff
-; VI-NEXT:    s_or_b32 s44, s46, s44
-; VI-NEXT:    s_lshr_b32 s46, s45, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 0
-; VI-NEXT:    s_lshr_b32 s46, s45, 16
-; VI-NEXT:    s_add_i32 s44, s44, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 1
-; VI-NEXT:    s_lshr_b32 s46, s45, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 2
-; VI-NEXT:    s_lshr_b32 s46, s44, 16
-; VI-NEXT:    s_add_i32 s29, s29, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 3
-; VI-NEXT:    s_lshr_b32 s46, s44, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 4
-; VI-NEXT:    s_lshr_b32 s46, s29, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 5
-; VI-NEXT:    s_lshr_b32 s46, s29, 16
 ; VI-NEXT:    s_add_i32 s28, s28, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 6
-; VI-NEXT:    s_lshr_b32 s46, s29, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 7
-; VI-NEXT:    s_lshr_b32 s46, s28, 16
+; VI-NEXT:    s_and_b32 s44, s44, 0xffff
 ; VI-NEXT:    s_add_i32 s27, s27, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 8
+; VI-NEXT:    s_or_b32 s44, s46, s44
 ; VI-NEXT:    s_lshr_b32 s46, s28, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 9
-; VI-NEXT:    s_lshr_b32 s46, s27, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 10
-; VI-NEXT:    s_lshr_b32 s46, s27, 16
 ; VI-NEXT:    s_add_i32 s26, s26, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 11
+; VI-NEXT:    v_writelane_b32 v33, s46, 30
 ; VI-NEXT:    s_lshr_b32 s46, s27, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 12
-; VI-NEXT:    s_lshr_b32 s46, s26, 16
 ; VI-NEXT:    s_add_i32 s25, s25, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 13
+; VI-NEXT:    v_writelane_b32 v33, s46, 31
 ; VI-NEXT:    s_lshr_b32 s46, s26, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 14
-; VI-NEXT:    s_lshr_b32 s46, s25, 24
 ; VI-NEXT:    s_add_i32 s24, s24, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 15
-; VI-NEXT:    s_lshr_b32 s46, s25, 16
-; VI-NEXT:    s_add_i32 s23, s23, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 16
-; VI-NEXT:    s_lshr_b32 s46, s24, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 17
-; VI-NEXT:    s_lshr_b32 s46, s23, 24
-; VI-NEXT:    s_add_i32 s22, s22, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 18
-; VI-NEXT:    s_lshr_b32 s46, s23, 16
-; VI-NEXT:    s_add_i32 s21, s21, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 19
-; VI-NEXT:    s_lshr_b32 s46, s22, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 20
-; VI-NEXT:    s_lshr_b32 s46, s21, 24
-; VI-NEXT:    s_add_i32 s20, s20, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 21
-; VI-NEXT:    s_lshr_b32 s46, s21, 16
-; VI-NEXT:    s_add_i32 s19, s19, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 22
-; VI-NEXT:    s_lshr_b32 s46, s20, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 23
-; VI-NEXT:    s_lshr_b32 s46, s19, 24
-; VI-NEXT:    s_add_i32 s18, s18, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 24
-; VI-NEXT:    s_lshr_b32 s46, s19, 16
-; VI-NEXT:    s_add_i32 s17, s17, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 25
-; VI-NEXT:    s_lshr_b32 s46, s18, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 26
-; VI-NEXT:    s_lshr_b32 s46, s17, 24
-; VI-NEXT:    s_add_i32 s16, s16, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 27
-; VI-NEXT:    s_lshr_b32 s46, s17, 16
-; VI-NEXT:    s_add_i32 s5, s5, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 28
-; VI-NEXT:    s_lshr_b32 s46, s16, 16
-; VI-NEXT:    v_writelane_b32 v33, s46, 29
-; VI-NEXT:    s_lshr_b32 s46, s5, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 30
-; VI-NEXT:    s_lshr_b32 s46, s5, 16
-; VI-NEXT:    s_add_i32 s4, s4, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 31
-; VI-NEXT:    s_lshr_b32 s46, s5, 8
 ; VI-NEXT:    v_writelane_b32 v33, s46, 32
-; VI-NEXT:    s_lshr_b32 s46, s4, 16
-; VI-NEXT:    s_add_i32 s7, s7, 0x30000
+; VI-NEXT:    s_lshr_b32 s46, s25, 8
+; VI-NEXT:    s_add_i32 s23, s23, 0x30000
 ; VI-NEXT:    v_writelane_b32 v33, s46, 33
-; VI-NEXT:    s_lshr_b32 s46, s4, 8
+; VI-NEXT:    s_lshr_b32 s46, s24, 8
+; VI-NEXT:    s_add_i32 s22, s22, 0x30000
 ; VI-NEXT:    v_writelane_b32 v33, s46, 34
-; VI-NEXT:    s_lshr_b32 s46, s7, 24
+; VI-NEXT:    s_lshr_b32 s46, s23, 8
+; VI-NEXT:    s_add_i32 s21, s21, 0x30000
 ; VI-NEXT:    v_writelane_b32 v33, s46, 35
-; VI-NEXT:    s_lshr_b32 s46, s7, 16
-; VI-NEXT:    s_add_i32 s6, s6, 0x30000
+; VI-NEXT:    s_lshr_b32 s46, s22, 8
+; VI-NEXT:    s_add_i32 s20, s20, 0x30000
 ; VI-NEXT:    v_writelane_b32 v33, s46, 36
-; VI-NEXT:    s_lshr_b32 s46, s7, 8
+; VI-NEXT:    s_lshr_b32 s46, s21, 8
+; VI-NEXT:    s_add_i32 s19, s19, 0x30000
 ; VI-NEXT:    v_writelane_b32 v33, s46, 37
-; VI-NEXT:    s_lshr_b32 s46, s6, 16
-; VI-NEXT:    s_add_i32 s9, s9, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 38
-; VI-NEXT:    s_lshr_b32 s46, s6, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 39
-; VI-NEXT:    s_lshr_b32 s46, s9, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 40
-; VI-NEXT:    s_lshr_b32 s46, s9, 16
-; VI-NEXT:    s_add_i32 s8, s8, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 41
-; VI-NEXT:    s_lshr_b32 s46, s9, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 42
-; VI-NEXT:    s_lshr_b32 s46, s8, 16
-; VI-NEXT:    s_add_i32 s11, s11, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 43
-; VI-NEXT:    s_lshr_b32 s46, s8, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 44
-; VI-NEXT:    s_lshr_b32 s46, s11, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 45
-; VI-NEXT:    s_lshr_b32 s46, s11, 16
+; VI-NEXT:    s_lshr_b32 s46, s20, 8
 ; VI-NEXT:    s_add_i32 s10, s10, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 46
-; VI-NEXT:    s_lshr_b32 s46, s11, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 47
-; VI-NEXT:    s_lshr_b32 s46, s10, 16
+; VI-NEXT:    v_writelane_b32 v33, s46, 38
+; VI-NEXT:    s_lshr_b32 s46, s19, 8
 ; VI-NEXT:    s_add_i32 s13, s13, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 48
-; VI-NEXT:    s_lshr_b32 s46, s10, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 49
-; VI-NEXT:    s_lshr_b32 s46, s13, 24
-; VI-NEXT:    v_writelane_b32 v33, s46, 50
-; VI-NEXT:    s_lshr_b32 s46, s13, 16
+; VI-NEXT:    v_writelane_b32 v33, s46, 39
+; VI-NEXT:    s_lshr_b32 vcc_lo, s10, 8
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 40
+; VI-NEXT:    s_lshr_b32 vcc_lo, s13, 24
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 41
+; VI-NEXT:    s_lshr_b32 vcc_lo, s13, 16
 ; VI-NEXT:    s_add_i32 s12, s12, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 51
-; VI-NEXT:    s_lshr_b32 s46, s13, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 52
-; VI-NEXT:    s_lshr_b32 s46, s12, 16
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 42
+; VI-NEXT:    s_lshr_b32 vcc_lo, s13, 8
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 43
+; VI-NEXT:    s_lshr_b32 vcc_lo, s12, 16
 ; VI-NEXT:    s_add_i32 s15, s15, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 53
-; VI-NEXT:    s_lshr_b32 s46, s12, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 54
-; VI-NEXT:    s_lshr_b32 s46, s15, 24
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 44
+; VI-NEXT:    s_lshr_b32 vcc_lo, s12, 8
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 45
+; VI-NEXT:    s_lshr_b32 vcc_lo, s15, 24
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 46
+; VI-NEXT:    s_lshr_b32 vcc_lo, s15, 16
 ; VI-NEXT:    s_add_i32 s14, s14, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 55
-; VI-NEXT:    s_lshr_b32 s46, s15, 16
-; VI-NEXT:    s_add_i32 s43, s43, 0x30000
-; VI-NEXT:    s_add_i32 s42, s42, 0x30000
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 47
+; VI-NEXT:    s_lshr_b32 vcc_lo, s15, 8
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 48
+; VI-NEXT:    s_lshr_b32 vcc_lo, s14, 16
 ; VI-NEXT:    s_add_i32 s41, s41, 0x30000
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 49
+; VI-NEXT:    s_lshr_b32 vcc_lo, s14, 8
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 50
+; VI-NEXT:    s_lshr_b32 vcc_lo, s41, 24
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 51
+; VI-NEXT:    s_lshr_b32 vcc_lo, s41, 16
 ; VI-NEXT:    s_add_i32 s40, s40, 0x30000
-; VI-NEXT:    v_writelane_b32 v33, s46, 56
-; VI-NEXT:    s_lshr_b32 s46, s14, 16
-; VI-NEXT:    s_lshr_b32 s71, s25, 8
-; VI-NEXT:    s_lshr_b32 s87, s24, 8
-; VI-NEXT:    s_lshr_b32 s86, s23, 8
-; VI-NEXT:    s_lshr_b32 s64, s22, 8
-; VI-NEXT:    s_lshr_b32 s66, s21, 8
-; VI-NEXT:    s_lshr_b32 s54, s20, 8
-; VI-NEXT:    s_lshr_b32 s82, s19, 8
-; VI-NEXT:    s_lshr_b32 s81, s18, 8
-; VI-NEXT:    s_lshr_b32 s67, s17, 8
-; VI-NEXT:    s_lshr_b32 s68, s16, 8
-; VI-NEXT:    s_lshr_b32 s69, s15, 8
-; VI-NEXT:    v_writelane_b32 v33, s46, 57
-; VI-NEXT:    s_lshr_b32 s83, s14, 8
-; VI-NEXT:    s_lshr_b32 s84, s41, 24
-; VI-NEXT:    s_lshr_b32 s80, s41, 16
-; VI-NEXT:    s_lshr_b32 s51, s41, 8
-; VI-NEXT:    s_lshr_b32 s50, s40, 16
-; VI-NEXT:    s_lshr_b32 s85, s40, 8
-; VI-NEXT:    s_lshr_b32 s55, s43, 24
-; VI-NEXT:    s_lshr_b32 s65, s43, 16
-; VI-NEXT:    s_lshr_b32 s52, s43, 8
-; VI-NEXT:    s_lshr_b32 s53, s42, 16
-; VI-NEXT:    s_lshr_b32 s70, s42, 8
-; VI-NEXT:    s_lshr_b64 s[78:79], s[44:45], 24
-; VI-NEXT:    s_lshr_b64 s[88:89], s[28:29], 24
-; VI-NEXT:    s_lshr_b64 s[90:91], s[26:27], 24
-; VI-NEXT:    s_lshr_b64 s[30:31], s[24:25], 24
-; VI-NEXT:    s_lshr_b64 s[34:35], s[22:23], 24
-; VI-NEXT:    s_lshr_b64 s[36:37], s[20:21], 24
-; VI-NEXT:    s_lshr_b64 s[38:39], s[18:19], 24
-; VI-NEXT:    s_lshr_b64 s[48:49], s[16:17], 24
-; VI-NEXT:    s_lshr_b64 s[46:47], s[4:5], 24
-; VI-NEXT:    s_lshr_b64 s[56:57], s[6:7], 24
-; VI-NEXT:    s_lshr_b64 s[58:59], s[8:9], 24
-; VI-NEXT:    s_lshr_b64 s[60:61], s[10:11], 24
-; VI-NEXT:    s_lshr_b64 s[62:63], s[12:13], 24
-; VI-NEXT:    s_lshr_b64 s[72:73], s[14:15], 24
-; VI-NEXT:    s_lshr_b64 s[74:75], s[40:41], 24
-; VI-NEXT:    s_lshr_b64 s[76:77], s[42:43], 24
-; VI-NEXT:  .LBB99_3: ; %end
-; VI-NEXT:    v_mov_b32_e32 v2, s68
-; VI-NEXT:    v_mov_b32_e32 v4, s67
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 52
+; VI-NEXT:    s_lshr_b32 vcc_lo, s41, 8
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 53
+; VI-NEXT:    s_lshr_b32 vcc_lo, s40, 16
+; VI-NEXT:    s_add_i32 s43, s43, 0x30000
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 54
+; VI-NEXT:    s_lshr_b32 vcc_lo, s40, 8
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 55
+; VI-NEXT:    s_lshr_b32 vcc_lo, s43, 24
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 56
+; VI-NEXT:    s_lshr_b32 vcc_lo, s43, 16
+; VI-NEXT:    s_add_i32 s42, s42, 0x30000
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 57
+; VI-NEXT:    s_lshr_b32 vcc_lo, s43, 8
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 58
+; VI-NEXT:    s_lshr_b32 vcc_lo, s42, 16
+; VI-NEXT:    s_add_i32 s45, s45, 0x30000
+; VI-NEXT:    s_add_i32 s44, s44, 0x30000
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 59
+; VI-NEXT:    s_lshr_b32 vcc_lo, s42, 8
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 60
+; VI-NEXT:    s_lshr_b64 vcc, s[44:45], 24
+; VI-NEXT:    s_add_i32 s29, s29, 0x30000
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 14
+; VI-NEXT:    v_writelane_b32 v33, vcc_hi, 15
+; VI-NEXT:    s_lshr_b64 vcc, s[28:29], 24
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 12
+; VI-NEXT:    v_writelane_b32 v33, vcc_hi, 13
+; VI-NEXT:    s_lshr_b64 vcc, s[26:27], 24
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 10
+; VI-NEXT:    v_writelane_b32 v33, vcc_hi, 11
+; VI-NEXT:    s_lshr_b64 vcc, s[24:25], 24
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 8
+; VI-NEXT:    v_writelane_b32 v33, vcc_hi, 9
+; VI-NEXT:    s_lshr_b64 vcc, s[22:23], 24
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 6
+; VI-NEXT:    v_writelane_b32 v33, vcc_hi, 7
+; VI-NEXT:    s_lshr_b64 vcc, s[20:21], 24
+; VI-NEXT:    s_add_i32 s18, s18, 0x30000
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 4
+; VI-NEXT:    v_writelane_b32 v33, vcc_hi, 5
+; VI-NEXT:    s_lshr_b64 vcc, s[18:19], 24
+; VI-NEXT:    s_add_i32 s17, s17, 0x30000
+; VI-NEXT:    s_add_i32 s16, s16, 0x30000
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 2
+; VI-NEXT:    v_writelane_b32 v33, vcc_hi, 3
+; VI-NEXT:    s_lshr_b64 vcc, s[16:17], 24
+; VI-NEXT:    s_add_i32 s5, s5, 0x30000
+; VI-NEXT:    s_add_i32 s4, s4, 0x30000
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 0
+; VI-NEXT:    v_writelane_b32 v33, vcc_hi, 1
+; VI-NEXT:    s_lshr_b64 s[30:31], s[4:5], 24
+; VI-NEXT:    s_add_i32 s9, s9, 0x30000
+; VI-NEXT:    s_add_i32 s8, s8, 0x30000
+; VI-NEXT:    v_writelane_b32 v33, s30, 26
+; VI-NEXT:    v_writelane_b32 v33, s31, 27
+; VI-NEXT:    s_lshr_b64 vcc, s[8:9], 24
+; VI-NEXT:    s_add_i32 s11, s11, 0x30000
+; VI-NEXT:    s_lshr_b32 s36, s17, 8
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 24
+; VI-NEXT:    v_writelane_b32 v33, vcc_hi, 25
+; VI-NEXT:    s_mov_b32 s31, s36
+; VI-NEXT:    s_lshr_b64 s[36:37], s[10:11], 24
+; VI-NEXT:    s_lshr_b32 s38, s16, 8
+; VI-NEXT:    v_writelane_b32 v33, s36, 22
+; VI-NEXT:    v_writelane_b32 v33, s37, 23
+; VI-NEXT:    s_mov_b32 s36, s38
+; VI-NEXT:    s_lshr_b64 s[38:39], s[14:15], 24
+; VI-NEXT:    s_lshr_b64 vcc, s[12:13], 24
+; VI-NEXT:    v_writelane_b32 v33, s38, 20
+; VI-NEXT:    v_writelane_b32 v33, s39, 21
+; VI-NEXT:    s_mov_b32 s38, vcc_lo
+; VI-NEXT:    s_lshr_b64 vcc, s[40:41], 24
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 18
+; VI-NEXT:    s_add_i32 s7, s7, 0x30000
+; VI-NEXT:    s_add_i32 s6, s6, 0x30000
+; VI-NEXT:    s_lshr_b32 s35, s18, 8
+; VI-NEXT:    v_writelane_b32 v33, vcc_hi, 19
+; VI-NEXT:    s_lshr_b64 vcc, s[42:43], 24
+; VI-NEXT:    s_lshr_b32 s69, s45, 24
+; VI-NEXT:    s_lshr_b32 s71, s45, 16
+; VI-NEXT:    s_lshr_b32 s80, s45, 8
+; VI-NEXT:    s_lshr_b32 s87, s44, 16
+; VI-NEXT:    s_lshr_b32 s83, s44, 8
+; VI-NEXT:    s_lshr_b32 s84, s29, 24
+; VI-NEXT:    s_lshr_b32 s50, s29, 16
+; VI-NEXT:    s_lshr_b32 s89, s29, 8
+; VI-NEXT:    s_lshr_b32 s51, s28, 16
+; VI-NEXT:    s_lshr_b32 s86, s27, 24
+; VI-NEXT:    s_lshr_b32 s65, s27, 16
+; VI-NEXT:    s_lshr_b32 s55, s26, 16
+; VI-NEXT:    s_lshr_b32 s52, s25, 24
+; VI-NEXT:    s_lshr_b32 s66, s25, 16
+; VI-NEXT:    s_lshr_b32 s70, s24, 16
+; VI-NEXT:    s_lshr_b32 s56, s23, 24
+; VI-NEXT:    s_lshr_b32 s57, s23, 16
+; VI-NEXT:    s_lshr_b32 s58, s22, 16
+; VI-NEXT:    s_lshr_b32 s59, s21, 24
+; VI-NEXT:    s_lshr_b32 s68, s21, 16
+; VI-NEXT:    s_lshr_b32 s62, s20, 16
+; VI-NEXT:    s_lshr_b32 s63, s19, 24
+; VI-NEXT:    s_lshr_b32 s73, s19, 16
+; VI-NEXT:    s_lshr_b32 s75, s18, 16
+; VI-NEXT:    s_lshr_b32 s77, s17, 24
+; VI-NEXT:    s_lshr_b32 s79, s17, 16
+; VI-NEXT:    s_lshr_b32 s82, s16, 16
+; VI-NEXT:    s_lshr_b32 s48, s5, 24
+; VI-NEXT:    s_lshr_b32 s49, s5, 16
+; VI-NEXT:    s_lshr_b32 s64, s5, 8
+; VI-NEXT:    s_lshr_b32 s53, s4, 16
+; VI-NEXT:    s_lshr_b32 s46, s4, 8
+; VI-NEXT:    s_lshr_b32 s47, s7, 24
+; VI-NEXT:    s_lshr_b32 s54, s7, 16
+; VI-NEXT:    s_lshr_b32 s81, s7, 8
+; VI-NEXT:    s_lshr_b32 s67, s6, 16
+; VI-NEXT:    s_lshr_b32 s60, s6, 8
+; VI-NEXT:    s_lshr_b32 s61, s9, 24
+; VI-NEXT:    s_lshr_b32 s72, s9, 16
+; VI-NEXT:    s_lshr_b32 s74, s9, 8
+; VI-NEXT:    s_lshr_b32 s76, s8, 16
+; VI-NEXT:    s_lshr_b32 s78, s8, 8
+; VI-NEXT:    s_lshr_b32 s85, s11, 24
+; VI-NEXT:    s_lshr_b32 s88, s11, 16
+; VI-NEXT:    s_lshr_b32 s91, s11, 8
+; VI-NEXT:    s_lshr_b32 s90, s10, 16
+; VI-NEXT:    s_mov_b32 s30, s35
+; VI-NEXT:    s_lshr_b64 s[34:35], s[6:7], 24
+; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 16
+; VI-NEXT:    v_writelane_b32 v33, vcc_hi, 17
+; VI-NEXT:  .LBB99_5: ; %end
+; VI-NEXT:    v_readlane_b32 vcc_lo, v33, 0
+; VI-NEXT:    v_mov_b32_e32 v6, vcc_lo
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
+; VI-NEXT:    v_mov_b32_e32 v2, s36
+; VI-NEXT:    v_perm_b32 v6, s82, v6, v1
+; VI-NEXT:    v_mov_b32_e32 v4, s31
 ; VI-NEXT:    v_perm_b32 v3, s16, v2, v1
+; VI-NEXT:    v_mov_b32_e32 v24, s77
+; VI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
 ; VI-NEXT:    v_perm_b32 v2, s17, v4, v1
-; VI-NEXT:    v_mov_b32_e32 v4, s81
-; VI-NEXT:    v_mov_b32_e32 v6, s82
-; VI-NEXT:    v_perm_b32 v5, s18, v4, v1
-; VI-NEXT:    v_perm_b32 v4, s19, v6, v1
-; VI-NEXT:    v_mov_b32_e32 v6, s54
-; VI-NEXT:    v_mov_b32_e32 v8, s66
-; VI-NEXT:    v_perm_b32 v7, s20, v6, v1
-; VI-NEXT:    v_perm_b32 v6, s21, v8, v1
-; VI-NEXT:    v_mov_b32_e32 v8, s64
-; VI-NEXT:    v_mov_b32_e32 v11, s86
-; VI-NEXT:    v_perm_b32 v9, s22, v8, v1
-; VI-NEXT:    v_perm_b32 v8, s23, v11, v1
-; VI-NEXT:    v_mov_b32_e32 v11, s87
-; VI-NEXT:    v_mov_b32_e32 v14, s71
-; VI-NEXT:    v_readlane_b32 s16, v33, 14
-; VI-NEXT:    v_perm_b32 v12, s24, v11, v1
-; VI-NEXT:    v_perm_b32 v11, s25, v14, v1
-; VI-NEXT:    v_mov_b32_e32 v14, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 12
-; VI-NEXT:    v_mov_b32_e32 v17, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 9
-; VI-NEXT:    v_perm_b32 v15, s26, v14, v1
-; VI-NEXT:    v_perm_b32 v14, s27, v17, v1
-; VI-NEXT:    v_mov_b32_e32 v17, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 7
-; VI-NEXT:    v_mov_b32_e32 v10, s48
-; VI-NEXT:    v_mov_b32_e32 v23, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 29
-; VI-NEXT:    v_perm_b32 v10, s16, v10, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 27
-; VI-NEXT:    v_mov_b32_e32 v24, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 28
-; VI-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
-; VI-NEXT:    v_perm_b32 v24, s16, v24, v1
-; VI-NEXT:    v_or_b32_e32 v3, v3, v10
-; VI-NEXT:    v_mov_b32_e32 v13, s38
-; VI-NEXT:    v_readlane_b32 s16, v33, 26
+; VI-NEXT:    v_readlane_b32 s16, v33, 2
+; VI-NEXT:    v_perm_b32 v24, s79, v24, v1
+; VI-NEXT:    v_or_b32_e32 v3, v3, v6
+; VI-NEXT:    v_readlane_b32 vcc_hi, v33, 1
+; VI-NEXT:    v_mov_b32_e32 v9, s16
 ; VI-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v24
-; VI-NEXT:    v_perm_b32 v13, s16, v13, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 24
+; VI-NEXT:    v_mov_b32_e32 v4, s30
+; VI-NEXT:    v_perm_b32 v9, s75, v9, v1
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 4, v0
-; VI-NEXT:    v_mov_b32_e32 v25, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 25
+; VI-NEXT:    v_readlane_b32 s17, v33, 3
+; VI-NEXT:    v_readlane_b32 s16, v33, 39
+; VI-NEXT:    v_perm_b32 v5, s18, v4, v1
+; VI-NEXT:    v_mov_b32_e32 v25, s63
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v13
-; VI-NEXT:    v_perm_b32 v25, s16, v25, v1
+; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v9
+; VI-NEXT:    v_mov_b32_e32 v7, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 4
+; VI-NEXT:    v_perm_b32 v25, s73, v25, v1
 ; VI-NEXT:    v_or_b32_e32 v2, v5, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 8, v0
-; VI-NEXT:    v_mov_b32_e32 v16, s36
-; VI-NEXT:    v_readlane_b32 s16, v33, 23
+; VI-NEXT:    v_perm_b32 v4, s19, v7, v1
+; VI-NEXT:    v_mov_b32_e32 v12, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 38
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v25
-; VI-NEXT:    v_perm_b32 v16, s16, v16, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 21
+; VI-NEXT:    v_mov_b32_e32 v7, s16
+; VI-NEXT:    v_perm_b32 v12, s62, v12, v1
 ; VI-NEXT:    v_or_b32_e32 v2, v4, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 12, v0
-; VI-NEXT:    v_mov_b32_e32 v26, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 22
+; VI-NEXT:    v_readlane_b32 s17, v33, 5
+; VI-NEXT:    v_readlane_b32 s16, v33, 37
+; VI-NEXT:    v_perm_b32 v8, s20, v7, v1
+; VI-NEXT:    v_mov_b32_e32 v26, s59
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v16
-; VI-NEXT:    v_perm_b32 v26, s16, v26, v1
-; VI-NEXT:    v_or_b32_e32 v2, v7, v2
+; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v12
+; VI-NEXT:    v_mov_b32_e32 v10, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 6
+; VI-NEXT:    v_perm_b32 v26, s68, v26, v1
+; VI-NEXT:    v_or_b32_e32 v2, v8, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 16, v0
-; VI-NEXT:    v_mov_b32_e32 v19, s34
-; VI-NEXT:    v_readlane_b32 s16, v33, 20
+; VI-NEXT:    v_perm_b32 v7, s21, v10, v1
+; VI-NEXT:    v_mov_b32_e32 v16, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 36
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v26
-; VI-NEXT:    v_perm_b32 v19, s16, v19, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 18
-; VI-NEXT:    v_or_b32_e32 v2, v6, v2
+; VI-NEXT:    v_mov_b32_e32 v10, s16
+; VI-NEXT:    v_perm_b32 v16, s58, v16, v1
+; VI-NEXT:    v_or_b32_e32 v2, v7, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 20, v0
-; VI-NEXT:    v_mov_b32_e32 v27, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 19
+; VI-NEXT:    v_readlane_b32 s17, v33, 7
+; VI-NEXT:    v_readlane_b32 s16, v33, 35
+; VI-NEXT:    v_perm_b32 v11, s22, v10, v1
+; VI-NEXT:    v_mov_b32_e32 v27, s56
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v19
-; VI-NEXT:    v_perm_b32 v27, s16, v27, v1
-; VI-NEXT:    v_or_b32_e32 v2, v9, v2
+; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v16
+; VI-NEXT:    v_mov_b32_e32 v13, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 8
+; VI-NEXT:    v_perm_b32 v27, s57, v27, v1
+; VI-NEXT:    v_or_b32_e32 v2, v11, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 24, v0
-; VI-NEXT:    v_mov_b32_e32 v20, s30
-; VI-NEXT:    v_readlane_b32 s16, v33, 17
+; VI-NEXT:    v_perm_b32 v10, s23, v13, v1
+; VI-NEXT:    v_mov_b32_e32 v20, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 34
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v27
-; VI-NEXT:    v_perm_b32 v20, s16, v20, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 15
-; VI-NEXT:    v_or_b32_e32 v2, v8, v2
+; VI-NEXT:    v_mov_b32_e32 v13, s16
+; VI-NEXT:    v_perm_b32 v20, s70, v20, v1
+; VI-NEXT:    v_or_b32_e32 v2, v10, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 28, v0
-; VI-NEXT:    v_mov_b32_e32 v28, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 16
+; VI-NEXT:    v_readlane_b32 s17, v33, 9
+; VI-NEXT:    v_readlane_b32 s16, v33, 33
+; VI-NEXT:    v_perm_b32 v14, s24, v13, v1
+; VI-NEXT:    v_mov_b32_e32 v28, s52
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v20
-; VI-NEXT:    v_perm_b32 v28, s16, v28, v1
-; VI-NEXT:    v_or_b32_e32 v2, v12, v2
+; VI-NEXT:    v_mov_b32_e32 v15, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 10
+; VI-NEXT:    v_perm_b32 v28, s66, v28, v1
+; VI-NEXT:    v_or_b32_e32 v2, v14, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 32, v0
-; VI-NEXT:    v_mov_b32_e32 v21, s90
-; VI-NEXT:    v_readlane_b32 s16, v33, 13
+; VI-NEXT:    v_perm_b32 v13, s25, v15, v1
+; VI-NEXT:    v_mov_b32_e32 v21, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 32
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v28
-; VI-NEXT:    v_perm_b32 v21, s16, v21, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 10
-; VI-NEXT:    v_or_b32_e32 v2, v11, v2
+; VI-NEXT:    v_mov_b32_e32 v15, s16
+; VI-NEXT:    v_perm_b32 v21, s55, v21, v1
+; VI-NEXT:    v_or_b32_e32 v2, v13, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 36, v0
-; VI-NEXT:    v_mov_b32_e32 v29, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 11
+; VI-NEXT:    v_readlane_b32 s17, v33, 11
+; VI-NEXT:    v_readlane_b32 s16, v33, 31
+; VI-NEXT:    v_perm_b32 v17, s26, v15, v1
+; VI-NEXT:    v_mov_b32_e32 v29, s86
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v21
-; VI-NEXT:    v_perm_b32 v29, s16, v29, v1
-; VI-NEXT:    v_or_b32_e32 v2, v15, v2
+; VI-NEXT:    v_mov_b32_e32 v18, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 12
+; VI-NEXT:    v_perm_b32 v29, s65, v29, v1
+; VI-NEXT:    v_or_b32_e32 v2, v17, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 40, v0
-; VI-NEXT:    v_mov_b32_e32 v22, s88
-; VI-NEXT:    v_readlane_b32 s16, v33, 8
+; VI-NEXT:    v_perm_b32 v15, s27, v18, v1
+; VI-NEXT:    v_mov_b32_e32 v22, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 30
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v29
-; VI-NEXT:    v_perm_b32 v22, s16, v22, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 5
-; VI-NEXT:    v_or_b32_e32 v2, v14, v2
+; VI-NEXT:    v_mov_b32_e32 v18, s16
+; VI-NEXT:    v_perm_b32 v22, s51, v22, v1
+; VI-NEXT:    v_or_b32_e32 v2, v15, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 44, v0
-; VI-NEXT:    v_perm_b32 v18, s28, v17, v1
-; VI-NEXT:    v_mov_b32_e32 v30, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 6
+; VI-NEXT:    v_readlane_b32 s17, v33, 13
+; VI-NEXT:    v_perm_b32 v19, s28, v18, v1
+; VI-NEXT:    v_mov_b32_e32 v30, s84
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v22
-; VI-NEXT:    v_perm_b32 v30, s16, v30, v1
-; VI-NEXT:    v_readlane_b32 s16, v33, 4
-; VI-NEXT:    v_or_b32_e32 v2, v18, v2
+; VI-NEXT:    v_mov_b32_e32 v23, s89
+; VI-NEXT:    v_readlane_b32 s16, v33, 14
+; VI-NEXT:    v_perm_b32 v30, s50, v30, v1
+; VI-NEXT:    v_or_b32_e32 v2, v19, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 48, v0
-; VI-NEXT:    v_perm_b32 v17, s29, v23, v1
-; VI-NEXT:    v_mov_b32_e32 v23, s78
-; VI-NEXT:    v_mov_b32_e32 v31, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 3
+; VI-NEXT:    v_perm_b32 v18, s29, v23, v1
+; VI-NEXT:    v_mov_b32_e32 v23, s16
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v30
-; VI-NEXT:    v_perm_b32 v23, s16, v23, v1
-; VI-NEXT:    v_or_b32_e32 v2, v17, v2
+; VI-NEXT:    v_mov_b32_e32 v31, s83
+; VI-NEXT:    v_perm_b32 v23, s87, v23, v1
+; VI-NEXT:    v_or_b32_e32 v2, v18, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 52, v0
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_perm_b32 v2, s44, v31, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v23
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 56, v0
-; VI-NEXT:    v_readlane_b32 s16, v33, 2
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 0
-; VI-NEXT:    v_mov_b32_e32 v3, s16
-; VI-NEXT:    v_readlane_b32 s16, v33, 1
-; VI-NEXT:    v_perm_b32 v3, s16, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s69
+; VI-NEXT:    v_mov_b32_e32 v2, s80
+; VI-NEXT:    v_perm_b32 v3, s71, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s45, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; VI-NEXT:    v_readlane_b32 s17, v33, 15
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 60, v0
+; VI-NEXT:    v_readlane_b32 s16, v33, 60
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v3, s76
-; VI-NEXT:    v_mov_b32_e32 v2, s70
-; VI-NEXT:    v_perm_b32 v3, s53, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v2, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 16
+; VI-NEXT:    v_mov_b32_e32 v3, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 59
+; VI-NEXT:    v_perm_b32 v3, s16, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s42, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 64, v0
+; VI-NEXT:    v_readlane_b32 s16, v33, 58
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v3, s55
-; VI-NEXT:    v_mov_b32_e32 v2, s52
-; VI-NEXT:    v_perm_b32 v3, s65, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v2, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 56
+; VI-NEXT:    v_mov_b32_e32 v3, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 57
+; VI-NEXT:    v_perm_b32 v3, s16, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s43, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; VI-NEXT:    v_readlane_b32 s17, v33, 17
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x44, v0
+; VI-NEXT:    v_readlane_b32 s16, v33, 55
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v3, s74
-; VI-NEXT:    v_mov_b32_e32 v2, s85
-; VI-NEXT:    v_perm_b32 v3, s50, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v2, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 18
+; VI-NEXT:    v_mov_b32_e32 v3, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 54
+; VI-NEXT:    v_perm_b32 v3, s16, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s40, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x48, v0
+; VI-NEXT:    v_readlane_b32 s16, v33, 53
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v3, s84
-; VI-NEXT:    v_mov_b32_e32 v2, s51
-; VI-NEXT:    v_perm_b32 v3, s80, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v2, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 51
+; VI-NEXT:    v_mov_b32_e32 v3, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 52
+; VI-NEXT:    v_perm_b32 v3, s16, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s41, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; VI-NEXT:    v_readlane_b32 s17, v33, 19
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x4c, v0
+; VI-NEXT:    v_readlane_b32 s16, v33, 50
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s83
+; VI-NEXT:    v_mov_b32_e32 v2, s16
+; VI-NEXT:    v_readlane_b32 s16, v33, 20
 ; VI-NEXT:    v_perm_b32 v2, s14, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s72
-; VI-NEXT:    v_readlane_b32 s14, v33, 57
+; VI-NEXT:    v_mov_b32_e32 v3, s16
+; VI-NEXT:    v_readlane_b32 s14, v33, 49
 ; VI-NEXT:    v_perm_b32 v3, s14, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x50, v0
-; VI-NEXT:    v_readlane_b32 s14, v33, 55
+; VI-NEXT:    v_readlane_b32 s14, v33, 48
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
+; VI-NEXT:    v_mov_b32_e32 v2, s14
+; VI-NEXT:    v_readlane_b32 s14, v33, 46
 ; VI-NEXT:    v_mov_b32_e32 v3, s14
-; VI-NEXT:    v_readlane_b32 s14, v33, 56
-; VI-NEXT:    v_mov_b32_e32 v2, s69
+; VI-NEXT:    v_readlane_b32 s14, v33, 47
 ; VI-NEXT:    v_perm_b32 v3, s14, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s15, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x54, v0
-; VI-NEXT:    v_readlane_b32 s14, v33, 54
+; VI-NEXT:    v_readlane_b32 s14, v33, 45
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_mov_b32_e32 v2, s14
 ; VI-NEXT:    v_perm_b32 v2, s12, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s62
-; VI-NEXT:    v_readlane_b32 s12, v33, 53
+; VI-NEXT:    v_mov_b32_e32 v3, s38
+; VI-NEXT:    v_readlane_b32 s12, v33, 44
 ; VI-NEXT:    v_perm_b32 v3, s12, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x58, v0
-; VI-NEXT:    v_readlane_b32 s12, v33, 52
+; VI-NEXT:    v_readlane_b32 s12, v33, 43
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_mov_b32_e32 v2, s12
-; VI-NEXT:    v_readlane_b32 s12, v33, 50
+; VI-NEXT:    v_readlane_b32 s12, v33, 41
 ; VI-NEXT:    v_mov_b32_e32 v3, s12
-; VI-NEXT:    v_readlane_b32 s12, v33, 51
+; VI-NEXT:    v_readlane_b32 s12, v33, 42
 ; VI-NEXT:    v_perm_b32 v3, s12, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s13, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x5c, v0
-; VI-NEXT:    v_readlane_b32 s12, v33, 49
+; VI-NEXT:    v_readlane_b32 s12, v33, 40
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
 ; VI-NEXT:    v_mov_b32_e32 v2, s12
+; VI-NEXT:    v_readlane_b32 s12, v33, 22
+; VI-NEXT:    v_mov_b32_e32 v3, s12
+; VI-NEXT:    v_perm_b32 v3, s90, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s10, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s60
-; VI-NEXT:    v_readlane_b32 s10, v33, 48
-; VI-NEXT:    v_perm_b32 v3, s10, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x60, v0
-; VI-NEXT:    v_readlane_b32 s10, v33, 47
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s10
-; VI-NEXT:    v_readlane_b32 s10, v33, 45
-; VI-NEXT:    v_mov_b32_e32 v3, s10
-; VI-NEXT:    v_readlane_b32 s10, v33, 46
-; VI-NEXT:    v_perm_b32 v3, s10, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s85
+; VI-NEXT:    v_mov_b32_e32 v2, s91
+; VI-NEXT:    v_perm_b32 v3, s88, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s11, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x64, v0
-; VI-NEXT:    v_readlane_b32 s10, v33, 44
+; VI-NEXT:    v_readlane_b32 s10, v33, 24
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s10
+; VI-NEXT:    v_mov_b32_e32 v3, s10
+; VI-NEXT:    v_mov_b32_e32 v2, s78
+; VI-NEXT:    v_perm_b32 v3, s76, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s8, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s58
-; VI-NEXT:    v_readlane_b32 s8, v33, 43
-; VI-NEXT:    v_perm_b32 v3, s8, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x68, v0
-; VI-NEXT:    v_readlane_b32 s8, v33, 42
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s8
-; VI-NEXT:    v_readlane_b32 s8, v33, 40
-; VI-NEXT:    v_mov_b32_e32 v3, s8
-; VI-NEXT:    v_readlane_b32 s8, v33, 41
-; VI-NEXT:    v_perm_b32 v3, s8, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s61
+; VI-NEXT:    v_mov_b32_e32 v2, s74
+; VI-NEXT:    v_perm_b32 v3, s72, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s9, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x6c, v0
-; VI-NEXT:    v_readlane_b32 s8, v33, 39
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s8
+; VI-NEXT:    v_mov_b32_e32 v3, s34
+; VI-NEXT:    v_mov_b32_e32 v2, s60
+; VI-NEXT:    v_perm_b32 v3, s67, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s6, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s56
-; VI-NEXT:    v_readlane_b32 s6, v33, 38
-; VI-NEXT:    v_perm_b32 v3, s6, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x70, v0
-; VI-NEXT:    v_readlane_b32 s6, v33, 37
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s6
-; VI-NEXT:    v_readlane_b32 s6, v33, 35
-; VI-NEXT:    v_mov_b32_e32 v3, s6
-; VI-NEXT:    v_readlane_b32 s6, v33, 36
-; VI-NEXT:    v_perm_b32 v3, s6, v3, v1
+; VI-NEXT:    v_mov_b32_e32 v3, s47
+; VI-NEXT:    v_mov_b32_e32 v2, s81
+; VI-NEXT:    v_perm_b32 v3, s54, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s7, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x74, v0
-; VI-NEXT:    v_readlane_b32 s6, v33, 34
+; VI-NEXT:    v_readlane_b32 s6, v33, 26
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s6
+; VI-NEXT:    v_mov_b32_e32 v3, s6
+; VI-NEXT:    v_mov_b32_e32 v2, s46
+; VI-NEXT:    v_perm_b32 v3, s53, v3, v1
 ; VI-NEXT:    v_perm_b32 v2, s4, v2, v1
-; VI-NEXT:    v_mov_b32_e32 v3, s46
-; VI-NEXT:    v_readlane_b32 s4, v33, 33
-; VI-NEXT:    v_perm_b32 v3, s4, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x78, v0
-; VI-NEXT:    v_readlane_b32 s4, v33, 32
 ; VI-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v2, s4
-; VI-NEXT:    v_readlane_b32 s4, v33, 30
-; VI-NEXT:    v_mov_b32_e32 v3, s4
-; VI-NEXT:    v_readlane_b32 s4, v33, 31
+; VI-NEXT:    v_mov_b32_e32 v2, s64
+; VI-NEXT:    v_mov_b32_e32 v3, s48
 ; VI-NEXT:    v_perm_b32 v2, s5, v2, v1
-; VI-NEXT:    v_perm_b32 v1, s4, v3, v1
+; VI-NEXT:    v_perm_b32 v1, s49, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v1, v2, v1
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x7c, v0
 ; VI-NEXT:    v_readlane_b32 s30, v32, 30
+; VI-NEXT:    v_readlane_b32 s17, v33, 21
+; VI-NEXT:    v_readlane_b32 s13, v33, 23
+; VI-NEXT:    v_readlane_b32 s11, v33, 25
+; VI-NEXT:    v_readlane_b32 s7, v33, 27
 ; VI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; VI-NEXT:    v_readlane_b32 s31, v32, 31
 ; VI-NEXT:    v_readlane_b32 s87, v32, 29
@@ -204718,162 +205697,6 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB99_4:
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr68
-; VI-NEXT:    ; implicit-def: $sgpr67
-; VI-NEXT:    ; implicit-def: $sgpr81
-; VI-NEXT:    ; implicit-def: $sgpr82
-; VI-NEXT:    ; implicit-def: $sgpr54
-; VI-NEXT:    ; implicit-def: $sgpr66
-; VI-NEXT:    ; implicit-def: $sgpr64
-; VI-NEXT:    ; implicit-def: $sgpr86
-; VI-NEXT:    ; implicit-def: $sgpr87
-; VI-NEXT:    ; implicit-def: $sgpr71
-; VI-NEXT:    ; implicit-def: $sgpr70
-; VI-NEXT:    ; implicit-def: $sgpr53
-; VI-NEXT:    ; implicit-def: $sgpr52
-; VI-NEXT:    ; implicit-def: $sgpr65
-; VI-NEXT:    ; implicit-def: $sgpr55
-; VI-NEXT:    ; implicit-def: $sgpr85
-; VI-NEXT:    ; implicit-def: $sgpr50
-; VI-NEXT:    ; implicit-def: $sgpr51
-; VI-NEXT:    ; implicit-def: $sgpr80
-; VI-NEXT:    ; implicit-def: $sgpr84
-; VI-NEXT:    ; implicit-def: $sgpr83
-; VI-NEXT:    ; implicit-def: $sgpr69
-; VI-NEXT:    ; implicit-def: $sgpr48
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; kill: killed $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    s_branch .LBB99_2
 ;
 ; GFX9-LABEL: bitcast_v64i16_to_v128i8_scalar:
 ; GFX9:       ; %bb.0:
@@ -204953,7 +205776,7 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v1
 ; GFX9-NEXT:    ; implicit-def: $vgpr62 : SGPR spill to VGPR lane
-; GFX9-NEXT:    s_cbranch_scc0 .LBB99_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB99_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s46, s5, 24
 ; GFX9-NEXT:    v_writelane_b32 v62, s46, 49
@@ -205098,11 +205921,165 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b64 s[90:91], s[10:11], 24
 ; GFX9-NEXT:    s_lshr_b64 s[92:93], s[12:13], 24
 ; GFX9-NEXT:    s_lshr_b64 s[94:95], s[14:15], 24
-; GFX9-NEXT:    s_lshr_b64 s[30:31], s[40:41], 24
-; GFX9-NEXT:    s_lshr_b64 s[34:35], s[42:43], 24
-; GFX9-NEXT:    s_lshr_b64 s[36:37], s[44:45], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB99_4
-; GFX9-NEXT:  .LBB99_2: ; %cmp.true
+; GFX9-NEXT:    s_lshr_b64 vcc, s[40:41], 24
+; GFX9-NEXT:    s_lshr_b64 s[30:31], s[42:43], 24
+; GFX9-NEXT:    s_lshr_b64 s[34:35], s[44:45], 24
+; GFX9-NEXT:    s_mov_b64 s[36:37], 0
+; GFX9-NEXT:    s_branch .LBB99_3
+; GFX9-NEXT:  .LBB99_2:
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    s_mov_b64 s[36:37], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr81
+; GFX9-NEXT:    ; implicit-def: $sgpr71
+; GFX9-NEXT:    ; implicit-def: $sgpr80
+; GFX9-NEXT:    ; implicit-def: $sgpr70
+; GFX9-NEXT:    ; implicit-def: $sgpr69
+; GFX9-NEXT:    ; implicit-def: $sgpr68
+; GFX9-NEXT:    ; implicit-def: $sgpr66
+; GFX9-NEXT:    ; implicit-def: $sgpr67
+; GFX9-NEXT:    ; implicit-def: $sgpr65
+; GFX9-NEXT:    ; implicit-def: $sgpr64
+; GFX9-NEXT:    ; implicit-def: $sgpr55
+; GFX9-NEXT:    ; implicit-def: $sgpr53
+; GFX9-NEXT:    ; implicit-def: $sgpr54
+; GFX9-NEXT:    ; implicit-def: $sgpr52
+; GFX9-NEXT:    ; implicit-def: $sgpr51
+; GFX9-NEXT:    ; implicit-def: $sgpr50
+; GFX9-NEXT:    ; implicit-def: $sgpr48
+; GFX9-NEXT:    ; implicit-def: $sgpr49
+; GFX9-NEXT:    ; implicit-def: $sgpr39
+; GFX9-NEXT:    ; implicit-def: $sgpr38
+; GFX9-NEXT:    ; implicit-def: $sgpr99
+; GFX9-NEXT:    ; implicit-def: $sgpr97
+; GFX9-NEXT:    ; implicit-def: $sgpr98
+; GFX9-NEXT:    ; implicit-def: $sgpr96
+; GFX9-NEXT:    ; implicit-def: $sgpr87
+; GFX9-NEXT:    ; implicit-def: $sgpr86
+; GFX9-NEXT:    ; implicit-def: $sgpr84
+; GFX9-NEXT:    ; implicit-def: $sgpr85
+; GFX9-NEXT:    ; implicit-def: $sgpr83
+; GFX9-NEXT:    ; implicit-def: $sgpr82
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr34
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; kill: killed $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:  .LBB99_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GFX9-NEXT:    s_cselect_b32 s47, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s47, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB99_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v26, s5, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v25, s4, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_lshrrev_b64 v[15:16], 24, v[25:26]
@@ -205327,156 +206304,8 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; GFX9-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:340 ; 4-byte Folded Spill
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v22, 8, v19
 ; GFX9-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:332 ; 4-byte Folded Spill
-; GFX9-NEXT:    s_branch .LBB99_5
-; GFX9-NEXT:  .LBB99_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr81
-; GFX9-NEXT:    ; implicit-def: $sgpr71
-; GFX9-NEXT:    ; implicit-def: $sgpr80
-; GFX9-NEXT:    ; implicit-def: $sgpr70
-; GFX9-NEXT:    ; implicit-def: $sgpr69
-; GFX9-NEXT:    ; implicit-def: $sgpr68
-; GFX9-NEXT:    ; implicit-def: $sgpr66
-; GFX9-NEXT:    ; implicit-def: $sgpr67
-; GFX9-NEXT:    ; implicit-def: $sgpr65
-; GFX9-NEXT:    ; implicit-def: $sgpr64
-; GFX9-NEXT:    ; implicit-def: $sgpr55
-; GFX9-NEXT:    ; implicit-def: $sgpr53
-; GFX9-NEXT:    ; implicit-def: $sgpr54
-; GFX9-NEXT:    ; implicit-def: $sgpr52
-; GFX9-NEXT:    ; implicit-def: $sgpr51
-; GFX9-NEXT:    ; implicit-def: $sgpr50
-; GFX9-NEXT:    ; implicit-def: $sgpr48
-; GFX9-NEXT:    ; implicit-def: $sgpr49
-; GFX9-NEXT:    ; implicit-def: $sgpr39
-; GFX9-NEXT:    ; implicit-def: $sgpr38
-; GFX9-NEXT:    ; implicit-def: $sgpr99
-; GFX9-NEXT:    ; implicit-def: $sgpr97
-; GFX9-NEXT:    ; implicit-def: $sgpr98
-; GFX9-NEXT:    ; implicit-def: $sgpr96
-; GFX9-NEXT:    ; implicit-def: $sgpr87
-; GFX9-NEXT:    ; implicit-def: $sgpr86
-; GFX9-NEXT:    ; implicit-def: $sgpr84
-; GFX9-NEXT:    ; implicit-def: $sgpr85
-; GFX9-NEXT:    ; implicit-def: $sgpr83
-; GFX9-NEXT:    ; implicit-def: $sgpr82
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr36
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; kill: killed $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    s_branch .LBB99_2
-; GFX9-NEXT:  .LBB99_4:
+; GFX9-NEXT:    s_branch .LBB99_6
+; GFX9-NEXT:  .LBB99_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s81
 ; GFX9-NEXT:    buffer_store_dword v15, off, s[0:3], s32 offset:332 ; 4-byte Folded Spill
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s71
@@ -205742,19 +206571,19 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; GFX9-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:152 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
 ; GFX9-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:156 ; 4-byte Folded Spill
-; GFX9-NEXT:    v_mov_b32_e32 v22, s30
+; GFX9-NEXT:    v_mov_b32_e32 v22, vcc_lo
 ; GFX9-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:192 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
 ; GFX9-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:196 ; 4-byte Folded Spill
-; GFX9-NEXT:    v_mov_b32_e32 v22, s34
+; GFX9-NEXT:    v_mov_b32_e32 v22, s30
 ; GFX9-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:244 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
 ; GFX9-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:248 ; 4-byte Folded Spill
-; GFX9-NEXT:    v_mov_b32_e32 v22, s36
+; GFX9-NEXT:    v_mov_b32_e32 v22, s34
 ; GFX9-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:320 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
 ; GFX9-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:324 ; 4-byte Folded Spill
-; GFX9-NEXT:  .LBB99_5: ; %end
+; GFX9-NEXT:  .LBB99_6: ; %end
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; GFX9-NEXT:    v_perm_b32 v37, v37, v52, s4
 ; GFX9-NEXT:    v_perm_b32 v31, v31, v53, s4
@@ -206211,74 +207040,74 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v2
 ; GFX11-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
-; GFX11-NEXT:    s_mov_b32 vcc_lo, 0
+; GFX11-NEXT:    s_mov_b32 s100, 0
 ; GFX11-NEXT:    ; implicit-def: $vgpr76 : SGPR spill to VGPR lane
 ; GFX11-NEXT:    ; implicit-def: $vgpr77 : SGPR spill to VGPR lane
-; GFX11-NEXT:    s_cbranch_scc0 .LBB99_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB99_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s42, s27, 24
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s5, 24
+; GFX11-NEXT:    s_lshr_b32 s30, s5, 24
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 7
 ; GFX11-NEXT:    s_lshr_b32 s42, s27, 16
-; GFX11-NEXT:    s_lshr_b32 s34, s5, 16
-; GFX11-NEXT:    s_lshr_b32 s36, s5, 8
-; GFX11-NEXT:    s_lshr_b32 s35, s4, 16
+; GFX11-NEXT:    s_lshr_b32 s31, s5, 16
+; GFX11-NEXT:    s_lshr_b32 s35, s5, 8
+; GFX11-NEXT:    s_lshr_b32 s34, s4, 16
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 6
 ; GFX11-NEXT:    s_lshr_b32 s42, s27, 8
-; GFX11-NEXT:    s_lshr_b32 s37, s4, 8
-; GFX11-NEXT:    s_lshr_b32 s38, s7, 24
-; GFX11-NEXT:    s_lshr_b32 s39, s7, 16
+; GFX11-NEXT:    s_lshr_b32 s36, s4, 8
+; GFX11-NEXT:    s_lshr_b32 s37, s7, 24
+; GFX11-NEXT:    s_lshr_b32 s38, s7, 16
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 5
 ; GFX11-NEXT:    s_lshr_b32 s42, s26, 16
-; GFX11-NEXT:    s_lshr_b32 s49, s7, 8
-; GFX11-NEXT:    s_lshr_b32 s48, s6, 16
-; GFX11-NEXT:    s_lshr_b32 s50, s6, 8
+; GFX11-NEXT:    s_lshr_b32 s48, s7, 8
+; GFX11-NEXT:    s_lshr_b32 s39, s6, 16
+; GFX11-NEXT:    s_lshr_b32 s49, s6, 8
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 4
 ; GFX11-NEXT:    s_lshr_b32 s42, s26, 8
-; GFX11-NEXT:    s_lshr_b32 s51, s9, 24
-; GFX11-NEXT:    s_lshr_b32 s52, s9, 16
-; GFX11-NEXT:    s_lshr_b32 s54, s9, 8
+; GFX11-NEXT:    s_lshr_b32 s50, s9, 24
+; GFX11-NEXT:    s_lshr_b32 s51, s9, 16
+; GFX11-NEXT:    s_lshr_b32 s53, s9, 8
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 3
 ; GFX11-NEXT:    s_lshr_b32 s42, s25, 24
-; GFX11-NEXT:    s_lshr_b32 s53, s8, 16
-; GFX11-NEXT:    s_lshr_b32 s55, s8, 8
-; GFX11-NEXT:    s_lshr_b32 s64, s11, 24
+; GFX11-NEXT:    s_lshr_b32 s52, s8, 16
+; GFX11-NEXT:    s_lshr_b32 s54, s8, 8
+; GFX11-NEXT:    s_lshr_b32 s55, s11, 24
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 2
 ; GFX11-NEXT:    s_lshr_b32 s42, s25, 16
-; GFX11-NEXT:    s_lshr_b32 s65, s11, 16
-; GFX11-NEXT:    s_lshr_b32 s67, s11, 8
-; GFX11-NEXT:    s_lshr_b32 s66, s10, 16
+; GFX11-NEXT:    s_lshr_b32 s64, s11, 16
+; GFX11-NEXT:    s_lshr_b32 s66, s11, 8
+; GFX11-NEXT:    s_lshr_b32 s65, s10, 16
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 1
 ; GFX11-NEXT:    s_lshr_b32 s42, s25, 8
-; GFX11-NEXT:    s_lshr_b32 s68, s10, 8
-; GFX11-NEXT:    s_lshr_b32 s69, s13, 24
-; GFX11-NEXT:    s_lshr_b32 s70, s13, 16
+; GFX11-NEXT:    s_lshr_b32 s67, s10, 8
+; GFX11-NEXT:    s_lshr_b32 s68, s13, 24
+; GFX11-NEXT:    s_lshr_b32 s69, s13, 16
 ; GFX11-NEXT:    v_writelane_b32 v77, s42, 0
 ; GFX11-NEXT:    s_lshr_b32 s42, s24, 16
-; GFX11-NEXT:    s_lshr_b32 s80, s13, 8
+; GFX11-NEXT:    s_lshr_b32 s71, s13, 8
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 31
 ; GFX11-NEXT:    s_lshr_b32 s42, s24, 8
-; GFX11-NEXT:    s_lshr_b32 s71, s12, 16
-; GFX11-NEXT:    s_lshr_b32 s81, s12, 8
-; GFX11-NEXT:    s_lshr_b32 s82, s15, 24
+; GFX11-NEXT:    s_lshr_b32 s70, s12, 16
+; GFX11-NEXT:    s_lshr_b32 s80, s12, 8
+; GFX11-NEXT:    s_lshr_b32 s81, s15, 24
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 30
 ; GFX11-NEXT:    s_lshr_b32 s42, s23, 24
-; GFX11-NEXT:    s_lshr_b32 s83, s15, 16
-; GFX11-NEXT:    s_lshr_b32 s85, s15, 8
-; GFX11-NEXT:    s_lshr_b32 s84, s14, 16
+; GFX11-NEXT:    s_lshr_b32 s82, s15, 16
+; GFX11-NEXT:    s_lshr_b32 s84, s15, 8
+; GFX11-NEXT:    s_lshr_b32 s83, s14, 16
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 29
 ; GFX11-NEXT:    s_lshr_b32 s42, s23, 16
-; GFX11-NEXT:    s_lshr_b32 s86, s14, 8
-; GFX11-NEXT:    s_lshr_b32 s87, s41, 24
-; GFX11-NEXT:    s_lshr_b32 s96, s41, 16
+; GFX11-NEXT:    s_lshr_b32 s85, s14, 8
+; GFX11-NEXT:    s_lshr_b32 s86, s41, 24
+; GFX11-NEXT:    s_lshr_b32 s87, s41, 16
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 28
 ; GFX11-NEXT:    s_lshr_b32 s42, s23, 8
-; GFX11-NEXT:    s_lshr_b32 s98, s41, 8
-; GFX11-NEXT:    s_lshr_b32 s97, s40, 16
-; GFX11-NEXT:    s_lshr_b32 s99, s40, 8
+; GFX11-NEXT:    s_lshr_b32 s97, s41, 8
+; GFX11-NEXT:    s_lshr_b32 s96, s40, 16
+; GFX11-NEXT:    s_lshr_b32 s98, s40, 8
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 27
 ; GFX11-NEXT:    s_lshr_b32 s42, s22, 16
-; GFX11-NEXT:    s_lshr_b32 s100, s29, 24
+; GFX11-NEXT:    s_lshr_b32 s99, s29, 24
 ; GFX11-NEXT:    s_lshr_b32 s101, s29, 16
 ; GFX11-NEXT:    s_lshr_b32 s103, s29, 8
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 26
@@ -206309,7 +207138,7 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 21
 ; GFX11-NEXT:    s_lshr_b32 s42, s20, 8
 ; GFX11-NEXT:    s_lshr_b64 s[94:95], s[40:41], 24
-; GFX11-NEXT:    s_lshr_b64 s[30:31], s[28:29], 24
+; GFX11-NEXT:    s_lshr_b64 vcc, s[28:29], 24
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 20
 ; GFX11-NEXT:    s_lshr_b32 s42, s19, 24
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
@@ -206362,141 +207191,11 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s42, s0, 8
 ; GFX11-NEXT:    v_writelane_b32 v76, s42, 0
 ; GFX11-NEXT:    s_lshr_b64 s[42:43], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, vcc_lo
-; GFX11-NEXT:    s_cbranch_vccnz .LBB99_4
-; GFX11-NEXT:  .LBB99_2: ; %cmp.true
-; GFX11-NEXT:    v_pk_add_u16 v28, s19, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v18, s27, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v17, s26, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v27, s18, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v30, s17, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v29, s16, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v20, s25, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v19, s24, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v14, s41, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v13, s40, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v10, s13, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v9, s12, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v6, s9, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v5, s8, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v34, s3, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v33, s2, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v22, s23, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v21, s22, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v16, s29, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v15, s28, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v12, s15, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v11, s14, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v8, s11, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v7, s10, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v4, s7, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v3, s6, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v2, s5, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v1, s4, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v36, s1, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v35, s0, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v24, s21, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_pk_add_u16 v23, s20, 3 op_sel_hi:[1,0]
-; GFX11-NEXT:    v_lshrrev_b64 v[51:52], 24, v[17:18]
-; GFX11-NEXT:    v_lshrrev_b64 v[64:65], 24, v[27:28]
-; GFX11-NEXT:    v_lshrrev_b64 v[52:53], 24, v[19:20]
-; GFX11-NEXT:    v_lshrrev_b64 v[65:66], 24, v[29:30]
-; GFX11-NEXT:    v_lshrrev_b64 v[53:54], 24, v[21:22]
-; GFX11-NEXT:    v_lshrrev_b64 v[69:70], 24, v[33:34]
-; GFX11-NEXT:    v_lshrrev_b64 v[37:38], 24, v[5:6]
-; GFX11-NEXT:    v_lshrrev_b64 v[48:49], 24, v[9:10]
-; GFX11-NEXT:    v_lshrrev_b64 v[66:67], 24, v[13:14]
-; GFX11-NEXT:    v_lshrrev_b64 v[54:55], 24, v[23:24]
-; GFX11-NEXT:    v_lshrrev_b64 v[70:71], 24, v[35:36]
-; GFX11-NEXT:    v_lshrrev_b64 v[25:26], 24, v[1:2]
-; GFX11-NEXT:    v_lshrrev_b64 v[31:32], 24, v[3:4]
-; GFX11-NEXT:    v_lshrrev_b64 v[38:39], 24, v[7:8]
-; GFX11-NEXT:    v_lshrrev_b64 v[49:50], 24, v[11:12]
-; GFX11-NEXT:    v_lshrrev_b64 v[67:68], 24, v[15:16]
-; GFX11-NEXT:    v_lshrrev_b32_e32 v148, 24, v18
-; GFX11-NEXT:    v_lshrrev_b32_e32 v147, 16, v18
-; GFX11-NEXT:    v_lshrrev_b32_e32 v146, 8, v18
-; GFX11-NEXT:    v_lshrrev_b32_e32 v160, 16, v17
-; GFX11-NEXT:    v_lshrrev_b32_e32 v150, 8, v17
-; GFX11-NEXT:    v_lshrrev_b32_e32 v162, 24, v20
-; GFX11-NEXT:    v_lshrrev_b32_e32 v161, 16, v20
-; GFX11-NEXT:    v_lshrrev_b32_e32 v149, 8, v20
-; GFX11-NEXT:    v_lshrrev_b32_e32 v163, 16, v19
-; GFX11-NEXT:    v_lshrrev_b32_e32 v151, 8, v19
-; GFX11-NEXT:    v_lshrrev_b32_e32 v166, 24, v22
-; GFX11-NEXT:    v_lshrrev_b32_e32 v165, 16, v22
-; GFX11-NEXT:    v_lshrrev_b32_e32 v164, 8, v22
-; GFX11-NEXT:    v_lshrrev_b32_e32 v178, 16, v21
-; GFX11-NEXT:    v_lshrrev_b32_e32 v176, 8, v21
-; GFX11-NEXT:    v_lshrrev_b32_e32 v180, 24, v24
-; GFX11-NEXT:    v_lshrrev_b32_e32 v179, 16, v24
-; GFX11-NEXT:    v_lshrrev_b32_e32 v167, 8, v24
-; GFX11-NEXT:    v_lshrrev_b32_e32 v181, 16, v23
-; GFX11-NEXT:    v_lshrrev_b32_e32 v177, 8, v23
-; GFX11-NEXT:    v_lshrrev_b32_e32 v42, 24, v28
-; GFX11-NEXT:    v_lshrrev_b32_e32 v41, 16, v28
-; GFX11-NEXT:    v_lshrrev_b32_e32 v183, 8, v28
-; GFX11-NEXT:    v_lshrrev_b32_e32 v43, 16, v27
-; GFX11-NEXT:    v_lshrrev_b32_e32 v182, 8, v27
-; GFX11-NEXT:    v_lshrrev_b32_e32 v46, 24, v30
-; GFX11-NEXT:    v_lshrrev_b32_e32 v44, 16, v30
-; GFX11-NEXT:    v_lshrrev_b32_e32 v40, 8, v30
-; GFX11-NEXT:    v_lshrrev_b32_e32 v47, 16, v29
-; GFX11-NEXT:    v_lshrrev_b32_e32 v45, 8, v29
-; GFX11-NEXT:    v_lshrrev_b32_e32 v59, 24, v34
-; GFX11-NEXT:    v_lshrrev_b32_e32 v58, 16, v34
-; GFX11-NEXT:    v_lshrrev_b32_e32 v57, 8, v34
-; GFX11-NEXT:    v_lshrrev_b32_e32 v60, 16, v33
-; GFX11-NEXT:    v_lshrrev_b32_e32 v56, 8, v33
-; GFX11-NEXT:    v_lshrrev_b32_e32 v72, 24, v36
-; GFX11-NEXT:    v_lshrrev_b32_e32 v62, 16, v36
-; GFX11-NEXT:    v_lshrrev_b32_e32 v61, 8, v36
-; GFX11-NEXT:    v_lshrrev_b32_e32 v73, 16, v35
-; GFX11-NEXT:    v_lshrrev_b32_e32 v63, 8, v35
-; GFX11-NEXT:    v_lshrrev_b32_e32 v50, 24, v2
-; GFX11-NEXT:    v_lshrrev_b32_e32 v39, 16, v2
-; GFX11-NEXT:    v_lshrrev_b32_e32 v26, 8, v2
-; GFX11-NEXT:    v_lshrrev_b32_e32 v71, 16, v1
-; GFX11-NEXT:    v_lshrrev_b32_e32 v32, 8, v1
-; GFX11-NEXT:    v_lshrrev_b32_e32 v81, 24, v4
-; GFX11-NEXT:    v_lshrrev_b32_e32 v80, 16, v4
-; GFX11-NEXT:    v_lshrrev_b32_e32 v55, 8, v4
-; GFX11-NEXT:    v_lshrrev_b32_e32 v84, 16, v3
-; GFX11-NEXT:    v_lshrrev_b32_e32 v82, 8, v3
-; GFX11-NEXT:    v_lshrrev_b32_e32 v86, 24, v6
-; GFX11-NEXT:    v_lshrrev_b32_e32 v85, 16, v6
-; GFX11-NEXT:    v_lshrrev_b32_e32 v83, 8, v6
-; GFX11-NEXT:    v_lshrrev_b32_e32 v97, 16, v5
-; GFX11-NEXT:    v_lshrrev_b32_e32 v87, 8, v5
-; GFX11-NEXT:    v_lshrrev_b32_e32 v100, 24, v8
-; GFX11-NEXT:    v_lshrrev_b32_e32 v99, 16, v8
-; GFX11-NEXT:    v_lshrrev_b32_e32 v96, 8, v8
-; GFX11-NEXT:    v_lshrrev_b32_e32 v101, 16, v7
-; GFX11-NEXT:    v_lshrrev_b32_e32 v98, 8, v7
-; GFX11-NEXT:    v_lshrrev_b32_e32 v112, 24, v10
-; GFX11-NEXT:    v_lshrrev_b32_e32 v103, 16, v10
-; GFX11-NEXT:    v_lshrrev_b32_e32 v102, 8, v10
-; GFX11-NEXT:    v_lshrrev_b32_e32 v115, 16, v9
-; GFX11-NEXT:    v_lshrrev_b32_e32 v113, 8, v9
-; GFX11-NEXT:    v_lshrrev_b32_e32 v118, 24, v12
-; GFX11-NEXT:    v_lshrrev_b32_e32 v117, 16, v12
-; GFX11-NEXT:    v_lshrrev_b32_e32 v114, 8, v12
-; GFX11-NEXT:    v_lshrrev_b32_e32 v119, 16, v11
-; GFX11-NEXT:    v_lshrrev_b32_e32 v116, 8, v11
-; GFX11-NEXT:    v_lshrrev_b32_e32 v130, 24, v14
-; GFX11-NEXT:    v_lshrrev_b32_e32 v129, 16, v14
-; GFX11-NEXT:    v_lshrrev_b32_e32 v128, 8, v14
-; GFX11-NEXT:    v_lshrrev_b32_e32 v133, 16, v13
-; GFX11-NEXT:    v_lshrrev_b32_e32 v131, 8, v13
-; GFX11-NEXT:    v_lshrrev_b32_e32 v144, 24, v16
-; GFX11-NEXT:    v_lshrrev_b32_e32 v135, 16, v16
-; GFX11-NEXT:    v_lshrrev_b32_e32 v132, 8, v16
-; GFX11-NEXT:    v_lshrrev_b32_e32 v145, 16, v15
-; GFX11-NEXT:    v_lshrrev_b32_e32 v134, 8, v15
-; GFX11-NEXT:    s_branch .LBB99_5
-; GFX11-NEXT:  .LBB99_3:
+; GFX11-NEXT:    s_branch .LBB99_3
+; GFX11-NEXT:  .LBB99_2:
 ; GFX11-NEXT:    ; implicit-def: $sgpr43
 ; GFX11-NEXT:    ; kill: killed $sgpr43
+; GFX11-NEXT:    s_mov_b32 s100, -1
 ; GFX11-NEXT:    ; implicit-def: $sgpr43
 ; GFX11-NEXT:    ; kill: killed $sgpr43
 ; GFX11-NEXT:    ; implicit-def: $sgpr42
@@ -206518,44 +207217,44 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; GFX11-NEXT:    ; implicit-def: $sgpr102
 ; GFX11-NEXT:    ; implicit-def: $sgpr103
 ; GFX11-NEXT:    ; implicit-def: $sgpr101
-; GFX11-NEXT:    ; implicit-def: $sgpr100
 ; GFX11-NEXT:    ; implicit-def: $sgpr99
-; GFX11-NEXT:    ; implicit-def: $sgpr97
 ; GFX11-NEXT:    ; implicit-def: $sgpr98
 ; GFX11-NEXT:    ; implicit-def: $sgpr96
+; GFX11-NEXT:    ; implicit-def: $sgpr97
 ; GFX11-NEXT:    ; implicit-def: $sgpr87
 ; GFX11-NEXT:    ; implicit-def: $sgpr86
-; GFX11-NEXT:    ; implicit-def: $sgpr84
 ; GFX11-NEXT:    ; implicit-def: $sgpr85
 ; GFX11-NEXT:    ; implicit-def: $sgpr83
+; GFX11-NEXT:    ; implicit-def: $sgpr84
 ; GFX11-NEXT:    ; implicit-def: $sgpr82
 ; GFX11-NEXT:    ; implicit-def: $sgpr81
-; GFX11-NEXT:    ; implicit-def: $sgpr71
 ; GFX11-NEXT:    ; implicit-def: $sgpr80
 ; GFX11-NEXT:    ; implicit-def: $sgpr70
+; GFX11-NEXT:    ; implicit-def: $sgpr71
 ; GFX11-NEXT:    ; implicit-def: $sgpr69
 ; GFX11-NEXT:    ; implicit-def: $sgpr68
-; GFX11-NEXT:    ; implicit-def: $sgpr66
 ; GFX11-NEXT:    ; implicit-def: $sgpr67
 ; GFX11-NEXT:    ; implicit-def: $sgpr65
+; GFX11-NEXT:    ; implicit-def: $sgpr66
 ; GFX11-NEXT:    ; implicit-def: $sgpr64
 ; GFX11-NEXT:    ; implicit-def: $sgpr55
-; GFX11-NEXT:    ; implicit-def: $sgpr53
 ; GFX11-NEXT:    ; implicit-def: $sgpr54
 ; GFX11-NEXT:    ; implicit-def: $sgpr52
+; GFX11-NEXT:    ; implicit-def: $sgpr53
 ; GFX11-NEXT:    ; implicit-def: $sgpr51
 ; GFX11-NEXT:    ; implicit-def: $sgpr50
-; GFX11-NEXT:    ; implicit-def: $sgpr48
 ; GFX11-NEXT:    ; implicit-def: $sgpr49
 ; GFX11-NEXT:    ; implicit-def: $sgpr39
+; GFX11-NEXT:    ; implicit-def: $sgpr48
 ; GFX11-NEXT:    ; implicit-def: $sgpr38
 ; GFX11-NEXT:    ; implicit-def: $sgpr37
-; GFX11-NEXT:    ; implicit-def: $sgpr35
 ; GFX11-NEXT:    ; implicit-def: $sgpr36
 ; GFX11-NEXT:    ; implicit-def: $sgpr34
-; GFX11-NEXT:    ; implicit-def: $vcc_hi
-; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr35
+; GFX11-NEXT:    ; implicit-def: $sgpr31
 ; GFX11-NEXT:    ; implicit-def: $sgpr30
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $vcc_lo
 ; GFX11-NEXT:    ; implicit-def: $sgpr94
 ; GFX11-NEXT:    ; implicit-def: $sgpr92
 ; GFX11-NEXT:    ; implicit-def: $sgpr90
@@ -206631,8 +207330,143 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; GFX11-NEXT:    ; kill: killed $sgpr43
 ; GFX11-NEXT:    ; implicit-def: $sgpr43
 ; GFX11-NEXT:    ; kill: killed $sgpr43
-; GFX11-NEXT:    s_branch .LBB99_2
-; GFX11-NEXT:  .LBB99_4:
+; GFX11-NEXT:  .LBB99_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s43, s100, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s43, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s43, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB99_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
+; GFX11-NEXT:    v_pk_add_u16 v28, s19, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v18, s27, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v17, s26, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v27, s18, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v30, s17, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v29, s16, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v20, s25, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v19, s24, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v14, s41, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v13, s40, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v10, s13, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v9, s12, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v6, s9, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v5, s8, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v34, s3, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v33, s2, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v22, s23, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v21, s22, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v16, s29, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v15, s28, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v12, s15, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v11, s14, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v8, s11, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v7, s10, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v4, s7, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v3, s6, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v2, s5, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v1, s4, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v36, s1, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v35, s0, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v24, s21, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_pk_add_u16 v23, s20, 3 op_sel_hi:[1,0]
+; GFX11-NEXT:    v_lshrrev_b64 v[51:52], 24, v[17:18]
+; GFX11-NEXT:    v_lshrrev_b64 v[64:65], 24, v[27:28]
+; GFX11-NEXT:    v_lshrrev_b64 v[52:53], 24, v[19:20]
+; GFX11-NEXT:    v_lshrrev_b64 v[65:66], 24, v[29:30]
+; GFX11-NEXT:    v_lshrrev_b64 v[53:54], 24, v[21:22]
+; GFX11-NEXT:    v_lshrrev_b64 v[69:70], 24, v[33:34]
+; GFX11-NEXT:    v_lshrrev_b64 v[37:38], 24, v[5:6]
+; GFX11-NEXT:    v_lshrrev_b64 v[48:49], 24, v[9:10]
+; GFX11-NEXT:    v_lshrrev_b64 v[66:67], 24, v[13:14]
+; GFX11-NEXT:    v_lshrrev_b64 v[54:55], 24, v[23:24]
+; GFX11-NEXT:    v_lshrrev_b64 v[70:71], 24, v[35:36]
+; GFX11-NEXT:    v_lshrrev_b64 v[25:26], 24, v[1:2]
+; GFX11-NEXT:    v_lshrrev_b64 v[31:32], 24, v[3:4]
+; GFX11-NEXT:    v_lshrrev_b64 v[38:39], 24, v[7:8]
+; GFX11-NEXT:    v_lshrrev_b64 v[49:50], 24, v[11:12]
+; GFX11-NEXT:    v_lshrrev_b64 v[67:68], 24, v[15:16]
+; GFX11-NEXT:    v_lshrrev_b32_e32 v148, 24, v18
+; GFX11-NEXT:    v_lshrrev_b32_e32 v147, 16, v18
+; GFX11-NEXT:    v_lshrrev_b32_e32 v146, 8, v18
+; GFX11-NEXT:    v_lshrrev_b32_e32 v160, 16, v17
+; GFX11-NEXT:    v_lshrrev_b32_e32 v150, 8, v17
+; GFX11-NEXT:    v_lshrrev_b32_e32 v162, 24, v20
+; GFX11-NEXT:    v_lshrrev_b32_e32 v161, 16, v20
+; GFX11-NEXT:    v_lshrrev_b32_e32 v149, 8, v20
+; GFX11-NEXT:    v_lshrrev_b32_e32 v163, 16, v19
+; GFX11-NEXT:    v_lshrrev_b32_e32 v151, 8, v19
+; GFX11-NEXT:    v_lshrrev_b32_e32 v166, 24, v22
+; GFX11-NEXT:    v_lshrrev_b32_e32 v165, 16, v22
+; GFX11-NEXT:    v_lshrrev_b32_e32 v164, 8, v22
+; GFX11-NEXT:    v_lshrrev_b32_e32 v178, 16, v21
+; GFX11-NEXT:    v_lshrrev_b32_e32 v176, 8, v21
+; GFX11-NEXT:    v_lshrrev_b32_e32 v180, 24, v24
+; GFX11-NEXT:    v_lshrrev_b32_e32 v179, 16, v24
+; GFX11-NEXT:    v_lshrrev_b32_e32 v167, 8, v24
+; GFX11-NEXT:    v_lshrrev_b32_e32 v181, 16, v23
+; GFX11-NEXT:    v_lshrrev_b32_e32 v177, 8, v23
+; GFX11-NEXT:    v_lshrrev_b32_e32 v42, 24, v28
+; GFX11-NEXT:    v_lshrrev_b32_e32 v41, 16, v28
+; GFX11-NEXT:    v_lshrrev_b32_e32 v183, 8, v28
+; GFX11-NEXT:    v_lshrrev_b32_e32 v43, 16, v27
+; GFX11-NEXT:    v_lshrrev_b32_e32 v182, 8, v27
+; GFX11-NEXT:    v_lshrrev_b32_e32 v46, 24, v30
+; GFX11-NEXT:    v_lshrrev_b32_e32 v44, 16, v30
+; GFX11-NEXT:    v_lshrrev_b32_e32 v40, 8, v30
+; GFX11-NEXT:    v_lshrrev_b32_e32 v47, 16, v29
+; GFX11-NEXT:    v_lshrrev_b32_e32 v45, 8, v29
+; GFX11-NEXT:    v_lshrrev_b32_e32 v59, 24, v34
+; GFX11-NEXT:    v_lshrrev_b32_e32 v58, 16, v34
+; GFX11-NEXT:    v_lshrrev_b32_e32 v57, 8, v34
+; GFX11-NEXT:    v_lshrrev_b32_e32 v60, 16, v33
+; GFX11-NEXT:    v_lshrrev_b32_e32 v56, 8, v33
+; GFX11-NEXT:    v_lshrrev_b32_e32 v72, 24, v36
+; GFX11-NEXT:    v_lshrrev_b32_e32 v62, 16, v36
+; GFX11-NEXT:    v_lshrrev_b32_e32 v61, 8, v36
+; GFX11-NEXT:    v_lshrrev_b32_e32 v73, 16, v35
+; GFX11-NEXT:    v_lshrrev_b32_e32 v63, 8, v35
+; GFX11-NEXT:    v_lshrrev_b32_e32 v50, 24, v2
+; GFX11-NEXT:    v_lshrrev_b32_e32 v39, 16, v2
+; GFX11-NEXT:    v_lshrrev_b32_e32 v26, 8, v2
+; GFX11-NEXT:    v_lshrrev_b32_e32 v71, 16, v1
+; GFX11-NEXT:    v_lshrrev_b32_e32 v32, 8, v1
+; GFX11-NEXT:    v_lshrrev_b32_e32 v81, 24, v4
+; GFX11-NEXT:    v_lshrrev_b32_e32 v80, 16, v4
+; GFX11-NEXT:    v_lshrrev_b32_e32 v55, 8, v4
+; GFX11-NEXT:    v_lshrrev_b32_e32 v84, 16, v3
+; GFX11-NEXT:    v_lshrrev_b32_e32 v82, 8, v3
+; GFX11-NEXT:    v_lshrrev_b32_e32 v86, 24, v6
+; GFX11-NEXT:    v_lshrrev_b32_e32 v85, 16, v6
+; GFX11-NEXT:    v_lshrrev_b32_e32 v83, 8, v6
+; GFX11-NEXT:    v_lshrrev_b32_e32 v97, 16, v5
+; GFX11-NEXT:    v_lshrrev_b32_e32 v87, 8, v5
+; GFX11-NEXT:    v_lshrrev_b32_e32 v100, 24, v8
+; GFX11-NEXT:    v_lshrrev_b32_e32 v99, 16, v8
+; GFX11-NEXT:    v_lshrrev_b32_e32 v96, 8, v8
+; GFX11-NEXT:    v_lshrrev_b32_e32 v101, 16, v7
+; GFX11-NEXT:    v_lshrrev_b32_e32 v98, 8, v7
+; GFX11-NEXT:    v_lshrrev_b32_e32 v112, 24, v10
+; GFX11-NEXT:    v_lshrrev_b32_e32 v103, 16, v10
+; GFX11-NEXT:    v_lshrrev_b32_e32 v102, 8, v10
+; GFX11-NEXT:    v_lshrrev_b32_e32 v115, 16, v9
+; GFX11-NEXT:    v_lshrrev_b32_e32 v113, 8, v9
+; GFX11-NEXT:    v_lshrrev_b32_e32 v118, 24, v12
+; GFX11-NEXT:    v_lshrrev_b32_e32 v117, 16, v12
+; GFX11-NEXT:    v_lshrrev_b32_e32 v114, 8, v12
+; GFX11-NEXT:    v_lshrrev_b32_e32 v119, 16, v11
+; GFX11-NEXT:    v_lshrrev_b32_e32 v116, 8, v11
+; GFX11-NEXT:    v_lshrrev_b32_e32 v130, 24, v14
+; GFX11-NEXT:    v_lshrrev_b32_e32 v129, 16, v14
+; GFX11-NEXT:    v_lshrrev_b32_e32 v128, 8, v14
+; GFX11-NEXT:    v_lshrrev_b32_e32 v133, 16, v13
+; GFX11-NEXT:    v_lshrrev_b32_e32 v131, 8, v13
+; GFX11-NEXT:    v_lshrrev_b32_e32 v144, 24, v16
+; GFX11-NEXT:    v_lshrrev_b32_e32 v135, 16, v16
+; GFX11-NEXT:    v_lshrrev_b32_e32 v132, 8, v16
+; GFX11-NEXT:    v_lshrrev_b32_e32 v145, 16, v15
+; GFX11-NEXT:    v_lshrrev_b32_e32 v134, 8, v15
+; GFX11-NEXT:    s_branch .LBB99_6
+; GFX11-NEXT:  .LBB99_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v35, s0 :: v_dual_mov_b32 v36, s1
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 0
 ; GFX11-NEXT:    v_dual_mov_b32 v15, s28 :: v_dual_mov_b32 v16, s29
@@ -206672,47 +207506,47 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_mov_b32_e32 v57, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 8
 ; GFX11-NEXT:    v_dual_mov_b32 v132, s103 :: v_dual_mov_b32 v135, s101
-; GFX11-NEXT:    v_dual_mov_b32 v144, s100 :: v_dual_mov_b32 v131, s99
+; GFX11-NEXT:    v_dual_mov_b32 v144, s99 :: v_dual_mov_b32 v131, s98
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_mov_b32_e32 v58, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 9
-; GFX11-NEXT:    v_dual_mov_b32 v133, s97 :: v_dual_mov_b32 v128, s98
-; GFX11-NEXT:    v_dual_mov_b32 v129, s96 :: v_dual_mov_b32 v130, s87
+; GFX11-NEXT:    v_dual_mov_b32 v133, s96 :: v_dual_mov_b32 v128, s97
+; GFX11-NEXT:    v_dual_mov_b32 v129, s87 :: v_dual_mov_b32 v130, s86
 ; GFX11-NEXT:    v_mov_b32_e32 v59, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 10
-; GFX11-NEXT:    v_dual_mov_b32 v116, s86 :: v_dual_mov_b32 v119, s84
-; GFX11-NEXT:    v_dual_mov_b32 v114, s85 :: v_dual_mov_b32 v117, s83
+; GFX11-NEXT:    v_dual_mov_b32 v116, s85 :: v_dual_mov_b32 v119, s83
+; GFX11-NEXT:    v_dual_mov_b32 v114, s84 :: v_dual_mov_b32 v117, s82
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_mov_b32_e32 v45, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 11
-; GFX11-NEXT:    v_dual_mov_b32 v118, s82 :: v_dual_mov_b32 v113, s81
-; GFX11-NEXT:    v_dual_mov_b32 v115, s71 :: v_dual_mov_b32 v102, s80
+; GFX11-NEXT:    v_dual_mov_b32 v118, s81 :: v_dual_mov_b32 v113, s80
+; GFX11-NEXT:    v_dual_mov_b32 v115, s70 :: v_dual_mov_b32 v102, s71
 ; GFX11-NEXT:    v_mov_b32_e32 v47, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 12
-; GFX11-NEXT:    v_dual_mov_b32 v103, s70 :: v_dual_mov_b32 v112, s69
-; GFX11-NEXT:    v_dual_mov_b32 v98, s68 :: v_dual_mov_b32 v101, s66
+; GFX11-NEXT:    v_dual_mov_b32 v103, s69 :: v_dual_mov_b32 v112, s68
+; GFX11-NEXT:    v_dual_mov_b32 v98, s67 :: v_dual_mov_b32 v101, s65
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_mov_b32_e32 v40, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 13
-; GFX11-NEXT:    v_dual_mov_b32 v96, s67 :: v_dual_mov_b32 v99, s65
-; GFX11-NEXT:    v_dual_mov_b32 v100, s64 :: v_dual_mov_b32 v87, s55
+; GFX11-NEXT:    v_dual_mov_b32 v96, s66 :: v_dual_mov_b32 v99, s64
+; GFX11-NEXT:    v_dual_mov_b32 v100, s55 :: v_dual_mov_b32 v87, s54
 ; GFX11-NEXT:    v_mov_b32_e32 v44, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 14
-; GFX11-NEXT:    v_dual_mov_b32 v97, s53 :: v_dual_mov_b32 v86, s51
-; GFX11-NEXT:    v_dual_mov_b32 v83, s54 :: v_dual_mov_b32 v82, s50
+; GFX11-NEXT:    v_dual_mov_b32 v97, s52 :: v_dual_mov_b32 v86, s50
+; GFX11-NEXT:    v_dual_mov_b32 v83, s53 :: v_dual_mov_b32 v82, s49
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_mov_b32_e32 v46, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 15
-; GFX11-NEXT:    v_dual_mov_b32 v85, s52 :: v_dual_mov_b32 v84, s48
-; GFX11-NEXT:    v_dual_mov_b32 v55, s49 :: v_dual_mov_b32 v80, s39
+; GFX11-NEXT:    v_dual_mov_b32 v85, s51 :: v_dual_mov_b32 v84, s39
+; GFX11-NEXT:    v_dual_mov_b32 v55, s48 :: v_dual_mov_b32 v80, s38
 ; GFX11-NEXT:    v_mov_b32_e32 v182, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 16
-; GFX11-NEXT:    v_dual_mov_b32 v81, s38 :: v_dual_mov_b32 v32, s37
-; GFX11-NEXT:    v_dual_mov_b32 v71, s35 :: v_dual_mov_b32 v26, s36
+; GFX11-NEXT:    v_dual_mov_b32 v81, s37 :: v_dual_mov_b32 v32, s36
+; GFX11-NEXT:    v_dual_mov_b32 v71, s34 :: v_dual_mov_b32 v26, s35
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_mov_b32_e32 v43, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 17
-; GFX11-NEXT:    v_dual_mov_b32 v39, s34 :: v_dual_mov_b32 v50, vcc_hi
+; GFX11-NEXT:    v_dual_mov_b32 v39, s31 :: v_dual_mov_b32 v50, s30
 ; GFX11-NEXT:    v_dual_mov_b32 v51, s72 :: v_dual_mov_b32 v52, s62
 ; GFX11-NEXT:    v_mov_b32_e32 v183, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 18
@@ -206731,7 +207565,7 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_mov_b32_e32 v177, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 21
 ; GFX11-NEXT:    v_mov_b32_e32 v49, s92
-; GFX11-NEXT:    v_mov_b32_e32 v67, s30
+; GFX11-NEXT:    v_mov_b32_e32 v67, vcc_lo
 ; GFX11-NEXT:    v_mov_b32_e32 v181, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v76, 22
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
@@ -206778,7 +207612,7 @@ define inreg <128 x i8> @bitcast_v64i16_to_v128i8_scalar(<64 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_mov_b32_e32 v147, s0
 ; GFX11-NEXT:    v_readlane_b32 s0, v77, 7
 ; GFX11-NEXT:    v_mov_b32_e32 v148, s0
-; GFX11-NEXT:  .LBB99_5: ; %end
+; GFX11-NEXT:  .LBB99_6: ; %end
 ; GFX11-NEXT:    v_perm_b32 v68, v73, v70, 0xc0c0004
 ; GFX11-NEXT:    v_perm_b32 v70, v62, v72, 0xc0c0004
 ; GFX11-NEXT:    v_perm_b32 v69, v60, v69, 0xc0c0004
@@ -210716,7 +211550,7 @@ define inreg <64 x half> @bitcast_v64bf16_to_v64f16_scalar(<64 x bfloat> inreg %
 ; SI-NEXT:    buffer_store_dword v29, off, s[0:3], s32 offset:624 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v32, off, s[0:3], s32 offset:628 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v42, off, s[0:3], s32 offset:632 ; 4-byte Folded Spill
-; SI-NEXT:    s_cbranch_scc0 .LBB101_4
+; SI-NEXT:    s_cbranch_scc0 .LBB101_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_mov_b32_e32 v43, v44
 ; SI-NEXT:    v_mov_b32_e32 v60, v2
@@ -210762,6 +211596,7 @@ define inreg <64 x half> @bitcast_v64bf16_to_v64f16_scalar(<64 x bfloat> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v24, v6
 ; SI-NEXT:    v_and_b32_e32 v54, 0xffff0000, v60
 ; SI-NEXT:    v_and_b32_e32 v44, 0xffff0000, v38
+; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    buffer_store_dword v48, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v49, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
@@ -211101,8 +211936,186 @@ define inreg <64 x half> @bitcast_v64bf16_to_v64f16_scalar(<64 x bfloat> inreg %
 ; SI-NEXT:    v_lshr_b64 v[10:11], v[6:7], 16
 ; SI-NEXT:    v_mov_b32_e32 v11, v40
 ; SI-NEXT:    v_lshr_b64 v[40:41], v[38:39], 16
-; SI-NEXT:    s_cbranch_execnz .LBB101_3
-; SI-NEXT:  .LBB101_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB101_3
+; SI-NEXT:  .LBB101_2:
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:216 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:220 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:208 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v8, off, s[0:3], s32 offset:212 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v4, off, s[0:3], s32 offset:200 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v5, off, s[0:3], s32 offset:204 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v13, off, s[0:3], s32 offset:192 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v14, off, s[0:3], s32 offset:196 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v16, off, s[0:3], s32 offset:184 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v17, off, s[0:3], s32 offset:188 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v19, off, s[0:3], s32 offset:176 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v20, off, s[0:3], s32 offset:180 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:168 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:172 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v35, off, s[0:3], s32 offset:160 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v36, off, s[0:3], s32 offset:164 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v34, off, s[0:3], s32 offset:152 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v35, off, s[0:3], s32 offset:156 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v31, off, s[0:3], s32 offset:144 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v32, off, s[0:3], s32 offset:148 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v28, off, s[0:3], s32 offset:136 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v29, off, s[0:3], s32 offset:140 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v25, off, s[0:3], s32 offset:128 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v26, off, s[0:3], s32 offset:132 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v27, off, s[0:3], s32 offset:120 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v28, off, s[0:3], s32 offset:124 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v30, off, s[0:3], s32 offset:112 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v31, off, s[0:3], s32 offset:116 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v33, off, s[0:3], s32 offset:104 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v34, off, s[0:3], s32 offset:108 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    v_mov_b32_e32 v11, v40
+; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:528 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v25, off, s[0:3], s32 offset:532 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:520 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:524 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:504 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:508 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:488 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v43, off, s[0:3], s32 offset:492 ; 4-byte Folded Reload
+; SI-NEXT:    v_mov_b32_e32 v48, v41
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    v_mov_b32_e32 v14, v61
+; SI-NEXT:    v_mov_b32_e32 v19, v6
+; SI-NEXT:    ; implicit-def: $vgpr26
+; SI-NEXT:    ; implicit-def: $vgpr22
+; SI-NEXT:    ; implicit-def: $vgpr47
+; SI-NEXT:    ; implicit-def: $vgpr55
+; SI-NEXT:    ; implicit-def: $vgpr59
+; SI-NEXT:    ; implicit-def: $vgpr54
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:312 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:316 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr10
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:320 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:324 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr35
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:336 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:340 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:232 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:236 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:328 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:332 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:240 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:244 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:344 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:348 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:248 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:252 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:352 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:356 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:256 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:260 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:360 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:364 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr40
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:368 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:372 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:272 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:276 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr46
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:280 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:284 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr57
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:288 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:292 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr58
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:296 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:300 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr49
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:304 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:308 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr34
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:404 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:408 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:376 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:380 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:384 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:388 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr53
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:224 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:228 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr51
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr8
+; SI-NEXT:    ; implicit-def: $vgpr4
+; SI-NEXT:    ; implicit-def: $vgpr5
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:96 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:100 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:424 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:428 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:432 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:88 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr21
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:436 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:440 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:444 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:412 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:416 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:420 ; 4-byte Folded Spill
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:392 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:396 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:400 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_load_dword v30, off, s[0:3], s32 offset:536 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:540 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt expcnt(2)
+; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:544 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt expcnt(1)
+; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:548 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(14)
+; SI-NEXT:    v_mov_b32_e32 v17, v16
+; SI-NEXT:    s_waitcnt vmcnt(1)
+; SI-NEXT:    v_mov_b32_e32 v60, v0
+; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:512 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:516 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(1)
+; SI-NEXT:    v_mov_b32_e32 v9, v0
+; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:496 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:500 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(1)
+; SI-NEXT:    v_mov_b32_e32 v3, v0
+; SI-NEXT:  .LBB101_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB101_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    buffer_load_dword v15, off, s[0:3], s32 offset:480 ; 4-byte Folded Reload
 ; SI-NEXT:    v_and_b32_e32 v8, 0xffff0000, v17
 ; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:104 ; 4-byte Folded Reload
@@ -211630,7 +212643,7 @@ define inreg <64 x half> @bitcast_v64bf16_to_v64f16_scalar(<64 x bfloat> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v54, v43
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:376 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:380 ; 4-byte Folded Spill
-; SI-NEXT:  .LBB101_3: ; %end
+; SI-NEXT:  .LBB101_5: ; %end
 ; SI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:92 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:96 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:100 ; 4-byte Folded Reload
@@ -211883,179 +212896,6 @@ define inreg <64 x half> @bitcast_v64bf16_to_v64f16_scalar(<64 x bfloat> inreg %
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB101_4:
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:216 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:220 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:208 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v8, off, s[0:3], s32 offset:212 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v4, off, s[0:3], s32 offset:200 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v5, off, s[0:3], s32 offset:204 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v13, off, s[0:3], s32 offset:192 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v14, off, s[0:3], s32 offset:196 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v16, off, s[0:3], s32 offset:184 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v17, off, s[0:3], s32 offset:188 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v19, off, s[0:3], s32 offset:176 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v20, off, s[0:3], s32 offset:180 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 offset:168 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v23, off, s[0:3], s32 offset:172 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v35, off, s[0:3], s32 offset:160 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v36, off, s[0:3], s32 offset:164 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v34, off, s[0:3], s32 offset:152 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v35, off, s[0:3], s32 offset:156 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v31, off, s[0:3], s32 offset:144 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v32, off, s[0:3], s32 offset:148 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v28, off, s[0:3], s32 offset:136 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v29, off, s[0:3], s32 offset:140 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v25, off, s[0:3], s32 offset:128 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v26, off, s[0:3], s32 offset:132 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v27, off, s[0:3], s32 offset:120 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v28, off, s[0:3], s32 offset:124 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v30, off, s[0:3], s32 offset:112 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v31, off, s[0:3], s32 offset:116 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v33, off, s[0:3], s32 offset:104 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v34, off, s[0:3], s32 offset:108 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    v_mov_b32_e32 v11, v40
-; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:528 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v25, off, s[0:3], s32 offset:532 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:520 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:524 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:504 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:508 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:488 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v43, off, s[0:3], s32 offset:492 ; 4-byte Folded Reload
-; SI-NEXT:    v_mov_b32_e32 v48, v41
-; SI-NEXT:    v_mov_b32_e32 v14, v61
-; SI-NEXT:    v_mov_b32_e32 v19, v6
-; SI-NEXT:    ; implicit-def: $vgpr26
-; SI-NEXT:    ; implicit-def: $vgpr22
-; SI-NEXT:    ; implicit-def: $vgpr47
-; SI-NEXT:    ; implicit-def: $vgpr55
-; SI-NEXT:    ; implicit-def: $vgpr59
-; SI-NEXT:    ; implicit-def: $vgpr54
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:312 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:316 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr10
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:320 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:324 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr35
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:336 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:340 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:232 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:236 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:328 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:332 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:240 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:244 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:344 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:348 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:248 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:252 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:352 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:356 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:256 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:260 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:360 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:364 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr40
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:368 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:372 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:272 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:276 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr46
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:280 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:284 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr57
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:288 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:292 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr58
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:296 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:300 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr49
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:304 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:308 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr34
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:404 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:408 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:376 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:380 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:384 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:388 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr53
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:224 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:228 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr51
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr8
-; SI-NEXT:    ; implicit-def: $vgpr4
-; SI-NEXT:    ; implicit-def: $vgpr5
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:96 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:100 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:424 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:428 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:432 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:88 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr21
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:436 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:440 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:444 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:412 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:416 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:420 ; 4-byte Folded Spill
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:392 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:396 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:400 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_load_dword v30, off, s[0:3], s32 offset:536 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:540 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt expcnt(2)
-; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:544 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:548 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(14)
-; SI-NEXT:    v_mov_b32_e32 v17, v16
-; SI-NEXT:    s_waitcnt vmcnt(1)
-; SI-NEXT:    v_mov_b32_e32 v60, v0
-; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:512 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:516 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(1)
-; SI-NEXT:    v_mov_b32_e32 v9, v0
-; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:496 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:500 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(1)
-; SI-NEXT:    v_mov_b32_e32 v3, v0
-; SI-NEXT:    s_branch .LBB101_2
 ;
 ; VI-LABEL: bitcast_v64bf16_to_v64f16_scalar:
 ; VI:       ; %bb.0:
@@ -212093,10 +212933,18 @@ define inreg <64 x half> @bitcast_v64bf16_to_v64f16_scalar(<64 x bfloat> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB101_3
+; VI-NEXT:    s_cbranch_scc0 .LBB101_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB101_4
-; VI-NEXT:  .LBB101_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB101_3
+; VI-NEXT:  .LBB101_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB101_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB101_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v32, 0x40c00000
 ; VI-NEXT:    s_lshl_b32 s4, s48, 16
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v32
@@ -212689,10 +213537,8 @@ define inreg <64 x half> @bitcast_v64bf16_to_v64f16_scalar(<64 x bfloat> inreg %
 ; VI-NEXT:    v_cndmask_b32_e32 v31, v32, v34, vcc
 ; VI-NEXT:    v_lshrrev_b32_e32 v32, 16, v33
 ; VI-NEXT:    v_lshrrev_b64 v[31:32], 16, v[31:32]
-; VI-NEXT:    s_branch .LBB101_5
-; VI-NEXT:  .LBB101_3:
-; VI-NEXT:    s_branch .LBB101_2
-; VI-NEXT:  .LBB101_4:
+; VI-NEXT:    s_branch .LBB101_6
+; VI-NEXT:  .LBB101_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v16, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
@@ -212725,7 +213571,7 @@ define inreg <64 x half> @bitcast_v64bf16_to_v64f16_scalar(<64 x bfloat> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v29, s49
 ; VI-NEXT:    v_mov_b32_e32 v30, s50
 ; VI-NEXT:    v_mov_b32_e32 v31, s51
-; VI-NEXT:  .LBB101_5: ; %end
+; VI-NEXT:  .LBB101_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v35, 8
 ; VI-NEXT:    v_readlane_b32 s31, v35, 9
 ; VI-NEXT:    v_readlane_b32 s51, v35, 7
@@ -212778,10 +213624,18 @@ define inreg <64 x half> @bitcast_v64bf16_to_v64f16_scalar(<64 x bfloat> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB101_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB101_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB101_4
-; GFX9-NEXT:  .LBB101_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB101_3
+; GFX9-NEXT:  .LBB101_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB101_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB101_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v16, 0x40c00000
 ; GFX9-NEXT:    s_and_b32 s4, s50, 0xffff0000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v16
@@ -213392,10 +214246,8 @@ define inreg <64 x half> @bitcast_v64bf16_to_v64f16_scalar(<64 x bfloat> inreg %
 ; GFX9-NEXT:    v_and_b32_sdwa v16, v32, v16 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v32, 16, v33
 ; GFX9-NEXT:    v_lshl_or_b32 v16, v32, 16, v16
-; GFX9-NEXT:    s_branch .LBB101_5
-; GFX9-NEXT:  .LBB101_3:
-; GFX9-NEXT:    s_branch .LBB101_2
-; GFX9-NEXT:  .LBB101_4:
+; GFX9-NEXT:    s_branch .LBB101_6
+; GFX9-NEXT:  .LBB101_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
@@ -213428,7 +214280,7 @@ define inreg <64 x half> @bitcast_v64bf16_to_v64f16_scalar(<64 x bfloat> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s49
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s50
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s51
-; GFX9-NEXT:  .LBB101_5: ; %end
+; GFX9-NEXT:  .LBB101_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v36, 8
 ; GFX9-NEXT:    v_readlane_b32 s31, v36, 9
 ; GFX9-NEXT:    v_readlane_b32 s51, v36, 7
@@ -213482,11 +214334,16 @@ define inreg <64 x half> @bitcast_v64bf16_to_v64f16_scalar(<64 x bfloat> inreg %
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s1
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB101_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB101_4
-; GFX11-TRUE16-NEXT:  .LBB101_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB101_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:  .LBB101_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB101_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s0, s36, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s36, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -214101,8 +214958,6 @@ define inreg <64 x half> @bitcast_v64bf16_to_v64f16_scalar(<64 x bfloat> inreg %
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v15, 16, v84
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v15.h, v87.l
 ; GFX11-TRUE16-NEXT:    s_branch .LBB101_5
-; GFX11-TRUE16-NEXT:  .LBB101_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB101_2
 ; GFX11-TRUE16-NEXT:  .LBB101_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v16, s36 :: v_dual_mov_b32 v17, s37
@@ -214172,11 +215027,16 @@ define inreg <64 x half> @bitcast_v64bf16_to_v64f16_scalar(<64 x bfloat> inreg %
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s1
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB101_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB101_4
-; GFX11-FAKE16-NEXT:  .LBB101_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB101_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:  .LBB101_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB101_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_and_b32 s0, s36, 0xffff0000
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s1, s36, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -214837,8 +215697,6 @@ define inreg <64 x half> @bitcast_v64bf16_to_v64f16_scalar(<64 x bfloat> inreg %
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v17, v32, 16, v39
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v16, v16, 16, v48
 ; GFX11-FAKE16-NEXT:    s_branch .LBB101_5
-; GFX11-FAKE16-NEXT:  .LBB101_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB101_2
 ; GFX11-FAKE16-NEXT:  .LBB101_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v16, s36 :: v_dual_mov_b32 v17, s37
@@ -216283,12 +217141,10 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; SI-NEXT:    s_lshr_b32 s10, s21, 16
 ; SI-NEXT:    v_writelane_b32 v62, s9, 4
 ; SI-NEXT:    s_lshr_b32 s11, s22, 16
-; SI-NEXT:    v_writelane_b32 v62, s10, 5
-; SI-NEXT:    s_lshr_b32 s12, s23, 16
-; SI-NEXT:    v_readfirstlane_b32 s52, v17
-; SI-NEXT:    v_readfirstlane_b32 s48, v16
-; SI-NEXT:    v_readfirstlane_b32 s35, v15
-; SI-NEXT:    v_readfirstlane_b32 s30, v14
+; SI-NEXT:    v_readfirstlane_b32 s50, v17
+; SI-NEXT:    v_readfirstlane_b32 s38, v16
+; SI-NEXT:    v_readfirstlane_b32 s31, v15
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v14
 ; SI-NEXT:    v_readfirstlane_b32 s94, v13
 ; SI-NEXT:    v_readfirstlane_b32 s92, v12
 ; SI-NEXT:    v_readfirstlane_b32 s90, v11
@@ -216303,17 +217159,18 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s56, v2
 ; SI-NEXT:    v_readfirstlane_b32 s46, v1
 ; SI-NEXT:    v_readfirstlane_b32 s44, v0
-; SI-NEXT:    v_writelane_b32 v62, s11, 6
+; SI-NEXT:    v_writelane_b32 v62, s10, 5
 ; SI-NEXT:    s_lshr_b32 s43, s29, 16
 ; SI-NEXT:    s_lshr_b32 s42, s28, 16
 ; SI-NEXT:    s_lshr_b32 s41, s27, 16
 ; SI-NEXT:    s_lshr_b32 s40, s26, 16
 ; SI-NEXT:    s_lshr_b32 s15, s25, 16
-; SI-NEXT:    s_lshr_b32 s13, s24, 16
-; SI-NEXT:    s_lshr_b32 s55, s52, 16
-; SI-NEXT:    s_lshr_b32 s51, s48, 16
-; SI-NEXT:    s_lshr_b32 s38, s35, 16
-; SI-NEXT:    s_lshr_b32 s31, s30, 16
+; SI-NEXT:    s_lshr_b32 s14, s24, 16
+; SI-NEXT:    s_lshr_b32 s12, s23, 16
+; SI-NEXT:    s_lshr_b32 s53, s50, 16
+; SI-NEXT:    s_lshr_b32 s49, s38, 16
+; SI-NEXT:    s_lshr_b32 s36, s31, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, vcc_lo, 16
 ; SI-NEXT:    s_lshr_b32 s95, s94, 16
 ; SI-NEXT:    s_lshr_b32 s93, s92, 16
 ; SI-NEXT:    s_lshr_b32 s91, s90, 16
@@ -216329,108 +217186,205 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; SI-NEXT:    s_lshr_b32 s47, s46, 16
 ; SI-NEXT:    s_lshr_b32 s45, s44, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v62, s12, 7
+; SI-NEXT:    v_writelane_b32 v62, s11, 6
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_writelane_b32 v62, s13, 8
-; SI-NEXT:    s_cbranch_scc0 .LBB103_3
+; SI-NEXT:    v_writelane_b32 v62, s12, 7
+; SI-NEXT:    s_cbranch_scc0 .LBB103_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s4, s16, 16
-; SI-NEXT:    v_writelane_b32 v62, s4, 35
-; SI-NEXT:    s_lshl_b32 s4, s5, 16
-; SI-NEXT:    v_writelane_b32 v62, s4, 34
-; SI-NEXT:    s_lshl_b32 s4, s17, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 33
-; SI-NEXT:    s_lshl_b32 s4, s6, 16
+; SI-NEXT:    s_lshl_b32 s4, s5, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 32
-; SI-NEXT:    s_lshl_b32 s4, s18, 16
+; SI-NEXT:    s_lshl_b32 s4, s17, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 31
-; SI-NEXT:    s_lshl_b32 s4, s7, 16
+; SI-NEXT:    s_lshl_b32 s4, s6, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 30
-; SI-NEXT:    s_lshl_b32 s4, s19, 16
+; SI-NEXT:    s_lshl_b32 s4, s18, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 29
-; SI-NEXT:    s_lshl_b32 s4, s8, 16
+; SI-NEXT:    s_lshl_b32 s4, s7, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 28
-; SI-NEXT:    s_lshl_b32 s4, s20, 16
+; SI-NEXT:    s_lshl_b32 s4, s19, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 27
-; SI-NEXT:    s_lshl_b32 s4, s9, 16
+; SI-NEXT:    s_lshl_b32 s4, s8, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 26
-; SI-NEXT:    s_lshl_b32 s4, s21, 16
+; SI-NEXT:    s_lshl_b32 s4, s20, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 25
-; SI-NEXT:    s_lshl_b32 s4, s10, 16
+; SI-NEXT:    s_lshl_b32 s4, s9, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 24
-; SI-NEXT:    s_lshl_b32 s4, s22, 16
+; SI-NEXT:    s_lshl_b32 s4, s21, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 23
-; SI-NEXT:    s_lshl_b32 s4, s11, 16
+; SI-NEXT:    s_lshl_b32 s4, s10, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 22
-; SI-NEXT:    s_lshl_b32 s4, s23, 16
+; SI-NEXT:    s_lshl_b32 s4, s22, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 21
-; SI-NEXT:    s_lshl_b32 s4, s12, 16
+; SI-NEXT:    s_lshl_b32 s4, s11, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 20
-; SI-NEXT:    s_lshl_b32 s4, s24, 16
+; SI-NEXT:    s_lshl_b32 s4, s23, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 19
-; SI-NEXT:    s_lshl_b32 s4, s13, 16
+; SI-NEXT:    s_lshl_b32 s4, s12, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 18
-; SI-NEXT:    s_lshl_b32 s4, s25, 16
+; SI-NEXT:    s_lshl_b32 s4, s24, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 17
-; SI-NEXT:    s_lshl_b32 s4, s15, 16
+; SI-NEXT:    s_lshl_b32 s4, s14, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 16
-; SI-NEXT:    s_lshl_b32 s4, s26, 16
+; SI-NEXT:    s_lshl_b32 s4, s25, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 15
-; SI-NEXT:    s_lshl_b32 s4, s40, 16
+; SI-NEXT:    s_lshl_b32 s4, s15, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 14
-; SI-NEXT:    s_lshl_b32 s4, s27, 16
+; SI-NEXT:    s_lshl_b32 s4, s26, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 13
-; SI-NEXT:    s_lshl_b32 s4, s41, 16
+; SI-NEXT:    s_lshl_b32 s4, s40, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 12
-; SI-NEXT:    s_lshl_b32 s4, s28, 16
+; SI-NEXT:    s_lshl_b32 s4, s27, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 11
-; SI-NEXT:    s_lshl_b32 s4, s42, 16
+; SI-NEXT:    s_lshl_b32 s4, s41, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 10
-; SI-NEXT:    s_lshl_b32 s4, s29, 16
+; SI-NEXT:    s_lshl_b32 s4, s28, 16
 ; SI-NEXT:    v_writelane_b32 v62, s4, 9
-; SI-NEXT:    s_lshl_b32 s99, s43, 16
-; SI-NEXT:    s_lshl_b32 s34, s44, 16
-; SI-NEXT:    s_lshl_b32 s36, s45, 16
-; SI-NEXT:    s_lshl_b32 s37, s46, 16
-; SI-NEXT:    s_lshl_b32 s39, s47, 16
-; SI-NEXT:    s_lshl_b32 s49, s56, 16
-; SI-NEXT:    s_lshl_b32 s50, s57, 16
-; SI-NEXT:    s_lshl_b32 s53, s58, 16
-; SI-NEXT:    s_lshl_b32 s54, s59, 16
-; SI-NEXT:    s_lshl_b32 s64, s60, 16
-; SI-NEXT:    s_lshl_b32 s65, s61, 16
-; SI-NEXT:    s_lshl_b32 s66, s62, 16
-; SI-NEXT:    s_lshl_b32 s67, s63, 16
-; SI-NEXT:    s_lshl_b32 s6, s72, 16
-; SI-NEXT:    s_lshl_b32 s68, s73, 16
-; SI-NEXT:    s_lshl_b32 s7, s74, 16
-; SI-NEXT:    s_lshl_b32 s69, s75, 16
-; SI-NEXT:    s_lshl_b32 s70, s76, 16
-; SI-NEXT:    s_lshl_b32 s71, s77, 16
-; SI-NEXT:    s_lshl_b32 s8, s78, 16
-; SI-NEXT:    s_lshl_b32 s80, s79, 16
-; SI-NEXT:    s_lshl_b32 s81, s88, 16
-; SI-NEXT:    s_lshl_b32 s9, s89, 16
-; SI-NEXT:    s_lshl_b32 s82, s90, 16
-; SI-NEXT:    s_lshl_b32 s83, s91, 16
-; SI-NEXT:    s_lshl_b32 s10, s92, 16
-; SI-NEXT:    s_lshl_b32 s84, s93, 16
-; SI-NEXT:    s_lshl_b32 s85, s94, 16
-; SI-NEXT:    s_lshl_b32 s11, s95, 16
-; SI-NEXT:    s_lshl_b32 s86, s30, 16
-; SI-NEXT:    s_lshl_b32 s87, s31, 16
-; SI-NEXT:    s_lshl_b32 s12, s35, 16
-; SI-NEXT:    s_lshl_b32 s96, s38, 16
-; SI-NEXT:    s_lshl_b32 s13, s48, 16
-; SI-NEXT:    s_lshl_b32 s97, s51, 16
-; SI-NEXT:    s_lshl_b32 s98, s52, 16
-; SI-NEXT:    s_lshl_b32 s14, s55, 16
-; SI-NEXT:    s_cbranch_execnz .LBB103_4
-; SI-NEXT:  .LBB103_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s55
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s52
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s51
-; SI-NEXT:    v_readlane_b32 s4, v62, 8
+; SI-NEXT:    s_lshl_b32 s4, s42, 16
+; SI-NEXT:    v_writelane_b32 v62, s4, 8
+; SI-NEXT:    s_lshl_b32 s96, s29, 16
+; SI-NEXT:    s_lshl_b32 s97, s43, 16
+; SI-NEXT:    s_lshl_b32 s98, s44, 16
+; SI-NEXT:    s_lshl_b32 s99, s45, 16
+; SI-NEXT:    s_lshl_b32 s30, s46, 16
+; SI-NEXT:    s_lshl_b32 s34, s47, 16
+; SI-NEXT:    s_lshl_b32 s35, s56, 16
+; SI-NEXT:    s_lshl_b32 s37, s57, 16
+; SI-NEXT:    s_lshl_b32 s39, s58, 16
+; SI-NEXT:    s_lshl_b32 s48, s59, 16
+; SI-NEXT:    s_lshl_b32 s51, s60, 16
+; SI-NEXT:    s_lshl_b32 s52, s61, 16
+; SI-NEXT:    s_lshl_b32 s54, s62, 16
+; SI-NEXT:    s_lshl_b32 s55, s63, 16
+; SI-NEXT:    s_lshl_b32 s64, s72, 16
+; SI-NEXT:    s_lshl_b32 s65, s73, 16
+; SI-NEXT:    s_lshl_b32 s6, s74, 16
+; SI-NEXT:    s_lshl_b32 s66, s75, 16
+; SI-NEXT:    s_lshl_b32 s7, s76, 16
+; SI-NEXT:    s_lshl_b32 s67, s77, 16
+; SI-NEXT:    s_lshl_b32 s68, s78, 16
+; SI-NEXT:    s_lshl_b32 s69, s79, 16
+; SI-NEXT:    s_lshl_b32 s8, s88, 16
+; SI-NEXT:    s_lshl_b32 s70, s89, 16
+; SI-NEXT:    s_lshl_b32 s71, s90, 16
+; SI-NEXT:    s_lshl_b32 s9, s91, 16
+; SI-NEXT:    s_lshl_b32 s80, s92, 16
+; SI-NEXT:    s_lshl_b32 s81, s93, 16
+; SI-NEXT:    s_lshl_b32 s10, s94, 16
+; SI-NEXT:    s_lshl_b32 s82, s95, 16
+; SI-NEXT:    s_lshl_b32 s83, vcc_lo, 16
+; SI-NEXT:    s_lshl_b32 s11, vcc_hi, 16
+; SI-NEXT:    s_lshl_b32 s84, s31, 16
+; SI-NEXT:    s_lshl_b32 s85, s36, 16
+; SI-NEXT:    s_lshl_b32 s12, s38, 16
+; SI-NEXT:    s_lshl_b32 s86, s49, 16
+; SI-NEXT:    s_lshl_b32 s13, s50, 16
+; SI-NEXT:    s_lshl_b32 s87, s53, 16
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB103_3
+; SI-NEXT:  .LBB103_2:
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr96
+; SI-NEXT:    ; implicit-def: $sgpr97
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    ; implicit-def: $sgpr99
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr65
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr70
+; SI-NEXT:    ; implicit-def: $sgpr71
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr80
+; SI-NEXT:    ; implicit-def: $sgpr81
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr82
+; SI-NEXT:    ; implicit-def: $sgpr83
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr84
+; SI-NEXT:    ; implicit-def: $sgpr85
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr86
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr87
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB103_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB103_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s53
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, s50
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s49
+; SI-NEXT:    v_readlane_b32 s4, v62, 7
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -216443,10 +217397,10 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s48
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s38
 ; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s38
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, s36
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
@@ -216455,25 +217409,25 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s31
 ; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, vcc_hi
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
 ; SI-NEXT:    v_cvt_f16_f32_e32 v1, v1
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s30
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, vcc_lo
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s95
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
 ; SI-NEXT:    v_cvt_f16_f32_e32 v1, v1
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s94
 ; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill
@@ -216493,7 +217447,7 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
-; SI-NEXT:    v_cvt_f16_f32_e32 v48, v1
+; SI-NEXT:    v_cvt_f16_f32_e32 v39, v1
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s79
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:108 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
@@ -216525,30 +217479,28 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v54, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s74
-; SI-NEXT:    v_lshlrev_b32_e32 v57, 16, v41
-; SI-NEXT:    v_lshlrev_b32_e32 v41, 16, v48
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
-; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
-; SI-NEXT:    v_cvt_f16_f32_e32 v40, v0
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s72
 ; SI-NEXT:    v_cvt_f16_f32_e32 v43, v1
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s61
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
-; SI-NEXT:    v_cvt_f16_f32_e32 v42, v0
+; SI-NEXT:    v_cvt_f16_f32_e32 v40, v0
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s72
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
 ; SI-NEXT:    v_cvt_f16_f32_e32 v45, v1
+; SI-NEXT:    v_lshlrev_b32_e32 v57, 16, v41
+; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
+; SI-NEXT:    v_cvt_f16_f32_e32 v42, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s62
-; SI-NEXT:    v_lshlrev_b32_e32 v56, 16, v42
-; SI-NEXT:    v_lshlrev_b32_e32 v42, 16, v52
 ; SI-NEXT:    v_lshlrev_b32_e32 v61, 16, v45
 ; SI-NEXT:    v_lshlrev_b32_e32 v45, 16, v53
-; SI-NEXT:    v_lshlrev_b32_e32 v53, 16, v51
+; SI-NEXT:    v_lshlrev_b32_e32 v56, 16, v42
+; SI-NEXT:    v_lshlrev_b32_e32 v42, 16, v52
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v44, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s60
+; SI-NEXT:    v_lshlrev_b32_e32 v53, 16, v51
+; SI-NEXT:    v_lshlrev_b32_e32 v41, 16, v39
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s59
-; SI-NEXT:    v_lshlrev_b32_e32 v59, 16, v43
-; SI-NEXT:    v_lshlrev_b32_e32 v58, 16, v44
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v46, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s58
@@ -216596,24 +217548,23 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s40
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v22, v0
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_lshlrev_b32_e32 v52, 16, v7
-; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:100 ; 4-byte Folded Reload
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s26
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
 ; SI-NEXT:    v_cvt_f16_f32_e32 v21, v1
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_lshlrev_b32_e32 v52, 16, v7
+; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:100 ; 4-byte Folded Reload
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s15
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v20, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s25
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
 ; SI-NEXT:    v_cvt_f16_f32_e32 v19, v1
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s4
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, s14
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v18, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s24
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
-; SI-NEXT:    v_readlane_b32 s4, v62, 7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v17, v1
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s4
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
@@ -216667,24 +217618,24 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
-; SI-NEXT:    v_cvt_f16_f32_e32 v39, v1
+; SI-NEXT:    v_cvt_f16_f32_e32 v48, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v50
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
-; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v39
+; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v48
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
-; SI-NEXT:    v_lshlrev_b32_e32 v39, 16, v38
+; SI-NEXT:    v_lshlrev_b32_e32 v48, 16, v38
 ; SI-NEXT:    v_lshlrev_b32_e32 v38, 16, v37
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_lshlrev_b32_e32 v48, 16, v7
-; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:92 ; 4-byte Folded Reload
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
 ; SI-NEXT:    v_lshlrev_b32_e32 v12, 16, v12
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_lshlrev_b32_e32 v49, 16, v7
+; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:92 ; 4-byte Folded Reload
 ; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
 ; SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; SI-NEXT:    v_lshlrev_b32_e32 v50, 16, v36
@@ -216707,19 +217658,21 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; SI-NEXT:    v_lshlrev_b32_e32 v33, 16, v33
 ; SI-NEXT:    v_lshlrev_b32_e32 v36, 16, v34
 ; SI-NEXT:    v_lshlrev_b32_e32 v37, 16, v35
+; SI-NEXT:    v_lshlrev_b32_e32 v58, 16, v44
+; SI-NEXT:    v_lshlrev_b32_e32 v59, 16, v43
 ; SI-NEXT:    v_lshlrev_b32_e32 v44, 16, v54
 ; SI-NEXT:    v_lshlrev_b32_e32 v43, 16, v16
 ; SI-NEXT:    v_lshlrev_b32_e32 v54, 16, v8
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_lshlrev_b32_e32 v51, 16, v7
+; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:84 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_lshlrev_b32_e32 v39, 16, v7
 ; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; SI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:84 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_lshlrev_b32_e32 v49, 16, v7
 ; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:72 ; 4-byte Folded Reload
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
@@ -216749,214 +217702,120 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; SI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
-; SI-NEXT:    s_branch .LBB103_5
-; SI-NEXT:  .LBB103_3:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr99
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr67
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr69
-; SI-NEXT:    ; implicit-def: $sgpr70
-; SI-NEXT:    ; implicit-def: $sgpr71
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr80
-; SI-NEXT:    ; implicit-def: $sgpr81
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr82
-; SI-NEXT:    ; implicit-def: $sgpr83
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    ; implicit-def: $sgpr85
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr86
-; SI-NEXT:    ; implicit-def: $sgpr87
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr96
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr97
-; SI-NEXT:    ; implicit-def: $sgpr98
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB103_2
-; SI-NEXT:  .LBB103_4:
+; SI-NEXT:    s_branch .LBB103_6
+; SI-NEXT:  .LBB103_5:
+; SI-NEXT:    v_readlane_b32 s4, v62, 8
+; SI-NEXT:    v_mov_b32_e32 v25, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 9
-; SI-NEXT:    v_mov_b32_e32 v26, s4
+; SI-NEXT:    v_mov_b32_e32 v24, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 10
-; SI-NEXT:    v_mov_b32_e32 v25, s4
+; SI-NEXT:    v_mov_b32_e32 v23, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 11
-; SI-NEXT:    v_mov_b32_e32 v24, s4
+; SI-NEXT:    v_mov_b32_e32 v22, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 12
-; SI-NEXT:    v_mov_b32_e32 v23, s4
+; SI-NEXT:    v_mov_b32_e32 v21, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 13
-; SI-NEXT:    v_mov_b32_e32 v22, s4
+; SI-NEXT:    v_mov_b32_e32 v20, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 14
-; SI-NEXT:    v_mov_b32_e32 v21, s4
+; SI-NEXT:    v_mov_b32_e32 v19, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 15
-; SI-NEXT:    v_mov_b32_e32 v20, s4
+; SI-NEXT:    v_mov_b32_e32 v18, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 16
-; SI-NEXT:    v_mov_b32_e32 v19, s4
+; SI-NEXT:    v_mov_b32_e32 v17, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 17
-; SI-NEXT:    v_mov_b32_e32 v18, s4
+; SI-NEXT:    v_mov_b32_e32 v50, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 18
-; SI-NEXT:    v_mov_b32_e32 v17, s4
+; SI-NEXT:    v_mov_b32_e32 v15, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 19
-; SI-NEXT:    v_mov_b32_e32 v50, s4
+; SI-NEXT:    v_mov_b32_e32 v14, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 20
-; SI-NEXT:    v_mov_b32_e32 v15, s4
+; SI-NEXT:    v_mov_b32_e32 v13, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 21
-; SI-NEXT:    v_mov_b32_e32 v14, s4
+; SI-NEXT:    v_mov_b32_e32 v12, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 22
-; SI-NEXT:    v_mov_b32_e32 v13, s4
+; SI-NEXT:    v_mov_b32_e32 v11, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 23
-; SI-NEXT:    v_mov_b32_e32 v12, s4
+; SI-NEXT:    v_mov_b32_e32 v10, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 24
-; SI-NEXT:    v_mov_b32_e32 v11, s4
+; SI-NEXT:    v_mov_b32_e32 v9, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 25
-; SI-NEXT:    v_mov_b32_e32 v10, s4
+; SI-NEXT:    v_mov_b32_e32 v38, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 26
-; SI-NEXT:    v_mov_b32_e32 v9, s4
+; SI-NEXT:    v_mov_b32_e32 v0, s87
+; SI-NEXT:    v_mov_b32_e32 v48, s4
 ; SI-NEXT:    v_readlane_b32 s4, v62, 27
-; SI-NEXT:    v_mov_b32_e32 v38, s4
-; SI-NEXT:    v_readlane_b32 s4, v62, 28
-; SI-NEXT:    v_mov_b32_e32 v0, s14
-; SI-NEXT:    v_mov_b32_e32 v39, s4
-; SI-NEXT:    v_readlane_b32 s4, v62, 29
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v0, s98
+; SI-NEXT:    v_mov_b32_e32 v0, s13
 ; SI-NEXT:    v_mov_b32_e32 v6, s4
-; SI-NEXT:    v_readlane_b32 s4, v62, 30
+; SI-NEXT:    v_readlane_b32 s4, v62, 28
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v0, s97
+; SI-NEXT:    v_mov_b32_e32 v0, s86
 ; SI-NEXT:    v_mov_b32_e32 v5, s4
-; SI-NEXT:    v_readlane_b32 s4, v62, 31
+; SI-NEXT:    v_readlane_b32 s4, v62, 29
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v0, s13
+; SI-NEXT:    v_mov_b32_e32 v0, s12
 ; SI-NEXT:    v_mov_b32_e32 v4, s4
-; SI-NEXT:    v_readlane_b32 s4, v62, 32
+; SI-NEXT:    v_readlane_b32 s4, v62, 30
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v0, s96
+; SI-NEXT:    v_mov_b32_e32 v0, s85
 ; SI-NEXT:    v_mov_b32_e32 v3, s4
-; SI-NEXT:    v_readlane_b32 s4, v62, 33
+; SI-NEXT:    v_readlane_b32 s4, v62, 31
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v0, s12
+; SI-NEXT:    v_mov_b32_e32 v0, s84
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
-; SI-NEXT:    v_readlane_b32 s4, v62, 34
+; SI-NEXT:    v_readlane_b32 s4, v62, 32
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v0, s86
+; SI-NEXT:    v_mov_b32_e32 v0, s11
 ; SI-NEXT:    v_mov_b32_e32 v1, s4
-; SI-NEXT:    v_readlane_b32 s4, v62, 35
-; SI-NEXT:    v_mov_b32_e32 v49, s87
+; SI-NEXT:    v_readlane_b32 s4, v62, 33
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
-; SI-NEXT:    v_mov_b32_e32 v51, s11
-; SI-NEXT:    v_mov_b32_e32 v48, s85
-; SI-NEXT:    v_mov_b32_e32 v53, s84
-; SI-NEXT:    v_mov_b32_e32 v52, s10
-; SI-NEXT:    v_mov_b32_e32 v55, s83
-; SI-NEXT:    v_mov_b32_e32 v54, s82
-; SI-NEXT:    v_mov_b32_e32 v41, s9
-; SI-NEXT:    v_mov_b32_e32 v40, s81
-; SI-NEXT:    v_mov_b32_e32 v43, s80
-; SI-NEXT:    v_mov_b32_e32 v42, s8
-; SI-NEXT:    v_mov_b32_e32 v45, s71
-; SI-NEXT:    v_mov_b32_e32 v44, s70
-; SI-NEXT:    v_mov_b32_e32 v47, s69
-; SI-NEXT:    v_mov_b32_e32 v46, s7
-; SI-NEXT:    v_mov_b32_e32 v57, s68
-; SI-NEXT:    v_mov_b32_e32 v56, s6
-; SI-NEXT:    v_mov_b32_e32 v59, s67
-; SI-NEXT:    v_mov_b32_e32 v58, s66
-; SI-NEXT:    v_mov_b32_e32 v61, s65
-; SI-NEXT:    v_mov_b32_e32 v60, s64
-; SI-NEXT:    v_mov_b32_e32 v37, s54
-; SI-NEXT:    v_mov_b32_e32 v36, s53
-; SI-NEXT:    v_mov_b32_e32 v33, s50
-; SI-NEXT:    v_mov_b32_e32 v32, s49
-; SI-NEXT:    v_mov_b32_e32 v31, s39
-; SI-NEXT:    v_mov_b32_e32 v30, s37
-; SI-NEXT:    v_mov_b32_e32 v29, s36
-; SI-NEXT:    v_mov_b32_e32 v28, s34
-; SI-NEXT:    v_mov_b32_e32 v27, s99
+; SI-NEXT:    v_mov_b32_e32 v39, s83
+; SI-NEXT:    v_mov_b32_e32 v51, s82
+; SI-NEXT:    v_mov_b32_e32 v49, s10
+; SI-NEXT:    v_mov_b32_e32 v53, s81
+; SI-NEXT:    v_mov_b32_e32 v52, s80
+; SI-NEXT:    v_mov_b32_e32 v55, s9
+; SI-NEXT:    v_mov_b32_e32 v54, s71
+; SI-NEXT:    v_mov_b32_e32 v41, s70
+; SI-NEXT:    v_mov_b32_e32 v40, s8
+; SI-NEXT:    v_mov_b32_e32 v43, s69
+; SI-NEXT:    v_mov_b32_e32 v42, s68
+; SI-NEXT:    v_mov_b32_e32 v45, s67
+; SI-NEXT:    v_mov_b32_e32 v44, s7
+; SI-NEXT:    v_mov_b32_e32 v47, s66
+; SI-NEXT:    v_mov_b32_e32 v46, s6
+; SI-NEXT:    v_mov_b32_e32 v57, s65
+; SI-NEXT:    v_mov_b32_e32 v56, s64
+; SI-NEXT:    v_mov_b32_e32 v59, s55
+; SI-NEXT:    v_mov_b32_e32 v58, s54
+; SI-NEXT:    v_mov_b32_e32 v61, s52
+; SI-NEXT:    v_mov_b32_e32 v60, s51
+; SI-NEXT:    v_mov_b32_e32 v37, s48
+; SI-NEXT:    v_mov_b32_e32 v36, s39
+; SI-NEXT:    v_mov_b32_e32 v33, s37
+; SI-NEXT:    v_mov_b32_e32 v32, s35
+; SI-NEXT:    v_mov_b32_e32 v31, s34
+; SI-NEXT:    v_mov_b32_e32 v30, s30
+; SI-NEXT:    v_mov_b32_e32 v29, s99
+; SI-NEXT:    v_mov_b32_e32 v28, s98
+; SI-NEXT:    v_mov_b32_e32 v27, s97
+; SI-NEXT:    v_mov_b32_e32 v26, s96
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
-; SI-NEXT:  .LBB103_5: ; %end
+; SI-NEXT:  .LBB103_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v34, 1.0, v0
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v0
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v5
 ; SI-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v0
-; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v39
+; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v48
 ; SI-NEXT:    v_lshrrev_b32_e32 v35, 16, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v6
@@ -217024,11 +217883,10 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; SI-NEXT:    v_lshrrev_b32_e32 v53, 16, v0
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v51
 ; SI-NEXT:    v_lshrrev_b32_e32 v51, 16, v0
-; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v49
-; SI-NEXT:    v_lshrrev_b32_e32 v49, 16, v0
 ; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
 ; SI-NEXT:    v_mul_f32_e32 v9, 1.0, v50
-; SI-NEXT:    v_mul_f32_e32 v50, 1.0, v48
+; SI-NEXT:    v_mul_f32_e32 v50, 1.0, v49
+; SI-NEXT:    v_mul_f32_e32 v48, 1.0, v39
 ; SI-NEXT:    v_mul_f32_e32 v2, 1.0, v2
 ; SI-NEXT:    v_mul_f32_e32 v7, 1.0, v4
 ; SI-NEXT:    v_lshr_b64 v[33:34], v[34:35], 16
@@ -217090,7 +217948,8 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; SI-NEXT:    v_readlane_b32 s35, v63, 1
 ; SI-NEXT:    v_readlane_b32 s34, v63, 0
 ; SI-NEXT:    s_waitcnt vmcnt(2)
-; SI-NEXT:    v_mul_f32_e32 v48, 1.0, v0
+; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
+; SI-NEXT:    v_lshrrev_b32_e32 v49, 16, v0
 ; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:76 ; 4-byte Folded Reload
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
@@ -217208,10 +218067,18 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB103_3
+; VI-NEXT:    s_cbranch_scc0 .LBB103_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB103_4
-; VI-NEXT:  .LBB103_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB103_3
+; VI-NEXT:  .LBB103_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB103_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB103_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s50, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    s_lshr_b32 s4, s30, 16
@@ -217373,10 +218240,8 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; VI-NEXT:    v_add_f16_sdwa v32, v32, v16 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v16, s36, v16
 ; VI-NEXT:    v_or_b32_e32 v16, v16, v32
-; VI-NEXT:    s_branch .LBB103_5
-; VI-NEXT:  .LBB103_3:
-; VI-NEXT:    s_branch .LBB103_2
-; VI-NEXT:  .LBB103_4:
+; VI-NEXT:    s_branch .LBB103_6
+; VI-NEXT:  .LBB103_5:
 ; VI-NEXT:    v_mov_b32_e32 v16, s36
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v17, s37
@@ -217409,7 +218274,7 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB103_5: ; %end
+; VI-NEXT:  .LBB103_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v33, 8
 ; VI-NEXT:    v_readlane_b32 s31, v33, 9
 ; VI-NEXT:    v_readlane_b32 s51, v33, 7
@@ -217462,10 +218327,18 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB103_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB103_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB103_4
-; GFX9-NEXT:  .LBB103_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB103_3
+; GFX9-NEXT:  .LBB103_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB103_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB103_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v16, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v15, s31, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v14, s30, v16 op_sel_hi:[1,0]
@@ -217499,10 +218372,8 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; GFX9-NEXT:    v_pk_add_f16 v18, s38, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v17, s37, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v16, s36, v16 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB103_5
-; GFX9-NEXT:  .LBB103_3:
-; GFX9-NEXT:    s_branch .LBB103_2
-; GFX9-NEXT:  .LBB103_4:
+; GFX9-NEXT:    s_branch .LBB103_6
+; GFX9-NEXT:  .LBB103_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s37
@@ -217535,7 +218406,7 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB103_5: ; %end
+; GFX9-NEXT:  .LBB103_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s31, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -217589,11 +218460,16 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; GFX11-NEXT:    s_mov_b32 s13, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB103_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB103_4
-; GFX11-NEXT:  .LBB103_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB103_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB103_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB103_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v15, 0x200, s27 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v14, 0x200, s26 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s25 op_sel_hi:[0,1]
@@ -217627,8 +218503,6 @@ define inreg <64 x bfloat> @bitcast_v64f16_to_v64bf16_scalar(<64 x half> inreg %
 ; GFX11-NEXT:    v_pk_add_f16 v17, 0x200, s37 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v16, 0x200, s36 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_branch .LBB103_5
-; GFX11-NEXT:  .LBB103_3:
-; GFX11-NEXT:    s_branch .LBB103_2
 ; GFX11-NEXT:  .LBB103_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s36 :: v_dual_mov_b32 v17, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
@@ -221560,8 +222434,10 @@ define inreg <64 x i16> @bitcast_v64bf16_to_v64i16_scalar(<64 x bfloat> inreg %a
 ; SI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:328 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:332 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v18, off, s[0:3], s32 offset:336 ; 4-byte Folded Reload
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; SI-NEXT:    s_cbranch_vccnz .LBB105_5
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB105_5
 ; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v62
@@ -222263,10 +223139,18 @@ define inreg <64 x i16> @bitcast_v64bf16_to_v64i16_scalar(<64 x bfloat> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB105_3
+; VI-NEXT:    s_cbranch_scc0 .LBB105_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB105_4
-; VI-NEXT:  .LBB105_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB105_3
+; VI-NEXT:  .LBB105_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB105_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB105_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v32, 0x40c00000
 ; VI-NEXT:    s_lshl_b32 s4, s48, 16
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v32
@@ -222859,10 +223743,8 @@ define inreg <64 x i16> @bitcast_v64bf16_to_v64i16_scalar(<64 x bfloat> inreg %a
 ; VI-NEXT:    v_cndmask_b32_e32 v31, v32, v34, vcc
 ; VI-NEXT:    v_lshrrev_b32_e32 v32, 16, v33
 ; VI-NEXT:    v_lshrrev_b64 v[31:32], 16, v[31:32]
-; VI-NEXT:    s_branch .LBB105_5
-; VI-NEXT:  .LBB105_3:
-; VI-NEXT:    s_branch .LBB105_2
-; VI-NEXT:  .LBB105_4:
+; VI-NEXT:    s_branch .LBB105_6
+; VI-NEXT:  .LBB105_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v16, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
@@ -222895,7 +223777,7 @@ define inreg <64 x i16> @bitcast_v64bf16_to_v64i16_scalar(<64 x bfloat> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v29, s49
 ; VI-NEXT:    v_mov_b32_e32 v30, s50
 ; VI-NEXT:    v_mov_b32_e32 v31, s51
-; VI-NEXT:  .LBB105_5: ; %end
+; VI-NEXT:  .LBB105_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v35, 8
 ; VI-NEXT:    v_readlane_b32 s31, v35, 9
 ; VI-NEXT:    v_readlane_b32 s51, v35, 7
@@ -222948,10 +223830,18 @@ define inreg <64 x i16> @bitcast_v64bf16_to_v64i16_scalar(<64 x bfloat> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB105_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB105_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB105_4
-; GFX9-NEXT:  .LBB105_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB105_3
+; GFX9-NEXT:  .LBB105_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB105_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB105_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v16, 0x40c00000
 ; GFX9-NEXT:    s_and_b32 s4, s50, 0xffff0000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v16
@@ -223530,10 +224420,8 @@ define inreg <64 x i16> @bitcast_v64bf16_to_v64i16_scalar(<64 x bfloat> inreg %a
 ; GFX9-NEXT:    v_cndmask_b32_e32 v16, v34, v35, vcc
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v16, 16, v16
 ; GFX9-NEXT:    v_and_or_b32 v16, v33, v32, v16
-; GFX9-NEXT:    s_branch .LBB105_5
-; GFX9-NEXT:  .LBB105_3:
-; GFX9-NEXT:    s_branch .LBB105_2
-; GFX9-NEXT:  .LBB105_4:
+; GFX9-NEXT:    s_branch .LBB105_6
+; GFX9-NEXT:  .LBB105_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
@@ -223566,7 +224454,7 @@ define inreg <64 x i16> @bitcast_v64bf16_to_v64i16_scalar(<64 x bfloat> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s49
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s50
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s51
-; GFX9-NEXT:  .LBB105_5: ; %end
+; GFX9-NEXT:  .LBB105_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v36, 8
 ; GFX9-NEXT:    v_readlane_b32 s31, v36, 9
 ; GFX9-NEXT:    v_readlane_b32 s51, v36, 7
@@ -223620,11 +224508,16 @@ define inreg <64 x i16> @bitcast_v64bf16_to_v64i16_scalar(<64 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s1
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB105_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB105_4
-; GFX11-TRUE16-NEXT:  .LBB105_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB105_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:  .LBB105_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB105_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s0, s36, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s36, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -224164,8 +225057,6 @@ define inreg <64 x i16> @bitcast_v64bf16_to_v64i16_scalar(<64 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v18.l, v34.h
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v17.l, v33.h
 ; GFX11-TRUE16-NEXT:    s_branch .LBB105_5
-; GFX11-TRUE16-NEXT:  .LBB105_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB105_2
 ; GFX11-TRUE16-NEXT:  .LBB105_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v16, s36 :: v_dual_mov_b32 v17, s37
@@ -224235,11 +225126,16 @@ define inreg <64 x i16> @bitcast_v64bf16_to_v64i16_scalar(<64 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s1
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB105_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB105_4
-; GFX11-FAKE16-NEXT:  .LBB105_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB105_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:  .LBB105_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB105_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s1, s36, 16
 ; GFX11-FAKE16-NEXT:    s_and_b32 s0, s36, 0xffff0000
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s1
@@ -224825,8 +225721,6 @@ define inreg <64 x i16> @bitcast_v64bf16_to_v64i16_scalar(<64 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    v_and_or_b32 v17, 0xffff0000, v32, v39
 ; GFX11-FAKE16-NEXT:    v_and_or_b32 v16, 0xffff0000, v16, v48
 ; GFX11-FAKE16-NEXT:    s_branch .LBB105_5
-; GFX11-FAKE16-NEXT:  .LBB105_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB105_2
 ; GFX11-FAKE16-NEXT:  .LBB105_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v16, s36 :: v_dual_mov_b32 v17, s37
@@ -225903,13 +226797,13 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; SI-NEXT:    v_writelane_b32 v33, s31, 35
 ; SI-NEXT:    s_lshr_b32 s5, s16, 16
 ; SI-NEXT:    ; implicit-def: $vgpr34 : SGPR spill to VGPR lane
-; SI-NEXT:    s_lshr_b32 s6, s17, 16
+; SI-NEXT:    s_lshr_b32 s88, s17, 16
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_writelane_b32 v34, s5, 0
-; SI-NEXT:    s_lshr_b32 s8, s18, 16
-; SI-NEXT:    v_writelane_b32 v34, s6, 1
+; SI-NEXT:    s_lshr_b32 s89, s18, 16
+; SI-NEXT:    v_writelane_b32 v34, s88, 1
 ; SI-NEXT:    s_lshr_b32 s90, s19, 16
-; SI-NEXT:    v_writelane_b32 v34, s8, 2
+; SI-NEXT:    v_writelane_b32 v34, s89, 2
 ; SI-NEXT:    s_lshr_b32 s91, s20, 16
 ; SI-NEXT:    v_writelane_b32 v34, s90, 3
 ; SI-NEXT:    s_lshr_b32 s92, s21, 16
@@ -225927,28 +226821,26 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; SI-NEXT:    s_lshr_b32 s30, s27, 16
 ; SI-NEXT:    v_writelane_b32 v34, vcc_hi, 10
 ; SI-NEXT:    s_lshr_b32 s31, s28, 16
+; SI-NEXT:    v_readfirstlane_b32 s79, v17
+; SI-NEXT:    v_readfirstlane_b32 s77, v16
+; SI-NEXT:    v_readfirstlane_b32 s75, v15
+; SI-NEXT:    v_readfirstlane_b32 s73, v14
+; SI-NEXT:    v_readfirstlane_b32 s63, v13
+; SI-NEXT:    v_readfirstlane_b32 s61, v12
+; SI-NEXT:    v_readfirstlane_b32 s59, v11
+; SI-NEXT:    v_readfirstlane_b32 s57, v10
+; SI-NEXT:    v_readfirstlane_b32 s47, v9
+; SI-NEXT:    v_readfirstlane_b32 s45, v8
+; SI-NEXT:    v_readfirstlane_b32 s43, v7
+; SI-NEXT:    v_readfirstlane_b32 s41, v6
+; SI-NEXT:    v_readfirstlane_b32 s15, v5
+; SI-NEXT:    v_readfirstlane_b32 s13, v4
+; SI-NEXT:    v_readfirstlane_b32 s11, v3
+; SI-NEXT:    v_readfirstlane_b32 s9, v2
+; SI-NEXT:    v_readfirstlane_b32 s7, v1
+; SI-NEXT:    v_readfirstlane_b32 s99, v0
 ; SI-NEXT:    v_writelane_b32 v34, s30, 11
 ; SI-NEXT:    s_lshr_b32 s34, s29, 16
-; SI-NEXT:    v_readfirstlane_b32 s89, v17
-; SI-NEXT:    v_readfirstlane_b32 s79, v16
-; SI-NEXT:    v_readfirstlane_b32 s77, v15
-; SI-NEXT:    v_readfirstlane_b32 s75, v14
-; SI-NEXT:    v_readfirstlane_b32 s73, v13
-; SI-NEXT:    v_readfirstlane_b32 s63, v12
-; SI-NEXT:    v_readfirstlane_b32 s61, v11
-; SI-NEXT:    v_readfirstlane_b32 s59, v10
-; SI-NEXT:    v_readfirstlane_b32 s57, v9
-; SI-NEXT:    v_readfirstlane_b32 s47, v8
-; SI-NEXT:    v_readfirstlane_b32 s45, v7
-; SI-NEXT:    v_readfirstlane_b32 s43, v6
-; SI-NEXT:    v_readfirstlane_b32 s41, v5
-; SI-NEXT:    v_readfirstlane_b32 s15, v4
-; SI-NEXT:    v_readfirstlane_b32 s13, v3
-; SI-NEXT:    v_readfirstlane_b32 s11, v2
-; SI-NEXT:    v_readfirstlane_b32 s9, v1
-; SI-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-NEXT:    v_writelane_b32 v34, s31, 12
-; SI-NEXT:    s_lshr_b32 s88, s89, 16
 ; SI-NEXT:    s_lshr_b32 s78, s79, 16
 ; SI-NEXT:    s_lshr_b32 s76, s77, 16
 ; SI-NEXT:    s_lshr_b32 s74, s75, 16
@@ -225964,128 +226856,126 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; SI-NEXT:    s_lshr_b32 s14, s15, 16
 ; SI-NEXT:    s_lshr_b32 s12, s13, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
-; SI-NEXT:    s_lshr_b32 s36, s9, 16
-; SI-NEXT:    s_lshr_b32 s35, s7, 16
+; SI-NEXT:    s_lshr_b32 s8, s9, 16
+; SI-NEXT:    s_lshr_b32 s6, s7, 16
+; SI-NEXT:    s_lshr_b32 s35, s99, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v34, s34, 13
+; SI-NEXT:    v_writelane_b32 v34, s31, 12
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
+; SI-NEXT:    v_writelane_b32 v34, s34, 13
 ; SI-NEXT:    v_writelane_b32 v34, s35, 14
-; SI-NEXT:    v_writelane_b32 v34, s36, 15
 ; SI-NEXT:    s_cbranch_scc0 .LBB107_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s4, s16, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 17
+; SI-NEXT:    v_writelane_b32 v34, s4, 18
 ; SI-NEXT:    s_lshl_b32 s4, s5, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 16
+; SI-NEXT:    v_writelane_b32 v34, s4, 17
 ; SI-NEXT:    s_lshl_b32 s4, s17, 16
+; SI-NEXT:    v_writelane_b32 v34, s4, 20
+; SI-NEXT:    s_lshl_b32 s4, s88, 16
 ; SI-NEXT:    v_writelane_b32 v34, s4, 19
-; SI-NEXT:    s_lshl_b32 s4, s6, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 18
 ; SI-NEXT:    s_lshl_b32 s4, s18, 16
+; SI-NEXT:    v_writelane_b32 v34, s4, 22
+; SI-NEXT:    s_lshl_b32 s4, s89, 16
 ; SI-NEXT:    v_writelane_b32 v34, s4, 21
-; SI-NEXT:    s_lshl_b32 s4, s8, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 20
 ; SI-NEXT:    s_lshl_b32 s4, s19, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 23
+; SI-NEXT:    v_writelane_b32 v34, s4, 24
 ; SI-NEXT:    s_lshl_b32 s4, s90, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 22
+; SI-NEXT:    v_writelane_b32 v34, s4, 23
 ; SI-NEXT:    s_lshl_b32 s4, s20, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 25
+; SI-NEXT:    v_writelane_b32 v34, s4, 26
 ; SI-NEXT:    s_lshl_b32 s4, s91, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 24
+; SI-NEXT:    v_writelane_b32 v34, s4, 25
 ; SI-NEXT:    s_lshl_b32 s4, s21, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 27
+; SI-NEXT:    v_writelane_b32 v34, s4, 28
 ; SI-NEXT:    s_lshl_b32 s4, s92, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 26
+; SI-NEXT:    v_writelane_b32 v34, s4, 27
 ; SI-NEXT:    s_lshl_b32 s4, s22, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 29
+; SI-NEXT:    v_writelane_b32 v34, s4, 30
 ; SI-NEXT:    s_lshl_b32 s4, s93, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 28
+; SI-NEXT:    v_writelane_b32 v34, s4, 29
 ; SI-NEXT:    s_lshl_b32 s4, s23, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 31
+; SI-NEXT:    v_writelane_b32 v34, s4, 32
 ; SI-NEXT:    s_lshl_b32 s4, s94, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 30
+; SI-NEXT:    v_writelane_b32 v34, s4, 31
 ; SI-NEXT:    s_lshl_b32 s4, s24, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 33
+; SI-NEXT:    v_writelane_b32 v34, s4, 16
 ; SI-NEXT:    s_lshl_b32 s4, s95, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 32
+; SI-NEXT:    v_writelane_b32 v34, s4, 33
 ; SI-NEXT:    s_lshl_b32 s4, s25, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 35
-; SI-NEXT:    s_lshl_b32 s4, vcc_lo, 16
-; SI-NEXT:    v_writelane_b32 v34, s4, 34
-; SI-NEXT:    s_lshl_b32 s99, s26, 16
-; SI-NEXT:    s_lshl_b32 s8, vcc_hi, 16
-; SI-NEXT:    s_lshl_b32 s87, s27, 16
-; SI-NEXT:    s_lshl_b32 s6, s30, 16
-; SI-NEXT:    s_lshl_b32 s85, s28, 16
-; SI-NEXT:    s_lshl_b32 s98, s31, 16
-; SI-NEXT:    s_lshl_b32 s83, s29, 16
-; SI-NEXT:    s_lshl_b32 s97, s34, 16
-; SI-NEXT:    s_lshl_b32 s81, s7, 16
-; SI-NEXT:    s_lshl_b32 s96, s35, 16
-; SI-NEXT:    s_lshl_b32 s71, s9, 16
-; SI-NEXT:    s_lshl_b32 s86, s36, 16
-; SI-NEXT:    s_lshl_b32 s80, s11, 16
-; SI-NEXT:    s_lshl_b32 s84, s10, 16
-; SI-NEXT:    s_lshl_b32 s67, s13, 16
-; SI-NEXT:    s_lshl_b32 s82, s12, 16
-; SI-NEXT:    s_lshl_b32 s65, s15, 16
-; SI-NEXT:    s_lshl_b32 s69, s14, 16
-; SI-NEXT:    s_lshl_b32 s55, s41, 16
-; SI-NEXT:    s_lshl_b32 s70, s40, 16
-; SI-NEXT:    s_lshl_b32 s53, s43, 16
-; SI-NEXT:    s_lshl_b32 s68, s42, 16
-; SI-NEXT:    s_lshl_b32 s51, s45, 16
-; SI-NEXT:    s_lshl_b32 s66, s44, 16
-; SI-NEXT:    s_lshl_b32 s49, s47, 16
-; SI-NEXT:    s_lshl_b32 s64, s46, 16
-; SI-NEXT:    s_lshl_b32 s39, s57, 16
-; SI-NEXT:    s_lshl_b32 s54, s56, 16
-; SI-NEXT:    s_lshl_b32 s37, s59, 16
-; SI-NEXT:    s_lshl_b32 s52, s58, 16
-; SI-NEXT:    s_lshl_b32 s35, s61, 16
-; SI-NEXT:    s_lshl_b32 s50, s60, 16
-; SI-NEXT:    s_lshl_b32 s31, s63, 16
-; SI-NEXT:    s_lshl_b32 s48, s62, 16
-; SI-NEXT:    s_lshl_b32 s95, s73, 16
-; SI-NEXT:    s_lshl_b32 s38, s72, 16
-; SI-NEXT:    s_lshl_b32 s34, s75, 16
-; SI-NEXT:    s_lshl_b32 s36, s74, 16
-; SI-NEXT:    s_lshl_b32 s92, s77, 16
-; SI-NEXT:    s_lshl_b32 s30, s76, 16
-; SI-NEXT:    s_lshl_b32 s93, s79, 16
-; SI-NEXT:    s_lshl_b32 s94, s78, 16
-; SI-NEXT:    s_lshl_b32 s90, s89, 16
-; SI-NEXT:    s_lshl_b32 s91, s88, 16
+; SI-NEXT:    v_writelane_b32 v34, s4, 15
+; SI-NEXT:    s_lshl_b32 s98, vcc_lo, 16
+; SI-NEXT:    s_lshl_b32 s96, s26, 16
+; SI-NEXT:    s_lshl_b32 s97, vcc_hi, 16
+; SI-NEXT:    s_lshl_b32 s85, s27, 16
+; SI-NEXT:    s_lshl_b32 s87, s30, 16
+; SI-NEXT:    s_lshl_b32 s81, s28, 16
+; SI-NEXT:    s_lshl_b32 s86, s31, 16
+; SI-NEXT:    s_lshl_b32 s71, s29, 16
+; SI-NEXT:    s_lshl_b32 s84, s34, 16
+; SI-NEXT:    s_lshl_b32 s69, s99, 16
+; SI-NEXT:    s_lshl_b32 s83, s35, 16
+; SI-NEXT:    s_lshl_b32 s67, s7, 16
+; SI-NEXT:    s_lshl_b32 s82, s6, 16
+; SI-NEXT:    s_lshl_b32 s68, s9, 16
+; SI-NEXT:    s_lshl_b32 s80, s8, 16
+; SI-NEXT:    s_lshl_b32 s55, s11, 16
+; SI-NEXT:    s_lshl_b32 s70, s10, 16
+; SI-NEXT:    s_lshl_b32 s53, s13, 16
+; SI-NEXT:    s_lshl_b32 s65, s12, 16
+; SI-NEXT:    s_lshl_b32 s51, s15, 16
+; SI-NEXT:    s_lshl_b32 s66, s14, 16
+; SI-NEXT:    s_lshl_b32 s49, s41, 16
+; SI-NEXT:    s_lshl_b32 s64, s40, 16
+; SI-NEXT:    s_lshl_b32 s39, s43, 16
+; SI-NEXT:    s_lshl_b32 s54, s42, 16
+; SI-NEXT:    s_lshl_b32 s37, s45, 16
+; SI-NEXT:    s_lshl_b32 s52, s44, 16
+; SI-NEXT:    s_lshl_b32 s35, s47, 16
+; SI-NEXT:    s_lshl_b32 s50, s46, 16
+; SI-NEXT:    s_lshl_b32 s31, s57, 16
+; SI-NEXT:    s_lshl_b32 s48, s56, 16
+; SI-NEXT:    s_lshl_b32 vcc_hi, s59, 16
+; SI-NEXT:    s_lshl_b32 s38, s58, 16
+; SI-NEXT:    s_lshl_b32 s95, s61, 16
+; SI-NEXT:    s_lshl_b32 s36, s60, 16
+; SI-NEXT:    s_lshl_b32 s93, s63, 16
+; SI-NEXT:    s_lshl_b32 s34, s62, 16
+; SI-NEXT:    s_lshl_b32 vcc_lo, s73, 16
+; SI-NEXT:    s_lshl_b32 s30, s72, 16
+; SI-NEXT:    s_lshl_b32 s90, s75, 16
+; SI-NEXT:    s_lshl_b32 s94, s74, 16
+; SI-NEXT:    s_lshl_b32 s91, s77, 16
+; SI-NEXT:    s_lshl_b32 s92, s76, 16
+; SI-NEXT:    s_lshl_b32 s88, s79, 16
+; SI-NEXT:    s_lshl_b32 s89, s78, 16
 ; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    s_branch .LBB107_3
 ; SI-NEXT:  .LBB107_2:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
 ; SI-NEXT:    s_mov_b64 s[4:5], -1
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr99
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr87
-; SI-NEXT:    ; implicit-def: $sgpr85
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
 ; SI-NEXT:    ; implicit-def: $sgpr98
-; SI-NEXT:    ; implicit-def: $sgpr83
+; SI-NEXT:    ; implicit-def: $sgpr96
 ; SI-NEXT:    ; implicit-def: $sgpr97
+; SI-NEXT:    ; implicit-def: $sgpr85
+; SI-NEXT:    ; implicit-def: $sgpr87
 ; SI-NEXT:    ; implicit-def: $sgpr81
-; SI-NEXT:    ; implicit-def: $sgpr96
-; SI-NEXT:    ; implicit-def: $sgpr71
 ; SI-NEXT:    ; implicit-def: $sgpr86
-; SI-NEXT:    ; implicit-def: $sgpr80
+; SI-NEXT:    ; implicit-def: $sgpr71
 ; SI-NEXT:    ; implicit-def: $sgpr84
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr83
 ; SI-NEXT:    ; implicit-def: $sgpr67
 ; SI-NEXT:    ; implicit-def: $sgpr82
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $sgpr80
 ; SI-NEXT:    ; implicit-def: $sgpr55
 ; SI-NEXT:    ; implicit-def: $sgpr70
 ; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $sgpr65
 ; SI-NEXT:    ; implicit-def: $sgpr51
 ; SI-NEXT:    ; implicit-def: $sgpr66
 ; SI-NEXT:    ; implicit-def: $sgpr49
@@ -226098,61 +226988,68 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; SI-NEXT:    ; implicit-def: $sgpr50
 ; SI-NEXT:    ; implicit-def: $sgpr31
 ; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $vcc_hi
 ; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr95
 ; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr30
 ; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr30
 ; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr94
 ; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; kill: killed $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; kill: killed $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr88
 ; SI-NEXT:  .LBB107_3: ; %Flow
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; SI-NEXT:    s_mov_b32 s4, s90
-; SI-NEXT:    s_mov_b32 s5, s93
-; SI-NEXT:    s_mov_b32 s90, s92
-; SI-NEXT:    s_mov_b32 s92, s34
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_mov_b32 s4, s88
+; SI-NEXT:    s_mov_b32 s5, s91
+; SI-NEXT:    s_mov_b32 s88, s90
+; SI-NEXT:    s_mov_b32 s90, vcc_lo
+; SI-NEXT:    s_mov_b32 s91, s93
 ; SI-NEXT:    s_mov_b32 s93, s95
-; SI-NEXT:    s_mov_b32 s95, s31
+; SI-NEXT:    s_mov_b32 s95, vcc_hi
+; SI-NEXT:    s_mov_b32 vcc_lo, s30
+; SI-NEXT:    s_mov_b32 vcc_hi, s31
+; SI-NEXT:    s_mov_b32 s30, s34
 ; SI-NEXT:    s_mov_b32 s31, s35
 ; SI-NEXT:    s_mov_b32 s34, s36
 ; SI-NEXT:    s_mov_b32 s35, s37
@@ -226167,150 +227064,141 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; SI-NEXT:    s_mov_b32 s52, s54
 ; SI-NEXT:    s_mov_b32 s53, s55
 ; SI-NEXT:    s_mov_b32 s54, s64
-; SI-NEXT:    s_mov_b32 s55, s65
+; SI-NEXT:    s_mov_b32 s55, s68
 ; SI-NEXT:    s_mov_b32 s64, s66
-; SI-NEXT:    s_mov_b32 s65, s67
-; SI-NEXT:    s_mov_b32 s66, s68
-; SI-NEXT:    s_mov_b32 s67, s80
-; SI-NEXT:    s_mov_b32 s68, s70
-; SI-NEXT:    s_mov_b32 s70, s82
-; SI-NEXT:    s_mov_b32 s80, s6
-; SI-NEXT:    s_mov_b32 s82, s8
-; SI-NEXT:    s_cbranch_vccnz .LBB107_5
+; SI-NEXT:    s_mov_b32 s66, s70
+; SI-NEXT:    v_readlane_b32 s68, v34, 15
+; SI-NEXT:    v_readlane_b32 s70, v34, 16
+; SI-NEXT:    s_cbranch_scc1 .LBB107_5
 ; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s9, s9, 3
-; SI-NEXT:    v_readlane_b32 s6, v34, 15
 ; SI-NEXT:    s_add_i32 s11, s11, 3
 ; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s8, s6, 16
+; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_add_i32 s7, s7, 3
-; SI-NEXT:    v_readlane_b32 s6, v34, 14
 ; SI-NEXT:    s_add_i32 s13, s13, 3
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
 ; SI-NEXT:    s_lshl_b32 s10, s10, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s9
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_add_i32 s29, s29, 3
-; SI-NEXT:    v_readlane_b32 s9, v34, 13
+; SI-NEXT:    s_add_i32 s99, s99, 3
+; SI-NEXT:    v_readlane_b32 s9, v34, 14
 ; SI-NEXT:    s_add_i32 s15, s15, 3
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s11
 ; SI-NEXT:    s_or_b32 s6, s6, s7
-; SI-NEXT:    s_and_b32 s7, s29, 0xffff
+; SI-NEXT:    s_and_b32 s7, s99, 0xffff
 ; SI-NEXT:    s_lshl_b32 s9, s9, 16
-; SI-NEXT:    s_add_i32 s28, s28, 3
-; SI-NEXT:    v_readlane_b32 s11, v34, 12
+; SI-NEXT:    s_add_i32 s29, s29, 3
+; SI-NEXT:    v_readlane_b32 s11, v34, 13
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s13
 ; SI-NEXT:    s_or_b32 s7, s9, s7
-; SI-NEXT:    s_and_b32 s9, s28, 0xffff
+; SI-NEXT:    s_and_b32 s9, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s11, s11, 16
-; SI-NEXT:    s_add_i32 s27, s27, 3
-; SI-NEXT:    v_readlane_b32 s13, v34, 11
+; SI-NEXT:    s_add_i32 s28, s28, 3
+; SI-NEXT:    v_readlane_b32 s13, v34, 12
 ; SI-NEXT:    s_or_b32 s14, s14, s15
 ; SI-NEXT:    s_or_b32 s9, s11, s9
-; SI-NEXT:    s_and_b32 s11, s27, 0xffff
+; SI-NEXT:    s_and_b32 s11, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s13, s13, 16
-; SI-NEXT:    s_add_i32 s26, s26, 3
-; SI-NEXT:    v_readlane_b32 s15, v34, 10
+; SI-NEXT:    s_add_i32 s27, s27, 3
+; SI-NEXT:    v_readlane_b32 s15, v34, 11
 ; SI-NEXT:    s_or_b32 s11, s13, s11
-; SI-NEXT:    s_and_b32 s13, s26, 0xffff
+; SI-NEXT:    s_and_b32 s13, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s15, s15, 16
-; SI-NEXT:    s_add_i32 s25, s25, 3
+; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_or_b32 s13, s15, s13
-; SI-NEXT:    s_and_b32 s15, s25, 0xffff
-; SI-NEXT:    v_readlane_b32 s25, v34, 9
-; SI-NEXT:    s_lshl_b32 s25, s25, 16
-; SI-NEXT:    s_or_b32 s15, s25, s15
+; SI-NEXT:    s_and_b32 s15, s26, 0xffff
+; SI-NEXT:    v_readlane_b32 s26, v34, 10
+; SI-NEXT:    s_lshl_b32 s26, s26, 16
+; SI-NEXT:    s_or_b32 s15, s26, s15
+; SI-NEXT:    s_add_i32 s25, s25, 3
+; SI-NEXT:    v_readlane_b32 s26, v34, 9
+; SI-NEXT:    s_and_b32 s25, s25, 0xffff
+; SI-NEXT:    s_lshl_b32 s26, s26, 16
+; SI-NEXT:    s_or_b32 s25, s26, s25
 ; SI-NEXT:    s_add_i32 s24, s24, 3
-; SI-NEXT:    v_readlane_b32 s25, v34, 8
+; SI-NEXT:    v_readlane_b32 s26, v34, 8
 ; SI-NEXT:    s_and_b32 s24, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s25, 16
-; SI-NEXT:    s_or_b32 s24, s25, s24
+; SI-NEXT:    s_lshl_b32 s26, s26, 16
+; SI-NEXT:    s_or_b32 s24, s26, s24
 ; SI-NEXT:    s_add_i32 s23, s23, 3
-; SI-NEXT:    v_readlane_b32 s25, v34, 7
+; SI-NEXT:    v_readlane_b32 s26, v34, 7
 ; SI-NEXT:    s_and_b32 s23, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s25, 16
-; SI-NEXT:    s_or_b32 s23, s25, s23
+; SI-NEXT:    s_lshl_b32 s26, s26, 16
+; SI-NEXT:    s_or_b32 s23, s26, s23
 ; SI-NEXT:    s_add_i32 s22, s22, 3
-; SI-NEXT:    v_readlane_b32 s25, v34, 6
+; SI-NEXT:    v_readlane_b32 s26, v34, 6
 ; SI-NEXT:    s_and_b32 s22, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s25, 16
-; SI-NEXT:    s_or_b32 s22, s25, s22
+; SI-NEXT:    s_lshl_b32 s26, s26, 16
+; SI-NEXT:    s_or_b32 s22, s26, s22
 ; SI-NEXT:    s_add_i32 s21, s21, 3
-; SI-NEXT:    v_readlane_b32 s25, v34, 5
+; SI-NEXT:    v_readlane_b32 s26, v34, 5
 ; SI-NEXT:    s_and_b32 s21, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s25, 16
-; SI-NEXT:    s_or_b32 s21, s25, s21
+; SI-NEXT:    s_lshl_b32 s26, s26, 16
+; SI-NEXT:    s_or_b32 s21, s26, s21
 ; SI-NEXT:    s_add_i32 s20, s20, 3
-; SI-NEXT:    v_readlane_b32 s25, v34, 4
+; SI-NEXT:    v_readlane_b32 s26, v34, 4
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s25, 16
-; SI-NEXT:    s_or_b32 s20, s25, s20
+; SI-NEXT:    s_lshl_b32 s26, s26, 16
+; SI-NEXT:    s_or_b32 s20, s26, s20
 ; SI-NEXT:    s_add_i32 s19, s19, 3
-; SI-NEXT:    v_readlane_b32 s25, v34, 3
+; SI-NEXT:    v_readlane_b32 s26, v34, 3
 ; SI-NEXT:    s_and_b32 s19, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s25, 16
-; SI-NEXT:    s_or_b32 s19, s25, s19
+; SI-NEXT:    s_lshl_b32 s26, s26, 16
+; SI-NEXT:    s_or_b32 s19, s26, s19
 ; SI-NEXT:    s_add_i32 s18, s18, 3
-; SI-NEXT:    v_readlane_b32 s25, v34, 2
+; SI-NEXT:    v_readlane_b32 s26, v34, 2
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s25, 16
-; SI-NEXT:    s_or_b32 s18, s25, s18
+; SI-NEXT:    s_lshl_b32 s26, s26, 16
+; SI-NEXT:    s_or_b32 s18, s26, s18
 ; SI-NEXT:    s_add_i32 s17, s17, 3
-; SI-NEXT:    v_readlane_b32 s25, v34, 1
+; SI-NEXT:    v_readlane_b32 s26, v34, 1
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s25, 16
-; SI-NEXT:    s_or_b32 s17, s25, s17
+; SI-NEXT:    s_lshl_b32 s26, s26, 16
+; SI-NEXT:    s_or_b32 s17, s26, s17
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s25, v34, 0
+; SI-NEXT:    v_readlane_b32 s26, v34, 0
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s25, 16
-; SI-NEXT:    s_or_b32 s16, s25, s16
+; SI-NEXT:    s_lshl_b32 s26, s26, 16
+; SI-NEXT:    s_or_b32 s16, s26, s16
 ; SI-NEXT:    s_add_i32 s16, s16, 0x30000
-; SI-NEXT:    s_and_b32 s25, s16, 0xffff0000
+; SI-NEXT:    s_and_b32 s26, s16, 0xffff0000
 ; SI-NEXT:    s_add_i32 s17, s17, 0x30000
-; SI-NEXT:    v_writelane_b32 v34, s25, 16
+; SI-NEXT:    v_writelane_b32 v34, s26, 17
 ; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    v_writelane_b32 v34, s16, 17
+; SI-NEXT:    v_writelane_b32 v34, s16, 18
 ; SI-NEXT:    s_and_b32 s16, s17, 0xffff0000
 ; SI-NEXT:    s_add_i32 s18, s18, 0x30000
-; SI-NEXT:    v_writelane_b32 v34, s16, 18
-; SI-NEXT:    s_lshl_b32 s16, s17, 16
 ; SI-NEXT:    v_writelane_b32 v34, s16, 19
+; SI-NEXT:    s_lshl_b32 s16, s17, 16
+; SI-NEXT:    v_writelane_b32 v34, s16, 20
 ; SI-NEXT:    s_and_b32 s16, s18, 0xffff0000
 ; SI-NEXT:    s_add_i32 s19, s19, 0x30000
-; SI-NEXT:    v_writelane_b32 v34, s16, 20
-; SI-NEXT:    s_lshl_b32 s16, s18, 16
 ; SI-NEXT:    v_writelane_b32 v34, s16, 21
+; SI-NEXT:    s_lshl_b32 s16, s18, 16
+; SI-NEXT:    v_writelane_b32 v34, s16, 22
 ; SI-NEXT:    s_and_b32 s16, s19, 0xffff0000
 ; SI-NEXT:    s_add_i32 s20, s20, 0x30000
-; SI-NEXT:    v_writelane_b32 v34, s16, 22
-; SI-NEXT:    s_lshl_b32 s16, s19, 16
 ; SI-NEXT:    v_writelane_b32 v34, s16, 23
+; SI-NEXT:    s_lshl_b32 s16, s19, 16
+; SI-NEXT:    v_writelane_b32 v34, s16, 24
 ; SI-NEXT:    s_and_b32 s16, s20, 0xffff0000
 ; SI-NEXT:    s_add_i32 s21, s21, 0x30000
-; SI-NEXT:    v_writelane_b32 v34, s16, 24
-; SI-NEXT:    s_lshl_b32 s16, s20, 16
 ; SI-NEXT:    v_writelane_b32 v34, s16, 25
+; SI-NEXT:    s_lshl_b32 s16, s20, 16
+; SI-NEXT:    v_writelane_b32 v34, s16, 26
 ; SI-NEXT:    s_and_b32 s16, s21, 0xffff0000
+; SI-NEXT:    s_add_i32 s79, s79, 3
 ; SI-NEXT:    s_add_i32 s22, s22, 0x30000
-; SI-NEXT:    v_writelane_b32 v34, s16, 26
-; SI-NEXT:    s_lshl_b32 s16, s21, 16
 ; SI-NEXT:    v_writelane_b32 v34, s16, 27
-; SI-NEXT:    s_and_b32 s16, s22, 0xffff0000
-; SI-NEXT:    s_add_i32 s23, s23, 0x30000
-; SI-NEXT:    v_writelane_b32 v34, s16, 28
-; SI-NEXT:    s_lshl_b32 s16, s22, 16
-; SI-NEXT:    s_add_i32 s89, s89, 3
-; SI-NEXT:    v_writelane_b32 v34, s16, 29
-; SI-NEXT:    s_and_b32 s16, s23, 0xffff0000
-; SI-NEXT:    s_and_b32 s4, s89, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s88, 16
-; SI-NEXT:    s_add_i32 s79, s79, 3
+; SI-NEXT:    s_lshl_b32 s16, s21, 16
+; SI-NEXT:    s_and_b32 s4, s79, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s78, 16
 ; SI-NEXT:    s_add_i32 s77, s77, 3
 ; SI-NEXT:    s_add_i32 s75, s75, 3
 ; SI-NEXT:    s_add_i32 s73, s73, 3
@@ -226322,13 +227210,10 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; SI-NEXT:    s_add_i32 s45, s45, 3
 ; SI-NEXT:    s_add_i32 s43, s43, 3
 ; SI-NEXT:    s_add_i32 s41, s41, 3
-; SI-NEXT:    s_add_i32 s24, s24, 0x30000
-; SI-NEXT:    v_writelane_b32 v34, s16, 30
-; SI-NEXT:    s_lshl_b32 s16, s23, 16
+; SI-NEXT:    v_writelane_b32 v34, s16, 28
+; SI-NEXT:    s_and_b32 s16, s22, 0xffff0000
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s5, s79, 0xffff
-; SI-NEXT:    s_lshl_b32 s78, s78, 16
-; SI-NEXT:    s_and_b32 s77, s77, 0xffff
+; SI-NEXT:    s_and_b32 s5, s77, 0xffff
 ; SI-NEXT:    s_lshl_b32 s76, s76, 16
 ; SI-NEXT:    s_and_b32 s75, s75, 0xffff
 ; SI-NEXT:    s_lshl_b32 s74, s74, 16
@@ -226350,10 +227235,10 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; SI-NEXT:    s_lshl_b32 s42, s42, 16
 ; SI-NEXT:    s_and_b32 s41, s41, 0xffff
 ; SI-NEXT:    s_lshl_b32 s40, s40, 16
-; SI-NEXT:    v_writelane_b32 v34, s16, 31
-; SI-NEXT:    s_and_b32 s16, s24, 0xffff0000
-; SI-NEXT:    s_or_b32 s5, s78, s5
-; SI-NEXT:    s_or_b32 s76, s76, s77
+; SI-NEXT:    s_add_i32 s23, s23, 0x30000
+; SI-NEXT:    v_writelane_b32 v34, s16, 29
+; SI-NEXT:    s_lshl_b32 s16, s22, 16
+; SI-NEXT:    s_or_b32 s5, s76, s5
 ; SI-NEXT:    s_or_b32 s74, s74, s75
 ; SI-NEXT:    s_or_b32 s72, s72, s73
 ; SI-NEXT:    s_or_b32 s62, s62, s63
@@ -226364,12 +227249,10 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; SI-NEXT:    s_or_b32 s44, s44, s45
 ; SI-NEXT:    s_or_b32 s42, s42, s43
 ; SI-NEXT:    s_or_b32 s40, s40, s41
-; SI-NEXT:    s_add_i32 s15, s15, 0x30000
-; SI-NEXT:    v_writelane_b32 v34, s16, 32
-; SI-NEXT:    s_lshl_b32 s16, s24, 16
+; SI-NEXT:    v_writelane_b32 v34, s16, 30
+; SI-NEXT:    s_and_b32 s16, s23, 0xffff0000
 ; SI-NEXT:    s_add_i32 s4, s4, 0x30000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x30000
-; SI-NEXT:    s_add_i32 s76, s76, 0x30000
 ; SI-NEXT:    s_add_i32 s74, s74, 0x30000
 ; SI-NEXT:    s_add_i32 s72, s72, 0x30000
 ; SI-NEXT:    s_add_i32 s62, s62, 0x30000
@@ -226389,201 +227272,204 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; SI-NEXT:    s_add_i32 s9, s9, 0x30000
 ; SI-NEXT:    s_add_i32 s11, s11, 0x30000
 ; SI-NEXT:    s_add_i32 s13, s13, 0x30000
-; SI-NEXT:    v_writelane_b32 v34, s16, 33
-; SI-NEXT:    s_and_b32 s16, s15, 0xffff0000
-; SI-NEXT:    v_writelane_b32 v34, s16, 34
-; SI-NEXT:    s_lshl_b32 s15, s15, 16
-; SI-NEXT:    s_and_b32 s82, s13, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s99, s13, 16
-; SI-NEXT:    s_and_b32 s80, s11, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s87, s11, 16
-; SI-NEXT:    s_and_b32 s98, s9, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s85, s9, 16
-; SI-NEXT:    s_and_b32 s97, s7, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s83, s7, 16
-; SI-NEXT:    s_and_b32 s96, s6, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s81, s6, 16
-; SI-NEXT:    s_and_b32 s86, s8, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s71, s8, 16
-; SI-NEXT:    s_and_b32 s84, s10, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s67, s10, 16
-; SI-NEXT:    s_and_b32 s70, s12, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s65, s12, 16
-; SI-NEXT:    s_and_b32 s69, s14, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s55, s14, 16
-; SI-NEXT:    s_and_b32 s68, s40, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s53, s40, 16
-; SI-NEXT:    s_and_b32 s66, s42, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s51, s42, 16
-; SI-NEXT:    s_and_b32 s64, s44, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s49, s44, 16
-; SI-NEXT:    s_and_b32 s54, s46, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s39, s46, 16
-; SI-NEXT:    s_and_b32 s52, s56, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s37, s56, 16
-; SI-NEXT:    s_and_b32 s50, s58, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s35, s58, 16
-; SI-NEXT:    s_and_b32 s48, s60, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s31, s60, 16
-; SI-NEXT:    s_and_b32 s38, s62, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s95, s62, 16
-; SI-NEXT:    s_and_b32 s36, s72, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s93, s72, 16
-; SI-NEXT:    s_and_b32 s34, s74, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s92, s74, 16
-; SI-NEXT:    s_and_b32 s30, s76, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s90, s76, 16
-; SI-NEXT:    s_and_b32 s94, s5, 0xffff0000
+; SI-NEXT:    s_add_i32 s15, s15, 0x30000
+; SI-NEXT:    s_add_i32 s25, s25, 0x30000
+; SI-NEXT:    s_add_i32 s24, s24, 0x30000
+; SI-NEXT:    v_writelane_b32 v34, s16, 31
+; SI-NEXT:    s_lshl_b32 s16, s23, 16
+; SI-NEXT:    v_writelane_b32 v34, s16, 32
+; SI-NEXT:    s_and_b32 s16, s24, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s70, s24, 16
+; SI-NEXT:    s_and_b32 s98, s25, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s68, s25, 16
+; SI-NEXT:    s_and_b32 s97, s15, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s96, s15, 16
+; SI-NEXT:    s_and_b32 s87, s13, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s85, s13, 16
+; SI-NEXT:    s_and_b32 s86, s11, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s81, s11, 16
+; SI-NEXT:    s_and_b32 s84, s9, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s71, s9, 16
+; SI-NEXT:    s_and_b32 s83, s7, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s69, s7, 16
+; SI-NEXT:    s_and_b32 s82, s6, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s67, s6, 16
+; SI-NEXT:    s_and_b32 s80, s8, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s55, s8, 16
+; SI-NEXT:    s_and_b32 s66, s10, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s53, s10, 16
+; SI-NEXT:    s_and_b32 s65, s12, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s51, s12, 16
+; SI-NEXT:    s_and_b32 s64, s14, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s49, s14, 16
+; SI-NEXT:    s_and_b32 s54, s40, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s39, s40, 16
+; SI-NEXT:    s_and_b32 s52, s42, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s37, s42, 16
+; SI-NEXT:    s_and_b32 s50, s44, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s35, s44, 16
+; SI-NEXT:    s_and_b32 s48, s46, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s31, s46, 16
+; SI-NEXT:    s_and_b32 s38, s56, 0xffff0000
+; SI-NEXT:    s_lshl_b32 vcc_hi, s56, 16
+; SI-NEXT:    s_and_b32 s36, s58, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s95, s58, 16
+; SI-NEXT:    s_and_b32 s34, s60, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s93, s60, 16
+; SI-NEXT:    s_and_b32 s30, s62, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s91, s62, 16
+; SI-NEXT:    s_and_b32 vcc_lo, s72, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s90, s72, 16
+; SI-NEXT:    s_and_b32 s94, s74, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s88, s74, 16
+; SI-NEXT:    s_and_b32 s92, s5, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
-; SI-NEXT:    s_and_b32 s91, s4, 0xffff0000
+; SI-NEXT:    s_and_b32 s89, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
-; SI-NEXT:    v_writelane_b32 v34, s15, 35
+; SI-NEXT:    v_writelane_b32 v34, s16, 33
 ; SI-NEXT:  .LBB107_5: ; %end
-; SI-NEXT:    v_readlane_b32 s6, v34, 16
-; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s6
 ; SI-NEXT:    v_readlane_b32 s6, v34, 17
+; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s6
+; SI-NEXT:    v_readlane_b32 s6, v34, 18
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
-; SI-NEXT:    v_readlane_b32 s6, v34, 18
-; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s6
 ; SI-NEXT:    v_readlane_b32 s6, v34, 19
+; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s6
+; SI-NEXT:    v_readlane_b32 s6, v34, 20
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v1
 ; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
-; SI-NEXT:    v_readlane_b32 s6, v34, 20
-; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s6
 ; SI-NEXT:    v_readlane_b32 s6, v34, 21
+; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s6
+; SI-NEXT:    v_readlane_b32 s6, v34, 22
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
 ; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[2:3], 16
-; SI-NEXT:    v_readlane_b32 s6, v34, 22
-; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s6
 ; SI-NEXT:    v_readlane_b32 s6, v34, 23
+; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s6
+; SI-NEXT:    v_readlane_b32 s6, v34, 24
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v3
 ; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
-; SI-NEXT:    v_readlane_b32 s6, v34, 24
-; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s6
 ; SI-NEXT:    v_readlane_b32 s6, v34, 25
+; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s6
+; SI-NEXT:    v_readlane_b32 s6, v34, 26
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v4
 ; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[4:5], v[4:5], 16
-; SI-NEXT:    v_readlane_b32 s6, v34, 26
-; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s6
 ; SI-NEXT:    v_readlane_b32 s6, v34, 27
+; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s6
+; SI-NEXT:    v_readlane_b32 s6, v34, 28
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v5
 ; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[5:6], 16
-; SI-NEXT:    v_readlane_b32 s6, v34, 28
-; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s6
 ; SI-NEXT:    v_readlane_b32 s6, v34, 29
+; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s6
+; SI-NEXT:    v_readlane_b32 s6, v34, 30
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v6
 ; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[6:7], 16
-; SI-NEXT:    v_readlane_b32 s6, v34, 30
-; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s6
 ; SI-NEXT:    v_readlane_b32 s6, v34, 31
+; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s6
+; SI-NEXT:    v_readlane_b32 s6, v34, 32
 ; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v7
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[7:8], 16
-; SI-NEXT:    v_readlane_b32 s6, v34, 32
-; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s6
 ; SI-NEXT:    v_readlane_b32 s6, v34, 33
-; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v8
 ; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s6
+; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v8
+; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s70
 ; SI-NEXT:    v_lshr_b64 v[8:9], v[8:9], 16
-; SI-NEXT:    v_readlane_b32 s6, v34, 34
-; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s6
-; SI-NEXT:    v_readlane_b32 s6, v34, 35
+; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s98
 ; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v9
-; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s6
+; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s68
 ; SI-NEXT:    v_lshr_b64 v[9:10], v[9:10], 16
-; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s82
+; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s97
 ; SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v10
-; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s99
+; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s96
 ; SI-NEXT:    v_lshr_b64 v[10:11], v[10:11], 16
-; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s80
-; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v11
 ; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s87
+; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v11
+; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s85
 ; SI-NEXT:    v_lshr_b64 v[11:12], v[11:12], 16
-; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s98
+; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s86
 ; SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v12
-; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s85
+; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s81
 ; SI-NEXT:    v_lshr_b64 v[12:13], v[12:13], 16
-; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s97
+; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s84
 ; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v13
-; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s83
+; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s71
 ; SI-NEXT:    v_lshr_b64 v[13:14], v[13:14], 16
-; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s96
+; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s83
 ; SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v14
-; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s81
+; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s69
 ; SI-NEXT:    v_lshr_b64 v[14:15], v[14:15], 16
-; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s86
+; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s82
 ; SI-NEXT:    v_lshrrev_b32_e32 v16, 16, v15
-; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s71
+; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s67
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[15:16], 16
-; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s84
+; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s80
 ; SI-NEXT:    v_lshrrev_b32_e32 v17, 16, v16
-; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s67
+; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s55
 ; SI-NEXT:    v_lshr_b64 v[16:17], v[16:17], 16
-; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s70
+; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s66
 ; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v17
-; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s65
+; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s53
 ; SI-NEXT:    v_lshr_b64 v[17:18], v[17:18], 16
-; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s69
+; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s65
 ; SI-NEXT:    v_lshrrev_b32_e32 v19, 16, v18
-; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s55
+; SI-NEXT:    v_mul_f32_e64 v18, 1.0, s51
 ; SI-NEXT:    v_lshr_b64 v[18:19], v[18:19], 16
-; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s68
+; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s64
 ; SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v19
-; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s53
+; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s49
 ; SI-NEXT:    v_lshr_b64 v[19:20], v[19:20], 16
-; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s66
+; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s54
 ; SI-NEXT:    v_lshrrev_b32_e32 v21, 16, v20
-; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s51
+; SI-NEXT:    v_mul_f32_e64 v20, 1.0, s39
 ; SI-NEXT:    v_lshr_b64 v[20:21], v[20:21], 16
-; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s64
+; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s52
 ; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v21
-; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s49
+; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s37
 ; SI-NEXT:    v_lshr_b64 v[21:22], v[21:22], 16
-; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s54
+; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s50
 ; SI-NEXT:    v_lshrrev_b32_e32 v23, 16, v22
-; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s39
+; SI-NEXT:    v_mul_f32_e64 v22, 1.0, s35
 ; SI-NEXT:    v_lshr_b64 v[22:23], v[22:23], 16
-; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s52
+; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s48
 ; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v23
-; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s37
+; SI-NEXT:    v_mul_f32_e64 v23, 1.0, s31
 ; SI-NEXT:    v_lshr_b64 v[23:24], v[23:24], 16
-; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s50
+; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s38
 ; SI-NEXT:    v_lshrrev_b32_e32 v25, 16, v24
-; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s35
+; SI-NEXT:    v_mul_f32_e64 v24, 1.0, vcc_hi
 ; SI-NEXT:    v_lshr_b64 v[24:25], v[24:25], 16
-; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s48
+; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s36
 ; SI-NEXT:    v_lshrrev_b32_e32 v26, 16, v25
-; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s31
+; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s95
 ; SI-NEXT:    v_lshr_b64 v[25:26], v[25:26], 16
-; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s38
+; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s34
 ; SI-NEXT:    v_lshrrev_b32_e32 v27, 16, v26
-; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s95
+; SI-NEXT:    v_mul_f32_e64 v26, 1.0, s93
 ; SI-NEXT:    v_lshr_b64 v[26:27], v[26:27], 16
-; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s36
+; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s30
 ; SI-NEXT:    v_lshrrev_b32_e32 v28, 16, v27
-; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s93
+; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s91
 ; SI-NEXT:    v_lshr_b64 v[27:28], v[27:28], 16
-; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s34
+; SI-NEXT:    v_mul_f32_e64 v28, 1.0, vcc_lo
 ; SI-NEXT:    v_lshrrev_b32_e32 v29, 16, v28
-; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s92
+; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s90
 ; SI-NEXT:    v_lshr_b64 v[28:29], v[28:29], 16
-; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s30
+; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s94
 ; SI-NEXT:    v_lshrrev_b32_e32 v30, 16, v29
-; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s90
+; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s88
 ; SI-NEXT:    v_lshr_b64 v[29:30], v[29:30], 16
-; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s94
+; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s92
 ; SI-NEXT:    v_lshrrev_b32_e32 v31, 16, v30
 ; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s5
 ; SI-NEXT:    v_lshr_b64 v[30:31], v[30:31], 16
-; SI-NEXT:    v_mul_f32_e64 v31, 1.0, s91
+; SI-NEXT:    v_mul_f32_e64 v31, 1.0, s89
 ; SI-NEXT:    v_lshrrev_b32_e32 v32, 16, v31
 ; SI-NEXT:    v_mul_f32_e64 v31, 1.0, s4
 ; SI-NEXT:    v_readlane_b32 s30, v33, 34
@@ -226664,10 +227550,18 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB107_4
+; VI-NEXT:    s_cbranch_scc0 .LBB107_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB107_3
-; VI-NEXT:  .LBB107_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB107_3
+; VI-NEXT:  .LBB107_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB107_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB107_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_and_b32 s4, s47, 0xffff0000
 ; VI-NEXT:    s_add_i32 s5, s47, 3
 ; VI-NEXT:    s_and_b32 s47, s46, 0xffff0000
@@ -226828,7 +227722,7 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; VI-NEXT:    s_add_i32 s45, s45, 0x30000
 ; VI-NEXT:    s_add_i32 s46, s46, 0x30000
 ; VI-NEXT:    s_add_i32 s47, s4, 0x30000
-; VI-NEXT:  .LBB107_3: ; %end
+; VI-NEXT:  .LBB107_5: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 6
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
@@ -226874,8 +227768,6 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB107_4:
-; VI-NEXT:    s_branch .LBB107_2
 ;
 ; GFX9-LABEL: bitcast_v64i16_to_v64bf16_scalar:
 ; GFX9:       ; %bb.0:
@@ -226913,10 +227805,18 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB107_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB107_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB107_4
-; GFX9-NEXT:  .LBB107_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB107_3
+; GFX9-NEXT:  .LBB107_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB107_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB107_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v15, s31, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v14, s30, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v13, s29, 3 op_sel_hi:[1,0]
@@ -226949,10 +227849,8 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; GFX9-NEXT:    v_pk_add_u16 v18, s38, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v17, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v16, s36, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB107_5
-; GFX9-NEXT:  .LBB107_3:
-; GFX9-NEXT:    s_branch .LBB107_2
-; GFX9-NEXT:  .LBB107_4:
+; GFX9-NEXT:    s_branch .LBB107_6
+; GFX9-NEXT:  .LBB107_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s37
@@ -226985,7 +227883,7 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB107_5: ; %end
+; GFX9-NEXT:  .LBB107_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s31, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -227039,11 +227937,16 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; GFX11-NEXT:    s_mov_b32 s13, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB107_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB107_4
-; GFX11-NEXT:  .LBB107_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB107_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB107_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB107_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v15, s27, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v14, s26, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v13, s25, 3 op_sel_hi:[1,0]
@@ -227077,8 +227980,6 @@ define inreg <64 x bfloat> @bitcast_v64i16_to_v64bf16_scalar(<64 x i16> inreg %a
 ; GFX11-NEXT:    v_pk_add_u16 v17, s37, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v16, s36, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_branch .LBB107_5
-; GFX11-NEXT:  .LBB107_3:
-; GFX11-NEXT:    s_branch .LBB107_2
 ; GFX11-NEXT:  .LBB107_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s36 :: v_dual_mov_b32 v17, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
@@ -227868,10 +228769,8 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v63, s35, 1
 ; SI-NEXT:    v_writelane_b32 v63, s36, 2
 ; SI-NEXT:    v_writelane_b32 v63, s37, 3
-; SI-NEXT:    v_writelane_b32 v63, s38, 4
-; SI-NEXT:    v_writelane_b32 v63, s39, 5
-; SI-NEXT:    v_writelane_b32 v63, s30, 6
-; SI-NEXT:    v_writelane_b32 v63, s31, 7
+; SI-NEXT:    v_writelane_b32 v63, s30, 4
+; SI-NEXT:    v_writelane_b32 v63, s31, 5
 ; SI-NEXT:    v_readfirstlane_b32 s10, v17
 ; SI-NEXT:    v_readfirstlane_b32 s6, v16
 ; SI-NEXT:    v_readfirstlane_b32 s11, v15
@@ -227887,23 +228786,23 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s46, v5
 ; SI-NEXT:    v_readfirstlane_b32 s92, v4
 ; SI-NEXT:    v_readfirstlane_b32 s45, v3
-; SI-NEXT:    v_readfirstlane_b32 s30, v2
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v2
 ; SI-NEXT:    v_readfirstlane_b32 s44, v1
-; SI-NEXT:    v_readfirstlane_b32 s35, v0
+; SI-NEXT:    v_readfirstlane_b32 s31, v0
 ; SI-NEXT:    s_lshr_b32 s43, s29, 16
 ; SI-NEXT:    s_lshr_b32 s93, s28, 16
 ; SI-NEXT:    s_lshr_b32 s42, s27, 16
-; SI-NEXT:    s_lshr_b32 s31, s26, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s26, 16
 ; SI-NEXT:    s_lshr_b32 s41, s25, 16
-; SI-NEXT:    s_lshr_b32 s34, s24, 16
+; SI-NEXT:    s_lshr_b32 s30, s24, 16
 ; SI-NEXT:    s_lshr_b32 s40, s23, 16
-; SI-NEXT:    s_lshr_b32 s36, s22, 16
+; SI-NEXT:    s_lshr_b32 s34, s22, 16
 ; SI-NEXT:    s_lshr_b32 s15, s21, 16
-; SI-NEXT:    s_lshr_b32 s37, s20, 16
+; SI-NEXT:    s_lshr_b32 s35, s20, 16
 ; SI-NEXT:    s_lshr_b32 s14, s19, 16
-; SI-NEXT:    s_lshr_b32 s38, s18, 16
+; SI-NEXT:    s_lshr_b32 s36, s18, 16
 ; SI-NEXT:    s_lshr_b32 s13, s17, 16
-; SI-NEXT:    s_lshr_b32 s39, s16, 16
+; SI-NEXT:    s_lshr_b32 s37, s16, 16
 ; SI-NEXT:    s_lshr_b32 s88, s10, 16
 ; SI-NEXT:    s_lshr_b32 s61, s6, 16
 ; SI-NEXT:    s_lshr_b32 s76, s11, 16
@@ -227919,18 +228818,26 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s62, s46, 16
 ; SI-NEXT:    s_lshr_b32 s91, s92, 16
 ; SI-NEXT:    s_lshr_b32 s60, s45, 16
-; SI-NEXT:    s_lshr_b32 s94, s30, 16
+; SI-NEXT:    s_lshr_b32 s94, vcc_lo, 16
 ; SI-NEXT:    s_lshr_b32 s58, s44, 16
-; SI-NEXT:    s_lshr_b32 s95, s35, 16
+; SI-NEXT:    s_lshr_b32 s95, s31, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v18
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB109_3
+; SI-NEXT:    s_cbranch_scc0 .LBB109_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB109_4
-; SI-NEXT:  .LBB109_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s39
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB109_3
+; SI-NEXT:  .LBB109_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB109_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB109_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s37
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s38
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s36
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s18
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
@@ -227938,7 +228845,7 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v1, v1
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v38, 16, v0
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s37
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s35
 ; SI-NEXT:    v_or_b32_e32 v40, v1, v38
 ; SI-NEXT:    v_cvt_f16_f32_e32 v1, v2
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v3
@@ -227950,7 +228857,7 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s20
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v60
 ; SI-NEXT:    v_lshlrev_b32_e32 v56, 16, v0
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s36
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s34
 ; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:112 ; 4-byte Folded Spill
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s22
@@ -227961,14 +228868,14 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_or_b32_e32 v8, v1, v56
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, s30
 ; SI-NEXT:    v_lshlrev_b32_e32 v45, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v45
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s24
 ; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:120 ; 4-byte Folded Spill
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, vcc_hi
 ; SI-NEXT:    v_cvt_f16_f32_e32 v1, v1
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
@@ -227993,7 +228900,7 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v41, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v17, v2, v41
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s94
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s31
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
 ; SI-NEXT:    v_cvt_f16_f32_e32 v1, v1
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
@@ -228001,7 +228908,7 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v52, 16, v1
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, vcc_lo
 ; SI-NEXT:    v_lshlrev_b32_e32 v49, 16, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s91
 ; SI-NEXT:    v_or_b32_e32 v21, v0, v52
@@ -228263,10 +229170,8 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    buffer_store_dword v4, off, s[0:3], s32 offset:88 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v5, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill
 ; SI-NEXT:    v_mov_b32_e32 v50, v7
-; SI-NEXT:    s_branch .LBB109_5
-; SI-NEXT:  .LBB109_3:
-; SI-NEXT:    s_branch .LBB109_2
-; SI-NEXT:  .LBB109_4:
+; SI-NEXT:    s_branch .LBB109_6
+; SI-NEXT:  .LBB109_5:
 ; SI-NEXT:    v_mov_b32_e32 v6, s20
 ; SI-NEXT:    v_mov_b32_e32 v7, s25
 ; SI-NEXT:    buffer_store_dword v6, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
@@ -228302,8 +229207,8 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v24, s12
 ; SI-NEXT:    v_mov_b32_e32 v48, s90
 ; SI-NEXT:    v_mov_b32_e32 v20, s92
-; SI-NEXT:    v_mov_b32_e32 v26, s30
-; SI-NEXT:    v_mov_b32_e32 v17, s35
+; SI-NEXT:    v_mov_b32_e32 v26, vcc_lo
+; SI-NEXT:    v_mov_b32_e32 v17, s31
 ; SI-NEXT:    v_mov_b32_e32 v14, s28
 ; SI-NEXT:    v_mov_b32_e32 v12, s26
 ; SI-NEXT:    v_mov_b32_e32 v10, s24
@@ -228325,12 +229230,12 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s11
 ; SI-NEXT:    v_mov_b32_e32 v31, s10
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v0, s39
-; SI-NEXT:    v_mov_b32_e32 v60, s38
-; SI-NEXT:    v_mov_b32_e32 v61, s37
-; SI-NEXT:    v_mov_b32_e32 v56, s36
-; SI-NEXT:    v_mov_b32_e32 v13, s34
-; SI-NEXT:    v_mov_b32_e32 v44, s31
+; SI-NEXT:    v_mov_b32_e32 v0, s37
+; SI-NEXT:    v_mov_b32_e32 v60, s36
+; SI-NEXT:    v_mov_b32_e32 v61, s35
+; SI-NEXT:    v_mov_b32_e32 v56, s34
+; SI-NEXT:    v_mov_b32_e32 v13, s30
+; SI-NEXT:    v_mov_b32_e32 v44, vcc_hi
 ; SI-NEXT:    v_mov_b32_e32 v42, s93
 ; SI-NEXT:    v_mov_b32_e32 v36, s89
 ; SI-NEXT:    v_mov_b32_e32 v58, s74
@@ -228350,7 +229255,7 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v7, s77
 ; SI-NEXT:    buffer_store_dword v7, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v8, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
-; SI-NEXT:  .LBB109_5: ; %end
+; SI-NEXT:  .LBB109_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
@@ -228394,10 +229299,8 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; SI-NEXT:    v_and_b32_e32 v29, 0xffff, v29
 ; SI-NEXT:    v_lshlrev_b32_e32 v32, 16, v32
 ; SI-NEXT:    v_and_b32_e32 v31, 0xffff, v31
-; SI-NEXT:    v_readlane_b32 s30, v63, 6
-; SI-NEXT:    v_readlane_b32 s31, v63, 7
-; SI-NEXT:    v_readlane_b32 s39, v63, 5
-; SI-NEXT:    v_readlane_b32 s38, v63, 4
+; SI-NEXT:    v_readlane_b32 s30, v63, 4
+; SI-NEXT:    v_readlane_b32 s31, v63, 5
 ; SI-NEXT:    v_readlane_b32 s37, v63, 3
 ; SI-NEXT:    v_readlane_b32 s36, v63, 2
 ; SI-NEXT:    v_readlane_b32 s35, v63, 1
@@ -228535,10 +229438,18 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB109_3
+; VI-NEXT:    s_cbranch_scc0 .LBB109_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB109_4
-; VI-NEXT:  .LBB109_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB109_3
+; VI-NEXT:  .LBB109_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB109_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB109_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s50, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    s_lshr_b32 s4, s30, 16
@@ -228700,10 +229611,8 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v32, v32, v16 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v16, s36, v16
 ; VI-NEXT:    v_or_b32_e32 v16, v16, v32
-; VI-NEXT:    s_branch .LBB109_5
-; VI-NEXT:  .LBB109_3:
-; VI-NEXT:    s_branch .LBB109_2
-; VI-NEXT:  .LBB109_4:
+; VI-NEXT:    s_branch .LBB109_6
+; VI-NEXT:  .LBB109_5:
 ; VI-NEXT:    v_mov_b32_e32 v16, s36
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v17, s37
@@ -228736,7 +229645,7 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB109_5: ; %end
+; VI-NEXT:  .LBB109_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v33, 8
 ; VI-NEXT:    v_readlane_b32 s31, v33, 9
 ; VI-NEXT:    v_readlane_b32 s51, v33, 7
@@ -228789,10 +229698,18 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB109_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB109_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB109_4
-; GFX9-NEXT:  .LBB109_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB109_3
+; GFX9-NEXT:  .LBB109_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB109_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB109_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v16, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v15, s31, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v14, s30, v16 op_sel_hi:[1,0]
@@ -228826,10 +229743,8 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v18, s38, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v17, s37, v16 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v16, s36, v16 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB109_5
-; GFX9-NEXT:  .LBB109_3:
-; GFX9-NEXT:    s_branch .LBB109_2
-; GFX9-NEXT:  .LBB109_4:
+; GFX9-NEXT:    s_branch .LBB109_6
+; GFX9-NEXT:  .LBB109_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s37
@@ -228862,7 +229777,7 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB109_5: ; %end
+; GFX9-NEXT:  .LBB109_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s31, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -228916,11 +229831,16 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s13, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB109_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB109_4
-; GFX11-NEXT:  .LBB109_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB109_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB109_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB109_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v15, 0x200, s27 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v14, 0x200, s26 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s25 op_sel_hi:[0,1]
@@ -228954,8 +229874,6 @@ define inreg <64 x i16> @bitcast_v64f16_to_v64i16_scalar(<64 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v17, 0x200, s37 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v16, 0x200, s36 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_branch .LBB109_5
-; GFX11-NEXT:  .LBB109_3:
-; GFX11-NEXT:    s_branch .LBB109_2
 ; GFX11-NEXT:  .LBB109_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s36 :: v_dual_mov_b32 v17, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
@@ -230234,87 +231152,86 @@ define inreg <64 x half> @bitcast_v64i16_to_v64f16_scalar(<64 x i16> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v32, s99, 33
 ; SI-NEXT:    v_writelane_b32 v32, s30, 34
 ; SI-NEXT:    v_writelane_b32 v32, s31, 35
-; SI-NEXT:    s_lshr_b32 s4, s21, 16
 ; SI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
-; SI-NEXT:    s_lshr_b32 s30, s20, 16
+; SI-NEXT:    s_lshr_b32 s4, s17, 16
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v33, s4, 0
-; SI-NEXT:    v_writelane_b32 v33, s20, 1
-; SI-NEXT:    v_writelane_b32 v33, s19, 2
-; SI-NEXT:    s_lshr_b32 s4, s19, 16
-; SI-NEXT:    v_writelane_b32 v33, s4, 3
-; SI-NEXT:    v_writelane_b32 v33, s18, 4
-; SI-NEXT:    v_writelane_b32 v33, s17, 5
-; SI-NEXT:    v_writelane_b32 v33, s16, 6
-; SI-NEXT:    v_writelane_b32 v33, s22, 7
-; SI-NEXT:    v_writelane_b32 v33, s24, 8
-; SI-NEXT:    s_lshr_b32 s94, s18, 16
-; SI-NEXT:    s_lshr_b32 s34, s17, 16
-; SI-NEXT:    s_lshr_b32 s95, s16, 16
+; SI-NEXT:    v_writelane_b32 v33, s19, 0
+; SI-NEXT:    v_writelane_b32 v33, s4, 1
+; SI-NEXT:    s_mov_b32 s72, s18
+; SI-NEXT:    v_writelane_b32 v33, s16, 2
+; SI-NEXT:    s_mov_b32 s73, s20
+; SI-NEXT:    v_writelane_b32 v33, s72, 3
+; SI-NEXT:    v_writelane_b32 v33, s73, 4
+; SI-NEXT:    v_writelane_b32 v33, s22, 5
+; SI-NEXT:    s_lshr_b32 s90, s20, 16
+; SI-NEXT:    s_lshr_b32 s95, s19, 16
+; SI-NEXT:    s_mov_b32 s93, s17
+; SI-NEXT:    s_lshr_b32 s53, s16, 16
 ; SI-NEXT:    v_readfirstlane_b32 s89, v17
 ; SI-NEXT:    v_readfirstlane_b32 s20, v16
 ; SI-NEXT:    v_readfirstlane_b32 s19, v15
 ; SI-NEXT:    v_readfirstlane_b32 s88, v14
 ; SI-NEXT:    v_readfirstlane_b32 s79, v13
-; SI-NEXT:    v_readfirstlane_b32 s18, v12
+; SI-NEXT:    v_readfirstlane_b32 s51, v12
 ; SI-NEXT:    v_readfirstlane_b32 s77, v11
 ; SI-NEXT:    v_readfirstlane_b32 s78, v10
 ; SI-NEXT:    v_readfirstlane_b32 s16, v9
 ; SI-NEXT:    v_readfirstlane_b32 s76, v8
 ; SI-NEXT:    v_readfirstlane_b32 s17, v7
 ; SI-NEXT:    v_readfirstlane_b32 s82, v6
-; SI-NEXT:    v_readfirstlane_b32 s39, v5
+; SI-NEXT:    v_readfirstlane_b32 s80, v5
 ; SI-NEXT:    v_readfirstlane_b32 s81, v4
-; SI-NEXT:    v_readfirstlane_b32 s54, v3
-; SI-NEXT:    v_readfirstlane_b32 s55, v2
-; SI-NEXT:    v_readfirstlane_b32 s52, v1
-; SI-NEXT:    v_readfirstlane_b32 s70, v0
-; SI-NEXT:    v_writelane_b32 v33, s26, 9
-; SI-NEXT:    s_lshr_b32 s93, s29, 16
-; SI-NEXT:    s_lshr_b32 s48, s28, 16
+; SI-NEXT:    v_readfirstlane_b32 s70, v3
+; SI-NEXT:    v_readfirstlane_b32 s71, v2
+; SI-NEXT:    v_readfirstlane_b32 s50, v1
+; SI-NEXT:    v_readfirstlane_b32 s69, v0
+; SI-NEXT:    v_writelane_b32 v33, s24, 6
+; SI-NEXT:    s_lshr_b32 s39, s29, 16
+; SI-NEXT:    s_lshr_b32 s30, s28, 16
 ; SI-NEXT:    s_lshr_b32 s37, s27, 16
-; SI-NEXT:    s_lshr_b32 s38, s26, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s26, 16
 ; SI-NEXT:    s_lshr_b32 s35, s25, 16
-; SI-NEXT:    s_lshr_b32 s36, s24, 16
+; SI-NEXT:    s_lshr_b32 s94, s24, 16
 ; SI-NEXT:    s_lshr_b32 s31, s23, 16
-; SI-NEXT:    s_lshr_b32 s84, s22, 16
-; SI-NEXT:    s_lshr_b32 s98, s89, 16
-; SI-NEXT:    s_lshr_b32 s72, s20, 16
-; SI-NEXT:    s_lshr_b32 s99, s19, 16
-; SI-NEXT:    s_lshr_b32 s85, s88, 16
-; SI-NEXT:    s_lshr_b32 s87, s79, 16
-; SI-NEXT:    s_lshr_b32 s51, s18, 16
-; SI-NEXT:    s_lshr_b32 s97, s77, 16
-; SI-NEXT:    s_lshr_b32 s49, s78, 16
-; SI-NEXT:    s_lshr_b32 s83, s16, 16
-; SI-NEXT:    s_lshr_b32 s71, s76, 16
-; SI-NEXT:    s_lshr_b32 s67, s17, 16
-; SI-NEXT:    s_lshr_b32 s91, s82, 16
-; SI-NEXT:    s_lshr_b32 s92, s39, 16
-; SI-NEXT:    s_lshr_b32 s69, s81, 16
-; SI-NEXT:    s_lshr_b32 s90, s54, 16
-; SI-NEXT:    s_lshr_b32 s68, s55, 16
-; SI-NEXT:    s_lshr_b32 s65, s52, 16
-; SI-NEXT:    s_lshr_b32 s53, s70, 16
+; SI-NEXT:    s_lshr_b32 s92, s22, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s21, 16
+; SI-NEXT:    s_lshr_b32 s65, s18, 16
+; SI-NEXT:    s_lshr_b32 s99, s89, 16
+; SI-NEXT:    s_lshr_b32 s74, s20, 16
+; SI-NEXT:    s_lshr_b32 s98, s19, 16
+; SI-NEXT:    s_lshr_b32 s18, s88, 16
+; SI-NEXT:    s_lshr_b32 s97, s79, 16
+; SI-NEXT:    s_lshr_b32 s49, s51, 16
+; SI-NEXT:    s_lshr_b32 s96, s77, 16
+; SI-NEXT:    s_lshr_b32 s91, s78, 16
+; SI-NEXT:    s_lshr_b32 s87, s16, 16
+; SI-NEXT:    s_lshr_b32 s68, s76, 16
+; SI-NEXT:    s_lshr_b32 s86, s17, 16
+; SI-NEXT:    s_lshr_b32 s48, s82, 16
+; SI-NEXT:    s_lshr_b32 s85, s80, 16
+; SI-NEXT:    s_lshr_b32 s38, s81, 16
+; SI-NEXT:    s_lshr_b32 s84, s70, 16
+; SI-NEXT:    s_lshr_b32 s36, s71, 16
+; SI-NEXT:    s_lshr_b32 s83, s50, 16
+; SI-NEXT:    s_lshr_b32 s34, s69, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v18
-; SI-NEXT:    v_writelane_b32 v33, s28, 10
+; SI-NEXT:    v_writelane_b32 v33, s26, 7
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_writelane_b32 v33, s70, 11
-; SI-NEXT:    v_writelane_b32 v33, s72, 12
-; SI-NEXT:    s_cbranch_scc0 .LBB111_4
+; SI-NEXT:    v_writelane_b32 v33, s28, 8
+; SI-NEXT:    v_writelane_b32 v33, s74, 9
+; SI-NEXT:    s_cbranch_scc0 .LBB111_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    v_readlane_b32 s5, v33, 5
-; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s34, 16
+; SI-NEXT:    v_readlane_b32 s7, v33, 1
+; SI-NEXT:    s_and_b32 s5, s93, 0xffff
+; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    v_writelane_b32 v33, s51, 36
 ; SI-NEXT:    s_or_b32 s61, s5, s7
-; SI-NEXT:    v_readlane_b32 s5, v33, 2
-; SI-NEXT:    v_readlane_b32 s7, v33, 3
+; SI-NEXT:    v_readlane_b32 s5, v33, 0
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s7, s95, 16
 ; SI-NEXT:    s_or_b32 s59, s5, s7
-; SI-NEXT:    v_readlane_b32 s7, v33, 0
 ; SI-NEXT:    s_and_b32 s5, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
+; SI-NEXT:    s_lshl_b32 s7, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s57, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s31, 16
@@ -230326,271 +231243,363 @@ define inreg <64 x half> @bitcast_v64i16_to_v64f16_scalar(<64 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s7, s37, 16
 ; SI-NEXT:    s_or_b32 s43, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s93, 16
+; SI-NEXT:    s_lshl_b32 s7, s39, 16
 ; SI-NEXT:    s_or_b32 s41, s5, s7
-; SI-NEXT:    s_and_b32 s5, s52, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s65, 16
+; SI-NEXT:    s_and_b32 s5, s50, 0xffff
+; SI-NEXT:    s_lshl_b32 s7, s83, 16
 ; SI-NEXT:    s_or_b32 s15, s5, s7
-; SI-NEXT:    s_and_b32 s5, s54, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s90, 16
+; SI-NEXT:    s_and_b32 s5, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s7, s84, 16
 ; SI-NEXT:    s_or_b32 s13, s5, s7
-; SI-NEXT:    s_and_b32 s5, s39, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s92, 16
+; SI-NEXT:    s_and_b32 s5, s80, 0xffff
+; SI-NEXT:    s_lshl_b32 s7, s85, 16
 ; SI-NEXT:    s_or_b32 s11, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s67, 16
+; SI-NEXT:    s_lshl_b32 s7, s86, 16
 ; SI-NEXT:    s_or_b32 s9, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s83, 16
+; SI-NEXT:    s_lshl_b32 s7, s87, 16
 ; SI-NEXT:    s_or_b32 s7, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s77, 0xffff
-; SI-NEXT:    s_lshl_b32 s62, s97, 16
+; SI-NEXT:    s_lshl_b32 s62, s96, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s62
 ; SI-NEXT:    s_and_b32 s63, s79, 0xffff
-; SI-NEXT:    s_lshl_b32 s62, s87, 16
-; SI-NEXT:    s_or_b32 vcc_hi, s63, s62
+; SI-NEXT:    s_lshl_b32 s62, s97, 16
+; SI-NEXT:    s_lshl_b32 s60, s53, 16
+; SI-NEXT:    s_mov_b32 s66, s53
+; SI-NEXT:    s_or_b32 s53, s63, s62
 ; SI-NEXT:    s_and_b32 s63, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s62, s99, 16
-; SI-NEXT:    s_mov_b32 s96, s83
-; SI-NEXT:    s_mov_b32 s83, s21
-; SI-NEXT:    s_mov_b32 s86, s92
-; SI-NEXT:    s_mov_b32 s92, s90
-; SI-NEXT:    s_mov_b32 s90, s65
-; SI-NEXT:    s_or_b32 s65, s63, s62
-; SI-NEXT:    s_and_b32 s21, s89, 0xffff
 ; SI-NEXT:    s_lshl_b32 s62, s98, 16
-; SI-NEXT:    s_lshl_b32 s58, s94, 16
-; SI-NEXT:    s_lshl_b32 s56, s30, 16
-; SI-NEXT:    s_lshl_b32 s46, s84, 16
-; SI-NEXT:    s_lshl_b32 s44, s36, 16
-; SI-NEXT:    s_lshl_b32 s42, s38, 16
-; SI-NEXT:    s_lshl_b32 s40, s48, 16
-; SI-NEXT:    s_mov_b32 s50, s48
+; SI-NEXT:    s_mov_b32 s67, s21
+; SI-NEXT:    s_or_b32 s55, s63, s62
+; SI-NEXT:    s_and_b32 s21, s89, 0xffff
+; SI-NEXT:    s_lshl_b32 s62, s99, 16
+; SI-NEXT:    v_writelane_b32 v33, s23, 37
+; SI-NEXT:    s_lshl_b32 s58, s65, 16
+; SI-NEXT:    s_lshl_b32 s56, s90, 16
+; SI-NEXT:    s_lshl_b32 s46, s92, 16
+; SI-NEXT:    s_lshl_b32 s44, s94, 16
+; SI-NEXT:    s_lshl_b32 s42, vcc_lo, 16
+; SI-NEXT:    s_lshl_b32 s40, s30, 16
+; SI-NEXT:    s_lshl_b32 s14, s34, 16
+; SI-NEXT:    s_lshl_b32 s12, s36, 16
+; SI-NEXT:    s_lshl_b32 s10, s38, 16
+; SI-NEXT:    s_lshl_b32 s8, s48, 16
+; SI-NEXT:    s_mov_b32 s23, s48
 ; SI-NEXT:    s_mov_b32 s48, s38
 ; SI-NEXT:    s_mov_b32 s38, s36
-; SI-NEXT:    s_mov_b32 s36, s84
-; SI-NEXT:    s_mov_b32 s84, s30
-; SI-NEXT:    s_mov_b32 s30, s98
-; SI-NEXT:    s_mov_b32 s98, s87
+; SI-NEXT:    s_mov_b32 s36, s34
+; SI-NEXT:    s_mov_b32 s34, s30
+; SI-NEXT:    s_mov_b32 s30, vcc_lo
+; SI-NEXT:    s_mov_b32 vcc_lo, s99
+; SI-NEXT:    s_mov_b32 s99, s98
+; SI-NEXT:    s_mov_b32 s98, s97
+; SI-NEXT:    s_mov_b32 s97, s96
+; SI-NEXT:    s_mov_b32 s96, s87
 ; SI-NEXT:    s_mov_b32 s87, s94
-; SI-NEXT:    s_mov_b32 s94, s67
-; SI-NEXT:    s_or_b32 s67, s21, s62
-; SI-NEXT:    v_readlane_b32 s21, v33, 6
-; SI-NEXT:    s_lshl_b32 s60, s95, 16
+; SI-NEXT:    s_mov_b32 s94, s86
+; SI-NEXT:    s_mov_b32 s86, s85
+; SI-NEXT:    s_mov_b32 s85, s84
+; SI-NEXT:    s_mov_b32 s84, s83
+; SI-NEXT:    s_mov_b32 s83, s92
+; SI-NEXT:    s_mov_b32 s92, s90
+; SI-NEXT:    s_mov_b32 s90, s65
+; SI-NEXT:    s_or_b32 s65, s21, s62
+; SI-NEXT:    v_readlane_b32 s21, v33, 2
 ; SI-NEXT:    s_and_b32 s21, s21, 0xffff
 ; SI-NEXT:    s_or_b32 s62, s21, s60
 ; SI-NEXT:    s_mov_b32 s63, s61
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[60:61], 16
-; SI-NEXT:    v_writelane_b32 v33, s60, 13
-; SI-NEXT:    v_writelane_b32 v33, s61, 14
-; SI-NEXT:    v_readlane_b32 s21, v33, 4
-; SI-NEXT:    s_and_b32 s21, s21, 0xffff
+; SI-NEXT:    v_writelane_b32 v33, s60, 10
+; SI-NEXT:    s_and_b32 s21, s72, 0xffff
+; SI-NEXT:    s_lshl_b32 s64, s74, 16
+; SI-NEXT:    v_writelane_b32 v33, s61, 11
 ; SI-NEXT:    s_or_b32 s74, s21, s58
 ; SI-NEXT:    s_mov_b32 s75, s59
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[58:59], 16
-; SI-NEXT:    v_writelane_b32 v33, s58, 15
-; SI-NEXT:    v_writelane_b32 v33, s59, 16
-; SI-NEXT:    v_readlane_b32 s21, v33, 1
-; SI-NEXT:    s_and_b32 s21, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s66, s72, 16
+; SI-NEXT:    v_writelane_b32 v33, s58, 12
+; SI-NEXT:    s_and_b32 s21, s73, 0xffff
+; SI-NEXT:    v_writelane_b32 v33, s59, 13
 ; SI-NEXT:    s_or_b32 s72, s21, s56
 ; SI-NEXT:    s_mov_b32 s73, s57
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[56:57], 16
-; SI-NEXT:    v_writelane_b32 v33, s56, 17
+; SI-NEXT:    v_writelane_b32 v33, s56, 14
 ; SI-NEXT:    s_and_b32 s21, s22, 0xffff
-; SI-NEXT:    v_writelane_b32 v33, s57, 18
+; SI-NEXT:    v_writelane_b32 v33, s57, 15
 ; SI-NEXT:    s_or_b32 s60, s21, s46
 ; SI-NEXT:    s_mov_b32 s61, s47
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[46:47], 16
-; SI-NEXT:    v_writelane_b32 v33, s46, 19
+; SI-NEXT:    v_writelane_b32 v33, s46, 16
 ; SI-NEXT:    s_and_b32 s21, s24, 0xffff
-; SI-NEXT:    v_writelane_b32 v33, s47, 20
+; SI-NEXT:    v_writelane_b32 v33, s47, 17
 ; SI-NEXT:    s_or_b32 s58, s21, s44
 ; SI-NEXT:    s_mov_b32 s59, s45
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[44:45], 16
-; SI-NEXT:    v_writelane_b32 v33, s44, 21
+; SI-NEXT:    v_writelane_b32 v33, s44, 18
 ; SI-NEXT:    s_and_b32 s21, s26, 0xffff
-; SI-NEXT:    v_writelane_b32 v33, s45, 22
+; SI-NEXT:    v_writelane_b32 v33, s45, 19
 ; SI-NEXT:    s_or_b32 s56, s21, s42
 ; SI-NEXT:    s_mov_b32 s57, s43
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[42:43], 16
-; SI-NEXT:    v_writelane_b32 v33, s42, 23
+; SI-NEXT:    v_writelane_b32 v33, s42, 20
 ; SI-NEXT:    s_and_b32 s21, s28, 0xffff
-; SI-NEXT:    v_writelane_b32 v33, s43, 24
+; SI-NEXT:    v_writelane_b32 v33, s43, 21
 ; SI-NEXT:    s_or_b32 s46, s21, s40
 ; SI-NEXT:    s_mov_b32 s47, s41
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[40:41], 16
-; SI-NEXT:    s_lshl_b32 s14, s53, 16
-; SI-NEXT:    v_writelane_b32 v33, s40, 25
-; SI-NEXT:    s_and_b32 s21, s70, 0xffff
-; SI-NEXT:    v_writelane_b32 v33, s41, 26
+; SI-NEXT:    v_writelane_b32 v33, s40, 22
+; SI-NEXT:    s_and_b32 s21, s69, 0xffff
+; SI-NEXT:    v_writelane_b32 v33, s41, 23
 ; SI-NEXT:    s_or_b32 s44, s21, s14
 ; SI-NEXT:    s_mov_b32 s45, s15
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[14:15], 16
-; SI-NEXT:    v_writelane_b32 v33, s14, 27
-; SI-NEXT:    s_lshl_b32 s12, s68, 16
-; SI-NEXT:    v_writelane_b32 v33, s15, 28
-; SI-NEXT:    s_and_b32 s14, s55, 0xffff
+; SI-NEXT:    v_writelane_b32 v33, s14, 24
+; SI-NEXT:    v_writelane_b32 v33, s15, 25
+; SI-NEXT:    s_and_b32 s14, s71, 0xffff
 ; SI-NEXT:    s_or_b32 s42, s14, s12
 ; SI-NEXT:    s_mov_b32 s43, s13
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[12:13], 16
-; SI-NEXT:    v_writelane_b32 v33, s12, 29
-; SI-NEXT:    s_lshl_b32 s10, s69, 16
-; SI-NEXT:    v_writelane_b32 v33, s13, 30
+; SI-NEXT:    v_writelane_b32 v33, s12, 26
+; SI-NEXT:    v_writelane_b32 v33, s13, 27
 ; SI-NEXT:    s_and_b32 s12, s81, 0xffff
 ; SI-NEXT:    s_or_b32 s40, s12, s10
 ; SI-NEXT:    s_mov_b32 s41, s11
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[10:11], 16
-; SI-NEXT:    v_writelane_b32 v33, s10, 31
-; SI-NEXT:    s_lshl_b32 s8, s91, 16
-; SI-NEXT:    v_writelane_b32 v33, s11, 32
+; SI-NEXT:    v_writelane_b32 v33, s10, 28
+; SI-NEXT:    v_writelane_b32 v33, s11, 29
 ; SI-NEXT:    s_and_b32 s10, s82, 0xffff
 ; SI-NEXT:    s_or_b32 s14, s10, s8
 ; SI-NEXT:    s_mov_b32 s15, s9
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[8:9], 16
-; SI-NEXT:    v_writelane_b32 v33, s8, 33
-; SI-NEXT:    s_lshl_b32 s6, s71, 16
-; SI-NEXT:    v_writelane_b32 v33, s9, 34
+; SI-NEXT:    v_writelane_b32 v33, s8, 30
+; SI-NEXT:    s_lshl_b32 s6, s68, 16
+; SI-NEXT:    v_writelane_b32 v33, s9, 31
 ; SI-NEXT:    s_and_b32 s8, s76, 0xffff
 ; SI-NEXT:    s_or_b32 s12, s8, s6
 ; SI-NEXT:    s_mov_b32 s13, s7
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[6:7], 16
-; SI-NEXT:    v_writelane_b32 v33, s6, 35
-; SI-NEXT:    s_lshl_b32 s4, s49, 16
-; SI-NEXT:    v_writelane_b32 v33, s7, 36
+; SI-NEXT:    v_writelane_b32 v33, s6, 32
+; SI-NEXT:    s_lshl_b32 s4, s91, 16
+; SI-NEXT:    v_writelane_b32 v33, s7, 33
 ; SI-NEXT:    s_and_b32 s6, s78, 0xffff
 ; SI-NEXT:    s_or_b32 s10, s6, s4
 ; SI-NEXT:    s_mov_b32 s11, s5
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[4:5], 16
-; SI-NEXT:    s_lshl_b32 vcc_lo, s51, 16
-; SI-NEXT:    v_writelane_b32 v33, s4, 37
-; SI-NEXT:    v_writelane_b32 v33, s5, 38
-; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshr_b64 s[6:7], vcc, 16
-; SI-NEXT:    s_lshl_b32 s64, s85, 16
-; SI-NEXT:    s_or_b32 s8, s4, vcc_lo
-; SI-NEXT:    v_writelane_b32 v33, s6, 39
+; SI-NEXT:    v_readlane_b32 s51, v33, 36
+; SI-NEXT:    v_writelane_b32 v33, s4, 34
+; SI-NEXT:    s_lshl_b32 s52, s49, 16
+; SI-NEXT:    v_writelane_b32 v33, s5, 35
+; SI-NEXT:    s_and_b32 s4, s51, 0xffff
+; SI-NEXT:    s_lshl_b32 s54, s18, 16
+; SI-NEXT:    s_or_b32 s8, s4, s52
 ; SI-NEXT:    s_and_b32 s4, s88, 0xffff
-; SI-NEXT:    v_writelane_b32 v33, s7, 40
-; SI-NEXT:    s_or_b32 s6, s4, s64
+; SI-NEXT:    s_or_b32 s6, s4, s54
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_mov_b32 s7, s65
+; SI-NEXT:    s_mov_b32 s9, s53
+; SI-NEXT:    s_lshr_b64 s[52:53], s[52:53], 16
+; SI-NEXT:    s_or_b32 s4, s4, s64
+; SI-NEXT:    s_mov_b32 s5, s65
 ; SI-NEXT:    s_lshr_b64 s[64:65], s[64:65], 16
-; SI-NEXT:    s_or_b32 s4, s4, s66
-; SI-NEXT:    s_mov_b32 s5, s67
-; SI-NEXT:    s_lshr_b64 s[66:67], s[66:67], 16
-; SI-NEXT:    s_mov_b32 s9, vcc_hi
+; SI-NEXT:    s_mov_b32 s53, s66
+; SI-NEXT:    s_mov_b32 s7, s55
+; SI-NEXT:    s_lshr_b64 s[54:55], s[54:55], 16
+; SI-NEXT:    s_mov_b32 s21, s67
 ; SI-NEXT:    s_mov_b32 s65, s90
 ; SI-NEXT:    s_mov_b32 s90, s92
-; SI-NEXT:    s_mov_b32 s92, s86
-; SI-NEXT:    s_mov_b32 s21, s83
-; SI-NEXT:    s_mov_b32 s83, s96
-; SI-NEXT:    s_mov_b32 s67, s94
+; SI-NEXT:    s_mov_b32 s92, s83
+; SI-NEXT:    s_mov_b32 s83, s84
+; SI-NEXT:    s_mov_b32 s84, s85
+; SI-NEXT:    s_mov_b32 s85, s86
+; SI-NEXT:    s_mov_b32 s86, s94
 ; SI-NEXT:    s_mov_b32 s94, s87
-; SI-NEXT:    s_mov_b32 s87, s98
-; SI-NEXT:    s_mov_b32 s98, s30
-; SI-NEXT:    s_mov_b32 s30, s84
-; SI-NEXT:    s_mov_b32 s84, s36
+; SI-NEXT:    s_mov_b32 s87, s96
+; SI-NEXT:    s_mov_b32 s96, s97
+; SI-NEXT:    s_mov_b32 s97, s98
+; SI-NEXT:    s_mov_b32 s98, s99
+; SI-NEXT:    s_mov_b32 s99, vcc_lo
+; SI-NEXT:    s_mov_b32 vcc_lo, s30
+; SI-NEXT:    s_mov_b32 s30, s34
+; SI-NEXT:    s_mov_b32 s34, s36
 ; SI-NEXT:    s_mov_b32 s36, s38
 ; SI-NEXT:    s_mov_b32 s38, s48
-; SI-NEXT:    s_mov_b32 s48, s50
-; SI-NEXT:    s_cbranch_execnz .LBB111_3
-; SI-NEXT:  .LBB111_2: ; %cmp.true
+; SI-NEXT:    s_mov_b32 s48, s23
+; SI-NEXT:    v_readlane_b32 s23, v33, 37
+; SI-NEXT:    s_mov_b64 s[66:67], 0
+; SI-NEXT:    s_branch .LBB111_3
+; SI-NEXT:  .LBB111_2:
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    s_mov_b64 s[66:67], -1
+; SI-NEXT:    v_writelane_b32 v33, s4, 10
+; SI-NEXT:    v_writelane_b32 v33, s5, 11
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    v_writelane_b32 v33, s4, 12
+; SI-NEXT:    v_writelane_b32 v33, s5, 13
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v33, s4, 14
+; SI-NEXT:    v_writelane_b32 v33, s5, 15
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v33, s4, 16
+; SI-NEXT:    v_writelane_b32 v33, s5, 17
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v33, s4, 18
+; SI-NEXT:    v_writelane_b32 v33, s5, 19
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v33, s4, 20
+; SI-NEXT:    v_writelane_b32 v33, s5, 21
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v33, s4, 22
+; SI-NEXT:    v_writelane_b32 v33, s5, 23
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v33, s4, 24
+; SI-NEXT:    v_writelane_b32 v33, s5, 25
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v33, s4, 26
+; SI-NEXT:    v_writelane_b32 v33, s5, 27
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v33, s4, 28
+; SI-NEXT:    v_writelane_b32 v33, s5, 29
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v33, s4, 30
+; SI-NEXT:    v_writelane_b32 v33, s5, 31
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v33, s4, 32
+; SI-NEXT:    v_writelane_b32 v33, s5, 33
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v33, s4, 34
+; SI-NEXT:    v_writelane_b32 v33, s5, 35
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:  .LBB111_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[66:67], s[66:67], exec
+; SI-NEXT:    v_readlane_b32 s66, v33, 10
+; SI-NEXT:    v_readlane_b32 s67, v33, 11
+; SI-NEXT:    s_mov_b32 s22, s66
+; SI-NEXT:    v_readlane_b32 s66, v33, 12
+; SI-NEXT:    v_readlane_b32 s67, v33, 13
+; SI-NEXT:    s_mov_b32 s24, s66
+; SI-NEXT:    v_readlane_b32 s66, v33, 14
+; SI-NEXT:    v_readlane_b32 s67, v33, 15
+; SI-NEXT:    s_mov_b32 s26, s66
+; SI-NEXT:    v_readlane_b32 s66, v33, 16
+; SI-NEXT:    s_cselect_b32 s55, 1, 0
+; SI-NEXT:    v_readlane_b32 s67, v33, 17
+; SI-NEXT:    s_cmp_lg_u32 s55, 1
+; SI-NEXT:    s_mov_b32 s28, s66
+; SI-NEXT:    v_readlane_b32 s66, v33, 18
+; SI-NEXT:    v_readlane_b32 s67, v33, 19
+; SI-NEXT:    s_cbranch_scc1 .LBB111_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s20, s20, 3
-; SI-NEXT:    v_readlane_b32 s5, v33, 12
+; SI-NEXT:    v_readlane_b32 s5, v33, 9
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_add_i32 s89, s89, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_and_b32 s5, s89, 0xffff
-; SI-NEXT:    s_lshl_b32 s6, s98, 16
+; SI-NEXT:    s_lshl_b32 s6, s99, 16
 ; SI-NEXT:    s_add_i32 s88, s88, 3
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_and_b32 s6, s88, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s85, 16
+; SI-NEXT:    s_lshl_b32 s7, s18, 16
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_and_b32 s7, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s8, s99, 16
-; SI-NEXT:    s_add_i32 s18, s18, 3
+; SI-NEXT:    s_lshl_b32 s8, s98, 16
+; SI-NEXT:    s_add_i32 s18, s51, 3
 ; SI-NEXT:    s_or_b32 s7, s8, s7
 ; SI-NEXT:    s_and_b32 s8, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s9, s51, 16
+; SI-NEXT:    s_lshl_b32 s9, s49, 16
 ; SI-NEXT:    s_add_i32 s79, s79, 3
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_and_b32 s9, s79, 0xffff
-; SI-NEXT:    s_lshl_b32 s10, s87, 16
+; SI-NEXT:    s_lshl_b32 s10, s97, 16
 ; SI-NEXT:    s_add_i32 s78, s78, 3
 ; SI-NEXT:    s_or_b32 s9, s10, s9
 ; SI-NEXT:    s_and_b32 s10, s78, 0xffff
-; SI-NEXT:    s_lshl_b32 s11, s49, 16
+; SI-NEXT:    s_lshl_b32 s11, s91, 16
 ; SI-NEXT:    s_add_i32 s77, s77, 3
 ; SI-NEXT:    s_or_b32 s10, s11, s10
 ; SI-NEXT:    s_and_b32 s11, s77, 0xffff
-; SI-NEXT:    s_lshl_b32 s12, s97, 16
+; SI-NEXT:    s_lshl_b32 s12, s96, 16
 ; SI-NEXT:    s_add_i32 s76, s76, 3
 ; SI-NEXT:    s_or_b32 s11, s12, s11
 ; SI-NEXT:    s_and_b32 s12, s76, 0xffff
-; SI-NEXT:    s_lshl_b32 s13, s71, 16
+; SI-NEXT:    s_lshl_b32 s13, s68, 16
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_or_b32 s12, s13, s12
 ; SI-NEXT:    s_and_b32 s13, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s14, s83, 16
+; SI-NEXT:    s_lshl_b32 s14, s87, 16
 ; SI-NEXT:    s_add_i32 s82, s82, 3
 ; SI-NEXT:    s_or_b32 s13, s14, s13
 ; SI-NEXT:    s_and_b32 s14, s82, 0xffff
-; SI-NEXT:    s_lshl_b32 s15, s91, 16
+; SI-NEXT:    s_lshl_b32 s15, s48, 16
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_or_b32 s14, s15, s14
 ; SI-NEXT:    s_and_b32 s15, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s67, 16
+; SI-NEXT:    s_lshl_b32 s16, s86, 16
 ; SI-NEXT:    s_add_i32 s81, s81, 3
 ; SI-NEXT:    s_or_b32 s15, s16, s15
 ; SI-NEXT:    s_and_b32 s16, s81, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s69, 16
+; SI-NEXT:    s_lshl_b32 s17, s38, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    s_add_i32 s80, s39, 3
+; SI-NEXT:    s_add_i32 s80, s80, 3
 ; SI-NEXT:    s_add_i32 s40, s16, 0x30000
 ; SI-NEXT:    s_and_b32 s16, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s92, 16
+; SI-NEXT:    s_lshl_b32 s17, s85, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    s_add_i32 s71, s55, 3
+; SI-NEXT:    s_add_i32 s71, s71, 3
 ; SI-NEXT:    s_add_i32 s41, s16, 0x30000
 ; SI-NEXT:    s_and_b32 s16, s71, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s68, 16
+; SI-NEXT:    s_lshl_b32 s17, s36, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    s_add_i32 s70, s54, 3
+; SI-NEXT:    s_add_i32 s70, s70, 3
 ; SI-NEXT:    s_add_i32 s42, s16, 0x30000
 ; SI-NEXT:    s_and_b32 s16, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s90, 16
+; SI-NEXT:    s_lshl_b32 s17, s84, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
+; SI-NEXT:    s_add_i32 s69, s69, 3
 ; SI-NEXT:    s_add_i32 s43, s16, 0x30000
-; SI-NEXT:    v_readlane_b32 s16, v33, 11
-; SI-NEXT:    s_add_i32 s69, s16, 3
 ; SI-NEXT:    s_and_b32 s16, s69, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s53, 16
+; SI-NEXT:    s_lshl_b32 s17, s34, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    s_add_i32 s68, s52, 3
+; SI-NEXT:    s_add_i32 s68, s50, 3
 ; SI-NEXT:    s_add_i32 s44, s16, 0x30000
 ; SI-NEXT:    s_and_b32 s16, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s65, 16
+; SI-NEXT:    s_lshl_b32 s17, s83, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s45, s16, 0x30000
-; SI-NEXT:    v_readlane_b32 s16, v33, 10
+; SI-NEXT:    v_readlane_b32 s16, v33, 8
 ; SI-NEXT:    s_add_i32 s28, s16, 3
 ; SI-NEXT:    s_and_b32 s16, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s48, 16
+; SI-NEXT:    s_lshl_b32 s17, s30, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s29, s29, 3
 ; SI-NEXT:    s_add_i32 s46, s16, 0x30000
 ; SI-NEXT:    s_and_b32 s16, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s93, 16
+; SI-NEXT:    s_lshl_b32 s17, s39, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s47, s16, 0x30000
-; SI-NEXT:    v_readlane_b32 s16, v33, 9
+; SI-NEXT:    v_readlane_b32 s16, v33, 7
 ; SI-NEXT:    s_add_i32 s26, s16, 3
 ; SI-NEXT:    s_and_b32 s16, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s38, 16
+; SI-NEXT:    s_lshl_b32 s17, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s56, s16, 0x30000
@@ -230598,10 +231607,10 @@ define inreg <64 x half> @bitcast_v64i16_to_v64f16_scalar(<64 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s17, s37, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s57, s16, 0x30000
-; SI-NEXT:    v_readlane_b32 s16, v33, 8
+; SI-NEXT:    v_readlane_b32 s16, v33, 6
 ; SI-NEXT:    s_add_i32 s24, s16, 3
 ; SI-NEXT:    s_and_b32 s16, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s36, 16
+; SI-NEXT:    s_lshl_b32 s17, s94, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s58, s16, 0x30000
@@ -230609,10 +231618,10 @@ define inreg <64 x half> @bitcast_v64i16_to_v64f16_scalar(<64 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s17, s35, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s59, s16, 0x30000
-; SI-NEXT:    v_readlane_b32 s16, v33, 7
+; SI-NEXT:    v_readlane_b32 s16, v33, 5
 ; SI-NEXT:    s_add_i32 s22, s16, 3
 ; SI-NEXT:    s_and_b32 s16, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s84, 16
+; SI-NEXT:    s_lshl_b32 s17, s92, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s60, s16, 0x30000
@@ -230620,245 +231629,217 @@ define inreg <64 x half> @bitcast_v64i16_to_v64f16_scalar(<64 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s17, s31, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s61, s16, 0x30000
-; SI-NEXT:    v_readlane_b32 s16, v33, 1
+; SI-NEXT:    v_readlane_b32 s16, v33, 4
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s30, 16
+; SI-NEXT:    s_lshl_b32 s17, s90, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s72, s16, 0x30000
 ; SI-NEXT:    s_add_i32 s16, s21, 3
-; SI-NEXT:    v_readlane_b32 s17, v33, 0
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s17, 16
+; SI-NEXT:    s_lshl_b32 s17, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s73, s16, 0x30000
-; SI-NEXT:    v_readlane_b32 s16, v33, 4
+; SI-NEXT:    v_readlane_b32 s16, v33, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s94, 16
+; SI-NEXT:    s_lshl_b32 s17, s65, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s74, s16, 0x30000
-; SI-NEXT:    v_readlane_b32 s16, v33, 2
+; SI-NEXT:    v_readlane_b32 s16, v33, 0
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s17, v33, 3
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s17, 16
+; SI-NEXT:    s_lshl_b32 s17, s95, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s75, s16, 0x30000
-; SI-NEXT:    v_readlane_b32 s16, v33, 6
+; SI-NEXT:    v_readlane_b32 s16, v33, 2
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s95, 16
+; SI-NEXT:    s_lshl_b32 s17, s53, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s62, s16, 0x30000
-; SI-NEXT:    v_readlane_b32 s16, v33, 5
-; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    s_add_i32 s16, s93, 3
+; SI-NEXT:    v_readlane_b32 s17, v33, 1
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s34, 16
+; SI-NEXT:    s_lshl_b32 s17, s17, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s63, s16, 0x30000
-; SI-NEXT:    s_lshr_b64 s[16:17], s[62:63], 16
-; SI-NEXT:    v_writelane_b32 v33, s16, 13
-; SI-NEXT:    v_writelane_b32 v33, s17, 14
-; SI-NEXT:    s_lshr_b64 s[16:17], s[74:75], 16
-; SI-NEXT:    v_writelane_b32 v33, s16, 15
-; SI-NEXT:    v_writelane_b32 v33, s17, 16
-; SI-NEXT:    s_lshr_b64 s[16:17], s[72:73], 16
-; SI-NEXT:    v_writelane_b32 v33, s16, 17
-; SI-NEXT:    v_writelane_b32 v33, s17, 18
-; SI-NEXT:    s_lshr_b64 s[16:17], s[60:61], 16
-; SI-NEXT:    v_writelane_b32 v33, s16, 19
-; SI-NEXT:    v_writelane_b32 v33, s17, 20
-; SI-NEXT:    s_lshr_b64 s[16:17], s[58:59], 16
-; SI-NEXT:    v_writelane_b32 v33, s16, 21
-; SI-NEXT:    v_writelane_b32 v33, s17, 22
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[56:57], 16
-; SI-NEXT:    v_writelane_b32 v33, s16, 23
-; SI-NEXT:    v_writelane_b32 v33, s17, 24
+; SI-NEXT:    v_writelane_b32 v33, s16, 20
+; SI-NEXT:    v_writelane_b32 v33, s17, 21
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[46:47], 16
-; SI-NEXT:    v_writelane_b32 v33, s16, 25
-; SI-NEXT:    v_writelane_b32 v33, s17, 26
+; SI-NEXT:    v_writelane_b32 v33, s16, 22
+; SI-NEXT:    v_writelane_b32 v33, s17, 23
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[44:45], 16
-; SI-NEXT:    v_writelane_b32 v33, s16, 27
-; SI-NEXT:    v_writelane_b32 v33, s17, 28
+; SI-NEXT:    v_writelane_b32 v33, s16, 24
+; SI-NEXT:    v_writelane_b32 v33, s17, 25
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[42:43], 16
-; SI-NEXT:    v_writelane_b32 v33, s16, 29
-; SI-NEXT:    v_writelane_b32 v33, s17, 30
+; SI-NEXT:    v_writelane_b32 v33, s16, 26
+; SI-NEXT:    v_writelane_b32 v33, s17, 27
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[40:41], 16
 ; SI-NEXT:    s_add_i32 s14, s14, 0x30000
 ; SI-NEXT:    s_add_i32 s15, s15, 0x30000
-; SI-NEXT:    v_writelane_b32 v33, s16, 31
-; SI-NEXT:    v_writelane_b32 v33, s17, 32
+; SI-NEXT:    v_writelane_b32 v33, s16, 28
+; SI-NEXT:    v_writelane_b32 v33, s17, 29
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[14:15], 16
 ; SI-NEXT:    s_add_i32 s12, s12, 0x30000
 ; SI-NEXT:    s_add_i32 s13, s13, 0x30000
-; SI-NEXT:    v_writelane_b32 v33, s16, 33
-; SI-NEXT:    v_writelane_b32 v33, s17, 34
+; SI-NEXT:    v_writelane_b32 v33, s16, 30
+; SI-NEXT:    v_writelane_b32 v33, s17, 31
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[12:13], 16
 ; SI-NEXT:    s_add_i32 s10, s10, 0x30000
 ; SI-NEXT:    s_add_i32 s11, s11, 0x30000
-; SI-NEXT:    v_writelane_b32 v33, s16, 35
-; SI-NEXT:    v_writelane_b32 v33, s17, 36
+; SI-NEXT:    v_writelane_b32 v33, s16, 32
+; SI-NEXT:    v_writelane_b32 v33, s17, 33
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[10:11], 16
-; SI-NEXT:    s_add_i32 s8, s8, 0x30000
-; SI-NEXT:    s_add_i32 s9, s9, 0x30000
-; SI-NEXT:    v_writelane_b32 v33, s16, 37
-; SI-NEXT:    v_writelane_b32 v33, s17, 38
-; SI-NEXT:    s_lshr_b64 s[16:17], s[8:9], 16
 ; SI-NEXT:    s_add_i32 s4, s4, 0x30000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x30000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x30000
 ; SI-NEXT:    s_add_i32 s7, s7, 0x30000
-; SI-NEXT:    v_writelane_b32 v33, s16, 39
-; SI-NEXT:    v_writelane_b32 v33, s17, 40
-; SI-NEXT:    s_lshr_b64 s[64:65], s[6:7], 16
-; SI-NEXT:    s_lshr_b64 s[66:67], s[4:5], 16
-; SI-NEXT:    s_lshr_b32 s16, s75, 16
-; SI-NEXT:    s_lshr_b32 s34, s63, 16
-; SI-NEXT:    v_writelane_b32 v33, s16, 3
-; SI-NEXT:    s_lshr_b32 s16, s73, 16
+; SI-NEXT:    s_add_i32 s8, s8, 0x30000
+; SI-NEXT:    s_add_i32 s9, s9, 0x30000
+; SI-NEXT:    v_writelane_b32 v33, s16, 34
+; SI-NEXT:    s_lshr_b64 s[22:23], s[62:63], 16
+; SI-NEXT:    s_lshr_b64 s[24:25], s[74:75], 16
+; SI-NEXT:    s_lshr_b64 s[26:27], s[72:73], 16
+; SI-NEXT:    s_lshr_b64 s[28:29], s[60:61], 16
+; SI-NEXT:    s_lshr_b64 s[66:67], s[58:59], 16
+; SI-NEXT:    v_writelane_b32 v33, s17, 35
+; SI-NEXT:    s_lshr_b64 s[52:53], s[8:9], 16
+; SI-NEXT:    s_lshr_b64 s[54:55], s[6:7], 16
+; SI-NEXT:    s_lshr_b64 s[64:65], s[4:5], 16
+; SI-NEXT:    s_lshr_b32 s16, s63, 16
+; SI-NEXT:    s_lshr_b32 s95, s75, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s73, 16
 ; SI-NEXT:    s_lshr_b32 s31, s61, 16
 ; SI-NEXT:    s_lshr_b32 s35, s59, 16
 ; SI-NEXT:    s_lshr_b32 s37, s57, 16
-; SI-NEXT:    s_lshr_b32 s93, s47, 16
-; SI-NEXT:    s_lshr_b32 s65, s45, 16
-; SI-NEXT:    s_lshr_b32 s90, s43, 16
-; SI-NEXT:    s_lshr_b32 s92, s41, 16
-; SI-NEXT:    s_lshr_b32 s67, s15, 16
-; SI-NEXT:    s_lshr_b32 s83, s13, 16
-; SI-NEXT:    s_lshr_b32 s97, s11, 16
-; SI-NEXT:    s_lshr_b32 s87, s9, 16
-; SI-NEXT:    s_lshr_b32 s99, s7, 16
-; SI-NEXT:    s_lshr_b32 s98, s5, 16
-; SI-NEXT:    v_writelane_b32 v33, s16, 0
-; SI-NEXT:  .LBB111_3: ; %end
-; SI-NEXT:    v_readlane_b32 s18, v33, 13
+; SI-NEXT:    s_lshr_b32 s39, s47, 16
+; SI-NEXT:    s_lshr_b32 s83, s45, 16
+; SI-NEXT:    s_lshr_b32 s84, s43, 16
+; SI-NEXT:    s_lshr_b32 s85, s41, 16
+; SI-NEXT:    s_lshr_b32 s86, s15, 16
+; SI-NEXT:    s_lshr_b32 s87, s13, 16
+; SI-NEXT:    s_lshr_b32 s96, s11, 16
+; SI-NEXT:    s_lshr_b32 s97, s9, 16
+; SI-NEXT:    s_lshr_b32 s98, s7, 16
+; SI-NEXT:    s_lshr_b32 s99, s5, 16
+; SI-NEXT:    v_writelane_b32 v33, s16, 1
+; SI-NEXT:  .LBB111_5: ; %end
 ; SI-NEXT:    s_and_b32 s16, s62, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s18, 16
-; SI-NEXT:    v_readlane_b32 s19, v33, 14
+; SI-NEXT:    s_lshl_b32 s17, s22, 16
+; SI-NEXT:    v_readlane_b32 s18, v33, 1
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s63, 0xffff
-; SI-NEXT:    s_lshl_b32 s18, s34, 16
-; SI-NEXT:    v_readlane_b32 s20, v33, 15
+; SI-NEXT:    s_lshl_b32 s18, s18, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_and_b32 s18, s74, 0xffff
-; SI-NEXT:    s_lshl_b32 s19, s20, 16
-; SI-NEXT:    v_readlane_b32 s20, v33, 3
-; SI-NEXT:    v_readlane_b32 s21, v33, 16
+; SI-NEXT:    s_lshl_b32 s19, s24, 16
 ; SI-NEXT:    s_or_b32 s18, s18, s19
 ; SI-NEXT:    s_and_b32 s19, s75, 0xffff
-; SI-NEXT:    s_lshl_b32 s20, s20, 16
-; SI-NEXT:    v_readlane_b32 s22, v33, 17
+; SI-NEXT:    s_lshl_b32 s20, s95, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s20
 ; SI-NEXT:    s_and_b32 s20, s72, 0xffff
-; SI-NEXT:    s_lshl_b32 s21, s22, 16
-; SI-NEXT:    v_readlane_b32 s22, v33, 0
-; SI-NEXT:    v_readlane_b32 s23, v33, 18
+; SI-NEXT:    s_lshl_b32 s21, s26, 16
 ; SI-NEXT:    s_or_b32 s20, s20, s21
 ; SI-NEXT:    s_and_b32 s21, s73, 0xffff
-; SI-NEXT:    s_lshl_b32 s22, s22, 16
-; SI-NEXT:    v_readlane_b32 s24, v33, 19
+; SI-NEXT:    s_lshl_b32 s22, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s22
 ; SI-NEXT:    s_and_b32 s22, s60, 0xffff
-; SI-NEXT:    s_lshl_b32 s23, s24, 16
-; SI-NEXT:    v_readlane_b32 s25, v33, 20
+; SI-NEXT:    s_lshl_b32 s23, s28, 16
 ; SI-NEXT:    s_or_b32 s22, s22, s23
 ; SI-NEXT:    s_and_b32 s23, s61, 0xffff
 ; SI-NEXT:    s_lshl_b32 s24, s31, 16
-; SI-NEXT:    v_readlane_b32 s26, v33, 21
 ; SI-NEXT:    s_or_b32 s23, s23, s24
 ; SI-NEXT:    s_and_b32 s24, s58, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s26, 16
-; SI-NEXT:    v_readlane_b32 s27, v33, 22
+; SI-NEXT:    s_lshl_b32 s25, s66, 16
 ; SI-NEXT:    s_or_b32 s24, s24, s25
 ; SI-NEXT:    s_and_b32 s25, s59, 0xffff
 ; SI-NEXT:    s_lshl_b32 s26, s35, 16
-; SI-NEXT:    v_readlane_b32 s28, v33, 23
+; SI-NEXT:    v_readlane_b32 s28, v33, 20
 ; SI-NEXT:    s_or_b32 s25, s25, s26
 ; SI-NEXT:    s_and_b32 s26, s56, 0xffff
 ; SI-NEXT:    s_lshl_b32 s27, s28, 16
-; SI-NEXT:    v_readlane_b32 s29, v33, 24
+; SI-NEXT:    v_readlane_b32 s29, v33, 21
 ; SI-NEXT:    s_or_b32 s26, s26, s27
 ; SI-NEXT:    s_and_b32 s27, s57, 0xffff
 ; SI-NEXT:    s_lshl_b32 s28, s37, 16
-; SI-NEXT:    v_readlane_b32 s56, v33, 25
+; SI-NEXT:    v_readlane_b32 s56, v33, 22
 ; SI-NEXT:    s_or_b32 s27, s27, s28
 ; SI-NEXT:    s_and_b32 s28, s46, 0xffff
 ; SI-NEXT:    s_lshl_b32 s29, s56, 16
 ; SI-NEXT:    s_or_b32 s28, s28, s29
 ; SI-NEXT:    s_and_b32 s29, s47, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s93, 16
+; SI-NEXT:    s_lshl_b32 s46, s39, 16
 ; SI-NEXT:    s_or_b32 s29, s29, s46
-; SI-NEXT:    v_readlane_b32 s46, v33, 27
+; SI-NEXT:    v_readlane_b32 s46, v33, 24
 ; SI-NEXT:    s_and_b32 s44, s44, 0xffff
 ; SI-NEXT:    s_lshl_b32 s46, s46, 16
-; SI-NEXT:    v_readlane_b32 s47, v33, 28
+; SI-NEXT:    v_readlane_b32 s47, v33, 25
 ; SI-NEXT:    s_or_b32 s44, s44, s46
 ; SI-NEXT:    s_and_b32 s45, s45, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s65, 16
+; SI-NEXT:    s_lshl_b32 s46, s83, 16
 ; SI-NEXT:    s_or_b32 s45, s45, s46
-; SI-NEXT:    v_readlane_b32 s46, v33, 29
+; SI-NEXT:    v_readlane_b32 s46, v33, 26
 ; SI-NEXT:    s_and_b32 s42, s42, 0xffff
 ; SI-NEXT:    s_lshl_b32 s46, s46, 16
-; SI-NEXT:    v_readlane_b32 s47, v33, 30
+; SI-NEXT:    v_readlane_b32 s47, v33, 27
 ; SI-NEXT:    s_or_b32 s42, s42, s46
 ; SI-NEXT:    s_and_b32 s43, s43, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s90, 16
+; SI-NEXT:    s_lshl_b32 s46, s84, 16
 ; SI-NEXT:    s_or_b32 s43, s43, s46
-; SI-NEXT:    v_readlane_b32 s46, v33, 31
+; SI-NEXT:    v_readlane_b32 s46, v33, 28
 ; SI-NEXT:    s_and_b32 s40, s40, 0xffff
 ; SI-NEXT:    s_lshl_b32 s46, s46, 16
-; SI-NEXT:    v_readlane_b32 s47, v33, 32
+; SI-NEXT:    v_readlane_b32 s47, v33, 29
 ; SI-NEXT:    s_or_b32 s40, s40, s46
 ; SI-NEXT:    s_and_b32 s41, s41, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s92, 16
+; SI-NEXT:    s_lshl_b32 s46, s85, 16
 ; SI-NEXT:    s_or_b32 s41, s41, s46
-; SI-NEXT:    v_readlane_b32 s46, v33, 33
+; SI-NEXT:    v_readlane_b32 s46, v33, 30
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_lshl_b32 s46, s46, 16
-; SI-NEXT:    v_readlane_b32 s47, v33, 34
+; SI-NEXT:    v_readlane_b32 s47, v33, 31
 ; SI-NEXT:    s_or_b32 s14, s14, s46
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s67, 16
+; SI-NEXT:    s_lshl_b32 s46, s86, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s46
-; SI-NEXT:    v_readlane_b32 s46, v33, 35
+; SI-NEXT:    v_readlane_b32 s46, v33, 32
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_lshl_b32 s46, s46, 16
-; SI-NEXT:    v_readlane_b32 s47, v33, 36
+; SI-NEXT:    v_readlane_b32 s47, v33, 33
 ; SI-NEXT:    s_or_b32 s12, s12, s46
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s83, 16
+; SI-NEXT:    s_lshl_b32 s46, s87, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s46
-; SI-NEXT:    v_readlane_b32 s46, v33, 37
+; SI-NEXT:    v_readlane_b32 s46, v33, 34
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_lshl_b32 s46, s46, 16
-; SI-NEXT:    v_readlane_b32 s47, v33, 38
 ; SI-NEXT:    s_or_b32 s10, s10, s46
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s97, 16
+; SI-NEXT:    s_lshl_b32 s46, s96, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s46
-; SI-NEXT:    v_readlane_b32 s46, v33, 39
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s46, 16
+; SI-NEXT:    s_lshl_b32 s46, s52, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s46
 ; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s87, 16
+; SI-NEXT:    s_lshl_b32 s46, s97, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s46
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s64, 16
+; SI-NEXT:    s_lshl_b32 s46, s54, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s46
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s99, 16
+; SI-NEXT:    s_lshl_b32 s46, s98, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s46
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s66, 16
+; SI-NEXT:    s_lshl_b32 s46, s64, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s46
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s98, 16
+; SI-NEXT:    s_lshl_b32 s46, s99, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s46
 ; SI-NEXT:    v_readlane_b32 s30, v32, 34
-; SI-NEXT:    v_readlane_b32 s57, v33, 26
-; SI-NEXT:    v_readlane_b32 s47, v33, 40
+; SI-NEXT:    v_readlane_b32 s57, v33, 23
+; SI-NEXT:    v_readlane_b32 s47, v33, 35
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -230932,68 +231913,6 @@ define inreg <64 x half> @bitcast_v64i16_to_v64f16_scalar(<64 x i16> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB111_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v33, s4, 13
-; SI-NEXT:    v_writelane_b32 v33, s5, 14
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    v_writelane_b32 v33, s4, 15
-; SI-NEXT:    v_writelane_b32 v33, s5, 16
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v33, s4, 17
-; SI-NEXT:    v_writelane_b32 v33, s5, 18
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v33, s4, 19
-; SI-NEXT:    v_writelane_b32 v33, s5, 20
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v33, s4, 21
-; SI-NEXT:    v_writelane_b32 v33, s5, 22
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v33, s4, 23
-; SI-NEXT:    v_writelane_b32 v33, s5, 24
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v33, s4, 25
-; SI-NEXT:    v_writelane_b32 v33, s5, 26
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v33, s4, 27
-; SI-NEXT:    v_writelane_b32 v33, s5, 28
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v33, s4, 29
-; SI-NEXT:    v_writelane_b32 v33, s5, 30
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v33, s4, 31
-; SI-NEXT:    v_writelane_b32 v33, s5, 32
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v33, s4, 33
-; SI-NEXT:    v_writelane_b32 v33, s5, 34
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v33, s4, 35
-; SI-NEXT:    v_writelane_b32 v33, s5, 36
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v33, s4, 37
-; SI-NEXT:    v_writelane_b32 v33, s5, 38
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v33, s4, 39
-; SI-NEXT:    v_writelane_b32 v33, s5, 40
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_branch .LBB111_2
 ;
 ; VI-LABEL: bitcast_v64i16_to_v64f16_scalar:
 ; VI:       ; %bb.0:
@@ -231029,10 +231948,18 @@ define inreg <64 x half> @bitcast_v64i16_to_v64f16_scalar(<64 x i16> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB111_4
+; VI-NEXT:    s_cbranch_scc0 .LBB111_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB111_3
-; VI-NEXT:  .LBB111_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB111_3
+; VI-NEXT:  .LBB111_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB111_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB111_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_and_b32 s4, s47, 0xffff0000
 ; VI-NEXT:    s_add_i32 s5, s47, 3
 ; VI-NEXT:    s_and_b32 s47, s46, 0xffff0000
@@ -231193,7 +232120,7 @@ define inreg <64 x half> @bitcast_v64i16_to_v64f16_scalar(<64 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s45, s45, 0x30000
 ; VI-NEXT:    s_add_i32 s46, s46, 0x30000
 ; VI-NEXT:    s_add_i32 s47, s4, 0x30000
-; VI-NEXT:  .LBB111_3: ; %end
+; VI-NEXT:  .LBB111_5: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 6
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
@@ -231239,8 +232166,6 @@ define inreg <64 x half> @bitcast_v64i16_to_v64f16_scalar(<64 x i16> inreg %a, i
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB111_4:
-; VI-NEXT:    s_branch .LBB111_2
 ;
 ; GFX9-LABEL: bitcast_v64i16_to_v64f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -231278,10 +232203,18 @@ define inreg <64 x half> @bitcast_v64i16_to_v64f16_scalar(<64 x i16> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB111_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB111_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB111_4
-; GFX9-NEXT:  .LBB111_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB111_3
+; GFX9-NEXT:  .LBB111_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB111_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB111_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v15, s31, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v14, s30, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v13, s29, 3 op_sel_hi:[1,0]
@@ -231314,10 +232247,8 @@ define inreg <64 x half> @bitcast_v64i16_to_v64f16_scalar(<64 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v18, s38, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v17, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v16, s36, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB111_5
-; GFX9-NEXT:  .LBB111_3:
-; GFX9-NEXT:    s_branch .LBB111_2
-; GFX9-NEXT:  .LBB111_4:
+; GFX9-NEXT:    s_branch .LBB111_6
+; GFX9-NEXT:  .LBB111_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s37
@@ -231350,7 +232281,7 @@ define inreg <64 x half> @bitcast_v64i16_to_v64f16_scalar(<64 x i16> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB111_5: ; %end
+; GFX9-NEXT:  .LBB111_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s31, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -231404,11 +232335,16 @@ define inreg <64 x half> @bitcast_v64i16_to_v64f16_scalar(<64 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s13, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB111_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB111_4
-; GFX11-NEXT:  .LBB111_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB111_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB111_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB111_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v15, s27, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v14, s26, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v13, s25, 3 op_sel_hi:[1,0]
@@ -231442,8 +232378,6 @@ define inreg <64 x half> @bitcast_v64i16_to_v64f16_scalar(<64 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v17, s37, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v16, s36, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_branch .LBB111_5
-; GFX11-NEXT:  .LBB111_3:
-; GFX11-NEXT:    s_branch .LBB111_2
 ; GFX11-NEXT:  .LBB111_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s36 :: v_dual_mov_b32 v17, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.128bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.128bit.ll
index 7e231f48de12a..c8cef65fd3625 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.128bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.128bit.ll
@@ -93,86 +93,107 @@ define inreg <4 x float> @bitcast_v4i32_to_v4f32_scalar(<4 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v4i32_to_v4f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v4i32_to_v4f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v4i32_to_v4f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -275,18 +296,24 @@ define inreg <4 x i32> @bitcast_v4f32_to_v4i32_scalar(<4 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -297,18 +324,24 @@ define inreg <4 x i32> @bitcast_v4f32_to_v4i32_scalar(<4 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -319,18 +352,24 @@ define inreg <4 x i32> @bitcast_v4f32_to_v4i32_scalar(<4 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -342,18 +381,21 @@ define inreg <4 x i32> @bitcast_v4f32_to_v4i32_scalar(<4 x float> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v3, s3, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v2, s2, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -462,86 +504,107 @@ define inreg <2 x i64> @bitcast_v4i32_to_v2i64_scalar(<4 x i32> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v4i32_to_v2i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v4i32_to_v2i64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v4i32_to_v2i64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -647,86 +710,107 @@ define inreg <4 x i32> @bitcast_v2i64_to_v4i32_scalar(<2 x i64> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s18, s18, 3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v2i64_to_v4i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s18, s18, 3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v2i64_to_v4i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB7_3: ; %end
+; GFX9-NEXT:  .LBB7_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_4:
-; GFX9-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-LABEL: bitcast_v2i64_to_v4i32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_3
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB7_3: ; %end
+; GFX11-NEXT:  .LBB7_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_4:
-; GFX11-NEXT:    s_branch .LBB7_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -831,86 +915,107 @@ define inreg <2 x double> @bitcast_v4i32_to_v2f64_scalar(<4 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v4i32_to_v2f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v4i32_to_v2f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v4i32_to_v2f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1010,16 +1115,22 @@ define inreg <4 x i32> @bitcast_v2f64_to_v4i32_scalar(<2 x double> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1030,16 +1141,22 @@ define inreg <4 x i32> @bitcast_v2f64_to_v4i32_scalar(<2 x double> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1050,16 +1167,22 @@ define inreg <4 x i32> @bitcast_v2f64_to_v4i32_scalar(<2 x double> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1071,16 +1194,19 @@ define inreg <4 x i32> @bitcast_v2f64_to_v4i32_scalar(<2 x double> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1215,14 +1341,26 @@ define inreg <8 x i16> @bitcast_v4i32_to_v8i16_scalar(<4 x i32> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s10, s19, 16
 ; SI-NEXT:    s_lshr_b32 s11, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -1231,7 +1369,7 @@ define inreg <8 x i16> @bitcast_v4i32_to_v8i16_scalar(<4 x i32> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
 ; SI-NEXT:    s_lshr_b32 s10, s19, 16
 ; SI-NEXT:    s_lshr_b32 s11, s17, 16
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s6
@@ -1249,76 +1387,85 @@ define inreg <8 x i16> @bitcast_v4i32_to_v8i16_scalar(<4 x i32> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_v4i32_to_v8i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v4i32_to_v8i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB13_3: ; %end
+; GFX9-NEXT:  .LBB13_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_v4i32_to_v8i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB13_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1486,7 +1633,7 @@ define inreg <4 x i32> @bitcast_v8i16_to_v4i32_scalar(<8 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b32 s12, s17, 16
 ; SI-NEXT:    s_lshr_b32 s13, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s13, 16
@@ -1500,8 +1647,17 @@ define inreg <4 x i32> @bitcast_v8i16_to_v4i32_scalar(<8 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_and_b32 s7, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s10, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s8
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s13, 16
@@ -1522,24 +1678,29 @@ define inreg <4 x i32> @bitcast_v8i16_to_v4i32_scalar(<8 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_add_i32 s5, s5, 0x30000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x30000
 ; SI-NEXT:    s_add_i32 s7, s7, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
+; SI-NEXT:  .LBB15_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v8i16_to_v4i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s19, 3
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -1560,31 +1721,35 @@ define inreg <4 x i32> @bitcast_v8i16_to_v4i32_scalar(<8 x i16> inreg %a, i32 in
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
+; VI-NEXT:  .LBB15_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v8i16_to_v4i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v3, s19, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1596,18 +1761,21 @@ define inreg <4 x i32> @bitcast_v8i16_to_v4i32_scalar(<8 x i16> inreg %a, i32 in
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v3, s3, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1742,14 +1910,26 @@ define inreg <8 x half> @bitcast_v4i32_to_v8f16_scalar(<4 x i32> inreg %a, i32 i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s10, s19, 16
 ; SI-NEXT:    s_lshr_b32 s11, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -1758,7 +1938,7 @@ define inreg <8 x half> @bitcast_v4i32_to_v8f16_scalar(<4 x i32> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
 ; SI-NEXT:    s_lshr_b32 s10, s19, 16
 ; SI-NEXT:    s_lshr_b32 s11, s17, 16
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s6
@@ -1776,76 +1956,85 @@ define inreg <8 x half> @bitcast_v4i32_to_v8f16_scalar(<4 x i32> inreg %a, i32 i
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_v4i32_to_v8f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v4i32_to_v8f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v4i32_to_v8f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB17_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2030,7 +2219,7 @@ define inreg <4 x i32> @bitcast_v8f16_to_v4i32_scalar(<8 x half> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b32 s12, s17, 16
 ; SI-NEXT:    s_lshr_b32 s13, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s13, 16
@@ -2044,8 +2233,17 @@ define inreg <4 x i32> @bitcast_v8f16_to_v4i32_scalar(<8 x half> inreg %a, i32 i
 ; SI-NEXT:    s_and_b32 s7, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s10, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s8
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s13
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s12
@@ -2079,10 +2277,7 @@ define inreg <4 x i32> @bitcast_v8f16_to_v4i32_scalar(<8 x half> inreg %a, i32 i
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -2093,10 +2288,18 @@ define inreg <4 x i32> @bitcast_v8f16_to_v4i32_scalar(<8 x half> inreg %a, i32 i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s19, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -2119,9 +2322,7 @@ define inreg <4 x i32> @bitcast_v8f16_to_v4i32_scalar(<8 x half> inreg %a, i32 i
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v4
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2132,19 +2333,25 @@ define inreg <4 x i32> @bitcast_v8f16_to_v4i32_scalar(<8 x half> inreg %a, i32 i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v3, s19, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2156,18 +2363,21 @@ define inreg <4 x i32> @bitcast_v8f16_to_v4i32_scalar(<8 x half> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v3, 0x200, s3 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2323,7 +2533,7 @@ define inreg <8 x bfloat> @bitcast_v4i32_to_v8bf16_scalar(<4 x i32> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_4
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s7, s19, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s19, 16
@@ -2333,8 +2543,24 @@ define inreg <8 x bfloat> @bitcast_v4i32_to_v8bf16_scalar(<4 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s10, s17, 16
 ; SI-NEXT:    s_and_b32 s13, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s12, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB21_3
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
@@ -2347,7 +2573,7 @@ define inreg <8 x bfloat> @bitcast_v4i32_to_v8bf16_scalar(<4 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s10, s17, 16
 ; SI-NEXT:    s_and_b32 s13, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s12, s16, 16
-; SI-NEXT:  .LBB21_3: ; %end
+; SI-NEXT:  .LBB21_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s13
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s12
@@ -2365,80 +2591,85 @@ define inreg <8 x bfloat> @bitcast_v4i32_to_v8bf16_scalar(<4 x i32> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB21_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB21_2
 ;
 ; VI-LABEL: bitcast_v4i32_to_v8bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_4
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_3
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB21_3: ; %end
+; VI-NEXT:  .LBB21_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB21_4:
-; VI-NEXT:    s_branch .LBB21_2
 ;
 ; GFX9-LABEL: bitcast_v4i32_to_v8bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_3
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB21_3: ; %end
+; GFX9-NEXT:  .LBB21_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB21_4:
-; GFX9-NEXT:    s_branch .LBB21_2
 ;
 ; GFX11-LABEL: bitcast_v4i32_to_v8bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_3
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB21_3: ; %end
+; GFX11-NEXT:  .LBB21_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB21_4:
-; GFX11-NEXT:    s_branch .LBB21_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2903,7 +3134,7 @@ define inreg <4 x i32> @bitcast_v8bf16_to_v4i32_scalar(<8 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v16
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[11:12], 16
@@ -2913,8 +3144,17 @@ define inreg <4 x i32> @bitcast_v8bf16_to_v4i32_scalar(<8 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[7:8], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v13
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[5:6], 16
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v16
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v11
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -2939,20 +3179,25 @@ define inreg <4 x i32> @bitcast_v8bf16_to_v4i32_scalar(<8 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v8bf16_to_v4i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_3
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_4
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s19, 16
 ; VI-NEXT:    v_mov_b32_e32 v7, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v7
@@ -3029,9 +3274,7 @@ define inreg <4 x i32> @bitcast_v8bf16_to_v4i32_scalar(<8 x bfloat> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v1, v5
 ; VI-NEXT:    v_mov_b32_e32 v3, v4
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_3:
-; VI-NEXT:    s_branch .LBB23_2
-; VI-NEXT:  .LBB23_4:
+; VI-NEXT:  .LBB23_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3042,10 +3285,18 @@ define inreg <4 x i32> @bitcast_v8bf16_to_v4i32_scalar(<8 x bfloat> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_4
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s19
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -3125,9 +3376,7 @@ define inreg <4 x i32> @bitcast_v8bf16_to_v4i32_scalar(<8 x bfloat> inreg %a, i3
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v4, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v5, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_3:
-; GFX9-NEXT:    s_branch .LBB23_2
-; GFX9-NEXT:  .LBB23_4:
+; GFX9-NEXT:  .LBB23_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3139,11 +3388,16 @@ define inreg <4 x i32> @bitcast_v8bf16_to_v4i32_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB23_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB23_4
-; GFX11-TRUE16-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-TRUE16-NEXT:  .LBB23_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s4, 0, s3
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s3, s3, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
@@ -3225,8 +3479,6 @@ define inreg <4 x i32> @bitcast_v8bf16_to_v4i32_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v6
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v5.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB23_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB23_2
 ; GFX11-TRUE16-NEXT:  .LBB23_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -3237,11 +3489,16 @@ define inreg <4 x i32> @bitcast_v8bf16_to_v4i32_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB23_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB23_4
-; GFX11-FAKE16-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-FAKE16-NEXT:  .LBB23_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s4, s3, 16
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s3, 0, s3
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
@@ -3328,8 +3585,6 @@ define inreg <4 x i32> @bitcast_v8bf16_to_v4i32_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v7, 16, v8
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB23_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB23_2
 ; GFX11-FAKE16-NEXT:  .LBB23_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -3682,7 +3937,7 @@ define inreg <16 x i8> @bitcast_v4i32_to_v16i8_scalar(<4 x i32> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_4
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s22, s19, 24
 ; SI-NEXT:    s_lshr_b32 s23, s19, 16
@@ -3696,8 +3951,28 @@ define inreg <16 x i8> @bitcast_v4i32_to_v16i8_scalar(<4 x i32> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB25_3
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[20:21], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[20:21], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr23
+; SI-NEXT:    ; implicit-def: $sgpr22
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[20:21], s[20:21], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -3714,7 +3989,7 @@ define inreg <16 x i8> @bitcast_v4i32_to_v16i8_scalar(<4 x i32> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b32 s25, s17, 24
 ; SI-NEXT:    s_lshr_b32 s26, s17, 16
 ; SI-NEXT:    s_lshr_b32 s27, s17, 8
-; SI-NEXT:  .LBB25_3: ; %end
+; SI-NEXT:  .LBB25_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s14
 ; SI-NEXT:    v_mov_b32_e32 v2, s12
@@ -3732,26 +4007,12 @@ define inreg <16 x i8> @bitcast_v4i32_to_v16i8_scalar(<4 x i32> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v14, s23
 ; SI-NEXT:    v_mov_b32_e32 v15, s22
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB25_4:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr23
-; SI-NEXT:    ; implicit-def: $sgpr22
-; SI-NEXT:    s_branch .LBB25_2
 ;
 ; VI-LABEL: bitcast_v4i32_to_v16i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_4
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s10, s19, 24
 ; VI-NEXT:    s_lshr_b32 s11, s19, 16
@@ -3765,8 +4026,28 @@ define inreg <16 x i8> @bitcast_v4i32_to_v16i8_scalar(<4 x i32> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s23, s16, 8
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB25_3
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[8:9], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
+; VI-NEXT:    ; implicit-def: $sgpr23
+; VI-NEXT:    ; implicit-def: $sgpr22
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr21
+; VI-NEXT:    ; implicit-def: $sgpr20
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_add_i32 s19, s19, 3
@@ -3783,7 +4064,7 @@ define inreg <16 x i8> @bitcast_v4i32_to_v16i8_scalar(<4 x i32> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s21, s17, 8
 ; VI-NEXT:    s_lshr_b32 s22, s16, 16
 ; VI-NEXT:    s_lshr_b32 s23, s16, 8
-; VI-NEXT:  .LBB25_3: ; %end
+; VI-NEXT:  .LBB25_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s23
 ; VI-NEXT:    v_mov_b32_e32 v2, s22
@@ -3801,26 +4082,12 @@ define inreg <16 x i8> @bitcast_v4i32_to_v16i8_scalar(<4 x i32> inreg %a, i32 in
 ; VI-NEXT:    v_mov_b32_e32 v14, s11
 ; VI-NEXT:    v_mov_b32_e32 v15, s10
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB25_4:
-; VI-NEXT:    ; implicit-def: $sgpr23
-; VI-NEXT:    ; implicit-def: $sgpr22
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr21
-; VI-NEXT:    ; implicit-def: $sgpr20
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    s_branch .LBB25_2
 ;
 ; GFX9-LABEL: bitcast_v4i32_to_v16i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s10, s19, 24
 ; GFX9-NEXT:    s_lshr_b32 s11, s19, 16
@@ -3834,8 +4101,28 @@ define inreg <16 x i8> @bitcast_v4i32_to_v16i8_scalar(<4 x i32> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b32 s23, s16, 8
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_3
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[8:9], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[8:9], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr23
+; GFX9-NEXT:    ; implicit-def: $sgpr22
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr21
+; GFX9-NEXT:    ; implicit-def: $sgpr20
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
@@ -3852,7 +4139,7 @@ define inreg <16 x i8> @bitcast_v4i32_to_v16i8_scalar(<4 x i32> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b32 s21, s17, 8
 ; GFX9-NEXT:    s_lshr_b32 s22, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s23, s16, 8
-; GFX9-NEXT:  .LBB25_3: ; %end
+; GFX9-NEXT:  .LBB25_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s23
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s22
@@ -3870,27 +4157,13 @@ define inreg <16 x i8> @bitcast_v4i32_to_v16i8_scalar(<4 x i32> inreg %a, i32 in
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s11
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s10
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB25_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr23
-; GFX9-NEXT:    ; implicit-def: $sgpr22
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr21
-; GFX9-NEXT:    ; implicit-def: $sgpr20
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    s_branch .LBB25_2
 ;
 ; GFX11-LABEL: bitcast_v4i32_to_v16i8_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s18, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s8, s3, 24
 ; GFX11-NEXT:    s_lshr_b32 s9, s3, 16
@@ -3904,9 +4177,28 @@ define inreg <16 x i8> @bitcast_v4i32_to_v16i8_scalar(<4 x i32> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b32 s17, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s18
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_3
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB25_3
+; GFX11-NEXT:  .LBB25_2:
+; GFX11-NEXT:    s_mov_b32 s18, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr17
+; GFX11-NEXT:    ; implicit-def: $sgpr16
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:  .LBB25_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s18, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -3923,7 +4215,7 @@ define inreg <16 x i8> @bitcast_v4i32_to_v16i8_scalar(<4 x i32> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b32 s15, s1, 8
 ; GFX11-NEXT:    s_lshr_b32 s16, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s17, s0, 8
-; GFX11-NEXT:  .LBB25_3: ; %end
+; GFX11-NEXT:  .LBB25_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s16 :: v_dual_mov_b32 v3, s6
@@ -3934,20 +4226,6 @@ define inreg <16 x i8> @bitcast_v4i32_to_v16i8_scalar(<4 x i32> inreg %a, i32 in
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s3 :: v_dual_mov_b32 v13, s10
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s9 :: v_dual_mov_b32 v15, s8
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB25_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr17
-; GFX11-NEXT:    ; implicit-def: $sgpr16
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    s_branch .LBB25_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -4498,7 +4776,7 @@ define inreg <4 x i32> @bitcast_v16i8_to_v4i32_scalar(<16 x i8> inreg %a, i32 in
 ; SI-NEXT:    v_readfirstlane_b32 s10, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s11, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB27_4
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -4536,8 +4814,17 @@ define inreg <4 x i32> @bitcast_v16i8_to_v4i32_scalar(<16 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_or_b32 s7, s7, s8
-; SI-NEXT:    s_cbranch_execnz .LBB27_3
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -4590,15 +4877,12 @@ define inreg <4 x i32> @bitcast_v16i8_to_v4i32_scalar(<16 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x3000000
 ; SI-NEXT:    s_add_i32 s7, s7, 0x3000000
-; SI-NEXT:  .LBB27_3: ; %end
+; SI-NEXT:  .LBB27_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB27_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
-; SI-NEXT:    s_branch .LBB27_2
 ;
 ; VI-LABEL: bitcast_v16i8_to_v4i32_scalar:
 ; VI:       ; %bb.0:
@@ -4607,7 +4891,7 @@ define inreg <4 x i32> @bitcast_v16i8_to_v4i32_scalar(<16 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_4
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -4634,8 +4918,17 @@ define inreg <4 x i32> @bitcast_v16i8_to_v4i32_scalar(<16 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_perm_b32 v3, s7, v5, v3
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    s_cbranch_execnz .LBB27_3
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
@@ -4677,11 +4970,8 @@ define inreg <4 x i32> @bitcast_v16i8_to_v4i32_scalar(<16 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
 ; VI-NEXT:    v_add_u32_e32 v2, vcc, 0x3000000, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x3000000, v3
-; VI-NEXT:  .LBB27_3: ; %end
+; VI-NEXT:  .LBB27_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB27_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; VI-NEXT:    s_branch .LBB27_2
 ;
 ; GFX9-LABEL: bitcast_v16i8_to_v4i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -4690,7 +4980,7 @@ define inreg <4 x i32> @bitcast_v16i8_to_v4i32_scalar(<16 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -4717,8 +5007,17 @@ define inreg <4 x i32> @bitcast_v16i8_to_v4i32_scalar(<16 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_perm_b32 v3, s7, v5, v3
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v3, v4, v3
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_3
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
@@ -4757,18 +5056,15 @@ define inreg <4 x i32> @bitcast_v16i8_to_v4i32_scalar(<16 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_add_u32_e32 v4, 0x300, v4
 ; GFX9-NEXT:    v_add_u32_sdwa v3, v3, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v3, v4, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB27_3: ; %end
+; GFX9-NEXT:  .LBB27_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB27_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX9-NEXT:    s_branch .LBB27_2
 ;
 ; GFX11-LABEL: bitcast_v16i8_to_v4i32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
@@ -4790,9 +5086,17 @@ define inreg <4 x i32> @bitcast_v16i8_to_v4i32_scalar(<16 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v4
 ; GFX11-NEXT:    v_or_b32_e32 v3, v8, v6
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_3
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB27_3
+; GFX11-NEXT:  .LBB27_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX11-NEXT:  .LBB27_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -4831,11 +5135,8 @@ define inreg <4 x i32> @bitcast_v16i8_to_v4i32_scalar(<16 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v6
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v3, v7, v8
-; GFX11-NEXT:  .LBB27_3: ; %end
+; GFX11-NEXT:  .LBB27_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB27_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX11-NEXT:    s_branch .LBB27_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -4938,18 +5239,24 @@ define inreg <2 x i64> @bitcast_v4f32_to_v2i64_scalar(<4 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4960,18 +5267,24 @@ define inreg <2 x i64> @bitcast_v4f32_to_v2i64_scalar(<4 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4982,18 +5295,24 @@ define inreg <2 x i64> @bitcast_v4f32_to_v2i64_scalar(<4 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5005,18 +5324,21 @@ define inreg <2 x i64> @bitcast_v4f32_to_v2i64_scalar(<4 x float> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB29_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB29_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v3, s3, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v2, s2, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB29_3:
-; GFX11-NEXT:    s_branch .LBB29_2
 ; GFX11-NEXT:  .LBB29_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -5126,86 +5448,107 @@ define inreg <4 x float> @bitcast_v2i64_to_v4f32_scalar(<2 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_4
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB31_3
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s18, s18, 3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB31_3: ; %end
+; SI-NEXT:  .LBB31_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_4:
-; SI-NEXT:    s_branch .LBB31_2
 ;
 ; VI-LABEL: bitcast_v2i64_to_v4f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_4
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB31_3
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s18, s18, 3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB31_3: ; %end
+; VI-NEXT:  .LBB31_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_4:
-; VI-NEXT:    s_branch .LBB31_2
 ;
 ; GFX9-LABEL: bitcast_v2i64_to_v4f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_3
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB31_3: ; %end
+; GFX9-NEXT:  .LBB31_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB31_4:
-; GFX9-NEXT:    s_branch .LBB31_2
 ;
 ; GFX11-LABEL: bitcast_v2i64_to_v4f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_3
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB31_3: ; %end
+; GFX11-NEXT:  .LBB31_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_4:
-; GFX11-NEXT:    s_branch .LBB31_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -5308,18 +5651,24 @@ define inreg <2 x double> @bitcast_v4f32_to_v2f64_scalar(<4 x float> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5330,18 +5679,24 @@ define inreg <2 x double> @bitcast_v4f32_to_v2f64_scalar(<4 x float> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5352,18 +5707,24 @@ define inreg <2 x double> @bitcast_v4f32_to_v2f64_scalar(<4 x float> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5375,18 +5736,21 @@ define inreg <2 x double> @bitcast_v4f32_to_v2f64_scalar(<4 x float> inreg %a, i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB33_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB33_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v3, s3, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v2, s2, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB33_3:
-; GFX11-NEXT:    s_branch .LBB33_2
 ; GFX11-NEXT:  .LBB33_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -5490,16 +5854,22 @@ define inreg <4 x float> @bitcast_v2f64_to_v4f32_scalar(<2 x double> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_3
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB35_4
-; SI-NEXT:  .LBB35_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB35_3:
-; SI-NEXT:    s_branch .LBB35_2
-; SI-NEXT:  .LBB35_4:
+; SI-NEXT:  .LBB35_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5510,16 +5880,22 @@ define inreg <4 x float> @bitcast_v2f64_to_v4f32_scalar(<2 x double> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5530,16 +5906,22 @@ define inreg <4 x float> @bitcast_v2f64_to_v4f32_scalar(<2 x double> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5551,16 +5933,19 @@ define inreg <4 x float> @bitcast_v2f64_to_v4f32_scalar(<2 x double> inreg %a, i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -5693,14 +6078,26 @@ define inreg <8 x i16> @bitcast_v4f32_to_v8i16_scalar(<4 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_3
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s11, s19, 16
 ; SI-NEXT:    s_lshr_b32 s10, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB37_4
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
@@ -5709,14 +6106,8 @@ define inreg <8 x i16> @bitcast_v4f32_to_v8i16_scalar(<4 x float> inreg %a, i32
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[0:1], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v1
-; SI-NEXT:    s_branch .LBB37_5
-; SI-NEXT:  .LBB37_3:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    s_branch .LBB37_2
-; SI-NEXT:  .LBB37_4:
+; SI-NEXT:    s_branch .LBB37_6
+; SI-NEXT:  .LBB37_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5725,7 +6116,7 @@ define inreg <8 x i16> @bitcast_v4f32_to_v8i16_scalar(<4 x float> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s11
 ; SI-NEXT:    v_mov_b32_e32 v4, s4
 ; SI-NEXT:    v_mov_b32_e32 v5, s6
-; SI-NEXT:  .LBB37_5: ; %end
+; SI-NEXT:  .LBB37_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -5744,18 +6135,24 @@ define inreg <8 x i16> @bitcast_v4f32_to_v8i16_scalar(<4 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_3
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_4
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_3:
-; VI-NEXT:    s_branch .LBB37_2
-; VI-NEXT:  .LBB37_4:
+; VI-NEXT:  .LBB37_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5766,18 +6163,24 @@ define inreg <8 x i16> @bitcast_v4f32_to_v8i16_scalar(<4 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_4
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_3:
-; GFX9-NEXT:    s_branch .LBB37_2
-; GFX9-NEXT:  .LBB37_4:
+; GFX9-NEXT:  .LBB37_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5789,18 +6192,21 @@ define inreg <8 x i16> @bitcast_v4f32_to_v8i16_scalar(<4 x float> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_4
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v3, s3, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v2, s2, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_3:
-; GFX11-NEXT:    s_branch .LBB37_2
 ; GFX11-NEXT:  .LBB37_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -5972,7 +6378,7 @@ define inreg <4 x float> @bitcast_v8i16_to_v4f32_scalar(<8 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s12, s17, 16
 ; SI-NEXT:    s_lshr_b32 s13, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_4
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s13, 16
@@ -5986,8 +6392,17 @@ define inreg <4 x float> @bitcast_v8i16_to_v4f32_scalar(<8 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s7, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s10, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s8
-; SI-NEXT:    s_cbranch_execnz .LBB39_3
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s13, 16
@@ -6008,24 +6423,29 @@ define inreg <4 x float> @bitcast_v8i16_to_v4f32_scalar(<8 x i16> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s5, s5, 0x30000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x30000
 ; SI-NEXT:    s_add_i32 s7, s7, 0x30000
-; SI-NEXT:  .LBB39_3: ; %end
+; SI-NEXT:  .LBB39_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB39_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
-; SI-NEXT:    s_branch .LBB39_2
 ;
 ; VI-LABEL: bitcast_v8i16_to_v4f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_4
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_3
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s19, 3
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -6046,31 +6466,35 @@ define inreg <4 x float> @bitcast_v8i16_to_v4f32_scalar(<8 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB39_3: ; %end
+; VI-NEXT:  .LBB39_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB39_4:
-; VI-NEXT:    s_branch .LBB39_2
 ;
 ; GFX9-LABEL: bitcast_v8i16_to_v4f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_4
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v3, s19, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB39_3:
-; GFX9-NEXT:    s_branch .LBB39_2
-; GFX9-NEXT:  .LBB39_4:
+; GFX9-NEXT:  .LBB39_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6082,18 +6506,21 @@ define inreg <4 x float> @bitcast_v8i16_to_v4f32_scalar(<8 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v3, s3, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB39_3:
-; GFX11-NEXT:    s_branch .LBB39_2
 ; GFX11-NEXT:  .LBB39_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -6226,14 +6653,26 @@ define inreg <8 x half> @bitcast_v4f32_to_v8f16_scalar(<4 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_3
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s11, s19, 16
 ; SI-NEXT:    s_lshr_b32 s10, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB41_4
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
@@ -6242,14 +6681,8 @@ define inreg <8 x half> @bitcast_v4f32_to_v8f16_scalar(<4 x float> inreg %a, i32
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[0:1], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v1
-; SI-NEXT:    s_branch .LBB41_5
-; SI-NEXT:  .LBB41_3:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    s_branch .LBB41_2
-; SI-NEXT:  .LBB41_4:
+; SI-NEXT:    s_branch .LBB41_6
+; SI-NEXT:  .LBB41_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6258,7 +6691,7 @@ define inreg <8 x half> @bitcast_v4f32_to_v8f16_scalar(<4 x float> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s11
 ; SI-NEXT:    v_mov_b32_e32 v4, s4
 ; SI-NEXT:    v_mov_b32_e32 v5, s6
-; SI-NEXT:  .LBB41_5: ; %end
+; SI-NEXT:  .LBB41_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -6277,18 +6710,24 @@ define inreg <8 x half> @bitcast_v4f32_to_v8f16_scalar(<4 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_3
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB41_4
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_3:
-; VI-NEXT:    s_branch .LBB41_2
-; VI-NEXT:  .LBB41_4:
+; VI-NEXT:  .LBB41_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6299,18 +6738,24 @@ define inreg <8 x half> @bitcast_v4f32_to_v8f16_scalar(<4 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_4
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_3:
-; GFX9-NEXT:    s_branch .LBB41_2
-; GFX9-NEXT:  .LBB41_4:
+; GFX9-NEXT:  .LBB41_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6322,18 +6767,21 @@ define inreg <8 x half> @bitcast_v4f32_to_v8f16_scalar(<4 x float> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_4
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB41_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v3, s3, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v2, s2, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_3:
-; GFX11-NEXT:    s_branch .LBB41_2
 ; GFX11-NEXT:  .LBB41_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -6522,7 +6970,7 @@ define inreg <4 x float> @bitcast_v8f16_to_v4f32_scalar(<8 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s12, s17, 16
 ; SI-NEXT:    s_lshr_b32 s13, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_3
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s13, 16
@@ -6536,8 +6984,17 @@ define inreg <4 x float> @bitcast_v8f16_to_v4f32_scalar(<8 x half> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s7, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s10, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s8
-; SI-NEXT:    s_cbranch_execnz .LBB43_4
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s13
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s12
@@ -6571,10 +7028,7 @@ define inreg <4 x float> @bitcast_v8f16_to_v4f32_scalar(<8 x half> inreg %a, i32
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB43_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
-; SI-NEXT:    s_branch .LBB43_2
-; SI-NEXT:  .LBB43_4:
+; SI-NEXT:  .LBB43_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -6585,10 +7039,18 @@ define inreg <4 x float> @bitcast_v8f16_to_v4f32_scalar(<8 x half> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_3
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB43_4
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s19, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -6611,9 +7073,7 @@ define inreg <4 x float> @bitcast_v8f16_to_v4f32_scalar(<8 x half> inreg %a, i32
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v4
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_3:
-; VI-NEXT:    s_branch .LBB43_2
-; VI-NEXT:  .LBB43_4:
+; VI-NEXT:  .LBB43_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6624,19 +7084,25 @@ define inreg <4 x float> @bitcast_v8f16_to_v4f32_scalar(<8 x half> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v3, s19, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6648,18 +7114,21 @@ define inreg <4 x float> @bitcast_v8f16_to_v4f32_scalar(<8 x half> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB43_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v3, 0x200, s3 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_3:
-; GFX11-NEXT:    s_branch .LBB43_2
 ; GFX11-NEXT:  .LBB43_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -6813,7 +7282,7 @@ define inreg <8 x bfloat> @bitcast_v4f32_to_v8bf16_scalar(<4 x float> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_3
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s6, s19, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s7, s19, 16
@@ -6823,8 +7292,24 @@ define inreg <8 x bfloat> @bitcast_v4f32_to_v8bf16_scalar(<4 x float> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s11, s17, 16
 ; SI-NEXT:    s_and_b32 s12, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s13, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB45_4
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
@@ -6837,18 +7322,8 @@ define inreg <8 x bfloat> @bitcast_v4f32_to_v8bf16_scalar(<4 x float> inreg %a,
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v1
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
-; SI-NEXT:    s_branch .LBB45_5
-; SI-NEXT:  .LBB45_3:
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB45_2
-; SI-NEXT:  .LBB45_4:
+; SI-NEXT:    s_branch .LBB45_6
+; SI-NEXT:  .LBB45_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s13
 ; SI-NEXT:    v_mov_b32_e32 v1, s12
 ; SI-NEXT:    v_mov_b32_e32 v2, s11
@@ -6857,7 +7332,7 @@ define inreg <8 x bfloat> @bitcast_v4f32_to_v8bf16_scalar(<4 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v6, s8
 ; SI-NEXT:    v_mov_b32_e32 v4, s7
 ; SI-NEXT:    v_mov_b32_e32 v5, s6
-; SI-NEXT:  .LBB45_5: ; %end
+; SI-NEXT:  .LBB45_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
@@ -6880,18 +7355,24 @@ define inreg <8 x bfloat> @bitcast_v4f32_to_v8bf16_scalar(<4 x float> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_3
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB45_4
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_3:
-; VI-NEXT:    s_branch .LBB45_2
-; VI-NEXT:  .LBB45_4:
+; VI-NEXT:  .LBB45_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6902,18 +7383,24 @@ define inreg <8 x bfloat> @bitcast_v4f32_to_v8bf16_scalar(<4 x float> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_4
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_3:
-; GFX9-NEXT:    s_branch .LBB45_2
-; GFX9-NEXT:  .LBB45_4:
+; GFX9-NEXT:  .LBB45_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6925,18 +7412,21 @@ define inreg <8 x bfloat> @bitcast_v4f32_to_v8bf16_scalar(<4 x float> inreg %a,
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_4
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB45_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v3, s3, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v2, s2, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_3:
-; GFX11-NEXT:    s_branch .LBB45_2
 ; GFX11-NEXT:  .LBB45_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -7405,7 +7895,7 @@ define inreg <4 x float> @bitcast_v8bf16_to_v4f32_scalar(<8 x bfloat> inreg %a,
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB47_4
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v16
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[11:12], 16
@@ -7415,8 +7905,17 @@ define inreg <4 x float> @bitcast_v8bf16_to_v4f32_scalar(<8 x bfloat> inreg %a,
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[7:8], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v13
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[5:6], 16
-; SI-NEXT:    s_cbranch_execnz .LBB47_3
-; SI-NEXT:  .LBB47_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v16
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v11
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -7441,20 +7940,25 @@ define inreg <4 x float> @bitcast_v8bf16_to_v4f32_scalar(<8 x bfloat> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
-; SI-NEXT:  .LBB47_3: ; %end
+; SI-NEXT:  .LBB47_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB47_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; SI-NEXT:    s_branch .LBB47_2
 ;
 ; VI-LABEL: bitcast_v8bf16_to_v4f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s19, 16
 ; VI-NEXT:    v_mov_b32_e32 v7, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v7
@@ -7531,9 +8035,7 @@ define inreg <4 x float> @bitcast_v8bf16_to_v4f32_scalar(<8 x bfloat> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v1, v5
 ; VI-NEXT:    v_mov_b32_e32 v3, v4
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7544,10 +8046,18 @@ define inreg <4 x float> @bitcast_v8bf16_to_v4f32_scalar(<8 x bfloat> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s19
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -7627,9 +8137,7 @@ define inreg <4 x float> @bitcast_v8bf16_to_v4f32_scalar(<8 x bfloat> inreg %a,
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v4, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v5, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -7641,11 +8149,16 @@ define inreg <4 x float> @bitcast_v8bf16_to_v4f32_scalar(<8 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-TRUE16-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-TRUE16-NEXT:  .LBB47_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s4, 0, s3
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s3, s3, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
@@ -7727,8 +8240,6 @@ define inreg <4 x float> @bitcast_v8bf16_to_v4f32_scalar(<8 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v6
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v5.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB47_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB47_2
 ; GFX11-TRUE16-NEXT:  .LBB47_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -7739,11 +8250,16 @@ define inreg <4 x float> @bitcast_v8bf16_to_v4f32_scalar(<8 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-FAKE16-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-FAKE16-NEXT:  .LBB47_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s4, s3, 16
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s3, 0, s3
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
@@ -7830,8 +8346,6 @@ define inreg <4 x float> @bitcast_v8bf16_to_v4f32_scalar(<8 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v7, 16, v8
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB47_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB47_2
 ; GFX11-FAKE16-NEXT:  .LBB47_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -8180,7 +8694,7 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_3
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s24, s19, 24
 ; SI-NEXT:    s_lshr_b32 s26, s19, 16
@@ -8194,8 +8708,28 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB49_4
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[20:21], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[20:21], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr23
+; SI-NEXT:    ; implicit-def: $sgpr22
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[20:21], s[20:21], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v21, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v20, s16, 1.0
 ; SI-NEXT:    v_add_f32_e64 v19, s19, 1.0
@@ -8212,22 +8746,8 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v21
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v21
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 8, v21
-; SI-NEXT:    s_branch .LBB49_5
-; SI-NEXT:  .LBB49_3:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr23
-; SI-NEXT:    ; implicit-def: $sgpr22
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    s_branch .LBB49_2
-; SI-NEXT:  .LBB49_4:
+; SI-NEXT:    s_branch .LBB49_6
+; SI-NEXT:  .LBB49_5:
 ; SI-NEXT:    v_mov_b32_e32 v20, s16
 ; SI-NEXT:    v_mov_b32_e32 v21, s17
 ; SI-NEXT:    v_mov_b32_e32 v18, s18
@@ -8244,7 +8764,7 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v3, s4
 ; SI-NEXT:    v_mov_b32_e32 v0, s6
 ; SI-NEXT:    v_mov_b32_e32 v1, s8
-; SI-NEXT:  .LBB49_5: ; %end
+; SI-NEXT:  .LBB49_6: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v2, v0
 ; SI-NEXT:    v_mov_b32_e32 v0, v20
 ; SI-NEXT:    v_mov_b32_e32 v4, v21
@@ -8257,7 +8777,7 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_3
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s10, s19, 24
 ; VI-NEXT:    s_lshr_b32 s11, s19, 16
@@ -8271,8 +8791,28 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s23, s16, 8
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB49_4
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[8:9], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
+; VI-NEXT:    ; implicit-def: $sgpr23
+; VI-NEXT:    ; implicit-def: $sgpr21
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr22
+; VI-NEXT:    ; implicit-def: $sgpr20
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v19, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v18, s16, 1.0
 ; VI-NEXT:    v_add_f32_e64 v17, s19, 1.0
@@ -8289,22 +8829,8 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; VI-NEXT:    v_lshrrev_b32_e32 v5, 8, v19
 ; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v18
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 8, v18
-; VI-NEXT:    s_branch .LBB49_5
-; VI-NEXT:  .LBB49_3:
-; VI-NEXT:    ; implicit-def: $sgpr23
-; VI-NEXT:    ; implicit-def: $sgpr21
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr22
-; VI-NEXT:    ; implicit-def: $sgpr20
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    s_branch .LBB49_2
-; VI-NEXT:  .LBB49_4:
+; VI-NEXT:    s_branch .LBB49_6
+; VI-NEXT:  .LBB49_5:
 ; VI-NEXT:    v_mov_b32_e32 v18, s16
 ; VI-NEXT:    v_mov_b32_e32 v19, s17
 ; VI-NEXT:    v_mov_b32_e32 v16, s18
@@ -8321,7 +8847,7 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v15, s10
 ; VI-NEXT:    v_mov_b32_e32 v11, s6
 ; VI-NEXT:    v_mov_b32_e32 v3, s4
-; VI-NEXT:  .LBB49_5: ; %end
+; VI-NEXT:  .LBB49_6: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, v18
 ; VI-NEXT:    v_mov_b32_e32 v4, v19
 ; VI-NEXT:    v_mov_b32_e32 v8, v16
@@ -8332,7 +8858,7 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s10, s19, 24
 ; GFX9-NEXT:    s_lshr_b32 s11, s19, 16
@@ -8346,8 +8872,28 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b32 s23, s16, 8
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[8:9], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[8:9], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr23
+; GFX9-NEXT:    ; implicit-def: $sgpr21
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr22
+; GFX9-NEXT:    ; implicit-def: $sgpr20
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v19, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v18, s16, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v17, s19, 1.0
@@ -8364,22 +8910,8 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v19
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v18
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v18
-; GFX9-NEXT:    s_branch .LBB49_5
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr23
-; GFX9-NEXT:    ; implicit-def: $sgpr21
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr22
-; GFX9-NEXT:    ; implicit-def: $sgpr20
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:    s_branch .LBB49_6
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s18
@@ -8396,7 +8928,7 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s10
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:  .LBB49_5: ; %end
+; GFX9-NEXT:  .LBB49_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, v18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v19
 ; GFX9-NEXT:    v_mov_b32_e32 v8, v16
@@ -8408,7 +8940,7 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s9, s3, 24
 ; GFX11-NEXT:    s_lshr_b32 s10, s3, 16
@@ -8422,9 +8954,28 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b32 s18, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB49_3
+; GFX11-NEXT:  .LBB49_2:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr18
+; GFX11-NEXT:    ; implicit-def: $sgpr16
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr17
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:  .LBB49_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v19, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v17, s3, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v16, s2, 1.0
@@ -8443,22 +8994,8 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v19
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v18
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v18
-; GFX11-NEXT:    s_branch .LBB49_5
-; GFX11-NEXT:  .LBB49_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr18
-; GFX11-NEXT:    ; implicit-def: $sgpr16
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr17
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    s_branch .LBB49_2
-; GFX11-NEXT:  .LBB49_4:
+; GFX11-NEXT:    s_branch .LBB49_6
+; GFX11-NEXT:  .LBB49_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s0 :: v_dual_mov_b32 v19, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s2 :: v_dual_mov_b32 v17, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v1, s18 :: v_dual_mov_b32 v2, s16
@@ -8469,7 +9006,7 @@ define inreg <16 x i8> @bitcast_v4f32_to_v16i8_scalar(<4 x float> inreg %a, i32
 ; GFX11-NEXT:    v_mov_b32_e32 v15, s9
 ; GFX11-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX11-NEXT:    v_mov_b32_e32 v3, s4
-; GFX11-NEXT:  .LBB49_5: ; %end
+; GFX11-NEXT:  .LBB49_6: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v0, v18
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v19
 ; GFX11-NEXT:    v_mov_b32_e32 v8, v16
@@ -9025,7 +9562,7 @@ define inreg <4 x float> @bitcast_v16i8_to_v4f32_scalar(<16 x i8> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s10, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s11, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -9063,8 +9600,17 @@ define inreg <4 x float> @bitcast_v16i8_to_v4f32_scalar(<16 x i8> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_or_b32 s7, s7, s8
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -9117,15 +9663,12 @@ define inreg <4 x float> @bitcast_v16i8_to_v4f32_scalar(<16 x i8> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x3000000
 ; SI-NEXT:    s_add_i32 s7, s7, 0x3000000
-; SI-NEXT:  .LBB51_3: ; %end
+; SI-NEXT:  .LBB51_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v16i8_to_v4f32_scalar:
 ; VI:       ; %bb.0:
@@ -9134,7 +9677,7 @@ define inreg <4 x float> @bitcast_v16i8_to_v4f32_scalar(<16 x i8> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -9161,8 +9704,17 @@ define inreg <4 x float> @bitcast_v16i8_to_v4f32_scalar(<16 x i8> inreg %a, i32
 ; VI-NEXT:    v_perm_b32 v3, s7, v5, v3
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
@@ -9204,11 +9756,8 @@ define inreg <4 x float> @bitcast_v16i8_to_v4f32_scalar(<16 x i8> inreg %a, i32
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
 ; VI-NEXT:    v_add_u32_e32 v2, vcc, 0x3000000, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x3000000, v3
-; VI-NEXT:  .LBB51_3: ; %end
+; VI-NEXT:  .LBB51_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v16i8_to_v4f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -9217,7 +9766,7 @@ define inreg <4 x float> @bitcast_v16i8_to_v4f32_scalar(<16 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -9244,8 +9793,17 @@ define inreg <4 x float> @bitcast_v16i8_to_v4f32_scalar(<16 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_perm_b32 v3, s7, v5, v3
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v3, v4, v3
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_3
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
@@ -9284,18 +9842,15 @@ define inreg <4 x float> @bitcast_v16i8_to_v4f32_scalar(<16 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_add_u32_e32 v4, 0x300, v4
 ; GFX9-NEXT:    v_add_u32_sdwa v3, v3, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v3, v4, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB51_3: ; %end
+; GFX9-NEXT:  .LBB51_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB51_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX9-NEXT:    s_branch .LBB51_2
 ;
 ; GFX11-LABEL: bitcast_v16i8_to_v4f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB51_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
@@ -9317,9 +9872,17 @@ define inreg <4 x float> @bitcast_v16i8_to_v4f32_scalar(<16 x i8> inreg %a, i32
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v4
 ; GFX11-NEXT:    v_or_b32_e32 v3, v8, v6
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB51_3
-; GFX11-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB51_3
+; GFX11-NEXT:  .LBB51_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX11-NEXT:  .LBB51_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -9358,11 +9921,8 @@ define inreg <4 x float> @bitcast_v16i8_to_v4f32_scalar(<16 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v6
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v3, v7, v8
-; GFX11-NEXT:  .LBB51_3: ; %end
+; GFX11-NEXT:  .LBB51_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB51_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX11-NEXT:    s_branch .LBB51_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -9468,85 +10028,106 @@ define inreg <2 x double> @bitcast_v2i64_to_v2f64_scalar(<2 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_4
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB53_3
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
-; SI-NEXT:  .LBB53_3: ; %end
+; SI-NEXT:  .LBB53_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB53_4:
-; SI-NEXT:    s_branch .LBB53_2
 ;
 ; VI-LABEL: bitcast_v2i64_to_v2f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_4
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB53_3
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
-; VI-NEXT:  .LBB53_3: ; %end
+; VI-NEXT:  .LBB53_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB53_4:
-; VI-NEXT:    s_branch .LBB53_2
 ;
 ; GFX9-LABEL: bitcast_v2i64_to_v2f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_3
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
-; GFX9-NEXT:  .LBB53_3: ; %end
+; GFX9-NEXT:  .LBB53_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB53_4:
-; GFX9-NEXT:    s_branch .LBB53_2
 ;
 ; GFX11-LABEL: bitcast_v2i64_to_v2f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB53_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB53_3
-; GFX11-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB53_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
-; GFX11-NEXT:  .LBB53_3: ; %end
+; GFX11-NEXT:  .LBB53_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB53_4:
-; GFX11-NEXT:    s_branch .LBB53_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -9646,16 +10227,22 @@ define inreg <2 x i64> @bitcast_v2f64_to_v2i64_scalar(<2 x double> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -9666,16 +10253,22 @@ define inreg <2 x i64> @bitcast_v2f64_to_v2i64_scalar(<2 x double> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -9686,16 +10279,22 @@ define inreg <2 x i64> @bitcast_v2f64_to_v2i64_scalar(<2 x double> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -9707,16 +10306,19 @@ define inreg <2 x i64> @bitcast_v2f64_to_v2i64_scalar(<2 x double> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -9852,14 +10454,26 @@ define inreg <8 x i16> @bitcast_v2i64_to_v8i16_scalar(<2 x i64> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s10, s19, 16
 ; SI-NEXT:    s_lshr_b32 s11, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s18, s18, 3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
@@ -9868,7 +10482,7 @@ define inreg <8 x i16> @bitcast_v2i64_to_v8i16_scalar(<2 x i64> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b32 s11, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:  .LBB57_3: ; %end
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s6
@@ -9886,76 +10500,85 @@ define inreg <8 x i16> @bitcast_v2i64_to_v8i16_scalar(<2 x i64> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v2i64_to_v8i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s18, s18, 3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v2i64_to_v8i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_3
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB57_3: ; %end
+; GFX9-NEXT:  .LBB57_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB57_4:
-; GFX9-NEXT:    s_branch .LBB57_2
 ;
 ; GFX11-LABEL: bitcast_v2i64_to_v8i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB57_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB57_3
-; GFX11-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB57_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB57_3: ; %end
+; GFX11-NEXT:  .LBB57_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB57_4:
-; GFX11-NEXT:    s_branch .LBB57_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -10123,7 +10746,7 @@ define inreg <2 x i64> @bitcast_v8i16_to_v2i64_scalar(<8 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b32 s12, s17, 16
 ; SI-NEXT:    s_lshr_b32 s13, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_4
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s13, 16
@@ -10137,8 +10760,17 @@ define inreg <2 x i64> @bitcast_v8i16_to_v2i64_scalar(<8 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_and_b32 s7, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s10, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s8
-; SI-NEXT:    s_cbranch_execnz .LBB59_3
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s13, 16
@@ -10159,24 +10791,29 @@ define inreg <2 x i64> @bitcast_v8i16_to_v2i64_scalar(<8 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_add_i32 s5, s5, 0x30000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x30000
 ; SI-NEXT:    s_add_i32 s7, s7, 0x30000
-; SI-NEXT:  .LBB59_3: ; %end
+; SI-NEXT:  .LBB59_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB59_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
-; SI-NEXT:    s_branch .LBB59_2
 ;
 ; VI-LABEL: bitcast_v8i16_to_v2i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_4
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_3
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s19, 3
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -10197,31 +10834,35 @@ define inreg <2 x i64> @bitcast_v8i16_to_v2i64_scalar(<8 x i16> inreg %a, i32 in
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB59_3: ; %end
+; VI-NEXT:  .LBB59_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB59_4:
-; VI-NEXT:    s_branch .LBB59_2
 ;
 ; GFX9-LABEL: bitcast_v8i16_to_v2i64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_4
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v3, s19, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB59_3:
-; GFX9-NEXT:    s_branch .LBB59_2
-; GFX9-NEXT:  .LBB59_4:
+; GFX9-NEXT:  .LBB59_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -10233,18 +10874,21 @@ define inreg <2 x i64> @bitcast_v8i16_to_v2i64_scalar(<8 x i16> inreg %a, i32 in
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB59_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v3, s3, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB59_3:
-; GFX11-NEXT:    s_branch .LBB59_2
 ; GFX11-NEXT:  .LBB59_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -10380,14 +11024,26 @@ define inreg <8 x half> @bitcast_v2i64_to_v8f16_scalar(<2 x i64> inreg %a, i32 i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB61_4
+; SI-NEXT:    s_cbranch_scc0 .LBB61_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s10, s19, 16
 ; SI-NEXT:    s_lshr_b32 s11, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB61_3
-; SI-NEXT:  .LBB61_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB61_3
+; SI-NEXT:  .LBB61_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:  .LBB61_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB61_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s18, s18, 3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
@@ -10396,7 +11052,7 @@ define inreg <8 x half> @bitcast_v2i64_to_v8f16_scalar(<2 x i64> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b32 s11, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:  .LBB61_3: ; %end
+; SI-NEXT:  .LBB61_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s6
@@ -10414,76 +11070,85 @@ define inreg <8 x half> @bitcast_v2i64_to_v8f16_scalar(<2 x i64> inreg %a, i32 i
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB61_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    s_branch .LBB61_2
 ;
 ; VI-LABEL: bitcast_v2i64_to_v8f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB61_4
+; VI-NEXT:    s_cbranch_scc0 .LBB61_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB61_3
-; VI-NEXT:  .LBB61_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB61_3
+; VI-NEXT:  .LBB61_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB61_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB61_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s18, s18, 3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB61_3: ; %end
+; VI-NEXT:  .LBB61_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB61_4:
-; VI-NEXT:    s_branch .LBB61_2
 ;
 ; GFX9-LABEL: bitcast_v2i64_to_v8f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB61_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB61_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB61_3
-; GFX9-NEXT:  .LBB61_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB61_3
+; GFX9-NEXT:  .LBB61_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB61_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB61_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB61_3: ; %end
+; GFX9-NEXT:  .LBB61_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB61_4:
-; GFX9-NEXT:    s_branch .LBB61_2
 ;
 ; GFX11-LABEL: bitcast_v2i64_to_v8f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB61_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB61_3
-; GFX11-NEXT:  .LBB61_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB61_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB61_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB61_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB61_3: ; %end
+; GFX11-NEXT:  .LBB61_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB61_4:
-; GFX11-NEXT:    s_branch .LBB61_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -10668,7 +11333,7 @@ define inreg <2 x i64> @bitcast_v8f16_to_v2i64_scalar(<8 x half> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b32 s12, s17, 16
 ; SI-NEXT:    s_lshr_b32 s13, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB63_3
+; SI-NEXT:    s_cbranch_scc0 .LBB63_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s13, 16
@@ -10682,8 +11347,17 @@ define inreg <2 x i64> @bitcast_v8f16_to_v2i64_scalar(<8 x half> inreg %a, i32 i
 ; SI-NEXT:    s_and_b32 s7, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s10, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s8
-; SI-NEXT:    s_cbranch_execnz .LBB63_4
-; SI-NEXT:  .LBB63_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB63_3
+; SI-NEXT:  .LBB63_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
+; SI-NEXT:  .LBB63_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB63_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s13
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s12
@@ -10717,10 +11391,7 @@ define inreg <2 x i64> @bitcast_v8f16_to_v2i64_scalar(<8 x half> inreg %a, i32 i
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB63_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
-; SI-NEXT:    s_branch .LBB63_2
-; SI-NEXT:  .LBB63_4:
+; SI-NEXT:  .LBB63_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -10731,10 +11402,18 @@ define inreg <2 x i64> @bitcast_v8f16_to_v2i64_scalar(<8 x half> inreg %a, i32 i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB63_3
+; VI-NEXT:    s_cbranch_scc0 .LBB63_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB63_4
-; VI-NEXT:  .LBB63_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB63_3
+; VI-NEXT:  .LBB63_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB63_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB63_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s19, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -10757,9 +11436,7 @@ define inreg <2 x i64> @bitcast_v8f16_to_v2i64_scalar(<8 x half> inreg %a, i32 i
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v4
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB63_3:
-; VI-NEXT:    s_branch .LBB63_2
-; VI-NEXT:  .LBB63_4:
+; VI-NEXT:  .LBB63_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -10770,19 +11447,25 @@ define inreg <2 x i64> @bitcast_v8f16_to_v2i64_scalar(<8 x half> inreg %a, i32 i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB63_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB63_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB63_4
-; GFX9-NEXT:  .LBB63_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB63_3
+; GFX9-NEXT:  .LBB63_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB63_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB63_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v3, s19, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB63_3:
-; GFX9-NEXT:    s_branch .LBB63_2
-; GFX9-NEXT:  .LBB63_4:
+; GFX9-NEXT:  .LBB63_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -10794,18 +11477,21 @@ define inreg <2 x i64> @bitcast_v8f16_to_v2i64_scalar(<8 x half> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB63_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB63_4
-; GFX11-NEXT:  .LBB63_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB63_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB63_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB63_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v3, 0x200, s3 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB63_3:
-; GFX11-NEXT:    s_branch .LBB63_2
 ; GFX11-NEXT:  .LBB63_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -10962,7 +11648,7 @@ define inreg <8 x bfloat> @bitcast_v2i64_to_v8bf16_scalar(<2 x i64> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB65_4
+; SI-NEXT:    s_cbranch_scc0 .LBB65_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s7, s19, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s19, 16
@@ -10972,8 +11658,24 @@ define inreg <8 x bfloat> @bitcast_v2i64_to_v8bf16_scalar(<2 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s10, s17, 16
 ; SI-NEXT:    s_and_b32 s13, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s12, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB65_3
-; SI-NEXT:  .LBB65_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB65_3
+; SI-NEXT:  .LBB65_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB65_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB65_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s16, 3
 ; SI-NEXT:    s_addc_u32 s5, s17, 0
 ; SI-NEXT:    s_add_u32 s8, s18, 3
@@ -10986,7 +11688,7 @@ define inreg <8 x bfloat> @bitcast_v2i64_to_v8bf16_scalar(<2 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s10, s5, 16
 ; SI-NEXT:    s_and_b32 s13, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s12, s4, 16
-; SI-NEXT:  .LBB65_3: ; %end
+; SI-NEXT:  .LBB65_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s13
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s12
@@ -11004,80 +11706,85 @@ define inreg <8 x bfloat> @bitcast_v2i64_to_v8bf16_scalar(<2 x i64> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB65_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB65_2
 ;
 ; VI-LABEL: bitcast_v2i64_to_v8bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB65_4
+; VI-NEXT:    s_cbranch_scc0 .LBB65_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB65_3
-; VI-NEXT:  .LBB65_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB65_3
+; VI-NEXT:  .LBB65_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB65_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB65_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s18, s18, 3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB65_3: ; %end
+; VI-NEXT:  .LBB65_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB65_4:
-; VI-NEXT:    s_branch .LBB65_2
 ;
 ; GFX9-LABEL: bitcast_v2i64_to_v8bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB65_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB65_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB65_3
-; GFX9-NEXT:  .LBB65_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB65_3
+; GFX9-NEXT:  .LBB65_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB65_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB65_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB65_3: ; %end
+; GFX9-NEXT:  .LBB65_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB65_4:
-; GFX9-NEXT:    s_branch .LBB65_2
 ;
 ; GFX11-LABEL: bitcast_v2i64_to_v8bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB65_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB65_3
-; GFX11-NEXT:  .LBB65_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB65_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB65_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB65_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB65_3: ; %end
+; GFX11-NEXT:  .LBB65_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB65_4:
-; GFX11-NEXT:    s_branch .LBB65_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -11542,7 +12249,7 @@ define inreg <2 x i64> @bitcast_v8bf16_to_v2i64_scalar(<8 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB67_4
+; SI-NEXT:    s_cbranch_scc0 .LBB67_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v16
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[11:12], 16
@@ -11552,8 +12259,17 @@ define inreg <2 x i64> @bitcast_v8bf16_to_v2i64_scalar(<8 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[7:8], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v13
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[5:6], 16
-; SI-NEXT:    s_cbranch_execnz .LBB67_3
-; SI-NEXT:  .LBB67_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB67_3
+; SI-NEXT:  .LBB67_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; SI-NEXT:  .LBB67_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB67_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v16
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v11
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -11578,20 +12294,25 @@ define inreg <2 x i64> @bitcast_v8bf16_to_v2i64_scalar(<8 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
-; SI-NEXT:  .LBB67_3: ; %end
+; SI-NEXT:  .LBB67_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB67_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; SI-NEXT:    s_branch .LBB67_2
 ;
 ; VI-LABEL: bitcast_v8bf16_to_v2i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB67_3
+; VI-NEXT:    s_cbranch_scc0 .LBB67_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB67_4
-; VI-NEXT:  .LBB67_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB67_3
+; VI-NEXT:  .LBB67_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB67_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB67_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s19, 16
 ; VI-NEXT:    v_mov_b32_e32 v7, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v7
@@ -11668,9 +12389,7 @@ define inreg <2 x i64> @bitcast_v8bf16_to_v2i64_scalar(<8 x bfloat> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v1, v5
 ; VI-NEXT:    v_mov_b32_e32 v3, v4
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB67_3:
-; VI-NEXT:    s_branch .LBB67_2
-; VI-NEXT:  .LBB67_4:
+; VI-NEXT:  .LBB67_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -11681,10 +12400,18 @@ define inreg <2 x i64> @bitcast_v8bf16_to_v2i64_scalar(<8 x bfloat> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB67_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB67_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB67_4
-; GFX9-NEXT:  .LBB67_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB67_3
+; GFX9-NEXT:  .LBB67_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB67_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB67_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s19
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -11764,9 +12491,7 @@ define inreg <2 x i64> @bitcast_v8bf16_to_v2i64_scalar(<8 x bfloat> inreg %a, i3
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v4, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v5, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB67_3:
-; GFX9-NEXT:    s_branch .LBB67_2
-; GFX9-NEXT:  .LBB67_4:
+; GFX9-NEXT:  .LBB67_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -11778,11 +12503,16 @@ define inreg <2 x i64> @bitcast_v8bf16_to_v2i64_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB67_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB67_4
-; GFX11-TRUE16-NEXT:  .LBB67_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB67_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-TRUE16-NEXT:  .LBB67_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB67_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s4, 0, s3
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s3, s3, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
@@ -11864,8 +12594,6 @@ define inreg <2 x i64> @bitcast_v8bf16_to_v2i64_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v6
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v5.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB67_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB67_2
 ; GFX11-TRUE16-NEXT:  .LBB67_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -11876,11 +12604,16 @@ define inreg <2 x i64> @bitcast_v8bf16_to_v2i64_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB67_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB67_4
-; GFX11-FAKE16-NEXT:  .LBB67_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB67_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-FAKE16-NEXT:  .LBB67_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB67_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s4, s3, 16
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s3, 0, s3
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
@@ -11967,8 +12700,6 @@ define inreg <2 x i64> @bitcast_v8bf16_to_v2i64_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v7, 16, v8
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB67_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB67_2
 ; GFX11-FAKE16-NEXT:  .LBB67_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -12321,7 +13052,7 @@ define inreg <16 x i8> @bitcast_v2i64_to_v16i8_scalar(<2 x i64> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB69_4
+; SI-NEXT:    s_cbranch_scc0 .LBB69_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s22, s19, 24
 ; SI-NEXT:    s_lshr_b32 s23, s19, 16
@@ -12335,8 +13066,28 @@ define inreg <16 x i8> @bitcast_v2i64_to_v16i8_scalar(<2 x i64> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB69_3
-; SI-NEXT:  .LBB69_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[20:21], 0
+; SI-NEXT:    s_branch .LBB69_3
+; SI-NEXT:  .LBB69_2:
+; SI-NEXT:    s_mov_b64 s[20:21], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr23
+; SI-NEXT:    ; implicit-def: $sgpr22
+; SI-NEXT:  .LBB69_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[20:21], s[20:21], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB69_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s18, s18, 3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
@@ -12353,7 +13104,7 @@ define inreg <16 x i8> @bitcast_v2i64_to_v16i8_scalar(<2 x i64> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 8
-; SI-NEXT:  .LBB69_3: ; %end
+; SI-NEXT:  .LBB69_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s14
 ; SI-NEXT:    v_mov_b32_e32 v2, s12
@@ -12371,26 +13122,12 @@ define inreg <16 x i8> @bitcast_v2i64_to_v16i8_scalar(<2 x i64> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v14, s23
 ; SI-NEXT:    v_mov_b32_e32 v15, s22
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB69_4:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr23
-; SI-NEXT:    ; implicit-def: $sgpr22
-; SI-NEXT:    s_branch .LBB69_2
 ;
 ; VI-LABEL: bitcast_v2i64_to_v16i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB69_4
+; VI-NEXT:    s_cbranch_scc0 .LBB69_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s10, s19, 24
 ; VI-NEXT:    s_lshr_b32 s11, s19, 16
@@ -12404,8 +13141,28 @@ define inreg <16 x i8> @bitcast_v2i64_to_v16i8_scalar(<2 x i64> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s23, s16, 8
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB69_3
-; VI-NEXT:  .LBB69_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[8:9], 0
+; VI-NEXT:    s_branch .LBB69_3
+; VI-NEXT:  .LBB69_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
+; VI-NEXT:    ; implicit-def: $sgpr23
+; VI-NEXT:    ; implicit-def: $sgpr22
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr21
+; VI-NEXT:    ; implicit-def: $sgpr20
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:  .LBB69_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB69_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -12422,7 +13179,7 @@ define inreg <16 x i8> @bitcast_v2i64_to_v16i8_scalar(<2 x i64> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s21, s17, 8
 ; VI-NEXT:    s_lshr_b32 s22, s16, 16
 ; VI-NEXT:    s_lshr_b32 s23, s16, 8
-; VI-NEXT:  .LBB69_3: ; %end
+; VI-NEXT:  .LBB69_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s23
 ; VI-NEXT:    v_mov_b32_e32 v2, s22
@@ -12440,26 +13197,12 @@ define inreg <16 x i8> @bitcast_v2i64_to_v16i8_scalar(<2 x i64> inreg %a, i32 in
 ; VI-NEXT:    v_mov_b32_e32 v14, s11
 ; VI-NEXT:    v_mov_b32_e32 v15, s10
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB69_4:
-; VI-NEXT:    ; implicit-def: $sgpr23
-; VI-NEXT:    ; implicit-def: $sgpr22
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr21
-; VI-NEXT:    ; implicit-def: $sgpr20
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    s_branch .LBB69_2
 ;
 ; GFX9-LABEL: bitcast_v2i64_to_v16i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB69_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB69_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s10, s19, 24
 ; GFX9-NEXT:    s_lshr_b32 s11, s19, 16
@@ -12473,8 +13216,28 @@ define inreg <16 x i8> @bitcast_v2i64_to_v16i8_scalar(<2 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b32 s23, s16, 8
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB69_3
-; GFX9-NEXT:  .LBB69_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[8:9], 0
+; GFX9-NEXT:    s_branch .LBB69_3
+; GFX9-NEXT:  .LBB69_2:
+; GFX9-NEXT:    s_mov_b64 s[8:9], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr23
+; GFX9-NEXT:    ; implicit-def: $sgpr22
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr21
+; GFX9-NEXT:    ; implicit-def: $sgpr20
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:  .LBB69_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB69_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -12491,7 +13254,7 @@ define inreg <16 x i8> @bitcast_v2i64_to_v16i8_scalar(<2 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b32 s21, s17, 8
 ; GFX9-NEXT:    s_lshr_b32 s22, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s23, s16, 8
-; GFX9-NEXT:  .LBB69_3: ; %end
+; GFX9-NEXT:  .LBB69_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s23
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s22
@@ -12509,27 +13272,13 @@ define inreg <16 x i8> @bitcast_v2i64_to_v16i8_scalar(<2 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s11
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s10
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB69_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr23
-; GFX9-NEXT:    ; implicit-def: $sgpr22
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr21
-; GFX9-NEXT:    ; implicit-def: $sgpr20
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    s_branch .LBB69_2
 ;
 ; GFX11-LABEL: bitcast_v2i64_to_v16i8_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s18, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB69_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB69_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s8, s3, 24
 ; GFX11-NEXT:    s_lshr_b32 s9, s3, 16
@@ -12543,9 +13292,28 @@ define inreg <16 x i8> @bitcast_v2i64_to_v16i8_scalar(<2 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b32 s17, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s18
-; GFX11-NEXT:    s_cbranch_vccnz .LBB69_3
-; GFX11-NEXT:  .LBB69_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB69_3
+; GFX11-NEXT:  .LBB69_2:
+; GFX11-NEXT:    s_mov_b32 s18, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr17
+; GFX11-NEXT:    ; implicit-def: $sgpr16
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:  .LBB69_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s18, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB69_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -12562,7 +13330,7 @@ define inreg <16 x i8> @bitcast_v2i64_to_v16i8_scalar(<2 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b32 s15, s1, 8
 ; GFX11-NEXT:    s_lshr_b32 s16, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s17, s0, 8
-; GFX11-NEXT:  .LBB69_3: ; %end
+; GFX11-NEXT:  .LBB69_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s16 :: v_dual_mov_b32 v3, s6
@@ -12573,20 +13341,6 @@ define inreg <16 x i8> @bitcast_v2i64_to_v16i8_scalar(<2 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s3 :: v_dual_mov_b32 v13, s10
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s9 :: v_dual_mov_b32 v15, s8
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB69_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr17
-; GFX11-NEXT:    ; implicit-def: $sgpr16
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    s_branch .LBB69_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -13137,7 +13891,7 @@ define inreg <2 x i64> @bitcast_v16i8_to_v2i64_scalar(<16 x i8> inreg %a, i32 in
 ; SI-NEXT:    v_readfirstlane_b32 s10, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s11, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB71_4
+; SI-NEXT:    s_cbranch_scc0 .LBB71_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -13175,8 +13929,17 @@ define inreg <2 x i64> @bitcast_v16i8_to_v2i64_scalar(<16 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_or_b32 s7, s7, s8
-; SI-NEXT:    s_cbranch_execnz .LBB71_3
-; SI-NEXT:  .LBB71_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB71_3
+; SI-NEXT:  .LBB71_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
+; SI-NEXT:  .LBB71_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB71_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -13229,15 +13992,12 @@ define inreg <2 x i64> @bitcast_v16i8_to_v2i64_scalar(<16 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x3000000
 ; SI-NEXT:    s_add_i32 s7, s7, 0x3000000
-; SI-NEXT:  .LBB71_3: ; %end
+; SI-NEXT:  .LBB71_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB71_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
-; SI-NEXT:    s_branch .LBB71_2
 ;
 ; VI-LABEL: bitcast_v16i8_to_v2i64_scalar:
 ; VI:       ; %bb.0:
@@ -13246,7 +14006,7 @@ define inreg <2 x i64> @bitcast_v16i8_to_v2i64_scalar(<16 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB71_4
+; VI-NEXT:    s_cbranch_scc0 .LBB71_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -13273,8 +14033,17 @@ define inreg <2 x i64> @bitcast_v16i8_to_v2i64_scalar(<16 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_perm_b32 v3, s7, v5, v3
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    s_cbranch_execnz .LBB71_3
-; VI-NEXT:  .LBB71_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB71_3
+; VI-NEXT:  .LBB71_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; VI-NEXT:  .LBB71_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB71_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
@@ -13316,11 +14085,8 @@ define inreg <2 x i64> @bitcast_v16i8_to_v2i64_scalar(<16 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
 ; VI-NEXT:    v_add_u32_e32 v2, vcc, 0x3000000, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x3000000, v3
-; VI-NEXT:  .LBB71_3: ; %end
+; VI-NEXT:  .LBB71_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB71_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; VI-NEXT:    s_branch .LBB71_2
 ;
 ; GFX9-LABEL: bitcast_v16i8_to_v2i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -13329,7 +14095,7 @@ define inreg <2 x i64> @bitcast_v16i8_to_v2i64_scalar(<16 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB71_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -13356,8 +14122,17 @@ define inreg <2 x i64> @bitcast_v16i8_to_v2i64_scalar(<16 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_perm_b32 v3, s7, v5, v3
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v3, v4, v3
-; GFX9-NEXT:    s_cbranch_execnz .LBB71_3
-; GFX9-NEXT:  .LBB71_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB71_3
+; GFX9-NEXT:  .LBB71_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX9-NEXT:  .LBB71_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB71_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
@@ -13396,18 +14171,15 @@ define inreg <2 x i64> @bitcast_v16i8_to_v2i64_scalar(<16 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_add_u32_e32 v4, 0x300, v4
 ; GFX9-NEXT:    v_add_u32_sdwa v3, v3, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v3, v4, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB71_3: ; %end
+; GFX9-NEXT:  .LBB71_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB71_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX9-NEXT:    s_branch .LBB71_2
 ;
 ; GFX11-LABEL: bitcast_v16i8_to_v2i64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB71_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
@@ -13429,9 +14201,17 @@ define inreg <2 x i64> @bitcast_v16i8_to_v2i64_scalar(<16 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v4
 ; GFX11-NEXT:    v_or_b32_e32 v3, v8, v6
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB71_3
-; GFX11-NEXT:  .LBB71_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB71_3
+; GFX11-NEXT:  .LBB71_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX11-NEXT:  .LBB71_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB71_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -13470,11 +14250,8 @@ define inreg <2 x i64> @bitcast_v16i8_to_v2i64_scalar(<16 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v6
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v3, v7, v8
-; GFX11-NEXT:  .LBB71_3: ; %end
+; GFX11-NEXT:  .LBB71_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB71_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX11-NEXT:    s_branch .LBB71_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -13600,28 +14377,34 @@ define inreg <8 x i16> @bitcast_v2f64_to_v8i16_scalar(<2 x double> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB73_3
+; SI-NEXT:    s_cbranch_scc0 .LBB73_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s11, s19, 16
 ; SI-NEXT:    s_lshr_b32 s10, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB73_4
-; SI-NEXT:  .LBB73_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB73_3
+; SI-NEXT:  .LBB73_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:  .LBB73_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB73_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    v_lshr_b64 v[4:5], v[2:3], 16
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[0:1], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v1
-; SI-NEXT:    s_branch .LBB73_5
-; SI-NEXT:  .LBB73_3:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    s_branch .LBB73_2
-; SI-NEXT:  .LBB73_4:
+; SI-NEXT:    s_branch .LBB73_6
+; SI-NEXT:  .LBB73_5:
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
@@ -13630,7 +14413,7 @@ define inreg <8 x i16> @bitcast_v2f64_to_v8i16_scalar(<2 x double> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s10
 ; SI-NEXT:    v_mov_b32_e32 v5, s6
 ; SI-NEXT:    v_mov_b32_e32 v4, s4
-; SI-NEXT:  .LBB73_5: ; %end
+; SI-NEXT:  .LBB73_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -13649,16 +14432,22 @@ define inreg <8 x i16> @bitcast_v2f64_to_v8i16_scalar(<2 x double> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB73_3
+; VI-NEXT:    s_cbranch_scc0 .LBB73_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB73_4
-; VI-NEXT:  .LBB73_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB73_3
+; VI-NEXT:  .LBB73_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB73_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB73_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB73_3:
-; VI-NEXT:    s_branch .LBB73_2
-; VI-NEXT:  .LBB73_4:
+; VI-NEXT:  .LBB73_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13669,16 +14458,22 @@ define inreg <8 x i16> @bitcast_v2f64_to_v8i16_scalar(<2 x double> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB73_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB73_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB73_4
-; GFX9-NEXT:  .LBB73_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB73_3
+; GFX9-NEXT:  .LBB73_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB73_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB73_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB73_3:
-; GFX9-NEXT:    s_branch .LBB73_2
-; GFX9-NEXT:  .LBB73_4:
+; GFX9-NEXT:  .LBB73_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -13690,16 +14485,19 @@ define inreg <8 x i16> @bitcast_v2f64_to_v8i16_scalar(<2 x double> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB73_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB73_4
-; GFX11-NEXT:  .LBB73_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB73_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB73_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB73_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB73_3:
-; GFX11-NEXT:    s_branch .LBB73_2
 ; GFX11-NEXT:  .LBB73_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -13871,7 +14669,7 @@ define inreg <2 x double> @bitcast_v8i16_to_v2f64_scalar(<8 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s12, s17, 16
 ; SI-NEXT:    s_lshr_b32 s13, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB75_4
+; SI-NEXT:    s_cbranch_scc0 .LBB75_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s13, 16
@@ -13885,8 +14683,17 @@ define inreg <2 x double> @bitcast_v8i16_to_v2f64_scalar(<8 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s7, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s10, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s8
-; SI-NEXT:    s_cbranch_execnz .LBB75_3
-; SI-NEXT:  .LBB75_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB75_3
+; SI-NEXT:  .LBB75_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
+; SI-NEXT:  .LBB75_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB75_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s13, 16
@@ -13907,24 +14714,29 @@ define inreg <2 x double> @bitcast_v8i16_to_v2f64_scalar(<8 x i16> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s5, s5, 0x30000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x30000
 ; SI-NEXT:    s_add_i32 s7, s7, 0x30000
-; SI-NEXT:  .LBB75_3: ; %end
+; SI-NEXT:  .LBB75_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB75_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
-; SI-NEXT:    s_branch .LBB75_2
 ;
 ; VI-LABEL: bitcast_v8i16_to_v2f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB75_4
+; VI-NEXT:    s_cbranch_scc0 .LBB75_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB75_3
-; VI-NEXT:  .LBB75_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB75_3
+; VI-NEXT:  .LBB75_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB75_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB75_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s19, 3
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -13945,31 +14757,35 @@ define inreg <2 x double> @bitcast_v8i16_to_v2f64_scalar(<8 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB75_3: ; %end
+; VI-NEXT:  .LBB75_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB75_4:
-; VI-NEXT:    s_branch .LBB75_2
 ;
 ; GFX9-LABEL: bitcast_v8i16_to_v2f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB75_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB75_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB75_4
-; GFX9-NEXT:  .LBB75_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB75_3
+; GFX9-NEXT:  .LBB75_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB75_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB75_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v3, s19, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB75_3:
-; GFX9-NEXT:    s_branch .LBB75_2
-; GFX9-NEXT:  .LBB75_4:
+; GFX9-NEXT:  .LBB75_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -13981,18 +14797,21 @@ define inreg <2 x double> @bitcast_v8i16_to_v2f64_scalar(<8 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB75_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB75_4
-; GFX11-NEXT:  .LBB75_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB75_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB75_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB75_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v3, s3, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB75_3:
-; GFX11-NEXT:    s_branch .LBB75_2
 ; GFX11-NEXT:  .LBB75_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -14122,28 +14941,34 @@ define inreg <8 x half> @bitcast_v2f64_to_v8f16_scalar(<2 x double> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB77_3
+; SI-NEXT:    s_cbranch_scc0 .LBB77_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s11, s19, 16
 ; SI-NEXT:    s_lshr_b32 s10, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB77_4
-; SI-NEXT:  .LBB77_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB77_3
+; SI-NEXT:  .LBB77_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:  .LBB77_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB77_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    v_lshr_b64 v[4:5], v[2:3], 16
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[0:1], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v1
-; SI-NEXT:    s_branch .LBB77_5
-; SI-NEXT:  .LBB77_3:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    s_branch .LBB77_2
-; SI-NEXT:  .LBB77_4:
+; SI-NEXT:    s_branch .LBB77_6
+; SI-NEXT:  .LBB77_5:
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
@@ -14152,7 +14977,7 @@ define inreg <8 x half> @bitcast_v2f64_to_v8f16_scalar(<2 x double> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v6, s10
 ; SI-NEXT:    v_mov_b32_e32 v5, s6
 ; SI-NEXT:    v_mov_b32_e32 v4, s4
-; SI-NEXT:  .LBB77_5: ; %end
+; SI-NEXT:  .LBB77_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -14171,16 +14996,22 @@ define inreg <8 x half> @bitcast_v2f64_to_v8f16_scalar(<2 x double> inreg %a, i3
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB77_3
+; VI-NEXT:    s_cbranch_scc0 .LBB77_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB77_4
-; VI-NEXT:  .LBB77_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB77_3
+; VI-NEXT:  .LBB77_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB77_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB77_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB77_3:
-; VI-NEXT:    s_branch .LBB77_2
-; VI-NEXT:  .LBB77_4:
+; VI-NEXT:  .LBB77_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -14191,16 +15022,22 @@ define inreg <8 x half> @bitcast_v2f64_to_v8f16_scalar(<2 x double> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB77_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB77_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB77_4
-; GFX9-NEXT:  .LBB77_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB77_3
+; GFX9-NEXT:  .LBB77_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB77_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB77_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB77_3:
-; GFX9-NEXT:    s_branch .LBB77_2
-; GFX9-NEXT:  .LBB77_4:
+; GFX9-NEXT:  .LBB77_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -14212,16 +15049,19 @@ define inreg <8 x half> @bitcast_v2f64_to_v8f16_scalar(<2 x double> inreg %a, i3
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB77_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB77_4
-; GFX11-NEXT:  .LBB77_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB77_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB77_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB77_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB77_3:
-; GFX11-NEXT:    s_branch .LBB77_2
 ; GFX11-NEXT:  .LBB77_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -14410,7 +15250,7 @@ define inreg <2 x double> @bitcast_v8f16_to_v2f64_scalar(<8 x half> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s12, s17, 16
 ; SI-NEXT:    s_lshr_b32 s13, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB79_3
+; SI-NEXT:    s_cbranch_scc0 .LBB79_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s13, 16
@@ -14424,8 +15264,17 @@ define inreg <2 x double> @bitcast_v8f16_to_v2f64_scalar(<8 x half> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s7, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s10, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s8
-; SI-NEXT:    s_cbranch_execnz .LBB79_4
-; SI-NEXT:  .LBB79_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB79_3
+; SI-NEXT:  .LBB79_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
+; SI-NEXT:  .LBB79_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB79_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s13
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s12
@@ -14459,10 +15308,7 @@ define inreg <2 x double> @bitcast_v8f16_to_v2f64_scalar(<8 x half> inreg %a, i3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB79_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
-; SI-NEXT:    s_branch .LBB79_2
-; SI-NEXT:  .LBB79_4:
+; SI-NEXT:  .LBB79_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -14473,10 +15319,18 @@ define inreg <2 x double> @bitcast_v8f16_to_v2f64_scalar(<8 x half> inreg %a, i3
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB79_3
+; VI-NEXT:    s_cbranch_scc0 .LBB79_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB79_4
-; VI-NEXT:  .LBB79_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB79_3
+; VI-NEXT:  .LBB79_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB79_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB79_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s19, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -14499,9 +15353,7 @@ define inreg <2 x double> @bitcast_v8f16_to_v2f64_scalar(<8 x half> inreg %a, i3
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v4
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB79_3:
-; VI-NEXT:    s_branch .LBB79_2
-; VI-NEXT:  .LBB79_4:
+; VI-NEXT:  .LBB79_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -14512,19 +15364,25 @@ define inreg <2 x double> @bitcast_v8f16_to_v2f64_scalar(<8 x half> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB79_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB79_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB79_4
-; GFX9-NEXT:  .LBB79_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB79_3
+; GFX9-NEXT:  .LBB79_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB79_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB79_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v3, s19, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB79_3:
-; GFX9-NEXT:    s_branch .LBB79_2
-; GFX9-NEXT:  .LBB79_4:
+; GFX9-NEXT:  .LBB79_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -14536,18 +15394,21 @@ define inreg <2 x double> @bitcast_v8f16_to_v2f64_scalar(<8 x half> inreg %a, i3
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB79_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB79_4
-; GFX11-NEXT:  .LBB79_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB79_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB79_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB79_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v3, 0x200, s3 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB79_3:
-; GFX11-NEXT:    s_branch .LBB79_2
 ; GFX11-NEXT:  .LBB79_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -14696,7 +15557,7 @@ define inreg <8 x bfloat> @bitcast_v2f64_to_v8bf16_scalar(<2 x double> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB81_3
+; SI-NEXT:    s_cbranch_scc0 .LBB81_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s13, s19, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s12, s19, 16
@@ -14706,8 +15567,24 @@ define inreg <8 x bfloat> @bitcast_v2f64_to_v8bf16_scalar(<2 x double> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s8, s17, 16
 ; SI-NEXT:    s_and_b32 s7, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB81_4
-; SI-NEXT:  .LBB81_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB81_3
+; SI-NEXT:  .LBB81_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:  .LBB81_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB81_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[8:9], s[16:17], 1.0
 ; SI-NEXT:    v_and_b32_e32 v5, 0xffff0000, v1
@@ -14718,18 +15595,8 @@ define inreg <8 x bfloat> @bitcast_v2f64_to_v8bf16_scalar(<2 x double> inreg %a,
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v9
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v8
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v8
-; SI-NEXT:    s_branch .LBB81_5
-; SI-NEXT:  .LBB81_3:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    s_branch .LBB81_2
-; SI-NEXT:  .LBB81_4:
+; SI-NEXT:    s_branch .LBB81_6
+; SI-NEXT:  .LBB81_5:
 ; SI-NEXT:    v_mov_b32_e32 v5, s13
 ; SI-NEXT:    v_mov_b32_e32 v4, s12
 ; SI-NEXT:    v_mov_b32_e32 v6, s11
@@ -14738,7 +15605,7 @@ define inreg <8 x bfloat> @bitcast_v2f64_to_v8bf16_scalar(<2 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v2, s8
 ; SI-NEXT:    v_mov_b32_e32 v1, s7
 ; SI-NEXT:    v_mov_b32_e32 v0, s6
-; SI-NEXT:  .LBB81_5: ; %end
+; SI-NEXT:  .LBB81_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
@@ -14761,16 +15628,22 @@ define inreg <8 x bfloat> @bitcast_v2f64_to_v8bf16_scalar(<2 x double> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB81_3
+; VI-NEXT:    s_cbranch_scc0 .LBB81_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB81_4
-; VI-NEXT:  .LBB81_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB81_3
+; VI-NEXT:  .LBB81_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB81_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB81_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB81_3:
-; VI-NEXT:    s_branch .LBB81_2
-; VI-NEXT:  .LBB81_4:
+; VI-NEXT:  .LBB81_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -14781,16 +15654,22 @@ define inreg <8 x bfloat> @bitcast_v2f64_to_v8bf16_scalar(<2 x double> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB81_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB81_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB81_4
-; GFX9-NEXT:  .LBB81_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB81_3
+; GFX9-NEXT:  .LBB81_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB81_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB81_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB81_3:
-; GFX9-NEXT:    s_branch .LBB81_2
-; GFX9-NEXT:  .LBB81_4:
+; GFX9-NEXT:  .LBB81_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -14802,16 +15681,19 @@ define inreg <8 x bfloat> @bitcast_v2f64_to_v8bf16_scalar(<2 x double> inreg %a,
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB81_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB81_4
-; GFX11-NEXT:  .LBB81_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB81_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB81_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB81_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB81_3:
-; GFX11-NEXT:    s_branch .LBB81_2
 ; GFX11-NEXT:  .LBB81_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -15280,7 +16162,7 @@ define inreg <2 x double> @bitcast_v8bf16_to_v2f64_scalar(<8 x bfloat> inreg %a,
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB83_4
+; SI-NEXT:    s_cbranch_scc0 .LBB83_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v16
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[11:12], 16
@@ -15290,8 +16172,17 @@ define inreg <2 x double> @bitcast_v8bf16_to_v2f64_scalar(<8 x bfloat> inreg %a,
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[7:8], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v13
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[5:6], 16
-; SI-NEXT:    s_cbranch_execnz .LBB83_3
-; SI-NEXT:  .LBB83_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB83_3
+; SI-NEXT:  .LBB83_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; SI-NEXT:  .LBB83_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB83_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v16
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v11
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -15316,20 +16207,25 @@ define inreg <2 x double> @bitcast_v8bf16_to_v2f64_scalar(<8 x bfloat> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
-; SI-NEXT:  .LBB83_3: ; %end
+; SI-NEXT:  .LBB83_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB83_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; SI-NEXT:    s_branch .LBB83_2
 ;
 ; VI-LABEL: bitcast_v8bf16_to_v2f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB83_3
+; VI-NEXT:    s_cbranch_scc0 .LBB83_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB83_4
-; VI-NEXT:  .LBB83_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB83_3
+; VI-NEXT:  .LBB83_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB83_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB83_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s19, 16
 ; VI-NEXT:    v_mov_b32_e32 v7, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v7
@@ -15406,9 +16302,7 @@ define inreg <2 x double> @bitcast_v8bf16_to_v2f64_scalar(<8 x bfloat> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v1, v5
 ; VI-NEXT:    v_mov_b32_e32 v3, v4
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB83_3:
-; VI-NEXT:    s_branch .LBB83_2
-; VI-NEXT:  .LBB83_4:
+; VI-NEXT:  .LBB83_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -15419,10 +16313,18 @@ define inreg <2 x double> @bitcast_v8bf16_to_v2f64_scalar(<8 x bfloat> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB83_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB83_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB83_4
-; GFX9-NEXT:  .LBB83_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB83_3
+; GFX9-NEXT:  .LBB83_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB83_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB83_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s19
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -15502,9 +16404,7 @@ define inreg <2 x double> @bitcast_v8bf16_to_v2f64_scalar(<8 x bfloat> inreg %a,
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v4, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v5, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB83_3:
-; GFX9-NEXT:    s_branch .LBB83_2
-; GFX9-NEXT:  .LBB83_4:
+; GFX9-NEXT:  .LBB83_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -15516,11 +16416,16 @@ define inreg <2 x double> @bitcast_v8bf16_to_v2f64_scalar(<8 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB83_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB83_4
-; GFX11-TRUE16-NEXT:  .LBB83_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB83_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-TRUE16-NEXT:  .LBB83_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB83_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s4, 0, s3
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s3, s3, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
@@ -15602,8 +16507,6 @@ define inreg <2 x double> @bitcast_v8bf16_to_v2f64_scalar(<8 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v6
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v5.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB83_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB83_2
 ; GFX11-TRUE16-NEXT:  .LBB83_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -15614,11 +16517,16 @@ define inreg <2 x double> @bitcast_v8bf16_to_v2f64_scalar(<8 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB83_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB83_4
-; GFX11-FAKE16-NEXT:  .LBB83_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB83_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-FAKE16-NEXT:  .LBB83_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB83_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s4, s3, 16
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s3, 0, s3
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
@@ -15705,8 +16613,6 @@ define inreg <2 x double> @bitcast_v8bf16_to_v2f64_scalar(<8 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v7, 16, v8
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB83_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB83_2
 ; GFX11-FAKE16-NEXT:  .LBB83_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -16051,7 +16957,7 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB85_3
+; SI-NEXT:    s_cbranch_scc0 .LBB85_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s27, s19, 24
 ; SI-NEXT:    s_lshr_b32 s26, s19, 16
@@ -16065,8 +16971,28 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB85_4
-; SI-NEXT:  .LBB85_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[20:21], 0
+; SI-NEXT:    s_branch .LBB85_3
+; SI-NEXT:  .LBB85_2:
+; SI-NEXT:    s_mov_b64 s[20:21], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr22
+; SI-NEXT:    ; implicit-def: $sgpr23
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:  .LBB85_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[20:21], s[20:21], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB85_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[20:21], s[16:17], 1.0
 ; SI-NEXT:    v_add_f64 v[18:19], s[18:19], 1.0
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[20:21], 16
@@ -16081,22 +17007,8 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v21
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v21
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 8, v21
-; SI-NEXT:    s_branch .LBB85_5
-; SI-NEXT:  .LBB85_3:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr22
-; SI-NEXT:    ; implicit-def: $sgpr23
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    s_branch .LBB85_2
-; SI-NEXT:  .LBB85_4:
+; SI-NEXT:    s_branch .LBB85_6
+; SI-NEXT:  .LBB85_5:
 ; SI-NEXT:    v_mov_b32_e32 v19, s19
 ; SI-NEXT:    v_mov_b32_e32 v21, s17
 ; SI-NEXT:    v_mov_b32_e32 v20, s16
@@ -16113,7 +17025,7 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v9, s8
 ; SI-NEXT:    v_mov_b32_e32 v16, s6
 ; SI-NEXT:    v_mov_b32_e32 v11, s4
-; SI-NEXT:  .LBB85_5: ; %end
+; SI-NEXT:  .LBB85_6: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v2, v0
 ; SI-NEXT:    v_mov_b32_e32 v0, v20
 ; SI-NEXT:    v_mov_b32_e32 v4, v21
@@ -16126,7 +17038,7 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB85_3
+; VI-NEXT:    s_cbranch_scc0 .LBB85_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s15, s19, 24
 ; VI-NEXT:    s_lshr_b32 s14, s19, 16
@@ -16140,24 +17052,10 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s22, s16, 8
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB85_4
-; VI-NEXT:  .LBB85_2: ; %cmp.true
-; VI-NEXT:    v_add_f64 v[16:17], s[18:19], 1.0
-; VI-NEXT:    v_add_f64 v[18:19], s[16:17], 1.0
-; VI-NEXT:    v_lshrrev_b64 v[11:12], 24, v[16:17]
-; VI-NEXT:    v_lshrrev_b64 v[3:4], 24, v[18:19]
-; VI-NEXT:    v_lshrrev_b32_e32 v15, 24, v17
-; VI-NEXT:    v_lshrrev_b32_e32 v14, 16, v17
-; VI-NEXT:    v_lshrrev_b32_e32 v13, 8, v17
-; VI-NEXT:    v_lshrrev_b32_e32 v10, 16, v16
-; VI-NEXT:    v_lshrrev_b32_e32 v9, 8, v16
-; VI-NEXT:    v_lshrrev_b32_e32 v7, 24, v19
-; VI-NEXT:    v_lshrrev_b32_e32 v6, 16, v19
-; VI-NEXT:    v_lshrrev_b32_e32 v5, 8, v19
-; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v18
-; VI-NEXT:    v_lshrrev_b32_e32 v1, 8, v18
-; VI-NEXT:    s_branch .LBB85_5
-; VI-NEXT:  .LBB85_3:
+; VI-NEXT:    s_mov_b64 s[8:9], 0
+; VI-NEXT:    s_branch .LBB85_3
+; VI-NEXT:  .LBB85_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
 ; VI-NEXT:    ; implicit-def: $sgpr22
 ; VI-NEXT:    ; implicit-def: $sgpr23
 ; VI-NEXT:    ; implicit-def: $sgpr4
@@ -16170,8 +17068,28 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; VI-NEXT:    ; implicit-def: $sgpr13
 ; VI-NEXT:    ; implicit-def: $sgpr14
 ; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    s_branch .LBB85_2
-; VI-NEXT:  .LBB85_4:
+; VI-NEXT:  .LBB85_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB85_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
+; VI-NEXT:    v_add_f64 v[16:17], s[18:19], 1.0
+; VI-NEXT:    v_add_f64 v[18:19], s[16:17], 1.0
+; VI-NEXT:    v_lshrrev_b64 v[11:12], 24, v[16:17]
+; VI-NEXT:    v_lshrrev_b64 v[3:4], 24, v[18:19]
+; VI-NEXT:    v_lshrrev_b32_e32 v15, 24, v17
+; VI-NEXT:    v_lshrrev_b32_e32 v14, 16, v17
+; VI-NEXT:    v_lshrrev_b32_e32 v13, 8, v17
+; VI-NEXT:    v_lshrrev_b32_e32 v10, 16, v16
+; VI-NEXT:    v_lshrrev_b32_e32 v9, 8, v16
+; VI-NEXT:    v_lshrrev_b32_e32 v7, 24, v19
+; VI-NEXT:    v_lshrrev_b32_e32 v6, 16, v19
+; VI-NEXT:    v_lshrrev_b32_e32 v5, 8, v19
+; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v18
+; VI-NEXT:    v_lshrrev_b32_e32 v1, 8, v18
+; VI-NEXT:    s_branch .LBB85_6
+; VI-NEXT:  .LBB85_5:
 ; VI-NEXT:    v_mov_b32_e32 v18, s16
 ; VI-NEXT:    v_mov_b32_e32 v16, s18
 ; VI-NEXT:    v_mov_b32_e32 v17, s19
@@ -16188,7 +17106,7 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v7, s12
 ; VI-NEXT:    v_mov_b32_e32 v6, s11
 ; VI-NEXT:    v_mov_b32_e32 v5, s10
-; VI-NEXT:  .LBB85_5: ; %end
+; VI-NEXT:  .LBB85_6: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, v18
 ; VI-NEXT:    v_mov_b32_e32 v4, v19
 ; VI-NEXT:    v_mov_b32_e32 v8, v16
@@ -16199,7 +17117,7 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB85_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB85_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s15, s19, 24
 ; GFX9-NEXT:    s_lshr_b32 s14, s19, 16
@@ -16213,8 +17131,28 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b32 s22, s16, 8
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB85_4
-; GFX9-NEXT:  .LBB85_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[8:9], 0
+; GFX9-NEXT:    s_branch .LBB85_3
+; GFX9-NEXT:  .LBB85_2:
+; GFX9-NEXT:    s_mov_b64 s[8:9], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr22
+; GFX9-NEXT:    ; implicit-def: $sgpr23
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr20
+; GFX9-NEXT:    ; implicit-def: $sgpr21
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:  .LBB85_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB85_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[16:17], 1.0
 ; GFX9-NEXT:    v_lshrrev_b64 v[11:12], 24, v[16:17]
@@ -16229,22 +17167,8 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v19
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v18
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v18
-; GFX9-NEXT:    s_branch .LBB85_5
-; GFX9-NEXT:  .LBB85_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr22
-; GFX9-NEXT:    ; implicit-def: $sgpr23
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr20
-; GFX9-NEXT:    ; implicit-def: $sgpr21
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    s_branch .LBB85_2
-; GFX9-NEXT:  .LBB85_4:
+; GFX9-NEXT:    s_branch .LBB85_6
+; GFX9-NEXT:  .LBB85_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s19
@@ -16261,7 +17185,7 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s12
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s11
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s10
-; GFX9-NEXT:  .LBB85_5: ; %end
+; GFX9-NEXT:  .LBB85_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, v18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v19
 ; GFX9-NEXT:    v_mov_b32_e32 v8, v16
@@ -16273,7 +17197,7 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB85_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB85_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s14, s3, 24
 ; GFX11-NEXT:    s_lshr_b32 s13, s3, 16
@@ -16287,9 +17211,28 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b32 s17, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB85_4
-; GFX11-NEXT:  .LBB85_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB85_3
+; GFX11-NEXT:  .LBB85_2:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr17
+; GFX11-NEXT:    ; implicit-def: $sgpr18
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr16
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:  .LBB85_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB85_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[16:17], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[18:19], s[0:1], 1.0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -16305,22 +17248,8 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v19
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v18
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v18
-; GFX11-NEXT:    s_branch .LBB85_5
-; GFX11-NEXT:  .LBB85_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr17
-; GFX11-NEXT:    ; implicit-def: $sgpr18
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr16
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    s_branch .LBB85_2
-; GFX11-NEXT:  .LBB85_4:
+; GFX11-NEXT:    s_branch .LBB85_6
+; GFX11-NEXT:  .LBB85_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s0 :: v_dual_mov_b32 v17, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s2 :: v_dual_mov_b32 v19, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s18 :: v_dual_mov_b32 v1, s17
@@ -16331,7 +17260,7 @@ define inreg <16 x i8> @bitcast_v2f64_to_v16i8_scalar(<2 x double> inreg %a, i32
 ; GFX11-NEXT:    v_mov_b32_e32 v13, s12
 ; GFX11-NEXT:    v_mov_b32_e32 v7, s11
 ; GFX11-NEXT:    v_mov_b32_e32 v5, s9
-; GFX11-NEXT:  .LBB85_5: ; %end
+; GFX11-NEXT:  .LBB85_6: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v0, v18
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v19
 ; GFX11-NEXT:    v_mov_b32_e32 v8, v16
@@ -16887,7 +17816,7 @@ define inreg <2 x double> @bitcast_v16i8_to_v2f64_scalar(<16 x i8> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s10, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s11, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB87_4
+; SI-NEXT:    s_cbranch_scc0 .LBB87_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -16925,8 +17854,17 @@ define inreg <2 x double> @bitcast_v16i8_to_v2f64_scalar(<16 x i8> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_or_b32 s7, s7, s8
-; SI-NEXT:    s_cbranch_execnz .LBB87_3
-; SI-NEXT:  .LBB87_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB87_3
+; SI-NEXT:  .LBB87_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
+; SI-NEXT:  .LBB87_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB87_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -16979,15 +17917,12 @@ define inreg <2 x double> @bitcast_v16i8_to_v2f64_scalar(<16 x i8> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x3000000
 ; SI-NEXT:    s_add_i32 s7, s7, 0x3000000
-; SI-NEXT:  .LBB87_3: ; %end
+; SI-NEXT:  .LBB87_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB87_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7
-; SI-NEXT:    s_branch .LBB87_2
 ;
 ; VI-LABEL: bitcast_v16i8_to_v2f64_scalar:
 ; VI:       ; %bb.0:
@@ -16996,7 +17931,7 @@ define inreg <2 x double> @bitcast_v16i8_to_v2f64_scalar(<16 x i8> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB87_4
+; VI-NEXT:    s_cbranch_scc0 .LBB87_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -17023,8 +17958,17 @@ define inreg <2 x double> @bitcast_v16i8_to_v2f64_scalar(<16 x i8> inreg %a, i32
 ; VI-NEXT:    v_perm_b32 v3, s7, v5, v3
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    s_cbranch_execnz .LBB87_3
-; VI-NEXT:  .LBB87_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB87_3
+; VI-NEXT:  .LBB87_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; VI-NEXT:  .LBB87_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB87_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
@@ -17066,11 +18010,8 @@ define inreg <2 x double> @bitcast_v16i8_to_v2f64_scalar(<16 x i8> inreg %a, i32
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
 ; VI-NEXT:    v_add_u32_e32 v2, vcc, 0x3000000, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x3000000, v3
-; VI-NEXT:  .LBB87_3: ; %end
+; VI-NEXT:  .LBB87_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB87_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; VI-NEXT:    s_branch .LBB87_2
 ;
 ; GFX9-LABEL: bitcast_v16i8_to_v2f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -17079,7 +18020,7 @@ define inreg <2 x double> @bitcast_v16i8_to_v2f64_scalar(<16 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB87_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB87_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -17106,8 +18047,17 @@ define inreg <2 x double> @bitcast_v16i8_to_v2f64_scalar(<16 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_perm_b32 v3, s7, v5, v3
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v3, v4, v3
-; GFX9-NEXT:    s_cbranch_execnz .LBB87_3
-; GFX9-NEXT:  .LBB87_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB87_3
+; GFX9-NEXT:  .LBB87_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX9-NEXT:  .LBB87_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB87_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
@@ -17146,18 +18096,15 @@ define inreg <2 x double> @bitcast_v16i8_to_v2f64_scalar(<16 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_add_u32_e32 v4, 0x300, v4
 ; GFX9-NEXT:    v_add_u32_sdwa v3, v3, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v3, v4, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB87_3: ; %end
+; GFX9-NEXT:  .LBB87_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB87_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX9-NEXT:    s_branch .LBB87_2
 ;
 ; GFX11-LABEL: bitcast_v16i8_to_v2f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB87_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB87_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
@@ -17179,9 +18126,17 @@ define inreg <2 x double> @bitcast_v16i8_to_v2f64_scalar(<16 x i8> inreg %a, i32
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v4
 ; GFX11-NEXT:    v_or_b32_e32 v3, v8, v6
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB87_3
-; GFX11-NEXT:  .LBB87_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB87_3
+; GFX11-NEXT:  .LBB87_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX11-NEXT:  .LBB87_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB87_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -17220,11 +18175,8 @@ define inreg <2 x double> @bitcast_v16i8_to_v2f64_scalar(<16 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v6
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v3, v7, v8
-; GFX11-NEXT:  .LBB87_3: ; %end
+; GFX11-NEXT:  .LBB87_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB87_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX11-NEXT:    s_branch .LBB87_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -17408,7 +18360,7 @@ define inreg <8 x half> @bitcast_v8i16_to_v8f16_scalar(<8 x i16> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b32 s14, s17, 16
 ; SI-NEXT:    s_lshr_b32 s21, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB89_4
+; SI-NEXT:    s_cbranch_scc0 .LBB89_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s14, 16
@@ -17424,10 +18376,22 @@ define inreg <8 x half> @bitcast_v8i16_to_v8f16_scalar(<8 x i16> inreg %a, i32 i
 ; SI-NEXT:    s_or_b32 s4, s4, s26
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[26:27], 16
+; SI-NEXT:    s_mov_b64 s[12:13], 0
 ; SI-NEXT:    s_mov_b32 s7, s25
 ; SI-NEXT:    s_mov_b32 s5, s27
-; SI-NEXT:    s_cbranch_execnz .LBB89_3
-; SI-NEXT:  .LBB89_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB89_3
+; SI-NEXT:  .LBB89_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:  .LBB89_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s9, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s9, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB89_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s22, 16
@@ -17452,7 +18416,7 @@ define inreg <8 x half> @bitcast_v8i16_to_v8f16_scalar(<8 x i16> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[4:5], 16
 ; SI-NEXT:    s_lshr_b32 s14, s7, 16
 ; SI-NEXT:    s_lshr_b32 s15, s5, 16
-; SI-NEXT:  .LBB89_3: ; %end
+; SI-NEXT:  .LBB89_5: ; %end
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s8
@@ -17470,21 +18434,23 @@ define inreg <8 x half> @bitcast_v8i16_to_v8f16_scalar(<8 x i16> inreg %a, i32 i
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
 ; SI-NEXT:    v_mov_b32_e32 v3, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB89_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    s_branch .LBB89_2
 ;
 ; VI-LABEL: bitcast_v8i16_to_v8f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB89_4
+; VI-NEXT:    s_cbranch_scc0 .LBB89_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB89_3
-; VI-NEXT:  .LBB89_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB89_3
+; VI-NEXT:  .LBB89_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB89_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB89_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_add_i32 s7, s17, 3
 ; VI-NEXT:    s_add_i32 s9, s18, 3
@@ -17505,31 +18471,35 @@ define inreg <8 x half> @bitcast_v8i16_to_v8f16_scalar(<8 x i16> inreg %a, i32 i
 ; VI-NEXT:    s_add_i32 s18, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB89_3: ; %end
+; VI-NEXT:  .LBB89_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB89_4:
-; VI-NEXT:    s_branch .LBB89_2
 ;
 ; GFX9-LABEL: bitcast_v8i16_to_v8f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB89_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB89_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB89_4
-; GFX9-NEXT:  .LBB89_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB89_3
+; GFX9-NEXT:  .LBB89_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB89_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB89_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v3, s19, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB89_3:
-; GFX9-NEXT:    s_branch .LBB89_2
-; GFX9-NEXT:  .LBB89_4:
+; GFX9-NEXT:  .LBB89_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -17541,18 +18511,21 @@ define inreg <8 x half> @bitcast_v8i16_to_v8f16_scalar(<8 x i16> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB89_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB89_4
-; GFX11-NEXT:  .LBB89_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB89_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB89_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB89_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v3, s3, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB89_3:
-; GFX11-NEXT:    s_branch .LBB89_2
 ; GFX11-NEXT:  .LBB89_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -17723,10 +18696,18 @@ define inreg <8 x i16> @bitcast_v8f16_to_v8i16_scalar(<8 x half> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b32 s6, s17, 16
 ; SI-NEXT:    s_lshr_b32 s9, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB91_3
+; SI-NEXT:    s_cbranch_scc0 .LBB91_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB91_4
-; SI-NEXT:  .LBB91_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB91_3
+; SI-NEXT:  .LBB91_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB91_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB91_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s9
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s18
@@ -17761,10 +18742,8 @@ define inreg <8 x i16> @bitcast_v8f16_to_v8i16_scalar(<8 x half> inreg %a, i32 i
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[0:1], 16
 ; SI-NEXT:    v_lshr_b64 v[4:5], v[2:3], 16
 ; SI-NEXT:    v_or_b32_e32 v2, v11, v2
-; SI-NEXT:    s_branch .LBB91_5
-; SI-NEXT:  .LBB91_3:
-; SI-NEXT:    s_branch .LBB91_2
-; SI-NEXT:  .LBB91_4:
+; SI-NEXT:    s_branch .LBB91_6
+; SI-NEXT:  .LBB91_5:
 ; SI-NEXT:    v_mov_b32_e32 v8, s7
 ; SI-NEXT:    v_mov_b32_e32 v10, s6
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
@@ -17773,7 +18752,7 @@ define inreg <8 x i16> @bitcast_v8f16_to_v8i16_scalar(<8 x half> inreg %a, i32 i
 ; SI-NEXT:    v_mov_b32_e32 v9, s16
 ; SI-NEXT:    v_mov_b32_e32 v6, s9
 ; SI-NEXT:    v_mov_b32_e32 v4, s8
-; SI-NEXT:  .LBB91_5: ; %end
+; SI-NEXT:  .LBB91_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v9
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v6
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -17792,10 +18771,18 @@ define inreg <8 x i16> @bitcast_v8f16_to_v8i16_scalar(<8 x half> inreg %a, i32 i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB91_3
+; VI-NEXT:    s_cbranch_scc0 .LBB91_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB91_4
-; VI-NEXT:  .LBB91_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB91_3
+; VI-NEXT:  .LBB91_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB91_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB91_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
@@ -17818,9 +18805,7 @@ define inreg <8 x i16> @bitcast_v8f16_to_v8i16_scalar(<8 x half> inreg %a, i32 i
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v6
 ; VI-NEXT:    v_or_b32_e32 v0, v4, v5
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB91_3:
-; VI-NEXT:    s_branch .LBB91_2
-; VI-NEXT:  .LBB91_4:
+; VI-NEXT:  .LBB91_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -17831,19 +18816,25 @@ define inreg <8 x i16> @bitcast_v8f16_to_v8i16_scalar(<8 x half> inreg %a, i32 i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB91_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB91_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB91_4
-; GFX9-NEXT:  .LBB91_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB91_3
+; GFX9-NEXT:  .LBB91_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB91_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB91_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v3, s19, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB91_3:
-; GFX9-NEXT:    s_branch .LBB91_2
-; GFX9-NEXT:  .LBB91_4:
+; GFX9-NEXT:  .LBB91_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -17855,18 +18846,21 @@ define inreg <8 x i16> @bitcast_v8f16_to_v8i16_scalar(<8 x half> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB91_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB91_4
-; GFX11-NEXT:  .LBB91_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB91_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB91_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB91_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v3, 0x200, s3 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB91_3:
-; GFX11-NEXT:    s_branch .LBB91_2
 ; GFX11-NEXT:  .LBB91_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -18049,7 +19043,7 @@ define inreg <8 x bfloat> @bitcast_v8i16_to_v8bf16_scalar(<8 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s15, s17, 16
 ; SI-NEXT:    s_lshr_b32 s14, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB93_4
+; SI-NEXT:    s_cbranch_scc0 .LBB93_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s10, s16, 16
 ; SI-NEXT:    s_lshl_b32 s13, s14, 16
@@ -18059,8 +19053,24 @@ define inreg <8 x bfloat> @bitcast_v8i16_to_v8bf16_scalar(<8 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s11, s21, 16
 ; SI-NEXT:    s_lshl_b32 s6, s19, 16
 ; SI-NEXT:    s_lshl_b32 s9, s22, 16
-; SI-NEXT:    s_cbranch_execnz .LBB93_3
-; SI-NEXT:  .LBB93_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB93_3
+; SI-NEXT:  .LBB93_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:  .LBB93_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB93_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s22, 16
@@ -18089,7 +19099,7 @@ define inreg <8 x bfloat> @bitcast_v8i16_to_v8bf16_scalar(<8 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s7, s5, 16
 ; SI-NEXT:    s_and_b32 s9, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s4, 16
-; SI-NEXT:  .LBB93_3: ; %end
+; SI-NEXT:  .LBB93_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s13
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s10
@@ -18107,25 +19117,23 @@ define inreg <8 x bfloat> @bitcast_v8i16_to_v8bf16_scalar(<8 x i16> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB93_4:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    s_branch .LBB93_2
 ;
 ; VI-LABEL: bitcast_v8i16_to_v8bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB93_4
+; VI-NEXT:    s_cbranch_scc0 .LBB93_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB93_3
-; VI-NEXT:  .LBB93_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB93_3
+; VI-NEXT:  .LBB93_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB93_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB93_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_add_i32 s7, s17, 3
 ; VI-NEXT:    s_add_i32 s9, s18, 3
@@ -18146,31 +19154,35 @@ define inreg <8 x bfloat> @bitcast_v8i16_to_v8bf16_scalar(<8 x i16> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s18, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB93_3: ; %end
+; VI-NEXT:  .LBB93_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB93_4:
-; VI-NEXT:    s_branch .LBB93_2
 ;
 ; GFX9-LABEL: bitcast_v8i16_to_v8bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB93_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB93_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB93_4
-; GFX9-NEXT:  .LBB93_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB93_3
+; GFX9-NEXT:  .LBB93_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB93_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB93_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v3, s19, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB93_3:
-; GFX9-NEXT:    s_branch .LBB93_2
-; GFX9-NEXT:  .LBB93_4:
+; GFX9-NEXT:  .LBB93_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -18182,18 +19194,21 @@ define inreg <8 x bfloat> @bitcast_v8i16_to_v8bf16_scalar(<8 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB93_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB93_4
-; GFX11-NEXT:  .LBB93_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB93_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB93_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB93_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v3, s3, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB93_3:
-; GFX11-NEXT:    s_branch .LBB93_2
 ; GFX11-NEXT:  .LBB93_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -18671,7 +19686,7 @@ define inreg <8 x i16> @bitcast_v8bf16_to_v8i16_scalar(<8 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s6
 ; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s5
 ; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s4
-; SI-NEXT:    s_cbranch_scc0 .LBB95_4
+; SI-NEXT:    s_cbranch_scc0 .LBB95_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v15
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v1
@@ -18679,10 +19694,26 @@ define inreg <8 x i16> @bitcast_v8bf16_to_v8i16_scalar(<8 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v14
 ; SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v8
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v2
+; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v10
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v4
-; SI-NEXT:    s_cbranch_execnz .LBB95_3
-; SI-NEXT:  .LBB95_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB95_3
+; SI-NEXT:  .LBB95_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    ; implicit-def: $vgpr12
+; SI-NEXT:    ; implicit-def: $vgpr5
+; SI-NEXT:    ; implicit-def: $vgpr11
+; SI-NEXT:    ; implicit-def: $vgpr7
+; SI-NEXT:    ; implicit-def: $vgpr13
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:    ; implicit-def: $vgpr9
+; SI-NEXT:  .LBB95_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB95_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v1
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v15
 ; SI-NEXT:    v_add_f32_e32 v12, 0x40c00000, v1
@@ -18711,7 +19742,7 @@ define inreg <8 x i16> @bitcast_v8bf16_to_v8i16_scalar(<8 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v12
 ; SI-NEXT:    v_lshr_b64 v[12:13], v[4:5], 16
 ; SI-NEXT:    v_lshr_b64 v[13:14], v[2:3], 16
-; SI-NEXT:  .LBB95_3: ; %end
+; SI-NEXT:  .LBB95_5: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v12
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v1
@@ -18725,25 +19756,23 @@ define inreg <8 x i16> @bitcast_v8bf16_to_v8i16_scalar(<8 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v9
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v4
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB95_4:
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    ; implicit-def: $vgpr12
-; SI-NEXT:    ; implicit-def: $vgpr5
-; SI-NEXT:    ; implicit-def: $vgpr11
-; SI-NEXT:    ; implicit-def: $vgpr7
-; SI-NEXT:    ; implicit-def: $vgpr13
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    ; implicit-def: $vgpr9
-; SI-NEXT:    s_branch .LBB95_2
 ;
 ; VI-LABEL: bitcast_v8bf16_to_v8i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB95_3
+; VI-NEXT:    s_cbranch_scc0 .LBB95_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB95_4
-; VI-NEXT:  .LBB95_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB95_3
+; VI-NEXT:  .LBB95_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB95_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB95_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v7, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v7
@@ -18820,9 +19849,7 @@ define inreg <8 x i16> @bitcast_v8bf16_to_v8i16_scalar(<8 x bfloat> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v1, v3
 ; VI-NEXT:    v_mov_b32_e32 v3, v6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB95_3:
-; VI-NEXT:    s_branch .LBB95_2
-; VI-NEXT:  .LBB95_4:
+; VI-NEXT:  .LBB95_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -18833,10 +19860,18 @@ define inreg <8 x i16> @bitcast_v8bf16_to_v8i16_scalar(<8 x bfloat> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB95_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB95_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB95_4
-; GFX9-NEXT:  .LBB95_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB95_3
+; GFX9-NEXT:  .LBB95_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB95_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB95_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -18912,9 +19947,7 @@ define inreg <8 x i16> @bitcast_v8bf16_to_v8i16_scalar(<8 x bfloat> inreg %a, i3
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v0, 16, v5
 ; GFX9-NEXT:    v_and_or_b32 v0, v4, v8, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB95_3:
-; GFX9-NEXT:    s_branch .LBB95_2
-; GFX9-NEXT:  .LBB95_4:
+; GFX9-NEXT:  .LBB95_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -18926,11 +19959,16 @@ define inreg <8 x i16> @bitcast_v8bf16_to_v8i16_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB95_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB95_4
-; GFX11-TRUE16-NEXT:  .LBB95_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB95_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-TRUE16-NEXT:  .LBB95_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB95_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s4, 0, s0
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
@@ -19001,8 +20039,6 @@ define inreg <8 x i16> @bitcast_v8bf16_to_v8i16_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v13, vcc_lo
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v9.h
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB95_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB95_2
 ; GFX11-TRUE16-NEXT:  .LBB95_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -19013,11 +20049,16 @@ define inreg <8 x i16> @bitcast_v8bf16_to_v8i16_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB95_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB95_4
-; GFX11-FAKE16-NEXT:  .LBB95_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB95_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-FAKE16-NEXT:  .LBB95_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB95_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s4, 0, s0
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
@@ -19100,8 +20141,6 @@ define inreg <8 x i16> @bitcast_v8bf16_to_v8i16_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v6, v8
 ; GFX11-FAKE16-NEXT:    v_and_or_b32 v0, 0xffff0000, v0, v9
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB95_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB95_2
 ; GFX11-FAKE16-NEXT:  .LBB95_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -19512,7 +20551,7 @@ define inreg <16 x i8> @bitcast_v8i16_to_v16i8_scalar(<8 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b32 s26, s17, 16
 ; SI-NEXT:    s_lshr_b32 s28, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB97_4
+; SI-NEXT:    s_cbranch_scc0 .LBB97_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s28, 16
@@ -19536,8 +20575,28 @@ define inreg <16 x i8> @bitcast_v8i16_to_v16i8_scalar(<8 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b32 s15, s7, 8
 ; SI-NEXT:    s_bfe_u32 s11, s26, 0x80008
 ; SI-NEXT:    s_bfe_u32 s13, s27, 0x80008
-; SI-NEXT:    s_cbranch_execnz .LBB97_3
-; SI-NEXT:  .LBB97_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[24:25], 0
+; SI-NEXT:    s_branch .LBB97_3
+; SI-NEXT:  .LBB97_2:
+; SI-NEXT:    s_mov_b64 s[24:25], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr22
+; SI-NEXT:    ; implicit-def: $sgpr20
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:  .LBB97_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[24:25], s[24:25], exec
+; SI-NEXT:    s_cselect_b32 s21, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s21, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB97_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s29, 16
@@ -19570,7 +20629,7 @@ define inreg <16 x i8> @bitcast_v8i16_to_v16i8_scalar(<8 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b32 s13, s7, 24
 ; SI-NEXT:    s_lshr_b32 s27, s7, 16
 ; SI-NEXT:    s_lshr_b32 s15, s7, 8
-; SI-NEXT:  .LBB97_3: ; %end
+; SI-NEXT:  .LBB97_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s12
 ; SI-NEXT:    v_mov_b32_e32 v2, s10
@@ -19588,26 +20647,12 @@ define inreg <16 x i8> @bitcast_v8i16_to_v16i8_scalar(<8 x i16> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v14, s27
 ; SI-NEXT:    v_mov_b32_e32 v15, s13
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB97_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr22
-; SI-NEXT:    ; implicit-def: $sgpr20
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    s_branch .LBB97_2
 ;
 ; VI-LABEL: bitcast_v8i16_to_v16i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB97_4
+; VI-NEXT:    s_cbranch_scc0 .LBB97_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s10, s19, 24
 ; VI-NEXT:    s_lshr_b32 s11, s19, 16
@@ -19621,8 +20666,28 @@ define inreg <16 x i8> @bitcast_v8i16_to_v16i8_scalar(<8 x i16> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s23, s16, 8
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB97_3
-; VI-NEXT:  .LBB97_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[8:9], 0
+; VI-NEXT:    s_branch .LBB97_3
+; VI-NEXT:  .LBB97_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
+; VI-NEXT:    ; implicit-def: $sgpr23
+; VI-NEXT:    ; implicit-def: $sgpr22
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr21
+; VI-NEXT:    ; implicit-def: $sgpr20
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:  .LBB97_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB97_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s17, 3
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -19655,7 +20720,7 @@ define inreg <16 x i8> @bitcast_v8i16_to_v16i8_scalar(<8 x i16> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s21, s17, 8
 ; VI-NEXT:    s_lshr_b32 s22, s16, 16
 ; VI-NEXT:    s_lshr_b32 s23, s16, 8
-; VI-NEXT:  .LBB97_3: ; %end
+; VI-NEXT:  .LBB97_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s23
 ; VI-NEXT:    v_mov_b32_e32 v2, s22
@@ -19673,26 +20738,12 @@ define inreg <16 x i8> @bitcast_v8i16_to_v16i8_scalar(<8 x i16> inreg %a, i32 in
 ; VI-NEXT:    v_mov_b32_e32 v14, s11
 ; VI-NEXT:    v_mov_b32_e32 v15, s10
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB97_4:
-; VI-NEXT:    ; implicit-def: $sgpr23
-; VI-NEXT:    ; implicit-def: $sgpr22
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr21
-; VI-NEXT:    ; implicit-def: $sgpr20
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    s_branch .LBB97_2
 ;
 ; GFX9-LABEL: bitcast_v8i16_to_v16i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB97_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB97_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s10, s19, 24
 ; GFX9-NEXT:    s_lshr_b32 s11, s19, 16
@@ -19706,8 +20757,28 @@ define inreg <16 x i8> @bitcast_v8i16_to_v16i8_scalar(<8 x i16> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b32 s23, s16, 8
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB97_4
-; GFX9-NEXT:  .LBB97_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[8:9], 0
+; GFX9-NEXT:    s_branch .LBB97_3
+; GFX9-NEXT:  .LBB97_2:
+; GFX9-NEXT:    s_mov_b64 s[8:9], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr23
+; GFX9-NEXT:    ; implicit-def: $sgpr21
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr22
+; GFX9-NEXT:    ; implicit-def: $sgpr20
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:  .LBB97_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB97_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v19, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v18, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v17, s19, 3 op_sel_hi:[1,0]
@@ -19724,22 +20795,8 @@ define inreg <16 x i8> @bitcast_v8i16_to_v16i8_scalar(<8 x i16> inreg %a, i32 in
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v19
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v18
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v18
-; GFX9-NEXT:    s_branch .LBB97_5
-; GFX9-NEXT:  .LBB97_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr23
-; GFX9-NEXT:    ; implicit-def: $sgpr21
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr22
-; GFX9-NEXT:    ; implicit-def: $sgpr20
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    s_branch .LBB97_2
-; GFX9-NEXT:  .LBB97_4:
+; GFX9-NEXT:    s_branch .LBB97_6
+; GFX9-NEXT:  .LBB97_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s18
@@ -19756,7 +20813,7 @@ define inreg <16 x i8> @bitcast_v8i16_to_v16i8_scalar(<8 x i16> inreg %a, i32 in
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s10
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:  .LBB97_5: ; %end
+; GFX9-NEXT:  .LBB97_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, v18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v19
 ; GFX9-NEXT:    v_mov_b32_e32 v8, v16
@@ -19768,7 +20825,7 @@ define inreg <16 x i8> @bitcast_v8i16_to_v16i8_scalar(<8 x i16> inreg %a, i32 in
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB97_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB97_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s9, s3, 24
 ; GFX11-NEXT:    s_lshr_b32 s10, s3, 16
@@ -19782,9 +20839,28 @@ define inreg <16 x i8> @bitcast_v8i16_to_v16i8_scalar(<8 x i16> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b32 s18, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB97_4
-; GFX11-NEXT:  .LBB97_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB97_3
+; GFX11-NEXT:  .LBB97_2:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr18
+; GFX11-NEXT:    ; implicit-def: $sgpr16
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr17
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:  .LBB97_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB97_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v19, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v17, s3, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v16, s2, 3 op_sel_hi:[1,0]
@@ -19803,22 +20879,8 @@ define inreg <16 x i8> @bitcast_v8i16_to_v16i8_scalar(<8 x i16> inreg %a, i32 in
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v19
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v18
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v18
-; GFX11-NEXT:    s_branch .LBB97_5
-; GFX11-NEXT:  .LBB97_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr18
-; GFX11-NEXT:    ; implicit-def: $sgpr16
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr17
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    s_branch .LBB97_2
-; GFX11-NEXT:  .LBB97_4:
+; GFX11-NEXT:    s_branch .LBB97_6
+; GFX11-NEXT:  .LBB97_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s0 :: v_dual_mov_b32 v19, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s2 :: v_dual_mov_b32 v17, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v1, s18 :: v_dual_mov_b32 v2, s16
@@ -19829,7 +20891,7 @@ define inreg <16 x i8> @bitcast_v8i16_to_v16i8_scalar(<8 x i16> inreg %a, i32 in
 ; GFX11-NEXT:    v_mov_b32_e32 v15, s9
 ; GFX11-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX11-NEXT:    v_mov_b32_e32 v3, s4
-; GFX11-NEXT:  .LBB97_5: ; %end
+; GFX11-NEXT:  .LBB97_6: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v0, v18
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v19
 ; GFX11-NEXT:    v_mov_b32_e32 v8, v16
@@ -20406,7 +21468,7 @@ define inreg <8 x i16> @bitcast_v16i8_to_v8i16_scalar(<16 x i8> inreg %a, i32 in
 ; SI-NEXT:    v_readfirstlane_b32 s14, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s15, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB99_4
+; SI-NEXT:    s_cbranch_scc0 .LBB99_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -20448,10 +21510,24 @@ define inreg <8 x i16> @bitcast_v16i8_to_v8i16_scalar(<16 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_or_b32 s4, s4, s42
 ; SI-NEXT:    s_lshr_b32 s11, s7, 16
 ; SI-NEXT:    s_lshr_b32 s9, s9, 16
+; SI-NEXT:    s_mov_b64 s[12:13], 0
 ; SI-NEXT:    s_mov_b32 s7, s41
 ; SI-NEXT:    s_mov_b32 s5, s43
-; SI-NEXT:    s_cbranch_execnz .LBB99_3
-; SI-NEXT:  .LBB99_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB99_3
+; SI-NEXT:  .LBB99_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:  .LBB99_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB99_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_and_b32 s4, s24, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s25, 8
@@ -20508,7 +21584,7 @@ define inreg <8 x i16> @bitcast_v16i8_to_v8i16_scalar(<16 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[4:5], 16
 ; SI-NEXT:    s_lshr_b32 s11, s7, 16
 ; SI-NEXT:    s_lshr_b32 s9, s5, 16
-; SI-NEXT:  .LBB99_3: ; %end
+; SI-NEXT:  .LBB99_5: ; %end
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s8
@@ -20526,14 +21602,6 @@ define inreg <8 x i16> @bitcast_v16i8_to_v8i16_scalar(<16 x i8> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
 ; SI-NEXT:    v_mov_b32_e32 v3, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB99_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    s_branch .LBB99_2
 ;
 ; VI-LABEL: bitcast_v16i8_to_v8i16_scalar:
 ; VI:       ; %bb.0:
@@ -20542,7 +21610,7 @@ define inreg <8 x i16> @bitcast_v16i8_to_v8i16_scalar(<16 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB99_4
+; VI-NEXT:    s_cbranch_scc0 .LBB99_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -20569,8 +21637,17 @@ define inreg <8 x i16> @bitcast_v16i8_to_v8i16_scalar(<16 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_perm_b32 v3, s7, v5, v3
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    s_cbranch_execnz .LBB99_3
-; VI-NEXT:  .LBB99_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB99_3
+; VI-NEXT:  .LBB99_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; VI-NEXT:  .LBB99_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB99_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
@@ -20612,11 +21689,8 @@ define inreg <8 x i16> @bitcast_v16i8_to_v8i16_scalar(<16 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
 ; VI-NEXT:    v_add_u32_e32 v2, vcc, 0x3000000, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x3000000, v3
-; VI-NEXT:  .LBB99_3: ; %end
+; VI-NEXT:  .LBB99_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB99_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; VI-NEXT:    s_branch .LBB99_2
 ;
 ; GFX9-LABEL: bitcast_v16i8_to_v8i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -20625,7 +21699,7 @@ define inreg <8 x i16> @bitcast_v16i8_to_v8i16_scalar(<16 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB99_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB99_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -20652,8 +21726,17 @@ define inreg <8 x i16> @bitcast_v16i8_to_v8i16_scalar(<16 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_perm_b32 v3, s7, v5, v3
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v3, v4, v3
-; GFX9-NEXT:    s_cbranch_execnz .LBB99_3
-; GFX9-NEXT:  .LBB99_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB99_3
+; GFX9-NEXT:  .LBB99_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX9-NEXT:  .LBB99_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB99_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
@@ -20692,18 +21775,15 @@ define inreg <8 x i16> @bitcast_v16i8_to_v8i16_scalar(<16 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_add_u32_e32 v4, 0x300, v4
 ; GFX9-NEXT:    v_add_u32_sdwa v3, v3, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v3, v4, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB99_3: ; %end
+; GFX9-NEXT:  .LBB99_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB99_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX9-NEXT:    s_branch .LBB99_2
 ;
 ; GFX11-LABEL: bitcast_v16i8_to_v8i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB99_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB99_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
@@ -20725,9 +21805,17 @@ define inreg <8 x i16> @bitcast_v16i8_to_v8i16_scalar(<16 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v4
 ; GFX11-NEXT:    v_or_b32_e32 v3, v8, v6
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB99_3
-; GFX11-NEXT:  .LBB99_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB99_3
+; GFX11-NEXT:  .LBB99_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX11-NEXT:  .LBB99_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB99_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -20766,11 +21854,8 @@ define inreg <8 x i16> @bitcast_v16i8_to_v8i16_scalar(<16 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v6
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v3, v7, v8
-; GFX11-NEXT:  .LBB99_3: ; %end
+; GFX11-NEXT:  .LBB99_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB99_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX11-NEXT:    s_branch .LBB99_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -20965,7 +22050,7 @@ define inreg <8 x bfloat> @bitcast_v8f16_to_v8bf16_scalar(<8 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s7, s17, 16
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB101_3
+; SI-NEXT:    s_cbranch_scc0 .LBB101_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s10, s16, 16
 ; SI-NEXT:    s_lshl_b32 s11, s6, 16
@@ -20975,8 +22060,24 @@ define inreg <8 x bfloat> @bitcast_v8f16_to_v8bf16_scalar(<8 x half> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s15, s8, 16
 ; SI-NEXT:    s_lshl_b32 s20, s19, 16
 ; SI-NEXT:    s_lshl_b32 s21, s9, 16
-; SI-NEXT:    s_cbranch_execnz .LBB101_4
-; SI-NEXT:  .LBB101_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB101_3
+; SI-NEXT:  .LBB101_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr20
+; SI-NEXT:    ; implicit-def: $sgpr21
+; SI-NEXT:  .LBB101_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB101_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s9
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s19
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s8
@@ -21009,18 +22110,8 @@ define inreg <8 x bfloat> @bitcast_v8f16_to_v8bf16_scalar(<8 x half> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
-; SI-NEXT:    s_branch .LBB101_5
-; SI-NEXT:  .LBB101_3:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr20
-; SI-NEXT:    ; implicit-def: $sgpr21
-; SI-NEXT:    s_branch .LBB101_2
-; SI-NEXT:  .LBB101_4:
+; SI-NEXT:    s_branch .LBB101_6
+; SI-NEXT:  .LBB101_5:
 ; SI-NEXT:    v_mov_b32_e32 v5, s21
 ; SI-NEXT:    v_mov_b32_e32 v4, s20
 ; SI-NEXT:    v_mov_b32_e32 v6, s15
@@ -21029,7 +22120,7 @@ define inreg <8 x bfloat> @bitcast_v8f16_to_v8bf16_scalar(<8 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v2, s12
 ; SI-NEXT:    v_mov_b32_e32 v1, s11
 ; SI-NEXT:    v_mov_b32_e32 v0, s10
-; SI-NEXT:  .LBB101_5: ; %end
+; SI-NEXT:  .LBB101_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
@@ -21052,10 +22143,18 @@ define inreg <8 x bfloat> @bitcast_v8f16_to_v8bf16_scalar(<8 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB101_3
+; VI-NEXT:    s_cbranch_scc0 .LBB101_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB101_4
-; VI-NEXT:  .LBB101_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB101_3
+; VI-NEXT:  .LBB101_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB101_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB101_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
@@ -21078,9 +22177,7 @@ define inreg <8 x bfloat> @bitcast_v8f16_to_v8bf16_scalar(<8 x half> inreg %a, i
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v6
 ; VI-NEXT:    v_or_b32_e32 v0, v4, v5
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB101_3:
-; VI-NEXT:    s_branch .LBB101_2
-; VI-NEXT:  .LBB101_4:
+; VI-NEXT:  .LBB101_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -21091,19 +22188,25 @@ define inreg <8 x bfloat> @bitcast_v8f16_to_v8bf16_scalar(<8 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB101_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB101_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB101_4
-; GFX9-NEXT:  .LBB101_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB101_3
+; GFX9-NEXT:  .LBB101_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB101_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB101_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v3, s19, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB101_3:
-; GFX9-NEXT:    s_branch .LBB101_2
-; GFX9-NEXT:  .LBB101_4:
+; GFX9-NEXT:  .LBB101_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -21115,18 +22218,21 @@ define inreg <8 x bfloat> @bitcast_v8f16_to_v8bf16_scalar(<8 x half> inreg %a, i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB101_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB101_4
-; GFX11-NEXT:  .LBB101_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB101_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB101_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB101_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v3, 0x200, s3 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB101_3:
-; GFX11-NEXT:    s_branch .LBB101_2
 ; GFX11-NEXT:  .LBB101_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -21618,7 +22724,7 @@ define inreg <8 x half> @bitcast_v8bf16_to_v8f16_scalar(<8 x bfloat> inreg %a, i
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s5
 ; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s11
 ; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s7
-; SI-NEXT:    s_cbranch_scc0 .LBB103_4
+; SI-NEXT:    s_cbranch_scc0 .LBB103_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v20
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[0:1], 16
@@ -21629,11 +22735,25 @@ define inreg <8 x half> @bitcast_v8bf16_to_v8f16_scalar(<8 x bfloat> inreg %a, i
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v22
 ; SI-NEXT:    v_lshrrev_b32_e32 v17, 16, v23
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v22
+; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    v_lshr_b64 v[18:19], v[2:3], 16
 ; SI-NEXT:    v_lshr_b64 v[9:10], v[16:17], 16
 ; SI-NEXT:    v_lshr_b64 v[12:13], v[11:12], 16
-; SI-NEXT:    s_cbranch_execnz .LBB103_3
-; SI-NEXT:  .LBB103_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB103_3
+; SI-NEXT:  .LBB103_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr9
+; SI-NEXT:    ; implicit-def: $vgpr14
+; SI-NEXT:    ; implicit-def: $vgpr5
+; SI-NEXT:    ; implicit-def: $vgpr12
+; SI-NEXT:    ; implicit-def: $vgpr18
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:  .LBB103_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB103_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v23
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v16
 ; SI-NEXT:    v_add_f32_e32 v14, 0x40c00000, v2
@@ -21662,7 +22782,7 @@ define inreg <8 x half> @bitcast_v8bf16_to_v8f16_scalar(<8 x bfloat> inreg %a, i
 ; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v14
 ; SI-NEXT:    v_lshr_b64 v[14:15], v[4:5], 16
 ; SI-NEXT:    v_lshr_b64 v[18:19], v[2:3], 16
-; SI-NEXT:  .LBB103_3: ; %end
+; SI-NEXT:  .LBB103_5: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v9
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v14
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
@@ -21676,23 +22796,23 @@ define inreg <8 x half> @bitcast_v8bf16_to_v8f16_scalar(<8 x bfloat> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v8
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v4
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB103_4:
-; SI-NEXT:    ; implicit-def: $vgpr9
-; SI-NEXT:    ; implicit-def: $vgpr14
-; SI-NEXT:    ; implicit-def: $vgpr5
-; SI-NEXT:    ; implicit-def: $vgpr12
-; SI-NEXT:    ; implicit-def: $vgpr18
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    s_branch .LBB103_2
 ;
 ; VI-LABEL: bitcast_v8bf16_to_v8f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB103_3
+; VI-NEXT:    s_cbranch_scc0 .LBB103_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB103_4
-; VI-NEXT:  .LBB103_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB103_3
+; VI-NEXT:  .LBB103_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB103_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB103_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v7, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v7
@@ -21769,9 +22889,7 @@ define inreg <8 x half> @bitcast_v8bf16_to_v8f16_scalar(<8 x bfloat> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v1, v3
 ; VI-NEXT:    v_mov_b32_e32 v3, v6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB103_3:
-; VI-NEXT:    s_branch .LBB103_2
-; VI-NEXT:  .LBB103_4:
+; VI-NEXT:  .LBB103_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -21782,10 +22900,18 @@ define inreg <8 x half> @bitcast_v8bf16_to_v8f16_scalar(<8 x bfloat> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB103_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB103_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB103_4
-; GFX9-NEXT:  .LBB103_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB103_3
+; GFX9-NEXT:  .LBB103_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB103_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB103_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -21865,9 +22991,7 @@ define inreg <8 x half> @bitcast_v8bf16_to_v8f16_scalar(<8 x bfloat> inreg %a, i
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v8, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v4, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB103_3:
-; GFX9-NEXT:    s_branch .LBB103_2
-; GFX9-NEXT:  .LBB103_4:
+; GFX9-NEXT:  .LBB103_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -21879,11 +23003,16 @@ define inreg <8 x half> @bitcast_v8bf16_to_v8f16_scalar(<8 x bfloat> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB103_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB103_4
-; GFX11-TRUE16-NEXT:  .LBB103_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB103_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-TRUE16-NEXT:  .LBB103_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB103_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s4, 0, s0
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
@@ -21965,8 +23094,6 @@ define inreg <8 x half> @bitcast_v8bf16_to_v8f16_scalar(<8 x bfloat> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v5
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v7.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB103_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB103_2
 ; GFX11-TRUE16-NEXT:  .LBB103_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -21977,11 +23104,16 @@ define inreg <8 x half> @bitcast_v8bf16_to_v8f16_scalar(<8 x bfloat> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB103_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB103_4
-; GFX11-FAKE16-NEXT:  .LBB103_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB103_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-FAKE16-NEXT:  .LBB103_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB103_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s4, 0, s0
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
@@ -22072,8 +23204,6 @@ define inreg <8 x half> @bitcast_v8bf16_to_v8f16_scalar(<8 x bfloat> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4)
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v1, v6, 16, v7
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB103_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB103_2
 ; GFX11-FAKE16-NEXT:  .LBB103_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -22488,7 +23618,7 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b32 s26, s17, 16
 ; SI-NEXT:    s_lshr_b32 s27, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB105_3
+; SI-NEXT:    s_cbranch_scc0 .LBB105_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s27, 16
@@ -22512,8 +23642,28 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b32 s9, s13, 8
 ; SI-NEXT:    s_bfe_u32 s11, s26, 0x80008
 ; SI-NEXT:    s_bfe_u32 s15, s28, 0x80008
-; SI-NEXT:    s_cbranch_execnz .LBB105_4
-; SI-NEXT:  .LBB105_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[24:25], 0
+; SI-NEXT:    s_branch .LBB105_3
+; SI-NEXT:  .LBB105_2:
+; SI-NEXT:    s_mov_b64 s[24:25], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr22
+; SI-NEXT:    ; implicit-def: $sgpr20
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:  .LBB105_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[24:25], s[24:25], exec
+; SI-NEXT:    s_cselect_b32 s21, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s21, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB105_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s29
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s18
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s28
@@ -22556,22 +23706,8 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; SI-NEXT:    v_lshrrev_b32_e32 v13, 8, v18
 ; SI-NEXT:    v_bfe_u32 v7, v6, 8, 8
 ; SI-NEXT:    v_bfe_u32 v15, v14, 8, 8
-; SI-NEXT:    s_branch .LBB105_5
-; SI-NEXT:  .LBB105_3:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr22
-; SI-NEXT:    ; implicit-def: $sgpr20
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    s_branch .LBB105_2
-; SI-NEXT:  .LBB105_4:
+; SI-NEXT:    s_branch .LBB105_6
+; SI-NEXT:  .LBB105_5:
 ; SI-NEXT:    v_mov_b32_e32 v14, s28
 ; SI-NEXT:    v_mov_b32_e32 v6, s26
 ; SI-NEXT:    v_mov_b32_e32 v15, s15
@@ -22588,7 +23724,7 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; SI-NEXT:    v_mov_b32_e32 v11, s14
 ; SI-NEXT:    v_mov_b32_e32 v12, s20
 ; SI-NEXT:    v_mov_b32_e32 v9, s22
-; SI-NEXT:  .LBB105_5: ; %end
+; SI-NEXT:  .LBB105_6: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v2, v0
 ; SI-NEXT:    v_mov_b32_e32 v0, v19
 ; SI-NEXT:    v_mov_b32_e32 v4, v20
@@ -22601,7 +23737,7 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB105_3
+; VI-NEXT:    s_cbranch_scc0 .LBB105_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s14, s19, 24
 ; VI-NEXT:    s_lshr_b32 s20, s19, 16
@@ -22615,8 +23751,28 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; VI-NEXT:    s_lshr_b32 s12, s16, 8
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB105_4
-; VI-NEXT:  .LBB105_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[8:9], 0
+; VI-NEXT:    s_branch .LBB105_3
+; VI-NEXT:  .LBB105_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr23
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr22
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr21
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr20
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:  .LBB105_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB105_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x200
 ; VI-NEXT:    v_add_f16_e32 v6, s4, v1
@@ -22646,22 +23802,8 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 8, v18
 ; VI-NEXT:    v_bfe_u32 v15, v14, 8, 8
 ; VI-NEXT:    v_bfe_u32 v7, v6, 8, 8
-; VI-NEXT:    s_branch .LBB105_5
-; VI-NEXT:  .LBB105_3:
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr23
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr22
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr21
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr20
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    s_branch .LBB105_2
-; VI-NEXT:  .LBB105_4:
+; VI-NEXT:    s_branch .LBB105_6
+; VI-NEXT:  .LBB105_5:
 ; VI-NEXT:    v_mov_b32_e32 v2, s23
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v10, s21
@@ -22678,7 +23820,7 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; VI-NEXT:    v_mov_b32_e32 v5, s10
 ; VI-NEXT:    v_mov_b32_e32 v11, s6
 ; VI-NEXT:    v_mov_b32_e32 v3, s4
-; VI-NEXT:  .LBB105_5: ; %end
+; VI-NEXT:  .LBB105_6: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v4, v17
 ; VI-NEXT:    v_mov_b32_e32 v12, v16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -22687,7 +23829,7 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB105_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB105_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s10, s19, 24
 ; GFX9-NEXT:    s_lshr_b32 s11, s19, 16
@@ -22701,8 +23843,28 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; GFX9-NEXT:    s_lshr_b32 s23, s16, 8
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB105_4
-; GFX9-NEXT:  .LBB105_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[8:9], 0
+; GFX9-NEXT:    s_branch .LBB105_3
+; GFX9-NEXT:  .LBB105_2:
+; GFX9-NEXT:    s_mov_b64 s[8:9], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr23
+; GFX9-NEXT:    ; implicit-def: $sgpr21
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr22
+; GFX9-NEXT:    ; implicit-def: $sgpr20
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:  .LBB105_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB105_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v19, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v18, s16, v0 op_sel_hi:[1,0]
@@ -22720,22 +23882,8 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v19
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v18
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v18
-; GFX9-NEXT:    s_branch .LBB105_5
-; GFX9-NEXT:  .LBB105_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr23
-; GFX9-NEXT:    ; implicit-def: $sgpr21
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr22
-; GFX9-NEXT:    ; implicit-def: $sgpr20
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    s_branch .LBB105_2
-; GFX9-NEXT:  .LBB105_4:
+; GFX9-NEXT:    s_branch .LBB105_6
+; GFX9-NEXT:  .LBB105_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s18
@@ -22752,7 +23900,7 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s10
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:  .LBB105_5: ; %end
+; GFX9-NEXT:  .LBB105_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, v18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v19
 ; GFX9-NEXT:    v_mov_b32_e32 v8, v16
@@ -22764,7 +23912,7 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB105_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB105_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s9, s3, 24
 ; GFX11-NEXT:    s_lshr_b32 s10, s3, 16
@@ -22778,9 +23926,28 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; GFX11-NEXT:    s_lshr_b32 s18, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB105_4
-; GFX11-NEXT:  .LBB105_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB105_3
+; GFX11-NEXT:  .LBB105_2:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr18
+; GFX11-NEXT:    ; implicit-def: $sgpr16
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr17
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:  .LBB105_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB105_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v19, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v17, 0x200, s3 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v16, 0x200, s2 op_sel_hi:[0,1]
@@ -22799,22 +23966,8 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v19
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v18
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v18
-; GFX11-NEXT:    s_branch .LBB105_5
-; GFX11-NEXT:  .LBB105_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr18
-; GFX11-NEXT:    ; implicit-def: $sgpr16
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr17
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    s_branch .LBB105_2
-; GFX11-NEXT:  .LBB105_4:
+; GFX11-NEXT:    s_branch .LBB105_6
+; GFX11-NEXT:  .LBB105_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s0 :: v_dual_mov_b32 v19, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s2 :: v_dual_mov_b32 v17, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v1, s18 :: v_dual_mov_b32 v2, s16
@@ -22825,7 +23978,7 @@ define inreg <16 x i8> @bitcast_v8f16_to_v16i8_scalar(<8 x half> inreg %a, i32 i
 ; GFX11-NEXT:    v_mov_b32_e32 v15, s9
 ; GFX11-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX11-NEXT:    v_mov_b32_e32 v3, s4
-; GFX11-NEXT:  .LBB105_5: ; %end
+; GFX11-NEXT:  .LBB105_6: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v0, v18
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v19
 ; GFX11-NEXT:    v_mov_b32_e32 v8, v16
@@ -23402,7 +24555,7 @@ define inreg <8 x half> @bitcast_v16i8_to_v8f16_scalar(<16 x i8> inreg %a, i32 i
 ; SI-NEXT:    v_readfirstlane_b32 s14, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s15, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB107_4
+; SI-NEXT:    s_cbranch_scc0 .LBB107_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -23444,10 +24597,24 @@ define inreg <8 x half> @bitcast_v16i8_to_v8f16_scalar(<16 x i8> inreg %a, i32 i
 ; SI-NEXT:    s_or_b32 s4, s4, s42
 ; SI-NEXT:    s_lshr_b32 s11, s7, 16
 ; SI-NEXT:    s_lshr_b32 s9, s9, 16
+; SI-NEXT:    s_mov_b64 s[12:13], 0
 ; SI-NEXT:    s_mov_b32 s7, s41
 ; SI-NEXT:    s_mov_b32 s5, s43
-; SI-NEXT:    s_cbranch_execnz .LBB107_3
-; SI-NEXT:  .LBB107_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB107_3
+; SI-NEXT:  .LBB107_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:  .LBB107_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB107_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_and_b32 s4, s24, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s25, 8
@@ -23504,7 +24671,7 @@ define inreg <8 x half> @bitcast_v16i8_to_v8f16_scalar(<16 x i8> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[4:5], 16
 ; SI-NEXT:    s_lshr_b32 s11, s7, 16
 ; SI-NEXT:    s_lshr_b32 s9, s5, 16
-; SI-NEXT:  .LBB107_3: ; %end
+; SI-NEXT:  .LBB107_5: ; %end
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s8
@@ -23522,14 +24689,6 @@ define inreg <8 x half> @bitcast_v16i8_to_v8f16_scalar(<16 x i8> inreg %a, i32 i
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
 ; SI-NEXT:    v_mov_b32_e32 v3, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB107_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    s_branch .LBB107_2
 ;
 ; VI-LABEL: bitcast_v16i8_to_v8f16_scalar:
 ; VI:       ; %bb.0:
@@ -23538,7 +24697,7 @@ define inreg <8 x half> @bitcast_v16i8_to_v8f16_scalar(<16 x i8> inreg %a, i32 i
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB107_4
+; VI-NEXT:    s_cbranch_scc0 .LBB107_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -23565,8 +24724,17 @@ define inreg <8 x half> @bitcast_v16i8_to_v8f16_scalar(<16 x i8> inreg %a, i32 i
 ; VI-NEXT:    v_perm_b32 v3, s7, v5, v3
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    s_cbranch_execnz .LBB107_3
-; VI-NEXT:  .LBB107_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB107_3
+; VI-NEXT:  .LBB107_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; VI-NEXT:  .LBB107_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB107_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
@@ -23608,11 +24776,8 @@ define inreg <8 x half> @bitcast_v16i8_to_v8f16_scalar(<16 x i8> inreg %a, i32 i
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
 ; VI-NEXT:    v_add_u32_e32 v2, vcc, 0x3000000, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x3000000, v3
-; VI-NEXT:  .LBB107_3: ; %end
+; VI-NEXT:  .LBB107_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB107_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; VI-NEXT:    s_branch .LBB107_2
 ;
 ; GFX9-LABEL: bitcast_v16i8_to_v8f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -23621,7 +24786,7 @@ define inreg <8 x half> @bitcast_v16i8_to_v8f16_scalar(<16 x i8> inreg %a, i32 i
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB107_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB107_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -23648,8 +24813,17 @@ define inreg <8 x half> @bitcast_v16i8_to_v8f16_scalar(<16 x i8> inreg %a, i32 i
 ; GFX9-NEXT:    v_perm_b32 v3, s7, v5, v3
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v3, v4, v3
-; GFX9-NEXT:    s_cbranch_execnz .LBB107_3
-; GFX9-NEXT:  .LBB107_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB107_3
+; GFX9-NEXT:  .LBB107_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX9-NEXT:  .LBB107_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB107_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
@@ -23688,18 +24862,15 @@ define inreg <8 x half> @bitcast_v16i8_to_v8f16_scalar(<16 x i8> inreg %a, i32 i
 ; GFX9-NEXT:    v_add_u32_e32 v4, 0x300, v4
 ; GFX9-NEXT:    v_add_u32_sdwa v3, v3, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v3, v4, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB107_3: ; %end
+; GFX9-NEXT:  .LBB107_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB107_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX9-NEXT:    s_branch .LBB107_2
 ;
 ; GFX11-LABEL: bitcast_v16i8_to_v8f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB107_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB107_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
@@ -23721,9 +24892,17 @@ define inreg <8 x half> @bitcast_v16i8_to_v8f16_scalar(<16 x i8> inreg %a, i32 i
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v4
 ; GFX11-NEXT:    v_or_b32_e32 v3, v8, v6
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB107_3
-; GFX11-NEXT:  .LBB107_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB107_3
+; GFX11-NEXT:  .LBB107_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX11-NEXT:  .LBB107_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB107_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -23762,11 +24941,8 @@ define inreg <8 x half> @bitcast_v16i8_to_v8f16_scalar(<16 x i8> inreg %a, i32 i
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v6
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v3, v7, v8
-; GFX11-NEXT:  .LBB107_3: ; %end
+; GFX11-NEXT:  .LBB107_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB107_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX11-NEXT:    s_branch .LBB107_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -24456,101 +25632,107 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s10, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s11, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s10
-; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s11
-; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s8
+; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s10
+; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s11
+; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s8
 ; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s9
-; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s6
-; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s7
-; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s4
+; SI-NEXT:    v_mul_f32_e64 v32, 1.0, s6
+; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s7
+; SI-NEXT:    v_mul_f32_e64 v31, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB109_4
+; SI-NEXT:    s_cbranch_scc0 .LBB109_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v28
+; SI-NEXT:    v_lshrrev_b32_e32 v28, 16, v32
 ; SI-NEXT:    v_lshrrev_b32_e32 v26, 16, v30
-; SI-NEXT:    v_lshr_b64 v[19:20], v[8:9], 16
-; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v27
-; SI-NEXT:    v_lshr_b64 v[22:23], v[25:26], 16
-; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v29
-; SI-NEXT:    v_lshr_b64 v[20:21], v[5:6], 16
+; SI-NEXT:    v_lshr_b64 v[22:23], v[27:28], 16
+; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v31
+; SI-NEXT:    v_lshr_b64 v[0:1], v[25:26], 16
+; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v29
 ; SI-NEXT:    v_lshr_b64 v[23:24], v[13:14], 16
-; SI-NEXT:    v_lshr_b64 v[0:1], v[19:20], 16
+; SI-NEXT:    v_lshr_b64 v[1:2], v[5:6], 16
 ; SI-NEXT:    v_lshr_b64 v[10:11], v[22:23], 16
-; SI-NEXT:    v_lshr_b64 v[3:4], v[19:20], 24
-; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v27
-; SI-NEXT:    v_lshrrev_b32_e32 v15, 24, v29
-; SI-NEXT:    v_lshrrev_b32_e32 v9, 8, v20
-; SI-NEXT:    v_lshrrev_b32_e32 v16, 8, v23
-; SI-NEXT:    v_lshr_b64 v[1:2], v[19:20], 8
+; SI-NEXT:    v_lshr_b64 v[3:4], v[0:1], 24
+; SI-NEXT:    v_lshr_b64 v[20:21], v[0:1], 16
+; SI-NEXT:    v_lshr_b64 v[8:9], v[0:1], 8
 ; SI-NEXT:    v_lshr_b64 v[17:18], v[22:23], 24
 ; SI-NEXT:    v_lshr_b64 v[11:12], v[22:23], 8
-; SI-NEXT:    s_cbranch_execnz .LBB109_3
-; SI-NEXT:  .LBB109_2: ; %cmp.true
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v30
-; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v25
+; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v29
+; SI-NEXT:    v_lshrrev_b32_e32 v15, 24, v31
+; SI-NEXT:    v_lshrrev_b32_e32 v19, 8, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v16, 8, v23
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB109_3
+; SI-NEXT:  .LBB109_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    ; implicit-def: $vgpr8
+; SI-NEXT:    ; implicit-def: $vgpr20
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:    ; implicit-def: $vgpr19
+; SI-NEXT:    ; implicit-def: $vgpr7
+; SI-NEXT:    ; implicit-def: $vgpr22
+; SI-NEXT:    ; implicit-def: $vgpr11
+; SI-NEXT:    ; implicit-def: $vgpr10
+; SI-NEXT:    ; implicit-def: $vgpr16
+; SI-NEXT:    ; implicit-def: $vgpr15
+; SI-NEXT:    ; implicit-def: $vgpr17
+; SI-NEXT:  .LBB109_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB109_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v32
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v27
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_lshr_b64 v[22:23], v[0:1], 16
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v13
 ; SI-NEXT:    v_add_f32_e32 v13, 0x40c00000, v0
-; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v29
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v28
-; SI-NEXT:    v_add_f32_e32 v12, 0x40c00000, v0
-; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v8
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v31
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v30
+; SI-NEXT:    v_add_f32_e32 v10, 0x40c00000, v0
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v25
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
-; SI-NEXT:    v_lshr_b64 v[19:20], v[0:1], 16
-; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v5
-; SI-NEXT:    v_add_f32_e32 v5, 0x40c00000, v0
-; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v27
-; SI-NEXT:    v_add_f32_e32 v7, 0x40c00000, v0
-; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v12
+; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v5
+; SI-NEXT:    v_add_f32_e32 v5, 0x40c00000, v1
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v29
+; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v10
+; SI-NEXT:    v_add_f32_e32 v7, 0x40c00000, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v7
-; SI-NEXT:    v_lshr_b64 v[20:21], v[5:6], 16
 ; SI-NEXT:    v_lshr_b64 v[23:24], v[13:14], 16
-; SI-NEXT:    v_lshr_b64 v[0:1], v[19:20], 16
+; SI-NEXT:    v_lshr_b64 v[1:2], v[5:6], 16
+; SI-NEXT:    v_lshrrev_b32_e32 v15, 24, v10
 ; SI-NEXT:    v_lshr_b64 v[10:11], v[22:23], 16
-; SI-NEXT:    v_lshr_b64 v[3:4], v[19:20], 24
-; SI-NEXT:    v_lshr_b64 v[1:2], v[19:20], 8
+; SI-NEXT:    v_lshr_b64 v[3:4], v[0:1], 24
+; SI-NEXT:    v_lshr_b64 v[20:21], v[0:1], 16
+; SI-NEXT:    v_lshr_b64 v[8:9], v[0:1], 8
 ; SI-NEXT:    v_lshr_b64 v[17:18], v[22:23], 24
-; SI-NEXT:    v_lshrrev_b32_e32 v15, 24, v12
 ; SI-NEXT:    v_lshr_b64 v[11:12], v[22:23], 8
-; SI-NEXT:    v_lshrrev_b32_e32 v9, 8, v20
+; SI-NEXT:    v_lshrrev_b32_e32 v19, 8, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v16, 8, v23
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v7
-; SI-NEXT:  .LBB109_3: ; %end
-; SI-NEXT:    v_mov_b32_e32 v2, v0
-; SI-NEXT:    v_mov_b32_e32 v0, v19
-; SI-NEXT:    v_mov_b32_e32 v4, v20
-; SI-NEXT:    v_mov_b32_e32 v5, v9
-; SI-NEXT:    v_mov_b32_e32 v8, v22
+; SI-NEXT:  .LBB109_5: ; %end
+; SI-NEXT:    v_mov_b32_e32 v4, v1
+; SI-NEXT:    v_mov_b32_e32 v1, v8
+; SI-NEXT:    v_mov_b32_e32 v2, v20
 ; SI-NEXT:    v_mov_b32_e32 v9, v11
+; SI-NEXT:    v_mov_b32_e32 v5, v19
+; SI-NEXT:    v_mov_b32_e32 v8, v22
 ; SI-NEXT:    v_mov_b32_e32 v11, v17
 ; SI-NEXT:    v_mov_b32_e32 v12, v23
 ; SI-NEXT:    v_mov_b32_e32 v13, v16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB109_4:
-; SI-NEXT:    ; implicit-def: $vgpr19
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    ; implicit-def: $vgpr9
-; SI-NEXT:    ; implicit-def: $vgpr7
-; SI-NEXT:    ; implicit-def: $vgpr22
-; SI-NEXT:    ; implicit-def: $vgpr11
-; SI-NEXT:    ; implicit-def: $vgpr10
-; SI-NEXT:    ; implicit-def: $vgpr16
-; SI-NEXT:    ; implicit-def: $vgpr15
-; SI-NEXT:    ; implicit-def: $vgpr17
-; SI-NEXT:    s_branch .LBB109_2
 ;
 ; VI-LABEL: bitcast_v8bf16_to_v16i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB109_3
+; VI-NEXT:    s_cbranch_scc0 .LBB109_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s21, s19, 24
 ; VI-NEXT:    s_lshr_b32 s20, s19, 16
@@ -24564,8 +25746,28 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s13, s16, 8
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB109_4
-; VI-NEXT:  .LBB109_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[8:9], 0
+; VI-NEXT:    s_branch .LBB109_3
+; VI-NEXT:  .LBB109_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr22
+; VI-NEXT:    ; implicit-def: $sgpr23
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr20
+; VI-NEXT:    ; implicit-def: $sgpr21
+; VI-NEXT:  .LBB109_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB109_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v6, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v6
@@ -24653,22 +25855,8 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; VI-NEXT:    v_lshrrev_b32_e32 v5, 8, v4
 ; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; VI-NEXT:    v_lshrrev_b32_e32 v11, 8, v0
-; VI-NEXT:    s_branch .LBB109_5
-; VI-NEXT:  .LBB109_3:
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr22
-; VI-NEXT:    ; implicit-def: $sgpr23
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr20
-; VI-NEXT:    ; implicit-def: $sgpr21
-; VI-NEXT:    s_branch .LBB109_2
-; VI-NEXT:  .LBB109_4:
+; VI-NEXT:    s_branch .LBB109_6
+; VI-NEXT:  .LBB109_5:
 ; VI-NEXT:    v_mov_b32_e32 v8, s18
 ; VI-NEXT:    v_mov_b32_e32 v12, s19
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
@@ -24685,7 +25873,7 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v5, s10
 ; VI-NEXT:    v_mov_b32_e32 v16, s6
 ; VI-NEXT:    v_mov_b32_e32 v17, s4
-; VI-NEXT:  .LBB109_5: ; %end
+; VI-NEXT:  .LBB109_6: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v3, v17
 ; VI-NEXT:    v_mov_b32_e32 v1, v11
 ; VI-NEXT:    v_mov_b32_e32 v11, v16
@@ -24695,7 +25883,7 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB109_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB109_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s12, s19, 24
 ; GFX9-NEXT:    s_lshr_b32 s22, s19, 16
@@ -24709,8 +25897,28 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s14, s16, 8
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB109_4
-; GFX9-NEXT:  .LBB109_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[8:9], 0
+; GFX9-NEXT:    s_branch .LBB109_3
+; GFX9-NEXT:  .LBB109_2:
+; GFX9-NEXT:    s_mov_b64 s[8:9], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr21
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr20
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr23
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr22
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:  .LBB109_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB109_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -24800,22 +26008,8 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v7, 24, v19
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v19
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v18
-; GFX9-NEXT:    s_branch .LBB109_5
-; GFX9-NEXT:  .LBB109_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr21
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr20
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr23
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr22
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    s_branch .LBB109_2
-; GFX9-NEXT:  .LBB109_4:
+; GFX9-NEXT:    s_branch .LBB109_6
+; GFX9-NEXT:  .LBB109_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s23
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s19
@@ -24832,7 +26026,7 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s11
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:  .LBB109_5: ; %end
+; GFX9-NEXT:  .LBB109_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v17
 ; GFX9-NEXT:    v_mov_b32_e32 v12, v16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -24842,7 +26036,7 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB109_3
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB109_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s3, 24
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s17, s3, 16
@@ -24856,9 +26050,28 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s0, 8
 ; GFX11-TRUE16-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-TRUE16-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB109_4
-; GFX11-TRUE16-NEXT:  .LBB109_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB109_3
+; GFX11-TRUE16-NEXT:  .LBB109_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr16
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr18
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr17
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:  .LBB109_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s5, s8, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB109_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s4, s1, 16
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s1, 0, s1
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
@@ -24958,22 +26171,8 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v20.h, v10.l
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b64 v[11:12], 24, v[20:21]
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v9, 8, v20
-; GFX11-TRUE16-NEXT:    s_branch .LBB109_5
-; GFX11-TRUE16-NEXT:  .LBB109_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr16
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr4
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr18
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr17
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    s_branch .LBB109_2
-; GFX11-TRUE16-NEXT:  .LBB109_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB109_6
+; GFX11-TRUE16-NEXT:  .LBB109_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v8, s2 :: v_dual_mov_b32 v17, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v10, s18 :: v_dual_mov_b32 v9, s14
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v16, s3 :: v_dual_mov_b32 v15, s11
@@ -24983,7 +26182,7 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v6, s15 :: v_dual_mov_b32 v5, s10
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, s4
-; GFX11-TRUE16-NEXT:  .LBB109_5: ; %end
+; GFX11-TRUE16-NEXT:  .LBB109_6: ; %end
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v17
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v12, v16
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -24993,7 +26192,7 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB109_3
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB109_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s3, 24
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s17, s3, 16
@@ -25007,9 +26206,28 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s0, 8
 ; GFX11-FAKE16-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-FAKE16-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB109_4
-; GFX11-FAKE16-NEXT:  .LBB109_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB109_3
+; GFX11-FAKE16-NEXT:  .LBB109_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr16
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr18
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr17
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:  .LBB109_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s5, s8, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB109_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s4, s1, 16
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s1, 0, s1
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
@@ -25105,22 +26323,8 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b64 v[11:12], 24, v[20:21]
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v9, 8, v20
-; GFX11-FAKE16-NEXT:    s_branch .LBB109_5
-; GFX11-FAKE16-NEXT:  .LBB109_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr16
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr4
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr18
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr17
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    s_branch .LBB109_2
-; GFX11-FAKE16-NEXT:  .LBB109_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB109_6
+; GFX11-FAKE16-NEXT:  .LBB109_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v8, s2 :: v_dual_mov_b32 v17, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v10, s18 :: v_dual_mov_b32 v9, s14
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v16, s3 :: v_dual_mov_b32 v15, s11
@@ -25130,7 +26334,7 @@ define inreg <16 x i8> @bitcast_v8bf16_to_v16i8_scalar(<8 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v6, s15 :: v_dual_mov_b32 v5, s10
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, s4
-; GFX11-FAKE16-NEXT:  .LBB109_5: ; %end
+; GFX11-FAKE16-NEXT:  .LBB109_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v17
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v12, v16
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -25707,7 +26911,7 @@ define inreg <8 x bfloat> @bitcast_v16i8_to_v8bf16_scalar(<16 x i8> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s12, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s14, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB111_4
+; SI-NEXT:    s_cbranch_scc0 .LBB111_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
@@ -25741,8 +26945,24 @@ define inreg <8 x bfloat> @bitcast_v16i8_to_v8bf16_scalar(<16 x i8> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_lshl_b32 s5, s12, 24
 ; SI-NEXT:    s_or_b32 s15, s5, s4
-; SI-NEXT:    s_cbranch_execnz .LBB111_3
-; SI-NEXT:  .LBB111_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB111_3
+; SI-NEXT:  .LBB111_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:  .LBB111_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB111_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s28, s28, 3
 ; SI-NEXT:    s_and_b32 s4, s28, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s29, 8
@@ -25803,7 +27023,7 @@ define inreg <8 x bfloat> @bitcast_v16i8_to_v8bf16_scalar(<16 x i8> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s9, s5, 16
 ; SI-NEXT:    s_and_b32 s15, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s11, s4, 16
-; SI-NEXT:  .LBB111_3: ; %end
+; SI-NEXT:  .LBB111_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s8
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s6
@@ -25821,16 +27041,6 @@ define inreg <8 x bfloat> @bitcast_v16i8_to_v8bf16_scalar(<16 x i8> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s11
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB111_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    s_branch .LBB111_2
 ;
 ; VI-LABEL: bitcast_v16i8_to_v8bf16_scalar:
 ; VI:       ; %bb.0:
@@ -25839,7 +27049,7 @@ define inreg <8 x bfloat> @bitcast_v16i8_to_v8bf16_scalar(<16 x i8> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB111_4
+; VI-NEXT:    s_cbranch_scc0 .LBB111_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -25866,8 +27076,17 @@ define inreg <8 x bfloat> @bitcast_v16i8_to_v8bf16_scalar(<16 x i8> inreg %a, i3
 ; VI-NEXT:    v_perm_b32 v3, s7, v5, v3
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    s_cbranch_execnz .LBB111_3
-; VI-NEXT:  .LBB111_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB111_3
+; VI-NEXT:  .LBB111_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; VI-NEXT:  .LBB111_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB111_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
@@ -25909,11 +27128,8 @@ define inreg <8 x bfloat> @bitcast_v16i8_to_v8bf16_scalar(<16 x i8> inreg %a, i3
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
 ; VI-NEXT:    v_add_u32_e32 v2, vcc, 0x3000000, v2
 ; VI-NEXT:    v_add_u32_e32 v3, vcc, 0x3000000, v3
-; VI-NEXT:  .LBB111_3: ; %end
+; VI-NEXT:  .LBB111_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB111_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; VI-NEXT:    s_branch .LBB111_2
 ;
 ; GFX9-LABEL: bitcast_v16i8_to_v8bf16_scalar:
 ; GFX9:       ; %bb.0:
@@ -25922,7 +27138,7 @@ define inreg <8 x bfloat> @bitcast_v16i8_to_v8bf16_scalar(<16 x i8> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB111_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB111_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -25949,8 +27165,17 @@ define inreg <8 x bfloat> @bitcast_v16i8_to_v8bf16_scalar(<16 x i8> inreg %a, i3
 ; GFX9-NEXT:    v_perm_b32 v3, s7, v5, v3
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v3, v4, v3
-; GFX9-NEXT:    s_cbranch_execnz .LBB111_3
-; GFX9-NEXT:  .LBB111_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB111_3
+; GFX9-NEXT:  .LBB111_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX9-NEXT:  .LBB111_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB111_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
@@ -25989,18 +27214,15 @@ define inreg <8 x bfloat> @bitcast_v16i8_to_v8bf16_scalar(<16 x i8> inreg %a, i3
 ; GFX9-NEXT:    v_add_u32_e32 v4, 0x300, v4
 ; GFX9-NEXT:    v_add_u32_sdwa v3, v3, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v3, v4, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB111_3: ; %end
+; GFX9-NEXT:  .LBB111_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB111_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX9-NEXT:    s_branch .LBB111_2
 ;
 ; GFX11-LABEL: bitcast_v16i8_to_v8bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB111_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB111_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
@@ -26022,9 +27244,17 @@ define inreg <8 x bfloat> @bitcast_v16i8_to_v8bf16_scalar(<16 x i8> inreg %a, i3
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v4
 ; GFX11-NEXT:    v_or_b32_e32 v3, v8, v6
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB111_3
-; GFX11-NEXT:  .LBB111_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB111_3
+; GFX11-NEXT:  .LBB111_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX11-NEXT:  .LBB111_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB111_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -26063,11 +27293,8 @@ define inreg <8 x bfloat> @bitcast_v16i8_to_v8bf16_scalar(<16 x i8> inreg %a, i3
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v6
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4)
 ; GFX11-NEXT:    v_or_b32_e32 v3, v7, v8
-; GFX11-NEXT:  .LBB111_3: ; %end
+; GFX11-NEXT:  .LBB111_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB111_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX11-NEXT:    s_branch .LBB111_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.160bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.160bit.ll
index c09389ef700ac..e34b6552733eb 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.160bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.160bit.ll
@@ -97,94 +97,115 @@ define inreg <5 x float> @bitcast_v5i32_to_v5f32_scalar(<5 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s21, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
 ; SI-NEXT:    v_mov_b32_e32 v4, s20
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v5i32_to_v5f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s21, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v5i32_to_v5f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s21, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s20, s20, 3
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v5i32_to_v5f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s17, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s16, s16, 3
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_mov_b32_e32 v4, s16
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -291,19 +312,25 @@ define inreg <5 x i32> @bitcast_v5f32_to_v5i32_scalar(<5 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s21, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; SI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -315,19 +342,25 @@ define inreg <5 x i32> @bitcast_v5f32_to_v5i32_scalar(<5 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s21, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; VI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -339,19 +372,25 @@ define inreg <5 x i32> @bitcast_v5f32_to_v5i32_scalar(<5 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s21, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -365,19 +404,22 @@ define inreg <5 x i32> @bitcast_v5f32_to_v5i32_scalar(<5 x float> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s17, 0
 ; GFX11-NEXT:    s_mov_b32 s5, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s5
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s5, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s5, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v4, s4, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v3, s3, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v2, s2, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -524,15 +566,28 @@ define inreg <10 x i16> @bitcast_v5i32_to_v10i16_scalar(<5 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s21, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s12, s19, 16
 ; SI-NEXT:    s_lshr_b32 s13, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
@@ -543,7 +598,7 @@ define inreg <10 x i16> @bitcast_v5i32_to_v10i16_scalar(<5 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s12, s19, 16
 ; SI-NEXT:    s_lshr_b32 s13, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s8, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -565,83 +620,91 @@ define inreg <10 x i16> @bitcast_v5i32_to_v10i16_scalar(<5 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v3, s8
 ; SI-NEXT:    v_mov_b32_e32 v4, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v5i32_to_v10i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s21, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v5i32_to_v10i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s21, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s20, s20, 3
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v5i32_to_v10i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s17, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s16, s16, 3
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_mov_b32_e32 v4, s16
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -827,7 +890,7 @@ define inreg <5 x i32> @bitcast_v10i16_to_v5i32_scalar(<10 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s14, s17, 16
 ; SI-NEXT:    s_lshr_b32 s15, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s21, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -844,8 +907,17 @@ define inreg <5 x i32> @bitcast_v10i16_to_v5i32_scalar(<10 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s8, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s10, s9, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s10
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s10, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s10, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -871,25 +943,30 @@ define inreg <5 x i32> @bitcast_v10i16_to_v5i32_scalar(<10 x i16> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s6, s6, 0x30000
 ; SI-NEXT:    s_add_i32 s7, s7, 0x30000
 ; SI-NEXT:    s_add_i32 s8, s8, 0x30000
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
 ; SI-NEXT:    v_mov_b32_e32 v4, s8
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v10i16_to_v5i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s21, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s20, 3
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -915,33 +992,37 @@ define inreg <5 x i32> @bitcast_v10i16_to_v5i32_scalar(<10 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v10i16_to_v5i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s21, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_4
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v4, s20, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v3, s19, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_3:
-; GFX9-NEXT:    s_branch .LBB7_2
-; GFX9-NEXT:  .LBB7_4:
+; GFX9-NEXT:  .LBB7_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -955,19 +1036,22 @@ define inreg <5 x i32> @bitcast_v10i16_to_v5i32_scalar(<10 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s17, 0
 ; GFX11-NEXT:    s_mov_b32 s5, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s5
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_4
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s5, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s5, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v4, s4, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v3, s3, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_3:
-; GFX11-NEXT:    s_branch .LBB7_2
 ; GFX11-NEXT:  .LBB7_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1114,15 +1198,28 @@ define inreg <10 x half> @bitcast_v5i32_to_v10f16_scalar(<5 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s21, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s12, s19, 16
 ; SI-NEXT:    s_lshr_b32 s13, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
@@ -1133,7 +1230,7 @@ define inreg <10 x half> @bitcast_v5i32_to_v10f16_scalar(<5 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s12, s19, 16
 ; SI-NEXT:    s_lshr_b32 s13, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s8, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -1155,83 +1252,91 @@ define inreg <10 x half> @bitcast_v5i32_to_v10f16_scalar(<5 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v3, s8
 ; SI-NEXT:    v_mov_b32_e32 v4, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v5i32_to_v10f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s21, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v5i32_to_v10f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s21, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s20, s20, 3
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s19
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v5i32_to_v10f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s17, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s16, s16, 3
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_mov_b32_e32 v4, s16
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1437,7 +1542,7 @@ define inreg <5 x i32> @bitcast_v10f16_to_v5i32_scalar(<10 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s14, s17, 16
 ; SI-NEXT:    s_lshr_b32 s15, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s21, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -1454,8 +1559,17 @@ define inreg <5 x i32> @bitcast_v10f16_to_v5i32_scalar(<10 x half> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s8, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s10, s9, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s10
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s10, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s10, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s15
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s14
@@ -1497,10 +1611,7 @@ define inreg <5 x i32> @bitcast_v10f16_to_v5i32_scalar(<10 x half> inreg %a, i32
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -1512,10 +1623,18 @@ define inreg <5 x i32> @bitcast_v10f16_to_v5i32_scalar(<10 x half> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s21, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s20, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -1543,9 +1662,7 @@ define inreg <5 x i32> @bitcast_v10f16_to_v5i32_scalar(<10 x half> inreg %a, i32
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v5
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1557,10 +1674,18 @@ define inreg <5 x i32> @bitcast_v10f16_to_v5i32_scalar(<10 x half> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s21, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v4, s20, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v3, s19, v0 op_sel_hi:[1,0]
@@ -1568,9 +1693,7 @@ define inreg <5 x i32> @bitcast_v10f16_to_v5i32_scalar(<10 x half> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1584,19 +1707,22 @@ define inreg <5 x i32> @bitcast_v10f16_to_v5i32_scalar(<10 x half> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s17, 0
 ; GFX11-NEXT:    s_mov_b32 s5, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s5
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s5, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s5, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v4, 0x200, s4 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v3, 0x200, s3 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1741,15 +1867,28 @@ define inreg <10 x i16> @bitcast_v5f32_to_v10i16_scalar(<5 x float> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s21, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_3
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s13, s19, 16
 ; SI-NEXT:    s_lshr_b32 s12, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_4
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; SI-NEXT:    v_add_f32_e64 v4, s20, 1.0
@@ -1760,15 +1899,8 @@ define inreg <10 x i16> @bitcast_v5f32_to_v10i16_scalar(<5 x float> inreg %a, i3
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[4:5], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v1
-; SI-NEXT:    s_branch .LBB13_5
-; SI-NEXT:  .LBB13_3:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB13_2
-; SI-NEXT:  .LBB13_4:
+; SI-NEXT:    s_branch .LBB13_6
+; SI-NEXT:  .LBB13_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1779,7 +1911,7 @@ define inreg <10 x i16> @bitcast_v5f32_to_v10i16_scalar(<5 x float> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v5, s6
 ; SI-NEXT:    v_mov_b32_e32 v8, s8
 ; SI-NEXT:    v_mov_b32_e32 v7, s4
-; SI-NEXT:  .LBB13_5: ; %end
+; SI-NEXT:  .LBB13_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v6
@@ -1801,19 +1933,25 @@ define inreg <10 x i16> @bitcast_v5f32_to_v10i16_scalar(<5 x float> inreg %a, i3
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s21, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_3
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB13_4
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; VI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_3:
-; VI-NEXT:    s_branch .LBB13_2
-; VI-NEXT:  .LBB13_4:
+; VI-NEXT:  .LBB13_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1828,19 +1966,25 @@ define inreg <10 x i16> @bitcast_v5f32_to_v10i16_scalar(<5 x float> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s21, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_4
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_3:
-; GFX9-NEXT:    s_branch .LBB13_2
-; GFX9-NEXT:  .LBB13_4:
+; GFX9-NEXT:  .LBB13_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1857,19 +2001,22 @@ define inreg <10 x i16> @bitcast_v5f32_to_v10i16_scalar(<5 x float> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s17, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_4
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB13_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v4, s4, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v3, s3, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v2, s2, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_3:
-; GFX11-NEXT:    s_branch .LBB13_2
 ; GFX11-NEXT:  .LBB13_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2061,7 +2208,7 @@ define inreg <5 x float> @bitcast_v10i16_to_v5f32_scalar(<10 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s14, s17, 16
 ; SI-NEXT:    s_lshr_b32 s15, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s21, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -2078,8 +2225,17 @@ define inreg <5 x float> @bitcast_v10i16_to_v5f32_scalar(<10 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s8, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s10, s9, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s10
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s10, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s10, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -2105,25 +2261,30 @@ define inreg <5 x float> @bitcast_v10i16_to_v5f32_scalar(<10 x i16> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s6, s6, 0x30000
 ; SI-NEXT:    s_add_i32 s7, s7, 0x30000
 ; SI-NEXT:    s_add_i32 s8, s8, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
+; SI-NEXT:  .LBB15_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
 ; SI-NEXT:    v_mov_b32_e32 v4, s8
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v10i16_to_v5f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s21, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s20, 3
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -2149,33 +2310,37 @@ define inreg <5 x float> @bitcast_v10i16_to_v5f32_scalar(<10 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
+; VI-NEXT:  .LBB15_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v10i16_to_v5f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s21, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v4, s20, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v3, s19, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2189,19 +2354,22 @@ define inreg <5 x float> @bitcast_v10i16_to_v5f32_scalar(<10 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s17, 0
 ; GFX11-NEXT:    s_mov_b32 s5, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s5
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s5, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s5, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v4, s4, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v3, s3, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2346,15 +2514,28 @@ define inreg <10 x half> @bitcast_v5f32_to_v10f16_scalar(<5 x float> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s21, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_3
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s13, s19, 16
 ; SI-NEXT:    s_lshr_b32 s12, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_4
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; SI-NEXT:    v_add_f32_e64 v4, s20, 1.0
@@ -2365,15 +2546,8 @@ define inreg <10 x half> @bitcast_v5f32_to_v10f16_scalar(<5 x float> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[4:5], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v1
-; SI-NEXT:    s_branch .LBB17_5
-; SI-NEXT:  .LBB17_3:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB17_2
-; SI-NEXT:  .LBB17_4:
+; SI-NEXT:    s_branch .LBB17_6
+; SI-NEXT:  .LBB17_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2384,7 +2558,7 @@ define inreg <10 x half> @bitcast_v5f32_to_v10f16_scalar(<5 x float> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v5, s6
 ; SI-NEXT:    v_mov_b32_e32 v8, s8
 ; SI-NEXT:    v_mov_b32_e32 v7, s4
-; SI-NEXT:  .LBB17_5: ; %end
+; SI-NEXT:  .LBB17_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v6
@@ -2406,19 +2580,25 @@ define inreg <10 x half> @bitcast_v5f32_to_v10f16_scalar(<5 x float> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s21, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_3
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB17_4
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; VI-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_3:
-; VI-NEXT:    s_branch .LBB17_2
-; VI-NEXT:  .LBB17_4:
+; VI-NEXT:  .LBB17_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2433,19 +2613,25 @@ define inreg <10 x half> @bitcast_v5f32_to_v10f16_scalar(<5 x float> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s21, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_4
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v3, s19, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_3:
-; GFX9-NEXT:    s_branch .LBB17_2
-; GFX9-NEXT:  .LBB17_4:
+; GFX9-NEXT:  .LBB17_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2462,19 +2648,22 @@ define inreg <10 x half> @bitcast_v5f32_to_v10f16_scalar(<5 x float> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s17, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_4
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB17_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v4, s4, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v3, s3, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v2, s2, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_3:
-; GFX11-NEXT:    s_branch .LBB17_2
 ; GFX11-NEXT:  .LBB17_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2686,7 +2875,7 @@ define inreg <5 x float> @bitcast_v10f16_to_v5f32_scalar(<10 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s14, s17, 16
 ; SI-NEXT:    s_lshr_b32 s15, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s21, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -2703,8 +2892,17 @@ define inreg <5 x float> @bitcast_v10f16_to_v5f32_scalar(<10 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s8, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s10, s9, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s10
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s10, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s10, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s15
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s14
@@ -2746,10 +2944,7 @@ define inreg <5 x float> @bitcast_v10f16_to_v5f32_scalar(<10 x half> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -2761,10 +2956,18 @@ define inreg <5 x float> @bitcast_v10f16_to_v5f32_scalar(<10 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s21, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s20, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -2792,9 +2995,7 @@ define inreg <5 x float> @bitcast_v10f16_to_v5f32_scalar(<10 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v5
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2806,10 +3007,18 @@ define inreg <5 x float> @bitcast_v10f16_to_v5f32_scalar(<10 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s21, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v4, s20, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v3, s19, v0 op_sel_hi:[1,0]
@@ -2817,9 +3026,7 @@ define inreg <5 x float> @bitcast_v10f16_to_v5f32_scalar(<10 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2833,19 +3040,22 @@ define inreg <5 x float> @bitcast_v10f16_to_v5f32_scalar(<10 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s17, 0
 ; GFX11-NEXT:    s_mov_b32 s5, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s5
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s5, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s5, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v4, 0x200, s4 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v3, 0x200, s3 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -3055,7 +3265,7 @@ define inreg <10 x half> @bitcast_v10i16_to_v10f16_scalar(<10 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s15, s17, 16
 ; SI-NEXT:    s_lshr_b32 s23, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s21, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_4
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s14, 16
@@ -3074,10 +3284,23 @@ define inreg <10 x half> @bitcast_v10i16_to_v10f16_scalar(<10 x i16> inreg %a, i
 ; SI-NEXT:    s_or_b32 s4, s4, s28
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[26:27], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[28:29], 16
+; SI-NEXT:    s_mov_b64 s[12:13], 0
 ; SI-NEXT:    s_mov_b32 s7, s27
 ; SI-NEXT:    s_mov_b32 s5, s29
-; SI-NEXT:    s_cbranch_execnz .LBB21_3
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr21
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s9, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s9, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s24, 16
@@ -3108,7 +3331,7 @@ define inreg <10 x half> @bitcast_v10i16_to_v10f16_scalar(<10 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s15, s7, 16
 ; SI-NEXT:    s_lshr_b32 s22, s5, 16
 ; SI-NEXT:    s_lshr_b32 s14, s21, 16
-; SI-NEXT:  .LBB21_3: ; %end
+; SI-NEXT:  .LBB21_5: ; %end
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s8
@@ -3130,22 +3353,23 @@ define inreg <10 x half> @bitcast_v10i16_to_v10f16_scalar(<10 x i16> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v3, s5
 ; SI-NEXT:    v_mov_b32_e32 v4, s8
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB21_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr21
-; SI-NEXT:    s_branch .LBB21_2
 ;
 ; VI-LABEL: bitcast_v10i16_to_v10f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s21, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_4
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_3
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_add_i32 s7, s17, 3
 ; VI-NEXT:    s_add_i32 s9, s18, 3
@@ -3171,33 +3395,37 @@ define inreg <10 x half> @bitcast_v10i16_to_v10f16_scalar(<10 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB21_3: ; %end
+; VI-NEXT:  .LBB21_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v3, s19
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB21_4:
-; VI-NEXT:    s_branch .LBB21_2
 ;
 ; GFX9-LABEL: bitcast_v10i16_to_v10f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s21, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_4
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v4, s20, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v3, s19, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB21_3:
-; GFX9-NEXT:    s_branch .LBB21_2
-; GFX9-NEXT:  .LBB21_4:
+; GFX9-NEXT:  .LBB21_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3214,19 +3442,22 @@ define inreg <10 x half> @bitcast_v10i16_to_v10f16_scalar(<10 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s17, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_4
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v4, s4, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v3, s3, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB21_3:
-; GFX11-NEXT:    s_branch .LBB21_2
 ; GFX11-NEXT:  .LBB21_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -3417,10 +3648,18 @@ define inreg <10 x i16> @bitcast_v10f16_to_v10i16_scalar(<10 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s6, s17, 16
 ; SI-NEXT:    s_lshr_b32 s10, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s21, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_3
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB23_4
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s10
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s9
@@ -3463,10 +3702,8 @@ define inreg <10 x i16> @bitcast_v10f16_to_v10i16_scalar(<10 x half> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[0:1], 16
 ; SI-NEXT:    v_lshr_b64 v[4:5], v[2:3], 16
 ; SI-NEXT:    v_or_b32_e32 v5, v14, v13
-; SI-NEXT:    s_branch .LBB23_5
-; SI-NEXT:  .LBB23_3:
-; SI-NEXT:    s_branch .LBB23_2
-; SI-NEXT:  .LBB23_4:
+; SI-NEXT:    s_branch .LBB23_6
+; SI-NEXT:  .LBB23_5:
 ; SI-NEXT:    v_mov_b32_e32 v8, s8
 ; SI-NEXT:    v_mov_b32_e32 v11, s7
 ; SI-NEXT:    v_mov_b32_e32 v12, s6
@@ -3477,7 +3714,7 @@ define inreg <10 x i16> @bitcast_v10f16_to_v10i16_scalar(<10 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v9, s16
 ; SI-NEXT:    v_mov_b32_e32 v6, s10
 ; SI-NEXT:    v_mov_b32_e32 v4, s9
-; SI-NEXT:  .LBB23_5: ; %end
+; SI-NEXT:  .LBB23_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v9
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
@@ -3499,10 +3736,18 @@ define inreg <10 x i16> @bitcast_v10f16_to_v10i16_scalar(<10 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s21, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_3
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_4
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
@@ -3530,9 +3775,7 @@ define inreg <10 x i16> @bitcast_v10f16_to_v10i16_scalar(<10 x half> inreg %a, i
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v7
 ; VI-NEXT:    v_or_b32_e32 v0, v5, v6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_3:
-; VI-NEXT:    s_branch .LBB23_2
-; VI-NEXT:  .LBB23_4:
+; VI-NEXT:  .LBB23_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3547,10 +3790,18 @@ define inreg <10 x i16> @bitcast_v10f16_to_v10i16_scalar(<10 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s21, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_4
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v4, s20, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v3, s19, v0 op_sel_hi:[1,0]
@@ -3558,9 +3809,7 @@ define inreg <10 x i16> @bitcast_v10f16_to_v10i16_scalar(<10 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_3:
-; GFX9-NEXT:    s_branch .LBB23_2
-; GFX9-NEXT:  .LBB23_4:
+; GFX9-NEXT:  .LBB23_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3577,19 +3826,22 @@ define inreg <10 x i16> @bitcast_v10f16_to_v10i16_scalar(<10 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s17, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_4
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v4, 0x200, s4 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v3, 0x200, s3 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_3:
-; GFX11-NEXT:    s_branch .LBB23_2
 ; GFX11-NEXT:  .LBB23_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.16bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.16bit.ll
index 30193251552ae..6588f7e82ed32 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.16bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.16bit.ll
@@ -105,62 +105,82 @@ define inreg half @bitcast_i16_to_f16_scalar(i16 inreg %a, i32 inreg %b) #0 {
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_and_b32 s6, s16, 0xffff
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_i16_to_f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_i16_to_f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_i16_to_f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccz .LBB1_4
-; GFX11-NEXT:  ; %bb.2: ; %end
-; GFX11-NEXT:    v_mov_b32_e32 v0, s0
-; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_3:
-; GFX11-NEXT:  .LBB1_4: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -292,19 +312,25 @@ define inreg i16 @bitcast_f16_to_i16_scalar(half inreg %a, i32 inreg %b) #0 {
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s6, s16, 0xffff
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s16
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -312,16 +338,22 @@ define inreg i16 @bitcast_f16_to_i16_scalar(half inreg %a, i32 inreg %b) #0 {
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -329,16 +361,22 @@ define inreg i16 @bitcast_f16_to_i16_scalar(half inreg %a, i32 inreg %b) #0 {
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_add_f16_e32 v0, s16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -347,15 +385,18 @@ define inreg i16 @bitcast_f16_to_i16_scalar(half inreg %a, i32 inreg %b) #0 {
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-TRUE16-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s1, -1
+; GFX11-TRUE16-NEXT:  .LBB3_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, 0x200, s0
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB3_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB3_2
 ; GFX11-TRUE16-NEXT:  .LBB3_4:
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -365,15 +406,18 @@ define inreg i16 @bitcast_f16_to_i16_scalar(half inreg %a, i32 inreg %b) #0 {
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-FAKE16-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s1, -1
+; GFX11-FAKE16-NEXT:  .LBB3_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, 0x200, s0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB3_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB3_2
 ; GFX11-FAKE16-NEXT:  .LBB3_4:
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -496,66 +540,86 @@ define inreg bfloat @bitcast_i16_to_bf16_scalar(i16 inreg %a, i32 inreg %b) #0 {
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_and_b32 s6, s16, 0xffff
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s7, s6, 16
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_lshl_b32 s4, s6, 16
 ; SI-NEXT:    s_add_i32 s7, s4, 0x30000
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s7
 ; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_i16_to_bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_i16_to_bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_i16_to_bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccz .LBB5_4
-; GFX11-NEXT:  ; %bb.2: ; %end
-; GFX11-NEXT:    v_mov_b32_e32 v0, s0
-; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_3:
-; GFX11-NEXT:  .LBB5_4: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -726,28 +790,42 @@ define inreg i16 @bitcast_bf16_to_i16_scalar(bfloat inreg %a, i32 inreg %b) #0 {
 ; SI-NEXT:    s_lshl_b32 s4, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
 ; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s4
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v1
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v1
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_bf16_to_i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_3
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_4
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v0
@@ -759,9 +837,7 @@ define inreg i16 @bitcast_bf16_to_i16_scalar(bfloat inreg %a, i32 inreg %b) #0 {
 ; VI-NEXT:    v_cndmask_b32_e32 v0, v1, v2, vcc
 ; VI-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_3:
-; VI-NEXT:    s_branch .LBB7_2
-; VI-NEXT:  .LBB7_4:
+; VI-NEXT:  .LBB7_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -769,10 +845,18 @@ define inreg i16 @bitcast_bf16_to_i16_scalar(bfloat inreg %a, i32 inreg %b) #0 {
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_4
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_lshl_b32 s4, s16, 16
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v0
@@ -784,9 +868,7 @@ define inreg i16 @bitcast_bf16_to_i16_scalar(bfloat inreg %a, i32 inreg %b) #0 {
 ; GFX9-NEXT:    v_cndmask_b32_e32 v0, v1, v2, vcc
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_3:
-; GFX9-NEXT:    s_branch .LBB7_2
-; GFX9-NEXT:  .LBB7_4:
+; GFX9-NEXT:  .LBB7_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -795,11 +877,16 @@ define inreg i16 @bitcast_bf16_to_i16_scalar(bfloat inreg %a, i32 inreg %b) #0 {
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_4
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -813,8 +900,6 @@ define inreg i16 @bitcast_bf16_to_i16_scalar(bfloat inreg %a, i32 inreg %b) #0 {
 ; GFX11-NEXT:    v_cndmask_b32_e32 v0, v1, v2, vcc_lo
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_3:
-; GFX11-NEXT:    s_branch .LBB7_2
 ; GFX11-NEXT:  .LBB7_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -943,22 +1028,28 @@ define inreg bfloat @bitcast_f16_to_bf16_scalar(half inreg %a, i32 inreg %b) #0
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_3
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s6, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB9_4
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s16
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
-; SI-NEXT:    s_branch .LBB9_5
-; SI-NEXT:  .LBB9_3:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB9_2
-; SI-NEXT:  .LBB9_4:
+; SI-NEXT:    s_branch .LBB9_6
+; SI-NEXT:  .LBB9_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s6
-; SI-NEXT:  .LBB9_5: ; %end
+; SI-NEXT:  .LBB9_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
@@ -967,16 +1058,22 @@ define inreg bfloat @bitcast_f16_to_bf16_scalar(half inreg %a, i32 inreg %b) #0
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_3
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_4
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_3:
-; VI-NEXT:    s_branch .LBB9_2
-; VI-NEXT:  .LBB9_4:
+; VI-NEXT:  .LBB9_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -984,16 +1081,22 @@ define inreg bfloat @bitcast_f16_to_bf16_scalar(half inreg %a, i32 inreg %b) #0
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_4
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_add_f16_e32 v0, s16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_3:
-; GFX9-NEXT:    s_branch .LBB9_2
-; GFX9-NEXT:  .LBB9_4:
+; GFX9-NEXT:  .LBB9_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1002,15 +1105,18 @@ define inreg bfloat @bitcast_f16_to_bf16_scalar(half inreg %a, i32 inreg %b) #0
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB9_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_4
-; GFX11-TRUE16-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s1, -1
+; GFX11-TRUE16-NEXT:  .LBB9_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, 0x200, s0
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB9_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB9_2
 ; GFX11-TRUE16-NEXT:  .LBB9_4:
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -1020,15 +1126,18 @@ define inreg bfloat @bitcast_f16_to_bf16_scalar(half inreg %a, i32 inreg %b) #0
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB9_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_4
-; GFX11-FAKE16-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s1, -1
+; GFX11-FAKE16-NEXT:  .LBB9_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, 0x200, s0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB9_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB9_2
 ; GFX11-FAKE16-NEXT:  .LBB9_4:
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -1199,28 +1308,42 @@ define inreg half @bitcast_bf16_to_f16_scalar(bfloat inreg %a, i32 inreg %b) #0
 ; SI-NEXT:    s_lshl_b32 s4, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
 ; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s4
-; SI-NEXT:    s_cbranch_scc0 .LBB11_4
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v1
-; SI-NEXT:    s_cbranch_execnz .LBB11_3
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v1
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
-; SI-NEXT:  .LBB11_3: ; %end
+; SI-NEXT:  .LBB11_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB11_4:
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    s_branch .LBB11_2
 ;
 ; VI-LABEL: bitcast_bf16_to_f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v0
@@ -1232,9 +1355,7 @@ define inreg half @bitcast_bf16_to_f16_scalar(bfloat inreg %a, i32 inreg %b) #0
 ; VI-NEXT:    v_cndmask_b32_e32 v0, v1, v2, vcc
 ; VI-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1242,10 +1363,18 @@ define inreg half @bitcast_bf16_to_f16_scalar(bfloat inreg %a, i32 inreg %b) #0
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_lshl_b32 s4, s16, 16
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v0
@@ -1257,9 +1386,7 @@ define inreg half @bitcast_bf16_to_f16_scalar(bfloat inreg %a, i32 inreg %b) #0
 ; GFX9-NEXT:    v_cndmask_b32_e32 v0, v1, v2, vcc
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1268,11 +1395,16 @@ define inreg half @bitcast_bf16_to_f16_scalar(bfloat inreg %a, i32 inreg %b) #0
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -1286,8 +1418,6 @@ define inreg half @bitcast_bf16_to_f16_scalar(bfloat inreg %a, i32 inreg %b) #0
 ; GFX11-NEXT:    v_cndmask_b32_e32 v0, v1, v2, vcc_lo
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.192bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.192bit.ll
index 647b212d4d0bf..29f303ceeabb5 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.192bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.192bit.ll
@@ -101,17 +101,25 @@ define inreg <6 x float> @bitcast_v6i32_to_v6f32_scalar(<6 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -119,24 +127,30 @@ define inreg <6 x float> @bitcast_v6i32_to_v6f32_scalar(<6 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v4, s20
 ; SI-NEXT:    v_mov_b32_e32 v5, s21
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v6i32_to_v6f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -144,24 +158,30 @@ define inreg <6 x float> @bitcast_v6i32_to_v6f32_scalar(<6 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v6i32_to_v6f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s21, s21, 3
 ; GFX9-NEXT:    s_add_i32 s20, s20, 3
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -169,33 +189,34 @@ define inreg <6 x float> @bitcast_v6i32_to_v6f32_scalar(<6 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s21
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v6i32_to_v6f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s17, s17, 3
 ; GFX11-NEXT:    s_add_i32 s16, s16, 3
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -305,10 +326,18 @@ define inreg <6 x i32> @bitcast_v6f32_to_v6i32_scalar(<6 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; SI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; SI-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -316,9 +345,7 @@ define inreg <6 x i32> @bitcast_v6f32_to_v6i32_scalar(<6 x float> inreg %a, i32
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -331,10 +358,18 @@ define inreg <6 x i32> @bitcast_v6f32_to_v6i32_scalar(<6 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; VI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; VI-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -342,9 +377,7 @@ define inreg <6 x i32> @bitcast_v6f32_to_v6i32_scalar(<6 x float> inreg %a, i32
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -357,10 +390,18 @@ define inreg <6 x i32> @bitcast_v6f32_to_v6i32_scalar(<6 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -368,9 +409,7 @@ define inreg <6 x i32> @bitcast_v6f32_to_v6i32_scalar(<6 x float> inreg %a, i32
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -386,11 +425,16 @@ define inreg <6 x i32> @bitcast_v6f32_to_v6i32_scalar(<6 x float> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v5, s5, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v4, s4, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v3, s3, 1.0
@@ -398,8 +442,6 @@ define inreg <6 x i32> @bitcast_v6f32_to_v6i32_scalar(<6 x float> inreg %a, i32
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -517,17 +559,25 @@ define inreg <3 x i64> @bitcast_v6i32_to_v3i64_scalar(<6 x i32> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -535,24 +585,30 @@ define inreg <3 x i64> @bitcast_v6i32_to_v3i64_scalar(<6 x i32> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v4, s20
 ; SI-NEXT:    v_mov_b32_e32 v5, s21
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v6i32_to_v3i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -560,24 +616,30 @@ define inreg <3 x i64> @bitcast_v6i32_to_v3i64_scalar(<6 x i32> inreg %a, i32 in
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v6i32_to_v3i64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s21, s21, 3
 ; GFX9-NEXT:    s_add_i32 s20, s20, 3
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -585,33 +647,34 @@ define inreg <3 x i64> @bitcast_v6i32_to_v3i64_scalar(<6 x i32> inreg %a, i32 in
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s21
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v6i32_to_v3i64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s17, s17, 3
 ; GFX11-NEXT:    s_add_i32 s16, s16, 3
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -726,17 +789,25 @@ define inreg <6 x i32> @bitcast_v3i64_to_v6i32_scalar(<3 x i64> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s20, s20, 3
 ; SI-NEXT:    s_addc_u32 s21, s21, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -744,24 +815,30 @@ define inreg <6 x i32> @bitcast_v3i64_to_v6i32_scalar(<3 x i64> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v4, s20
 ; SI-NEXT:    v_mov_b32_e32 v5, s21
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v3i64_to_v6i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s20, s20, 3
 ; VI-NEXT:    s_addc_u32 s21, s21, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -769,24 +846,30 @@ define inreg <6 x i32> @bitcast_v3i64_to_v6i32_scalar(<3 x i64> inreg %a, i32 in
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v3i64_to_v6i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s20, s20, 3
 ; GFX9-NEXT:    s_addc_u32 s21, s21, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB7_3: ; %end
+; GFX9-NEXT:  .LBB7_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -794,33 +877,34 @@ define inreg <6 x i32> @bitcast_v3i64_to_v6i32_scalar(<3 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s21
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_4:
-; GFX9-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-LABEL: bitcast_v3i64_to_v6i32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_3
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s16, s16, 3
 ; GFX11-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB7_3: ; %end
+; GFX11-NEXT:  .LBB7_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_4:
-; GFX11-NEXT:    s_branch .LBB7_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -933,17 +1017,25 @@ define inreg <3 x double> @bitcast_v6i32_to_v3f64_scalar(<6 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -951,24 +1043,30 @@ define inreg <3 x double> @bitcast_v6i32_to_v3f64_scalar(<6 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v4, s20
 ; SI-NEXT:    v_mov_b32_e32 v5, s21
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v6i32_to_v3f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -976,24 +1074,30 @@ define inreg <3 x double> @bitcast_v6i32_to_v3f64_scalar(<6 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v6i32_to_v3f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s21, s21, 3
 ; GFX9-NEXT:    s_add_i32 s20, s20, 3
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1001,33 +1105,34 @@ define inreg <3 x double> @bitcast_v6i32_to_v3f64_scalar(<6 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s21
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v6i32_to_v3f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s17, s17, 3
 ; GFX11-NEXT:    s_add_i32 s16, s16, 3
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1131,17 +1236,23 @@ define inreg <6 x i32> @bitcast_v3f64_to_v6i32_scalar(<3 x double> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1154,17 +1265,23 @@ define inreg <6 x i32> @bitcast_v3f64_to_v6i32_scalar(<3 x double> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1177,17 +1294,23 @@ define inreg <6 x i32> @bitcast_v3f64_to_v6i32_scalar(<3 x double> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1203,17 +1326,20 @@ define inreg <6 x i32> @bitcast_v3f64_to_v6i32_scalar(<3 x double> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[4:5], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1370,7 +1496,7 @@ define inreg <12 x i16> @bitcast_v6i32_to_v12i16_scalar(<6 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s12, s21, 16
 ; SI-NEXT:    s_lshr_b32 s13, s19, 16
@@ -1378,8 +1504,22 @@ define inreg <12 x i16> @bitcast_v6i32_to_v12i16_scalar(<6 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -1392,7 +1532,7 @@ define inreg <12 x i16> @bitcast_v6i32_to_v12i16_scalar(<6 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s12, s21, 16
 ; SI-NEXT:    s_lshr_b32 s13, s19, 16
 ; SI-NEXT:    s_lshr_b32 s14, s17, 16
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s8, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -1418,30 +1558,30 @@ define inreg <12 x i16> @bitcast_v6i32_to_v12i16_scalar(<6 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v4, s4
 ; SI-NEXT:    v_mov_b32_e32 v5, s9
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_v6i32_to_v12i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1449,24 +1589,30 @@ define inreg <12 x i16> @bitcast_v6i32_to_v12i16_scalar(<6 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v6i32_to_v12i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s21, s21, 3
 ; GFX9-NEXT:    s_add_i32 s20, s20, 3
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB13_3: ; %end
+; GFX9-NEXT:  .LBB13_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1474,33 +1620,34 @@ define inreg <12 x i16> @bitcast_v6i32_to_v12i16_scalar(<6 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s21
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_v6i32_to_v12i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB13_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s17, s17, 3
 ; GFX11-NEXT:    s_add_i32 s16, s16, 3
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1703,7 +1850,7 @@ define inreg <6 x i32> @bitcast_v12i16_to_v6i32_scalar(<12 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s23, s17, 16
 ; SI-NEXT:    s_lshr_b32 s24, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s24, 16
@@ -1723,8 +1870,17 @@ define inreg <6 x i32> @bitcast_v12i16_to_v6i32_scalar(<12 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s9, s21, 0xffff
 ; SI-NEXT:    s_lshl_b32 s10, s12, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s10
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s10, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s10, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s24, 16
@@ -1755,7 +1911,7 @@ define inreg <6 x i32> @bitcast_v12i16_to_v6i32_scalar(<12 x i16> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s7, s7, 0x30000
 ; SI-NEXT:    s_add_i32 s8, s8, 0x30000
 ; SI-NEXT:    s_add_i32 s9, s9, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
+; SI-NEXT:  .LBB15_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -1763,18 +1919,23 @@ define inreg <6 x i32> @bitcast_v12i16_to_v6i32_scalar(<12 x i16> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v4, s8
 ; SI-NEXT:    v_mov_b32_e32 v5, s9
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v12i16_to_v6i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s21, 3
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -1805,7 +1966,7 @@ define inreg <6 x i32> @bitcast_v12i16_to_v6i32_scalar(<12 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
+; VI-NEXT:  .LBB15_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1813,17 +1974,23 @@ define inreg <6 x i32> @bitcast_v12i16_to_v6i32_scalar(<12 x i16> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v12i16_to_v6i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v5, s21, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v4, s20, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v3, s19, 3 op_sel_hi:[1,0]
@@ -1831,9 +1998,7 @@ define inreg <6 x i32> @bitcast_v12i16_to_v6i32_scalar(<12 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1849,11 +2014,16 @@ define inreg <6 x i32> @bitcast_v12i16_to_v6i32_scalar(<12 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v5, s5, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v4, s4, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v3, s3, 3 op_sel_hi:[1,0]
@@ -1861,8 +2031,6 @@ define inreg <6 x i32> @bitcast_v12i16_to_v6i32_scalar(<12 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2019,7 +2187,7 @@ define inreg <12 x half> @bitcast_v6i32_to_v12f16_scalar(<6 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s12, s21, 16
 ; SI-NEXT:    s_lshr_b32 s13, s19, 16
@@ -2027,8 +2195,22 @@ define inreg <12 x half> @bitcast_v6i32_to_v12f16_scalar(<6 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -2041,7 +2223,7 @@ define inreg <12 x half> @bitcast_v6i32_to_v12f16_scalar(<6 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s12, s21, 16
 ; SI-NEXT:    s_lshr_b32 s13, s19, 16
 ; SI-NEXT:    s_lshr_b32 s14, s17, 16
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s8, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -2067,30 +2249,30 @@ define inreg <12 x half> @bitcast_v6i32_to_v12f16_scalar(<6 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v4, s4
 ; SI-NEXT:    v_mov_b32_e32 v5, s9
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_v6i32_to_v12f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2098,24 +2280,30 @@ define inreg <12 x half> @bitcast_v6i32_to_v12f16_scalar(<6 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v6i32_to_v12f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s21, s21, 3
 ; GFX9-NEXT:    s_add_i32 s20, s20, 3
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2123,33 +2311,34 @@ define inreg <12 x half> @bitcast_v6i32_to_v12f16_scalar(<6 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s21
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v6i32_to_v12f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB17_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s17, s17, 3
 ; GFX11-NEXT:    s_add_i32 s16, s16, 3
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2376,7 +2565,7 @@ define inreg <6 x i32> @bitcast_v12f16_to_v6i32_scalar(<12 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s23, s17, 16
 ; SI-NEXT:    s_lshr_b32 s24, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s24, 16
@@ -2396,8 +2585,17 @@ define inreg <6 x i32> @bitcast_v12f16_to_v6i32_scalar(<12 x half> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s9, s21, 0xffff
 ; SI-NEXT:    s_lshl_b32 s10, s12, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s10
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s10, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s10, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s24
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s23
@@ -2447,10 +2645,7 @@ define inreg <6 x i32> @bitcast_v12f16_to_v6i32_scalar(<12 x half> inreg %a, i32
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -2463,10 +2658,18 @@ define inreg <6 x i32> @bitcast_v12f16_to_v6i32_scalar(<12 x half> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s21, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -2499,9 +2702,7 @@ define inreg <6 x i32> @bitcast_v12f16_to_v6i32_scalar(<12 x half> inreg %a, i32
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2514,10 +2715,18 @@ define inreg <6 x i32> @bitcast_v12f16_to_v6i32_scalar(<12 x half> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v5, s21, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v4, s20, v0 op_sel_hi:[1,0]
@@ -2526,9 +2735,7 @@ define inreg <6 x i32> @bitcast_v12f16_to_v6i32_scalar(<12 x half> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2544,11 +2751,16 @@ define inreg <6 x i32> @bitcast_v12f16_to_v6i32_scalar(<12 x half> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v5, 0x200, s5 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v4, 0x200, s4 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v3, 0x200, s3 op_sel_hi:[0,1]
@@ -2556,8 +2768,6 @@ define inreg <6 x i32> @bitcast_v12f16_to_v6i32_scalar(<12 x half> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2672,10 +2882,18 @@ define inreg <3 x i64> @bitcast_v6f32_to_v3i64_scalar(<6 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_3
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB21_4
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; SI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; SI-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -2683,9 +2901,7 @@ define inreg <3 x i64> @bitcast_v6f32_to_v3i64_scalar(<6 x float> inreg %a, i32
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB21_3:
-; SI-NEXT:    s_branch .LBB21_2
-; SI-NEXT:  .LBB21_4:
+; SI-NEXT:  .LBB21_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2698,10 +2914,18 @@ define inreg <3 x i64> @bitcast_v6f32_to_v3i64_scalar(<6 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_3
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_4
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; VI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; VI-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -2709,9 +2933,7 @@ define inreg <3 x i64> @bitcast_v6f32_to_v3i64_scalar(<6 x float> inreg %a, i32
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB21_3:
-; VI-NEXT:    s_branch .LBB21_2
-; VI-NEXT:  .LBB21_4:
+; VI-NEXT:  .LBB21_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2724,10 +2946,18 @@ define inreg <3 x i64> @bitcast_v6f32_to_v3i64_scalar(<6 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_4
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -2735,9 +2965,7 @@ define inreg <3 x i64> @bitcast_v6f32_to_v3i64_scalar(<6 x float> inreg %a, i32
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB21_3:
-; GFX9-NEXT:    s_branch .LBB21_2
-; GFX9-NEXT:  .LBB21_4:
+; GFX9-NEXT:  .LBB21_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2753,11 +2981,16 @@ define inreg <3 x i64> @bitcast_v6f32_to_v3i64_scalar(<6 x float> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_4
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v5, s5, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v4, s4, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v3, s3, 1.0
@@ -2765,8 +2998,6 @@ define inreg <3 x i64> @bitcast_v6f32_to_v3i64_scalar(<6 x float> inreg %a, i32
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB21_3:
-; GFX11-NEXT:    s_branch .LBB21_2
 ; GFX11-NEXT:  .LBB21_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2886,17 +3117,25 @@ define inreg <6 x float> @bitcast_v3i64_to_v6f32_scalar(<3 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s20, s20, 3
 ; SI-NEXT:    s_addc_u32 s21, s21, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2904,24 +3143,30 @@ define inreg <6 x float> @bitcast_v3i64_to_v6f32_scalar(<3 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v4, s20
 ; SI-NEXT:    v_mov_b32_e32 v5, s21
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v3i64_to_v6f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_4
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_3
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s20, s20, 3
 ; VI-NEXT:    s_addc_u32 s21, s21, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB23_3: ; %end
+; VI-NEXT:  .LBB23_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2929,24 +3174,30 @@ define inreg <6 x float> @bitcast_v3i64_to_v6f32_scalar(<3 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_4:
-; VI-NEXT:    s_branch .LBB23_2
 ;
 ; GFX9-LABEL: bitcast_v3i64_to_v6f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_3
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s20, s20, 3
 ; GFX9-NEXT:    s_addc_u32 s21, s21, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB23_3: ; %end
+; GFX9-NEXT:  .LBB23_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2954,33 +3205,34 @@ define inreg <6 x float> @bitcast_v3i64_to_v6f32_scalar(<3 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s21
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_4:
-; GFX9-NEXT:    s_branch .LBB23_2
 ;
 ; GFX11-LABEL: bitcast_v3i64_to_v6f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_3
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s16, s16, 3
 ; GFX11-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB23_3: ; %end
+; GFX11-NEXT:  .LBB23_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_4:
-; GFX11-NEXT:    s_branch .LBB23_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -3090,10 +3342,18 @@ define inreg <3 x double> @bitcast_v6f32_to_v3f64_scalar(<6 x float> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_3
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB25_4
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; SI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; SI-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -3101,9 +3361,7 @@ define inreg <3 x double> @bitcast_v6f32_to_v3f64_scalar(<6 x float> inreg %a, i
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB25_3:
-; SI-NEXT:    s_branch .LBB25_2
-; SI-NEXT:  .LBB25_4:
+; SI-NEXT:  .LBB25_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3116,10 +3374,18 @@ define inreg <3 x double> @bitcast_v6f32_to_v3f64_scalar(<6 x float> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_3
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB25_4
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; VI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; VI-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -3127,9 +3393,7 @@ define inreg <3 x double> @bitcast_v6f32_to_v3f64_scalar(<6 x float> inreg %a, i
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB25_3:
-; VI-NEXT:    s_branch .LBB25_2
-; VI-NEXT:  .LBB25_4:
+; VI-NEXT:  .LBB25_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3142,10 +3406,18 @@ define inreg <3 x double> @bitcast_v6f32_to_v3f64_scalar(<6 x float> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_4
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -3153,9 +3425,7 @@ define inreg <3 x double> @bitcast_v6f32_to_v3f64_scalar(<6 x float> inreg %a, i
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB25_3:
-; GFX9-NEXT:    s_branch .LBB25_2
-; GFX9-NEXT:  .LBB25_4:
+; GFX9-NEXT:  .LBB25_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3171,11 +3441,16 @@ define inreg <3 x double> @bitcast_v6f32_to_v3f64_scalar(<6 x float> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_4
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB25_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v5, s5, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v4, s4, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v3, s3, 1.0
@@ -3183,8 +3458,6 @@ define inreg <3 x double> @bitcast_v6f32_to_v3f64_scalar(<6 x float> inreg %a, i
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB25_3:
-; GFX11-NEXT:    s_branch .LBB25_2
 ; GFX11-NEXT:  .LBB25_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -3293,17 +3566,23 @@ define inreg <6 x float> @bitcast_v3f64_to_v6f32_scalar(<3 x double> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB27_3
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB27_4
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB27_3:
-; SI-NEXT:    s_branch .LBB27_2
-; SI-NEXT:  .LBB27_4:
+; SI-NEXT:  .LBB27_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3316,17 +3595,23 @@ define inreg <6 x float> @bitcast_v3f64_to_v6f32_scalar(<3 x double> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_3
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB27_4
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB27_3:
-; VI-NEXT:    s_branch .LBB27_2
-; VI-NEXT:  .LBB27_4:
+; VI-NEXT:  .LBB27_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3339,17 +3624,23 @@ define inreg <6 x float> @bitcast_v3f64_to_v6f32_scalar(<3 x double> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_4
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB27_3:
-; GFX9-NEXT:    s_branch .LBB27_2
-; GFX9-NEXT:  .LBB27_4:
+; GFX9-NEXT:  .LBB27_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3365,17 +3656,20 @@ define inreg <6 x float> @bitcast_v3f64_to_v6f32_scalar(<3 x double> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_4
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB27_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[4:5], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB27_3:
-; GFX11-NEXT:    s_branch .LBB27_2
 ; GFX11-NEXT:  .LBB27_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -3529,7 +3823,7 @@ define inreg <12 x i16> @bitcast_v6f32_to_v12i16_scalar(<6 x float> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s14, s21, 16
 ; SI-NEXT:    s_lshr_b32 s13, s19, 16
@@ -3537,8 +3831,22 @@ define inreg <12 x i16> @bitcast_v6f32_to_v12i16_scalar(<6 x float> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; SI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; SI-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -3551,16 +3859,8 @@ define inreg <12 x i16> @bitcast_v6f32_to_v12i16_scalar(<6 x float> inreg %a, i3
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v1
-; SI-NEXT:    s_branch .LBB29_5
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:    s_branch .LBB29_6
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3573,7 +3873,7 @@ define inreg <12 x i16> @bitcast_v6f32_to_v12i16_scalar(<6 x float> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v8, s8
 ; SI-NEXT:    v_mov_b32_e32 v7, s6
 ; SI-NEXT:    v_mov_b32_e32 v6, s4
-; SI-NEXT:  .LBB29_5: ; %end
+; SI-NEXT:  .LBB29_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -3598,10 +3898,18 @@ define inreg <12 x i16> @bitcast_v6f32_to_v12i16_scalar(<6 x float> inreg %a, i3
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; VI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; VI-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -3609,9 +3917,7 @@ define inreg <12 x i16> @bitcast_v6f32_to_v12i16_scalar(<6 x float> inreg %a, i3
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3626,10 +3932,18 @@ define inreg <12 x i16> @bitcast_v6f32_to_v12i16_scalar(<6 x float> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -3637,9 +3951,7 @@ define inreg <12 x i16> @bitcast_v6f32_to_v12i16_scalar(<6 x float> inreg %a, i3
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3657,11 +3969,16 @@ define inreg <12 x i16> @bitcast_v6f32_to_v12i16_scalar(<6 x float> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB29_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB29_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v5, s5, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v4, s4, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v3, s3, 1.0
@@ -3669,8 +3986,6 @@ define inreg <12 x i16> @bitcast_v6f32_to_v12i16_scalar(<6 x float> inreg %a, i3
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB29_3:
-; GFX11-NEXT:    s_branch .LBB29_2
 ; GFX11-NEXT:  .LBB29_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -3879,7 +4194,7 @@ define inreg <6 x float> @bitcast_v12i16_to_v6f32_scalar(<12 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s23, s17, 16
 ; SI-NEXT:    s_lshr_b32 s24, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_4
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s24, 16
@@ -3899,8 +4214,17 @@ define inreg <6 x float> @bitcast_v12i16_to_v6f32_scalar(<12 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s9, s21, 0xffff
 ; SI-NEXT:    s_lshl_b32 s10, s12, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s10
-; SI-NEXT:    s_cbranch_execnz .LBB31_3
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s10, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s10, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s24, 16
@@ -3931,7 +4255,7 @@ define inreg <6 x float> @bitcast_v12i16_to_v6f32_scalar(<12 x i16> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s7, s7, 0x30000
 ; SI-NEXT:    s_add_i32 s8, s8, 0x30000
 ; SI-NEXT:    s_add_i32 s9, s9, 0x30000
-; SI-NEXT:  .LBB31_3: ; %end
+; SI-NEXT:  .LBB31_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -3939,18 +4263,23 @@ define inreg <6 x float> @bitcast_v12i16_to_v6f32_scalar(<12 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v4, s8
 ; SI-NEXT:    v_mov_b32_e32 v5, s9
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
-; SI-NEXT:    s_branch .LBB31_2
 ;
 ; VI-LABEL: bitcast_v12i16_to_v6f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_4
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB31_3
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s21, 3
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -3981,7 +4310,7 @@ define inreg <6 x float> @bitcast_v12i16_to_v6f32_scalar(<12 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB31_3: ; %end
+; VI-NEXT:  .LBB31_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3989,17 +4318,23 @@ define inreg <6 x float> @bitcast_v12i16_to_v6f32_scalar(<12 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_4:
-; VI-NEXT:    s_branch .LBB31_2
 ;
 ; GFX9-LABEL: bitcast_v12i16_to_v6f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_4
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v5, s21, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v4, s20, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v3, s19, 3 op_sel_hi:[1,0]
@@ -4007,9 +4342,7 @@ define inreg <6 x float> @bitcast_v12i16_to_v6f32_scalar(<12 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB31_3:
-; GFX9-NEXT:    s_branch .LBB31_2
-; GFX9-NEXT:  .LBB31_4:
+; GFX9-NEXT:  .LBB31_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4025,11 +4358,16 @@ define inreg <6 x float> @bitcast_v12i16_to_v6f32_scalar(<12 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_4
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v5, s5, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v4, s4, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v3, s3, 3 op_sel_hi:[1,0]
@@ -4037,8 +4375,6 @@ define inreg <6 x float> @bitcast_v12i16_to_v6f32_scalar(<12 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_3:
-; GFX11-NEXT:    s_branch .LBB31_2
 ; GFX11-NEXT:  .LBB31_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -4192,7 +4528,7 @@ define inreg <12 x half> @bitcast_v6f32_to_v12f16_scalar(<6 x float> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s14, s21, 16
 ; SI-NEXT:    s_lshr_b32 s13, s19, 16
@@ -4200,8 +4536,22 @@ define inreg <12 x half> @bitcast_v6f32_to_v12f16_scalar(<6 x float> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; SI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; SI-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -4214,16 +4564,8 @@ define inreg <12 x half> @bitcast_v6f32_to_v12f16_scalar(<6 x float> inreg %a, i
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v1
-; SI-NEXT:    s_branch .LBB33_5
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:    s_branch .LBB33_6
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4236,7 +4578,7 @@ define inreg <12 x half> @bitcast_v6f32_to_v12f16_scalar(<6 x float> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v8, s8
 ; SI-NEXT:    v_mov_b32_e32 v7, s6
 ; SI-NEXT:    v_mov_b32_e32 v6, s4
-; SI-NEXT:  .LBB33_5: ; %end
+; SI-NEXT:  .LBB33_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -4261,10 +4603,18 @@ define inreg <12 x half> @bitcast_v6f32_to_v12f16_scalar(<6 x float> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; VI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; VI-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -4272,9 +4622,7 @@ define inreg <12 x half> @bitcast_v6f32_to_v12f16_scalar(<6 x float> inreg %a, i
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4289,10 +4637,18 @@ define inreg <12 x half> @bitcast_v6f32_to_v12f16_scalar(<6 x float> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -4300,9 +4656,7 @@ define inreg <12 x half> @bitcast_v6f32_to_v12f16_scalar(<6 x float> inreg %a, i
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4320,11 +4674,16 @@ define inreg <12 x half> @bitcast_v6f32_to_v12f16_scalar(<6 x float> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB33_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB33_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v5, s5, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v4, s4, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v3, s3, 1.0
@@ -4332,8 +4691,6 @@ define inreg <12 x half> @bitcast_v6f32_to_v12f16_scalar(<6 x float> inreg %a, i
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB33_3:
-; GFX11-NEXT:    s_branch .LBB33_2
 ; GFX11-NEXT:  .LBB33_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -4566,7 +4923,7 @@ define inreg <6 x float> @bitcast_v12f16_to_v6f32_scalar(<12 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s23, s17, 16
 ; SI-NEXT:    s_lshr_b32 s24, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_3
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s24, 16
@@ -4586,8 +4943,17 @@ define inreg <6 x float> @bitcast_v12f16_to_v6f32_scalar(<12 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s9, s21, 0xffff
 ; SI-NEXT:    s_lshl_b32 s10, s12, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s10
-; SI-NEXT:    s_cbranch_execnz .LBB35_4
-; SI-NEXT:  .LBB35_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s10, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s10, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s24
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s23
@@ -4637,10 +5003,7 @@ define inreg <6 x float> @bitcast_v12f16_to_v6f32_scalar(<12 x half> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB35_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
-; SI-NEXT:    s_branch .LBB35_2
-; SI-NEXT:  .LBB35_4:
+; SI-NEXT:  .LBB35_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -4653,10 +5016,18 @@ define inreg <6 x float> @bitcast_v12f16_to_v6f32_scalar(<12 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s21, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -4689,9 +5060,7 @@ define inreg <6 x float> @bitcast_v12f16_to_v6f32_scalar(<12 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4704,10 +5073,18 @@ define inreg <6 x float> @bitcast_v12f16_to_v6f32_scalar(<12 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v5, s21, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v4, s20, v0 op_sel_hi:[1,0]
@@ -4716,9 +5093,7 @@ define inreg <6 x float> @bitcast_v12f16_to_v6f32_scalar(<12 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4734,11 +5109,16 @@ define inreg <6 x float> @bitcast_v12f16_to_v6f32_scalar(<12 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v5, 0x200, s5 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v4, 0x200, s4 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v3, 0x200, s3 op_sel_hi:[0,1]
@@ -4746,8 +5126,6 @@ define inreg <6 x float> @bitcast_v12f16_to_v6f32_scalar(<12 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -4867,17 +5245,25 @@ define inreg <3 x double> @bitcast_v3i64_to_v3f64_scalar(<3 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_4
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB37_3
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s20, s20, 3
 ; SI-NEXT:    s_addc_u32 s21, s21, 0
-; SI-NEXT:  .LBB37_3: ; %end
+; SI-NEXT:  .LBB37_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4885,24 +5271,30 @@ define inreg <3 x double> @bitcast_v3i64_to_v3f64_scalar(<3 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v4, s20
 ; SI-NEXT:    v_mov_b32_e32 v5, s21
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB37_4:
-; SI-NEXT:    s_branch .LBB37_2
 ;
 ; VI-LABEL: bitcast_v3i64_to_v3f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_4
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_3
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s20, s20, 3
 ; VI-NEXT:    s_addc_u32 s21, s21, 0
-; VI-NEXT:  .LBB37_3: ; %end
+; VI-NEXT:  .LBB37_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4910,24 +5302,30 @@ define inreg <3 x double> @bitcast_v3i64_to_v3f64_scalar(<3 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_4:
-; VI-NEXT:    s_branch .LBB37_2
 ;
 ; GFX9-LABEL: bitcast_v3i64_to_v3f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_3
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s20, s20, 3
 ; GFX9-NEXT:    s_addc_u32 s21, s21, 0
-; GFX9-NEXT:  .LBB37_3: ; %end
+; GFX9-NEXT:  .LBB37_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4935,32 +5333,33 @@ define inreg <3 x double> @bitcast_v3i64_to_v3f64_scalar(<3 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s21
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_4:
-; GFX9-NEXT:    s_branch .LBB37_2
 ;
 ; GFX11-LABEL: bitcast_v3i64_to_v3f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_3
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s16, s16, 3
 ; GFX11-NEXT:    s_addc_u32 s17, s17, 0
-; GFX11-NEXT:  .LBB37_3: ; %end
+; GFX11-NEXT:  .LBB37_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_4:
-; GFX11-NEXT:    s_branch .LBB37_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -5064,17 +5463,23 @@ define inreg <3 x i64> @bitcast_v3f64_to_v3i64_scalar(<3 x double> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_3
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB39_4
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB39_3:
-; SI-NEXT:    s_branch .LBB39_2
-; SI-NEXT:  .LBB39_4:
+; SI-NEXT:  .LBB39_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5087,17 +5492,23 @@ define inreg <3 x i64> @bitcast_v3f64_to_v3i64_scalar(<3 x double> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_3
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_4
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB39_3:
-; VI-NEXT:    s_branch .LBB39_2
-; VI-NEXT:  .LBB39_4:
+; VI-NEXT:  .LBB39_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5110,17 +5521,23 @@ define inreg <3 x i64> @bitcast_v3f64_to_v3i64_scalar(<3 x double> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_4
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB39_3:
-; GFX9-NEXT:    s_branch .LBB39_2
-; GFX9-NEXT:  .LBB39_4:
+; GFX9-NEXT:  .LBB39_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5136,17 +5553,20 @@ define inreg <3 x i64> @bitcast_v3f64_to_v3i64_scalar(<3 x double> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[4:5], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB39_3:
-; GFX11-NEXT:    s_branch .LBB39_2
 ; GFX11-NEXT:  .LBB39_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -5305,7 +5725,7 @@ define inreg <12 x i16> @bitcast_v3i64_to_v12i16_scalar(<3 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_4
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s12, s21, 16
 ; SI-NEXT:    s_lshr_b32 s13, s19, 16
@@ -5313,8 +5733,22 @@ define inreg <12 x i16> @bitcast_v3i64_to_v12i16_scalar(<3 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB41_3
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s20, s20, 3
 ; SI-NEXT:    s_addc_u32 s21, s21, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
@@ -5327,7 +5761,7 @@ define inreg <12 x i16> @bitcast_v3i64_to_v12i16_scalar(<3 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
-; SI-NEXT:  .LBB41_3: ; %end
+; SI-NEXT:  .LBB41_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s8, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -5353,30 +5787,30 @@ define inreg <12 x i16> @bitcast_v3i64_to_v12i16_scalar(<3 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v4, s4
 ; SI-NEXT:    v_mov_b32_e32 v5, s9
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB41_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    s_branch .LBB41_2
 ;
 ; VI-LABEL: bitcast_v3i64_to_v12i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_4
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB41_3
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s20, s20, 3
 ; VI-NEXT:    s_addc_u32 s21, s21, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB41_3: ; %end
+; VI-NEXT:  .LBB41_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5384,24 +5818,30 @@ define inreg <12 x i16> @bitcast_v3i64_to_v12i16_scalar(<3 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_4:
-; VI-NEXT:    s_branch .LBB41_2
 ;
 ; GFX9-LABEL: bitcast_v3i64_to_v12i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_3
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s20, s20, 3
 ; GFX9-NEXT:    s_addc_u32 s21, s21, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB41_3: ; %end
+; GFX9-NEXT:  .LBB41_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5409,33 +5849,34 @@ define inreg <12 x i16> @bitcast_v3i64_to_v12i16_scalar(<3 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s21
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_4:
-; GFX9-NEXT:    s_branch .LBB41_2
 ;
 ; GFX11-LABEL: bitcast_v3i64_to_v12i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_3
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB41_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s16, s16, 3
 ; GFX11-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB41_3: ; %end
+; GFX11-NEXT:  .LBB41_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_4:
-; GFX11-NEXT:    s_branch .LBB41_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -5638,7 +6079,7 @@ define inreg <3 x i64> @bitcast_v12i16_to_v3i64_scalar(<12 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s23, s17, 16
 ; SI-NEXT:    s_lshr_b32 s24, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_4
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s24, 16
@@ -5658,8 +6099,17 @@ define inreg <3 x i64> @bitcast_v12i16_to_v3i64_scalar(<12 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s9, s21, 0xffff
 ; SI-NEXT:    s_lshl_b32 s10, s12, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s10
-; SI-NEXT:    s_cbranch_execnz .LBB43_3
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s10, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s10, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s24, 16
@@ -5690,7 +6140,7 @@ define inreg <3 x i64> @bitcast_v12i16_to_v3i64_scalar(<12 x i16> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s7, s7, 0x30000
 ; SI-NEXT:    s_add_i32 s8, s8, 0x30000
 ; SI-NEXT:    s_add_i32 s9, s9, 0x30000
-; SI-NEXT:  .LBB43_3: ; %end
+; SI-NEXT:  .LBB43_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -5698,18 +6148,23 @@ define inreg <3 x i64> @bitcast_v12i16_to_v3i64_scalar(<12 x i16> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v4, s8
 ; SI-NEXT:    v_mov_b32_e32 v5, s9
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB43_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
-; SI-NEXT:    s_branch .LBB43_2
 ;
 ; VI-LABEL: bitcast_v12i16_to_v3i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_4
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB43_3
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s21, 3
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -5740,7 +6195,7 @@ define inreg <3 x i64> @bitcast_v12i16_to_v3i64_scalar(<12 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB43_3: ; %end
+; VI-NEXT:  .LBB43_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5748,17 +6203,23 @@ define inreg <3 x i64> @bitcast_v12i16_to_v3i64_scalar(<12 x i16> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_4:
-; VI-NEXT:    s_branch .LBB43_2
 ;
 ; GFX9-LABEL: bitcast_v12i16_to_v3i64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v5, s21, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v4, s20, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v3, s19, 3 op_sel_hi:[1,0]
@@ -5766,9 +6227,7 @@ define inreg <3 x i64> @bitcast_v12i16_to_v3i64_scalar(<12 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5784,11 +6243,16 @@ define inreg <3 x i64> @bitcast_v12i16_to_v3i64_scalar(<12 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB43_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v5, s5, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v4, s4, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v3, s3, 3 op_sel_hi:[1,0]
@@ -5796,8 +6260,6 @@ define inreg <3 x i64> @bitcast_v12i16_to_v3i64_scalar(<12 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_3:
-; GFX11-NEXT:    s_branch .LBB43_2
 ; GFX11-NEXT:  .LBB43_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -5956,7 +6418,7 @@ define inreg <12 x half> @bitcast_v3i64_to_v12f16_scalar(<3 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_4
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s12, s21, 16
 ; SI-NEXT:    s_lshr_b32 s13, s19, 16
@@ -5964,8 +6426,22 @@ define inreg <12 x half> @bitcast_v3i64_to_v12f16_scalar(<3 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB45_3
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s20, s20, 3
 ; SI-NEXT:    s_addc_u32 s21, s21, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
@@ -5978,7 +6454,7 @@ define inreg <12 x half> @bitcast_v3i64_to_v12f16_scalar(<3 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
-; SI-NEXT:  .LBB45_3: ; %end
+; SI-NEXT:  .LBB45_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s8, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -6004,30 +6480,30 @@ define inreg <12 x half> @bitcast_v3i64_to_v12f16_scalar(<3 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v4, s4
 ; SI-NEXT:    v_mov_b32_e32 v5, s9
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB45_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    s_branch .LBB45_2
 ;
 ; VI-LABEL: bitcast_v3i64_to_v12f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_4
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB45_3
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s20, s20, 3
 ; VI-NEXT:    s_addc_u32 s21, s21, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB45_3: ; %end
+; VI-NEXT:  .LBB45_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6035,24 +6511,30 @@ define inreg <12 x half> @bitcast_v3i64_to_v12f16_scalar(<3 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_4:
-; VI-NEXT:    s_branch .LBB45_2
 ;
 ; GFX9-LABEL: bitcast_v3i64_to_v12f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_3
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s20, s20, 3
 ; GFX9-NEXT:    s_addc_u32 s21, s21, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB45_3: ; %end
+; GFX9-NEXT:  .LBB45_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6060,33 +6542,34 @@ define inreg <12 x half> @bitcast_v3i64_to_v12f16_scalar(<3 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s21
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_4:
-; GFX9-NEXT:    s_branch .LBB45_2
 ;
 ; GFX11-LABEL: bitcast_v3i64_to_v12f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_3
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB45_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s16, s16, 3
 ; GFX11-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB45_3: ; %end
+; GFX11-NEXT:  .LBB45_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_4:
-; GFX11-NEXT:    s_branch .LBB45_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -6313,7 +6796,7 @@ define inreg <3 x i64> @bitcast_v12f16_to_v3i64_scalar(<12 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s23, s17, 16
 ; SI-NEXT:    s_lshr_b32 s24, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB47_3
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s24, 16
@@ -6333,8 +6816,17 @@ define inreg <3 x i64> @bitcast_v12f16_to_v3i64_scalar(<12 x half> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s9, s21, 0xffff
 ; SI-NEXT:    s_lshl_b32 s10, s12, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s10
-; SI-NEXT:    s_cbranch_execnz .LBB47_4
-; SI-NEXT:  .LBB47_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s10, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s10, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s24
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s23
@@ -6384,10 +6876,7 @@ define inreg <3 x i64> @bitcast_v12f16_to_v3i64_scalar(<12 x half> inreg %a, i32
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB47_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
-; SI-NEXT:    s_branch .LBB47_2
-; SI-NEXT:  .LBB47_4:
+; SI-NEXT:  .LBB47_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -6400,10 +6889,18 @@ define inreg <3 x i64> @bitcast_v12f16_to_v3i64_scalar(<12 x half> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s21, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -6436,9 +6933,7 @@ define inreg <3 x i64> @bitcast_v12f16_to_v3i64_scalar(<12 x half> inreg %a, i32
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6451,10 +6946,18 @@ define inreg <3 x i64> @bitcast_v12f16_to_v3i64_scalar(<12 x half> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v5, s21, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v4, s20, v0 op_sel_hi:[1,0]
@@ -6463,9 +6966,7 @@ define inreg <3 x i64> @bitcast_v12f16_to_v3i64_scalar(<12 x half> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6481,11 +6982,16 @@ define inreg <3 x i64> @bitcast_v12f16_to_v3i64_scalar(<12 x half> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB47_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v5, 0x200, s5 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v4, 0x200, s4 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v3, 0x200, s3 op_sel_hi:[0,1]
@@ -6493,8 +6999,6 @@ define inreg <3 x i64> @bitcast_v12f16_to_v3i64_scalar(<12 x half> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB47_3:
-; GFX11-NEXT:    s_branch .LBB47_2
 ; GFX11-NEXT:  .LBB47_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -6642,7 +7146,7 @@ define inreg <12 x i16> @bitcast_v3f64_to_v12i16_scalar(<3 x double> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_3
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s14, s21, 16
 ; SI-NEXT:    s_lshr_b32 s13, s19, 16
@@ -6650,8 +7154,22 @@ define inreg <12 x i16> @bitcast_v3f64_to_v12i16_scalar(<3 x double> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB49_4
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
@@ -6661,16 +7179,8 @@ define inreg <12 x i16> @bitcast_v3f64_to_v12i16_scalar(<3 x double> inreg %a, i
 ; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v1
-; SI-NEXT:    s_branch .LBB49_5
-; SI-NEXT:  .LBB49_3:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    s_branch .LBB49_2
-; SI-NEXT:  .LBB49_4:
+; SI-NEXT:    s_branch .LBB49_6
+; SI-NEXT:  .LBB49_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
 ; SI-NEXT:    v_mov_b32_e32 v4, s20
@@ -6683,7 +7193,7 @@ define inreg <12 x i16> @bitcast_v3f64_to_v12i16_scalar(<3 x double> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v8, s8
 ; SI-NEXT:    v_mov_b32_e32 v7, s6
 ; SI-NEXT:    v_mov_b32_e32 v6, s4
-; SI-NEXT:  .LBB49_5: ; %end
+; SI-NEXT:  .LBB49_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -6708,17 +7218,23 @@ define inreg <12 x i16> @bitcast_v3f64_to_v12i16_scalar(<3 x double> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_3
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB49_4
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB49_3:
-; VI-NEXT:    s_branch .LBB49_2
-; VI-NEXT:  .LBB49_4:
+; VI-NEXT:  .LBB49_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6733,17 +7249,23 @@ define inreg <12 x i16> @bitcast_v3f64_to_v12i16_scalar(<3 x double> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6761,17 +7283,20 @@ define inreg <12 x i16> @bitcast_v3f64_to_v12i16_scalar(<3 x double> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB49_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB49_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB49_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB49_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[4:5], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB49_3:
-; GFX11-NEXT:    s_branch .LBB49_2
 ; GFX11-NEXT:  .LBB49_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -6980,7 +7505,7 @@ define inreg <3 x double> @bitcast_v12i16_to_v3f64_scalar(<12 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s23, s17, 16
 ; SI-NEXT:    s_lshr_b32 s24, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s24, 16
@@ -7000,8 +7525,17 @@ define inreg <3 x double> @bitcast_v12i16_to_v3f64_scalar(<12 x i16> inreg %a, i
 ; SI-NEXT:    s_and_b32 s9, s21, 0xffff
 ; SI-NEXT:    s_lshl_b32 s10, s12, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s10
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s10, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s10, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s24, 16
@@ -7032,7 +7566,7 @@ define inreg <3 x double> @bitcast_v12i16_to_v3f64_scalar(<12 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s7, s7, 0x30000
 ; SI-NEXT:    s_add_i32 s8, s8, 0x30000
 ; SI-NEXT:    s_add_i32 s9, s9, 0x30000
-; SI-NEXT:  .LBB51_3: ; %end
+; SI-NEXT:  .LBB51_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -7040,18 +7574,23 @@ define inreg <3 x double> @bitcast_v12i16_to_v3f64_scalar(<12 x i16> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v4, s8
 ; SI-NEXT:    v_mov_b32_e32 v5, s9
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v12i16_to_v3f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s21, 3
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -7082,7 +7621,7 @@ define inreg <3 x double> @bitcast_v12i16_to_v3f64_scalar(<12 x i16> inreg %a, i
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB51_3: ; %end
+; VI-NEXT:  .LBB51_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7090,17 +7629,23 @@ define inreg <3 x double> @bitcast_v12i16_to_v3f64_scalar(<12 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v12i16_to_v3f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_4
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v5, s21, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v4, s20, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v3, s19, 3 op_sel_hi:[1,0]
@@ -7108,9 +7653,7 @@ define inreg <3 x double> @bitcast_v12i16_to_v3f64_scalar(<12 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB51_3:
-; GFX9-NEXT:    s_branch .LBB51_2
-; GFX9-NEXT:  .LBB51_4:
+; GFX9-NEXT:  .LBB51_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -7126,11 +7669,16 @@ define inreg <3 x double> @bitcast_v12i16_to_v3f64_scalar(<12 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB51_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB51_4
-; GFX11-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB51_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v5, s5, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v4, s4, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v3, s3, 3 op_sel_hi:[1,0]
@@ -7138,8 +7686,6 @@ define inreg <3 x double> @bitcast_v12i16_to_v3f64_scalar(<12 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB51_3:
-; GFX11-NEXT:    s_branch .LBB51_2
 ; GFX11-NEXT:  .LBB51_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -7287,7 +7833,7 @@ define inreg <12 x half> @bitcast_v3f64_to_v12f16_scalar(<3 x double> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_3
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s14, s21, 16
 ; SI-NEXT:    s_lshr_b32 s13, s19, 16
@@ -7295,8 +7841,22 @@ define inreg <12 x half> @bitcast_v3f64_to_v12f16_scalar(<3 x double> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB53_4
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
@@ -7306,16 +7866,8 @@ define inreg <12 x half> @bitcast_v3f64_to_v12f16_scalar(<3 x double> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v1
-; SI-NEXT:    s_branch .LBB53_5
-; SI-NEXT:  .LBB53_3:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    s_branch .LBB53_2
-; SI-NEXT:  .LBB53_4:
+; SI-NEXT:    s_branch .LBB53_6
+; SI-NEXT:  .LBB53_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
 ; SI-NEXT:    v_mov_b32_e32 v4, s20
@@ -7328,7 +7880,7 @@ define inreg <12 x half> @bitcast_v3f64_to_v12f16_scalar(<3 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v8, s8
 ; SI-NEXT:    v_mov_b32_e32 v7, s6
 ; SI-NEXT:    v_mov_b32_e32 v6, s4
-; SI-NEXT:  .LBB53_5: ; %end
+; SI-NEXT:  .LBB53_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -7353,17 +7905,23 @@ define inreg <12 x half> @bitcast_v3f64_to_v12f16_scalar(<3 x double> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_3
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB53_4
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB53_3:
-; VI-NEXT:    s_branch .LBB53_2
-; VI-NEXT:  .LBB53_4:
+; VI-NEXT:  .LBB53_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7378,17 +7936,23 @@ define inreg <12 x half> @bitcast_v3f64_to_v12f16_scalar(<3 x double> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_4
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB53_3:
-; GFX9-NEXT:    s_branch .LBB53_2
-; GFX9-NEXT:  .LBB53_4:
+; GFX9-NEXT:  .LBB53_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -7406,17 +7970,20 @@ define inreg <12 x half> @bitcast_v3f64_to_v12f16_scalar(<3 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB53_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB53_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[4:5], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB53_3:
-; GFX11-NEXT:    s_branch .LBB53_2
 ; GFX11-NEXT:  .LBB53_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -7649,7 +8216,7 @@ define inreg <3 x double> @bitcast_v12f16_to_v3f64_scalar(<12 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s23, s17, 16
 ; SI-NEXT:    s_lshr_b32 s24, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s24, 16
@@ -7669,8 +8236,17 @@ define inreg <3 x double> @bitcast_v12f16_to_v3f64_scalar(<12 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s9, s21, 0xffff
 ; SI-NEXT:    s_lshl_b32 s10, s12, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s10
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s10, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s10, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s24
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s23
@@ -7720,10 +8296,7 @@ define inreg <3 x double> @bitcast_v12f16_to_v3f64_scalar(<12 x half> inreg %a,
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -7736,10 +8309,18 @@ define inreg <3 x double> @bitcast_v12f16_to_v3f64_scalar(<12 x half> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s21, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -7772,9 +8353,7 @@ define inreg <3 x double> @bitcast_v12f16_to_v3f64_scalar(<12 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7787,10 +8366,18 @@ define inreg <3 x double> @bitcast_v12f16_to_v3f64_scalar(<12 x half> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v5, s21, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v4, s20, v0 op_sel_hi:[1,0]
@@ -7799,9 +8386,7 @@ define inreg <3 x double> @bitcast_v12f16_to_v3f64_scalar(<12 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -7817,11 +8402,16 @@ define inreg <3 x double> @bitcast_v12f16_to_v3f64_scalar(<12 x half> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v5, 0x200, s5 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v4, 0x200, s4 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v3, 0x200, s3 op_sel_hi:[0,1]
@@ -7829,8 +8419,6 @@ define inreg <3 x double> @bitcast_v12f16_to_v3f64_scalar(<12 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -8063,7 +8651,7 @@ define inreg <12 x half> @bitcast_v12i16_to_v12f16_scalar(<12 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s24, s17, 16
 ; SI-NEXT:    s_lshr_b32 s27, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s24, 16
@@ -8086,11 +8674,25 @@ define inreg <12 x half> @bitcast_v12i16_to_v12f16_scalar(<12 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[40:41], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[42:43], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[44:45], 16
+; SI-NEXT:    s_mov_b64 s[22:23], 0
 ; SI-NEXT:    s_mov_b32 s9, s41
 ; SI-NEXT:    s_mov_b32 s7, s43
 ; SI-NEXT:    s_mov_b32 s5, s45
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[22:23], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[22:23], s[22:23], exec
+; SI-NEXT:    s_cselect_b32 s11, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s11, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s29, 16
@@ -8127,7 +8729,7 @@ define inreg <12 x half> @bitcast_v12i16_to_v12f16_scalar(<12 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s24, s9, 16
 ; SI-NEXT:    s_lshr_b32 s25, s7, 16
 ; SI-NEXT:    s_lshr_b32 s26, s5, 16
-; SI-NEXT:  .LBB57_3: ; %end
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
 ; SI-NEXT:    s_lshl_b32 s10, s10, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s10
@@ -8153,23 +8755,23 @@ define inreg <12 x half> @bitcast_v12i16_to_v12f16_scalar(<12 x i16> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v4, s4
 ; SI-NEXT:    v_mov_b32_e32 v5, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v12i16_to_v12f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_add_i32 s7, s17, 3
 ; VI-NEXT:    s_add_i32 s9, s18, 3
@@ -8200,7 +8802,7 @@ define inreg <12 x half> @bitcast_v12i16_to_v12f16_scalar(<12 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8208,17 +8810,23 @@ define inreg <12 x half> @bitcast_v12i16_to_v12f16_scalar(<12 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v12i16_to_v12f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_4
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v5, s21, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v4, s20, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v3, s19, 3 op_sel_hi:[1,0]
@@ -8226,9 +8834,7 @@ define inreg <12 x half> @bitcast_v12i16_to_v12f16_scalar(<12 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB57_3:
-; GFX9-NEXT:    s_branch .LBB57_2
-; GFX9-NEXT:  .LBB57_4:
+; GFX9-NEXT:  .LBB57_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -8246,11 +8852,16 @@ define inreg <12 x half> @bitcast_v12i16_to_v12f16_scalar(<12 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB57_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v5, s5, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v4, s4, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v3, s3, 3 op_sel_hi:[1,0]
@@ -8258,8 +8869,6 @@ define inreg <12 x half> @bitcast_v12i16_to_v12f16_scalar(<12 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB57_3:
-; GFX11-NEXT:    s_branch .LBB57_2
 ; GFX11-NEXT:  .LBB57_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -8469,10 +9078,18 @@ define inreg <12 x i16> @bitcast_v12f16_to_v12i16_scalar(<12 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s6, s17, 16
 ; SI-NEXT:    s_lshr_b32 s11, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s22, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_3
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB59_4
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s11
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s10
@@ -8524,10 +9141,8 @@ define inreg <12 x i16> @bitcast_v12f16_to_v12i16_scalar(<12 x half> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[8:9], v[2:3], 16
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[4:5], 16
 ; SI-NEXT:    v_or_b32_e32 v4, v17, v4
-; SI-NEXT:    s_branch .LBB59_5
-; SI-NEXT:  .LBB59_3:
-; SI-NEXT:    s_branch .LBB59_2
-; SI-NEXT:  .LBB59_4:
+; SI-NEXT:    s_branch .LBB59_6
+; SI-NEXT:  .LBB59_5:
 ; SI-NEXT:    v_mov_b32_e32 v13, s8
 ; SI-NEXT:    v_mov_b32_e32 v15, s7
 ; SI-NEXT:    v_mov_b32_e32 v16, s6
@@ -8540,7 +9155,7 @@ define inreg <12 x i16> @bitcast_v12f16_to_v12i16_scalar(<12 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v10, s11
 ; SI-NEXT:    v_mov_b32_e32 v8, s10
 ; SI-NEXT:    v_mov_b32_e32 v6, s9
-; SI-NEXT:  .LBB59_5: ; %end
+; SI-NEXT:  .LBB59_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v12
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v10
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
@@ -8565,10 +9180,18 @@ define inreg <12 x i16> @bitcast_v12f16_to_v12i16_scalar(<12 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s22, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_3
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_4
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
@@ -8601,9 +9224,7 @@ define inreg <12 x i16> @bitcast_v12f16_to_v12i16_scalar(<12 x half> inreg %a, i
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v8
 ; VI-NEXT:    v_or_b32_e32 v0, v6, v7
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB59_3:
-; VI-NEXT:    s_branch .LBB59_2
-; VI-NEXT:  .LBB59_4:
+; VI-NEXT:  .LBB59_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8618,10 +9239,18 @@ define inreg <12 x i16> @bitcast_v12f16_to_v12i16_scalar(<12 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s22, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_4
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v5, s21, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v4, s20, v0 op_sel_hi:[1,0]
@@ -8630,9 +9259,7 @@ define inreg <12 x i16> @bitcast_v12f16_to_v12i16_scalar(<12 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB59_3:
-; GFX9-NEXT:    s_branch .LBB59_2
-; GFX9-NEXT:  .LBB59_4:
+; GFX9-NEXT:  .LBB59_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -8650,11 +9277,16 @@ define inreg <12 x i16> @bitcast_v12f16_to_v12i16_scalar(<12 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s18, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB59_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v5, 0x200, s5 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v4, 0x200, s4 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v3, 0x200, s3 op_sel_hi:[0,1]
@@ -8662,8 +9294,6 @@ define inreg <12 x i16> @bitcast_v12f16_to_v12i16_scalar(<12 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB59_3:
-; GFX11-NEXT:    s_branch .LBB59_2
 ; GFX11-NEXT:  .LBB59_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.224bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.224bit.ll
index c66f5ea8e6c60..d217850515f07 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.224bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.224bit.ll
@@ -106,10 +106,18 @@ define inreg <7 x float> @bitcast_v7i32_to_v7f32_scalar(<7 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s23, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s20, s20, 3
@@ -117,7 +125,7 @@ define inreg <7 x float> @bitcast_v7i32_to_v7f32_scalar(<7 x i32> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -126,17 +134,23 @@ define inreg <7 x float> @bitcast_v7i32_to_v7f32_scalar(<7 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v5, s21
 ; SI-NEXT:    v_mov_b32_e32 v6, s22
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v7i32_to_v7f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s23, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s20, s20, 3
@@ -144,7 +158,7 @@ define inreg <7 x float> @bitcast_v7i32_to_v7f32_scalar(<7 x i32> inreg %a, i32
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -153,17 +167,23 @@ define inreg <7 x float> @bitcast_v7i32_to_v7f32_scalar(<7 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v7i32_to_v7f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s23, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s22, s22, 3
 ; GFX9-NEXT:    s_add_i32 s21, s21, 3
 ; GFX9-NEXT:    s_add_i32 s20, s20, 3
@@ -171,7 +191,7 @@ define inreg <7 x float> @bitcast_v7i32_to_v7f32_scalar(<7 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -180,19 +200,22 @@ define inreg <7 x float> @bitcast_v7i32_to_v7f32_scalar(<7 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s21
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v7i32_to_v7f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s19, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
 ; GFX11-NEXT:    s_add_i32 s17, s17, 3
 ; GFX11-NEXT:    s_add_i32 s16, s16, 3
@@ -200,15 +223,13 @@ define inreg <7 x float> @bitcast_v7i32_to_v7f32_scalar(<7 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_mov_b32_e32 v6, s18
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -322,10 +343,18 @@ define inreg <7 x i32> @bitcast_v7f32_to_v7i32_scalar(<7 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s23, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; SI-NEXT:    v_add_f32_e64 v4, s20, 1.0
@@ -334,9 +363,7 @@ define inreg <7 x i32> @bitcast_v7f32_to_v7i32_scalar(<7 x float> inreg %a, i32
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -350,10 +377,18 @@ define inreg <7 x i32> @bitcast_v7f32_to_v7i32_scalar(<7 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s23, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; VI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; VI-NEXT:    v_add_f32_e64 v4, s20, 1.0
@@ -362,9 +397,7 @@ define inreg <7 x i32> @bitcast_v7f32_to_v7i32_scalar(<7 x float> inreg %a, i32
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -378,10 +411,18 @@ define inreg <7 x i32> @bitcast_v7f32_to_v7i32_scalar(<7 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s23, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v4, s20, 1.0
@@ -390,9 +431,7 @@ define inreg <7 x i32> @bitcast_v7f32_to_v7i32_scalar(<7 x float> inreg %a, i32
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -410,11 +449,16 @@ define inreg <7 x i32> @bitcast_v7f32_to_v7i32_scalar(<7 x float> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s19, 0
 ; GFX11-NEXT:    s_mov_b32 s7, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s7
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s7, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s7, s7, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v6, s6, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v5, s5, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v4, s4, 1.0
@@ -423,8 +467,6 @@ define inreg <7 x i32> @bitcast_v7f32_to_v7i32_scalar(<7 x float> inreg %a, i32
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -593,7 +635,7 @@ define inreg <14 x i16> @bitcast_v7i32_to_v14i16_scalar(<7 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s23, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s23, s17, 16
 ; SI-NEXT:    s_lshr_b32 s14, s21, 16
@@ -602,8 +644,23 @@ define inreg <14 x i16> @bitcast_v7i32_to_v14i16_scalar(<7 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr23
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
@@ -618,7 +675,7 @@ define inreg <14 x i16> @bitcast_v7i32_to_v14i16_scalar(<7 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s14, s21, 16
 ; SI-NEXT:    s_lshr_b32 s15, s19, 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[22:23], 16
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s10, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -648,24 +705,23 @@ define inreg <14 x i16> @bitcast_v7i32_to_v14i16_scalar(<7 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v5, s10
 ; SI-NEXT:    v_mov_b32_e32 v6, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr23
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v7i32_to_v14i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s23, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s20, s20, 3
@@ -673,7 +729,7 @@ define inreg <14 x i16> @bitcast_v7i32_to_v14i16_scalar(<7 x i32> inreg %a, i32
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -682,17 +738,23 @@ define inreg <14 x i16> @bitcast_v7i32_to_v14i16_scalar(<7 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v7i32_to_v14i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s23, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s22, s22, 3
 ; GFX9-NEXT:    s_add_i32 s21, s21, 3
 ; GFX9-NEXT:    s_add_i32 s20, s20, 3
@@ -700,7 +762,7 @@ define inreg <14 x i16> @bitcast_v7i32_to_v14i16_scalar(<7 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -709,19 +771,22 @@ define inreg <14 x i16> @bitcast_v7i32_to_v14i16_scalar(<7 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s21
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v7i32_to_v14i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s19, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
 ; GFX11-NEXT:    s_add_i32 s17, s17, 3
 ; GFX11-NEXT:    s_add_i32 s16, s16, 3
@@ -729,15 +794,13 @@ define inreg <14 x i16> @bitcast_v7i32_to_v14i16_scalar(<7 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_mov_b32_e32 v6, s18
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -958,7 +1021,7 @@ define inreg <7 x i32> @bitcast_v14i16_to_v7i32_scalar(<14 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s26, s17, 16
 ; SI-NEXT:    s_lshr_b32 s27, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s23, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s27, 16
@@ -981,8 +1044,17 @@ define inreg <7 x i32> @bitcast_v14i16_to_v7i32_scalar(<14 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s10, s22, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s11, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s12
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s27, 16
@@ -1018,7 +1090,7 @@ define inreg <7 x i32> @bitcast_v14i16_to_v7i32_scalar(<14 x i16> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s8, s8, 0x30000
 ; SI-NEXT:    s_add_i32 s9, s9, 0x30000
 ; SI-NEXT:    s_add_i32 s10, s10, 0x30000
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -1027,18 +1099,23 @@ define inreg <7 x i32> @bitcast_v14i16_to_v7i32_scalar(<14 x i16> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v5, s9
 ; SI-NEXT:    v_mov_b32_e32 v6, s10
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v14i16_to_v7i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s23, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s22, 3
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -1074,7 +1151,7 @@ define inreg <7 x i32> @bitcast_v14i16_to_v7i32_scalar(<14 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1083,17 +1160,23 @@ define inreg <7 x i32> @bitcast_v14i16_to_v7i32_scalar(<14 x i16> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v14i16_to_v7i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s23, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_4
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v6, s22, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v5, s21, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v4, s20, 3 op_sel_hi:[1,0]
@@ -1102,9 +1185,7 @@ define inreg <7 x i32> @bitcast_v14i16_to_v7i32_scalar(<14 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_3:
-; GFX9-NEXT:    s_branch .LBB7_2
-; GFX9-NEXT:  .LBB7_4:
+; GFX9-NEXT:  .LBB7_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1122,11 +1203,16 @@ define inreg <7 x i32> @bitcast_v14i16_to_v7i32_scalar(<14 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s19, 0
 ; GFX11-NEXT:    s_mov_b32 s7, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s7
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_4
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s7, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s7, s7, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v6, s6, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v5, s5, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v4, s4, 3 op_sel_hi:[1,0]
@@ -1135,8 +1221,6 @@ define inreg <7 x i32> @bitcast_v14i16_to_v7i32_scalar(<14 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_3:
-; GFX11-NEXT:    s_branch .LBB7_2
 ; GFX11-NEXT:  .LBB7_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1305,7 +1389,7 @@ define inreg <14 x half> @bitcast_v7i32_to_v14f16_scalar(<7 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s23, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s23, s17, 16
 ; SI-NEXT:    s_lshr_b32 s14, s21, 16
@@ -1314,8 +1398,23 @@ define inreg <14 x half> @bitcast_v7i32_to_v14f16_scalar(<7 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr23
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
@@ -1330,7 +1429,7 @@ define inreg <14 x half> @bitcast_v7i32_to_v14f16_scalar(<7 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s14, s21, 16
 ; SI-NEXT:    s_lshr_b32 s15, s19, 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[22:23], 16
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s10, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -1360,24 +1459,23 @@ define inreg <14 x half> @bitcast_v7i32_to_v14f16_scalar(<7 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v5, s10
 ; SI-NEXT:    v_mov_b32_e32 v6, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr23
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v7i32_to_v14f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s23, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s20, s20, 3
@@ -1385,7 +1483,7 @@ define inreg <14 x half> @bitcast_v7i32_to_v14f16_scalar(<7 x i32> inreg %a, i32
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1394,17 +1492,23 @@ define inreg <14 x half> @bitcast_v7i32_to_v14f16_scalar(<7 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v7i32_to_v14f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s23, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s22, s22, 3
 ; GFX9-NEXT:    s_add_i32 s21, s21, 3
 ; GFX9-NEXT:    s_add_i32 s20, s20, 3
@@ -1412,7 +1516,7 @@ define inreg <14 x half> @bitcast_v7i32_to_v14f16_scalar(<7 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1421,19 +1525,22 @@ define inreg <14 x half> @bitcast_v7i32_to_v14f16_scalar(<7 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s21
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v7i32_to_v14f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s19, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
 ; GFX11-NEXT:    s_add_i32 s17, s17, 3
 ; GFX11-NEXT:    s_add_i32 s16, s16, 3
@@ -1441,15 +1548,13 @@ define inreg <14 x half> @bitcast_v7i32_to_v14f16_scalar(<7 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_mov_b32_e32 v6, s18
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1698,7 +1803,7 @@ define inreg <7 x i32> @bitcast_v14f16_to_v7i32_scalar(<14 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s26, s17, 16
 ; SI-NEXT:    s_lshr_b32 s27, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s23, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s27, 16
@@ -1721,8 +1826,17 @@ define inreg <7 x i32> @bitcast_v14f16_to_v7i32_scalar(<14 x half> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s10, s22, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s11, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s12
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s27
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s26
@@ -1780,10 +1894,7 @@ define inreg <7 x i32> @bitcast_v14f16_to_v7i32_scalar(<14 x half> inreg %a, i32
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v7
 ; SI-NEXT:    v_or_b32_e32 v6, v8, v6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -1797,10 +1908,18 @@ define inreg <7 x i32> @bitcast_v14f16_to_v7i32_scalar(<14 x half> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s23, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s22, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -1838,9 +1957,7 @@ define inreg <7 x i32> @bitcast_v14f16_to_v7i32_scalar(<14 x half> inreg %a, i32
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v7
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1854,10 +1971,18 @@ define inreg <7 x i32> @bitcast_v14f16_to_v7i32_scalar(<14 x half> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s23, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v6, s22, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v5, s21, v0 op_sel_hi:[1,0]
@@ -1867,9 +1992,7 @@ define inreg <7 x i32> @bitcast_v14f16_to_v7i32_scalar(<14 x half> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1887,11 +2010,16 @@ define inreg <7 x i32> @bitcast_v14f16_to_v7i32_scalar(<14 x half> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s19, 0
 ; GFX11-NEXT:    s_mov_b32 s7, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s7
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s7, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s7, s7, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v6, 0x200, s6 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v5, 0x200, s5 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v4, 0x200, s4 op_sel_hi:[0,1]
@@ -1900,8 +2028,6 @@ define inreg <7 x i32> @bitcast_v14f16_to_v7i32_scalar(<14 x half> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2066,7 +2192,7 @@ define inreg <14 x i16> @bitcast_v7f32_to_v14i16_scalar(<7 x float> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s23, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_3
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s23, s21, 16
 ; SI-NEXT:    s_lshr_b32 s15, s19, 16
@@ -2075,8 +2201,23 @@ define inreg <14 x i16> @bitcast_v7f32_to_v14i16_scalar(<7 x float> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_4
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr23
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; SI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; SI-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -2091,17 +2232,8 @@ define inreg <14 x i16> @bitcast_v7f32_to_v14i16_scalar(<7 x float> inreg %a, i3
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v1
-; SI-NEXT:    s_branch .LBB13_5
-; SI-NEXT:  .LBB13_3:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr23
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB13_2
-; SI-NEXT:  .LBB13_4:
+; SI-NEXT:    s_branch .LBB13_6
+; SI-NEXT:  .LBB13_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2116,7 +2248,7 @@ define inreg <14 x i16> @bitcast_v7f32_to_v14i16_scalar(<7 x float> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v11, s10
 ; SI-NEXT:    v_mov_b32_e32 v10, s8
 ; SI-NEXT:    v_mov_b32_e32 v7, s4
-; SI-NEXT:  .LBB13_5: ; %end
+; SI-NEXT:  .LBB13_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; SI-NEXT:    v_and_b32_e32 v4, 0xffff, v4
@@ -2144,10 +2276,18 @@ define inreg <14 x i16> @bitcast_v7f32_to_v14i16_scalar(<7 x float> inreg %a, i3
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s23, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_3
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB13_4
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; VI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; VI-NEXT:    v_add_f32_e64 v4, s20, 1.0
@@ -2156,9 +2296,7 @@ define inreg <14 x i16> @bitcast_v7f32_to_v14i16_scalar(<7 x float> inreg %a, i3
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_3:
-; VI-NEXT:    s_branch .LBB13_2
-; VI-NEXT:  .LBB13_4:
+; VI-NEXT:  .LBB13_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2173,10 +2311,18 @@ define inreg <14 x i16> @bitcast_v7f32_to_v14i16_scalar(<7 x float> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s23, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_4
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v4, s20, 1.0
@@ -2185,9 +2331,7 @@ define inreg <14 x i16> @bitcast_v7f32_to_v14i16_scalar(<7 x float> inreg %a, i3
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_3:
-; GFX9-NEXT:    s_branch .LBB13_2
-; GFX9-NEXT:  .LBB13_4:
+; GFX9-NEXT:  .LBB13_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2206,11 +2350,16 @@ define inreg <14 x i16> @bitcast_v7f32_to_v14i16_scalar(<7 x float> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s19, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_4
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB13_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v6, s6, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v5, s5, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v4, s4, 1.0
@@ -2219,8 +2368,6 @@ define inreg <14 x i16> @bitcast_v7f32_to_v14i16_scalar(<7 x float> inreg %a, i3
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_3:
-; GFX11-NEXT:    s_branch .LBB13_2
 ; GFX11-NEXT:  .LBB13_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2447,7 +2594,7 @@ define inreg <7 x float> @bitcast_v14i16_to_v7f32_scalar(<14 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s26, s17, 16
 ; SI-NEXT:    s_lshr_b32 s27, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s23, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s27, 16
@@ -2470,8 +2617,17 @@ define inreg <7 x float> @bitcast_v14i16_to_v7f32_scalar(<14 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s10, s22, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s11, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s12
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s27, 16
@@ -2507,7 +2663,7 @@ define inreg <7 x float> @bitcast_v14i16_to_v7f32_scalar(<14 x i16> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s8, s8, 0x30000
 ; SI-NEXT:    s_add_i32 s9, s9, 0x30000
 ; SI-NEXT:    s_add_i32 s10, s10, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
+; SI-NEXT:  .LBB15_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -2516,18 +2672,23 @@ define inreg <7 x float> @bitcast_v14i16_to_v7f32_scalar(<14 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v5, s9
 ; SI-NEXT:    v_mov_b32_e32 v6, s10
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v14i16_to_v7f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s23, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s22, 3
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -2563,7 +2724,7 @@ define inreg <7 x float> @bitcast_v14i16_to_v7f32_scalar(<14 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
+; VI-NEXT:  .LBB15_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2572,17 +2733,23 @@ define inreg <7 x float> @bitcast_v14i16_to_v7f32_scalar(<14 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v14i16_to_v7f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s23, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v6, s22, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v5, s21, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v4, s20, 3 op_sel_hi:[1,0]
@@ -2591,9 +2758,7 @@ define inreg <7 x float> @bitcast_v14i16_to_v7f32_scalar(<14 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2611,11 +2776,16 @@ define inreg <7 x float> @bitcast_v14i16_to_v7f32_scalar(<14 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s19, 0
 ; GFX11-NEXT:    s_mov_b32 s7, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s7
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s7, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s7, s7, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v6, s6, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v5, s5, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v4, s4, 3 op_sel_hi:[1,0]
@@ -2624,8 +2794,6 @@ define inreg <7 x float> @bitcast_v14i16_to_v7f32_scalar(<14 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2790,7 +2958,7 @@ define inreg <14 x half> @bitcast_v7f32_to_v14f16_scalar(<7 x float> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s23, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_3
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s23, s21, 16
 ; SI-NEXT:    s_lshr_b32 s15, s19, 16
@@ -2799,8 +2967,23 @@ define inreg <14 x half> @bitcast_v7f32_to_v14f16_scalar(<7 x float> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_4
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr23
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; SI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; SI-NEXT:    v_add_f32_e64 v3, s19, 1.0
@@ -2815,17 +2998,8 @@ define inreg <14 x half> @bitcast_v7f32_to_v14f16_scalar(<7 x float> inreg %a, i
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v1
-; SI-NEXT:    s_branch .LBB17_5
-; SI-NEXT:  .LBB17_3:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr23
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB17_2
-; SI-NEXT:  .LBB17_4:
+; SI-NEXT:    s_branch .LBB17_6
+; SI-NEXT:  .LBB17_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2840,7 +3014,7 @@ define inreg <14 x half> @bitcast_v7f32_to_v14f16_scalar(<7 x float> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v11, s10
 ; SI-NEXT:    v_mov_b32_e32 v10, s8
 ; SI-NEXT:    v_mov_b32_e32 v7, s4
-; SI-NEXT:  .LBB17_5: ; %end
+; SI-NEXT:  .LBB17_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; SI-NEXT:    v_and_b32_e32 v4, 0xffff, v4
@@ -2868,10 +3042,18 @@ define inreg <14 x half> @bitcast_v7f32_to_v14f16_scalar(<7 x float> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s23, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_3
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB17_4
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; VI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; VI-NEXT:    v_add_f32_e64 v4, s20, 1.0
@@ -2880,9 +3062,7 @@ define inreg <14 x half> @bitcast_v7f32_to_v14f16_scalar(<7 x float> inreg %a, i
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_3:
-; VI-NEXT:    s_branch .LBB17_2
-; VI-NEXT:  .LBB17_4:
+; VI-NEXT:  .LBB17_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2897,10 +3077,18 @@ define inreg <14 x half> @bitcast_v7f32_to_v14f16_scalar(<7 x float> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s23, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_4
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v4, s20, 1.0
@@ -2909,9 +3097,7 @@ define inreg <14 x half> @bitcast_v7f32_to_v14f16_scalar(<7 x float> inreg %a, i
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_3:
-; GFX9-NEXT:    s_branch .LBB17_2
-; GFX9-NEXT:  .LBB17_4:
+; GFX9-NEXT:  .LBB17_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2930,11 +3116,16 @@ define inreg <14 x half> @bitcast_v7f32_to_v14f16_scalar(<7 x float> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s19, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_4
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB17_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v6, s6, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v5, s5, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v4, s4, 1.0
@@ -2943,8 +3134,6 @@ define inreg <14 x half> @bitcast_v7f32_to_v14f16_scalar(<7 x float> inreg %a, i
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_3:
-; GFX11-NEXT:    s_branch .LBB17_2
 ; GFX11-NEXT:  .LBB17_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -3199,7 +3388,7 @@ define inreg <7 x float> @bitcast_v14f16_to_v7f32_scalar(<14 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s26, s17, 16
 ; SI-NEXT:    s_lshr_b32 s27, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s23, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s27, 16
@@ -3222,8 +3411,17 @@ define inreg <7 x float> @bitcast_v14f16_to_v7f32_scalar(<14 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s10, s22, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s11, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s12
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s27
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s26
@@ -3281,10 +3479,7 @@ define inreg <7 x float> @bitcast_v14f16_to_v7f32_scalar(<14 x half> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v7
 ; SI-NEXT:    v_or_b32_e32 v6, v8, v6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -3298,10 +3493,18 @@ define inreg <7 x float> @bitcast_v14f16_to_v7f32_scalar(<14 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s23, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s22, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -3339,9 +3542,7 @@ define inreg <7 x float> @bitcast_v14f16_to_v7f32_scalar(<14 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v7
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3355,10 +3556,18 @@ define inreg <7 x float> @bitcast_v14f16_to_v7f32_scalar(<14 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s23, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v6, s22, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v5, s21, v0 op_sel_hi:[1,0]
@@ -3368,9 +3577,7 @@ define inreg <7 x float> @bitcast_v14f16_to_v7f32_scalar(<14 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3388,11 +3595,16 @@ define inreg <7 x float> @bitcast_v14f16_to_v7f32_scalar(<14 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s19, 0
 ; GFX11-NEXT:    s_mov_b32 s7, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s7
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s7, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s7, s7, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v6, 0x200, s6 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v5, 0x200, s5 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v4, 0x200, s4 op_sel_hi:[0,1]
@@ -3401,8 +3613,6 @@ define inreg <7 x float> @bitcast_v14f16_to_v7f32_scalar(<14 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -3658,7 +3868,7 @@ define inreg <14 x half> @bitcast_v14i16_to_v14f16_scalar(<14 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s27, s17, 16
 ; SI-NEXT:    s_lshr_b32 s40, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s23, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_4
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s22, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s26, 16
@@ -3684,11 +3894,26 @@ define inreg <14 x half> @bitcast_v14i16_to_v14f16_scalar(<14 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[44:45], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[46:47], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[56:57], 16
+; SI-NEXT:    s_mov_b64 s[24:25], 0
 ; SI-NEXT:    s_mov_b32 s9, s45
 ; SI-NEXT:    s_mov_b32 s7, s47
 ; SI-NEXT:    s_mov_b32 s5, s57
-; SI-NEXT:    s_cbranch_execnz .LBB21_3
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[24:25], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr23
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[24:25], s[24:25], exec
+; SI-NEXT:    s_cselect_b32 s11, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s11, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s42, 16
@@ -3731,7 +3956,7 @@ define inreg <14 x half> @bitcast_v14i16_to_v14f16_scalar(<14 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s28, s7, 16
 ; SI-NEXT:    s_lshr_b32 s29, s5, 16
 ; SI-NEXT:    s_lshr_b32 s26, s23, 16
-; SI-NEXT:  .LBB21_3: ; %end
+; SI-NEXT:  .LBB21_5: ; %end
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
 ; SI-NEXT:    s_lshl_b32 s10, s10, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s10
@@ -3761,24 +3986,23 @@ define inreg <14 x half> @bitcast_v14i16_to_v14f16_scalar(<14 x i16> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v5, s5
 ; SI-NEXT:    v_mov_b32_e32 v6, s10
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB21_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr23
-; SI-NEXT:    s_branch .LBB21_2
 ;
 ; VI-LABEL: bitcast_v14i16_to_v14f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s23, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_4
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_3
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s6, s17, 0xffff0000
 ; VI-NEXT:    s_add_i32 s7, s17, 3
@@ -3814,7 +4038,7 @@ define inreg <14 x half> @bitcast_v14i16_to_v14f16_scalar(<14 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB21_3: ; %end
+; VI-NEXT:  .LBB21_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3823,17 +4047,23 @@ define inreg <14 x half> @bitcast_v14i16_to_v14f16_scalar(<14 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v5, s21
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB21_4:
-; VI-NEXT:    s_branch .LBB21_2
 ;
 ; GFX9-LABEL: bitcast_v14i16_to_v14f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s23, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_4
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v6, s22, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v5, s21, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v4, s20, 3 op_sel_hi:[1,0]
@@ -3842,9 +4072,7 @@ define inreg <14 x half> @bitcast_v14i16_to_v14f16_scalar(<14 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB21_3:
-; GFX9-NEXT:    s_branch .LBB21_2
-; GFX9-NEXT:  .LBB21_4:
+; GFX9-NEXT:  .LBB21_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3863,11 +4091,16 @@ define inreg <14 x half> @bitcast_v14i16_to_v14f16_scalar(<14 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s19, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_4
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v6, s6, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v5, s5, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v4, s4, 3 op_sel_hi:[1,0]
@@ -3876,8 +4109,6 @@ define inreg <14 x half> @bitcast_v14i16_to_v14f16_scalar(<14 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB21_3:
-; GFX11-NEXT:    s_branch .LBB21_2
 ; GFX11-NEXT:  .LBB21_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -4106,10 +4337,18 @@ define inreg <14 x i16> @bitcast_v14f16_to_v14i16_scalar(<14 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s6, s17, 16
 ; SI-NEXT:    s_lshr_b32 s12, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s23, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_3
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB23_4
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s12
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s11
@@ -4169,10 +4408,8 @@ define inreg <14 x i16> @bitcast_v14f16_to_v14i16_scalar(<14 x half> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[8:9], v[2:3], 16
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[4:5], 16
 ; SI-NEXT:    v_or_b32_e32 v4, v19, v4
-; SI-NEXT:    s_branch .LBB23_5
-; SI-NEXT:  .LBB23_3:
-; SI-NEXT:    s_branch .LBB23_2
-; SI-NEXT:  .LBB23_4:
+; SI-NEXT:    s_branch .LBB23_6
+; SI-NEXT:  .LBB23_5:
 ; SI-NEXT:    v_mov_b32_e32 v12, s10
 ; SI-NEXT:    v_mov_b32_e32 v15, s8
 ; SI-NEXT:    v_mov_b32_e32 v17, s7
@@ -4187,7 +4424,7 @@ define inreg <14 x i16> @bitcast_v14f16_to_v14i16_scalar(<14 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v10, s12
 ; SI-NEXT:    v_mov_b32_e32 v8, s11
 ; SI-NEXT:    v_mov_b32_e32 v6, s9
-; SI-NEXT:  .LBB23_5: ; %end
+; SI-NEXT:  .LBB23_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v13
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v10
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
@@ -4215,10 +4452,18 @@ define inreg <14 x i16> @bitcast_v14f16_to_v14i16_scalar(<14 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s23, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_3
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_4
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
@@ -4256,9 +4501,7 @@ define inreg <14 x i16> @bitcast_v14f16_to_v14i16_scalar(<14 x half> inreg %a, i
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v9
 ; VI-NEXT:    v_or_b32_e32 v0, v7, v8
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_3:
-; VI-NEXT:    s_branch .LBB23_2
-; VI-NEXT:  .LBB23_4:
+; VI-NEXT:  .LBB23_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4273,10 +4516,18 @@ define inreg <14 x i16> @bitcast_v14f16_to_v14i16_scalar(<14 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s23, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_4
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v6, s22, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v5, s21, v0 op_sel_hi:[1,0]
@@ -4286,9 +4537,7 @@ define inreg <14 x i16> @bitcast_v14f16_to_v14i16_scalar(<14 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_3:
-; GFX9-NEXT:    s_branch .LBB23_2
-; GFX9-NEXT:  .LBB23_4:
+; GFX9-NEXT:  .LBB23_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4307,11 +4556,16 @@ define inreg <14 x i16> @bitcast_v14f16_to_v14i16_scalar(<14 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s19, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_4
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v6, 0x200, s6 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v5, 0x200, s5 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v4, 0x200, s4 op_sel_hi:[0,1]
@@ -4320,8 +4574,6 @@ define inreg <14 x i16> @bitcast_v14f16_to_v14i16_scalar(<14 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_3:
-; GFX11-NEXT:    s_branch .LBB23_2
 ; GFX11-NEXT:  .LBB23_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.256bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.256bit.ll
index 224b73353c3bc..fb4faa32cb2c7 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.256bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.256bit.ll
@@ -110,10 +110,18 @@ define inreg <8 x float> @bitcast_v8i32_to_v8f32_scalar(<8 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s21, s21, 3
@@ -122,7 +130,7 @@ define inreg <8 x float> @bitcast_v8i32_to_v8f32_scalar(<8 x i32> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -132,17 +140,23 @@ define inreg <8 x float> @bitcast_v8i32_to_v8f32_scalar(<8 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s22
 ; SI-NEXT:    v_mov_b32_e32 v7, s23
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v8i32_to_v8f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s21, s21, 3
@@ -151,7 +165,7 @@ define inreg <8 x float> @bitcast_v8i32_to_v8f32_scalar(<8 x i32> inreg %a, i32
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -161,17 +175,23 @@ define inreg <8 x float> @bitcast_v8i32_to_v8f32_scalar(<8 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v8i32_to_v8f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s23, s23, 3
 ; GFX9-NEXT:    s_add_i32 s22, s22, 3
 ; GFX9-NEXT:    s_add_i32 s21, s21, 3
@@ -180,7 +200,7 @@ define inreg <8 x float> @bitcast_v8i32_to_v8f32_scalar(<8 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -190,19 +210,22 @@ define inreg <8 x float> @bitcast_v8i32_to_v8f32_scalar(<8 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s23
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v8i32_to_v8f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s19, s19, 3
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
 ; GFX11-NEXT:    s_add_i32 s17, s17, 3
@@ -211,15 +234,13 @@ define inreg <8 x float> @bitcast_v8i32_to_v8f32_scalar(<8 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -336,10 +357,18 @@ define inreg <8 x i32> @bitcast_v8f32_to_v8i32_scalar(<8 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; SI-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -349,9 +378,7 @@ define inreg <8 x i32> @bitcast_v8f32_to_v8i32_scalar(<8 x float> inreg %a, i32
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -366,10 +393,18 @@ define inreg <8 x i32> @bitcast_v8f32_to_v8i32_scalar(<8 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; VI-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; VI-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -379,9 +414,7 @@ define inreg <8 x i32> @bitcast_v8f32_to_v8i32_scalar(<8 x float> inreg %a, i32
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -396,10 +429,18 @@ define inreg <8 x i32> @bitcast_v8f32_to_v8i32_scalar(<8 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -409,9 +450,7 @@ define inreg <8 x i32> @bitcast_v8f32_to_v8i32_scalar(<8 x float> inreg %a, i32
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -431,11 +470,16 @@ define inreg <8 x i32> @bitcast_v8f32_to_v8i32_scalar(<8 x float> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v7, s7, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v6, s6, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v5, s5, 1.0
@@ -445,8 +489,6 @@ define inreg <8 x i32> @bitcast_v8f32_to_v8i32_scalar(<8 x float> inreg %a, i32
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -574,10 +616,18 @@ define inreg <4 x i64> @bitcast_v8i32_to_v4i64_scalar(<8 x i32> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s21, s21, 3
@@ -586,7 +636,7 @@ define inreg <4 x i64> @bitcast_v8i32_to_v4i64_scalar(<8 x i32> inreg %a, i32 in
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -596,17 +646,23 @@ define inreg <4 x i64> @bitcast_v8i32_to_v4i64_scalar(<8 x i32> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v6, s22
 ; SI-NEXT:    v_mov_b32_e32 v7, s23
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v8i32_to_v4i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s21, s21, 3
@@ -615,7 +671,7 @@ define inreg <4 x i64> @bitcast_v8i32_to_v4i64_scalar(<8 x i32> inreg %a, i32 in
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -625,17 +681,23 @@ define inreg <4 x i64> @bitcast_v8i32_to_v4i64_scalar(<8 x i32> inreg %a, i32 in
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v8i32_to_v4i64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s23, s23, 3
 ; GFX9-NEXT:    s_add_i32 s22, s22, 3
 ; GFX9-NEXT:    s_add_i32 s21, s21, 3
@@ -644,7 +706,7 @@ define inreg <4 x i64> @bitcast_v8i32_to_v4i64_scalar(<8 x i32> inreg %a, i32 in
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -654,19 +716,22 @@ define inreg <4 x i64> @bitcast_v8i32_to_v4i64_scalar(<8 x i32> inreg %a, i32 in
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s23
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v8i32_to_v4i64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s19, s19, 3
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
 ; GFX11-NEXT:    s_add_i32 s17, s17, 3
@@ -675,15 +740,13 @@ define inreg <4 x i64> @bitcast_v8i32_to_v4i64_scalar(<8 x i32> inreg %a, i32 in
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -807,10 +870,18 @@ define inreg <8 x i32> @bitcast_v4i64_to_v8i32_scalar(<4 x i64> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s22, s22, 3
 ; SI-NEXT:    s_addc_u32 s23, s23, 0
 ; SI-NEXT:    s_add_u32 s20, s20, 3
@@ -819,7 +890,7 @@ define inreg <8 x i32> @bitcast_v4i64_to_v8i32_scalar(<4 x i64> inreg %a, i32 in
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -829,17 +900,23 @@ define inreg <8 x i32> @bitcast_v4i64_to_v8i32_scalar(<4 x i64> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v6, s22
 ; SI-NEXT:    v_mov_b32_e32 v7, s23
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v4i64_to_v8i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s22, s22, 3
 ; VI-NEXT:    s_addc_u32 s23, s23, 0
 ; VI-NEXT:    s_add_u32 s20, s20, 3
@@ -848,7 +925,7 @@ define inreg <8 x i32> @bitcast_v4i64_to_v8i32_scalar(<4 x i64> inreg %a, i32 in
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -858,17 +935,23 @@ define inreg <8 x i32> @bitcast_v4i64_to_v8i32_scalar(<4 x i64> inreg %a, i32 in
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v4i64_to_v8i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s22, s22, 3
 ; GFX9-NEXT:    s_addc_u32 s23, s23, 0
 ; GFX9-NEXT:    s_add_u32 s20, s20, 3
@@ -877,7 +960,7 @@ define inreg <8 x i32> @bitcast_v4i64_to_v8i32_scalar(<4 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB7_3: ; %end
+; GFX9-NEXT:  .LBB7_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -887,19 +970,22 @@ define inreg <8 x i32> @bitcast_v4i64_to_v8i32_scalar(<4 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s23
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_4:
-; GFX9-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-LABEL: bitcast_v4i64_to_v8i32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_3
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s18, s18, 3
 ; GFX11-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX11-NEXT:    s_add_u32 s16, s16, 3
@@ -908,15 +994,13 @@ define inreg <8 x i32> @bitcast_v4i64_to_v8i32_scalar(<4 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB7_3: ; %end
+; GFX11-NEXT:  .LBB7_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_4:
-; GFX11-NEXT:    s_branch .LBB7_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1038,10 +1122,18 @@ define inreg <4 x double> @bitcast_v8i32_to_v4f64_scalar(<8 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s21, s21, 3
@@ -1050,7 +1142,7 @@ define inreg <4 x double> @bitcast_v8i32_to_v4f64_scalar(<8 x i32> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1060,17 +1152,23 @@ define inreg <4 x double> @bitcast_v8i32_to_v4f64_scalar(<8 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s22
 ; SI-NEXT:    v_mov_b32_e32 v7, s23
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v8i32_to_v4f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s21, s21, 3
@@ -1079,7 +1177,7 @@ define inreg <4 x double> @bitcast_v8i32_to_v4f64_scalar(<8 x i32> inreg %a, i32
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1089,17 +1187,23 @@ define inreg <4 x double> @bitcast_v8i32_to_v4f64_scalar(<8 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v8i32_to_v4f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s23, s23, 3
 ; GFX9-NEXT:    s_add_i32 s22, s22, 3
 ; GFX9-NEXT:    s_add_i32 s21, s21, 3
@@ -1108,7 +1212,7 @@ define inreg <4 x double> @bitcast_v8i32_to_v4f64_scalar(<8 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1118,19 +1222,22 @@ define inreg <4 x double> @bitcast_v8i32_to_v4f64_scalar(<8 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s23
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v8i32_to_v4f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s19, s19, 3
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
 ; GFX11-NEXT:    s_add_i32 s17, s17, 3
@@ -1139,15 +1246,13 @@ define inreg <4 x double> @bitcast_v8i32_to_v4f64_scalar(<8 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1255,18 +1360,24 @@ define inreg <8 x i32> @bitcast_v4f64_to_v8i32_scalar(<4 x double> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1281,18 +1392,24 @@ define inreg <8 x i32> @bitcast_v4f64_to_v8i32_scalar(<4 x double> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1307,18 +1424,24 @@ define inreg <8 x i32> @bitcast_v4f64_to_v8i32_scalar(<4 x double> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1338,18 +1461,21 @@ define inreg <8 x i32> @bitcast_v4f64_to_v8i32_scalar(<4 x double> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[6:7], s[6:7], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[4:5], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1528,7 +1654,7 @@ define inreg <16 x i16> @bitcast_v8i32_to_v16i16_scalar(<8 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s14, s23, 16
 ; SI-NEXT:    s_lshr_b32 s15, s21, 16
@@ -1538,8 +1664,24 @@ define inreg <16 x i16> @bitcast_v8i32_to_v16i16_scalar(<8 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -1556,7 +1698,7 @@ define inreg <16 x i16> @bitcast_v8i32_to_v16i16_scalar(<8 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s15, s21, 16
 ; SI-NEXT:    s_lshr_b32 s24, s19, 16
 ; SI-NEXT:    s_lshr_b32 s25, s17, 16
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s10, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -1590,25 +1732,23 @@ define inreg <16 x i16> @bitcast_v8i32_to_v16i16_scalar(<8 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s4
 ; SI-NEXT:    v_mov_b32_e32 v7, s11
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_v8i32_to_v16i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s21, s21, 3
@@ -1617,7 +1757,7 @@ define inreg <16 x i16> @bitcast_v8i32_to_v16i16_scalar(<8 x i32> inreg %a, i32
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1627,17 +1767,23 @@ define inreg <16 x i16> @bitcast_v8i32_to_v16i16_scalar(<8 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v8i32_to_v16i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s23, s23, 3
 ; GFX9-NEXT:    s_add_i32 s22, s22, 3
 ; GFX9-NEXT:    s_add_i32 s21, s21, 3
@@ -1646,7 +1792,7 @@ define inreg <16 x i16> @bitcast_v8i32_to_v16i16_scalar(<8 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB13_3: ; %end
+; GFX9-NEXT:  .LBB13_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1656,19 +1802,22 @@ define inreg <16 x i16> @bitcast_v8i32_to_v16i16_scalar(<8 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s23
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_v8i32_to_v16i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB13_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s19, s19, 3
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
 ; GFX11-NEXT:    s_add_i32 s17, s17, 3
@@ -1677,15 +1826,13 @@ define inreg <16 x i16> @bitcast_v8i32_to_v16i16_scalar(<8 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1923,7 +2070,7 @@ define inreg <8 x i32> @bitcast_v16i16_to_v8i32_scalar(<16 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s29, s17, 16
 ; SI-NEXT:    s_lshr_b32 s40, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s40, 16
@@ -1949,8 +2096,17 @@ define inreg <8 x i32> @bitcast_v16i16_to_v8i32_scalar(<16 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s11, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s14, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s12
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s40, 16
@@ -1991,7 +2147,7 @@ define inreg <8 x i32> @bitcast_v16i16_to_v8i32_scalar(<16 x i16> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s9, s9, 0x30000
 ; SI-NEXT:    s_add_i32 s10, s10, 0x30000
 ; SI-NEXT:    s_add_i32 s11, s11, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
+; SI-NEXT:  .LBB15_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -2001,18 +2157,23 @@ define inreg <8 x i32> @bitcast_v16i16_to_v8i32_scalar(<16 x i16> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s10
 ; SI-NEXT:    v_mov_b32_e32 v7, s11
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v16i16_to_v8i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s23, 3
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -2053,7 +2214,7 @@ define inreg <8 x i32> @bitcast_v16i16_to_v8i32_scalar(<16 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
+; VI-NEXT:  .LBB15_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2063,17 +2224,23 @@ define inreg <8 x i32> @bitcast_v16i16_to_v8i32_scalar(<16 x i16> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v16i16_to_v8i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v7, s23, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v6, s22, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v5, s21, 3 op_sel_hi:[1,0]
@@ -2083,9 +2250,7 @@ define inreg <8 x i32> @bitcast_v16i16_to_v8i32_scalar(<16 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2105,11 +2270,16 @@ define inreg <8 x i32> @bitcast_v16i16_to_v8i32_scalar(<16 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v7, s7, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v6, s6, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v5, s5, 3 op_sel_hi:[1,0]
@@ -2119,8 +2289,6 @@ define inreg <8 x i32> @bitcast_v16i16_to_v8i32_scalar(<16 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2299,7 +2467,7 @@ define inreg <16 x half> @bitcast_v8i32_to_v16f16_scalar(<8 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s14, s23, 16
 ; SI-NEXT:    s_lshr_b32 s15, s21, 16
@@ -2309,8 +2477,24 @@ define inreg <16 x half> @bitcast_v8i32_to_v16f16_scalar(<8 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -2327,7 +2511,7 @@ define inreg <16 x half> @bitcast_v8i32_to_v16f16_scalar(<8 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s15, s21, 16
 ; SI-NEXT:    s_lshr_b32 s24, s19, 16
 ; SI-NEXT:    s_lshr_b32 s25, s17, 16
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s10, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -2361,25 +2545,23 @@ define inreg <16 x half> @bitcast_v8i32_to_v16f16_scalar(<8 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s4
 ; SI-NEXT:    v_mov_b32_e32 v7, s11
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_v8i32_to_v16f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s21, s21, 3
@@ -2388,7 +2570,7 @@ define inreg <16 x half> @bitcast_v8i32_to_v16f16_scalar(<8 x i32> inreg %a, i32
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2398,17 +2580,23 @@ define inreg <16 x half> @bitcast_v8i32_to_v16f16_scalar(<8 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v8i32_to_v16f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s23, s23, 3
 ; GFX9-NEXT:    s_add_i32 s22, s22, 3
 ; GFX9-NEXT:    s_add_i32 s21, s21, 3
@@ -2417,7 +2605,7 @@ define inreg <16 x half> @bitcast_v8i32_to_v16f16_scalar(<8 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2427,19 +2615,22 @@ define inreg <16 x half> @bitcast_v8i32_to_v16f16_scalar(<8 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s23
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v8i32_to_v16f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB17_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s19, s19, 3
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
 ; GFX11-NEXT:    s_add_i32 s17, s17, 3
@@ -2448,15 +2639,13 @@ define inreg <16 x half> @bitcast_v8i32_to_v16f16_scalar(<8 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2726,7 +2915,7 @@ define inreg <8 x i32> @bitcast_v16f16_to_v8i32_scalar(<16 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s29, s17, 16
 ; SI-NEXT:    s_lshr_b32 s40, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s40, 16
@@ -2752,8 +2941,17 @@ define inreg <8 x i32> @bitcast_v16f16_to_v8i32_scalar(<16 x half> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s11, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s14, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s12
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s40
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s29
@@ -2819,10 +3017,7 @@ define inreg <8 x i32> @bitcast_v16f16_to_v8i32_scalar(<16 x half> inreg %a, i32
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v8
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -2837,10 +3032,18 @@ define inreg <8 x i32> @bitcast_v16f16_to_v8i32_scalar(<16 x half> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s23, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -2883,9 +3086,7 @@ define inreg <8 x i32> @bitcast_v16f16_to_v8i32_scalar(<16 x half> inreg %a, i32
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v8
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2900,10 +3101,18 @@ define inreg <8 x i32> @bitcast_v16f16_to_v8i32_scalar(<16 x half> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v7, s23, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v6, s22, v0 op_sel_hi:[1,0]
@@ -2914,9 +3123,7 @@ define inreg <8 x i32> @bitcast_v16f16_to_v8i32_scalar(<16 x half> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2936,11 +3143,16 @@ define inreg <8 x i32> @bitcast_v16f16_to_v8i32_scalar(<16 x half> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v7, 0x200, s7 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v6, 0x200, s6 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v5, 0x200, s5 op_sel_hi:[0,1]
@@ -2950,8 +3162,6 @@ define inreg <8 x i32> @bitcast_v16f16_to_v8i32_scalar(<16 x half> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -3171,7 +3381,7 @@ define inreg <16 x bfloat> @bitcast_v8i32_to_v16bf16_scalar(<8 x i32> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_4
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s7, s23, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s23, 16
@@ -3189,8 +3399,32 @@ define inreg <16 x bfloat> @bitcast_v8i32_to_v16bf16_scalar(<8 x i32> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s26, s17, 16
 ; SI-NEXT:    s_and_b32 s29, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s28, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB21_3
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
@@ -3215,7 +3449,7 @@ define inreg <16 x bfloat> @bitcast_v8i32_to_v16bf16_scalar(<8 x i32> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s26, s17, 16
 ; SI-NEXT:    s_and_b32 s29, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s28, s16, 16
-; SI-NEXT:  .LBB21_3: ; %end
+; SI-NEXT:  .LBB21_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s29
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s28
@@ -3249,33 +3483,23 @@ define inreg <16 x bfloat> @bitcast_v8i32_to_v16bf16_scalar(<8 x i32> inreg %a,
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[7:8], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB21_4:
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB21_2
 ;
 ; VI-LABEL: bitcast_v8i32_to_v16bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_4
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_3
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s21, s21, 3
@@ -3284,7 +3508,7 @@ define inreg <16 x bfloat> @bitcast_v8i32_to_v16bf16_scalar(<8 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB21_3: ; %end
+; VI-NEXT:  .LBB21_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3294,17 +3518,23 @@ define inreg <16 x bfloat> @bitcast_v8i32_to_v16bf16_scalar(<8 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB21_4:
-; VI-NEXT:    s_branch .LBB21_2
 ;
 ; GFX9-LABEL: bitcast_v8i32_to_v16bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_3
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s23, s23, 3
 ; GFX9-NEXT:    s_add_i32 s22, s22, 3
 ; GFX9-NEXT:    s_add_i32 s21, s21, 3
@@ -3313,7 +3543,7 @@ define inreg <16 x bfloat> @bitcast_v8i32_to_v16bf16_scalar(<8 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB21_3: ; %end
+; GFX9-NEXT:  .LBB21_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3323,19 +3553,22 @@ define inreg <16 x bfloat> @bitcast_v8i32_to_v16bf16_scalar(<8 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s23
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB21_4:
-; GFX9-NEXT:    s_branch .LBB21_2
 ;
 ; GFX11-LABEL: bitcast_v8i32_to_v16bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_3
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s19, s19, 3
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
 ; GFX11-NEXT:    s_add_i32 s17, s17, 3
@@ -3344,15 +3577,13 @@ define inreg <16 x bfloat> @bitcast_v8i32_to_v16bf16_scalar(<8 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB21_3: ; %end
+; GFX11-NEXT:  .LBB21_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB21_4:
-; GFX11-NEXT:    s_branch .LBB21_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -4151,7 +4382,7 @@ define inreg <8 x i32> @bitcast_v16bf16_to_v8i32_scalar(<16 x bfloat> inreg %a,
 ; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v32
 ; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v31
@@ -4169,8 +4400,17 @@ define inreg <8 x i32> @bitcast_v16bf16_to_v8i32_scalar(<16 x bfloat> inreg %a,
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[11:12], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v25
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[9:10], 16
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v32
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v23
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -4219,20 +4459,25 @@ define inreg <8 x i32> @bitcast_v16bf16_to_v8i32_scalar(<16 x bfloat> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v7, 0x40c00000, v7
 ; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[7:8], 16
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v16bf16_to_v8i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_3
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_4
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s23, 16
 ; VI-NEXT:    v_mov_b32_e32 v8, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v8
@@ -4382,9 +4627,7 @@ define inreg <8 x i32> @bitcast_v16bf16_to_v8i32_scalar(<16 x bfloat> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v3, v9
 ; VI-NEXT:    v_mov_b32_e32 v5, v8
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_3:
-; VI-NEXT:    s_branch .LBB23_2
-; VI-NEXT:  .LBB23_4:
+; VI-NEXT:  .LBB23_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4399,10 +4642,18 @@ define inreg <8 x i32> @bitcast_v16bf16_to_v8i32_scalar(<16 x bfloat> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_4
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s23, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -4558,9 +4809,7 @@ define inreg <8 x i32> @bitcast_v16bf16_to_v8i32_scalar(<16 x bfloat> inreg %a,
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v8, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v9, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_3:
-; GFX9-NEXT:    s_branch .LBB23_2
-; GFX9-NEXT:  .LBB23_4:
+; GFX9-NEXT:  .LBB23_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4580,11 +4829,16 @@ define inreg <8 x i32> @bitcast_v16bf16_to_v8i32_scalar(<16 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB23_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB23_4
-; GFX11-TRUE16-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-TRUE16-NEXT:  .LBB23_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s8, s7, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s7, s7, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s8
@@ -4743,8 +4997,6 @@ define inreg <8 x i32> @bitcast_v16bf16_to_v8i32_scalar(<16 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v10
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v9.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB23_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB23_2
 ; GFX11-TRUE16-NEXT:  .LBB23_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -4761,11 +5013,16 @@ define inreg <8 x i32> @bitcast_v16bf16_to_v8i32_scalar(<16 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB23_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB23_4
-; GFX11-FAKE16-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-FAKE16-NEXT:  .LBB23_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s8, s7, 16
 ; GFX11-FAKE16-NEXT:    s_and_b32 s7, s7, 0xffff0000
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s8
@@ -4941,8 +5198,6 @@ define inreg <8 x i32> @bitcast_v16bf16_to_v8i32_scalar(<16 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v12, 16, v9
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB23_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB23_2
 ; GFX11-FAKE16-NEXT:  .LBB23_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -5516,7 +5771,7 @@ define inreg <32 x i8> @bitcast_v8i32_to_v32i8_scalar(<8 x i32> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_4
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s56, s23, 24
 ; SI-NEXT:    s_lshr_b32 s57, s23, 16
@@ -5542,8 +5797,40 @@ define inreg <32 x i8> @bitcast_v8i32_to_v32i8_scalar(<8 x i32> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB25_3
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[46:47], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[46:47], -1
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -5576,7 +5863,7 @@ define inreg <32 x i8> @bitcast_v8i32_to_v32i8_scalar(<8 x i32> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b32 s73, s17, 24
 ; SI-NEXT:    s_lshr_b32 s74, s17, 16
 ; SI-NEXT:    s_lshr_b32 s75, s17, 8
-; SI-NEXT:  .LBB25_3: ; %end
+; SI-NEXT:  .LBB25_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s44
 ; SI-NEXT:    v_mov_b32_e32 v2, s42
@@ -5610,38 +5897,12 @@ define inreg <32 x i8> @bitcast_v8i32_to_v32i8_scalar(<8 x i32> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v30, s57
 ; SI-NEXT:    v_mov_b32_e32 v31, s56
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB25_4:
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    s_branch .LBB25_2
 ;
 ; VI-LABEL: bitcast_v8i32_to_v32i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_4
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s14, s23, 24
 ; VI-NEXT:    s_lshr_b32 s15, s23, 16
@@ -5667,8 +5928,40 @@ define inreg <32 x i8> @bitcast_v8i32_to_v32i8_scalar(<8 x i32> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB25_3
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[12:13], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[12:13], -1
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr29
+; VI-NEXT:    ; implicit-def: $sgpr28
+; VI-NEXT:    ; implicit-def: $sgpr27
+; VI-NEXT:    ; implicit-def: $sgpr26
+; VI-NEXT:    ; implicit-def: $sgpr25
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr24
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_add_i32 s19, s19, 3
@@ -5701,7 +5994,7 @@ define inreg <32 x i8> @bitcast_v8i32_to_v32i8_scalar(<8 x i32> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s57, s17, 8
 ; VI-NEXT:    s_lshr_b32 s58, s16, 16
 ; VI-NEXT:    s_lshr_b32 s59, s16, 8
-; VI-NEXT:  .LBB25_3: ; %end
+; VI-NEXT:  .LBB25_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s59
 ; VI-NEXT:    v_mov_b32_e32 v2, s58
@@ -5735,38 +6028,12 @@ define inreg <32 x i8> @bitcast_v8i32_to_v32i8_scalar(<8 x i32> inreg %a, i32 in
 ; VI-NEXT:    v_mov_b32_e32 v30, s15
 ; VI-NEXT:    v_mov_b32_e32 v31, s14
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB25_4:
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr29
-; VI-NEXT:    ; implicit-def: $sgpr28
-; VI-NEXT:    ; implicit-def: $sgpr27
-; VI-NEXT:    ; implicit-def: $sgpr26
-; VI-NEXT:    ; implicit-def: $sgpr25
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr24
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    s_branch .LBB25_2
 ;
 ; GFX9-LABEL: bitcast_v8i32_to_v32i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s14, s23, 24
 ; GFX9-NEXT:    s_lshr_b32 s15, s23, 16
@@ -5792,8 +6059,40 @@ define inreg <32 x i8> @bitcast_v8i32_to_v32i8_scalar(<8 x i32> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[10:11], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_3
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[12:13], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[12:13], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr29
+; GFX9-NEXT:    ; implicit-def: $sgpr28
+; GFX9-NEXT:    ; implicit-def: $sgpr27
+; GFX9-NEXT:    ; implicit-def: $sgpr26
+; GFX9-NEXT:    ; implicit-def: $sgpr25
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr24
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
@@ -5826,7 +6125,7 @@ define inreg <32 x i8> @bitcast_v8i32_to_v32i8_scalar(<8 x i32> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b32 s57, s17, 8
 ; GFX9-NEXT:    s_lshr_b32 s58, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s16, 8
-; GFX9-NEXT:  .LBB25_3: ; %end
+; GFX9-NEXT:  .LBB25_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s59
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s58
@@ -5860,39 +6159,13 @@ define inreg <32 x i8> @bitcast_v8i32_to_v32i8_scalar(<8 x i32> inreg %a, i32 in
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s15
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s14
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB25_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr29
-; GFX9-NEXT:    ; implicit-def: $sgpr28
-; GFX9-NEXT:    ; implicit-def: $sgpr27
-; GFX9-NEXT:    ; implicit-def: $sgpr26
-; GFX9-NEXT:    ; implicit-def: $sgpr25
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr24
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    s_branch .LBB25_2
 ;
 ; GFX11-LABEL: bitcast_v8i32_to_v32i8_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s46, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s12, s19, 24
 ; GFX11-NEXT:    s_lshr_b32 s13, s19, 16
@@ -5918,9 +6191,40 @@ define inreg <32 x i8> @bitcast_v8i32_to_v32i8_scalar(<8 x i32> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[10:11], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s46
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_3
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB25_3
+; GFX11-NEXT:  .LBB25_2:
+; GFX11-NEXT:    s_mov_b32 s46, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr29
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:    ; implicit-def: $sgpr27
+; GFX11-NEXT:    ; implicit-def: $sgpr26
+; GFX11-NEXT:    ; implicit-def: $sgpr25
+; GFX11-NEXT:    ; implicit-def: $sgpr24
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr23
+; GFX11-NEXT:    ; implicit-def: $sgpr22
+; GFX11-NEXT:    ; implicit-def: $sgpr21
+; GFX11-NEXT:    ; implicit-def: $sgpr20
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:  .LBB25_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s46, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
@@ -5953,7 +6257,7 @@ define inreg <32 x i8> @bitcast_v8i32_to_v32i8_scalar(<8 x i32> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b32 s43, s1, 8
 ; GFX11-NEXT:    s_lshr_b32 s44, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s45, s0, 8
-; GFX11-NEXT:  .LBB25_3: ; %end
+; GFX11-NEXT:  .LBB25_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s45
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s44 :: v_dual_mov_b32 v3, s10
@@ -5972,32 +6276,6 @@ define inreg <32 x i8> @bitcast_v8i32_to_v32i8_scalar(<8 x i32> inreg %a, i32 in
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s19 :: v_dual_mov_b32 v29, s14
 ; GFX11-NEXT:    v_dual_mov_b32 v30, s13 :: v_dual_mov_b32 v31, s12
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB25_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr29
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    ; implicit-def: $sgpr27
-; GFX11-NEXT:    ; implicit-def: $sgpr26
-; GFX11-NEXT:    ; implicit-def: $sgpr25
-; GFX11-NEXT:    ; implicit-def: $sgpr24
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr23
-; GFX11-NEXT:    ; implicit-def: $sgpr22
-; GFX11-NEXT:    ; implicit-def: $sgpr21
-; GFX11-NEXT:    ; implicit-def: $sgpr20
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    s_branch .LBB25_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -6983,7 +7261,7 @@ define inreg <8 x i32> @bitcast_v32i8_to_v8i32_scalar(<32 x i8> inreg %a, i32 in
 ; SI-NEXT:    v_readfirstlane_b32 s62, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s63, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB27_4
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -7057,8 +7335,17 @@ define inreg <8 x i32> @bitcast_v32i8_to_v8i32_scalar(<32 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
 ; SI-NEXT:    s_or_b32 s12, s13, s12
 ; SI-NEXT:    s_or_b32 s11, s11, s12
-; SI-NEXT:    s_cbranch_execnz .LBB27_3
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -7163,7 +7450,7 @@ define inreg <8 x i32> @bitcast_v32i8_to_v8i32_scalar(<32 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_add_i32 s9, s9, 0x3000000
 ; SI-NEXT:    s_add_i32 s10, s10, 0x3000000
 ; SI-NEXT:    s_add_i32 s11, s11, 0x3000000
-; SI-NEXT:  .LBB27_3: ; %end
+; SI-NEXT:  .LBB27_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -7173,9 +7460,6 @@ define inreg <8 x i32> @bitcast_v32i8_to_v8i32_scalar(<32 x i8> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v6, s10
 ; SI-NEXT:    v_mov_b32_e32 v7, s11
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB27_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
-; SI-NEXT:    s_branch .LBB27_2
 ;
 ; VI-LABEL: bitcast_v32i8_to_v8i32_scalar:
 ; VI:       ; %bb.0:
@@ -7200,7 +7484,7 @@ define inreg <8 x i32> @bitcast_v32i8_to_v8i32_scalar(<32 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_4
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -7251,8 +7535,17 @@ define inreg <8 x i32> @bitcast_v32i8_to_v8i32_scalar(<32 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_perm_b32 v7, s7, v9, v7
 ; VI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    s_cbranch_execnz .LBB27_3
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
@@ -7334,11 +7627,8 @@ define inreg <8 x i32> @bitcast_v32i8_to_v8i32_scalar(<32 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_add_u32_e32 v5, vcc, 0x3000000, v5
 ; VI-NEXT:    v_add_u32_e32 v6, vcc, 0x3000000, v6
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, 0x3000000, v7
-; VI-NEXT:  .LBB27_3: ; %end
+; VI-NEXT:  .LBB27_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB27_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; VI-NEXT:    s_branch .LBB27_2
 ;
 ; GFX9-LABEL: bitcast_v32i8_to_v8i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -7363,7 +7653,7 @@ define inreg <8 x i32> @bitcast_v32i8_to_v8i32_scalar(<32 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -7414,8 +7704,17 @@ define inreg <8 x i32> @bitcast_v32i8_to_v8i32_scalar(<32 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_perm_b32 v7, s7, v9, v7
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; GFX9-NEXT:    v_or_b32_e32 v7, v8, v7
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_3
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
@@ -7490,11 +7789,8 @@ define inreg <8 x i32> @bitcast_v32i8_to_v8i32_scalar(<32 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_add_u32_e32 v8, 0x300, v8
 ; GFX9-NEXT:    v_add_u32_sdwa v7, v7, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v7, v8, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB27_3: ; %end
+; GFX9-NEXT:  .LBB27_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB27_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX9-NEXT:    s_branch .LBB27_2
 ;
 ; GFX11-LABEL: bitcast_v32i8_to_v8i32_scalar:
 ; GFX11:       ; %bb.0:
@@ -7516,7 +7812,7 @@ define inreg <8 x i32> @bitcast_v32i8_to_v8i32_scalar(<32 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
@@ -7552,9 +7848,17 @@ define inreg <8 x i32> @bitcast_v32i8_to_v8i32_scalar(<32 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    v_or_b32_e32 v5, v10, v6
 ; GFX11-NEXT:    v_or_b32_e32 v6, v12, v9
 ; GFX11-NEXT:    v_or_b32_e32 v7, v13, v11
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_3
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB27_3
+; GFX11-NEXT:  .LBB27_2:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX11-NEXT:  .LBB27_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
@@ -7628,11 +7932,8 @@ define inreg <8 x i32> @bitcast_v32i8_to_v8i32_scalar(<32 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    v_or_b32_e32 v5, v8, v9
 ; GFX11-NEXT:    v_or_b32_e32 v6, v10, v11
 ; GFX11-NEXT:    v_or_b32_e32 v7, v12, v13
-; GFX11-NEXT:  .LBB27_3: ; %end
+; GFX11-NEXT:  .LBB27_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB27_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX11-NEXT:    s_branch .LBB27_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -7749,10 +8050,18 @@ define inreg <4 x i64> @bitcast_v8f32_to_v4i64_scalar(<8 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; SI-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -7762,9 +8071,7 @@ define inreg <4 x i64> @bitcast_v8f32_to_v4i64_scalar(<8 x float> inreg %a, i32
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7779,10 +8086,18 @@ define inreg <4 x i64> @bitcast_v8f32_to_v4i64_scalar(<8 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; VI-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; VI-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -7792,9 +8107,7 @@ define inreg <4 x i64> @bitcast_v8f32_to_v4i64_scalar(<8 x float> inreg %a, i32
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7809,10 +8122,18 @@ define inreg <4 x i64> @bitcast_v8f32_to_v4i64_scalar(<8 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -7822,9 +8143,7 @@ define inreg <4 x i64> @bitcast_v8f32_to_v4i64_scalar(<8 x float> inreg %a, i32
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -7844,11 +8163,16 @@ define inreg <4 x i64> @bitcast_v8f32_to_v4i64_scalar(<8 x float> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB29_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB29_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v7, s7, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v6, s6, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v5, s5, 1.0
@@ -7858,8 +8182,6 @@ define inreg <4 x i64> @bitcast_v8f32_to_v4i64_scalar(<8 x float> inreg %a, i32
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB29_3:
-; GFX11-NEXT:    s_branch .LBB29_2
 ; GFX11-NEXT:  .LBB29_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -7989,10 +8311,18 @@ define inreg <8 x float> @bitcast_v4i64_to_v8f32_scalar(<4 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_4
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB31_3
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s22, s22, 3
 ; SI-NEXT:    s_addc_u32 s23, s23, 0
 ; SI-NEXT:    s_add_u32 s20, s20, 3
@@ -8001,7 +8331,7 @@ define inreg <8 x float> @bitcast_v4i64_to_v8f32_scalar(<4 x i64> inreg %a, i32
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB31_3: ; %end
+; SI-NEXT:  .LBB31_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8011,17 +8341,23 @@ define inreg <8 x float> @bitcast_v4i64_to_v8f32_scalar(<4 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s22
 ; SI-NEXT:    v_mov_b32_e32 v7, s23
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_4:
-; SI-NEXT:    s_branch .LBB31_2
 ;
 ; VI-LABEL: bitcast_v4i64_to_v8f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_4
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB31_3
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s22, s22, 3
 ; VI-NEXT:    s_addc_u32 s23, s23, 0
 ; VI-NEXT:    s_add_u32 s20, s20, 3
@@ -8030,7 +8366,7 @@ define inreg <8 x float> @bitcast_v4i64_to_v8f32_scalar(<4 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB31_3: ; %end
+; VI-NEXT:  .LBB31_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8040,17 +8376,23 @@ define inreg <8 x float> @bitcast_v4i64_to_v8f32_scalar(<4 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_4:
-; VI-NEXT:    s_branch .LBB31_2
 ;
 ; GFX9-LABEL: bitcast_v4i64_to_v8f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_3
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s22, s22, 3
 ; GFX9-NEXT:    s_addc_u32 s23, s23, 0
 ; GFX9-NEXT:    s_add_u32 s20, s20, 3
@@ -8059,7 +8401,7 @@ define inreg <8 x float> @bitcast_v4i64_to_v8f32_scalar(<4 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB31_3: ; %end
+; GFX9-NEXT:  .LBB31_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -8069,19 +8411,22 @@ define inreg <8 x float> @bitcast_v4i64_to_v8f32_scalar(<4 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s23
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB31_4:
-; GFX9-NEXT:    s_branch .LBB31_2
 ;
 ; GFX11-LABEL: bitcast_v4i64_to_v8f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_3
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s18, s18, 3
 ; GFX11-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX11-NEXT:    s_add_u32 s16, s16, 3
@@ -8090,15 +8435,13 @@ define inreg <8 x float> @bitcast_v4i64_to_v8f32_scalar(<4 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB31_3: ; %end
+; GFX11-NEXT:  .LBB31_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_4:
-; GFX11-NEXT:    s_branch .LBB31_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -8215,10 +8558,18 @@ define inreg <4 x double> @bitcast_v8f32_to_v4f64_scalar(<8 x float> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; SI-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -8228,9 +8579,7 @@ define inreg <4 x double> @bitcast_v8f32_to_v4f64_scalar(<8 x float> inreg %a, i
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8245,10 +8594,18 @@ define inreg <4 x double> @bitcast_v8f32_to_v4f64_scalar(<8 x float> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; VI-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; VI-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -8258,9 +8615,7 @@ define inreg <4 x double> @bitcast_v8f32_to_v4f64_scalar(<8 x float> inreg %a, i
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8275,10 +8630,18 @@ define inreg <4 x double> @bitcast_v8f32_to_v4f64_scalar(<8 x float> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -8288,9 +8651,7 @@ define inreg <4 x double> @bitcast_v8f32_to_v4f64_scalar(<8 x float> inreg %a, i
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -8310,11 +8671,16 @@ define inreg <4 x double> @bitcast_v8f32_to_v4f64_scalar(<8 x float> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB33_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB33_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v7, s7, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v6, s6, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v5, s5, 1.0
@@ -8324,8 +8690,6 @@ define inreg <4 x double> @bitcast_v8f32_to_v4f64_scalar(<8 x float> inreg %a, i
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB33_3:
-; GFX11-NEXT:    s_branch .LBB33_2
 ; GFX11-NEXT:  .LBB33_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -8439,18 +8803,24 @@ define inreg <8 x float> @bitcast_v4f64_to_v8f32_scalar(<4 x double> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_3
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB35_4
-; SI-NEXT:  .LBB35_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB35_3:
-; SI-NEXT:    s_branch .LBB35_2
-; SI-NEXT:  .LBB35_4:
+; SI-NEXT:  .LBB35_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8465,18 +8835,24 @@ define inreg <8 x float> @bitcast_v4f64_to_v8f32_scalar(<4 x double> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8491,18 +8867,24 @@ define inreg <8 x float> @bitcast_v4f64_to_v8f32_scalar(<4 x double> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -8522,18 +8904,21 @@ define inreg <8 x float> @bitcast_v4f64_to_v8f32_scalar(<4 x double> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[6:7], s[6:7], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[4:5], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -8707,7 +9092,7 @@ define inreg <16 x i16> @bitcast_v8f32_to_v16i16_scalar(<8 x float> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_3
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s25, s23, 16
 ; SI-NEXT:    s_lshr_b32 s24, s21, 16
@@ -8717,8 +9102,24 @@ define inreg <16 x i16> @bitcast_v8f32_to_v16i16_scalar(<8 x float> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB37_4
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; SI-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -8735,18 +9136,8 @@ define inreg <16 x i16> @bitcast_v8f32_to_v16i16_scalar(<8 x float> inreg %a, i3
 ; SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v1
-; SI-NEXT:    s_branch .LBB37_5
-; SI-NEXT:  .LBB37_3:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    s_branch .LBB37_2
-; SI-NEXT:  .LBB37_4:
+; SI-NEXT:    s_branch .LBB37_6
+; SI-NEXT:  .LBB37_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8763,7 +9154,7 @@ define inreg <16 x i16> @bitcast_v8f32_to_v16i16_scalar(<8 x float> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v9, s6
 ; SI-NEXT:    v_mov_b32_e32 v10, s8
 ; SI-NEXT:    v_mov_b32_e32 v11, s10
-; SI-NEXT:  .LBB37_5: ; %end
+; SI-NEXT:  .LBB37_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -8794,10 +9185,18 @@ define inreg <16 x i16> @bitcast_v8f32_to_v16i16_scalar(<8 x float> inreg %a, i3
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_3
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_4
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; VI-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; VI-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -8807,9 +9206,7 @@ define inreg <16 x i16> @bitcast_v8f32_to_v16i16_scalar(<8 x float> inreg %a, i3
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_3:
-; VI-NEXT:    s_branch .LBB37_2
-; VI-NEXT:  .LBB37_4:
+; VI-NEXT:  .LBB37_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8824,10 +9221,18 @@ define inreg <16 x i16> @bitcast_v8f32_to_v16i16_scalar(<8 x float> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_4
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -8837,9 +9242,7 @@ define inreg <16 x i16> @bitcast_v8f32_to_v16i16_scalar(<8 x float> inreg %a, i3
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_3:
-; GFX9-NEXT:    s_branch .LBB37_2
-; GFX9-NEXT:  .LBB37_4:
+; GFX9-NEXT:  .LBB37_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -8859,11 +9262,16 @@ define inreg <16 x i16> @bitcast_v8f32_to_v16i16_scalar(<8 x float> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_4
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v7, s7, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v6, s6, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v5, s5, 1.0
@@ -8873,8 +9281,6 @@ define inreg <16 x i16> @bitcast_v8f32_to_v16i16_scalar(<8 x float> inreg %a, i3
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_3:
-; GFX11-NEXT:    s_branch .LBB37_2
 ; GFX11-NEXT:  .LBB37_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -9118,7 +9524,7 @@ define inreg <8 x float> @bitcast_v16i16_to_v8f32_scalar(<16 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s29, s17, 16
 ; SI-NEXT:    s_lshr_b32 s40, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_4
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s40, 16
@@ -9144,8 +9550,17 @@ define inreg <8 x float> @bitcast_v16i16_to_v8f32_scalar(<16 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s11, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s14, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s12
-; SI-NEXT:    s_cbranch_execnz .LBB39_3
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s40, 16
@@ -9186,7 +9601,7 @@ define inreg <8 x float> @bitcast_v16i16_to_v8f32_scalar(<16 x i16> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s9, s9, 0x30000
 ; SI-NEXT:    s_add_i32 s10, s10, 0x30000
 ; SI-NEXT:    s_add_i32 s11, s11, 0x30000
-; SI-NEXT:  .LBB39_3: ; %end
+; SI-NEXT:  .LBB39_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -9196,18 +9611,23 @@ define inreg <8 x float> @bitcast_v16i16_to_v8f32_scalar(<16 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v6, s10
 ; SI-NEXT:    v_mov_b32_e32 v7, s11
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB39_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
-; SI-NEXT:    s_branch .LBB39_2
 ;
 ; VI-LABEL: bitcast_v16i16_to_v8f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_4
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_3
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s23, 3
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -9248,7 +9668,7 @@ define inreg <8 x float> @bitcast_v16i16_to_v8f32_scalar(<16 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB39_3: ; %end
+; VI-NEXT:  .LBB39_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -9258,17 +9678,23 @@ define inreg <8 x float> @bitcast_v16i16_to_v8f32_scalar(<16 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB39_4:
-; VI-NEXT:    s_branch .LBB39_2
 ;
 ; GFX9-LABEL: bitcast_v16i16_to_v8f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_4
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v7, s23, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v6, s22, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v5, s21, 3 op_sel_hi:[1,0]
@@ -9278,9 +9704,7 @@ define inreg <8 x float> @bitcast_v16i16_to_v8f32_scalar(<16 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB39_3:
-; GFX9-NEXT:    s_branch .LBB39_2
-; GFX9-NEXT:  .LBB39_4:
+; GFX9-NEXT:  .LBB39_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -9300,11 +9724,16 @@ define inreg <8 x float> @bitcast_v16i16_to_v8f32_scalar(<16 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v7, s7, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v6, s6, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v5, s5, 3 op_sel_hi:[1,0]
@@ -9314,8 +9743,6 @@ define inreg <8 x float> @bitcast_v16i16_to_v8f32_scalar(<16 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB39_3:
-; GFX11-NEXT:    s_branch .LBB39_2
 ; GFX11-NEXT:  .LBB39_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -9489,7 +9916,7 @@ define inreg <16 x half> @bitcast_v8f32_to_v16f16_scalar(<8 x float> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_3
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s25, s23, 16
 ; SI-NEXT:    s_lshr_b32 s24, s21, 16
@@ -9499,8 +9926,24 @@ define inreg <16 x half> @bitcast_v8f32_to_v16f16_scalar(<8 x float> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB41_4
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; SI-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -9517,18 +9960,8 @@ define inreg <16 x half> @bitcast_v8f32_to_v16f16_scalar(<8 x float> inreg %a, i
 ; SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v1
-; SI-NEXT:    s_branch .LBB41_5
-; SI-NEXT:  .LBB41_3:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    s_branch .LBB41_2
-; SI-NEXT:  .LBB41_4:
+; SI-NEXT:    s_branch .LBB41_6
+; SI-NEXT:  .LBB41_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -9545,7 +9978,7 @@ define inreg <16 x half> @bitcast_v8f32_to_v16f16_scalar(<8 x float> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v9, s6
 ; SI-NEXT:    v_mov_b32_e32 v10, s8
 ; SI-NEXT:    v_mov_b32_e32 v11, s10
-; SI-NEXT:  .LBB41_5: ; %end
+; SI-NEXT:  .LBB41_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -9576,10 +10009,18 @@ define inreg <16 x half> @bitcast_v8f32_to_v16f16_scalar(<8 x float> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_3
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB41_4
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; VI-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; VI-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -9589,9 +10030,7 @@ define inreg <16 x half> @bitcast_v8f32_to_v16f16_scalar(<8 x float> inreg %a, i
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_3:
-; VI-NEXT:    s_branch .LBB41_2
-; VI-NEXT:  .LBB41_4:
+; VI-NEXT:  .LBB41_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -9606,10 +10045,18 @@ define inreg <16 x half> @bitcast_v8f32_to_v16f16_scalar(<8 x float> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_4
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -9619,9 +10066,7 @@ define inreg <16 x half> @bitcast_v8f32_to_v16f16_scalar(<8 x float> inreg %a, i
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_3:
-; GFX9-NEXT:    s_branch .LBB41_2
-; GFX9-NEXT:  .LBB41_4:
+; GFX9-NEXT:  .LBB41_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -9641,11 +10086,16 @@ define inreg <16 x half> @bitcast_v8f32_to_v16f16_scalar(<8 x float> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_4
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB41_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v7, s7, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v6, s6, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v5, s5, 1.0
@@ -9655,8 +10105,6 @@ define inreg <16 x half> @bitcast_v8f32_to_v16f16_scalar(<8 x float> inreg %a, i
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_3:
-; GFX11-NEXT:    s_branch .LBB41_2
 ; GFX11-NEXT:  .LBB41_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -9932,7 +10380,7 @@ define inreg <8 x float> @bitcast_v16f16_to_v8f32_scalar(<16 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s29, s17, 16
 ; SI-NEXT:    s_lshr_b32 s40, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_3
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s40, 16
@@ -9958,8 +10406,17 @@ define inreg <8 x float> @bitcast_v16f16_to_v8f32_scalar(<16 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s11, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s14, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s12
-; SI-NEXT:    s_cbranch_execnz .LBB43_4
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s40
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s29
@@ -10025,10 +10482,7 @@ define inreg <8 x float> @bitcast_v16f16_to_v8f32_scalar(<16 x half> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v8
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB43_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
-; SI-NEXT:    s_branch .LBB43_2
-; SI-NEXT:  .LBB43_4:
+; SI-NEXT:  .LBB43_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -10043,10 +10497,18 @@ define inreg <8 x float> @bitcast_v16f16_to_v8f32_scalar(<16 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_3
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB43_4
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s23, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -10089,9 +10551,7 @@ define inreg <8 x float> @bitcast_v16f16_to_v8f32_scalar(<16 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v8
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_3:
-; VI-NEXT:    s_branch .LBB43_2
-; VI-NEXT:  .LBB43_4:
+; VI-NEXT:  .LBB43_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -10106,10 +10566,18 @@ define inreg <8 x float> @bitcast_v16f16_to_v8f32_scalar(<16 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v7, s23, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v6, s22, v0 op_sel_hi:[1,0]
@@ -10120,9 +10588,7 @@ define inreg <8 x float> @bitcast_v16f16_to_v8f32_scalar(<16 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -10142,11 +10608,16 @@ define inreg <8 x float> @bitcast_v16f16_to_v8f32_scalar(<16 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB43_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v7, 0x200, s7 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v6, 0x200, s6 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v5, 0x200, s5 op_sel_hi:[0,1]
@@ -10156,8 +10627,6 @@ define inreg <8 x float> @bitcast_v16f16_to_v8f32_scalar(<16 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_3:
-; GFX11-NEXT:    s_branch .LBB43_2
 ; GFX11-NEXT:  .LBB43_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -10372,7 +10841,7 @@ define inreg <16 x bfloat> @bitcast_v8f32_to_v16bf16_scalar(<8 x float> inreg %a
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_3
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s6, s23, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s7, s23, 16
@@ -10390,8 +10859,32 @@ define inreg <16 x bfloat> @bitcast_v8f32_to_v16bf16_scalar(<8 x float> inreg %a
 ; SI-NEXT:    s_lshl_b32 s27, s17, 16
 ; SI-NEXT:    s_and_b32 s28, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s29, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB45_4
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
@@ -10416,26 +10909,8 @@ define inreg <16 x bfloat> @bitcast_v8f32_to_v16bf16_scalar(<8 x float> inreg %a
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v1
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
-; SI-NEXT:    s_branch .LBB45_5
-; SI-NEXT:  .LBB45_3:
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB45_2
-; SI-NEXT:  .LBB45_4:
+; SI-NEXT:    s_branch .LBB45_6
+; SI-NEXT:  .LBB45_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s29
 ; SI-NEXT:    v_mov_b32_e32 v1, s28
 ; SI-NEXT:    v_mov_b32_e32 v2, s27
@@ -10452,7 +10927,7 @@ define inreg <16 x bfloat> @bitcast_v8f32_to_v16bf16_scalar(<8 x float> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v10, s8
 ; SI-NEXT:    v_mov_b32_e32 v8, s7
 ; SI-NEXT:    v_mov_b32_e32 v9, s6
-; SI-NEXT:  .LBB45_5: ; %end
+; SI-NEXT:  .LBB45_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
@@ -10491,10 +10966,18 @@ define inreg <16 x bfloat> @bitcast_v8f32_to_v16bf16_scalar(<8 x float> inreg %a
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_3
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB45_4
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; VI-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; VI-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -10504,9 +10987,7 @@ define inreg <16 x bfloat> @bitcast_v8f32_to_v16bf16_scalar(<8 x float> inreg %a
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_3:
-; VI-NEXT:    s_branch .LBB45_2
-; VI-NEXT:  .LBB45_4:
+; VI-NEXT:  .LBB45_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -10521,10 +11002,18 @@ define inreg <16 x bfloat> @bitcast_v8f32_to_v16bf16_scalar(<8 x float> inreg %a
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_4
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v6, s22, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v5, s21, 1.0
@@ -10534,9 +11023,7 @@ define inreg <16 x bfloat> @bitcast_v8f32_to_v16bf16_scalar(<8 x float> inreg %a
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_3:
-; GFX9-NEXT:    s_branch .LBB45_2
-; GFX9-NEXT:  .LBB45_4:
+; GFX9-NEXT:  .LBB45_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -10556,11 +11043,16 @@ define inreg <16 x bfloat> @bitcast_v8f32_to_v16bf16_scalar(<8 x float> inreg %a
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_4
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB45_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v7, s7, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v6, s6, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v5, s5, 1.0
@@ -10570,8 +11062,6 @@ define inreg <16 x bfloat> @bitcast_v8f32_to_v16bf16_scalar(<8 x float> inreg %a
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_3:
-; GFX11-NEXT:    s_branch .LBB45_2
 ; GFX11-NEXT:  .LBB45_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -11376,7 +11866,7 @@ define inreg <8 x float> @bitcast_v16bf16_to_v8f32_scalar(<16 x bfloat> inreg %a
 ; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB47_4
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v32
 ; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v31
@@ -11394,8 +11884,17 @@ define inreg <8 x float> @bitcast_v16bf16_to_v8f32_scalar(<16 x bfloat> inreg %a
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[11:12], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v25
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[9:10], 16
-; SI-NEXT:    s_cbranch_execnz .LBB47_3
-; SI-NEXT:  .LBB47_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v32
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v23
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -11444,20 +11943,25 @@ define inreg <8 x float> @bitcast_v16bf16_to_v8f32_scalar(<16 x bfloat> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v7, 0x40c00000, v7
 ; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[7:8], 16
-; SI-NEXT:  .LBB47_3: ; %end
+; SI-NEXT:  .LBB47_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB47_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; SI-NEXT:    s_branch .LBB47_2
 ;
 ; VI-LABEL: bitcast_v16bf16_to_v8f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s23, 16
 ; VI-NEXT:    v_mov_b32_e32 v8, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v8
@@ -11607,9 +12111,7 @@ define inreg <8 x float> @bitcast_v16bf16_to_v8f32_scalar(<16 x bfloat> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v3, v9
 ; VI-NEXT:    v_mov_b32_e32 v5, v8
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -11624,10 +12126,18 @@ define inreg <8 x float> @bitcast_v16bf16_to_v8f32_scalar(<16 x bfloat> inreg %a
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s23, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -11783,9 +12293,7 @@ define inreg <8 x float> @bitcast_v16bf16_to_v8f32_scalar(<16 x bfloat> inreg %a
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v8, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v9, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -11805,11 +12313,16 @@ define inreg <8 x float> @bitcast_v16bf16_to_v8f32_scalar(<16 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-TRUE16-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-TRUE16-NEXT:  .LBB47_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s8, s7, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s7, s7, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s8
@@ -11968,8 +12481,6 @@ define inreg <8 x float> @bitcast_v16bf16_to_v8f32_scalar(<16 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v10
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v9.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB47_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB47_2
 ; GFX11-TRUE16-NEXT:  .LBB47_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -11986,11 +12497,16 @@ define inreg <8 x float> @bitcast_v16bf16_to_v8f32_scalar(<16 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-FAKE16-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-FAKE16-NEXT:  .LBB47_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s8, s7, 16
 ; GFX11-FAKE16-NEXT:    s_and_b32 s7, s7, 0xffff0000
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s8
@@ -12166,8 +12682,6 @@ define inreg <8 x float> @bitcast_v16bf16_to_v8f32_scalar(<16 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v12, 16, v9
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB47_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB47_2
 ; GFX11-FAKE16-NEXT:  .LBB47_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -12737,7 +13251,7 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_3
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s72, s23, 24
 ; SI-NEXT:    s_lshr_b32 s74, s23, 16
@@ -12763,8 +13277,40 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB49_4
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[46:47], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[46:47], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v39, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v38, s16, 1.0
 ; SI-NEXT:    v_add_f32_e64 v49, s23, 1.0
@@ -12797,34 +13343,8 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v39
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v39
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 8, v39
-; SI-NEXT:    s_branch .LBB49_5
-; SI-NEXT:  .LBB49_3:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    s_branch .LBB49_2
-; SI-NEXT:  .LBB49_4:
+; SI-NEXT:    s_branch .LBB49_6
+; SI-NEXT:  .LBB49_5:
 ; SI-NEXT:    v_mov_b32_e32 v38, s16
 ; SI-NEXT:    v_mov_b32_e32 v39, s17
 ; SI-NEXT:    v_mov_b32_e32 v34, s18
@@ -12857,7 +13377,7 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v3, s4
 ; SI-NEXT:    v_mov_b32_e32 v0, s6
 ; SI-NEXT:    v_mov_b32_e32 v1, s8
-; SI-NEXT:  .LBB49_5: ; %end
+; SI-NEXT:  .LBB49_6: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v2, v0
 ; SI-NEXT:    v_mov_b32_e32 v0, v38
 ; SI-NEXT:    v_mov_b32_e32 v4, v39
@@ -12876,7 +13396,7 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_3
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s14, s23, 24
 ; VI-NEXT:    s_lshr_b32 s15, s23, 16
@@ -12902,8 +13422,40 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB49_4
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[12:13], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[12:13], -1
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr29
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr28
+; VI-NEXT:    ; implicit-def: $sgpr27
+; VI-NEXT:    ; implicit-def: $sgpr26
+; VI-NEXT:    ; implicit-def: $sgpr24
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr25
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    v_add_f32_e64 v9, s19, 1.0
@@ -12936,34 +13488,8 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; VI-NEXT:    v_lshrrev_b32_e32 v5, 8, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; VI-NEXT:    v_lshrrev_b32_e32 v35, 8, v0
-; VI-NEXT:    s_branch .LBB49_5
-; VI-NEXT:  .LBB49_3:
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr29
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr28
-; VI-NEXT:    ; implicit-def: $sgpr27
-; VI-NEXT:    ; implicit-def: $sgpr26
-; VI-NEXT:    ; implicit-def: $sgpr24
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr25
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    s_branch .LBB49_2
-; VI-NEXT:  .LBB49_4:
+; VI-NEXT:    s_branch .LBB49_6
+; VI-NEXT:  .LBB49_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v8, s18
@@ -12996,7 +13522,7 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v19, s8
 ; VI-NEXT:    v_mov_b32_e32 v11, s6
 ; VI-NEXT:    v_mov_b32_e32 v3, s4
-; VI-NEXT:  .LBB49_5: ; %end
+; VI-NEXT:  .LBB49_6: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v4, v1
 ; VI-NEXT:    v_mov_b32_e32 v12, v9
 ; VI-NEXT:    v_mov_b32_e32 v20, v17
@@ -13011,7 +13537,7 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s14, s23, 24
 ; GFX9-NEXT:    s_lshr_b32 s15, s23, 16
@@ -13037,8 +13563,40 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[12:13], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[12:13], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr29
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr28
+; GFX9-NEXT:    ; implicit-def: $sgpr27
+; GFX9-NEXT:    ; implicit-def: $sgpr26
+; GFX9-NEXT:    ; implicit-def: $sgpr24
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr25
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v9, s19, 1.0
@@ -13071,34 +13629,8 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v35, 8, v0
-; GFX9-NEXT:    s_branch .LBB49_5
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr29
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr28
-; GFX9-NEXT:    ; implicit-def: $sgpr27
-; GFX9-NEXT:    ; implicit-def: $sgpr26
-; GFX9-NEXT:    ; implicit-def: $sgpr24
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr25
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:    s_branch .LBB49_6
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s18
@@ -13131,7 +13663,7 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:  .LBB49_5: ; %end
+; GFX9-NEXT:  .LBB49_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v1
 ; GFX9-NEXT:    v_mov_b32_e32 v12, v9
 ; GFX9-NEXT:    v_mov_b32_e32 v20, v17
@@ -13147,7 +13679,7 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s12, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s13, s19, 24
 ; GFX11-NEXT:    s_lshr_b32 s14, s19, 16
@@ -13173,43 +13705,9 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-NEXT:  .LBB49_2: ; %cmp.true
-; GFX11-NEXT:    v_add_f32_e64 v39, s1, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v37, s3, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v35, s17, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v33, s19, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v32, s18, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v34, s16, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v36, s2, 1.0
-; GFX11-NEXT:    v_add_f32_e64 v38, s0, 1.0
-; GFX11-NEXT:    v_lshrrev_b32_e32 v31, 24, v33
-; GFX11-NEXT:    v_lshrrev_b64 v[27:28], 24, v[32:33]
-; GFX11-NEXT:    v_lshrrev_b64 v[19:20], 24, v[34:35]
-; GFX11-NEXT:    v_lshrrev_b64 v[11:12], 24, v[36:37]
-; GFX11-NEXT:    v_lshrrev_b64 v[3:4], 24, v[38:39]
-; GFX11-NEXT:    v_lshrrev_b32_e32 v30, 16, v33
-; GFX11-NEXT:    v_lshrrev_b32_e32 v29, 8, v33
-; GFX11-NEXT:    v_lshrrev_b32_e32 v26, 16, v32
-; GFX11-NEXT:    v_lshrrev_b32_e32 v25, 8, v32
-; GFX11-NEXT:    v_lshrrev_b32_e32 v23, 24, v35
-; GFX11-NEXT:    v_lshrrev_b32_e32 v22, 16, v35
-; GFX11-NEXT:    v_lshrrev_b32_e32 v21, 8, v35
-; GFX11-NEXT:    v_lshrrev_b32_e32 v18, 16, v34
-; GFX11-NEXT:    v_lshrrev_b32_e32 v17, 8, v34
-; GFX11-NEXT:    v_lshrrev_b32_e32 v15, 24, v37
-; GFX11-NEXT:    v_lshrrev_b32_e32 v14, 16, v37
-; GFX11-NEXT:    v_lshrrev_b32_e32 v13, 8, v37
-; GFX11-NEXT:    v_lshrrev_b32_e32 v10, 16, v36
-; GFX11-NEXT:    v_lshrrev_b32_e32 v9, 8, v36
-; GFX11-NEXT:    v_lshrrev_b32_e32 v7, 24, v39
-; GFX11-NEXT:    v_lshrrev_b32_e32 v6, 16, v39
-; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v39
-; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v38
-; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v38
-; GFX11-NEXT:    s_branch .LBB49_5
-; GFX11-NEXT:  .LBB49_3:
+; GFX11-NEXT:    s_branch .LBB49_3
+; GFX11-NEXT:  .LBB49_2:
+; GFX11-NEXT:    s_mov_b32 s12, -1
 ; GFX11-NEXT:    ; implicit-def: $sgpr46
 ; GFX11-NEXT:    ; implicit-def: $sgpr44
 ; GFX11-NEXT:    ; implicit-def: $sgpr4
@@ -13234,8 +13732,47 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; GFX11-NEXT:    ; implicit-def: $sgpr20
 ; GFX11-NEXT:    ; implicit-def: $sgpr14
 ; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    s_branch .LBB49_2
-; GFX11-NEXT:  .LBB49_4:
+; GFX11-NEXT:  .LBB49_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s12, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
+; GFX11-NEXT:    v_add_f32_e64 v39, s1, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v37, s3, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v35, s17, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v33, s19, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v32, s18, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v34, s16, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v36, s2, 1.0
+; GFX11-NEXT:    v_add_f32_e64 v38, s0, 1.0
+; GFX11-NEXT:    v_lshrrev_b32_e32 v31, 24, v33
+; GFX11-NEXT:    v_lshrrev_b64 v[27:28], 24, v[32:33]
+; GFX11-NEXT:    v_lshrrev_b64 v[19:20], 24, v[34:35]
+; GFX11-NEXT:    v_lshrrev_b64 v[11:12], 24, v[36:37]
+; GFX11-NEXT:    v_lshrrev_b64 v[3:4], 24, v[38:39]
+; GFX11-NEXT:    v_lshrrev_b32_e32 v30, 16, v33
+; GFX11-NEXT:    v_lshrrev_b32_e32 v29, 8, v33
+; GFX11-NEXT:    v_lshrrev_b32_e32 v26, 16, v32
+; GFX11-NEXT:    v_lshrrev_b32_e32 v25, 8, v32
+; GFX11-NEXT:    v_lshrrev_b32_e32 v23, 24, v35
+; GFX11-NEXT:    v_lshrrev_b32_e32 v22, 16, v35
+; GFX11-NEXT:    v_lshrrev_b32_e32 v21, 8, v35
+; GFX11-NEXT:    v_lshrrev_b32_e32 v18, 16, v34
+; GFX11-NEXT:    v_lshrrev_b32_e32 v17, 8, v34
+; GFX11-NEXT:    v_lshrrev_b32_e32 v15, 24, v37
+; GFX11-NEXT:    v_lshrrev_b32_e32 v14, 16, v37
+; GFX11-NEXT:    v_lshrrev_b32_e32 v13, 8, v37
+; GFX11-NEXT:    v_lshrrev_b32_e32 v10, 16, v36
+; GFX11-NEXT:    v_lshrrev_b32_e32 v9, 8, v36
+; GFX11-NEXT:    v_lshrrev_b32_e32 v7, 24, v39
+; GFX11-NEXT:    v_lshrrev_b32_e32 v6, 16, v39
+; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v39
+; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v38
+; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v38
+; GFX11-NEXT:    s_branch .LBB49_6
+; GFX11-NEXT:  .LBB49_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v38, s0 :: v_dual_mov_b32 v39, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v36, s2 :: v_dual_mov_b32 v37, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v34, s16 :: v_dual_mov_b32 v35, s17
@@ -13256,7 +13793,7 @@ define inreg <32 x i8> @bitcast_v8f32_to_v32i8_scalar(<8 x float> inreg %a, i32
 ; GFX11-NEXT:    v_mov_b32_e32 v19, s8
 ; GFX11-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX11-NEXT:    v_mov_b32_e32 v3, s4
-; GFX11-NEXT:  .LBB49_5: ; %end
+; GFX11-NEXT:  .LBB49_6: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v0, v38
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v39
 ; GFX11-NEXT:    v_mov_b32_e32 v8, v36
@@ -14251,7 +14788,7 @@ define inreg <8 x float> @bitcast_v32i8_to_v8f32_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s62, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s63, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -14325,8 +14862,17 @@ define inreg <8 x float> @bitcast_v32i8_to_v8f32_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
 ; SI-NEXT:    s_or_b32 s12, s13, s12
 ; SI-NEXT:    s_or_b32 s11, s11, s12
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -14431,7 +14977,7 @@ define inreg <8 x float> @bitcast_v32i8_to_v8f32_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s9, s9, 0x3000000
 ; SI-NEXT:    s_add_i32 s10, s10, 0x3000000
 ; SI-NEXT:    s_add_i32 s11, s11, 0x3000000
-; SI-NEXT:  .LBB51_3: ; %end
+; SI-NEXT:  .LBB51_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -14441,9 +14987,6 @@ define inreg <8 x float> @bitcast_v32i8_to_v8f32_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s10
 ; SI-NEXT:    v_mov_b32_e32 v7, s11
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v32i8_to_v8f32_scalar:
 ; VI:       ; %bb.0:
@@ -14468,7 +15011,7 @@ define inreg <8 x float> @bitcast_v32i8_to_v8f32_scalar(<32 x i8> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -14519,8 +15062,17 @@ define inreg <8 x float> @bitcast_v32i8_to_v8f32_scalar(<32 x i8> inreg %a, i32
 ; VI-NEXT:    v_perm_b32 v7, s7, v9, v7
 ; VI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
@@ -14602,11 +15154,8 @@ define inreg <8 x float> @bitcast_v32i8_to_v8f32_scalar(<32 x i8> inreg %a, i32
 ; VI-NEXT:    v_add_u32_e32 v5, vcc, 0x3000000, v5
 ; VI-NEXT:    v_add_u32_e32 v6, vcc, 0x3000000, v6
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, 0x3000000, v7
-; VI-NEXT:  .LBB51_3: ; %end
+; VI-NEXT:  .LBB51_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v32i8_to_v8f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -14631,7 +15180,7 @@ define inreg <8 x float> @bitcast_v32i8_to_v8f32_scalar(<32 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -14682,8 +15231,17 @@ define inreg <8 x float> @bitcast_v32i8_to_v8f32_scalar(<32 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_perm_b32 v7, s7, v9, v7
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; GFX9-NEXT:    v_or_b32_e32 v7, v8, v7
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_3
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
@@ -14758,11 +15316,8 @@ define inreg <8 x float> @bitcast_v32i8_to_v8f32_scalar(<32 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_add_u32_e32 v8, 0x300, v8
 ; GFX9-NEXT:    v_add_u32_sdwa v7, v7, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v7, v8, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB51_3: ; %end
+; GFX9-NEXT:  .LBB51_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB51_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX9-NEXT:    s_branch .LBB51_2
 ;
 ; GFX11-LABEL: bitcast_v32i8_to_v8f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -14784,7 +15339,7 @@ define inreg <8 x float> @bitcast_v32i8_to_v8f32_scalar(<32 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB51_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
@@ -14820,9 +15375,17 @@ define inreg <8 x float> @bitcast_v32i8_to_v8f32_scalar(<32 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_or_b32_e32 v5, v10, v6
 ; GFX11-NEXT:    v_or_b32_e32 v6, v12, v9
 ; GFX11-NEXT:    v_or_b32_e32 v7, v13, v11
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB51_3
-; GFX11-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB51_3
+; GFX11-NEXT:  .LBB51_2:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX11-NEXT:  .LBB51_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
@@ -14896,11 +15459,8 @@ define inreg <8 x float> @bitcast_v32i8_to_v8f32_scalar(<32 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_or_b32_e32 v5, v8, v9
 ; GFX11-NEXT:    v_or_b32_e32 v6, v10, v11
 ; GFX11-NEXT:    v_or_b32_e32 v7, v12, v13
-; GFX11-NEXT:  .LBB51_3: ; %end
+; GFX11-NEXT:  .LBB51_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB51_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX11-NEXT:    s_branch .LBB51_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -15024,10 +15584,18 @@ define inreg <4 x double> @bitcast_v4i64_to_v4f64_scalar(<4 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_4
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB53_3
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
@@ -15036,7 +15604,7 @@ define inreg <4 x double> @bitcast_v4i64_to_v4f64_scalar(<4 x i64> inreg %a, i32
 ; SI-NEXT:    s_addc_u32 s21, s21, 0
 ; SI-NEXT:    s_add_u32 s22, s22, 3
 ; SI-NEXT:    s_addc_u32 s23, s23, 0
-; SI-NEXT:  .LBB53_3: ; %end
+; SI-NEXT:  .LBB53_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -15046,17 +15614,23 @@ define inreg <4 x double> @bitcast_v4i64_to_v4f64_scalar(<4 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s22
 ; SI-NEXT:    v_mov_b32_e32 v7, s23
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB53_4:
-; SI-NEXT:    s_branch .LBB53_2
 ;
 ; VI-LABEL: bitcast_v4i64_to_v4f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_4
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB53_3
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -15065,7 +15639,7 @@ define inreg <4 x double> @bitcast_v4i64_to_v4f64_scalar(<4 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s21, s21, 0
 ; VI-NEXT:    s_add_u32 s22, s22, 3
 ; VI-NEXT:    s_addc_u32 s23, s23, 0
-; VI-NEXT:  .LBB53_3: ; %end
+; VI-NEXT:  .LBB53_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -15075,17 +15649,23 @@ define inreg <4 x double> @bitcast_v4i64_to_v4f64_scalar(<4 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB53_4:
-; VI-NEXT:    s_branch .LBB53_2
 ;
 ; GFX9-LABEL: bitcast_v4i64_to_v4f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_3
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -15094,7 +15674,7 @@ define inreg <4 x double> @bitcast_v4i64_to_v4f64_scalar(<4 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s21, s21, 0
 ; GFX9-NEXT:    s_add_u32 s22, s22, 3
 ; GFX9-NEXT:    s_addc_u32 s23, s23, 0
-; GFX9-NEXT:  .LBB53_3: ; %end
+; GFX9-NEXT:  .LBB53_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -15104,19 +15684,22 @@ define inreg <4 x double> @bitcast_v4i64_to_v4f64_scalar(<4 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s23
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB53_4:
-; GFX9-NEXT:    s_branch .LBB53_2
 ;
 ; GFX11-LABEL: bitcast_v4i64_to_v4f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB53_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB53_3
-; GFX11-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB53_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -15125,14 +15708,12 @@ define inreg <4 x double> @bitcast_v4i64_to_v4f64_scalar(<4 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX11-NEXT:    s_add_u32 s18, s18, 3
 ; GFX11-NEXT:    s_addc_u32 s19, s19, 0
-; GFX11-NEXT:  .LBB53_3: ; %end
+; GFX11-NEXT:  .LBB53_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB53_4:
-; GFX11-NEXT:    s_branch .LBB53_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -15240,18 +15821,24 @@ define inreg <4 x i64> @bitcast_v4f64_to_v4i64_scalar(<4 x double> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -15266,18 +15853,24 @@ define inreg <4 x i64> @bitcast_v4f64_to_v4i64_scalar(<4 x double> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -15292,18 +15885,24 @@ define inreg <4 x i64> @bitcast_v4f64_to_v4i64_scalar(<4 x double> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -15323,18 +15922,21 @@ define inreg <4 x i64> @bitcast_v4f64_to_v4i64_scalar(<4 x double> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[4:5], 1.0
 ; GFX11-NEXT:    v_add_f64 v[6:7], s[6:7], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -15515,7 +16117,7 @@ define inreg <16 x i16> @bitcast_v4i64_to_v16i16_scalar(<4 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s14, s23, 16
 ; SI-NEXT:    s_lshr_b32 s15, s21, 16
@@ -15525,8 +16127,24 @@ define inreg <16 x i16> @bitcast_v4i64_to_v16i16_scalar(<4 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s22, s22, 3
 ; SI-NEXT:    s_addc_u32 s23, s23, 0
 ; SI-NEXT:    s_add_u32 s20, s20, 3
@@ -15543,7 +16161,7 @@ define inreg <16 x i16> @bitcast_v4i64_to_v16i16_scalar(<4 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 16
-; SI-NEXT:  .LBB57_3: ; %end
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s10, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -15577,25 +16195,23 @@ define inreg <16 x i16> @bitcast_v4i64_to_v16i16_scalar(<4 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s4
 ; SI-NEXT:    v_mov_b32_e32 v7, s11
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v4i64_to_v16i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s22, s22, 3
 ; VI-NEXT:    s_addc_u32 s23, s23, 0
 ; VI-NEXT:    s_add_u32 s20, s20, 3
@@ -15604,7 +16220,7 @@ define inreg <16 x i16> @bitcast_v4i64_to_v16i16_scalar(<4 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -15614,17 +16230,23 @@ define inreg <16 x i16> @bitcast_v4i64_to_v16i16_scalar(<4 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v4i64_to_v16i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_3
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s22, s22, 3
 ; GFX9-NEXT:    s_addc_u32 s23, s23, 0
 ; GFX9-NEXT:    s_add_u32 s20, s20, 3
@@ -15633,7 +16255,7 @@ define inreg <16 x i16> @bitcast_v4i64_to_v16i16_scalar(<4 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB57_3: ; %end
+; GFX9-NEXT:  .LBB57_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -15643,19 +16265,22 @@ define inreg <16 x i16> @bitcast_v4i64_to_v16i16_scalar(<4 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s23
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB57_4:
-; GFX9-NEXT:    s_branch .LBB57_2
 ;
 ; GFX11-LABEL: bitcast_v4i64_to_v16i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB57_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB57_3
-; GFX11-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB57_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s18, s18, 3
 ; GFX11-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX11-NEXT:    s_add_u32 s16, s16, 3
@@ -15664,15 +16289,13 @@ define inreg <16 x i16> @bitcast_v4i64_to_v16i16_scalar(<4 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB57_3: ; %end
+; GFX11-NEXT:  .LBB57_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB57_4:
-; GFX11-NEXT:    s_branch .LBB57_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -15910,7 +16533,7 @@ define inreg <4 x i64> @bitcast_v16i16_to_v4i64_scalar(<16 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s29, s17, 16
 ; SI-NEXT:    s_lshr_b32 s40, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_4
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s40, 16
@@ -15936,8 +16559,17 @@ define inreg <4 x i64> @bitcast_v16i16_to_v4i64_scalar(<16 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s11, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s14, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s12
-; SI-NEXT:    s_cbranch_execnz .LBB59_3
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s40, 16
@@ -15978,7 +16610,7 @@ define inreg <4 x i64> @bitcast_v16i16_to_v4i64_scalar(<16 x i16> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s9, s9, 0x30000
 ; SI-NEXT:    s_add_i32 s10, s10, 0x30000
 ; SI-NEXT:    s_add_i32 s11, s11, 0x30000
-; SI-NEXT:  .LBB59_3: ; %end
+; SI-NEXT:  .LBB59_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -15988,18 +16620,23 @@ define inreg <4 x i64> @bitcast_v16i16_to_v4i64_scalar(<16 x i16> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s10
 ; SI-NEXT:    v_mov_b32_e32 v7, s11
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB59_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
-; SI-NEXT:    s_branch .LBB59_2
 ;
 ; VI-LABEL: bitcast_v16i16_to_v4i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_4
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_3
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s23, 3
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -16040,7 +16677,7 @@ define inreg <4 x i64> @bitcast_v16i16_to_v4i64_scalar(<16 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB59_3: ; %end
+; VI-NEXT:  .LBB59_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -16050,17 +16687,23 @@ define inreg <4 x i64> @bitcast_v16i16_to_v4i64_scalar(<16 x i16> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB59_4:
-; VI-NEXT:    s_branch .LBB59_2
 ;
 ; GFX9-LABEL: bitcast_v16i16_to_v4i64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_4
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v7, s23, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v6, s22, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v5, s21, 3 op_sel_hi:[1,0]
@@ -16070,9 +16713,7 @@ define inreg <4 x i64> @bitcast_v16i16_to_v4i64_scalar(<16 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB59_3:
-; GFX9-NEXT:    s_branch .LBB59_2
-; GFX9-NEXT:  .LBB59_4:
+; GFX9-NEXT:  .LBB59_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -16092,11 +16733,16 @@ define inreg <4 x i64> @bitcast_v16i16_to_v4i64_scalar(<16 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB59_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v7, s7, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v6, s6, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v5, s5, 3 op_sel_hi:[1,0]
@@ -16106,8 +16752,6 @@ define inreg <4 x i64> @bitcast_v16i16_to_v4i64_scalar(<16 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB59_3:
-; GFX11-NEXT:    s_branch .LBB59_2
 ; GFX11-NEXT:  .LBB59_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -16288,7 +16932,7 @@ define inreg <16 x half> @bitcast_v4i64_to_v16f16_scalar(<4 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB61_4
+; SI-NEXT:    s_cbranch_scc0 .LBB61_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s14, s23, 16
 ; SI-NEXT:    s_lshr_b32 s15, s21, 16
@@ -16298,8 +16942,24 @@ define inreg <16 x half> @bitcast_v4i64_to_v16f16_scalar(<4 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB61_3
-; SI-NEXT:  .LBB61_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB61_3
+; SI-NEXT:  .LBB61_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:  .LBB61_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB61_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s22, s22, 3
 ; SI-NEXT:    s_addc_u32 s23, s23, 0
 ; SI-NEXT:    s_add_u32 s20, s20, 3
@@ -16316,7 +16976,7 @@ define inreg <16 x half> @bitcast_v4i64_to_v16f16_scalar(<4 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 16
-; SI-NEXT:  .LBB61_3: ; %end
+; SI-NEXT:  .LBB61_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s10, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -16350,25 +17010,23 @@ define inreg <16 x half> @bitcast_v4i64_to_v16f16_scalar(<4 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s4
 ; SI-NEXT:    v_mov_b32_e32 v7, s11
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB61_4:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    s_branch .LBB61_2
 ;
 ; VI-LABEL: bitcast_v4i64_to_v16f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB61_4
+; VI-NEXT:    s_cbranch_scc0 .LBB61_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB61_3
-; VI-NEXT:  .LBB61_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB61_3
+; VI-NEXT:  .LBB61_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB61_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB61_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s22, s22, 3
 ; VI-NEXT:    s_addc_u32 s23, s23, 0
 ; VI-NEXT:    s_add_u32 s20, s20, 3
@@ -16377,7 +17035,7 @@ define inreg <16 x half> @bitcast_v4i64_to_v16f16_scalar(<4 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB61_3: ; %end
+; VI-NEXT:  .LBB61_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -16387,17 +17045,23 @@ define inreg <16 x half> @bitcast_v4i64_to_v16f16_scalar(<4 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB61_4:
-; VI-NEXT:    s_branch .LBB61_2
 ;
 ; GFX9-LABEL: bitcast_v4i64_to_v16f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB61_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB61_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB61_3
-; GFX9-NEXT:  .LBB61_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB61_3
+; GFX9-NEXT:  .LBB61_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB61_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB61_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s22, s22, 3
 ; GFX9-NEXT:    s_addc_u32 s23, s23, 0
 ; GFX9-NEXT:    s_add_u32 s20, s20, 3
@@ -16406,7 +17070,7 @@ define inreg <16 x half> @bitcast_v4i64_to_v16f16_scalar(<4 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB61_3: ; %end
+; GFX9-NEXT:  .LBB61_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -16416,19 +17080,22 @@ define inreg <16 x half> @bitcast_v4i64_to_v16f16_scalar(<4 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s23
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB61_4:
-; GFX9-NEXT:    s_branch .LBB61_2
 ;
 ; GFX11-LABEL: bitcast_v4i64_to_v16f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB61_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB61_3
-; GFX11-NEXT:  .LBB61_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB61_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB61_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB61_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s18, s18, 3
 ; GFX11-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX11-NEXT:    s_add_u32 s16, s16, 3
@@ -16437,15 +17104,13 @@ define inreg <16 x half> @bitcast_v4i64_to_v16f16_scalar(<4 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB61_3: ; %end
+; GFX11-NEXT:  .LBB61_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB61_4:
-; GFX11-NEXT:    s_branch .LBB61_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -16715,7 +17380,7 @@ define inreg <4 x i64> @bitcast_v16f16_to_v4i64_scalar(<16 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s29, s17, 16
 ; SI-NEXT:    s_lshr_b32 s40, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB63_3
+; SI-NEXT:    s_cbranch_scc0 .LBB63_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s40, 16
@@ -16741,8 +17406,17 @@ define inreg <4 x i64> @bitcast_v16f16_to_v4i64_scalar(<16 x half> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s11, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s14, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s12
-; SI-NEXT:    s_cbranch_execnz .LBB63_4
-; SI-NEXT:  .LBB63_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB63_3
+; SI-NEXT:  .LBB63_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
+; SI-NEXT:  .LBB63_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB63_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s40
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s29
@@ -16808,10 +17482,7 @@ define inreg <4 x i64> @bitcast_v16f16_to_v4i64_scalar(<16 x half> inreg %a, i32
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v8
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB63_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
-; SI-NEXT:    s_branch .LBB63_2
-; SI-NEXT:  .LBB63_4:
+; SI-NEXT:  .LBB63_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -16826,10 +17497,18 @@ define inreg <4 x i64> @bitcast_v16f16_to_v4i64_scalar(<16 x half> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB63_3
+; VI-NEXT:    s_cbranch_scc0 .LBB63_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB63_4
-; VI-NEXT:  .LBB63_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB63_3
+; VI-NEXT:  .LBB63_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB63_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB63_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s23, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -16872,9 +17551,7 @@ define inreg <4 x i64> @bitcast_v16f16_to_v4i64_scalar(<16 x half> inreg %a, i32
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v8
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB63_3:
-; VI-NEXT:    s_branch .LBB63_2
-; VI-NEXT:  .LBB63_4:
+; VI-NEXT:  .LBB63_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -16889,10 +17566,18 @@ define inreg <4 x i64> @bitcast_v16f16_to_v4i64_scalar(<16 x half> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB63_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB63_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB63_4
-; GFX9-NEXT:  .LBB63_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB63_3
+; GFX9-NEXT:  .LBB63_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB63_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB63_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v7, s23, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v6, s22, v0 op_sel_hi:[1,0]
@@ -16903,9 +17588,7 @@ define inreg <4 x i64> @bitcast_v16f16_to_v4i64_scalar(<16 x half> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB63_3:
-; GFX9-NEXT:    s_branch .LBB63_2
-; GFX9-NEXT:  .LBB63_4:
+; GFX9-NEXT:  .LBB63_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -16925,11 +17608,16 @@ define inreg <4 x i64> @bitcast_v16f16_to_v4i64_scalar(<16 x half> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB63_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB63_4
-; GFX11-NEXT:  .LBB63_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB63_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB63_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB63_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v7, 0x200, s7 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v6, 0x200, s6 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v5, 0x200, s5 op_sel_hi:[0,1]
@@ -16939,8 +17627,6 @@ define inreg <4 x i64> @bitcast_v16f16_to_v4i64_scalar(<16 x half> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB63_3:
-; GFX11-NEXT:    s_branch .LBB63_2
 ; GFX11-NEXT:  .LBB63_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -17162,7 +17848,7 @@ define inreg <16 x bfloat> @bitcast_v4i64_to_v16bf16_scalar(<4 x i64> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB65_4
+; SI-NEXT:    s_cbranch_scc0 .LBB65_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s7, s23, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s23, 16
@@ -17180,8 +17866,32 @@ define inreg <16 x bfloat> @bitcast_v4i64_to_v16bf16_scalar(<4 x i64> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s26, s17, 16
 ; SI-NEXT:    s_and_b32 s29, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s28, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB65_3
-; SI-NEXT:  .LBB65_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB65_3
+; SI-NEXT:  .LBB65_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB65_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB65_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s16, 3
 ; SI-NEXT:    s_addc_u32 s5, s17, 0
 ; SI-NEXT:    s_add_u32 s16, s18, 3
@@ -17206,7 +17916,7 @@ define inreg <16 x bfloat> @bitcast_v4i64_to_v16bf16_scalar(<4 x i64> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s26, s5, 16
 ; SI-NEXT:    s_and_b32 s29, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s28, s4, 16
-; SI-NEXT:  .LBB65_3: ; %end
+; SI-NEXT:  .LBB65_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s29
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s28
@@ -17240,33 +17950,23 @@ define inreg <16 x bfloat> @bitcast_v4i64_to_v16bf16_scalar(<4 x i64> inreg %a,
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[7:8], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB65_4:
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB65_2
 ;
 ; VI-LABEL: bitcast_v4i64_to_v16bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB65_4
+; VI-NEXT:    s_cbranch_scc0 .LBB65_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB65_3
-; VI-NEXT:  .LBB65_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB65_3
+; VI-NEXT:  .LBB65_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB65_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB65_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s22, s22, 3
 ; VI-NEXT:    s_addc_u32 s23, s23, 0
 ; VI-NEXT:    s_add_u32 s20, s20, 3
@@ -17275,7 +17975,7 @@ define inreg <16 x bfloat> @bitcast_v4i64_to_v16bf16_scalar(<4 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB65_3: ; %end
+; VI-NEXT:  .LBB65_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -17285,17 +17985,23 @@ define inreg <16 x bfloat> @bitcast_v4i64_to_v16bf16_scalar(<4 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB65_4:
-; VI-NEXT:    s_branch .LBB65_2
 ;
 ; GFX9-LABEL: bitcast_v4i64_to_v16bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB65_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB65_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB65_3
-; GFX9-NEXT:  .LBB65_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB65_3
+; GFX9-NEXT:  .LBB65_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB65_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB65_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s22, s22, 3
 ; GFX9-NEXT:    s_addc_u32 s23, s23, 0
 ; GFX9-NEXT:    s_add_u32 s20, s20, 3
@@ -17304,7 +18010,7 @@ define inreg <16 x bfloat> @bitcast_v4i64_to_v16bf16_scalar(<4 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB65_3: ; %end
+; GFX9-NEXT:  .LBB65_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -17314,19 +18020,22 @@ define inreg <16 x bfloat> @bitcast_v4i64_to_v16bf16_scalar(<4 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s22
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s23
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB65_4:
-; GFX9-NEXT:    s_branch .LBB65_2
 ;
 ; GFX11-LABEL: bitcast_v4i64_to_v16bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB65_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB65_3
-; GFX11-NEXT:  .LBB65_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB65_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB65_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB65_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s18, s18, 3
 ; GFX11-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX11-NEXT:    s_add_u32 s16, s16, 3
@@ -17335,15 +18044,13 @@ define inreg <16 x bfloat> @bitcast_v4i64_to_v16bf16_scalar(<4 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB65_3: ; %end
+; GFX11-NEXT:  .LBB65_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB65_4:
-; GFX11-NEXT:    s_branch .LBB65_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -18142,7 +18849,7 @@ define inreg <4 x i64> @bitcast_v16bf16_to_v4i64_scalar(<16 x bfloat> inreg %a,
 ; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB67_4
+; SI-NEXT:    s_cbranch_scc0 .LBB67_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v32
 ; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v31
@@ -18160,8 +18867,17 @@ define inreg <4 x i64> @bitcast_v16bf16_to_v4i64_scalar(<16 x bfloat> inreg %a,
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[11:12], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v25
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[9:10], 16
-; SI-NEXT:    s_cbranch_execnz .LBB67_3
-; SI-NEXT:  .LBB67_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB67_3
+; SI-NEXT:  .LBB67_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; SI-NEXT:  .LBB67_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB67_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v32
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v23
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -18210,20 +18926,25 @@ define inreg <4 x i64> @bitcast_v16bf16_to_v4i64_scalar(<16 x bfloat> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v7, 0x40c00000, v7
 ; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[7:8], 16
-; SI-NEXT:  .LBB67_3: ; %end
+; SI-NEXT:  .LBB67_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB67_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; SI-NEXT:    s_branch .LBB67_2
 ;
 ; VI-LABEL: bitcast_v16bf16_to_v4i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB67_3
+; VI-NEXT:    s_cbranch_scc0 .LBB67_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB67_4
-; VI-NEXT:  .LBB67_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB67_3
+; VI-NEXT:  .LBB67_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB67_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB67_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s23, 16
 ; VI-NEXT:    v_mov_b32_e32 v8, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v8
@@ -18373,9 +19094,7 @@ define inreg <4 x i64> @bitcast_v16bf16_to_v4i64_scalar(<16 x bfloat> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v3, v9
 ; VI-NEXT:    v_mov_b32_e32 v5, v8
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB67_3:
-; VI-NEXT:    s_branch .LBB67_2
-; VI-NEXT:  .LBB67_4:
+; VI-NEXT:  .LBB67_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -18390,10 +19109,18 @@ define inreg <4 x i64> @bitcast_v16bf16_to_v4i64_scalar(<16 x bfloat> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB67_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB67_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB67_4
-; GFX9-NEXT:  .LBB67_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB67_3
+; GFX9-NEXT:  .LBB67_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB67_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB67_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s23, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -18549,9 +19276,7 @@ define inreg <4 x i64> @bitcast_v16bf16_to_v4i64_scalar(<16 x bfloat> inreg %a,
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v8, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v9, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB67_3:
-; GFX9-NEXT:    s_branch .LBB67_2
-; GFX9-NEXT:  .LBB67_4:
+; GFX9-NEXT:  .LBB67_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -18571,11 +19296,16 @@ define inreg <4 x i64> @bitcast_v16bf16_to_v4i64_scalar(<16 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB67_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB67_4
-; GFX11-TRUE16-NEXT:  .LBB67_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB67_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-TRUE16-NEXT:  .LBB67_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB67_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s8, s7, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s7, s7, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s8
@@ -18734,8 +19464,6 @@ define inreg <4 x i64> @bitcast_v16bf16_to_v4i64_scalar(<16 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v10
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v9.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB67_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB67_2
 ; GFX11-TRUE16-NEXT:  .LBB67_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -18752,11 +19480,16 @@ define inreg <4 x i64> @bitcast_v16bf16_to_v4i64_scalar(<16 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB67_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB67_4
-; GFX11-FAKE16-NEXT:  .LBB67_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB67_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-FAKE16-NEXT:  .LBB67_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB67_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s8, s7, 16
 ; GFX11-FAKE16-NEXT:    s_and_b32 s7, s7, 0xffff0000
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s8
@@ -18932,8 +19665,6 @@ define inreg <4 x i64> @bitcast_v16bf16_to_v4i64_scalar(<16 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v12, 16, v9
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB67_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB67_2
 ; GFX11-FAKE16-NEXT:  .LBB67_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -19513,7 +20244,7 @@ define inreg <32 x i8> @bitcast_v4i64_to_v32i8_scalar(<4 x i64> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB69_4
+; SI-NEXT:    s_cbranch_scc0 .LBB69_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s56, s23, 24
 ; SI-NEXT:    s_lshr_b32 s57, s23, 16
@@ -19539,8 +20270,40 @@ define inreg <32 x i8> @bitcast_v4i64_to_v32i8_scalar(<4 x i64> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB69_3
-; SI-NEXT:  .LBB69_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[46:47], 0
+; SI-NEXT:    s_branch .LBB69_3
+; SI-NEXT:  .LBB69_2:
+; SI-NEXT:    s_mov_b64 s[46:47], -1
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:  .LBB69_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB69_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s22, s22, 3
 ; SI-NEXT:    s_addc_u32 s23, s23, 0
 ; SI-NEXT:    s_add_u32 s20, s20, 3
@@ -19573,7 +20336,7 @@ define inreg <32 x i8> @bitcast_v4i64_to_v32i8_scalar(<4 x i64> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 8
-; SI-NEXT:  .LBB69_3: ; %end
+; SI-NEXT:  .LBB69_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s44
 ; SI-NEXT:    v_mov_b32_e32 v2, s42
@@ -19607,38 +20370,12 @@ define inreg <32 x i8> @bitcast_v4i64_to_v32i8_scalar(<4 x i64> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v30, s57
 ; SI-NEXT:    v_mov_b32_e32 v31, s56
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB69_4:
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    s_branch .LBB69_2
 ;
 ; VI-LABEL: bitcast_v4i64_to_v32i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB69_4
+; VI-NEXT:    s_cbranch_scc0 .LBB69_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s14, s23, 24
 ; VI-NEXT:    s_lshr_b32 s15, s23, 16
@@ -19664,8 +20401,40 @@ define inreg <32 x i8> @bitcast_v4i64_to_v32i8_scalar(<4 x i64> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB69_3
-; VI-NEXT:  .LBB69_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[12:13], 0
+; VI-NEXT:    s_branch .LBB69_3
+; VI-NEXT:  .LBB69_2:
+; VI-NEXT:    s_mov_b64 s[12:13], -1
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr29
+; VI-NEXT:    ; implicit-def: $sgpr28
+; VI-NEXT:    ; implicit-def: $sgpr27
+; VI-NEXT:    ; implicit-def: $sgpr26
+; VI-NEXT:    ; implicit-def: $sgpr25
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr24
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:  .LBB69_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB69_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -19698,7 +20467,7 @@ define inreg <32 x i8> @bitcast_v4i64_to_v32i8_scalar(<4 x i64> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s57, s17, 8
 ; VI-NEXT:    s_lshr_b32 s58, s16, 16
 ; VI-NEXT:    s_lshr_b32 s59, s16, 8
-; VI-NEXT:  .LBB69_3: ; %end
+; VI-NEXT:  .LBB69_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s59
 ; VI-NEXT:    v_mov_b32_e32 v2, s58
@@ -19732,38 +20501,12 @@ define inreg <32 x i8> @bitcast_v4i64_to_v32i8_scalar(<4 x i64> inreg %a, i32 in
 ; VI-NEXT:    v_mov_b32_e32 v30, s15
 ; VI-NEXT:    v_mov_b32_e32 v31, s14
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB69_4:
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr29
-; VI-NEXT:    ; implicit-def: $sgpr28
-; VI-NEXT:    ; implicit-def: $sgpr27
-; VI-NEXT:    ; implicit-def: $sgpr26
-; VI-NEXT:    ; implicit-def: $sgpr25
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr24
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    s_branch .LBB69_2
 ;
 ; GFX9-LABEL: bitcast_v4i64_to_v32i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB69_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB69_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s14, s23, 24
 ; GFX9-NEXT:    s_lshr_b32 s15, s23, 16
@@ -19789,8 +20532,40 @@ define inreg <32 x i8> @bitcast_v4i64_to_v32i8_scalar(<4 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[10:11], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB69_3
-; GFX9-NEXT:  .LBB69_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[12:13], 0
+; GFX9-NEXT:    s_branch .LBB69_3
+; GFX9-NEXT:  .LBB69_2:
+; GFX9-NEXT:    s_mov_b64 s[12:13], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr29
+; GFX9-NEXT:    ; implicit-def: $sgpr28
+; GFX9-NEXT:    ; implicit-def: $sgpr27
+; GFX9-NEXT:    ; implicit-def: $sgpr26
+; GFX9-NEXT:    ; implicit-def: $sgpr25
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr24
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:  .LBB69_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB69_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -19823,7 +20598,7 @@ define inreg <32 x i8> @bitcast_v4i64_to_v32i8_scalar(<4 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b32 s57, s17, 8
 ; GFX9-NEXT:    s_lshr_b32 s58, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s16, 8
-; GFX9-NEXT:  .LBB69_3: ; %end
+; GFX9-NEXT:  .LBB69_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s59
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s58
@@ -19857,39 +20632,13 @@ define inreg <32 x i8> @bitcast_v4i64_to_v32i8_scalar(<4 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s15
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s14
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB69_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr29
-; GFX9-NEXT:    ; implicit-def: $sgpr28
-; GFX9-NEXT:    ; implicit-def: $sgpr27
-; GFX9-NEXT:    ; implicit-def: $sgpr26
-; GFX9-NEXT:    ; implicit-def: $sgpr25
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr24
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    s_branch .LBB69_2
 ;
 ; GFX11-LABEL: bitcast_v4i64_to_v32i8_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s46, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB69_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB69_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s12, s19, 24
 ; GFX11-NEXT:    s_lshr_b32 s13, s19, 16
@@ -19915,9 +20664,40 @@ define inreg <32 x i8> @bitcast_v4i64_to_v32i8_scalar(<4 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[10:11], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s46
-; GFX11-NEXT:    s_cbranch_vccnz .LBB69_3
-; GFX11-NEXT:  .LBB69_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB69_3
+; GFX11-NEXT:  .LBB69_2:
+; GFX11-NEXT:    s_mov_b32 s46, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr29
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:    ; implicit-def: $sgpr27
+; GFX11-NEXT:    ; implicit-def: $sgpr26
+; GFX11-NEXT:    ; implicit-def: $sgpr25
+; GFX11-NEXT:    ; implicit-def: $sgpr24
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr23
+; GFX11-NEXT:    ; implicit-def: $sgpr22
+; GFX11-NEXT:    ; implicit-def: $sgpr21
+; GFX11-NEXT:    ; implicit-def: $sgpr20
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:  .LBB69_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s46, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB69_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -19950,7 +20730,7 @@ define inreg <32 x i8> @bitcast_v4i64_to_v32i8_scalar(<4 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b32 s43, s1, 8
 ; GFX11-NEXT:    s_lshr_b32 s44, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s45, s0, 8
-; GFX11-NEXT:  .LBB69_3: ; %end
+; GFX11-NEXT:  .LBB69_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s45
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s44 :: v_dual_mov_b32 v3, s10
@@ -19969,32 +20749,6 @@ define inreg <32 x i8> @bitcast_v4i64_to_v32i8_scalar(<4 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s19 :: v_dual_mov_b32 v29, s14
 ; GFX11-NEXT:    v_dual_mov_b32 v30, s13 :: v_dual_mov_b32 v31, s12
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB69_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr29
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    ; implicit-def: $sgpr27
-; GFX11-NEXT:    ; implicit-def: $sgpr26
-; GFX11-NEXT:    ; implicit-def: $sgpr25
-; GFX11-NEXT:    ; implicit-def: $sgpr24
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr23
-; GFX11-NEXT:    ; implicit-def: $sgpr22
-; GFX11-NEXT:    ; implicit-def: $sgpr21
-; GFX11-NEXT:    ; implicit-def: $sgpr20
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    s_branch .LBB69_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -20980,7 +21734,7 @@ define inreg <4 x i64> @bitcast_v32i8_to_v4i64_scalar(<32 x i8> inreg %a, i32 in
 ; SI-NEXT:    v_readfirstlane_b32 s62, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s63, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB71_4
+; SI-NEXT:    s_cbranch_scc0 .LBB71_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -21054,8 +21808,17 @@ define inreg <4 x i64> @bitcast_v32i8_to_v4i64_scalar(<32 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
 ; SI-NEXT:    s_or_b32 s12, s13, s12
 ; SI-NEXT:    s_or_b32 s11, s11, s12
-; SI-NEXT:    s_cbranch_execnz .LBB71_3
-; SI-NEXT:  .LBB71_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB71_3
+; SI-NEXT:  .LBB71_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
+; SI-NEXT:  .LBB71_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB71_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -21160,7 +21923,7 @@ define inreg <4 x i64> @bitcast_v32i8_to_v4i64_scalar(<32 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_add_i32 s9, s9, 0x3000000
 ; SI-NEXT:    s_add_i32 s10, s10, 0x3000000
 ; SI-NEXT:    s_add_i32 s11, s11, 0x3000000
-; SI-NEXT:  .LBB71_3: ; %end
+; SI-NEXT:  .LBB71_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -21170,9 +21933,6 @@ define inreg <4 x i64> @bitcast_v32i8_to_v4i64_scalar(<32 x i8> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v6, s10
 ; SI-NEXT:    v_mov_b32_e32 v7, s11
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB71_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
-; SI-NEXT:    s_branch .LBB71_2
 ;
 ; VI-LABEL: bitcast_v32i8_to_v4i64_scalar:
 ; VI:       ; %bb.0:
@@ -21197,7 +21957,7 @@ define inreg <4 x i64> @bitcast_v32i8_to_v4i64_scalar(<32 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB71_4
+; VI-NEXT:    s_cbranch_scc0 .LBB71_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -21248,8 +22008,17 @@ define inreg <4 x i64> @bitcast_v32i8_to_v4i64_scalar(<32 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_perm_b32 v7, s7, v9, v7
 ; VI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    s_cbranch_execnz .LBB71_3
-; VI-NEXT:  .LBB71_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB71_3
+; VI-NEXT:  .LBB71_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; VI-NEXT:  .LBB71_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB71_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
@@ -21331,11 +22100,8 @@ define inreg <4 x i64> @bitcast_v32i8_to_v4i64_scalar(<32 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_add_u32_e32 v5, vcc, 0x3000000, v5
 ; VI-NEXT:    v_add_u32_e32 v6, vcc, 0x3000000, v6
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, 0x3000000, v7
-; VI-NEXT:  .LBB71_3: ; %end
+; VI-NEXT:  .LBB71_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB71_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; VI-NEXT:    s_branch .LBB71_2
 ;
 ; GFX9-LABEL: bitcast_v32i8_to_v4i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -21360,7 +22126,7 @@ define inreg <4 x i64> @bitcast_v32i8_to_v4i64_scalar(<32 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB71_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -21411,8 +22177,17 @@ define inreg <4 x i64> @bitcast_v32i8_to_v4i64_scalar(<32 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_perm_b32 v7, s7, v9, v7
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; GFX9-NEXT:    v_or_b32_e32 v7, v8, v7
-; GFX9-NEXT:    s_cbranch_execnz .LBB71_3
-; GFX9-NEXT:  .LBB71_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB71_3
+; GFX9-NEXT:  .LBB71_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX9-NEXT:  .LBB71_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB71_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
@@ -21487,11 +22262,8 @@ define inreg <4 x i64> @bitcast_v32i8_to_v4i64_scalar(<32 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_add_u32_e32 v8, 0x300, v8
 ; GFX9-NEXT:    v_add_u32_sdwa v7, v7, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v7, v8, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB71_3: ; %end
+; GFX9-NEXT:  .LBB71_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB71_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX9-NEXT:    s_branch .LBB71_2
 ;
 ; GFX11-LABEL: bitcast_v32i8_to_v4i64_scalar:
 ; GFX11:       ; %bb.0:
@@ -21513,7 +22285,7 @@ define inreg <4 x i64> @bitcast_v32i8_to_v4i64_scalar(<32 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB71_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
@@ -21549,9 +22321,17 @@ define inreg <4 x i64> @bitcast_v32i8_to_v4i64_scalar(<32 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    v_or_b32_e32 v5, v10, v6
 ; GFX11-NEXT:    v_or_b32_e32 v6, v12, v9
 ; GFX11-NEXT:    v_or_b32_e32 v7, v13, v11
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB71_3
-; GFX11-NEXT:  .LBB71_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB71_3
+; GFX11-NEXT:  .LBB71_2:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX11-NEXT:  .LBB71_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB71_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
@@ -21625,11 +22405,8 @@ define inreg <4 x i64> @bitcast_v32i8_to_v4i64_scalar(<32 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    v_or_b32_e32 v5, v8, v9
 ; GFX11-NEXT:    v_or_b32_e32 v6, v10, v11
 ; GFX11-NEXT:    v_or_b32_e32 v7, v12, v13
-; GFX11-NEXT:  .LBB71_3: ; %end
+; GFX11-NEXT:  .LBB71_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB71_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX11-NEXT:    s_branch .LBB71_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -21788,7 +22565,7 @@ define inreg <16 x i16> @bitcast_v4f64_to_v16i16_scalar(<4 x double> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB73_3
+; SI-NEXT:    s_cbranch_scc0 .LBB73_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s25, s23, 16
 ; SI-NEXT:    s_lshr_b32 s24, s21, 16
@@ -21798,8 +22575,24 @@ define inreg <16 x i16> @bitcast_v4f64_to_v16i16_scalar(<4 x double> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB73_4
-; SI-NEXT:  .LBB73_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB73_3
+; SI-NEXT:  .LBB73_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:  .LBB73_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB73_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
@@ -21812,18 +22605,8 @@ define inreg <16 x i16> @bitcast_v4f64_to_v16i16_scalar(<4 x double> inreg %a, i
 ; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v1
-; SI-NEXT:    s_branch .LBB73_5
-; SI-NEXT:  .LBB73_3:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    s_branch .LBB73_2
-; SI-NEXT:  .LBB73_4:
+; SI-NEXT:    s_branch .LBB73_6
+; SI-NEXT:  .LBB73_5:
 ; SI-NEXT:    v_mov_b32_e32 v7, s23
 ; SI-NEXT:    v_mov_b32_e32 v5, s21
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
@@ -21840,7 +22623,7 @@ define inreg <16 x i16> @bitcast_v4f64_to_v16i16_scalar(<4 x double> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v10, s8
 ; SI-NEXT:    v_mov_b32_e32 v9, s6
 ; SI-NEXT:    v_mov_b32_e32 v8, s4
-; SI-NEXT:  .LBB73_5: ; %end
+; SI-NEXT:  .LBB73_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -21871,18 +22654,24 @@ define inreg <16 x i16> @bitcast_v4f64_to_v16i16_scalar(<4 x double> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB73_3
+; VI-NEXT:    s_cbranch_scc0 .LBB73_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB73_4
-; VI-NEXT:  .LBB73_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB73_3
+; VI-NEXT:  .LBB73_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB73_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB73_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB73_3:
-; VI-NEXT:    s_branch .LBB73_2
-; VI-NEXT:  .LBB73_4:
+; VI-NEXT:  .LBB73_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -21897,18 +22686,24 @@ define inreg <16 x i16> @bitcast_v4f64_to_v16i16_scalar(<4 x double> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB73_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB73_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB73_4
-; GFX9-NEXT:  .LBB73_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB73_3
+; GFX9-NEXT:  .LBB73_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB73_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB73_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB73_3:
-; GFX9-NEXT:    s_branch .LBB73_2
-; GFX9-NEXT:  .LBB73_4:
+; GFX9-NEXT:  .LBB73_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -21928,18 +22723,21 @@ define inreg <16 x i16> @bitcast_v4f64_to_v16i16_scalar(<4 x double> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB73_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB73_4
-; GFX11-NEXT:  .LBB73_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB73_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB73_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB73_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[6:7], s[6:7], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[4:5], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB73_3:
-; GFX11-NEXT:    s_branch .LBB73_2
 ; GFX11-NEXT:  .LBB73_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -22183,7 +22981,7 @@ define inreg <4 x double> @bitcast_v16i16_to_v4f64_scalar(<16 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s29, s17, 16
 ; SI-NEXT:    s_lshr_b32 s40, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB75_4
+; SI-NEXT:    s_cbranch_scc0 .LBB75_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s40, 16
@@ -22209,8 +23007,17 @@ define inreg <4 x double> @bitcast_v16i16_to_v4f64_scalar(<16 x i16> inreg %a, i
 ; SI-NEXT:    s_and_b32 s11, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s14, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s12
-; SI-NEXT:    s_cbranch_execnz .LBB75_3
-; SI-NEXT:  .LBB75_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB75_3
+; SI-NEXT:  .LBB75_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
+; SI-NEXT:  .LBB75_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB75_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s40, 16
@@ -22251,7 +23058,7 @@ define inreg <4 x double> @bitcast_v16i16_to_v4f64_scalar(<16 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s9, s9, 0x30000
 ; SI-NEXT:    s_add_i32 s10, s10, 0x30000
 ; SI-NEXT:    s_add_i32 s11, s11, 0x30000
-; SI-NEXT:  .LBB75_3: ; %end
+; SI-NEXT:  .LBB75_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -22261,18 +23068,23 @@ define inreg <4 x double> @bitcast_v16i16_to_v4f64_scalar(<16 x i16> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v6, s10
 ; SI-NEXT:    v_mov_b32_e32 v7, s11
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB75_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
-; SI-NEXT:    s_branch .LBB75_2
 ;
 ; VI-LABEL: bitcast_v16i16_to_v4f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB75_4
+; VI-NEXT:    s_cbranch_scc0 .LBB75_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB75_3
-; VI-NEXT:  .LBB75_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB75_3
+; VI-NEXT:  .LBB75_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB75_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB75_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s23, 3
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -22313,7 +23125,7 @@ define inreg <4 x double> @bitcast_v16i16_to_v4f64_scalar(<16 x i16> inreg %a, i
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB75_3: ; %end
+; VI-NEXT:  .LBB75_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -22323,17 +23135,23 @@ define inreg <4 x double> @bitcast_v16i16_to_v4f64_scalar(<16 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB75_4:
-; VI-NEXT:    s_branch .LBB75_2
 ;
 ; GFX9-LABEL: bitcast_v16i16_to_v4f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB75_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB75_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB75_4
-; GFX9-NEXT:  .LBB75_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB75_3
+; GFX9-NEXT:  .LBB75_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB75_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB75_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v7, s23, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v6, s22, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v5, s21, 3 op_sel_hi:[1,0]
@@ -22343,9 +23161,7 @@ define inreg <4 x double> @bitcast_v16i16_to_v4f64_scalar(<16 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB75_3:
-; GFX9-NEXT:    s_branch .LBB75_2
-; GFX9-NEXT:  .LBB75_4:
+; GFX9-NEXT:  .LBB75_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -22365,11 +23181,16 @@ define inreg <4 x double> @bitcast_v16i16_to_v4f64_scalar(<16 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB75_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB75_4
-; GFX11-NEXT:  .LBB75_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB75_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB75_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB75_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v7, s7, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v6, s6, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v5, s5, 3 op_sel_hi:[1,0]
@@ -22379,8 +23200,6 @@ define inreg <4 x double> @bitcast_v16i16_to_v4f64_scalar(<16 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB75_3:
-; GFX11-NEXT:    s_branch .LBB75_2
 ; GFX11-NEXT:  .LBB75_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -22545,7 +23364,7 @@ define inreg <16 x half> @bitcast_v4f64_to_v16f16_scalar(<4 x double> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB77_3
+; SI-NEXT:    s_cbranch_scc0 .LBB77_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s25, s23, 16
 ; SI-NEXT:    s_lshr_b32 s24, s21, 16
@@ -22555,8 +23374,24 @@ define inreg <16 x half> @bitcast_v4f64_to_v16f16_scalar(<4 x double> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB77_4
-; SI-NEXT:  .LBB77_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB77_3
+; SI-NEXT:  .LBB77_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:  .LBB77_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB77_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
@@ -22569,18 +23404,8 @@ define inreg <16 x half> @bitcast_v4f64_to_v16f16_scalar(<4 x double> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v1
-; SI-NEXT:    s_branch .LBB77_5
-; SI-NEXT:  .LBB77_3:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    s_branch .LBB77_2
-; SI-NEXT:  .LBB77_4:
+; SI-NEXT:    s_branch .LBB77_6
+; SI-NEXT:  .LBB77_5:
 ; SI-NEXT:    v_mov_b32_e32 v7, s23
 ; SI-NEXT:    v_mov_b32_e32 v5, s21
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
@@ -22597,7 +23422,7 @@ define inreg <16 x half> @bitcast_v4f64_to_v16f16_scalar(<4 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v10, s8
 ; SI-NEXT:    v_mov_b32_e32 v9, s6
 ; SI-NEXT:    v_mov_b32_e32 v8, s4
-; SI-NEXT:  .LBB77_5: ; %end
+; SI-NEXT:  .LBB77_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -22628,18 +23453,24 @@ define inreg <16 x half> @bitcast_v4f64_to_v16f16_scalar(<4 x double> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB77_3
+; VI-NEXT:    s_cbranch_scc0 .LBB77_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB77_4
-; VI-NEXT:  .LBB77_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB77_3
+; VI-NEXT:  .LBB77_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB77_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB77_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB77_3:
-; VI-NEXT:    s_branch .LBB77_2
-; VI-NEXT:  .LBB77_4:
+; VI-NEXT:  .LBB77_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -22654,18 +23485,24 @@ define inreg <16 x half> @bitcast_v4f64_to_v16f16_scalar(<4 x double> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB77_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB77_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB77_4
-; GFX9-NEXT:  .LBB77_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB77_3
+; GFX9-NEXT:  .LBB77_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB77_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB77_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB77_3:
-; GFX9-NEXT:    s_branch .LBB77_2
-; GFX9-NEXT:  .LBB77_4:
+; GFX9-NEXT:  .LBB77_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -22685,18 +23522,21 @@ define inreg <16 x half> @bitcast_v4f64_to_v16f16_scalar(<4 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB77_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB77_4
-; GFX11-NEXT:  .LBB77_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB77_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB77_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB77_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[6:7], s[6:7], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[4:5], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB77_3:
-; GFX11-NEXT:    s_branch .LBB77_2
 ; GFX11-NEXT:  .LBB77_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -22972,7 +23812,7 @@ define inreg <4 x double> @bitcast_v16f16_to_v4f64_scalar(<16 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s29, s17, 16
 ; SI-NEXT:    s_lshr_b32 s40, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB79_3
+; SI-NEXT:    s_cbranch_scc0 .LBB79_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s40, 16
@@ -22998,8 +23838,17 @@ define inreg <4 x double> @bitcast_v16f16_to_v4f64_scalar(<16 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s11, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s14, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s12
-; SI-NEXT:    s_cbranch_execnz .LBB79_4
-; SI-NEXT:  .LBB79_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB79_3
+; SI-NEXT:  .LBB79_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
+; SI-NEXT:  .LBB79_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB79_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s40
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s29
@@ -23065,10 +23914,7 @@ define inreg <4 x double> @bitcast_v16f16_to_v4f64_scalar(<16 x half> inreg %a,
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v8
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB79_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
-; SI-NEXT:    s_branch .LBB79_2
-; SI-NEXT:  .LBB79_4:
+; SI-NEXT:  .LBB79_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -23083,10 +23929,18 @@ define inreg <4 x double> @bitcast_v16f16_to_v4f64_scalar(<16 x half> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB79_3
+; VI-NEXT:    s_cbranch_scc0 .LBB79_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB79_4
-; VI-NEXT:  .LBB79_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB79_3
+; VI-NEXT:  .LBB79_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB79_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB79_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s23, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -23129,9 +23983,7 @@ define inreg <4 x double> @bitcast_v16f16_to_v4f64_scalar(<16 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v8
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB79_3:
-; VI-NEXT:    s_branch .LBB79_2
-; VI-NEXT:  .LBB79_4:
+; VI-NEXT:  .LBB79_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -23146,10 +23998,18 @@ define inreg <4 x double> @bitcast_v16f16_to_v4f64_scalar(<16 x half> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB79_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB79_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB79_4
-; GFX9-NEXT:  .LBB79_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB79_3
+; GFX9-NEXT:  .LBB79_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB79_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB79_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v7, s23, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v6, s22, v0 op_sel_hi:[1,0]
@@ -23160,9 +24020,7 @@ define inreg <4 x double> @bitcast_v16f16_to_v4f64_scalar(<16 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB79_3:
-; GFX9-NEXT:    s_branch .LBB79_2
-; GFX9-NEXT:  .LBB79_4:
+; GFX9-NEXT:  .LBB79_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -23182,11 +24040,16 @@ define inreg <4 x double> @bitcast_v16f16_to_v4f64_scalar(<16 x half> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB79_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB79_4
-; GFX11-NEXT:  .LBB79_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB79_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB79_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB79_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v7, 0x200, s7 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v6, 0x200, s6 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v5, 0x200, s5 op_sel_hi:[0,1]
@@ -23196,8 +24059,6 @@ define inreg <4 x double> @bitcast_v16f16_to_v4f64_scalar(<16 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB79_3:
-; GFX11-NEXT:    s_branch .LBB79_2
 ; GFX11-NEXT:  .LBB79_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -23399,7 +24260,7 @@ define inreg <16 x bfloat> @bitcast_v4f64_to_v16bf16_scalar(<4 x double> inreg %
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB81_3
+; SI-NEXT:    s_cbranch_scc0 .LBB81_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s29, s23, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s28, s23, 16
@@ -23417,8 +24278,32 @@ define inreg <16 x bfloat> @bitcast_v4f64_to_v16bf16_scalar(<4 x double> inreg %
 ; SI-NEXT:    s_lshl_b32 s8, s17, 16
 ; SI-NEXT:    s_and_b32 s7, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB81_4
-; SI-NEXT:  .LBB81_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB81_3
+; SI-NEXT:  .LBB81_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:  .LBB81_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB81_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[22:23], 1.0
@@ -23439,26 +24324,8 @@ define inreg <16 x bfloat> @bitcast_v4f64_to_v16bf16_scalar(<4 x double> inreg %
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v1
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
-; SI-NEXT:    s_branch .LBB81_5
-; SI-NEXT:  .LBB81_3:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    s_branch .LBB81_2
-; SI-NEXT:  .LBB81_4:
+; SI-NEXT:    s_branch .LBB81_6
+; SI-NEXT:  .LBB81_5:
 ; SI-NEXT:    v_mov_b32_e32 v9, s29
 ; SI-NEXT:    v_mov_b32_e32 v8, s28
 ; SI-NEXT:    v_mov_b32_e32 v10, s27
@@ -23475,7 +24342,7 @@ define inreg <16 x bfloat> @bitcast_v4f64_to_v16bf16_scalar(<4 x double> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v2, s8
 ; SI-NEXT:    v_mov_b32_e32 v1, s7
 ; SI-NEXT:    v_mov_b32_e32 v0, s6
-; SI-NEXT:  .LBB81_5: ; %end
+; SI-NEXT:  .LBB81_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
@@ -23514,18 +24381,24 @@ define inreg <16 x bfloat> @bitcast_v4f64_to_v16bf16_scalar(<4 x double> inreg %
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB81_3
+; VI-NEXT:    s_cbranch_scc0 .LBB81_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB81_4
-; VI-NEXT:  .LBB81_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB81_3
+; VI-NEXT:  .LBB81_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB81_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB81_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB81_3:
-; VI-NEXT:    s_branch .LBB81_2
-; VI-NEXT:  .LBB81_4:
+; VI-NEXT:  .LBB81_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -23540,18 +24413,24 @@ define inreg <16 x bfloat> @bitcast_v4f64_to_v16bf16_scalar(<4 x double> inreg %
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB81_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB81_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB81_4
-; GFX9-NEXT:  .LBB81_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB81_3
+; GFX9-NEXT:  .LBB81_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB81_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB81_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB81_3:
-; GFX9-NEXT:    s_branch .LBB81_2
-; GFX9-NEXT:  .LBB81_4:
+; GFX9-NEXT:  .LBB81_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -23571,18 +24450,21 @@ define inreg <16 x bfloat> @bitcast_v4f64_to_v16bf16_scalar(<4 x double> inreg %
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB81_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB81_4
-; GFX11-NEXT:  .LBB81_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB81_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB81_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB81_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[6:7], s[6:7], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[4:5], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB81_3:
-; GFX11-NEXT:    s_branch .LBB81_2
 ; GFX11-NEXT:  .LBB81_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -24387,7 +25269,7 @@ define inreg <4 x double> @bitcast_v16bf16_to_v4f64_scalar(<16 x bfloat> inreg %
 ; SI-NEXT:    v_mul_f32_e64 v25, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB83_4
+; SI-NEXT:    s_cbranch_scc0 .LBB83_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v32
 ; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v31
@@ -24405,8 +25287,17 @@ define inreg <4 x double> @bitcast_v16bf16_to_v4f64_scalar(<16 x bfloat> inreg %
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[11:12], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v25
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[9:10], 16
-; SI-NEXT:    s_cbranch_execnz .LBB83_3
-; SI-NEXT:  .LBB83_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB83_3
+; SI-NEXT:  .LBB83_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; SI-NEXT:  .LBB83_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB83_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v32
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v23
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -24455,20 +25346,25 @@ define inreg <4 x double> @bitcast_v16bf16_to_v4f64_scalar(<16 x bfloat> inreg %
 ; SI-NEXT:    v_add_f32_e32 v7, 0x40c00000, v7
 ; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[7:8], 16
-; SI-NEXT:  .LBB83_3: ; %end
+; SI-NEXT:  .LBB83_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB83_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; SI-NEXT:    s_branch .LBB83_2
 ;
 ; VI-LABEL: bitcast_v16bf16_to_v4f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB83_3
+; VI-NEXT:    s_cbranch_scc0 .LBB83_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB83_4
-; VI-NEXT:  .LBB83_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB83_3
+; VI-NEXT:  .LBB83_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB83_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB83_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s23, 16
 ; VI-NEXT:    v_mov_b32_e32 v8, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v8
@@ -24618,9 +25514,7 @@ define inreg <4 x double> @bitcast_v16bf16_to_v4f64_scalar(<16 x bfloat> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v3, v9
 ; VI-NEXT:    v_mov_b32_e32 v5, v8
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB83_3:
-; VI-NEXT:    s_branch .LBB83_2
-; VI-NEXT:  .LBB83_4:
+; VI-NEXT:  .LBB83_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -24635,10 +25529,18 @@ define inreg <4 x double> @bitcast_v16bf16_to_v4f64_scalar(<16 x bfloat> inreg %
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB83_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB83_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB83_4
-; GFX9-NEXT:  .LBB83_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB83_3
+; GFX9-NEXT:  .LBB83_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB83_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB83_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s23, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -24794,9 +25696,7 @@ define inreg <4 x double> @bitcast_v16bf16_to_v4f64_scalar(<16 x bfloat> inreg %
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v8, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v9, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB83_3:
-; GFX9-NEXT:    s_branch .LBB83_2
-; GFX9-NEXT:  .LBB83_4:
+; GFX9-NEXT:  .LBB83_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -24816,11 +25716,16 @@ define inreg <4 x double> @bitcast_v16bf16_to_v4f64_scalar(<16 x bfloat> inreg %
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB83_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB83_4
-; GFX11-TRUE16-NEXT:  .LBB83_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB83_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-TRUE16-NEXT:  .LBB83_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB83_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s8, s7, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s7, s7, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s8
@@ -24979,8 +25884,6 @@ define inreg <4 x double> @bitcast_v16bf16_to_v4f64_scalar(<16 x bfloat> inreg %
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v10
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v9.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB83_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB83_2
 ; GFX11-TRUE16-NEXT:  .LBB83_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -24997,11 +25900,16 @@ define inreg <4 x double> @bitcast_v16bf16_to_v4f64_scalar(<16 x bfloat> inreg %
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB83_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB83_4
-; GFX11-FAKE16-NEXT:  .LBB83_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB83_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-FAKE16-NEXT:  .LBB83_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB83_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s8, s7, 16
 ; GFX11-FAKE16-NEXT:    s_and_b32 s7, s7, 0xffff0000
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s8
@@ -25177,8 +26085,6 @@ define inreg <4 x double> @bitcast_v16bf16_to_v4f64_scalar(<16 x bfloat> inreg %
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v12, 16, v9
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB83_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB83_2
 ; GFX11-FAKE16-NEXT:  .LBB83_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -25742,7 +26648,7 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB85_3
+; SI-NEXT:    s_cbranch_scc0 .LBB85_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s75, s23, 24
 ; SI-NEXT:    s_lshr_b32 s74, s23, 16
@@ -25768,8 +26674,40 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB85_4
-; SI-NEXT:  .LBB85_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[46:47], 0
+; SI-NEXT:    s_branch .LBB85_3
+; SI-NEXT:  .LBB85_2:
+; SI-NEXT:    s_mov_b64 s[46:47], -1
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:  .LBB85_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB85_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[50:51], s[22:23], 1.0
 ; SI-NEXT:    v_add_f64 v[37:38], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[48:49], s[16:17], 1.0
@@ -25798,34 +26736,8 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v49
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v49
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 8, v49
-; SI-NEXT:    s_branch .LBB85_5
-; SI-NEXT:  .LBB85_3:
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    s_branch .LBB85_2
-; SI-NEXT:  .LBB85_4:
+; SI-NEXT:    s_branch .LBB85_6
+; SI-NEXT:  .LBB85_5:
 ; SI-NEXT:    v_mov_b32_e32 v51, s23
 ; SI-NEXT:    v_mov_b32_e32 v38, s21
 ; SI-NEXT:    v_mov_b32_e32 v36, s19
@@ -25858,7 +26770,7 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v25, s8
 ; SI-NEXT:    v_mov_b32_e32 v24, s6
 ; SI-NEXT:    v_mov_b32_e32 v27, s4
-; SI-NEXT:  .LBB85_5: ; %end
+; SI-NEXT:  .LBB85_6: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v2, v0
 ; SI-NEXT:    v_mov_b32_e32 v0, v48
 ; SI-NEXT:    v_mov_b32_e32 v4, v49
@@ -25877,7 +26789,7 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB85_3
+; VI-NEXT:    s_cbranch_scc0 .LBB85_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s43, s23, 24
 ; VI-NEXT:    s_lshr_b32 s42, s23, 16
@@ -25903,8 +26815,40 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB85_4
-; VI-NEXT:  .LBB85_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[12:13], 0
+; VI-NEXT:    s_branch .LBB85_3
+; VI-NEXT:  .LBB85_2:
+; VI-NEXT:    s_mov_b64 s[12:13], -1
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr24
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr25
+; VI-NEXT:    ; implicit-def: $sgpr26
+; VI-NEXT:    ; implicit-def: $sgpr27
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr28
+; VI-NEXT:    ; implicit-def: $sgpr29
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:  .LBB85_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB85_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    v_add_f64 v[8:9], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[16:17], s[20:21], 1.0
@@ -25933,34 +26877,8 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; VI-NEXT:    v_lshrrev_b32_e32 v5, 8, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; VI-NEXT:    v_lshrrev_b32_e32 v35, 8, v0
-; VI-NEXT:    s_branch .LBB85_5
-; VI-NEXT:  .LBB85_3:
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr24
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr25
-; VI-NEXT:    ; implicit-def: $sgpr26
-; VI-NEXT:    ; implicit-def: $sgpr27
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr28
-; VI-NEXT:    ; implicit-def: $sgpr29
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    s_branch .LBB85_2
-; VI-NEXT:  .LBB85_4:
+; VI-NEXT:    s_branch .LBB85_6
+; VI-NEXT:  .LBB85_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v8, s18
 ; VI-NEXT:    v_mov_b32_e32 v16, s20
@@ -25993,7 +26911,7 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v11, s6
 ; VI-NEXT:    v_mov_b32_e32 v19, s8
 ; VI-NEXT:    v_mov_b32_e32 v27, s10
-; VI-NEXT:  .LBB85_5: ; %end
+; VI-NEXT:  .LBB85_6: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v4, v1
 ; VI-NEXT:    v_mov_b32_e32 v12, v9
 ; VI-NEXT:    v_mov_b32_e32 v20, v17
@@ -26008,7 +26926,7 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB85_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB85_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s43, s23, 24
 ; GFX9-NEXT:    s_lshr_b32 s42, s23, 16
@@ -26034,8 +26952,40 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB85_4
-; GFX9-NEXT:  .LBB85_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[12:13], 0
+; GFX9-NEXT:    s_branch .LBB85_3
+; GFX9-NEXT:  .LBB85_2:
+; GFX9-NEXT:    s_mov_b64 s[12:13], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr24
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr25
+; GFX9-NEXT:    ; implicit-def: $sgpr26
+; GFX9-NEXT:    ; implicit-def: $sgpr27
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr28
+; GFX9-NEXT:    ; implicit-def: $sgpr29
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:  .LBB85_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB85_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[20:21], 1.0
@@ -26064,34 +27014,8 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v35, 8, v0
-; GFX9-NEXT:    s_branch .LBB85_5
-; GFX9-NEXT:  .LBB85_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr24
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr25
-; GFX9-NEXT:    ; implicit-def: $sgpr26
-; GFX9-NEXT:    ; implicit-def: $sgpr27
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr28
-; GFX9-NEXT:    ; implicit-def: $sgpr29
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    s_branch .LBB85_2
-; GFX9-NEXT:  .LBB85_4:
+; GFX9-NEXT:    s_branch .LBB85_6
+; GFX9-NEXT:  .LBB85_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s20
@@ -26124,7 +27048,7 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s10
-; GFX9-NEXT:  .LBB85_5: ; %end
+; GFX9-NEXT:  .LBB85_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v1
 ; GFX9-NEXT:    v_mov_b32_e32 v12, v9
 ; GFX9-NEXT:    v_mov_b32_e32 v20, v17
@@ -26140,7 +27064,7 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s12, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB85_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB85_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s28, s19, 24
 ; GFX11-NEXT:    s_lshr_b32 s27, s19, 16
@@ -26166,9 +27090,40 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-NEXT:    s_cbranch_vccnz .LBB85_4
-; GFX11-NEXT:  .LBB85_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB85_3
+; GFX11-NEXT:  .LBB85_2:
+; GFX11-NEXT:    s_mov_b32 s12, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr20
+; GFX11-NEXT:    ; implicit-def: $sgpr21
+; GFX11-NEXT:    ; implicit-def: $sgpr22
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr23
+; GFX11-NEXT:    ; implicit-def: $sgpr24
+; GFX11-NEXT:    ; implicit-def: $sgpr25
+; GFX11-NEXT:    ; implicit-def: $sgpr29
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr26
+; GFX11-NEXT:    ; implicit-def: $sgpr27
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:  .LBB85_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s12, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB85_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[32:33], s[18:19], 1.0
 ; GFX11-NEXT:    v_add_f64 v[34:35], s[16:17], 1.0
 ; GFX11-NEXT:    v_add_f64 v[36:37], s[2:3], 1.0
@@ -26199,34 +27154,8 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v39
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v38
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v38
-; GFX11-NEXT:    s_branch .LBB85_5
-; GFX11-NEXT:  .LBB85_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr20
-; GFX11-NEXT:    ; implicit-def: $sgpr21
-; GFX11-NEXT:    ; implicit-def: $sgpr22
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr23
-; GFX11-NEXT:    ; implicit-def: $sgpr24
-; GFX11-NEXT:    ; implicit-def: $sgpr25
-; GFX11-NEXT:    ; implicit-def: $sgpr29
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr26
-; GFX11-NEXT:    ; implicit-def: $sgpr27
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    s_branch .LBB85_2
-; GFX11-NEXT:  .LBB85_4:
+; GFX11-NEXT:    s_branch .LBB85_6
+; GFX11-NEXT:  .LBB85_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v38, s0 :: v_dual_mov_b32 v33, s19
 ; GFX11-NEXT:    v_dual_mov_b32 v36, s2 :: v_dual_mov_b32 v35, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v34, s16 :: v_dual_mov_b32 v37, s3
@@ -26247,7 +27176,7 @@ define inreg <32 x i8> @bitcast_v4f64_to_v32i8_scalar(<4 x double> inreg %a, i32
 ; GFX11-NEXT:    v_mov_b32_e32 v13, s20
 ; GFX11-NEXT:    v_mov_b32_e32 v7, s15
 ; GFX11-NEXT:    v_mov_b32_e32 v5, s13
-; GFX11-NEXT:  .LBB85_5: ; %end
+; GFX11-NEXT:  .LBB85_6: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v0, v38
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v39
 ; GFX11-NEXT:    v_mov_b32_e32 v8, v36
@@ -27242,7 +28171,7 @@ define inreg <4 x double> @bitcast_v32i8_to_v4f64_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s62, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s63, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB87_4
+; SI-NEXT:    s_cbranch_scc0 .LBB87_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -27316,8 +28245,17 @@ define inreg <4 x double> @bitcast_v32i8_to_v4f64_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
 ; SI-NEXT:    s_or_b32 s12, s13, s12
 ; SI-NEXT:    s_or_b32 s11, s11, s12
-; SI-NEXT:    s_cbranch_execnz .LBB87_3
-; SI-NEXT:  .LBB87_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB87_3
+; SI-NEXT:  .LBB87_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
+; SI-NEXT:  .LBB87_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB87_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -27422,7 +28360,7 @@ define inreg <4 x double> @bitcast_v32i8_to_v4f64_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s9, s9, 0x3000000
 ; SI-NEXT:    s_add_i32 s10, s10, 0x3000000
 ; SI-NEXT:    s_add_i32 s11, s11, 0x3000000
-; SI-NEXT:  .LBB87_3: ; %end
+; SI-NEXT:  .LBB87_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -27432,9 +28370,6 @@ define inreg <4 x double> @bitcast_v32i8_to_v4f64_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s10
 ; SI-NEXT:    v_mov_b32_e32 v7, s11
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB87_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11
-; SI-NEXT:    s_branch .LBB87_2
 ;
 ; VI-LABEL: bitcast_v32i8_to_v4f64_scalar:
 ; VI:       ; %bb.0:
@@ -27459,7 +28394,7 @@ define inreg <4 x double> @bitcast_v32i8_to_v4f64_scalar(<32 x i8> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s46, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s47, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB87_4
+; VI-NEXT:    s_cbranch_scc0 .LBB87_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -27510,8 +28445,17 @@ define inreg <4 x double> @bitcast_v32i8_to_v4f64_scalar(<32 x i8> inreg %a, i32
 ; VI-NEXT:    v_perm_b32 v7, s7, v9, v7
 ; VI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    s_cbranch_execnz .LBB87_3
-; VI-NEXT:  .LBB87_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB87_3
+; VI-NEXT:  .LBB87_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; VI-NEXT:  .LBB87_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB87_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
@@ -27593,11 +28537,8 @@ define inreg <4 x double> @bitcast_v32i8_to_v4f64_scalar(<32 x i8> inreg %a, i32
 ; VI-NEXT:    v_add_u32_e32 v5, vcc, 0x3000000, v5
 ; VI-NEXT:    v_add_u32_e32 v6, vcc, 0x3000000, v6
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, 0x3000000, v7
-; VI-NEXT:  .LBB87_3: ; %end
+; VI-NEXT:  .LBB87_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB87_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; VI-NEXT:    s_branch .LBB87_2
 ;
 ; GFX9-LABEL: bitcast_v32i8_to_v4f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -27622,7 +28563,7 @@ define inreg <4 x double> @bitcast_v32i8_to_v4f64_scalar(<32 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s46, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s47, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB87_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB87_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -27673,8 +28614,17 @@ define inreg <4 x double> @bitcast_v32i8_to_v4f64_scalar(<32 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_perm_b32 v7, s7, v9, v7
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; GFX9-NEXT:    v_or_b32_e32 v7, v8, v7
-; GFX9-NEXT:    s_cbranch_execnz .LBB87_3
-; GFX9-NEXT:  .LBB87_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB87_3
+; GFX9-NEXT:  .LBB87_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX9-NEXT:  .LBB87_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB87_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
@@ -27749,11 +28699,8 @@ define inreg <4 x double> @bitcast_v32i8_to_v4f64_scalar(<32 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_add_u32_e32 v8, 0x300, v8
 ; GFX9-NEXT:    v_add_u32_sdwa v7, v7, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v7, v8, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB87_3: ; %end
+; GFX9-NEXT:  .LBB87_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB87_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX9-NEXT:    s_branch .LBB87_2
 ;
 ; GFX11-LABEL: bitcast_v32i8_to_v4f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -27775,7 +28722,7 @@ define inreg <4 x double> @bitcast_v32i8_to_v4f64_scalar(<32 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_readfirstlane_b32 s41, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB87_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB87_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
@@ -27811,9 +28758,17 @@ define inreg <4 x double> @bitcast_v32i8_to_v4f64_scalar(<32 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_or_b32_e32 v5, v10, v6
 ; GFX11-NEXT:    v_or_b32_e32 v6, v12, v9
 ; GFX11-NEXT:    v_or_b32_e32 v7, v13, v11
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB87_3
-; GFX11-NEXT:  .LBB87_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB87_3
+; GFX11-NEXT:  .LBB87_2:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX11-NEXT:  .LBB87_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB87_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v3, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
@@ -27887,11 +28842,8 @@ define inreg <4 x double> @bitcast_v32i8_to_v4f64_scalar(<32 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_or_b32_e32 v5, v8, v9
 ; GFX11-NEXT:    v_or_b32_e32 v6, v10, v11
 ; GFX11-NEXT:    v_or_b32_e32 v7, v12, v13
-; GFX11-NEXT:  .LBB87_3: ; %end
+; GFX11-NEXT:  .LBB87_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB87_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX11-NEXT:    s_branch .LBB87_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -28164,7 +29116,7 @@ define inreg <16 x half> @bitcast_v16i16_to_v16f16_scalar(<16 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s40, s17, 16
 ; SI-NEXT:    s_lshr_b32 s44, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB89_4
+; SI-NEXT:    s_cbranch_scc0 .LBB89_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s40, 16
@@ -28194,12 +29146,28 @@ define inreg <16 x half> @bitcast_v16i16_to_v16f16_scalar(<16 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[58:59], 16
 ; SI-NEXT:    s_lshr_b64 s[24:25], s[60:61], 16
 ; SI-NEXT:    s_lshr_b64 s[26:27], s[62:63], 16
+; SI-NEXT:    s_mov_b64 s[28:29], 0
 ; SI-NEXT:    s_mov_b32 s11, s57
 ; SI-NEXT:    s_mov_b32 s9, s59
 ; SI-NEXT:    s_mov_b32 s7, s61
 ; SI-NEXT:    s_mov_b32 s5, s63
-; SI-NEXT:    s_cbranch_execnz .LBB89_3
-; SI-NEXT:  .LBB89_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB89_3
+; SI-NEXT:  .LBB89_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:  .LBB89_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s13, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s13, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB89_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s47, 16
@@ -28248,7 +29216,7 @@ define inreg <16 x half> @bitcast_v16i16_to_v16f16_scalar(<16 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s41, s9, 16
 ; SI-NEXT:    s_lshr_b32 s42, s7, 16
 ; SI-NEXT:    s_lshr_b32 s43, s5, 16
-; SI-NEXT:  .LBB89_3: ; %end
+; SI-NEXT:  .LBB89_5: ; %end
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s12
@@ -28282,25 +29250,23 @@ define inreg <16 x half> @bitcast_v16i16_to_v16f16_scalar(<16 x i16> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v6, s4
 ; SI-NEXT:    v_mov_b32_e32 v7, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB89_4:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    s_branch .LBB89_2
 ;
 ; VI-LABEL: bitcast_v16i16_to_v16f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB89_4
+; VI-NEXT:    s_cbranch_scc0 .LBB89_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB89_3
-; VI-NEXT:  .LBB89_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB89_3
+; VI-NEXT:  .LBB89_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB89_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB89_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s6, s17, 0xffff0000
 ; VI-NEXT:    s_add_i32 s7, s17, 3
@@ -28341,7 +29307,7 @@ define inreg <16 x half> @bitcast_v16i16_to_v16f16_scalar(<16 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB89_3: ; %end
+; VI-NEXT:  .LBB89_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -28351,17 +29317,23 @@ define inreg <16 x half> @bitcast_v16i16_to_v16f16_scalar(<16 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB89_4:
-; VI-NEXT:    s_branch .LBB89_2
 ;
 ; GFX9-LABEL: bitcast_v16i16_to_v16f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB89_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB89_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB89_4
-; GFX9-NEXT:  .LBB89_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB89_3
+; GFX9-NEXT:  .LBB89_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB89_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB89_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v7, s23, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v6, s22, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v5, s21, 3 op_sel_hi:[1,0]
@@ -28371,9 +29343,7 @@ define inreg <16 x half> @bitcast_v16i16_to_v16f16_scalar(<16 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB89_3:
-; GFX9-NEXT:    s_branch .LBB89_2
-; GFX9-NEXT:  .LBB89_4:
+; GFX9-NEXT:  .LBB89_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -28393,11 +29363,16 @@ define inreg <16 x half> @bitcast_v16i16_to_v16f16_scalar(<16 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB89_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB89_4
-; GFX11-NEXT:  .LBB89_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB89_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB89_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB89_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v7, s7, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v6, s6, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v5, s5, 3 op_sel_hi:[1,0]
@@ -28407,8 +29382,6 @@ define inreg <16 x half> @bitcast_v16i16_to_v16f16_scalar(<16 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB89_3:
-; GFX11-NEXT:    s_branch .LBB89_2
 ; GFX11-NEXT:  .LBB89_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -28656,10 +29629,18 @@ define inreg <16 x i16> @bitcast_v16f16_to_v16i16_scalar(<16 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s6, s17, 16
 ; SI-NEXT:    s_lshr_b32 s13, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB91_3
+; SI-NEXT:    s_cbranch_scc0 .LBB91_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB91_4
-; SI-NEXT:  .LBB91_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB91_3
+; SI-NEXT:  .LBB91_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB91_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB91_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s13
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s12
@@ -28728,10 +29709,8 @@ define inreg <16 x i16> @bitcast_v16f16_to_v16i16_scalar(<16 x half> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[14:15], v[0:1], 16
 ; SI-NEXT:    v_lshr_b64 v[12:13], v[2:3], 16
 ; SI-NEXT:    v_lshr_b64 v[8:9], v[6:7], 16
-; SI-NEXT:    s_branch .LBB91_5
-; SI-NEXT:  .LBB91_3:
-; SI-NEXT:    s_branch .LBB91_2
-; SI-NEXT:  .LBB91_4:
+; SI-NEXT:    s_branch .LBB91_6
+; SI-NEXT:  .LBB91_5:
 ; SI-NEXT:    v_mov_b32_e32 v17, s10
 ; SI-NEXT:    v_mov_b32_e32 v21, s8
 ; SI-NEXT:    v_mov_b32_e32 v22, s7
@@ -28748,7 +29727,7 @@ define inreg <16 x i16> @bitcast_v16f16_to_v16i16_scalar(<16 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v12, s12
 ; SI-NEXT:    v_mov_b32_e32 v10, s11
 ; SI-NEXT:    v_mov_b32_e32 v8, s9
-; SI-NEXT:  .LBB91_5: ; %end
+; SI-NEXT:  .LBB91_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v14
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v16
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
@@ -28779,10 +29758,18 @@ define inreg <16 x i16> @bitcast_v16f16_to_v16i16_scalar(<16 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB91_3
+; VI-NEXT:    s_cbranch_scc0 .LBB91_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB91_4
-; VI-NEXT:  .LBB91_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB91_3
+; VI-NEXT:  .LBB91_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB91_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB91_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
@@ -28825,9 +29812,7 @@ define inreg <16 x i16> @bitcast_v16f16_to_v16i16_scalar(<16 x half> inreg %a, i
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v10
 ; VI-NEXT:    v_or_b32_e32 v0, v8, v9
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB91_3:
-; VI-NEXT:    s_branch .LBB91_2
-; VI-NEXT:  .LBB91_4:
+; VI-NEXT:  .LBB91_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -28842,10 +29827,18 @@ define inreg <16 x i16> @bitcast_v16f16_to_v16i16_scalar(<16 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB91_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB91_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB91_4
-; GFX9-NEXT:  .LBB91_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB91_3
+; GFX9-NEXT:  .LBB91_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB91_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB91_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v7, s23, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v6, s22, v0 op_sel_hi:[1,0]
@@ -28856,9 +29849,7 @@ define inreg <16 x i16> @bitcast_v16f16_to_v16i16_scalar(<16 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB91_3:
-; GFX9-NEXT:    s_branch .LBB91_2
-; GFX9-NEXT:  .LBB91_4:
+; GFX9-NEXT:  .LBB91_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -28878,11 +29869,16 @@ define inreg <16 x i16> @bitcast_v16f16_to_v16i16_scalar(<16 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB91_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB91_4
-; GFX11-NEXT:  .LBB91_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB91_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB91_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB91_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v7, 0x200, s7 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v6, 0x200, s6 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v5, 0x200, s5 op_sel_hi:[0,1]
@@ -28892,8 +29888,6 @@ define inreg <16 x i16> @bitcast_v16f16_to_v16i16_scalar(<16 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB91_3:
-; GFX11-NEXT:    s_branch .LBB91_2
 ; GFX11-NEXT:  .LBB91_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -29163,7 +30157,7 @@ define inreg <16 x bfloat> @bitcast_v16i16_to_v16bf16_scalar(<16 x i16> inreg %a
 ; SI-NEXT:    s_lshr_b32 s41, s17, 16
 ; SI-NEXT:    s_lshr_b32 s40, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB93_4
+; SI-NEXT:    s_cbranch_scc0 .LBB93_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s25, s16, 16
 ; SI-NEXT:    s_lshl_b32 s29, s40, 16
@@ -29181,8 +30175,32 @@ define inreg <16 x bfloat> @bitcast_v16i16_to_v16bf16_scalar(<16 x i16> inreg %a
 ; SI-NEXT:    s_lshl_b32 s12, s46, 16
 ; SI-NEXT:    s_lshl_b32 s6, s23, 16
 ; SI-NEXT:    s_lshl_b32 s9, s47, 16
-; SI-NEXT:    s_cbranch_execnz .LBB93_3
-; SI-NEXT:  .LBB93_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB93_3
+; SI-NEXT:  .LBB93_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:  .LBB93_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB93_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s47, 16
@@ -29239,7 +30257,7 @@ define inreg <16 x bfloat> @bitcast_v16i16_to_v16bf16_scalar(<16 x i16> inreg %a
 ; SI-NEXT:    s_lshl_b32 s7, s5, 16
 ; SI-NEXT:    s_and_b32 s9, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s4, 16
-; SI-NEXT:  .LBB93_3: ; %end
+; SI-NEXT:  .LBB93_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s29
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s25
@@ -29273,33 +30291,23 @@ define inreg <16 x bfloat> @bitcast_v16i16_to_v16bf16_scalar(<16 x i16> inreg %a
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[7:8], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB93_4:
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    s_branch .LBB93_2
 ;
 ; VI-LABEL: bitcast_v16i16_to_v16bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB93_4
+; VI-NEXT:    s_cbranch_scc0 .LBB93_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB93_3
-; VI-NEXT:  .LBB93_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB93_3
+; VI-NEXT:  .LBB93_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB93_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB93_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s6, s17, 0xffff0000
 ; VI-NEXT:    s_add_i32 s7, s17, 3
@@ -29340,7 +30348,7 @@ define inreg <16 x bfloat> @bitcast_v16i16_to_v16bf16_scalar(<16 x i16> inreg %a
 ; VI-NEXT:    s_add_i32 s18, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB93_3: ; %end
+; VI-NEXT:  .LBB93_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -29350,17 +30358,23 @@ define inreg <16 x bfloat> @bitcast_v16i16_to_v16bf16_scalar(<16 x i16> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v6, s22
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB93_4:
-; VI-NEXT:    s_branch .LBB93_2
 ;
 ; GFX9-LABEL: bitcast_v16i16_to_v16bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB93_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB93_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB93_4
-; GFX9-NEXT:  .LBB93_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB93_3
+; GFX9-NEXT:  .LBB93_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB93_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB93_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v7, s23, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v6, s22, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v5, s21, 3 op_sel_hi:[1,0]
@@ -29370,9 +30384,7 @@ define inreg <16 x bfloat> @bitcast_v16i16_to_v16bf16_scalar(<16 x i16> inreg %a
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB93_3:
-; GFX9-NEXT:    s_branch .LBB93_2
-; GFX9-NEXT:  .LBB93_4:
+; GFX9-NEXT:  .LBB93_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -29392,11 +30404,16 @@ define inreg <16 x bfloat> @bitcast_v16i16_to_v16bf16_scalar(<16 x i16> inreg %a
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB93_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB93_4
-; GFX11-NEXT:  .LBB93_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB93_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB93_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB93_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v7, s7, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v6, s6, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v5, s5, 3 op_sel_hi:[1,0]
@@ -29406,8 +30423,6 @@ define inreg <16 x bfloat> @bitcast_v16i16_to_v16bf16_scalar(<16 x i16> inreg %a
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB93_3:
-; GFX11-NEXT:    s_branch .LBB93_2
 ; GFX11-NEXT:  .LBB93_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -30235,11 +31250,11 @@ define inreg <16 x i16> @bitcast_v16bf16_to_v16i16_scalar(<16 x bfloat> inreg %a
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
 ; SI-NEXT:    v_mul_f32_e64 v31, 1.0, s16
 ; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s19
-; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s17
-; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s18
+; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s17
+; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s18
 ; SI-NEXT:    v_mul_f32_e64 v30, 1.0, s15
 ; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s14
-; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s13
+; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s13
 ; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s12
 ; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s11
 ; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s10
@@ -30247,33 +31262,57 @@ define inreg <16 x i16> @bitcast_v16bf16_to_v16i16_scalar(<16 x bfloat> inreg %a
 ; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s8
 ; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s6
-; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s5
+; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s5
 ; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s4
-; SI-NEXT:    s_cbranch_scc0 .LBB95_4
+; SI-NEXT:    s_cbranch_scc0 .LBB95_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v31
 ; SI-NEXT:    v_lshrrev_b32_e32 v23, 16, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v12
+; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v4
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v30
 ; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v6
 ; SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v2
+; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v29
 ; SI-NEXT:    v_lshrrev_b32_e32 v25, 16, v28
 ; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v10
 ; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v27
 ; SI-NEXT:    v_lshrrev_b32_e32 v26, 16, v15
 ; SI-NEXT:    v_lshrrev_b32_e32 v16, 16, v8
-; SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v21
-; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v4
+; SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v12
+; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v19
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v17
-; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v19
-; SI-NEXT:    s_cbranch_execnz .LBB95_3
-; SI-NEXT:  .LBB95_2: ; %cmp.true
+; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v21
+; SI-NEXT:    s_branch .LBB95_3
+; SI-NEXT:  .LBB95_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    ; implicit-def: $vgpr23
+; SI-NEXT:    ; implicit-def: $vgpr22
+; SI-NEXT:    ; implicit-def: $vgpr5
+; SI-NEXT:    ; implicit-def: $vgpr24
+; SI-NEXT:    ; implicit-def: $vgpr20
+; SI-NEXT:    ; implicit-def: $vgpr13
+; SI-NEXT:    ; implicit-def: $vgpr25
+; SI-NEXT:    ; implicit-def: $vgpr18
+; SI-NEXT:    ; implicit-def: $vgpr14
+; SI-NEXT:    ; implicit-def: $vgpr26
+; SI-NEXT:    ; implicit-def: $vgpr16
+; SI-NEXT:    ; implicit-def: $vgpr11
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:    ; implicit-def: $vgpr9
+; SI-NEXT:    ; implicit-def: $vgpr7
+; SI-NEXT:  .LBB95_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB95_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v1
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v31
-; SI-NEXT:    v_add_f32_e32 v23, 0x40c00000, v1
+; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v1
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
-; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v23
+; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v3
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v30
 ; SI-NEXT:    v_add_f32_e32 v5, 0x40c00000, v1
@@ -30281,11 +31320,11 @@ define inreg <16 x i16> @bitcast_v16bf16_to_v16i16_scalar(<16 x bfloat> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v1
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[5:6], 16
-; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v29
-; SI-NEXT:    v_add_f32_e32 v6, 0x40c00000, v3
-; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v28
-; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v3
-; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v3
+; SI-NEXT:    v_and_b32_e32 v7, 0xffff0000, v28
+; SI-NEXT:    v_and_b32_e32 v6, 0xffff0000, v29
+; SI-NEXT:    v_add_f32_e32 v11, 0x40c00000, v7
+; SI-NEXT:    v_add_f32_e32 v6, 0x40c00000, v6
+; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v11
 ; SI-NEXT:    v_lshr_b64 v[13:14], v[6:7], 16
 ; SI-NEXT:    v_and_b32_e32 v7, 0xffff0000, v15
 ; SI-NEXT:    v_and_b32_e32 v6, 0xffff0000, v27
@@ -30293,39 +31332,39 @@ define inreg <16 x i16> @bitcast_v16bf16_to_v16i16_scalar(<16 x bfloat> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v6, 0x40c00000, v6
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v9
 ; SI-NEXT:    v_lshr_b64 v[14:15], v[6:7], 16
-; SI-NEXT:    v_and_b32_e32 v6, 0xffff0000, v19
+; SI-NEXT:    v_and_b32_e32 v6, 0xffff0000, v21
 ; SI-NEXT:    v_add_f32_e32 v15, 0x40c00000, v6
 ; SI-NEXT:    v_and_b32_e32 v6, 0xffff0000, v8
 ; SI-NEXT:    v_add_f32_e32 v6, 0x40c00000, v6
 ; SI-NEXT:    v_lshrrev_b32_e32 v16, 16, v6
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v2
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[15:16], 16
-; SI-NEXT:    v_add_f32_e32 v2, 0x40c00000, v2
 ; SI-NEXT:    v_and_b32_e32 v8, 0xffff0000, v17
-; SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v2
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v21
+; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v2
 ; SI-NEXT:    v_add_f32_e32 v17, 0x40c00000, v8
 ; SI-NEXT:    v_and_b32_e32 v8, 0xffff0000, v10
-; SI-NEXT:    v_add_f32_e32 v21, 0x40c00000, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v12
+; SI-NEXT:    v_add_f32_e32 v2, 0x40c00000, v2
 ; SI-NEXT:    v_add_f32_e32 v8, 0x40c00000, v8
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v2
+; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v1
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v12
 ; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v8
-; SI-NEXT:    v_and_b32_e32 v8, 0xffff0000, v3
-; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v4
-; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v1
+; SI-NEXT:    v_add_f32_e32 v21, 0x40c00000, v1
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v4
 ; SI-NEXT:    v_and_b32_e32 v6, 0xffff0000, v9
 ; SI-NEXT:    v_lshr_b64 v[9:10], v[17:18], 16
-; SI-NEXT:    v_add_f32_e32 v19, 0x40c00000, v3
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v19
+; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v1
+; SI-NEXT:    v_and_b32_e32 v8, 0xffff0000, v11
+; SI-NEXT:    v_add_f32_e32 v19, 0x40c00000, v10
 ; SI-NEXT:    v_lshr_b64 v[11:12], v[21:22], 16
+; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v3
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[19:20], 16
-; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v23
 ; SI-NEXT:    v_lshr_b64 v[23:24], v[10:11], 16
 ; SI-NEXT:    v_lshr_b64 v[24:25], v[2:3], 16
 ; SI-NEXT:    v_lshr_b64 v[25:26], v[8:9], 16
 ; SI-NEXT:    v_lshr_b64 v[26:27], v[6:7], 16
-; SI-NEXT:  .LBB95_3: ; %end
+; SI-NEXT:  .LBB95_5: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v23
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v11
@@ -30351,33 +31390,23 @@ define inreg <16 x i16> @bitcast_v16bf16_to_v16i16_scalar(<16 x bfloat> inreg %a
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v16
 ; SI-NEXT:    v_or_b32_e32 v7, v7, v8
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB95_4:
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    ; implicit-def: $vgpr23
-; SI-NEXT:    ; implicit-def: $vgpr22
-; SI-NEXT:    ; implicit-def: $vgpr5
-; SI-NEXT:    ; implicit-def: $vgpr24
-; SI-NEXT:    ; implicit-def: $vgpr20
-; SI-NEXT:    ; implicit-def: $vgpr13
-; SI-NEXT:    ; implicit-def: $vgpr25
-; SI-NEXT:    ; implicit-def: $vgpr18
-; SI-NEXT:    ; implicit-def: $vgpr14
-; SI-NEXT:    ; implicit-def: $vgpr26
-; SI-NEXT:    ; implicit-def: $vgpr16
-; SI-NEXT:    ; implicit-def: $vgpr11
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    ; implicit-def: $vgpr9
-; SI-NEXT:    ; implicit-def: $vgpr7
-; SI-NEXT:    s_branch .LBB95_2
 ;
 ; VI-LABEL: bitcast_v16bf16_to_v16i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB95_3
+; VI-NEXT:    s_cbranch_scc0 .LBB95_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB95_4
-; VI-NEXT:  .LBB95_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB95_3
+; VI-NEXT:  .LBB95_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB95_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB95_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v10, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v10
@@ -30528,9 +31557,7 @@ define inreg <16 x i16> @bitcast_v16bf16_to_v16i16_scalar(<16 x bfloat> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v5, v13
 ; VI-NEXT:    v_mov_b32_e32 v7, v15
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB95_3:
-; VI-NEXT:    s_branch .LBB95_2
-; VI-NEXT:  .LBB95_4:
+; VI-NEXT:  .LBB95_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -30545,10 +31572,18 @@ define inreg <16 x i16> @bitcast_v16bf16_to_v16i16_scalar(<16 x bfloat> inreg %a
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB95_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB95_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB95_4
-; GFX9-NEXT:  .LBB95_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB95_3
+; GFX9-NEXT:  .LBB95_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB95_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB95_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -30696,9 +31731,7 @@ define inreg <16 x i16> @bitcast_v16bf16_to_v16i16_scalar(<16 x bfloat> inreg %a
 ; GFX9-NEXT:    v_and_or_b32 v1, v9, v13, v1
 ; GFX9-NEXT:    v_and_or_b32 v0, v0, v13, v8
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB95_3:
-; GFX9-NEXT:    s_branch .LBB95_2
-; GFX9-NEXT:  .LBB95_4:
+; GFX9-NEXT:  .LBB95_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -30718,11 +31751,16 @@ define inreg <16 x i16> @bitcast_v16bf16_to_v16i16_scalar(<16 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB95_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB95_4
-; GFX11-TRUE16-NEXT:  .LBB95_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB95_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-TRUE16-NEXT:  .LBB95_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB95_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s8, s0, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s8
@@ -30859,8 +31897,6 @@ define inreg <16 x i16> @bitcast_v16bf16_to_v16i16_scalar(<16 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v16, v21, vcc_lo
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v17.h
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB95_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB95_2
 ; GFX11-TRUE16-NEXT:  .LBB95_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -30877,11 +31913,16 @@ define inreg <16 x i16> @bitcast_v16bf16_to_v16i16_scalar(<16 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB95_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB95_4
-; GFX11-FAKE16-NEXT:  .LBB95_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB95_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-FAKE16-NEXT:  .LBB95_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB95_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_and_b32 s8, s0, 0xffff0000
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s8
@@ -31029,8 +32070,6 @@ define inreg <16 x i16> @bitcast_v16bf16_to_v16i16_scalar(<16 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v9, v14
 ; GFX11-FAKE16-NEXT:    v_and_or_b32 v0, 0xffff0000, v0, v15
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB95_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB95_2
 ; GFX11-FAKE16-NEXT:  .LBB95_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -31715,7 +32754,7 @@ define inreg <32 x i8> @bitcast_v16i16_to_v32i8_scalar(<16 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s72, s17, 16
 ; SI-NEXT:    s_lshr_b32 s76, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB97_4
+; SI-NEXT:    s_cbranch_scc0 .LBB97_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s76, 16
@@ -31761,8 +32800,40 @@ define inreg <32 x i8> @bitcast_v16i16_to_v32i8_scalar(<16 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[10:11], 24
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[10:11], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[10:11], 8
-; SI-NEXT:    s_cbranch_execnz .LBB97_3
-; SI-NEXT:  .LBB97_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[62:63], 0
+; SI-NEXT:    s_branch .LBB97_3
+; SI-NEXT:  .LBB97_2:
+; SI-NEXT:    s_mov_b64 s[62:63], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:  .LBB97_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[62:63], s[62:63], exec
+; SI-NEXT:    s_cselect_b32 s43, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s43, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB97_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s79, 16
@@ -31827,7 +32898,7 @@ define inreg <32 x i8> @bitcast_v16i16_to_v32i8_scalar(<16 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s89, s11, 24
 ; SI-NEXT:    s_lshr_b32 s75, s11, 16
 ; SI-NEXT:    s_lshr_b32 s88, s11, 8
-; SI-NEXT:  .LBB97_3: ; %end
+; SI-NEXT:  .LBB97_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s24
 ; SI-NEXT:    v_mov_b32_e32 v2, s14
@@ -31861,38 +32932,12 @@ define inreg <32 x i8> @bitcast_v16i16_to_v32i8_scalar(<16 x i16> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v30, s75
 ; SI-NEXT:    v_mov_b32_e32 v31, s89
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB97_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    s_branch .LBB97_2
 ;
 ; VI-LABEL: bitcast_v16i16_to_v32i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB97_4
+; VI-NEXT:    s_cbranch_scc0 .LBB97_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s14, s23, 24
 ; VI-NEXT:    s_lshr_b32 s15, s23, 16
@@ -31918,8 +32963,40 @@ define inreg <32 x i8> @bitcast_v16i16_to_v32i8_scalar(<16 x i16> inreg %a, i32
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[10:11], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB97_3
-; VI-NEXT:  .LBB97_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[12:13], 0
+; VI-NEXT:    s_branch .LBB97_3
+; VI-NEXT:  .LBB97_2:
+; VI-NEXT:    s_mov_b64 s[12:13], -1
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr29
+; VI-NEXT:    ; implicit-def: $sgpr28
+; VI-NEXT:    ; implicit-def: $sgpr27
+; VI-NEXT:    ; implicit-def: $sgpr26
+; VI-NEXT:    ; implicit-def: $sgpr25
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr24
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:  .LBB97_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB97_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s17, 3
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -31984,7 +33061,7 @@ define inreg <32 x i8> @bitcast_v16i16_to_v32i8_scalar(<16 x i16> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s57, s17, 8
 ; VI-NEXT:    s_lshr_b32 s58, s16, 16
 ; VI-NEXT:    s_lshr_b32 s59, s16, 8
-; VI-NEXT:  .LBB97_3: ; %end
+; VI-NEXT:  .LBB97_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s59
 ; VI-NEXT:    v_mov_b32_e32 v2, s58
@@ -32018,38 +33095,12 @@ define inreg <32 x i8> @bitcast_v16i16_to_v32i8_scalar(<16 x i16> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v30, s15
 ; VI-NEXT:    v_mov_b32_e32 v31, s14
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB97_4:
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr29
-; VI-NEXT:    ; implicit-def: $sgpr28
-; VI-NEXT:    ; implicit-def: $sgpr27
-; VI-NEXT:    ; implicit-def: $sgpr26
-; VI-NEXT:    ; implicit-def: $sgpr25
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr24
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    s_branch .LBB97_2
 ;
 ; GFX9-LABEL: bitcast_v16i16_to_v32i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB97_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB97_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s14, s23, 24
 ; GFX9-NEXT:    s_lshr_b32 s15, s23, 16
@@ -32075,8 +33126,40 @@ define inreg <32 x i8> @bitcast_v16i16_to_v32i8_scalar(<16 x i16> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB97_4
-; GFX9-NEXT:  .LBB97_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[12:13], 0
+; GFX9-NEXT:    s_branch .LBB97_3
+; GFX9-NEXT:  .LBB97_2:
+; GFX9-NEXT:    s_mov_b64 s[12:13], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr29
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr28
+; GFX9-NEXT:    ; implicit-def: $sgpr27
+; GFX9-NEXT:    ; implicit-def: $sgpr26
+; GFX9-NEXT:    ; implicit-def: $sgpr24
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr25
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:  .LBB97_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB97_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v9, s19, 3 op_sel_hi:[1,0]
@@ -32109,34 +33192,8 @@ define inreg <32 x i8> @bitcast_v16i16_to_v32i8_scalar(<16 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v35, 8, v0
-; GFX9-NEXT:    s_branch .LBB97_5
-; GFX9-NEXT:  .LBB97_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr29
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr28
-; GFX9-NEXT:    ; implicit-def: $sgpr27
-; GFX9-NEXT:    ; implicit-def: $sgpr26
-; GFX9-NEXT:    ; implicit-def: $sgpr24
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr25
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    s_branch .LBB97_2
-; GFX9-NEXT:  .LBB97_4:
+; GFX9-NEXT:    s_branch .LBB97_6
+; GFX9-NEXT:  .LBB97_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s18
@@ -32169,7 +33226,7 @@ define inreg <32 x i8> @bitcast_v16i16_to_v32i8_scalar(<16 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:  .LBB97_5: ; %end
+; GFX9-NEXT:  .LBB97_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v1
 ; GFX9-NEXT:    v_mov_b32_e32 v12, v9
 ; GFX9-NEXT:    v_mov_b32_e32 v20, v17
@@ -32185,7 +33242,7 @@ define inreg <32 x i8> @bitcast_v16i16_to_v32i8_scalar(<16 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s12, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB97_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB97_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s13, s19, 24
 ; GFX11-NEXT:    s_lshr_b32 s14, s19, 16
@@ -32211,9 +33268,40 @@ define inreg <32 x i8> @bitcast_v16i16_to_v32i8_scalar(<16 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-NEXT:    s_cbranch_vccnz .LBB97_4
-; GFX11-NEXT:  .LBB97_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB97_3
+; GFX11-NEXT:  .LBB97_2:
+; GFX11-NEXT:    s_mov_b32 s12, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr29
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:    ; implicit-def: $sgpr27
+; GFX11-NEXT:    ; implicit-def: $sgpr26
+; GFX11-NEXT:    ; implicit-def: $sgpr24
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr25
+; GFX11-NEXT:    ; implicit-def: $sgpr23
+; GFX11-NEXT:    ; implicit-def: $sgpr22
+; GFX11-NEXT:    ; implicit-def: $sgpr21
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr20
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:  .LBB97_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s12, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB97_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v39, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v37, s3, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v35, s17, 3 op_sel_hi:[1,0]
@@ -32246,34 +33334,8 @@ define inreg <32 x i8> @bitcast_v16i16_to_v32i8_scalar(<16 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v39
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v38
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v38
-; GFX11-NEXT:    s_branch .LBB97_5
-; GFX11-NEXT:  .LBB97_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr29
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    ; implicit-def: $sgpr27
-; GFX11-NEXT:    ; implicit-def: $sgpr26
-; GFX11-NEXT:    ; implicit-def: $sgpr24
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr25
-; GFX11-NEXT:    ; implicit-def: $sgpr23
-; GFX11-NEXT:    ; implicit-def: $sgpr22
-; GFX11-NEXT:    ; implicit-def: $sgpr21
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr20
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    s_branch .LBB97_2
-; GFX11-NEXT:  .LBB97_4:
+; GFX11-NEXT:    s_branch .LBB97_6
+; GFX11-NEXT:  .LBB97_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v38, s0 :: v_dual_mov_b32 v39, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v36, s2 :: v_dual_mov_b32 v37, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v34, s16 :: v_dual_mov_b32 v35, s17
@@ -32294,7 +33356,7 @@ define inreg <32 x i8> @bitcast_v16i16_to_v32i8_scalar(<16 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_mov_b32_e32 v19, s8
 ; GFX11-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX11-NEXT:    v_mov_b32_e32 v3, s4
-; GFX11-NEXT:  .LBB97_5: ; %end
+; GFX11-NEXT:  .LBB97_6: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v0, v38
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v39
 ; GFX11-NEXT:    v_mov_b32_e32 v8, v36
@@ -33340,7 +34402,7 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s46, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s47, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB99_4
+; SI-NEXT:    s_cbranch_scc0 .LBB99_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s8, s20, 0xff
 ; SI-NEXT:    s_lshl_b32 s9, s21, 8
@@ -33426,8 +34488,28 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s41, s45, 16
 ; SI-NEXT:    s_lshr_b32 s43, s88, 16
 ; SI-NEXT:    s_lshr_b32 s13, s89, 16
-; SI-NEXT:    s_cbranch_execnz .LBB99_3
-; SI-NEXT:  .LBB99_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[44:45], 0
+; SI-NEXT:    s_branch .LBB99_3
+; SI-NEXT:  .LBB99_2:
+; SI-NEXT:    s_mov_b64 s[44:45], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:  .LBB99_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[44:45], s[44:45], exec
+; SI-NEXT:    s_cselect_b32 s44, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s44, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB99_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s79, s79, 3
 ; SI-NEXT:    s_and_b32 s4, s79, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s78, 8
@@ -33540,7 +34622,7 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s41, s7, 16
 ; SI-NEXT:    s_lshr_b32 s43, s5, 16
 ; SI-NEXT:    s_lshr_b32 s13, s9, 16
-; SI-NEXT:  .LBB99_3: ; %end
+; SI-NEXT:  .LBB99_5: ; %end
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s12
@@ -33574,20 +34656,6 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s8
 ; SI-NEXT:    v_mov_b32_e32 v7, s9
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB99_4:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    s_branch .LBB99_2
 ;
 ; VI-LABEL: bitcast_v32i8_to_v16i16_scalar:
 ; VI:       ; %bb.0:
@@ -33612,7 +34680,7 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s10, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB99_4
+; VI-NEXT:    s_cbranch_scc0 .LBB99_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -33663,8 +34731,17 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; VI-NEXT:    v_perm_b32 v7, s47, v9, v7
 ; VI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    s_cbranch_execnz .LBB99_3
-; VI-NEXT:  .LBB99_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB99_3
+; VI-NEXT:  .LBB99_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; VI-NEXT:  .LBB99_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB99_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s47, s47, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s46
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -33746,11 +34823,8 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; VI-NEXT:    v_add_u32_e32 v5, vcc, 0x3000000, v5
 ; VI-NEXT:    v_add_u32_e32 v6, vcc, 0x3000000, v6
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, 0x3000000, v7
-; VI-NEXT:  .LBB99_3: ; %end
+; VI-NEXT:  .LBB99_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB99_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; VI-NEXT:    s_branch .LBB99_2
 ;
 ; GFX9-LABEL: bitcast_v32i8_to_v16i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -33775,7 +34849,7 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB99_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB99_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v4, 0xc0c0004
@@ -33832,8 +34906,17 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_lshl_or_b32 v7, s56, 16, v4
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s4
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s5
-; GFX9-NEXT:    s_cbranch_execnz .LBB99_3
-; GFX9-NEXT:  .LBB99_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB99_3
+; GFX9-NEXT:  .LBB99_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX9-NEXT:  .LBB99_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB99_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s47, s47, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s46
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
@@ -33915,11 +34998,8 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_lshl_or_b32 v3, v9, 16, v3
 ; GFX9-NEXT:    v_lshl_or_b32 v4, v8, 16, v4
 ; GFX9-NEXT:    v_lshl_or_b32 v7, v15, 16, v7
-; GFX9-NEXT:  .LBB99_3: ; %end
+; GFX9-NEXT:  .LBB99_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB99_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX9-NEXT:    s_branch .LBB99_2
 ;
 ; GFX11-TRUE16-LABEL: bitcast_v32i8_to_v16i16_scalar:
 ; GFX11-TRUE16:       ; %bb.0:
@@ -33941,7 +35021,7 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s12, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s42, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB99_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB99_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_and_b32 s43, s28, 0xff
@@ -33984,9 +35064,17 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v8.l
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, s43
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, s44
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB99_3
-; GFX11-TRUE16-NEXT:  .LBB99_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB99_3
+; GFX11-TRUE16-NEXT:  .LBB99_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s42, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX11-TRUE16-NEXT:  .LBB99_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB99_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_add_i32 s13, s13, 3
 ; GFX11-TRUE16-NEXT:    s_add_i32 s41, s41, 3
@@ -34044,11 +35132,8 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, v8.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v6.h, v10.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v9.l
-; GFX11-TRUE16-NEXT:  .LBB99_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB99_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB99_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX11-TRUE16-NEXT:    s_branch .LBB99_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v32i8_to_v16i16_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -34070,7 +35155,7 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s42, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB99_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB99_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_and_b32 s43, s28, 0xff
@@ -34118,9 +35203,17 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v3, v8, 16, v7
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v7, s46, 16, v4
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, s43
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB99_3
-; GFX11-FAKE16-NEXT:  .LBB99_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB99_3
+; GFX11-FAKE16-NEXT:  .LBB99_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s42, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX11-FAKE16-NEXT:  .LBB99_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB99_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_add_i32 s41, s41, 3
 ; GFX11-FAKE16-NEXT:    s_add_i32 s14, s14, 3
@@ -34186,11 +35279,8 @@ define inreg <16 x i16> @bitcast_v32i8_to_v16i16_scalar(<32 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v5, v5, 16, v10
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v6, v9, 16, v13
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v7, v7, 16, v14
-; GFX11-FAKE16-NEXT:  .LBB99_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB99_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB99_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX11-FAKE16-NEXT:    s_branch .LBB99_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -34487,7 +35577,7 @@ define inreg <16 x bfloat> @bitcast_v16f16_to_v16bf16_scalar(<16 x half> inreg %
 ; SI-NEXT:    s_lshr_b32 s7, s17, 16
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB101_3
+; SI-NEXT:    s_cbranch_scc0 .LBB101_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s13, s16, 16
 ; SI-NEXT:    s_lshl_b32 s15, s6, 16
@@ -34505,8 +35595,32 @@ define inreg <16 x bfloat> @bitcast_v16f16_to_v16bf16_scalar(<16 x half> inreg %
 ; SI-NEXT:    s_lshl_b32 s45, s12, 16
 ; SI-NEXT:    s_lshl_b32 s46, s23, 16
 ; SI-NEXT:    s_lshl_b32 s47, s14, 16
-; SI-NEXT:    s_cbranch_execnz .LBB101_4
-; SI-NEXT:  .LBB101_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB101_3
+; SI-NEXT:  .LBB101_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:  .LBB101_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB101_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s14
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s23
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s12
@@ -34571,26 +35685,8 @@ define inreg <16 x bfloat> @bitcast_v16f16_to_v16bf16_scalar(<16 x half> inreg %
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
-; SI-NEXT:    s_branch .LBB101_5
-; SI-NEXT:  .LBB101_3:
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    s_branch .LBB101_2
-; SI-NEXT:  .LBB101_4:
+; SI-NEXT:    s_branch .LBB101_6
+; SI-NEXT:  .LBB101_5:
 ; SI-NEXT:    v_mov_b32_e32 v9, s47
 ; SI-NEXT:    v_mov_b32_e32 v8, s46
 ; SI-NEXT:    v_mov_b32_e32 v10, s45
@@ -34607,7 +35703,7 @@ define inreg <16 x bfloat> @bitcast_v16f16_to_v16bf16_scalar(<16 x half> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v2, s24
 ; SI-NEXT:    v_mov_b32_e32 v1, s15
 ; SI-NEXT:    v_mov_b32_e32 v0, s13
-; SI-NEXT:  .LBB101_5: ; %end
+; SI-NEXT:  .LBB101_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
@@ -34646,10 +35742,18 @@ define inreg <16 x bfloat> @bitcast_v16f16_to_v16bf16_scalar(<16 x half> inreg %
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB101_3
+; VI-NEXT:    s_cbranch_scc0 .LBB101_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB101_4
-; VI-NEXT:  .LBB101_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB101_3
+; VI-NEXT:  .LBB101_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB101_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB101_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
@@ -34692,9 +35796,7 @@ define inreg <16 x bfloat> @bitcast_v16f16_to_v16bf16_scalar(<16 x half> inreg %
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v10
 ; VI-NEXT:    v_or_b32_e32 v0, v8, v9
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB101_3:
-; VI-NEXT:    s_branch .LBB101_2
-; VI-NEXT:  .LBB101_4:
+; VI-NEXT:  .LBB101_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -34709,10 +35811,18 @@ define inreg <16 x bfloat> @bitcast_v16f16_to_v16bf16_scalar(<16 x half> inreg %
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB101_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB101_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB101_4
-; GFX9-NEXT:  .LBB101_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB101_3
+; GFX9-NEXT:  .LBB101_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB101_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB101_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v7, s23, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v6, s22, v0 op_sel_hi:[1,0]
@@ -34723,9 +35833,7 @@ define inreg <16 x bfloat> @bitcast_v16f16_to_v16bf16_scalar(<16 x half> inreg %
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB101_3:
-; GFX9-NEXT:    s_branch .LBB101_2
-; GFX9-NEXT:  .LBB101_4:
+; GFX9-NEXT:  .LBB101_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -34745,11 +35853,16 @@ define inreg <16 x bfloat> @bitcast_v16f16_to_v16bf16_scalar(<16 x half> inreg %
 ; GFX11-NEXT:    s_mov_b32 s4, s16
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB101_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB101_4
-; GFX11-NEXT:  .LBB101_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB101_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB101_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB101_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v7, 0x200, s7 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v6, 0x200, s6 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v5, 0x200, s5 op_sel_hi:[0,1]
@@ -34759,8 +35872,6 @@ define inreg <16 x bfloat> @bitcast_v16f16_to_v16bf16_scalar(<16 x half> inreg %
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB101_3:
-; GFX11-NEXT:    s_branch .LBB101_2
 ; GFX11-NEXT:  .LBB101_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -35620,7 +36731,7 @@ define inreg <16 x half> @bitcast_v16bf16_to_v16f16_scalar(<16 x bfloat> inreg %
 ; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s15
 ; SI-NEXT:    v_mul_f32_e64 v27, 1.0, s11
 ; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s7
-; SI-NEXT:    s_cbranch_scc0 .LBB103_4
+; SI-NEXT:    s_cbranch_scc0 .LBB103_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v37
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v36
@@ -35640,37 +36751,57 @@ define inreg <16 x half> @bitcast_v16bf16_to_v16f16_scalar(<16 x bfloat> inreg %
 ; SI-NEXT:    v_lshrrev_b32_e32 v25, 16, v48
 ; SI-NEXT:    v_lshr_b64 v[33:34], v[2:3], 16
 ; SI-NEXT:    v_lshr_b64 v[21:22], v[29:30], 16
+; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    v_lshr_b64 v[11:12], v[12:13], 16
 ; SI-NEXT:    v_lshr_b64 v[8:9], v[9:10], 16
 ; SI-NEXT:    v_lshr_b64 v[34:35], v[6:7], 16
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[31:32], 16
 ; SI-NEXT:    v_lshr_b64 v[22:23], v[27:28], 16
 ; SI-NEXT:    v_lshr_b64 v[25:26], v[24:25], 16
-; SI-NEXT:    s_cbranch_execnz .LBB103_3
-; SI-NEXT:  .LBB103_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB103_3
+; SI-NEXT:  .LBB103_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr5
+; SI-NEXT:    ; implicit-def: $vgpr11
+; SI-NEXT:    ; implicit-def: $vgpr13
+; SI-NEXT:    ; implicit-def: $vgpr21
+; SI-NEXT:    ; implicit-def: $vgpr33
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:    ; implicit-def: $vgpr22
+; SI-NEXT:    ; implicit-def: $vgpr8
+; SI-NEXT:    ; implicit-def: $vgpr25
+; SI-NEXT:    ; implicit-def: $vgpr34
+; SI-NEXT:    ; implicit-def: $vgpr10
+; SI-NEXT:    ; implicit-def: $vgpr7
+; SI-NEXT:  .LBB103_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB103_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v51
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v31
-; SI-NEXT:    v_add_f32_e32 v12, 0x40c00000, v2
+; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v2
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v12
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v3
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[1:2], 16
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v50
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v29
-; SI-NEXT:    v_add_f32_e32 v13, 0x40c00000, v2
+; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v2
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v13
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v4
 ; SI-NEXT:    v_lshr_b64 v[21:22], v[1:2], 16
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v49
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v27
-; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v2
+; SI-NEXT:    v_add_f32_e32 v9, 0x40c00000, v2
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v3
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v9
 ; SI-NEXT:    v_lshr_b64 v[22:23], v[1:2], 16
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v48
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v24
-; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v2
+; SI-NEXT:    v_add_f32_e32 v6, 0x40c00000, v2
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v4
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v6
 ; SI-NEXT:    v_lshr_b64 v[25:26], v[1:2], 16
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v15
 ; SI-NEXT:    v_add_f32_e32 v15, 0x40c00000, v1
@@ -35690,21 +36821,21 @@ define inreg <16 x half> @bitcast_v16bf16_to_v16f16_scalar(<16 x bfloat> inreg %
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v36
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_and_b32_e32 v6, 0xffff0000, v4
-; SI-NEXT:    v_and_b32_e32 v9, 0xffff0000, v3
-; SI-NEXT:    v_lshr_b64 v[3:4], v[19:20], 16
+; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v4
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
+; SI-NEXT:    v_and_b32_e32 v12, 0xffff0000, v3
+; SI-NEXT:    v_lshr_b64 v[3:4], v[19:20], 16
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[15:16], 16
 ; SI-NEXT:    v_lshr_b64 v[10:11], v[17:18], 16
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v13
 ; SI-NEXT:    v_lshr_b64 v[13:14], v[0:1], 16
-; SI-NEXT:    v_and_b32_e32 v12, 0xffff0000, v12
+; SI-NEXT:    v_and_b32_e32 v6, 0xffff0000, v6
+; SI-NEXT:    v_and_b32_e32 v9, 0xffff0000, v9
 ; SI-NEXT:    v_lshr_b64 v[33:34], v[2:3], 16
 ; SI-NEXT:    v_lshr_b64 v[11:12], v[12:13], 16
 ; SI-NEXT:    v_lshr_b64 v[8:9], v[9:10], 16
 ; SI-NEXT:    v_lshr_b64 v[34:35], v[6:7], 16
-; SI-NEXT:  .LBB103_3: ; %end
+; SI-NEXT:  .LBB103_5: ; %end
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v13
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v11
@@ -35730,29 +36861,23 @@ define inreg <16 x half> @bitcast_v16bf16_to_v16f16_scalar(<16 x bfloat> inreg %
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v16
 ; SI-NEXT:    v_or_b32_e32 v7, v7, v8
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB103_4:
-; SI-NEXT:    ; implicit-def: $vgpr5
-; SI-NEXT:    ; implicit-def: $vgpr11
-; SI-NEXT:    ; implicit-def: $vgpr13
-; SI-NEXT:    ; implicit-def: $vgpr21
-; SI-NEXT:    ; implicit-def: $vgpr33
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    ; implicit-def: $vgpr22
-; SI-NEXT:    ; implicit-def: $vgpr8
-; SI-NEXT:    ; implicit-def: $vgpr25
-; SI-NEXT:    ; implicit-def: $vgpr34
-; SI-NEXT:    ; implicit-def: $vgpr10
-; SI-NEXT:    ; implicit-def: $vgpr7
-; SI-NEXT:    s_branch .LBB103_2
 ;
 ; VI-LABEL: bitcast_v16bf16_to_v16f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB103_3
+; VI-NEXT:    s_cbranch_scc0 .LBB103_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB103_4
-; VI-NEXT:  .LBB103_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB103_3
+; VI-NEXT:  .LBB103_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB103_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB103_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v10, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v10
@@ -35903,9 +37028,7 @@ define inreg <16 x half> @bitcast_v16bf16_to_v16f16_scalar(<16 x bfloat> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v5, v13
 ; VI-NEXT:    v_mov_b32_e32 v7, v15
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB103_3:
-; VI-NEXT:    s_branch .LBB103_2
-; VI-NEXT:  .LBB103_4:
+; VI-NEXT:  .LBB103_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -35920,10 +37043,18 @@ define inreg <16 x half> @bitcast_v16bf16_to_v16f16_scalar(<16 x bfloat> inreg %
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB103_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB103_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB103_4
-; GFX9-NEXT:  .LBB103_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB103_3
+; GFX9-NEXT:  .LBB103_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB103_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB103_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -36079,9 +37210,7 @@ define inreg <16 x half> @bitcast_v16bf16_to_v16f16_scalar(<16 x bfloat> inreg %
 ; GFX9-NEXT:    v_lshl_or_b32 v1, v1, 16, v8
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v16, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB103_3:
-; GFX9-NEXT:    s_branch .LBB103_2
-; GFX9-NEXT:  .LBB103_4:
+; GFX9-NEXT:  .LBB103_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -36101,11 +37230,16 @@ define inreg <16 x half> @bitcast_v16bf16_to_v16f16_scalar(<16 x bfloat> inreg %
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB103_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB103_4
-; GFX11-TRUE16-NEXT:  .LBB103_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB103_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-TRUE16-NEXT:  .LBB103_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB103_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s8, s0, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s8
@@ -36260,8 +37394,6 @@ define inreg <16 x half> @bitcast_v16bf16_to_v16f16_scalar(<16 x bfloat> inreg %
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v7, 16, v12
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v15.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB103_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB103_2
 ; GFX11-TRUE16-NEXT:  .LBB103_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -36278,11 +37410,16 @@ define inreg <16 x half> @bitcast_v16bf16_to_v16f16_scalar(<16 x bfloat> inreg %
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB103_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB103_4
-; GFX11-FAKE16-NEXT:  .LBB103_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB103_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-FAKE16-NEXT:  .LBB103_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB103_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_and_b32 s8, s0, 0xffff0000
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s8
@@ -36447,8 +37584,6 @@ define inreg <16 x half> @bitcast_v16bf16_to_v16f16_scalar(<16 x bfloat> inreg %
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v1, v8, 16, v13
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v0, 16, v14
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB103_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB103_2
 ; GFX11-FAKE16-NEXT:  .LBB103_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -37140,7 +38275,7 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s72, s17, 16
 ; SI-NEXT:    s_lshr_b32 s73, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB105_3
+; SI-NEXT:    s_cbranch_scc0 .LBB105_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s73, 16
@@ -37186,8 +38321,40 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; SI-NEXT:    s_bfe_u32 s25, s74, 0x80008
 ; SI-NEXT:    s_bfe_u32 s29, s76, 0x80008
 ; SI-NEXT:    s_bfe_u32 s41, s78, 0x80008
-; SI-NEXT:    s_cbranch_execnz .LBB105_4
-; SI-NEXT:  .LBB105_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[62:63], 0
+; SI-NEXT:    s_branch .LBB105_3
+; SI-NEXT:  .LBB105_2:
+; SI-NEXT:    s_mov_b64 s[62:63], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr5
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:  .LBB105_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[62:63], s[62:63], exec
+; SI-NEXT:    s_cselect_b32 s43, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s43, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB105_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s79
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s22
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
@@ -37272,34 +38439,8 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[48:49], 24
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[48:49], 8
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 8, v49
-; SI-NEXT:    s_branch .LBB105_5
-; SI-NEXT:  .LBB105_3:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr5
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr24
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    s_branch .LBB105_2
-; SI-NEXT:  .LBB105_4:
+; SI-NEXT:    s_branch .LBB105_6
+; SI-NEXT:  .LBB105_5:
 ; SI-NEXT:    v_mov_b32_e32 v30, s78
 ; SI-NEXT:    v_mov_b32_e32 v22, s76
 ; SI-NEXT:    v_mov_b32_e32 v14, s74
@@ -37332,7 +38473,7 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v27, s46
 ; SI-NEXT:    v_mov_b32_e32 v24, s56
 ; SI-NEXT:    v_mov_b32_e32 v25, s58
-; SI-NEXT:  .LBB105_5: ; %end
+; SI-NEXT:  .LBB105_6: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v2, v0
 ; SI-NEXT:    v_mov_b32_e32 v0, v48
 ; SI-NEXT:    v_mov_b32_e32 v4, v49
@@ -37351,7 +38492,7 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB105_3
+; VI-NEXT:    s_cbranch_scc0 .LBB105_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s40, s23, 24
 ; VI-NEXT:    s_lshr_b32 s44, s23, 16
@@ -37377,8 +38518,40 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB105_4
-; VI-NEXT:  .LBB105_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[12:13], 0
+; VI-NEXT:    s_branch .LBB105_3
+; VI-NEXT:  .LBB105_2:
+; VI-NEXT:    s_mov_b64 s[12:13], -1
+; VI-NEXT:    ; implicit-def: $sgpr26
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr27
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr28
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr24
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr29
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr25
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:  .LBB105_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB105_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x200
 ; VI-NEXT:    v_add_f16_e32 v6, s4, v1
@@ -37436,34 +38609,8 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; VI-NEXT:    v_bfe_u32 v23, v22, 8, 8
 ; VI-NEXT:    v_bfe_u32 v15, v14, 8, 8
 ; VI-NEXT:    v_bfe_u32 v7, v6, 8, 8
-; VI-NEXT:    s_branch .LBB105_5
-; VI-NEXT:  .LBB105_3:
-; VI-NEXT:    ; implicit-def: $sgpr26
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr27
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr28
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr24
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr29
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr25
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    s_branch .LBB105_2
-; VI-NEXT:  .LBB105_4:
+; VI-NEXT:    s_branch .LBB105_6
+; VI-NEXT:  .LBB105_5:
 ; VI-NEXT:    v_mov_b32_e32 v2, s59
 ; VI-NEXT:    v_mov_b32_e32 v6, s58
 ; VI-NEXT:    v_mov_b32_e32 v10, s57
@@ -37496,7 +38643,7 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v19, s8
 ; VI-NEXT:    v_mov_b32_e32 v11, s6
 ; VI-NEXT:    v_mov_b32_e32 v3, s4
-; VI-NEXT:  .LBB105_5: ; %end
+; VI-NEXT:  .LBB105_6: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v4, v35
 ; VI-NEXT:    v_mov_b32_e32 v12, v34
 ; VI-NEXT:    v_mov_b32_e32 v20, v33
@@ -37507,7 +38654,7 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB105_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB105_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s14, s23, 24
 ; GFX9-NEXT:    s_lshr_b32 s15, s23, 16
@@ -37533,8 +38680,40 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB105_4
-; GFX9-NEXT:  .LBB105_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[12:13], 0
+; GFX9-NEXT:    s_branch .LBB105_3
+; GFX9-NEXT:  .LBB105_2:
+; GFX9-NEXT:    s_mov_b64 s[12:13], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr29
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr28
+; GFX9-NEXT:    ; implicit-def: $sgpr27
+; GFX9-NEXT:    ; implicit-def: $sgpr26
+; GFX9-NEXT:    ; implicit-def: $sgpr24
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr25
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:  .LBB105_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB105_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v2 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v2 op_sel_hi:[1,0]
@@ -37568,34 +38747,8 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v35, 8, v0
-; GFX9-NEXT:    s_branch .LBB105_5
-; GFX9-NEXT:  .LBB105_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr29
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr28
-; GFX9-NEXT:    ; implicit-def: $sgpr27
-; GFX9-NEXT:    ; implicit-def: $sgpr26
-; GFX9-NEXT:    ; implicit-def: $sgpr24
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr25
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    s_branch .LBB105_2
-; GFX9-NEXT:  .LBB105_4:
+; GFX9-NEXT:    s_branch .LBB105_6
+; GFX9-NEXT:  .LBB105_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s18
@@ -37628,7 +38781,7 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:  .LBB105_5: ; %end
+; GFX9-NEXT:  .LBB105_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v1
 ; GFX9-NEXT:    v_mov_b32_e32 v12, v9
 ; GFX9-NEXT:    v_mov_b32_e32 v20, v17
@@ -37644,7 +38797,7 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s12, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB105_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB105_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s13, s19, 24
 ; GFX11-NEXT:    s_lshr_b32 s14, s19, 16
@@ -37670,9 +38823,40 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-NEXT:    s_cbranch_vccnz .LBB105_4
-; GFX11-NEXT:  .LBB105_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB105_3
+; GFX11-NEXT:  .LBB105_2:
+; GFX11-NEXT:    s_mov_b32 s12, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr29
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:    ; implicit-def: $sgpr27
+; GFX11-NEXT:    ; implicit-def: $sgpr26
+; GFX11-NEXT:    ; implicit-def: $sgpr24
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr25
+; GFX11-NEXT:    ; implicit-def: $sgpr23
+; GFX11-NEXT:    ; implicit-def: $sgpr22
+; GFX11-NEXT:    ; implicit-def: $sgpr21
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr20
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:  .LBB105_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s12, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB105_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v39, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v37, 0x200, s3 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v35, 0x200, s17 op_sel_hi:[0,1]
@@ -37705,34 +38889,8 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v39
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v38
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v38
-; GFX11-NEXT:    s_branch .LBB105_5
-; GFX11-NEXT:  .LBB105_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr29
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    ; implicit-def: $sgpr27
-; GFX11-NEXT:    ; implicit-def: $sgpr26
-; GFX11-NEXT:    ; implicit-def: $sgpr24
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr25
-; GFX11-NEXT:    ; implicit-def: $sgpr23
-; GFX11-NEXT:    ; implicit-def: $sgpr22
-; GFX11-NEXT:    ; implicit-def: $sgpr21
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr20
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    s_branch .LBB105_2
-; GFX11-NEXT:  .LBB105_4:
+; GFX11-NEXT:    s_branch .LBB105_6
+; GFX11-NEXT:  .LBB105_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v38, s0 :: v_dual_mov_b32 v39, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v36, s2 :: v_dual_mov_b32 v37, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v34, s16 :: v_dual_mov_b32 v35, s17
@@ -37753,7 +38911,7 @@ define inreg <32 x i8> @bitcast_v16f16_to_v32i8_scalar(<16 x half> inreg %a, i32
 ; GFX11-NEXT:    v_mov_b32_e32 v19, s8
 ; GFX11-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX11-NEXT:    v_mov_b32_e32 v3, s4
-; GFX11-NEXT:  .LBB105_5: ; %end
+; GFX11-NEXT:  .LBB105_6: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v0, v38
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v39
 ; GFX11-NEXT:    v_mov_b32_e32 v8, v36
@@ -38799,7 +39957,7 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s46, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s47, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB107_4
+; SI-NEXT:    s_cbranch_scc0 .LBB107_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s8, s20, 0xff
 ; SI-NEXT:    s_lshl_b32 s9, s21, 8
@@ -38885,8 +40043,28 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s41, s45, 16
 ; SI-NEXT:    s_lshr_b32 s43, s88, 16
 ; SI-NEXT:    s_lshr_b32 s13, s89, 16
-; SI-NEXT:    s_cbranch_execnz .LBB107_3
-; SI-NEXT:  .LBB107_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[44:45], 0
+; SI-NEXT:    s_branch .LBB107_3
+; SI-NEXT:  .LBB107_2:
+; SI-NEXT:    s_mov_b64 s[44:45], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:  .LBB107_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[44:45], s[44:45], exec
+; SI-NEXT:    s_cselect_b32 s44, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s44, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB107_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s79, s79, 3
 ; SI-NEXT:    s_and_b32 s4, s79, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s78, 8
@@ -38999,7 +40177,7 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s41, s7, 16
 ; SI-NEXT:    s_lshr_b32 s43, s5, 16
 ; SI-NEXT:    s_lshr_b32 s13, s9, 16
-; SI-NEXT:  .LBB107_3: ; %end
+; SI-NEXT:  .LBB107_5: ; %end
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s12
@@ -39033,20 +40211,6 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v6, s8
 ; SI-NEXT:    v_mov_b32_e32 v7, s9
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB107_4:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    s_branch .LBB107_2
 ;
 ; VI-LABEL: bitcast_v32i8_to_v16f16_scalar:
 ; VI:       ; %bb.0:
@@ -39071,7 +40235,7 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s10, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB107_4
+; VI-NEXT:    s_cbranch_scc0 .LBB107_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -39122,8 +40286,17 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; VI-NEXT:    v_perm_b32 v7, s47, v9, v7
 ; VI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    s_cbranch_execnz .LBB107_3
-; VI-NEXT:  .LBB107_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB107_3
+; VI-NEXT:  .LBB107_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; VI-NEXT:  .LBB107_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB107_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s47, s47, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s46
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -39205,11 +40378,8 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; VI-NEXT:    v_add_u32_e32 v5, vcc, 0x3000000, v5
 ; VI-NEXT:    v_add_u32_e32 v6, vcc, 0x3000000, v6
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, 0x3000000, v7
-; VI-NEXT:  .LBB107_3: ; %end
+; VI-NEXT:  .LBB107_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB107_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; VI-NEXT:    s_branch .LBB107_2
 ;
 ; GFX9-LABEL: bitcast_v32i8_to_v16f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -39234,7 +40404,7 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB107_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB107_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v4, 0xc0c0004
@@ -39291,8 +40461,17 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_lshl_or_b32 v7, s56, 16, v4
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s4
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s5
-; GFX9-NEXT:    s_cbranch_execnz .LBB107_3
-; GFX9-NEXT:  .LBB107_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB107_3
+; GFX9-NEXT:  .LBB107_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX9-NEXT:  .LBB107_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB107_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s47, s47, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s46
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
@@ -39374,11 +40553,8 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_lshl_or_b32 v3, v9, 16, v3
 ; GFX9-NEXT:    v_lshl_or_b32 v4, v8, 16, v4
 ; GFX9-NEXT:    v_lshl_or_b32 v7, v15, 16, v7
-; GFX9-NEXT:  .LBB107_3: ; %end
+; GFX9-NEXT:  .LBB107_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB107_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX9-NEXT:    s_branch .LBB107_2
 ;
 ; GFX11-TRUE16-LABEL: bitcast_v32i8_to_v16f16_scalar:
 ; GFX11-TRUE16:       ; %bb.0:
@@ -39400,7 +40576,7 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s12, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s42, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB107_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB107_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_and_b32 s43, s28, 0xff
@@ -39443,9 +40619,17 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v8.l
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, s43
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, s44
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB107_3
-; GFX11-TRUE16-NEXT:  .LBB107_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB107_3
+; GFX11-TRUE16-NEXT:  .LBB107_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s42, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX11-TRUE16-NEXT:  .LBB107_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB107_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_add_i32 s13, s13, 3
 ; GFX11-TRUE16-NEXT:    s_add_i32 s41, s41, 3
@@ -39503,11 +40687,8 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, v8.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v6.h, v10.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v9.l
-; GFX11-TRUE16-NEXT:  .LBB107_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB107_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB107_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX11-TRUE16-NEXT:    s_branch .LBB107_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v32i8_to_v16f16_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -39529,7 +40710,7 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s42, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB107_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB107_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_and_b32 s43, s28, 0xff
@@ -39577,9 +40758,17 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v3, v8, 16, v7
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v7, s46, 16, v4
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, s43
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB107_3
-; GFX11-FAKE16-NEXT:  .LBB107_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB107_3
+; GFX11-FAKE16-NEXT:  .LBB107_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s42, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX11-FAKE16-NEXT:  .LBB107_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB107_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_add_i32 s41, s41, 3
 ; GFX11-FAKE16-NEXT:    s_add_i32 s14, s14, 3
@@ -39645,11 +40834,8 @@ define inreg <16 x half> @bitcast_v32i8_to_v16f16_scalar(<32 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v5, v5, 16, v10
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v6, v9, 16, v13
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v7, v7, 16, v14
-; GFX11-FAKE16-NEXT:  .LBB107_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB107_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB107_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX11-FAKE16-NEXT:    s_branch .LBB107_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -40882,137 +42068,165 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
 ; SI-NEXT:    s_waitcnt expcnt(6)
 ; SI-NEXT:    v_mul_f32_e64 v45, 1.0, s19
-; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s16
-; SI-NEXT:    v_mul_f32_e64 v32, 1.0, s18
+; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s16
+; SI-NEXT:    v_mul_f32_e64 v44, 1.0, s18
 ; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s17
 ; SI-NEXT:    s_waitcnt expcnt(4)
 ; SI-NEXT:    v_mul_f32_e64 v47, 1.0, s14
-; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s15
+; SI-NEXT:    v_mul_f32_e64 v32, 1.0, s15
 ; SI-NEXT:    v_mul_f32_e64 v46, 1.0, s12
 ; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s13
 ; SI-NEXT:    s_waitcnt expcnt(2)
 ; SI-NEXT:    v_mul_f32_e64 v57, 1.0, s10
-; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s11
+; SI-NEXT:    v_mul_f32_e64 v40, 1.0, s11
 ; SI-NEXT:    v_mul_f32_e64 v56, 1.0, s8
 ; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s9
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mul_f32_e64 v59, 1.0, s6
 ; SI-NEXT:    v_mul_f32_e64 v58, 1.0, s4
-; SI-NEXT:    v_mul_f32_e64 v24, 1.0, s7
+; SI-NEXT:    v_mul_f32_e64 v42, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v29, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB109_4
+; SI-NEXT:    s_cbranch_scc0 .LBB109_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v47
-; SI-NEXT:    v_lshrrev_b32_e32 v17, 16, v57
-; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v45
-; SI-NEXT:    v_lshr_b64 v[53:54], v[8:9], 16
+; SI-NEXT:    v_lshrrev_b32_e32 v25, 16, v45
+; SI-NEXT:    v_lshr_b64 v[0:1], v[24:25], 16
+; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v44
+; SI-NEXT:    v_lshrrev_b32_e32 v33, 16, v47
+; SI-NEXT:    v_lshrrev_b32_e32 v41, 16, v57
+; SI-NEXT:    v_lshr_b64 v[1:2], v[5:6], 16
+; SI-NEXT:    v_lshr_b64 v[8:9], v[32:33], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v46
-; SI-NEXT:    v_lshr_b64 v[39:40], v[16:17], 16
+; SI-NEXT:    v_lshr_b64 v[50:51], v[40:41], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v56
-; SI-NEXT:    v_lshrrev_b32_e32 v25, 16, v59
-; SI-NEXT:    v_lshr_b64 v[50:51], v[0:1], 16
-; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v32
-; SI-NEXT:    v_lshr_b64 v[54:55], v[13:14], 16
-; SI-NEXT:    v_lshr_b64 v[40:41], v[21:22], 16
-; SI-NEXT:    v_lshr_b64 v[42:43], v[24:25], 16
+; SI-NEXT:    v_lshrrev_b32_e32 v43, 16, v59
+; SI-NEXT:    v_lshr_b64 v[9:10], v[13:14], 16
+; SI-NEXT:    v_lshr_b64 v[51:52], v[21:22], 16
+; SI-NEXT:    v_lshr_b64 v[53:54], v[42:43], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v30, 16, v58
-; SI-NEXT:    v_lshr_b64 v[51:52], v[5:6], 16
-; SI-NEXT:    v_lshr_b64 v[43:44], v[29:30], 16
+; SI-NEXT:    v_lshr_b64 v[34:35], v[0:1], 16
+; SI-NEXT:    v_lshr_b64 v[54:55], v[29:30], 16
+; SI-NEXT:    v_lshr_b64 v[48:49], v[0:1], 8
+; SI-NEXT:    v_lshr_b64 v[16:17], v[8:9], 16
+; SI-NEXT:    v_lshr_b64 v[38:39], v[8:9], 8
+; SI-NEXT:    v_lshr_b64 v[19:20], v[50:51], 24
+; SI-NEXT:    v_lshr_b64 v[35:36], v[50:51], 16
+; SI-NEXT:    v_lshr_b64 v[3:4], v[0:1], 24
+; SI-NEXT:    v_lshr_b64 v[11:12], v[8:9], 24
+; SI-NEXT:    v_lshr_b64 v[17:18], v[50:51], 8
+; SI-NEXT:    v_lshr_b64 v[27:28], v[53:54], 24
 ; SI-NEXT:    v_lshr_b64 v[36:37], v[53:54], 16
-; SI-NEXT:    v_lshr_b64 v[9:10], v[53:54], 8
-; SI-NEXT:    v_lshr_b64 v[19:20], v[39:40], 24
-; SI-NEXT:    v_lshr_b64 v[34:35], v[39:40], 16
-; SI-NEXT:    v_lshr_b64 v[3:4], v[50:51], 24
-; SI-NEXT:    v_lshr_b64 v[48:49], v[50:51], 16
-; SI-NEXT:    v_lshr_b64 v[1:2], v[50:51], 8
-; SI-NEXT:    v_lshr_b64 v[11:12], v[53:54], 24
-; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v32
+; SI-NEXT:    v_lshr_b64 v[25:26], v[53:54], 8
+; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v44
 ; SI-NEXT:    v_lshrrev_b32_e32 v15, 24, v46
-; SI-NEXT:    v_lshrrev_b32_e32 v10, 8, v51
+; SI-NEXT:    v_lshrrev_b32_e32 v20, 8, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v23, 24, v56
-; SI-NEXT:    v_lshrrev_b32_e32 v20, 8, v54
+; SI-NEXT:    v_lshrrev_b32_e32 v33, 8, v9
 ; SI-NEXT:    v_lshrrev_b32_e32 v31, 24, v58
-; SI-NEXT:    v_lshrrev_b32_e32 v33, 8, v40
-; SI-NEXT:    v_lshrrev_b32_e32 v35, 8, v43
-; SI-NEXT:    v_lshr_b64 v[17:18], v[39:40], 8
-; SI-NEXT:    v_lshr_b64 v[27:28], v[42:43], 24
-; SI-NEXT:    v_lshr_b64 v[37:38], v[42:43], 16
-; SI-NEXT:    v_lshr_b64 v[25:26], v[42:43], 8
-; SI-NEXT:    s_cbranch_execnz .LBB109_3
-; SI-NEXT:  .LBB109_2: ; %cmp.true
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v59
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v24
-; SI-NEXT:    v_add_f32_e32 v2, 0x40c00000, v2
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v2
-; SI-NEXT:    v_lshr_b64 v[42:43], v[1:2], 16
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v29
-; SI-NEXT:    v_add_f32_e32 v29, 0x40c00000, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v58
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v57
-; SI-NEXT:    v_add_f32_e32 v24, 0x40c00000, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v16
-; SI-NEXT:    v_add_f32_e32 v2, 0x40c00000, v2
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v2
-; SI-NEXT:    v_lshr_b64 v[39:40], v[1:2], 16
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v21
-; SI-NEXT:    v_add_f32_e32 v21, 0x40c00000, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v56
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v47
-; SI-NEXT:    v_add_f32_e32 v16, 0x40c00000, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v8
-; SI-NEXT:    v_add_f32_e32 v2, 0x40c00000, v2
+; SI-NEXT:    v_lshrrev_b32_e32 v39, 8, v51
+; SI-NEXT:    v_lshrrev_b32_e32 v49, 8, v54
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB109_3
+; SI-NEXT:  .LBB109_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr48
+; SI-NEXT:    ; implicit-def: $vgpr34
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:    ; implicit-def: $vgpr20
+; SI-NEXT:    ; implicit-def: $vgpr7
+; SI-NEXT:    ; implicit-def: $vgpr38
+; SI-NEXT:    ; implicit-def: $vgpr16
+; SI-NEXT:    ; implicit-def: $vgpr11
+; SI-NEXT:    ; implicit-def: $vgpr33
+; SI-NEXT:    ; implicit-def: $vgpr15
+; SI-NEXT:    ; implicit-def: $vgpr39
+; SI-NEXT:    ; implicit-def: $vgpr23
+; SI-NEXT:    ; implicit-def: $vgpr49
+; SI-NEXT:    ; implicit-def: $vgpr31
+; SI-NEXT:    ; implicit-def: $vgpr17
+; SI-NEXT:    ; implicit-def: $vgpr35
+; SI-NEXT:    ; implicit-def: $vgpr19
+; SI-NEXT:    ; implicit-def: $vgpr25
+; SI-NEXT:    ; implicit-def: $vgpr36
+; SI-NEXT:    ; implicit-def: $vgpr27
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:    ; implicit-def: $vgpr8
+; SI-NEXT:    ; implicit-def: $vgpr50
+; SI-NEXT:    ; implicit-def: $vgpr53
+; SI-NEXT:  .LBB109_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB109_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v59
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v42
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v2
-; SI-NEXT:    v_lshr_b64 v[53:54], v[1:2], 16
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v13
-; SI-NEXT:    v_add_f32_e32 v13, 0x40c00000, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v46
-; SI-NEXT:    v_add_f32_e32 v8, 0x40c00000, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v45
-; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v0
+; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
+; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
+; SI-NEXT:    v_lshr_b64 v[53:54], v[0:1], 16
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v29
+; SI-NEXT:    v_add_f32_e32 v29, 0x40c00000, v0
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v58
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v57
+; SI-NEXT:    v_add_f32_e32 v18, 0x40c00000, v0
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v40
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_lshr_b64 v[50:51], v[0:1], 16
-; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v5
-; SI-NEXT:    v_add_f32_e32 v5, 0x40c00000, v0
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v21
+; SI-NEXT:    v_add_f32_e32 v21, 0x40c00000, v0
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v56
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v47
+; SI-NEXT:    v_add_f32_e32 v23, 0x40c00000, v0
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v32
-; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v8
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
+; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
+; SI-NEXT:    v_lshr_b64 v[8:9], v[0:1], 16
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v13
+; SI-NEXT:    v_add_f32_e32 v13, 0x40c00000, v0
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v46
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v45
+; SI-NEXT:    v_add_f32_e32 v15, 0x40c00000, v0
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v24
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
-; SI-NEXT:    v_lshrrev_b32_e32 v30, 16, v24
-; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v16
-; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v0
-; SI-NEXT:    v_lshr_b64 v[54:55], v[13:14], 16
-; SI-NEXT:    v_lshr_b64 v[43:44], v[29:30], 16
-; SI-NEXT:    v_lshr_b64 v[40:41], v[21:22], 16
-; SI-NEXT:    v_lshr_b64 v[51:52], v[5:6], 16
+; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
+; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v5
+; SI-NEXT:    v_add_f32_e32 v5, 0x40c00000, v1
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v44
+; SI-NEXT:    v_add_f32_e32 v7, 0x40c00000, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v7
+; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v23
+; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v15
+; SI-NEXT:    v_lshr_b64 v[1:2], v[5:6], 16
+; SI-NEXT:    v_lshrrev_b32_e32 v30, 16, v18
+; SI-NEXT:    v_lshr_b64 v[51:52], v[21:22], 16
+; SI-NEXT:    v_lshr_b64 v[9:10], v[13:14], 16
+; SI-NEXT:    v_lshr_b64 v[54:55], v[29:30], 16
+; SI-NEXT:    v_lshr_b64 v[34:35], v[0:1], 16
+; SI-NEXT:    v_lshr_b64 v[16:17], v[8:9], 16
+; SI-NEXT:    v_lshr_b64 v[35:36], v[50:51], 16
+; SI-NEXT:    v_lshr_b64 v[3:4], v[0:1], 24
+; SI-NEXT:    v_lshr_b64 v[48:49], v[0:1], 8
+; SI-NEXT:    v_lshr_b64 v[11:12], v[8:9], 24
+; SI-NEXT:    v_lshr_b64 v[38:39], v[8:9], 8
+; SI-NEXT:    v_lshr_b64 v[19:20], v[50:51], 24
+; SI-NEXT:    v_lshrrev_b32_e32 v31, 24, v18
+; SI-NEXT:    v_lshr_b64 v[17:18], v[50:51], 8
+; SI-NEXT:    v_lshr_b64 v[27:28], v[53:54], 24
 ; SI-NEXT:    v_lshr_b64 v[36:37], v[53:54], 16
-; SI-NEXT:    v_lshr_b64 v[3:4], v[50:51], 24
-; SI-NEXT:    v_lshr_b64 v[48:49], v[50:51], 16
-; SI-NEXT:    v_lshr_b64 v[1:2], v[50:51], 8
-; SI-NEXT:    v_lshr_b64 v[11:12], v[53:54], 24
-; SI-NEXT:    v_lshr_b64 v[9:10], v[53:54], 8
-; SI-NEXT:    v_lshr_b64 v[19:20], v[39:40], 24
-; SI-NEXT:    v_lshr_b64 v[34:35], v[39:40], 16
-; SI-NEXT:    v_lshr_b64 v[17:18], v[39:40], 8
-; SI-NEXT:    v_lshr_b64 v[27:28], v[42:43], 24
-; SI-NEXT:    v_lshr_b64 v[37:38], v[42:43], 16
-; SI-NEXT:    v_lshr_b64 v[25:26], v[42:43], 8
-; SI-NEXT:    v_lshrrev_b32_e32 v10, 8, v51
-; SI-NEXT:    v_lshrrev_b32_e32 v20, 8, v54
-; SI-NEXT:    v_lshrrev_b32_e32 v33, 8, v40
-; SI-NEXT:    v_lshrrev_b32_e32 v35, 8, v43
-; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v0
-; SI-NEXT:    v_lshrrev_b32_e32 v15, 24, v8
-; SI-NEXT:    v_lshrrev_b32_e32 v23, 24, v16
-; SI-NEXT:    v_lshrrev_b32_e32 v31, 24, v24
-; SI-NEXT:  .LBB109_3: ; %end
-; SI-NEXT:    v_mov_b32_e32 v13, v20
-; SI-NEXT:    v_mov_b32_e32 v20, v40
-; SI-NEXT:    v_mov_b32_e32 v24, v42
-; SI-NEXT:    v_mov_b32_e32 v28, v43
+; SI-NEXT:    v_lshr_b64 v[25:26], v[53:54], 8
+; SI-NEXT:    v_lshrrev_b32_e32 v20, 8, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v33, 8, v9
+; SI-NEXT:    v_lshrrev_b32_e32 v39, 8, v51
+; SI-NEXT:    v_lshrrev_b32_e32 v49, 8, v54
+; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v7
+; SI-NEXT:    v_lshrrev_b32_e32 v15, 24, v15
+; SI-NEXT:    v_lshrrev_b32_e32 v23, 24, v23
+; SI-NEXT:  .LBB109_5: ; %end
 ; SI-NEXT:    buffer_load_dword v59, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v58, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v57, off, s[0:3], s32 offset:8 ; 4-byte Folded Reload
@@ -41025,52 +42239,30 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:36 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:40 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:44 ; 4-byte Folded Reload
-; SI-NEXT:    v_mov_b32_e32 v0, v50
-; SI-NEXT:    v_mov_b32_e32 v2, v48
-; SI-NEXT:    v_mov_b32_e32 v4, v51
-; SI-NEXT:    v_mov_b32_e32 v5, v10
-; SI-NEXT:    v_mov_b32_e32 v8, v53
-; SI-NEXT:    v_mov_b32_e32 v10, v36
-; SI-NEXT:    v_mov_b32_e32 v12, v54
-; SI-NEXT:    v_mov_b32_e32 v16, v39
-; SI-NEXT:    v_mov_b32_e32 v18, v34
-; SI-NEXT:    v_mov_b32_e32 v21, v33
-; SI-NEXT:    v_mov_b32_e32 v26, v37
-; SI-NEXT:    v_mov_b32_e32 v29, v35
+; SI-NEXT:    v_mov_b32_e32 v4, v1
+; SI-NEXT:    v_mov_b32_e32 v12, v9
+; SI-NEXT:    v_mov_b32_e32 v1, v48
+; SI-NEXT:    v_mov_b32_e32 v2, v34
+; SI-NEXT:    v_mov_b32_e32 v9, v38
+; SI-NEXT:    v_mov_b32_e32 v10, v16
+; SI-NEXT:    v_mov_b32_e32 v5, v20
+; SI-NEXT:    v_mov_b32_e32 v13, v33
+; SI-NEXT:    v_mov_b32_e32 v16, v50
+; SI-NEXT:    v_mov_b32_e32 v18, v35
+; SI-NEXT:    v_mov_b32_e32 v20, v51
+; SI-NEXT:    v_mov_b32_e32 v21, v39
+; SI-NEXT:    v_mov_b32_e32 v24, v53
+; SI-NEXT:    v_mov_b32_e32 v26, v36
+; SI-NEXT:    v_mov_b32_e32 v28, v54
+; SI-NEXT:    v_mov_b32_e32 v29, v49
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB109_4:
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    ; implicit-def: $vgpr48
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    ; implicit-def: $vgpr10
-; SI-NEXT:    ; implicit-def: $vgpr7
-; SI-NEXT:    ; implicit-def: $vgpr9
-; SI-NEXT:    ; implicit-def: $vgpr36
-; SI-NEXT:    ; implicit-def: $vgpr11
-; SI-NEXT:    ; implicit-def: $vgpr20
-; SI-NEXT:    ; implicit-def: $vgpr15
-; SI-NEXT:    ; implicit-def: $vgpr33
-; SI-NEXT:    ; implicit-def: $vgpr23
-; SI-NEXT:    ; implicit-def: $vgpr35
-; SI-NEXT:    ; implicit-def: $vgpr31
-; SI-NEXT:    ; implicit-def: $vgpr17
-; SI-NEXT:    ; implicit-def: $vgpr34
-; SI-NEXT:    ; implicit-def: $vgpr19
-; SI-NEXT:    ; implicit-def: $vgpr25
-; SI-NEXT:    ; implicit-def: $vgpr37
-; SI-NEXT:    ; implicit-def: $vgpr27
-; SI-NEXT:    ; implicit-def: $vgpr50
-; SI-NEXT:    ; implicit-def: $vgpr53
-; SI-NEXT:    ; implicit-def: $vgpr39
-; SI-NEXT:    ; implicit-def: $vgpr42
-; SI-NEXT:    s_branch .LBB109_2
 ;
 ; VI-LABEL: bitcast_v16bf16_to_v32i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB109_3
+; VI-NEXT:    s_cbranch_scc0 .LBB109_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s57, s23, 24
 ; VI-NEXT:    s_lshr_b32 s56, s23, 16
@@ -41096,8 +42288,40 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB109_4
-; VI-NEXT:  .LBB109_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[12:13], 0
+; VI-NEXT:    s_branch .LBB109_3
+; VI-NEXT:  .LBB109_2:
+; VI-NEXT:    s_mov_b64 s[12:13], -1
+; VI-NEXT:    ; implicit-def: $sgpr25
+; VI-NEXT:    ; implicit-def: $sgpr26
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr24
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr27
+; VI-NEXT:    ; implicit-def: $sgpr28
+; VI-NEXT:    ; implicit-def: $sgpr29
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:  .LBB109_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB109_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v2, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v2
@@ -41271,34 +42495,8 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v5, 8, v4
 ; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 8, v0
-; VI-NEXT:    s_branch .LBB109_5
-; VI-NEXT:  .LBB109_3:
-; VI-NEXT:    ; implicit-def: $sgpr25
-; VI-NEXT:    ; implicit-def: $sgpr26
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr24
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr27
-; VI-NEXT:    ; implicit-def: $sgpr28
-; VI-NEXT:    ; implicit-def: $sgpr29
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    s_branch .LBB109_2
-; VI-NEXT:  .LBB109_4:
+; VI-NEXT:    s_branch .LBB109_6
+; VI-NEXT:  .LBB109_5:
 ; VI-NEXT:    v_mov_b32_e32 v26, s59
 ; VI-NEXT:    v_mov_b32_e32 v25, s58
 ; VI-NEXT:    v_mov_b32_e32 v31, s57
@@ -41331,7 +42529,7 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v37, s8
 ; VI-NEXT:    v_mov_b32_e32 v34, s6
 ; VI-NEXT:    v_mov_b32_e32 v32, s4
-; VI-NEXT:  .LBB109_5: ; %end
+; VI-NEXT:  .LBB109_6: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v3, v32
 ; VI-NEXT:    v_mov_b32_e32 v11, v34
 ; VI-NEXT:    v_mov_b32_e32 v19, v37
@@ -41342,7 +42540,7 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB109_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB109_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s29, s23, 24
 ; GFX9-NEXT:    s_lshr_b32 s58, s23, 16
@@ -41368,8 +42566,40 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB109_4
-; GFX9-NEXT:  .LBB109_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[12:13], 0
+; GFX9-NEXT:    s_branch .LBB109_3
+; GFX9-NEXT:  .LBB109_2:
+; GFX9-NEXT:    s_mov_b64 s[12:13], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr27
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr25
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr24
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr28
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr26
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr29
+; GFX9-NEXT:  .LBB109_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB109_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s17, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -41547,34 +42777,8 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v4
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v3
 ; GFX9-NEXT:    v_lshrrev_b64 v[3:4], 24, v[3:4]
-; GFX9-NEXT:    s_branch .LBB109_5
-; GFX9-NEXT:  .LBB109_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr27
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr25
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr24
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr28
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr26
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr29
-; GFX9-NEXT:    s_branch .LBB109_2
-; GFX9-NEXT:  .LBB109_4:
+; GFX9-NEXT:    s_branch .LBB109_6
+; GFX9-NEXT:  .LBB109_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s22
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s59
 ; GFX9-NEXT:    v_mov_b32_e32 v32, s23
@@ -41607,7 +42811,7 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:  .LBB109_5: ; %end
+; GFX9-NEXT:  .LBB109_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v35
 ; GFX9-NEXT:    v_mov_b32_e32 v12, v34
 ; GFX9-NEXT:    v_mov_b32_e32 v20, v33
@@ -41619,7 +42823,7 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s12, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB109_3
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB109_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s24, s19, 24
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s45, s19, 16
@@ -41645,189 +42849,9 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-TRUE16-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-TRUE16-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB109_4
-; GFX11-TRUE16-NEXT:  .LBB109_2: ; %cmp.true
-; GFX11-TRUE16-NEXT:    s_lshl_b32 s4, s1, 16
-; GFX11-TRUE16-NEXT:    s_and_b32 s1, s1, 0xffff0000
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s1
-; GFX11-TRUE16-NEXT:    s_and_b32 s4, s0, 0xffff0000
-; GFX11-TRUE16-NEXT:    s_and_b32 s1, s3, 0xffff0000
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v3, 0x40c00000, s4
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v2, v0, 16, 1
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v4, v1, 16, 1
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v1
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v0
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v0, v0
-; GFX11-TRUE16-NEXT:    s_lshl_b32 s3, s3, 16
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, v4, v1
-; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v7, 0x40c00000, s3
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v5, 0x40c00000, s0
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v9, v3, 16, 1
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, 0x7fff, v4
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v2, v2, v0
-; GFX11-TRUE16-NEXT:    s_and_b32 s0, s2, 0xffff0000
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v10, v5, 16, 1
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v2, 0x7fff, v2
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v0, v2, v8, vcc_lo
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v1
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v2, v9, v3
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v8, v10, v5
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v9, v7, 16, 1
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v0
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v4, v6, vcc_lo
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v0, 0x400000, v3
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v2, 0x7fff, v2
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v3
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, 0x7fff, v8
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v6, 16, v1
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s1
-; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s18, 16
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v5
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v12, 0x40c00000, s1
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v37.l, v35.l
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v3, v1, 16, 1
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc_lo
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v5
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v13, v12, 16, 1
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v5, v9, v7
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v3, v3, v1
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v8, vcc_lo
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v13, v13, v12
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v8, 0x40c00000, s0
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v3, 0x7fff, v3
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v7, v7
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v4
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v13, 0x7fff, v13
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, 0x7fff, v5
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v5, 0x400000, v7
-; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s2, 16
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v1
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v7, 0x40c00000, s0
-; GFX11-TRUE16-NEXT:    s_and_b32 s0, s17, 0xffff0000
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v5, vcc_lo
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v5, v8, 16, 1
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v1
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v37.h, v6.l
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v36.l, v0.l
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v36.h, v2.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v3, v9, vcc_lo
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v3, v5, v8
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v34, 16, v4
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v4, v7, 16, 1
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v5, 0x40c00000, s0
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v14, 16, v1
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0x7fff, v3
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v3, 0x400000, v8
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, v4, v7
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v8, v8
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 1
-; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s17, 16
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v39.l, v34.l
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v9, 0x40c00000, s0
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc_lo
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v3, 0x7fff, v4
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v4, 0x400000, v7
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v7, v7
-; GFX11-TRUE16-NEXT:    s_and_b32 s0, s16, 0xffff0000
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v10, 16, v1
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, v8, v5
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v5
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v3, v4, vcc_lo
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v4, v9, 16, 1
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v5
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0x7fff, v1
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v5, 0x400000, v9
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v8, 16, v3
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v3, 0x40c00000, s0
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_2) | instid1(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_dual_cndmask_b32 v1, v1, v7 :: v_dual_add_nc_u32 v4, v4, v9
-; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s16, 16
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v9, v9
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v11, v3, 16, 1
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, 0x7fff, v4
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v22, 16, v1
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s0
-; GFX11-TRUE16-NEXT:    s_and_b32 s0, s19, 0xffff0000
-; GFX11-TRUE16-NEXT:    v_dual_cndmask_b32 v4, v4, v5 :: v_dual_add_nc_u32 v7, v11, v3
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v3
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v9, v1, 16, 1
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v39.h, v14.l
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v5, 0x7fff, v7
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v3
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v33, 16, v4
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v4, 0x40c00000, s0
-; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s19, 16
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v38.l, v8.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v5, v7, vcc_lo
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v5, v9, v1
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v4, 16, 1
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v9, 0x40c00000, s0
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v1
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v18, 16, v3
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v3, 0x7fff, v5
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v5, 0x400000, v1
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v7, v7, v4
-; GFX11-TRUE16-NEXT:    s_and_b32 s0, s18, 0xffff0000
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v15, 0x400000, v4
-; GFX11-TRUE16-NEXT:    v_add_f32_e64 v11, 0x40c00000, s0
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v3, v5, vcc_lo
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v3, v9, 16, 1
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v7, 0x7fff, v7
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v4
-; GFX11-TRUE16-NEXT:    v_bfe_u32 v5, v11, 16, 1
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v16, 0x400000, v11
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v3, v3, v9
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v49.l, v33.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v7, v15, vcc_lo
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v9
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v9, v9
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v3, 0x7fff, v3
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v5, v5, v11
-; GFX11-TRUE16-NEXT:    v_or_b32_e32 v15, 0x400000, v12
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v30, 16, v4
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v49.h, v22.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v3, v7, vcc_lo
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v12, v12
-; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v5, 0x7fff, v5
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v51.h, v30.l
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v48.h, v18.l
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v32, 16, v3
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v13, v15, vcc_lo
-; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v11, v11
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v38.h, v10.l
-; GFX11-TRUE16-NEXT:    v_lshrrev_b64 v[3:4], 24, v[36:37]
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v51.l, v32.l
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v24, 16, v7
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v5, v16, vcc_lo
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v16, 16, v1
-; GFX11-TRUE16-NEXT:    v_lshrrev_b64 v[11:12], 24, v[38:39]
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v31, 24, v51
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v50.l, v24.l
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v26, 16, v5
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v48.l, v16.l
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v29, 8, v51
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v23, 24, v49
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v21, 8, v49
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v50.h, v26.l
-; GFX11-TRUE16-NEXT:    v_lshrrev_b64 v[19:20], 24, v[48:49]
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v17, 8, v48
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v15, 24, v39
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v13, 8, v39
-; GFX11-TRUE16-NEXT:    v_lshrrev_b64 v[27:28], 24, v[50:51]
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v25, 8, v50
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v9, 8, v38
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v7, 24, v37
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, 8, v37
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v36
-; GFX11-TRUE16-NEXT:    s_branch .LBB109_5
-; GFX11-TRUE16-NEXT:  .LBB109_3:
+; GFX11-TRUE16-NEXT:    s_branch .LBB109_3
+; GFX11-TRUE16-NEXT:  .LBB109_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, -1
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr22
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr4
@@ -41852,8 +42876,193 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr26
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr24
-; GFX11-TRUE16-NEXT:    s_branch .LBB109_2
-; GFX11-TRUE16-NEXT:  .LBB109_4:
+; GFX11-TRUE16-NEXT:  .LBB109_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s5, s12, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB109_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_lshl_b32 s4, s1, 16
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, s1, 0xffff0000
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s1
+; GFX11-TRUE16-NEXT:    s_and_b32 s4, s0, 0xffff0000
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, s3, 0xffff0000
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v3, 0x40c00000, s4
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v2, v0, 16, 1
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v4, v1, 16, 1
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v1
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v0
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v0, v0
+; GFX11-TRUE16-NEXT:    s_lshl_b32 s3, s3, 16
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, v4, v1
+; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v7, 0x40c00000, s3
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v5, 0x40c00000, s0
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v9, v3, 16, 1
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, 0x7fff, v4
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v2, v2, v0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s2, 0xffff0000
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v10, v5, 16, 1
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v2, 0x7fff, v2
+; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v0, v2, v8, vcc_lo
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v1
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v2, v9, v3
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v8, v10, v5
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v9, v7, 16, 1
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v0
+; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v4, v6, vcc_lo
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v0, 0x400000, v3
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v2, 0x7fff, v2
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v3
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, 0x7fff, v8
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v6, 16, v1
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s1
+; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s18, 16
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v5
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v12, 0x40c00000, s1
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v37.l, v35.l
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v3, v1, 16, 1
+; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc_lo
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v5
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v13, v12, 16, 1
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v5, v9, v7
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v3, v3, v1
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
+; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v8, vcc_lo
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v13, v13, v12
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v8, 0x40c00000, s0
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v3, 0x7fff, v3
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v7, v7
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v4
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v13, 0x7fff, v13
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, 0x7fff, v5
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v5, 0x400000, v7
+; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s2, 16
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v1
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v7, 0x40c00000, s0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s17, 0xffff0000
+; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v5, vcc_lo
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v5, v8, 16, 1
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v1
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v37.h, v6.l
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v36.l, v0.l
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v36.h, v2.l
+; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v3, v9, vcc_lo
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v3, v5, v8
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v34, 16, v4
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v4, v7, 16, 1
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v5, 0x40c00000, s0
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v14, 16, v1
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0x7fff, v3
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v3, 0x400000, v8
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, v4, v7
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v8, v8
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 1
+; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s17, 16
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v39.l, v34.l
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v9, 0x40c00000, s0
+; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc_lo
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v3, 0x7fff, v4
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v4, 0x400000, v7
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v7, v7
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s16, 0xffff0000
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v10, 16, v1
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, v8, v5
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v5
+; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v3, v4, vcc_lo
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v4, v9, 16, 1
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v5
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0x7fff, v1
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v5, 0x400000, v9
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v8, 16, v3
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v3, 0x40c00000, s0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_2) | instid1(VALU_DEP_3)
+; GFX11-TRUE16-NEXT:    v_dual_cndmask_b32 v1, v1, v7 :: v_dual_add_nc_u32 v4, v4, v9
+; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s16, 16
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v9, v9
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v11, v3, 16, 1
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, 0x7fff, v4
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v22, 16, v1
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s19, 0xffff0000
+; GFX11-TRUE16-NEXT:    v_dual_cndmask_b32 v4, v4, v5 :: v_dual_add_nc_u32 v7, v11, v3
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v3
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v9, v1, 16, 1
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v39.h, v14.l
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v5, 0x7fff, v7
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v3
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v33, 16, v4
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v4, 0x40c00000, s0
+; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s19, 16
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v38.l, v8.l
+; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v5, v7, vcc_lo
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v5, v9, v1
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v4, 16, 1
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v9, 0x40c00000, s0
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v1
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v18, 16, v3
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v3, 0x7fff, v5
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v5, 0x400000, v1
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v7, v7, v4
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s18, 0xffff0000
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v15, 0x400000, v4
+; GFX11-TRUE16-NEXT:    v_add_f32_e64 v11, 0x40c00000, s0
+; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v3, v5, vcc_lo
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v3, v9, 16, 1
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v7, 0x7fff, v7
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v4
+; GFX11-TRUE16-NEXT:    v_bfe_u32 v5, v11, 16, 1
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v16, 0x400000, v11
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v3, v3, v9
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v49.l, v33.l
+; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v7, v15, vcc_lo
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v9
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v9, v9
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v3, 0x7fff, v3
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v5, v5, v11
+; GFX11-TRUE16-NEXT:    v_or_b32_e32 v15, 0x400000, v12
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v30, 16, v4
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v49.h, v22.l
+; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v3, v7, vcc_lo
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v12, v12
+; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v5, 0x7fff, v5
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v51.h, v30.l
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v48.h, v18.l
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v32, 16, v3
+; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v13, v15, vcc_lo
+; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v11, v11
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v38.h, v10.l
+; GFX11-TRUE16-NEXT:    v_lshrrev_b64 v[3:4], 24, v[36:37]
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v51.l, v32.l
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v24, 16, v7
+; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v5, v16, vcc_lo
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v16, 16, v1
+; GFX11-TRUE16-NEXT:    v_lshrrev_b64 v[11:12], 24, v[38:39]
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v31, 24, v51
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v50.l, v24.l
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v26, 16, v5
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v48.l, v16.l
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v29, 8, v51
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v23, 24, v49
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v21, 8, v49
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v50.h, v26.l
+; GFX11-TRUE16-NEXT:    v_lshrrev_b64 v[19:20], 24, v[48:49]
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v17, 8, v48
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v15, 24, v39
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v13, 8, v39
+; GFX11-TRUE16-NEXT:    v_lshrrev_b64 v[27:28], 24, v[50:51]
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v25, 8, v50
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v9, 8, v38
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v7, 24, v37
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, 8, v37
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v36
+; GFX11-TRUE16-NEXT:    s_branch .LBB109_6
+; GFX11-TRUE16-NEXT:  .LBB109_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v24, s18 :: v_dual_mov_b32 v33, s17
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v26, s46 :: v_dual_mov_b32 v35, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v32, s19 :: v_dual_mov_b32 v25, s28
@@ -41872,7 +43081,7 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v19, s8
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, s4
-; GFX11-TRUE16-NEXT:  .LBB109_5: ; %end
+; GFX11-TRUE16-NEXT:  .LBB109_6: ; %end
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v35
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v12, v34
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v20, v33
@@ -41884,7 +43093,7 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s12, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB109_3
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB109_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s24, s19, 24
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s45, s19, 16
@@ -41910,9 +43119,40 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-FAKE16-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-FAKE16-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB109_4
-; GFX11-FAKE16-NEXT:  .LBB109_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB109_3
+; GFX11-FAKE16-NEXT:  .LBB109_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr22
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr29
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr25
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr20
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr27
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr23
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr21
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr28
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr26
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr24
+; GFX11-FAKE16-NEXT:  .LBB109_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s5, s12, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB109_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s4, s1, 16
 ; GFX11-FAKE16-NEXT:    s_and_b32 s1, s1, 0xffff0000
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s4
@@ -42095,34 +43335,8 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b64 v[27:28], 24, v[50:51]
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v31, 24, v51
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v29, 8, v51
-; GFX11-FAKE16-NEXT:    s_branch .LBB109_5
-; GFX11-FAKE16-NEXT:  .LBB109_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr22
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr4
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr29
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr25
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr20
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr27
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr23
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr21
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr28
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr26
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr24
-; GFX11-FAKE16-NEXT:    s_branch .LBB109_2
-; GFX11-FAKE16-NEXT:  .LBB109_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB109_6
+; GFX11-FAKE16-NEXT:  .LBB109_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v24, s18 :: v_dual_mov_b32 v33, s17
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v26, s46 :: v_dual_mov_b32 v35, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v32, s19 :: v_dual_mov_b32 v25, s28
@@ -42141,7 +43355,7 @@ define inreg <32 x i8> @bitcast_v16bf16_to_v32i8_scalar(<16 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v19, s8
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, s4
-; GFX11-FAKE16-NEXT:  .LBB109_5: ; %end
+; GFX11-FAKE16-NEXT:  .LBB109_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v35
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v12, v34
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v20, v33
@@ -43187,7 +44401,7 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s6, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB111_4
+; SI-NEXT:    s_cbranch_scc0 .LBB111_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
@@ -43253,8 +44467,32 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_lshl_b32 s5, s63, 24
 ; SI-NEXT:    s_or_b32 s79, s5, s4
-; SI-NEXT:    s_cbranch_execnz .LBB111_3
-; SI-NEXT:  .LBB111_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB111_3
+; SI-NEXT:  .LBB111_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:  .LBB111_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB111_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s78, s78, 3
 ; SI-NEXT:    s_and_b32 s4, s78, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s77, 8
@@ -43375,7 +44613,7 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s62, s5, 16
 ; SI-NEXT:    s_and_b32 s79, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s75, s4, 16
-; SI-NEXT:  .LBB111_3: ; %end
+; SI-NEXT:  .LBB111_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s12
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s8
@@ -43409,24 +44647,6 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s75
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[7:8], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB111_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    s_branch .LBB111_2
 ;
 ; VI-LABEL: bitcast_v32i8_to_v16bf16_scalar:
 ; VI:       ; %bb.0:
@@ -43451,7 +44671,7 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s10, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB111_4
+; VI-NEXT:    s_cbranch_scc0 .LBB111_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v7, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -43502,8 +44722,17 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; VI-NEXT:    v_perm_b32 v7, s47, v9, v7
 ; VI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    s_cbranch_execnz .LBB111_3
-; VI-NEXT:  .LBB111_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB111_3
+; VI-NEXT:  .LBB111_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; VI-NEXT:  .LBB111_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB111_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s47, s47, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s46
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -43585,11 +44814,8 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; VI-NEXT:    v_add_u32_e32 v5, vcc, 0x3000000, v5
 ; VI-NEXT:    v_add_u32_e32 v6, vcc, 0x3000000, v6
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, 0x3000000, v7
-; VI-NEXT:  .LBB111_3: ; %end
+; VI-NEXT:  .LBB111_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB111_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; VI-NEXT:    s_branch .LBB111_2
 ;
 ; GFX9-LABEL: bitcast_v32i8_to_v16bf16_scalar:
 ; GFX9:       ; %bb.0:
@@ -43614,7 +44840,7 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB111_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB111_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v4, 0xc0c0004
@@ -43671,8 +44897,17 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; GFX9-NEXT:    v_lshl_or_b32 v7, s56, 16, v4
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s4
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s5
-; GFX9-NEXT:    s_cbranch_execnz .LBB111_3
-; GFX9-NEXT:  .LBB111_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB111_3
+; GFX9-NEXT:  .LBB111_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX9-NEXT:  .LBB111_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB111_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s47, s47, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s46
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
@@ -43754,11 +44989,8 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; GFX9-NEXT:    v_lshl_or_b32 v3, v9, 16, v3
 ; GFX9-NEXT:    v_lshl_or_b32 v4, v8, 16, v4
 ; GFX9-NEXT:    v_lshl_or_b32 v7, v15, 16, v7
-; GFX9-NEXT:  .LBB111_3: ; %end
+; GFX9-NEXT:  .LBB111_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB111_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX9-NEXT:    s_branch .LBB111_2
 ;
 ; GFX11-TRUE16-LABEL: bitcast_v32i8_to_v16bf16_scalar:
 ; GFX11-TRUE16:       ; %bb.0:
@@ -43780,7 +45012,7 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s12, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s42, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB111_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB111_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_and_b32 s43, s28, 0xff
@@ -43823,9 +45055,17 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v8.l
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, s43
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, s44
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB111_3
-; GFX11-TRUE16-NEXT:  .LBB111_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB111_3
+; GFX11-TRUE16-NEXT:  .LBB111_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s42, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX11-TRUE16-NEXT:  .LBB111_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB111_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_add_i32 s13, s13, 3
 ; GFX11-TRUE16-NEXT:    s_add_i32 s41, s41, 3
@@ -43883,11 +45123,8 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, v8.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v6.h, v10.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v9.l
-; GFX11-TRUE16-NEXT:  .LBB111_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB111_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB111_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX11-TRUE16-NEXT:    s_branch .LBB111_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v32i8_to_v16bf16_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -43909,7 +45146,7 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s42, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s42, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB111_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB111_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_and_b32 s43, s28, 0xff
@@ -43957,9 +45194,17 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v3, v8, 16, v7
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v7, s46, 16, v4
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, s43
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB111_3
-; GFX11-FAKE16-NEXT:  .LBB111_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB111_3
+; GFX11-FAKE16-NEXT:  .LBB111_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s42, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
+; GFX11-FAKE16-NEXT:  .LBB111_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB111_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_add_i32 s41, s41, 3
 ; GFX11-FAKE16-NEXT:    s_add_i32 s14, s14, 3
@@ -44025,11 +45270,8 @@ define inreg <16 x bfloat> @bitcast_v32i8_to_v16bf16_scalar(<32 x i8> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v5, v5, 16, v10
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v6, v9, 16, v13
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v7, v7, 16, v14
-; GFX11-FAKE16-NEXT:  .LBB111_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB111_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB111_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
-; GFX11-FAKE16-NEXT:    s_branch .LBB111_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.288bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.288bit.ll
index ead5d76b2e572..96a513fa91aee 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.288bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.288bit.ll
@@ -114,10 +114,18 @@ define inreg <9 x float> @bitcast_v9i32_to_v9f32_scalar(<9 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s25, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s22, s22, 3
@@ -127,7 +135,7 @@ define inreg <9 x float> @bitcast_v9i32_to_v9f32_scalar(<9 x i32> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -138,17 +146,23 @@ define inreg <9 x float> @bitcast_v9i32_to_v9f32_scalar(<9 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v7, s23
 ; SI-NEXT:    v_mov_b32_e32 v8, s24
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v9i32_to_v9f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s25, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s22, s22, 3
@@ -158,7 +172,7 @@ define inreg <9 x float> @bitcast_v9i32_to_v9f32_scalar(<9 x i32> inreg %a, i32
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -169,17 +183,23 @@ define inreg <9 x float> @bitcast_v9i32_to_v9f32_scalar(<9 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v9i32_to_v9f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s25, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s24, s24, 3
 ; GFX9-NEXT:    s_add_i32 s23, s23, 3
 ; GFX9-NEXT:    s_add_i32 s22, s22, 3
@@ -189,7 +209,7 @@ define inreg <9 x float> @bitcast_v9i32_to_v9f32_scalar(<9 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -200,19 +220,22 @@ define inreg <9 x float> @bitcast_v9i32_to_v9f32_scalar(<9 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s23
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s24
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v9i32_to_v9f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s21, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s20, s20, 3
 ; GFX11-NEXT:    s_add_i32 s19, s19, 3
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
@@ -222,7 +245,7 @@ define inreg <9 x float> @bitcast_v9i32_to_v9f32_scalar(<9 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -230,8 +253,6 @@ define inreg <9 x float> @bitcast_v9i32_to_v9f32_scalar(<9 x i32> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    v_mov_b32_e32 v8, s20
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -352,10 +373,18 @@ define inreg <9 x i32> @bitcast_v9f32_to_v9i32_scalar(<9 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s25, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; SI-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; SI-NEXT:    v_add_f32_e64 v6, s22, 1.0
@@ -366,9 +395,7 @@ define inreg <9 x i32> @bitcast_v9f32_to_v9i32_scalar(<9 x float> inreg %a, i32
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -384,10 +411,18 @@ define inreg <9 x i32> @bitcast_v9f32_to_v9i32_scalar(<9 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s25, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; VI-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; VI-NEXT:    v_add_f32_e64 v6, s22, 1.0
@@ -398,9 +433,7 @@ define inreg <9 x i32> @bitcast_v9f32_to_v9i32_scalar(<9 x float> inreg %a, i32
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -416,10 +449,18 @@ define inreg <9 x i32> @bitcast_v9f32_to_v9i32_scalar(<9 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s25, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v6, s22, 1.0
@@ -430,9 +471,7 @@ define inreg <9 x i32> @bitcast_v9f32_to_v9i32_scalar(<9 x float> inreg %a, i32
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -453,11 +492,16 @@ define inreg <9 x i32> @bitcast_v9f32_to_v9i32_scalar(<9 x float> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s21, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v8, s20, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v7, s19, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v6, s18, 1.0
@@ -468,8 +512,6 @@ define inreg <9 x i32> @bitcast_v9f32_to_v9i32_scalar(<9 x float> inreg %a, i32
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -659,7 +701,7 @@ define inreg <18 x i16> @bitcast_v9i32_to_v18i16_scalar(<9 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s25, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s25, s23, 16
 ; SI-NEXT:    s_lshr_b32 s26, s21, 16
@@ -670,8 +712,25 @@ define inreg <18 x i16> @bitcast_v9i32_to_v18i16_scalar(<9 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
@@ -690,7 +749,7 @@ define inreg <18 x i16> @bitcast_v9i32_to_v18i16_scalar(<9 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s27, s19, 16
 ; SI-NEXT:    s_lshr_b32 s28, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[24:25], 16
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s12, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -728,26 +787,23 @@ define inreg <18 x i16> @bitcast_v9i32_to_v18i16_scalar(<9 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v7, s12
 ; SI-NEXT:    v_mov_b32_e32 v8, s8
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v9i32_to_v18i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s25, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s22, s22, 3
@@ -757,7 +813,7 @@ define inreg <18 x i16> @bitcast_v9i32_to_v18i16_scalar(<9 x i32> inreg %a, i32
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -768,17 +824,23 @@ define inreg <18 x i16> @bitcast_v9i32_to_v18i16_scalar(<9 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v9i32_to_v18i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s25, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s24, s24, 3
 ; GFX9-NEXT:    s_add_i32 s23, s23, 3
 ; GFX9-NEXT:    s_add_i32 s22, s22, 3
@@ -788,7 +850,7 @@ define inreg <18 x i16> @bitcast_v9i32_to_v18i16_scalar(<9 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -799,19 +861,22 @@ define inreg <18 x i16> @bitcast_v9i32_to_v18i16_scalar(<9 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s23
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s24
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v9i32_to_v18i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s21, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s20, s20, 3
 ; GFX11-NEXT:    s_add_i32 s19, s19, 3
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
@@ -821,7 +886,7 @@ define inreg <18 x i16> @bitcast_v9i32_to_v18i16_scalar(<9 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -829,8 +894,6 @@ define inreg <18 x i16> @bitcast_v9i32_to_v18i16_scalar(<9 x i32> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    v_mov_b32_e32 v8, s20
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1085,7 +1148,7 @@ define inreg <9 x i32> @bitcast_v18i16_to_v9i32_scalar(<18 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s42, s17, 16
 ; SI-NEXT:    s_lshr_b32 s43, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s25, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s43, 16
@@ -1114,8 +1177,17 @@ define inreg <9 x i32> @bitcast_v18i16_to_v9i32_scalar(<18 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s12, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s14, s13, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s14
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s14, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s14, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s43, 16
@@ -1161,7 +1233,7 @@ define inreg <9 x i32> @bitcast_v18i16_to_v9i32_scalar(<18 x i16> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s10, s10, 0x30000
 ; SI-NEXT:    s_add_i32 s11, s11, 0x30000
 ; SI-NEXT:    s_add_i32 s12, s12, 0x30000
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -1172,18 +1244,23 @@ define inreg <9 x i32> @bitcast_v18i16_to_v9i32_scalar(<18 x i16> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v7, s11
 ; SI-NEXT:    v_mov_b32_e32 v8, s12
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v18i16_to_v9i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s25, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s24, 3
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -1229,7 +1306,7 @@ define inreg <9 x i32> @bitcast_v18i16_to_v9i32_scalar(<18 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1240,17 +1317,23 @@ define inreg <9 x i32> @bitcast_v18i16_to_v9i32_scalar(<18 x i16> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v18i16_to_v9i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s25, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_4
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v8, s24, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v7, s23, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v6, s22, 3 op_sel_hi:[1,0]
@@ -1261,9 +1344,7 @@ define inreg <9 x i32> @bitcast_v18i16_to_v9i32_scalar(<18 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_3:
-; GFX9-NEXT:    s_branch .LBB7_2
-; GFX9-NEXT:  .LBB7_4:
+; GFX9-NEXT:  .LBB7_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1284,11 +1365,16 @@ define inreg <9 x i32> @bitcast_v18i16_to_v9i32_scalar(<18 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s21, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_4
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v8, s20, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v7, s19, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v6, s18, 3 op_sel_hi:[1,0]
@@ -1299,8 +1385,6 @@ define inreg <9 x i32> @bitcast_v18i16_to_v9i32_scalar(<18 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_3:
-; GFX11-NEXT:    s_branch .LBB7_2
 ; GFX11-NEXT:  .LBB7_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -1490,7 +1574,7 @@ define inreg <18 x half> @bitcast_v9i32_to_v18f16_scalar(<9 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s25, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s25, s23, 16
 ; SI-NEXT:    s_lshr_b32 s26, s21, 16
@@ -1501,8 +1585,25 @@ define inreg <18 x half> @bitcast_v9i32_to_v18f16_scalar(<9 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
@@ -1521,7 +1622,7 @@ define inreg <18 x half> @bitcast_v9i32_to_v18f16_scalar(<9 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s27, s19, 16
 ; SI-NEXT:    s_lshr_b32 s28, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[24:25], 16
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s12, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -1559,26 +1660,23 @@ define inreg <18 x half> @bitcast_v9i32_to_v18f16_scalar(<9 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v7, s12
 ; SI-NEXT:    v_mov_b32_e32 v8, s8
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v9i32_to_v18f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s25, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s22, s22, 3
@@ -1588,7 +1686,7 @@ define inreg <18 x half> @bitcast_v9i32_to_v18f16_scalar(<9 x i32> inreg %a, i32
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1599,17 +1697,23 @@ define inreg <18 x half> @bitcast_v9i32_to_v18f16_scalar(<9 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v9i32_to_v18f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s25, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s24, s24, 3
 ; GFX9-NEXT:    s_add_i32 s23, s23, 3
 ; GFX9-NEXT:    s_add_i32 s22, s22, 3
@@ -1619,7 +1723,7 @@ define inreg <18 x half> @bitcast_v9i32_to_v18f16_scalar(<9 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1630,19 +1734,22 @@ define inreg <18 x half> @bitcast_v9i32_to_v18f16_scalar(<9 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s23
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s24
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v9i32_to_v18f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s21, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s20, s20, 3
 ; GFX11-NEXT:    s_add_i32 s19, s19, 3
 ; GFX11-NEXT:    s_add_i32 s18, s18, 3
@@ -1652,7 +1759,7 @@ define inreg <18 x half> @bitcast_v9i32_to_v18f16_scalar(<9 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1660,8 +1767,6 @@ define inreg <18 x half> @bitcast_v9i32_to_v18f16_scalar(<9 x i32> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    v_mov_b32_e32 v8, s20
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1953,7 +2058,7 @@ define inreg <9 x i32> @bitcast_v18f16_to_v9i32_scalar(<18 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s42, s17, 16
 ; SI-NEXT:    s_lshr_b32 s43, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s25, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s43, 16
@@ -1982,8 +2087,17 @@ define inreg <9 x i32> @bitcast_v18f16_to_v9i32_scalar(<18 x half> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s12, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s14, s13, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s14
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s14, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s14, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s43
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s42
@@ -2057,10 +2171,7 @@ define inreg <9 x i32> @bitcast_v18f16_to_v9i32_scalar(<18 x half> inreg %a, i32
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v9
 ; SI-NEXT:    v_or_b32_e32 v8, v10, v8
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -2076,10 +2187,18 @@ define inreg <9 x i32> @bitcast_v18f16_to_v9i32_scalar(<18 x half> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s25, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s24, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -2127,9 +2246,7 @@ define inreg <9 x i32> @bitcast_v18f16_to_v9i32_scalar(<18 x half> inreg %a, i32
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v9
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2145,10 +2262,18 @@ define inreg <9 x i32> @bitcast_v18f16_to_v9i32_scalar(<18 x half> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s25, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v8, s24, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v7, s23, v0 op_sel_hi:[1,0]
@@ -2160,9 +2285,7 @@ define inreg <9 x i32> @bitcast_v18f16_to_v9i32_scalar(<18 x half> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2183,11 +2306,16 @@ define inreg <9 x i32> @bitcast_v18f16_to_v9i32_scalar(<18 x half> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s21, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v8, 0x200, s20 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v7, 0x200, s19 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v6, 0x200, s18 op_sel_hi:[0,1]
@@ -2198,8 +2326,6 @@ define inreg <9 x i32> @bitcast_v18f16_to_v9i32_scalar(<18 x half> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -2384,7 +2510,7 @@ define inreg <18 x i16> @bitcast_v9f32_to_v18i16_scalar(<9 x float> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s25, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_3
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s25, s17, 16
 ; SI-NEXT:    s_lshr_b32 s28, s23, 16
@@ -2395,8 +2521,25 @@ define inreg <18 x i16> @bitcast_v9f32_to_v18i16_scalar(<9 x float> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_4
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; SI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; SI-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -2415,19 +2558,8 @@ define inreg <18 x i16> @bitcast_v9f32_to_v18i16_scalar(<9 x float> inreg %a, i3
 ; SI-NEXT:    v_lshrrev_b32_e32 v17, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v19, 16, v1
-; SI-NEXT:    s_branch .LBB13_5
-; SI-NEXT:  .LBB13_3:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB13_2
-; SI-NEXT:  .LBB13_4:
+; SI-NEXT:    s_branch .LBB13_6
+; SI-NEXT:  .LBB13_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2446,7 +2578,7 @@ define inreg <18 x i16> @bitcast_v9f32_to_v18i16_scalar(<9 x float> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v13, s10
 ; SI-NEXT:    v_mov_b32_e32 v12, s6
 ; SI-NEXT:    v_mov_b32_e32 v9, s4
-; SI-NEXT:  .LBB13_5: ; %end
+; SI-NEXT:  .LBB13_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v14
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v11
@@ -2480,10 +2612,18 @@ define inreg <18 x i16> @bitcast_v9f32_to_v18i16_scalar(<9 x float> inreg %a, i3
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s25, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_3
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB13_4
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; VI-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; VI-NEXT:    v_add_f32_e64 v6, s22, 1.0
@@ -2494,9 +2634,7 @@ define inreg <18 x i16> @bitcast_v9f32_to_v18i16_scalar(<9 x float> inreg %a, i3
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_3:
-; VI-NEXT:    s_branch .LBB13_2
-; VI-NEXT:  .LBB13_4:
+; VI-NEXT:  .LBB13_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2519,10 +2657,18 @@ define inreg <18 x i16> @bitcast_v9f32_to_v18i16_scalar(<9 x float> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s25, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_4
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v6, s22, 1.0
@@ -2533,9 +2679,7 @@ define inreg <18 x i16> @bitcast_v9f32_to_v18i16_scalar(<9 x float> inreg %a, i3
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_3:
-; GFX9-NEXT:    s_branch .LBB13_2
-; GFX9-NEXT:  .LBB13_4:
+; GFX9-NEXT:  .LBB13_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2563,11 +2707,16 @@ define inreg <18 x i16> @bitcast_v9f32_to_v18i16_scalar(<9 x float> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s21, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_4
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB13_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v8, s20, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v7, s19, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v6, s18, 1.0
@@ -2578,8 +2727,6 @@ define inreg <18 x i16> @bitcast_v9f32_to_v18i16_scalar(<9 x float> inreg %a, i3
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_3:
-; GFX11-NEXT:    s_branch .LBB13_2
 ; GFX11-NEXT:  .LBB13_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -2844,7 +2991,7 @@ define inreg <9 x float> @bitcast_v18i16_to_v9f32_scalar(<18 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s42, s17, 16
 ; SI-NEXT:    s_lshr_b32 s43, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s25, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s43, 16
@@ -2873,8 +3020,17 @@ define inreg <9 x float> @bitcast_v18i16_to_v9f32_scalar(<18 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s12, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s14, s13, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s14
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s14, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s14, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s43, 16
@@ -2920,7 +3076,7 @@ define inreg <9 x float> @bitcast_v18i16_to_v9f32_scalar(<18 x i16> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s10, s10, 0x30000
 ; SI-NEXT:    s_add_i32 s11, s11, 0x30000
 ; SI-NEXT:    s_add_i32 s12, s12, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
+; SI-NEXT:  .LBB15_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -2931,18 +3087,23 @@ define inreg <9 x float> @bitcast_v18i16_to_v9f32_scalar(<18 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v7, s11
 ; SI-NEXT:    v_mov_b32_e32 v8, s12
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v18i16_to_v9f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s25, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s24, 3
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -2988,7 +3149,7 @@ define inreg <9 x float> @bitcast_v18i16_to_v9f32_scalar(<18 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
+; VI-NEXT:  .LBB15_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2999,17 +3160,23 @@ define inreg <9 x float> @bitcast_v18i16_to_v9f32_scalar(<18 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v18i16_to_v9f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s25, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v8, s24, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v7, s23, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v6, s22, 3 op_sel_hi:[1,0]
@@ -3020,9 +3187,7 @@ define inreg <9 x float> @bitcast_v18i16_to_v9f32_scalar(<18 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3043,11 +3208,16 @@ define inreg <9 x float> @bitcast_v18i16_to_v9f32_scalar(<18 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s21, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v8, s20, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v7, s19, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v6, s18, 3 op_sel_hi:[1,0]
@@ -3058,8 +3228,6 @@ define inreg <9 x float> @bitcast_v18i16_to_v9f32_scalar(<18 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -3244,7 +3412,7 @@ define inreg <18 x half> @bitcast_v9f32_to_v18f16_scalar(<9 x float> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s25, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_3
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s25, s17, 16
 ; SI-NEXT:    s_lshr_b32 s28, s23, 16
@@ -3255,8 +3423,25 @@ define inreg <18 x half> @bitcast_v9f32_to_v18f16_scalar(<9 x float> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_4
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; SI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; SI-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -3275,19 +3460,8 @@ define inreg <18 x half> @bitcast_v9f32_to_v18f16_scalar(<9 x float> inreg %a, i
 ; SI-NEXT:    v_lshrrev_b32_e32 v17, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v19, 16, v1
-; SI-NEXT:    s_branch .LBB17_5
-; SI-NEXT:  .LBB17_3:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB17_2
-; SI-NEXT:  .LBB17_4:
+; SI-NEXT:    s_branch .LBB17_6
+; SI-NEXT:  .LBB17_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3306,7 +3480,7 @@ define inreg <18 x half> @bitcast_v9f32_to_v18f16_scalar(<9 x float> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v13, s10
 ; SI-NEXT:    v_mov_b32_e32 v12, s6
 ; SI-NEXT:    v_mov_b32_e32 v9, s4
-; SI-NEXT:  .LBB17_5: ; %end
+; SI-NEXT:  .LBB17_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v14
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v11
@@ -3340,10 +3514,18 @@ define inreg <18 x half> @bitcast_v9f32_to_v18f16_scalar(<9 x float> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s25, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_3
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB17_4
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; VI-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; VI-NEXT:    v_add_f32_e64 v6, s22, 1.0
@@ -3354,9 +3536,7 @@ define inreg <18 x half> @bitcast_v9f32_to_v18f16_scalar(<9 x float> inreg %a, i
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_3:
-; VI-NEXT:    s_branch .LBB17_2
-; VI-NEXT:  .LBB17_4:
+; VI-NEXT:  .LBB17_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3379,10 +3559,18 @@ define inreg <18 x half> @bitcast_v9f32_to_v18f16_scalar(<9 x float> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s25, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_4
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v7, s23, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v6, s22, 1.0
@@ -3393,9 +3581,7 @@ define inreg <18 x half> @bitcast_v9f32_to_v18f16_scalar(<9 x float> inreg %a, i
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_3:
-; GFX9-NEXT:    s_branch .LBB17_2
-; GFX9-NEXT:  .LBB17_4:
+; GFX9-NEXT:  .LBB17_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3423,11 +3609,16 @@ define inreg <18 x half> @bitcast_v9f32_to_v18f16_scalar(<9 x float> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s21, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_4
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB17_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v8, s20, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v7, s19, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v6, s18, 1.0
@@ -3438,8 +3629,6 @@ define inreg <18 x half> @bitcast_v9f32_to_v18f16_scalar(<9 x float> inreg %a, i
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_3:
-; GFX11-NEXT:    s_branch .LBB17_2
 ; GFX11-NEXT:  .LBB17_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -3741,7 +3930,7 @@ define inreg <9 x float> @bitcast_v18f16_to_v9f32_scalar(<18 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s42, s17, 16
 ; SI-NEXT:    s_lshr_b32 s43, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s25, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s43, 16
@@ -3770,8 +3959,17 @@ define inreg <9 x float> @bitcast_v18f16_to_v9f32_scalar(<18 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s12, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s14, s13, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s14
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s14, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s14, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s43
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s42
@@ -3845,10 +4043,7 @@ define inreg <9 x float> @bitcast_v18f16_to_v9f32_scalar(<18 x half> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v9
 ; SI-NEXT:    v_or_b32_e32 v8, v10, v8
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -3864,10 +4059,18 @@ define inreg <9 x float> @bitcast_v18f16_to_v9f32_scalar(<18 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s25, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s24, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -3915,9 +4118,7 @@ define inreg <9 x float> @bitcast_v18f16_to_v9f32_scalar(<18 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v9
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3933,10 +4134,18 @@ define inreg <9 x float> @bitcast_v18f16_to_v9f32_scalar(<18 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s25, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v8, s24, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v7, s23, v0 op_sel_hi:[1,0]
@@ -3948,9 +4157,7 @@ define inreg <9 x float> @bitcast_v18f16_to_v9f32_scalar(<18 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3971,11 +4178,16 @@ define inreg <9 x float> @bitcast_v18f16_to_v9f32_scalar(<18 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s21, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v8, 0x200, s20 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v7, 0x200, s19 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v6, 0x200, s18 op_sel_hi:[0,1]
@@ -3986,8 +4198,6 @@ define inreg <9 x float> @bitcast_v18f16_to_v9f32_scalar(<18 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -4288,7 +4498,7 @@ define inreg <18 x half> @bitcast_v18i16_to_v18f16_scalar(<18 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s43, s17, 16
 ; SI-NEXT:    s_lshr_b32 s47, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s25, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_4
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s42, 16
@@ -4322,11 +4532,28 @@ define inreg <18 x half> @bitcast_v18i16_to_v18f16_scalar(<18 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[26:27], s[62:63], 16
 ; SI-NEXT:    s_lshr_b64 s[28:29], s[72:73], 16
 ; SI-NEXT:    s_mov_b32 s11, s41
+; SI-NEXT:    s_mov_b64 s[40:41], 0
 ; SI-NEXT:    s_mov_b32 s9, s61
 ; SI-NEXT:    s_mov_b32 s7, s63
 ; SI-NEXT:    s_mov_b32 s5, s73
-; SI-NEXT:    s_cbranch_execnz .LBB21_3
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[40:41], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[40:41], s[40:41], exec
+; SI-NEXT:    s_cselect_b32 s13, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s13, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s58, 16
@@ -4381,7 +4608,7 @@ define inreg <18 x half> @bitcast_v18i16_to_v18f16_scalar(<18 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s45, s7, 16
 ; SI-NEXT:    s_lshr_b32 s46, s5, 16
 ; SI-NEXT:    s_lshr_b32 s42, s25, 16
-; SI-NEXT:  .LBB21_3: ; %end
+; SI-NEXT:  .LBB21_5: ; %end
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s12
@@ -4419,26 +4646,23 @@ define inreg <18 x half> @bitcast_v18i16_to_v18f16_scalar(<18 x i16> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v7, s5
 ; SI-NEXT:    v_mov_b32_e32 v8, s12
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB21_4:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    s_branch .LBB21_2
 ;
 ; VI-LABEL: bitcast_v18i16_to_v18f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s25, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_4
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_3
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s6, s17, 0xffff0000
 ; VI-NEXT:    s_add_i32 s7, s17, 3
@@ -4484,7 +4708,7 @@ define inreg <18 x half> @bitcast_v18i16_to_v18f16_scalar(<18 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB21_3: ; %end
+; VI-NEXT:  .LBB21_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4495,17 +4719,23 @@ define inreg <18 x half> @bitcast_v18i16_to_v18f16_scalar(<18 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v7, s23
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB21_4:
-; VI-NEXT:    s_branch .LBB21_2
 ;
 ; GFX9-LABEL: bitcast_v18i16_to_v18f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s25, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_4
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v8, s24, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v7, s23, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v6, s22, 3 op_sel_hi:[1,0]
@@ -4516,9 +4746,7 @@ define inreg <18 x half> @bitcast_v18i16_to_v18f16_scalar(<18 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB21_3:
-; GFX9-NEXT:    s_branch .LBB21_2
-; GFX9-NEXT:  .LBB21_4:
+; GFX9-NEXT:  .LBB21_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4546,11 +4774,16 @@ define inreg <18 x half> @bitcast_v18i16_to_v18f16_scalar(<18 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s21, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_4
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v8, s20, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v7, s19, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v6, s18, 3 op_sel_hi:[1,0]
@@ -4561,8 +4794,6 @@ define inreg <18 x half> @bitcast_v18i16_to_v18f16_scalar(<18 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB21_3:
-; GFX11-NEXT:    s_branch .LBB21_2
 ; GFX11-NEXT:  .LBB21_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -4833,10 +5064,18 @@ define inreg <18 x i16> @bitcast_v18f16_to_v18i16_scalar(<18 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s6, s17, 16
 ; SI-NEXT:    s_lshr_b32 s14, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s25, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_3
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB23_4
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s14
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s13
@@ -4913,10 +5152,8 @@ define inreg <18 x i16> @bitcast_v18f16_to_v18i16_scalar(<18 x half> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[12:13], v[2:3], 16
 ; SI-NEXT:    v_lshr_b64 v[10:11], v[4:5], 16
 ; SI-NEXT:    v_lshr_b64 v[8:9], v[6:7], 16
-; SI-NEXT:    s_branch .LBB23_5
-; SI-NEXT:  .LBB23_3:
-; SI-NEXT:    s_branch .LBB23_2
-; SI-NEXT:  .LBB23_4:
+; SI-NEXT:    s_branch .LBB23_6
+; SI-NEXT:  .LBB23_5:
 ; SI-NEXT:    v_mov_b32_e32 v17, s11
 ; SI-NEXT:    v_mov_b32_e32 v21, s9
 ; SI-NEXT:    v_mov_b32_e32 v22, s8
@@ -4935,7 +5172,7 @@ define inreg <18 x i16> @bitcast_v18f16_to_v18i16_scalar(<18 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v12, s13
 ; SI-NEXT:    v_mov_b32_e32 v10, s12
 ; SI-NEXT:    v_mov_b32_e32 v8, s10
-; SI-NEXT:  .LBB23_5: ; %end
+; SI-NEXT:  .LBB23_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v14
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v16
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
@@ -4969,10 +5206,18 @@ define inreg <18 x i16> @bitcast_v18f16_to_v18i16_scalar(<18 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s25, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_3
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_4
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s5, s23, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v2, s5
@@ -5020,9 +5265,7 @@ define inreg <18 x i16> @bitcast_v18f16_to_v18i16_scalar(<18 x half> inreg %a, i
 ; VI-NEXT:    v_or_b32_e32 v1, v0, v1
 ; VI-NEXT:    v_or_b32_e32 v0, v9, v10
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_3:
-; VI-NEXT:    s_branch .LBB23_2
-; VI-NEXT:  .LBB23_4:
+; VI-NEXT:  .LBB23_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5045,10 +5288,18 @@ define inreg <18 x i16> @bitcast_v18f16_to_v18i16_scalar(<18 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s25, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_4
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v8, s24, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v7, s23, v0 op_sel_hi:[1,0]
@@ -5060,9 +5311,7 @@ define inreg <18 x i16> @bitcast_v18f16_to_v18i16_scalar(<18 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_3:
-; GFX9-NEXT:    s_branch .LBB23_2
-; GFX9-NEXT:  .LBB23_4:
+; GFX9-NEXT:  .LBB23_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5090,11 +5339,16 @@ define inreg <18 x i16> @bitcast_v18f16_to_v18i16_scalar(<18 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s21, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_4
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v8, 0x200, s20 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v7, 0x200, s19 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v6, 0x200, s18 op_sel_hi:[0,1]
@@ -5105,8 +5359,6 @@ define inreg <18 x i16> @bitcast_v18f16_to_v18i16_scalar(<18 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_3:
-; GFX11-NEXT:    s_branch .LBB23_2
 ; GFX11-NEXT:  .LBB23_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.320bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.320bit.ll
index aba9755a4f357..826e745ed1f60 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.320bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.320bit.ll
@@ -121,10 +121,18 @@ define inreg <10 x float> @bitcast_v10i32_to_v10f32_scalar(<10 x i32> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s23, s23, 3
@@ -135,7 +143,7 @@ define inreg <10 x float> @bitcast_v10i32_to_v10f32_scalar(<10 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -147,17 +155,23 @@ define inreg <10 x float> @bitcast_v10i32_to_v10f32_scalar(<10 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v8, s24
 ; SI-NEXT:    v_mov_b32_e32 v9, s25
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v10i32_to_v10f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s23, s23, 3
@@ -168,7 +182,7 @@ define inreg <10 x float> @bitcast_v10i32_to_v10f32_scalar(<10 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -180,17 +194,23 @@ define inreg <10 x float> @bitcast_v10i32_to_v10f32_scalar(<10 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v10i32_to_v10f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s25, s25, 3
 ; GFX9-NEXT:    s_add_i32 s24, s24, 3
 ; GFX9-NEXT:    s_add_i32 s23, s23, 3
@@ -201,7 +221,7 @@ define inreg <10 x float> @bitcast_v10i32_to_v10f32_scalar(<10 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -213,19 +233,22 @@ define inreg <10 x float> @bitcast_v10i32_to_v10f32_scalar(<10 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s24
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s25
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v10i32_to_v10f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s21, s21, 3
 ; GFX11-NEXT:    s_add_i32 s20, s20, 3
 ; GFX11-NEXT:    s_add_i32 s19, s19, 3
@@ -236,7 +259,7 @@ define inreg <10 x float> @bitcast_v10i32_to_v10f32_scalar(<10 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -244,8 +267,6 @@ define inreg <10 x float> @bitcast_v10i32_to_v10f32_scalar(<10 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -372,10 +393,18 @@ define inreg <10 x i32> @bitcast_v10f32_to_v10i32_scalar(<10 x float> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; SI-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; SI-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -387,9 +416,7 @@ define inreg <10 x i32> @bitcast_v10f32_to_v10i32_scalar(<10 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -406,10 +433,18 @@ define inreg <10 x i32> @bitcast_v10f32_to_v10i32_scalar(<10 x float> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; VI-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; VI-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -421,9 +456,7 @@ define inreg <10 x i32> @bitcast_v10f32_to_v10i32_scalar(<10 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -440,10 +473,18 @@ define inreg <10 x i32> @bitcast_v10f32_to_v10i32_scalar(<10 x float> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -455,9 +496,7 @@ define inreg <10 x i32> @bitcast_v10f32_to_v10i32_scalar(<10 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -479,11 +518,16 @@ define inreg <10 x i32> @bitcast_v10f32_to_v10i32_scalar(<10 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v9, s21, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v8, s20, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v7, s19, 1.0
@@ -495,8 +539,6 @@ define inreg <10 x i32> @bitcast_v10f32_to_v10i32_scalar(<10 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -699,7 +741,7 @@ define inreg <20 x i16> @bitcast_v10i32_to_v20i16_scalar(<10 x i32> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s26, s25, 16
 ; SI-NEXT:    s_lshr_b32 s27, s23, 16
@@ -711,8 +753,26 @@ define inreg <20 x i16> @bitcast_v10i32_to_v20i16_scalar(<10 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -733,7 +793,7 @@ define inreg <20 x i16> @bitcast_v10i32_to_v20i16_scalar(<10 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s28, s21, 16
 ; SI-NEXT:    s_lshr_b32 s29, s19, 16
 ; SI-NEXT:    s_lshr_b32 s40, s17, 16
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s12, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -775,27 +835,23 @@ define inreg <20 x i16> @bitcast_v10i32_to_v20i16_scalar(<10 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v8, s4
 ; SI-NEXT:    v_mov_b32_e32 v9, s13
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v10i32_to_v20i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s23, s23, 3
@@ -806,7 +862,7 @@ define inreg <20 x i16> @bitcast_v10i32_to_v20i16_scalar(<10 x i32> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -818,17 +874,23 @@ define inreg <20 x i16> @bitcast_v10i32_to_v20i16_scalar(<10 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v10i32_to_v20i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s25, s25, 3
 ; GFX9-NEXT:    s_add_i32 s24, s24, 3
 ; GFX9-NEXT:    s_add_i32 s23, s23, 3
@@ -839,7 +901,7 @@ define inreg <20 x i16> @bitcast_v10i32_to_v20i16_scalar(<10 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -851,19 +913,22 @@ define inreg <20 x i16> @bitcast_v10i32_to_v20i16_scalar(<10 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s24
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s25
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v10i32_to_v20i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s21, s21, 3
 ; GFX11-NEXT:    s_add_i32 s20, s20, 3
 ; GFX11-NEXT:    s_add_i32 s19, s19, 3
@@ -874,7 +939,7 @@ define inreg <20 x i16> @bitcast_v10i32_to_v20i16_scalar(<10 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -882,8 +947,6 @@ define inreg <20 x i16> @bitcast_v10i32_to_v20i16_scalar(<10 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1156,7 +1219,7 @@ define inreg <10 x i32> @bitcast_v20i16_to_v10i32_scalar(<20 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s45, s17, 16
 ; SI-NEXT:    s_lshr_b32 s46, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s46, 16
@@ -1188,8 +1251,17 @@ define inreg <10 x i32> @bitcast_v20i16_to_v10i32_scalar(<20 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s13, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s14, s27, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s14
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s14, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s14, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s46, 16
@@ -1240,7 +1312,7 @@ define inreg <10 x i32> @bitcast_v20i16_to_v10i32_scalar(<20 x i16> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s11, s11, 0x30000
 ; SI-NEXT:    s_add_i32 s12, s12, 0x30000
 ; SI-NEXT:    s_add_i32 s13, s13, 0x30000
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -1252,18 +1324,23 @@ define inreg <10 x i32> @bitcast_v20i16_to_v10i32_scalar(<20 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v8, s12
 ; SI-NEXT:    v_mov_b32_e32 v9, s13
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v20i16_to_v10i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s25, 3
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -1314,7 +1391,7 @@ define inreg <10 x i32> @bitcast_v20i16_to_v10i32_scalar(<20 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1326,17 +1403,23 @@ define inreg <10 x i32> @bitcast_v20i16_to_v10i32_scalar(<20 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v20i16_to_v10i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_4
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v9, s25, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v8, s24, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v7, s23, 3 op_sel_hi:[1,0]
@@ -1348,9 +1431,7 @@ define inreg <10 x i32> @bitcast_v20i16_to_v10i32_scalar(<20 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_3:
-; GFX9-NEXT:    s_branch .LBB7_2
-; GFX9-NEXT:  .LBB7_4:
+; GFX9-NEXT:  .LBB7_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1372,11 +1453,16 @@ define inreg <10 x i32> @bitcast_v20i16_to_v10i32_scalar(<20 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_4
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v9, s21, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v8, s20, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v7, s19, 3 op_sel_hi:[1,0]
@@ -1388,8 +1474,6 @@ define inreg <10 x i32> @bitcast_v20i16_to_v10i32_scalar(<20 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_3:
-; GFX11-NEXT:    s_branch .LBB7_2
 ; GFX11-NEXT:  .LBB7_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -1592,7 +1676,7 @@ define inreg <20 x half> @bitcast_v10i32_to_v20f16_scalar(<10 x i32> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s26, s25, 16
 ; SI-NEXT:    s_lshr_b32 s27, s23, 16
@@ -1604,8 +1688,26 @@ define inreg <20 x half> @bitcast_v10i32_to_v20f16_scalar(<10 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -1626,7 +1728,7 @@ define inreg <20 x half> @bitcast_v10i32_to_v20f16_scalar(<10 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s28, s21, 16
 ; SI-NEXT:    s_lshr_b32 s29, s19, 16
 ; SI-NEXT:    s_lshr_b32 s40, s17, 16
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s12, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -1668,27 +1770,23 @@ define inreg <20 x half> @bitcast_v10i32_to_v20f16_scalar(<10 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v8, s4
 ; SI-NEXT:    v_mov_b32_e32 v9, s13
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v10i32_to_v20f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s23, s23, 3
@@ -1699,7 +1797,7 @@ define inreg <20 x half> @bitcast_v10i32_to_v20f16_scalar(<10 x i32> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1711,17 +1809,23 @@ define inreg <20 x half> @bitcast_v10i32_to_v20f16_scalar(<10 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v10i32_to_v20f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s25, s25, 3
 ; GFX9-NEXT:    s_add_i32 s24, s24, 3
 ; GFX9-NEXT:    s_add_i32 s23, s23, 3
@@ -1732,7 +1836,7 @@ define inreg <20 x half> @bitcast_v10i32_to_v20f16_scalar(<10 x i32> inreg %a, i
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1744,19 +1848,22 @@ define inreg <20 x half> @bitcast_v10i32_to_v20f16_scalar(<10 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s24
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s25
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v10i32_to_v20f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s21, s21, 3
 ; GFX11-NEXT:    s_add_i32 s20, s20, 3
 ; GFX11-NEXT:    s_add_i32 s19, s19, 3
@@ -1767,7 +1874,7 @@ define inreg <20 x half> @bitcast_v10i32_to_v20f16_scalar(<10 x i32> inreg %a, i
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1775,8 +1882,6 @@ define inreg <20 x half> @bitcast_v10i32_to_v20f16_scalar(<10 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2089,7 +2194,7 @@ define inreg <10 x i32> @bitcast_v20f16_to_v10i32_scalar(<20 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s45, s17, 16
 ; SI-NEXT:    s_lshr_b32 s46, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s46, 16
@@ -2121,8 +2226,17 @@ define inreg <10 x i32> @bitcast_v20f16_to_v10i32_scalar(<20 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s13, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s14, s27, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s14
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s14, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s14, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s46
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s45
@@ -2204,10 +2318,7 @@ define inreg <10 x i32> @bitcast_v20f16_to_v10i32_scalar(<20 x half> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v10
 ; SI-NEXT:    v_or_b32_e32 v9, v11, v9
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -2224,10 +2335,18 @@ define inreg <10 x i32> @bitcast_v20f16_to_v10i32_scalar(<20 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s25, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -2280,9 +2399,7 @@ define inreg <10 x i32> @bitcast_v20f16_to_v10i32_scalar(<20 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v10
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2299,10 +2416,18 @@ define inreg <10 x i32> @bitcast_v20f16_to_v10i32_scalar(<20 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v9, s25, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v8, s24, v0 op_sel_hi:[1,0]
@@ -2315,9 +2440,7 @@ define inreg <10 x i32> @bitcast_v20f16_to_v10i32_scalar(<20 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2339,11 +2462,16 @@ define inreg <10 x i32> @bitcast_v20f16_to_v10i32_scalar(<20 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v9, 0x200, s21 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v8, 0x200, s20 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v7, 0x200, s19 op_sel_hi:[0,1]
@@ -2355,8 +2483,6 @@ define inreg <10 x i32> @bitcast_v20f16_to_v10i32_scalar(<20 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -3256,7 +3382,7 @@ define inreg <40 x i8> @bitcast_v10i32_to_v40i8_scalar(<10 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s72, s25, 24
 ; SI-NEXT:    s_lshr_b32 s73, s25, 16
@@ -3288,8 +3414,46 @@ define inreg <40 x i8> @bitcast_v10i32_to_v40i8_scalar(<10 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[62:63], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[62:63], -1
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[62:63], s[62:63], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -3330,7 +3494,7 @@ define inreg <40 x i8> @bitcast_v10i32_to_v40i8_scalar(<10 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 8
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s5, s60, 8
 ; SI-NEXT:    s_and_b32 s7, s16, 0xff
 ; SI-NEXT:    s_or_b32 s5, s7, s5
@@ -3460,44 +3624,12 @@ define inreg <40 x i8> @bitcast_v10i32_to_v40i8_scalar(<10 x i32> inreg %a, i32
 ; SI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_v10i32_to_v40i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s26, s25, 24
 ; VI-NEXT:    s_lshr_b32 s27, s25, 16
@@ -3529,8 +3661,46 @@ define inreg <40 x i8> @bitcast_v10i32_to_v40i8_scalar(<10 x i32> inreg %a, i32
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[14:15], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[14:15], -1
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr29
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr28
+; VI-NEXT:    ; implicit-def: $sgpr27
+; VI-NEXT:    ; implicit-def: $sgpr26
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_add_i32 s19, s19, 3
@@ -3571,7 +3741,7 @@ define inreg <40 x i8> @bitcast_v10i32_to_v40i8_scalar(<10 x i32> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s74, s17, 8
 ; VI-NEXT:    s_lshr_b32 s75, s16, 16
 ; VI-NEXT:    s_lshr_b32 s76, s16, 8
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v3, s12
 ; VI-NEXT:    v_mov_b32_e32 v1, s76
@@ -3654,44 +3824,12 @@ define inreg <40 x i8> @bitcast_v10i32_to_v40i8_scalar(<10 x i32> inreg %a, i32
 ; VI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr29
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr28
-; VI-NEXT:    ; implicit-def: $sgpr27
-; VI-NEXT:    ; implicit-def: $sgpr26
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v10i32_to_v40i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s26, s25, 24
 ; GFX9-NEXT:    s_lshr_b32 s27, s25, 16
@@ -3723,123 +3861,10 @@ define inreg <40 x i8> @bitcast_v10i32_to_v40i8_scalar(<10 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[10:11], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[12:13], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
-; GFX9-NEXT:    s_add_i32 s17, s17, 3
-; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:    s_add_i32 s19, s19, 3
-; GFX9-NEXT:    s_add_i32 s18, s18, 3
-; GFX9-NEXT:    s_add_i32 s21, s21, 3
-; GFX9-NEXT:    s_add_i32 s20, s20, 3
-; GFX9-NEXT:    s_add_i32 s23, s23, 3
-; GFX9-NEXT:    s_add_i32 s22, s22, 3
-; GFX9-NEXT:    s_add_i32 s25, s25, 3
-; GFX9-NEXT:    s_add_i32 s24, s24, 3
-; GFX9-NEXT:    s_lshr_b64 s[4:5], s[24:25], 24
-; GFX9-NEXT:    s_lshr_b64 s[6:7], s[22:23], 24
-; GFX9-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
-; GFX9-NEXT:    s_lshr_b64 s[10:11], s[18:19], 24
-; GFX9-NEXT:    s_lshr_b64 s[12:13], s[16:17], 24
-; GFX9-NEXT:    s_lshr_b32 s26, s25, 24
-; GFX9-NEXT:    s_lshr_b32 s27, s25, 16
-; GFX9-NEXT:    s_lshr_b32 s28, s25, 8
-; GFX9-NEXT:    s_lshr_b32 s29, s24, 16
-; GFX9-NEXT:    s_lshr_b32 s40, s24, 8
-; GFX9-NEXT:    s_lshr_b32 s41, s23, 24
-; GFX9-NEXT:    s_lshr_b32 s42, s23, 16
-; GFX9-NEXT:    s_lshr_b32 s43, s23, 8
-; GFX9-NEXT:    s_lshr_b32 s44, s22, 16
-; GFX9-NEXT:    s_lshr_b32 s45, s22, 8
-; GFX9-NEXT:    s_lshr_b32 s46, s21, 24
-; GFX9-NEXT:    s_lshr_b32 s47, s21, 16
-; GFX9-NEXT:    s_lshr_b32 s56, s21, 8
-; GFX9-NEXT:    s_lshr_b32 s57, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s58, s20, 8
-; GFX9-NEXT:    s_lshr_b32 s59, s19, 24
-; GFX9-NEXT:    s_lshr_b32 s60, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s61, s19, 8
-; GFX9-NEXT:    s_lshr_b32 s62, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s63, s18, 8
-; GFX9-NEXT:    s_lshr_b32 s72, s17, 24
-; GFX9-NEXT:    s_lshr_b32 s73, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s74, s17, 8
-; GFX9-NEXT:    s_lshr_b32 s75, s16, 16
-; GFX9-NEXT:    s_lshr_b32 s76, s16, 8
-; GFX9-NEXT:  .LBB13_3: ; %end
-; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
-; GFX9-NEXT:    v_mov_b32_e32 v3, s12
-; GFX9-NEXT:    v_mov_b32_e32 v1, s76
-; GFX9-NEXT:    v_perm_b32 v3, s75, v3, v2
-; GFX9-NEXT:    v_perm_b32 v1, s16, v1, v2
-; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
-; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s72
-; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
-; GFX9-NEXT:    v_mov_b32_e32 v1, s74
-; GFX9-NEXT:    v_perm_b32 v3, s73, v3, v2
-; GFX9-NEXT:    v_perm_b32 v1, s17, v1, v2
-; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
-; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s10
-; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:4
-; GFX9-NEXT:    v_mov_b32_e32 v1, s63
-; GFX9-NEXT:    v_perm_b32 v3, s62, v3, v2
-; GFX9-NEXT:    v_perm_b32 v1, s18, v1, v2
-; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
-; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s59
-; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:8
-; GFX9-NEXT:    v_mov_b32_e32 v1, s61
-; GFX9-NEXT:    v_perm_b32 v3, s60, v3, v2
-; GFX9-NEXT:    v_perm_b32 v1, s19, v1, v2
-; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
-; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s8
-; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:12
-; GFX9-NEXT:    v_mov_b32_e32 v1, s58
-; GFX9-NEXT:    v_perm_b32 v3, s57, v3, v2
-; GFX9-NEXT:    v_perm_b32 v1, s20, v1, v2
-; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
-; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s46
-; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:16
-; GFX9-NEXT:    v_mov_b32_e32 v1, s56
-; GFX9-NEXT:    v_perm_b32 v3, s47, v3, v2
-; GFX9-NEXT:    v_perm_b32 v1, s21, v1, v2
-; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
-; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s6
-; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:20
-; GFX9-NEXT:    v_mov_b32_e32 v1, s45
-; GFX9-NEXT:    v_perm_b32 v3, s44, v3, v2
-; GFX9-NEXT:    v_perm_b32 v1, s22, v1, v2
-; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
-; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s41
-; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:24
-; GFX9-NEXT:    v_mov_b32_e32 v1, s43
-; GFX9-NEXT:    v_perm_b32 v3, s42, v3, v2
-; GFX9-NEXT:    v_perm_b32 v1, s23, v1, v2
-; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
-; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:28
-; GFX9-NEXT:    v_mov_b32_e32 v1, s40
-; GFX9-NEXT:    v_perm_b32 v3, s29, v3, v2
-; GFX9-NEXT:    v_perm_b32 v1, s24, v1, v2
-; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
-; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
-; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:32
-; GFX9-NEXT:    v_mov_b32_e32 v1, s28
-; GFX9-NEXT:    v_mov_b32_e32 v3, s26
-; GFX9-NEXT:    v_perm_b32 v1, s25, v1, v2
-; GFX9-NEXT:    v_perm_b32 v2, s27, v3, v2
-; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
-; GFX9-NEXT:    v_or_b32_e32 v1, v1, v2
-; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:36
-; GFX9-NEXT:    s_waitcnt vmcnt(0)
-; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
+; GFX9-NEXT:    s_mov_b64 s[14:15], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[14:15], -1
 ; GFX9-NEXT:    ; implicit-def: $sgpr76
 ; GFX9-NEXT:    ; implicit-def: $sgpr75
 ; GFX9-NEXT:    ; implicit-def: $sgpr12
@@ -3870,14 +3895,133 @@ define inreg <40 x i8> @bitcast_v10i32_to_v40i8_scalar(<10 x i32> inreg %a, i32
 ; GFX9-NEXT:    ; implicit-def: $sgpr28
 ; GFX9-NEXT:    ; implicit-def: $sgpr27
 ; GFX9-NEXT:    ; implicit-def: $sgpr26
-; GFX9-NEXT:    s_branch .LBB13_2
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
+; GFX9-NEXT:    s_add_i32 s17, s17, 3
+; GFX9-NEXT:    s_add_i32 s16, s16, 3
+; GFX9-NEXT:    s_add_i32 s19, s19, 3
+; GFX9-NEXT:    s_add_i32 s18, s18, 3
+; GFX9-NEXT:    s_add_i32 s21, s21, 3
+; GFX9-NEXT:    s_add_i32 s20, s20, 3
+; GFX9-NEXT:    s_add_i32 s23, s23, 3
+; GFX9-NEXT:    s_add_i32 s22, s22, 3
+; GFX9-NEXT:    s_add_i32 s25, s25, 3
+; GFX9-NEXT:    s_add_i32 s24, s24, 3
+; GFX9-NEXT:    s_lshr_b64 s[4:5], s[24:25], 24
+; GFX9-NEXT:    s_lshr_b64 s[6:7], s[22:23], 24
+; GFX9-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
+; GFX9-NEXT:    s_lshr_b64 s[10:11], s[18:19], 24
+; GFX9-NEXT:    s_lshr_b64 s[12:13], s[16:17], 24
+; GFX9-NEXT:    s_lshr_b32 s26, s25, 24
+; GFX9-NEXT:    s_lshr_b32 s27, s25, 16
+; GFX9-NEXT:    s_lshr_b32 s28, s25, 8
+; GFX9-NEXT:    s_lshr_b32 s29, s24, 16
+; GFX9-NEXT:    s_lshr_b32 s40, s24, 8
+; GFX9-NEXT:    s_lshr_b32 s41, s23, 24
+; GFX9-NEXT:    s_lshr_b32 s42, s23, 16
+; GFX9-NEXT:    s_lshr_b32 s43, s23, 8
+; GFX9-NEXT:    s_lshr_b32 s44, s22, 16
+; GFX9-NEXT:    s_lshr_b32 s45, s22, 8
+; GFX9-NEXT:    s_lshr_b32 s46, s21, 24
+; GFX9-NEXT:    s_lshr_b32 s47, s21, 16
+; GFX9-NEXT:    s_lshr_b32 s56, s21, 8
+; GFX9-NEXT:    s_lshr_b32 s57, s20, 16
+; GFX9-NEXT:    s_lshr_b32 s58, s20, 8
+; GFX9-NEXT:    s_lshr_b32 s59, s19, 24
+; GFX9-NEXT:    s_lshr_b32 s60, s19, 16
+; GFX9-NEXT:    s_lshr_b32 s61, s19, 8
+; GFX9-NEXT:    s_lshr_b32 s62, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s63, s18, 8
+; GFX9-NEXT:    s_lshr_b32 s72, s17, 24
+; GFX9-NEXT:    s_lshr_b32 s73, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s74, s17, 8
+; GFX9-NEXT:    s_lshr_b32 s75, s16, 16
+; GFX9-NEXT:    s_lshr_b32 s76, s16, 8
+; GFX9-NEXT:  .LBB13_5: ; %end
+; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
+; GFX9-NEXT:    v_mov_b32_e32 v3, s12
+; GFX9-NEXT:    v_mov_b32_e32 v1, s76
+; GFX9-NEXT:    v_perm_b32 v3, s75, v3, v2
+; GFX9-NEXT:    v_perm_b32 v1, s16, v1, v2
+; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
+; GFX9-NEXT:    v_mov_b32_e32 v3, s72
+; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
+; GFX9-NEXT:    v_mov_b32_e32 v1, s74
+; GFX9-NEXT:    v_perm_b32 v3, s73, v3, v2
+; GFX9-NEXT:    v_perm_b32 v1, s17, v1, v2
+; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
+; GFX9-NEXT:    v_mov_b32_e32 v3, s10
+; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:4
+; GFX9-NEXT:    v_mov_b32_e32 v1, s63
+; GFX9-NEXT:    v_perm_b32 v3, s62, v3, v2
+; GFX9-NEXT:    v_perm_b32 v1, s18, v1, v2
+; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
+; GFX9-NEXT:    v_mov_b32_e32 v3, s59
+; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:8
+; GFX9-NEXT:    v_mov_b32_e32 v1, s61
+; GFX9-NEXT:    v_perm_b32 v3, s60, v3, v2
+; GFX9-NEXT:    v_perm_b32 v1, s19, v1, v2
+; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
+; GFX9-NEXT:    v_mov_b32_e32 v3, s8
+; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:12
+; GFX9-NEXT:    v_mov_b32_e32 v1, s58
+; GFX9-NEXT:    v_perm_b32 v3, s57, v3, v2
+; GFX9-NEXT:    v_perm_b32 v1, s20, v1, v2
+; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
+; GFX9-NEXT:    v_mov_b32_e32 v3, s46
+; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:16
+; GFX9-NEXT:    v_mov_b32_e32 v1, s56
+; GFX9-NEXT:    v_perm_b32 v3, s47, v3, v2
+; GFX9-NEXT:    v_perm_b32 v1, s21, v1, v2
+; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
+; GFX9-NEXT:    v_mov_b32_e32 v3, s6
+; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:20
+; GFX9-NEXT:    v_mov_b32_e32 v1, s45
+; GFX9-NEXT:    v_perm_b32 v3, s44, v3, v2
+; GFX9-NEXT:    v_perm_b32 v1, s22, v1, v2
+; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
+; GFX9-NEXT:    v_mov_b32_e32 v3, s41
+; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:24
+; GFX9-NEXT:    v_mov_b32_e32 v1, s43
+; GFX9-NEXT:    v_perm_b32 v3, s42, v3, v2
+; GFX9-NEXT:    v_perm_b32 v1, s23, v1, v2
+; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
+; GFX9-NEXT:    v_mov_b32_e32 v3, s4
+; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:28
+; GFX9-NEXT:    v_mov_b32_e32 v1, s40
+; GFX9-NEXT:    v_perm_b32 v3, s29, v3, v2
+; GFX9-NEXT:    v_perm_b32 v1, s24, v1, v2
+; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
+; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
+; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:32
+; GFX9-NEXT:    v_mov_b32_e32 v1, s28
+; GFX9-NEXT:    v_mov_b32_e32 v3, s26
+; GFX9-NEXT:    v_perm_b32 v1, s25, v1, v2
+; GFX9-NEXT:    v_perm_b32 v2, s27, v3, v2
+; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
+; GFX9-NEXT:    v_or_b32_e32 v1, v1, v2
+; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:36
+; GFX9-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX11-LABEL: bitcast_v10i32_to_v40i8_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s63, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s14, s21, 24
 ; GFX11-NEXT:    s_lshr_b32 s22, s21, 16
@@ -3909,9 +4053,46 @@ define inreg <40 x i8> @bitcast_v10i32_to_v40i8_scalar(<10 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[10:11], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[12:13], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s63
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB13_3
+; GFX11-NEXT:  .LBB13_2:
+; GFX11-NEXT:    s_mov_b32 s63, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:    ; implicit-def: $sgpr29
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr25
+; GFX11-NEXT:    ; implicit-def: $sgpr27
+; GFX11-NEXT:    ; implicit-def: $sgpr26
+; GFX11-NEXT:    ; implicit-def: $sgpr23
+; GFX11-NEXT:    ; implicit-def: $sgpr24
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr22
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:  .LBB13_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s63, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s3, s3, 3
@@ -3952,7 +4133,7 @@ define inreg <40 x i8> @bitcast_v10i32_to_v40i8_scalar(<10 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b32 s60, s1, 8
 ; GFX11-NEXT:    s_lshr_b32 s61, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s62, s0, 8
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_5: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v6, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_perm_b32 v7, s56, s10, v6
@@ -4000,38 +4181,6 @@ define inreg <40 x i8> @bitcast_v10i32_to_v40i8_scalar(<10 x i32> inreg %a, i32
 ; GFX11-NEXT:    scratch_store_b128 v0, v[5:8], off offset:16
 ; GFX11-NEXT:    scratch_store_b64 v0, v[9:10], off offset:32
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    ; implicit-def: $sgpr29
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr25
-; GFX11-NEXT:    ; implicit-def: $sgpr27
-; GFX11-NEXT:    ; implicit-def: $sgpr26
-; GFX11-NEXT:    ; implicit-def: $sgpr23
-; GFX11-NEXT:    ; implicit-def: $sgpr24
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr22
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -5279,7 +5428,7 @@ define inreg <10 x i32> @bitcast_v40i8_to_v10i32_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s79, v2
 ; SI-NEXT:    v_readfirstlane_b32 s88, v1
 ; SI-NEXT:    v_readfirstlane_b32 s89, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -5371,8 +5520,17 @@ define inreg <10 x i32> @bitcast_v40i8_to_v10i32_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_or_b32 s14, s15, s14
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
 ; SI-NEXT:    s_or_b32 s13, s13, s14
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s14, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s14, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -5503,7 +5661,7 @@ define inreg <10 x i32> @bitcast_v40i8_to_v10i32_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s11, s11, 0x3000000
 ; SI-NEXT:    s_add_i32 s12, s12, 0x3000000
 ; SI-NEXT:    s_add_i32 s13, s13, 0x3000000
-; SI-NEXT:  .LBB15_3: ; %end
+; SI-NEXT:  .LBB15_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -5515,9 +5673,6 @@ define inreg <10 x i32> @bitcast_v40i8_to_v10i32_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v8, s12
 ; SI-NEXT:    v_mov_b32_e32 v9, s13
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v40i8_to_v10i32_scalar:
 ; VI:       ; %bb.0:
@@ -5550,7 +5705,7 @@ define inreg <10 x i32> @bitcast_v40i8_to_v10i32_scalar(<40 x i8> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s62, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s63, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -5613,8 +5768,17 @@ define inreg <10 x i32> @bitcast_v40i8_to_v10i32_scalar(<40 x i8> inreg %a, i32
 ; VI-NEXT:    v_perm_b32 v9, s7, v11, v9
 ; VI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
@@ -5716,11 +5880,8 @@ define inreg <10 x i32> @bitcast_v40i8_to_v10i32_scalar(<40 x i8> inreg %a, i32
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, 0x3000000, v7
 ; VI-NEXT:    v_add_u32_e32 v8, vcc, 0x3000000, v8
 ; VI-NEXT:    v_add_u32_e32 v9, vcc, 0x3000000, v9
-; VI-NEXT:  .LBB15_3: ; %end
+; VI-NEXT:  .LBB15_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v40i8_to_v10i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -5753,7 +5914,7 @@ define inreg <10 x i32> @bitcast_v40i8_to_v10i32_scalar(<40 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s62, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s63, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -5816,8 +5977,17 @@ define inreg <10 x i32> @bitcast_v40i8_to_v10i32_scalar(<40 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_perm_b32 v9, s7, v11, v9
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; GFX9-NEXT:    v_or_b32_e32 v9, v10, v9
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_3
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
@@ -5910,11 +6080,8 @@ define inreg <10 x i32> @bitcast_v40i8_to_v10i32_scalar(<40 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_add_u32_e32 v10, 0x300, v10
 ; GFX9-NEXT:    v_add_u32_sdwa v9, v9, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v9, v10, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB15_3: ; %end
+; GFX9-NEXT:  .LBB15_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB15_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
-; GFX9-NEXT:    s_branch .LBB15_2
 ;
 ; GFX11-LABEL: bitcast_v40i8_to_v10i32_scalar:
 ; GFX11:       ; %bb.0:
@@ -5944,7 +6111,7 @@ define inreg <10 x i32> @bitcast_v40i8_to_v10i32_scalar(<40 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_readfirstlane_b32 s57, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s58, 0
 ; GFX11-NEXT:    s_mov_b32 s58, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v5, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
@@ -5988,9 +6155,17 @@ define inreg <10 x i32> @bitcast_v40i8_to_v10i32_scalar(<40 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_or_b32_e32 v7, v12, v10
 ; GFX11-NEXT:    v_or_b32_e32 v8, v14, v11
 ; GFX11-NEXT:    v_or_b32_e32 v9, v15, v13
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_3
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB15_3
+; GFX11-NEXT:  .LBB15_2:
+; GFX11-NEXT:    s_mov_b32 s58, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
+; GFX11-NEXT:  .LBB15_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v5, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s22, s22, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
@@ -6082,11 +6257,8 @@ define inreg <10 x i32> @bitcast_v40i8_to_v10i32_scalar(<40 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_or_b32_e32 v7, v10, v11
 ; GFX11-NEXT:    v_or_b32_e32 v8, v12, v13
 ; GFX11-NEXT:    v_or_b32_e32 v9, v14, v15
-; GFX11-NEXT:  .LBB15_3: ; %end
+; GFX11-NEXT:  .LBB15_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
-; GFX11-NEXT:    s_branch .LBB15_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -6219,10 +6391,18 @@ define inreg <5 x double> @bitcast_v10i32_to_v5f64_scalar(<10 x i32> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s23, s23, 3
@@ -6233,7 +6413,7 @@ define inreg <5 x double> @bitcast_v10i32_to_v5f64_scalar(<10 x i32> inreg %a, i
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6245,17 +6425,23 @@ define inreg <5 x double> @bitcast_v10i32_to_v5f64_scalar(<10 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v8, s24
 ; SI-NEXT:    v_mov_b32_e32 v9, s25
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_v10i32_to_v5f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s23, s23, 3
@@ -6266,7 +6452,7 @@ define inreg <5 x double> @bitcast_v10i32_to_v5f64_scalar(<10 x i32> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6278,17 +6464,23 @@ define inreg <5 x double> @bitcast_v10i32_to_v5f64_scalar(<10 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v10i32_to_v5f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s25, s25, 3
 ; GFX9-NEXT:    s_add_i32 s24, s24, 3
 ; GFX9-NEXT:    s_add_i32 s23, s23, 3
@@ -6299,7 +6491,7 @@ define inreg <5 x double> @bitcast_v10i32_to_v5f64_scalar(<10 x i32> inreg %a, i
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6311,19 +6503,22 @@ define inreg <5 x double> @bitcast_v10i32_to_v5f64_scalar(<10 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s24
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s25
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v10i32_to_v5f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB17_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s21, s21, 3
 ; GFX11-NEXT:    s_add_i32 s20, s20, 3
 ; GFX11-NEXT:    s_add_i32 s19, s19, 3
@@ -6334,7 +6529,7 @@ define inreg <5 x double> @bitcast_v10i32_to_v5f64_scalar(<10 x i32> inreg %a, i
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -6342,8 +6537,6 @@ define inreg <5 x double> @bitcast_v10i32_to_v5f64_scalar(<10 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -6456,19 +6649,25 @@ define inreg <10 x i32> @bitcast_v5f64_to_v10i32_scalar(<5 x double> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6485,19 +6684,25 @@ define inreg <10 x i32> @bitcast_v5f64_to_v10i32_scalar(<5 x double> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6514,19 +6719,25 @@ define inreg <10 x i32> @bitcast_v5f64_to_v10i32_scalar(<5 x double> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6548,19 +6759,22 @@ define inreg <10 x i32> @bitcast_v5f64_to_v10i32_scalar(<5 x double> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[8:9], s[20:21], 1.0
 ; GFX11-NEXT:    v_add_f64 v[6:7], s[18:19], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[16:17], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -6700,10 +6914,18 @@ define inreg <5 x i64> @bitcast_v10i32_to_v5i64_scalar(<10 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_4
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB21_3
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s23, s23, 3
@@ -6714,7 +6936,7 @@ define inreg <5 x i64> @bitcast_v10i32_to_v5i64_scalar(<10 x i32> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB21_3: ; %end
+; SI-NEXT:  .LBB21_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6726,17 +6948,23 @@ define inreg <5 x i64> @bitcast_v10i32_to_v5i64_scalar(<10 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v8, s24
 ; SI-NEXT:    v_mov_b32_e32 v9, s25
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB21_4:
-; SI-NEXT:    s_branch .LBB21_2
 ;
 ; VI-LABEL: bitcast_v10i32_to_v5i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_4
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_3
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s23, s23, 3
@@ -6747,7 +6975,7 @@ define inreg <5 x i64> @bitcast_v10i32_to_v5i64_scalar(<10 x i32> inreg %a, i32
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB21_3: ; %end
+; VI-NEXT:  .LBB21_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6759,17 +6987,23 @@ define inreg <5 x i64> @bitcast_v10i32_to_v5i64_scalar(<10 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB21_4:
-; VI-NEXT:    s_branch .LBB21_2
 ;
 ; GFX9-LABEL: bitcast_v10i32_to_v5i64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_3
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s25, s25, 3
 ; GFX9-NEXT:    s_add_i32 s24, s24, 3
 ; GFX9-NEXT:    s_add_i32 s23, s23, 3
@@ -6780,7 +7014,7 @@ define inreg <5 x i64> @bitcast_v10i32_to_v5i64_scalar(<10 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB21_3: ; %end
+; GFX9-NEXT:  .LBB21_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6792,19 +7026,22 @@ define inreg <5 x i64> @bitcast_v10i32_to_v5i64_scalar(<10 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s24
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s25
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB21_4:
-; GFX9-NEXT:    s_branch .LBB21_2
 ;
 ; GFX11-LABEL: bitcast_v10i32_to_v5i64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_3
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s21, s21, 3
 ; GFX11-NEXT:    s_add_i32 s20, s20, 3
 ; GFX11-NEXT:    s_add_i32 s19, s19, 3
@@ -6815,7 +7052,7 @@ define inreg <5 x i64> @bitcast_v10i32_to_v5i64_scalar(<10 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB21_3: ; %end
+; GFX11-NEXT:  .LBB21_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -6823,8 +7060,6 @@ define inreg <5 x i64> @bitcast_v10i32_to_v5i64_scalar(<10 x i32> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB21_4:
-; GFX11-NEXT:    s_branch .LBB21_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -6960,10 +7195,18 @@ define inreg <10 x i32> @bitcast_v5i64_to_v10i32_scalar(<5 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s24, s24, 3
 ; SI-NEXT:    s_addc_u32 s25, s25, 0
 ; SI-NEXT:    s_add_u32 s22, s22, 3
@@ -6974,7 +7217,7 @@ define inreg <10 x i32> @bitcast_v5i64_to_v10i32_scalar(<5 x i64> inreg %a, i32
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6986,17 +7229,23 @@ define inreg <10 x i32> @bitcast_v5i64_to_v10i32_scalar(<5 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v8, s24
 ; SI-NEXT:    v_mov_b32_e32 v9, s25
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v5i64_to_v10i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_4
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_3
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s24, s24, 3
 ; VI-NEXT:    s_addc_u32 s25, s25, 0
 ; VI-NEXT:    s_add_u32 s22, s22, 3
@@ -7007,7 +7256,7 @@ define inreg <10 x i32> @bitcast_v5i64_to_v10i32_scalar(<5 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB23_3: ; %end
+; VI-NEXT:  .LBB23_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7019,17 +7268,23 @@ define inreg <10 x i32> @bitcast_v5i64_to_v10i32_scalar(<5 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_4:
-; VI-NEXT:    s_branch .LBB23_2
 ;
 ; GFX9-LABEL: bitcast_v5i64_to_v10i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_3
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s24, s24, 3
 ; GFX9-NEXT:    s_addc_u32 s25, s25, 0
 ; GFX9-NEXT:    s_add_u32 s22, s22, 3
@@ -7040,7 +7295,7 @@ define inreg <10 x i32> @bitcast_v5i64_to_v10i32_scalar(<5 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB23_3: ; %end
+; GFX9-NEXT:  .LBB23_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -7052,19 +7307,22 @@ define inreg <10 x i32> @bitcast_v5i64_to_v10i32_scalar(<5 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s24
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s25
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_4:
-; GFX9-NEXT:    s_branch .LBB23_2
 ;
 ; GFX11-LABEL: bitcast_v5i64_to_v10i32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_3
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s20, s20, 3
 ; GFX11-NEXT:    s_addc_u32 s21, s21, 0
 ; GFX11-NEXT:    s_add_u32 s18, s18, 3
@@ -7075,7 +7333,7 @@ define inreg <10 x i32> @bitcast_v5i64_to_v10i32_scalar(<5 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB23_3: ; %end
+; GFX11-NEXT:  .LBB23_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -7083,8 +7341,6 @@ define inreg <10 x i32> @bitcast_v5i64_to_v10i32_scalar(<5 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_4:
-; GFX11-NEXT:    s_branch .LBB23_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -7274,7 +7530,7 @@ define inreg <20 x i16> @bitcast_v10f32_to_v20i16_scalar(<10 x float> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_3
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s40, s25, 16
 ; SI-NEXT:    s_lshr_b32 s29, s23, 16
@@ -7286,8 +7542,26 @@ define inreg <20 x i16> @bitcast_v10f32_to_v20i16_scalar(<10 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB25_4
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; SI-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; SI-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -7308,20 +7582,8 @@ define inreg <20 x i16> @bitcast_v10f32_to_v20i16_scalar(<10 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v19, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v1
-; SI-NEXT:    s_branch .LBB25_5
-; SI-NEXT:  .LBB25_3:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    s_branch .LBB25_2
-; SI-NEXT:  .LBB25_4:
+; SI-NEXT:    s_branch .LBB25_6
+; SI-NEXT:  .LBB25_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7342,7 +7604,7 @@ define inreg <20 x i16> @bitcast_v10f32_to_v20i16_scalar(<10 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v12, s8
 ; SI-NEXT:    v_mov_b32_e32 v11, s6
 ; SI-NEXT:    v_mov_b32_e32 v10, s4
-; SI-NEXT:  .LBB25_5: ; %end
+; SI-NEXT:  .LBB25_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
@@ -7379,10 +7641,18 @@ define inreg <20 x i16> @bitcast_v10f32_to_v20i16_scalar(<10 x float> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_3
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB25_4
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; VI-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; VI-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -7394,9 +7664,7 @@ define inreg <20 x i16> @bitcast_v10f32_to_v20i16_scalar(<10 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB25_3:
-; VI-NEXT:    s_branch .LBB25_2
-; VI-NEXT:  .LBB25_4:
+; VI-NEXT:  .LBB25_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7419,10 +7687,18 @@ define inreg <20 x i16> @bitcast_v10f32_to_v20i16_scalar(<10 x float> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_4
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -7434,9 +7710,7 @@ define inreg <20 x i16> @bitcast_v10f32_to_v20i16_scalar(<10 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB25_3:
-; GFX9-NEXT:    s_branch .LBB25_2
-; GFX9-NEXT:  .LBB25_4:
+; GFX9-NEXT:  .LBB25_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -7464,11 +7738,16 @@ define inreg <20 x i16> @bitcast_v10f32_to_v20i16_scalar(<10 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_4
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB25_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v9, s21, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v8, s20, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v7, s19, 1.0
@@ -7480,8 +7759,6 @@ define inreg <20 x i16> @bitcast_v10f32_to_v20i16_scalar(<10 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB25_3:
-; GFX11-NEXT:    s_branch .LBB25_2
 ; GFX11-NEXT:  .LBB25_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -7764,7 +8041,7 @@ define inreg <10 x float> @bitcast_v20i16_to_v10f32_scalar(<20 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s45, s17, 16
 ; SI-NEXT:    s_lshr_b32 s46, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB27_4
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s46, 16
@@ -7796,8 +8073,17 @@ define inreg <10 x float> @bitcast_v20i16_to_v10f32_scalar(<20 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s13, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s14, s27, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s14
-; SI-NEXT:    s_cbranch_execnz .LBB27_3
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s14, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s14, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s46, 16
@@ -7848,7 +8134,7 @@ define inreg <10 x float> @bitcast_v20i16_to_v10f32_scalar(<20 x i16> inreg %a,
 ; SI-NEXT:    s_add_i32 s11, s11, 0x30000
 ; SI-NEXT:    s_add_i32 s12, s12, 0x30000
 ; SI-NEXT:    s_add_i32 s13, s13, 0x30000
-; SI-NEXT:  .LBB27_3: ; %end
+; SI-NEXT:  .LBB27_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -7860,18 +8146,23 @@ define inreg <10 x float> @bitcast_v20i16_to_v10f32_scalar(<20 x i16> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v8, s12
 ; SI-NEXT:    v_mov_b32_e32 v9, s13
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB27_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13
-; SI-NEXT:    s_branch .LBB27_2
 ;
 ; VI-LABEL: bitcast_v20i16_to_v10f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_4
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB27_3
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s25, 3
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -7922,7 +8213,7 @@ define inreg <10 x float> @bitcast_v20i16_to_v10f32_scalar(<20 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB27_3: ; %end
+; VI-NEXT:  .LBB27_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7934,17 +8225,23 @@ define inreg <10 x float> @bitcast_v20i16_to_v10f32_scalar(<20 x i16> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB27_4:
-; VI-NEXT:    s_branch .LBB27_2
 ;
 ; GFX9-LABEL: bitcast_v20i16_to_v10f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_4
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v9, s25, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v8, s24, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v7, s23, 3 op_sel_hi:[1,0]
@@ -7956,9 +8253,7 @@ define inreg <10 x float> @bitcast_v20i16_to_v10f32_scalar(<20 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB27_3:
-; GFX9-NEXT:    s_branch .LBB27_2
-; GFX9-NEXT:  .LBB27_4:
+; GFX9-NEXT:  .LBB27_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -7980,11 +8275,16 @@ define inreg <10 x float> @bitcast_v20i16_to_v10f32_scalar(<20 x i16> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_4
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB27_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v9, s21, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v8, s20, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v7, s19, 3 op_sel_hi:[1,0]
@@ -7996,8 +8296,6 @@ define inreg <10 x float> @bitcast_v20i16_to_v10f32_scalar(<20 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB27_3:
-; GFX11-NEXT:    s_branch .LBB27_2
 ; GFX11-NEXT:  .LBB27_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -8194,7 +8492,7 @@ define inreg <20 x half> @bitcast_v10f32_to_v20f16_scalar(<10 x float> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s40, s25, 16
 ; SI-NEXT:    s_lshr_b32 s29, s23, 16
@@ -8206,8 +8504,26 @@ define inreg <20 x half> @bitcast_v10f32_to_v20f16_scalar(<10 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; SI-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; SI-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -8228,20 +8544,8 @@ define inreg <20 x half> @bitcast_v10f32_to_v20f16_scalar(<10 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v19, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v1
-; SI-NEXT:    s_branch .LBB29_5
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:    s_branch .LBB29_6
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8262,7 +8566,7 @@ define inreg <20 x half> @bitcast_v10f32_to_v20f16_scalar(<10 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v12, s8
 ; SI-NEXT:    v_mov_b32_e32 v11, s6
 ; SI-NEXT:    v_mov_b32_e32 v10, s4
-; SI-NEXT:  .LBB29_5: ; %end
+; SI-NEXT:  .LBB29_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
@@ -8299,10 +8603,18 @@ define inreg <20 x half> @bitcast_v10f32_to_v20f16_scalar(<10 x float> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; VI-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; VI-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -8314,9 +8626,7 @@ define inreg <20 x half> @bitcast_v10f32_to_v20f16_scalar(<10 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8339,10 +8649,18 @@ define inreg <20 x half> @bitcast_v10f32_to_v20f16_scalar(<10 x float> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -8354,9 +8672,7 @@ define inreg <20 x half> @bitcast_v10f32_to_v20f16_scalar(<10 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -8384,11 +8700,16 @@ define inreg <20 x half> @bitcast_v10f32_to_v20f16_scalar(<10 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB29_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB29_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v9, s21, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v8, s20, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v7, s19, 1.0
@@ -8400,8 +8721,6 @@ define inreg <20 x half> @bitcast_v10f32_to_v20f16_scalar(<10 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB29_3:
-; GFX11-NEXT:    s_branch .LBB29_2
 ; GFX11-NEXT:  .LBB29_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -8724,7 +9043,7 @@ define inreg <10 x float> @bitcast_v20f16_to_v10f32_scalar(<20 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s45, s17, 16
 ; SI-NEXT:    s_lshr_b32 s46, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_3
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s46, 16
@@ -8756,8 +9075,17 @@ define inreg <10 x float> @bitcast_v20f16_to_v10f32_scalar(<20 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s13, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s14, s27, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s14
-; SI-NEXT:    s_cbranch_execnz .LBB31_4
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s14, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s14, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s46
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s45
@@ -8839,10 +9167,7 @@ define inreg <10 x float> @bitcast_v20f16_to_v10f32_scalar(<20 x half> inreg %a,
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v10
 ; SI-NEXT:    v_or_b32_e32 v9, v11, v9
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13
-; SI-NEXT:    s_branch .LBB31_2
-; SI-NEXT:  .LBB31_4:
+; SI-NEXT:  .LBB31_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -8859,10 +9184,18 @@ define inreg <10 x float> @bitcast_v20f16_to_v10f32_scalar(<20 x half> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_3
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB31_4
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s25, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -8915,9 +9248,7 @@ define inreg <10 x float> @bitcast_v20f16_to_v10f32_scalar(<20 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v10
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_3:
-; VI-NEXT:    s_branch .LBB31_2
-; VI-NEXT:  .LBB31_4:
+; VI-NEXT:  .LBB31_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8934,10 +9265,18 @@ define inreg <10 x float> @bitcast_v20f16_to_v10f32_scalar(<20 x half> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_4
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v9, s25, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v8, s24, v0 op_sel_hi:[1,0]
@@ -8950,9 +9289,7 @@ define inreg <10 x float> @bitcast_v20f16_to_v10f32_scalar(<20 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB31_3:
-; GFX9-NEXT:    s_branch .LBB31_2
-; GFX9-NEXT:  .LBB31_4:
+; GFX9-NEXT:  .LBB31_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -8974,11 +9311,16 @@ define inreg <10 x float> @bitcast_v20f16_to_v10f32_scalar(<20 x half> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_4
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v9, 0x200, s21 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v8, 0x200, s20 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v7, 0x200, s19 op_sel_hi:[0,1]
@@ -8990,8 +9332,6 @@ define inreg <10 x float> @bitcast_v20f16_to_v10f32_scalar(<20 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_3:
-; GFX11-NEXT:    s_branch .LBB31_2
 ; GFX11-NEXT:  .LBB31_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -9883,7 +10223,7 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s91, s25, 24
 ; SI-NEXT:    s_lshr_b32 s93, s25, 16
@@ -9915,60 +10255,10 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
-; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
-; SI-NEXT:    v_add_f32_e64 v6, s20, 1.0
-; SI-NEXT:    v_add_f32_e64 v12, s17, 1.0
-; SI-NEXT:    v_add_f32_e64 v13, s16, 1.0
-; SI-NEXT:    v_add_f32_e64 v7, s19, 1.0
-; SI-NEXT:    v_add_f32_e64 v10, s18, 1.0
-; SI-NEXT:    v_readfirstlane_b32 s16, v6
-; SI-NEXT:    v_readfirstlane_b32 s17, v5
-; SI-NEXT:    v_add_f32_e64 v3, s23, 1.0
-; SI-NEXT:    v_add_f32_e64 v4, s22, 1.0
-; SI-NEXT:    v_add_f32_e64 v1, s25, 1.0
-; SI-NEXT:    v_add_f32_e64 v2, s24, 1.0
-; SI-NEXT:    s_lshr_b64 s[26:27], s[16:17], 24
-; SI-NEXT:    s_lshr_b64 s[28:29], s[16:17], 16
-; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 8
-; SI-NEXT:    v_readfirstlane_b32 s16, v10
-; SI-NEXT:    v_readfirstlane_b32 s17, v7
-; SI-NEXT:    v_readfirstlane_b32 s8, v2
-; SI-NEXT:    v_readfirstlane_b32 s9, v1
-; SI-NEXT:    v_readfirstlane_b32 s14, v4
-; SI-NEXT:    v_readfirstlane_b32 s15, v3
-; SI-NEXT:    s_lshr_b64 s[42:43], s[16:17], 24
-; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 16
-; SI-NEXT:    s_lshr_b64 s[46:47], s[16:17], 8
-; SI-NEXT:    v_readfirstlane_b32 s16, v13
-; SI-NEXT:    v_readfirstlane_b32 s17, v12
-; SI-NEXT:    s_lshr_b64 s[4:5], s[8:9], 24
-; SI-NEXT:    s_lshr_b64 s[6:7], s[8:9], 16
-; SI-NEXT:    s_lshr_b64 s[8:9], s[8:9], 8
-; SI-NEXT:    s_lshr_b64 s[10:11], s[14:15], 24
-; SI-NEXT:    s_lshr_b64 s[12:13], s[14:15], 16
-; SI-NEXT:    s_lshr_b64 s[14:15], s[14:15], 8
-; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 24
-; SI-NEXT:    s_lshr_b64 s[58:59], s[16:17], 16
-; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 8
-; SI-NEXT:    v_lshrrev_b32_e32 v8, 24, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v11, 8, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v14, 24, v3
-; SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v3
-; SI-NEXT:    v_lshrrev_b32_e32 v16, 8, v3
-; SI-NEXT:    v_lshrrev_b32_e32 v17, 24, v5
-; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v5
-; SI-NEXT:    v_lshrrev_b32_e32 v19, 8, v5
-; SI-NEXT:    v_lshrrev_b32_e32 v20, 24, v7
-; SI-NEXT:    v_lshrrev_b32_e32 v21, 16, v7
-; SI-NEXT:    v_lshrrev_b32_e32 v22, 8, v7
-; SI-NEXT:    v_lshrrev_b32_e32 v23, 24, v12
-; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v12
-; SI-NEXT:    v_lshrrev_b32_e32 v25, 8, v12
-; SI-NEXT:    s_branch .LBB33_5
-; SI-NEXT:  .LBB33_3:
+; SI-NEXT:    s_mov_b64 s[62:63], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[62:63], -1
 ; SI-NEXT:    ; implicit-def: $sgpr60
 ; SI-NEXT:    ; implicit-def: $sgpr58
 ; SI-NEXT:    ; implicit-def: $sgpr56
@@ -9999,8 +10289,64 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; SI-NEXT:    ; implicit-def: $sgpr93
 ; SI-NEXT:    ; implicit-def: $sgpr91
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[62:63], s[62:63], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
+; SI-NEXT:    v_add_f32_e64 v6, s20, 1.0
+; SI-NEXT:    v_add_f32_e64 v12, s17, 1.0
+; SI-NEXT:    v_add_f32_e64 v13, s16, 1.0
+; SI-NEXT:    v_add_f32_e64 v7, s19, 1.0
+; SI-NEXT:    v_add_f32_e64 v10, s18, 1.0
+; SI-NEXT:    v_readfirstlane_b32 s16, v6
+; SI-NEXT:    v_readfirstlane_b32 s17, v5
+; SI-NEXT:    v_add_f32_e64 v3, s23, 1.0
+; SI-NEXT:    v_add_f32_e64 v4, s22, 1.0
+; SI-NEXT:    v_add_f32_e64 v1, s25, 1.0
+; SI-NEXT:    v_add_f32_e64 v2, s24, 1.0
+; SI-NEXT:    s_lshr_b64 s[26:27], s[16:17], 24
+; SI-NEXT:    s_lshr_b64 s[28:29], s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 8
+; SI-NEXT:    v_readfirstlane_b32 s16, v10
+; SI-NEXT:    v_readfirstlane_b32 s17, v7
+; SI-NEXT:    v_readfirstlane_b32 s8, v2
+; SI-NEXT:    v_readfirstlane_b32 s9, v1
+; SI-NEXT:    v_readfirstlane_b32 s14, v4
+; SI-NEXT:    v_readfirstlane_b32 s15, v3
+; SI-NEXT:    s_lshr_b64 s[42:43], s[16:17], 24
+; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[46:47], s[16:17], 8
+; SI-NEXT:    v_readfirstlane_b32 s16, v13
+; SI-NEXT:    v_readfirstlane_b32 s17, v12
+; SI-NEXT:    s_lshr_b64 s[4:5], s[8:9], 24
+; SI-NEXT:    s_lshr_b64 s[6:7], s[8:9], 16
+; SI-NEXT:    s_lshr_b64 s[8:9], s[8:9], 8
+; SI-NEXT:    s_lshr_b64 s[10:11], s[14:15], 24
+; SI-NEXT:    s_lshr_b64 s[12:13], s[14:15], 16
+; SI-NEXT:    s_lshr_b64 s[14:15], s[14:15], 8
+; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 24
+; SI-NEXT:    s_lshr_b64 s[58:59], s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 8
+; SI-NEXT:    v_lshrrev_b32_e32 v8, 24, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v11, 8, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v14, 24, v3
+; SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v3
+; SI-NEXT:    v_lshrrev_b32_e32 v16, 8, v3
+; SI-NEXT:    v_lshrrev_b32_e32 v17, 24, v5
+; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v5
+; SI-NEXT:    v_lshrrev_b32_e32 v19, 8, v5
+; SI-NEXT:    v_lshrrev_b32_e32 v20, 24, v7
+; SI-NEXT:    v_lshrrev_b32_e32 v21, 16, v7
+; SI-NEXT:    v_lshrrev_b32_e32 v22, 8, v7
+; SI-NEXT:    v_lshrrev_b32_e32 v23, 24, v12
+; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v12
+; SI-NEXT:    v_lshrrev_b32_e32 v25, 8, v12
+; SI-NEXT:    s_branch .LBB33_6
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v13, s16
 ; SI-NEXT:    v_mov_b32_e32 v12, s17
 ; SI-NEXT:    v_mov_b32_e32 v10, s18
@@ -10026,7 +10372,7 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v11, s94
 ; SI-NEXT:    v_mov_b32_e32 v9, s93
 ; SI-NEXT:    v_mov_b32_e32 v8, s91
-; SI-NEXT:  .LBB33_5: ; %end
+; SI-NEXT:  .LBB33_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v13, 0xff, v13
 ; SI-NEXT:    s_lshl_b32 s5, s60, 8
 ; SI-NEXT:    v_or_b32_e32 v13, s5, v13
@@ -10152,7 +10498,7 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s26, s25, 24
 ; VI-NEXT:    s_lshr_b32 s27, s25, 16
@@ -10184,8 +10530,46 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[14:15], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[14:15], -1
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr28
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr29
+; VI-NEXT:    ; implicit-def: $sgpr27
+; VI-NEXT:    ; implicit-def: $sgpr26
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v2, s25, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s24, 1.0
 ; VI-NEXT:    v_add_f32_e64 v4, s23, 1.0
@@ -10226,40 +10610,8 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; VI-NEXT:    v_lshrrev_b32_e32 v38, 8, v10
 ; VI-NEXT:    v_lshrrev_b32_e32 v48, 16, v9
 ; VI-NEXT:    v_lshrrev_b32_e32 v39, 8, v9
-; VI-NEXT:    s_branch .LBB33_5
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr28
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr29
-; VI-NEXT:    ; implicit-def: $sgpr27
-; VI-NEXT:    ; implicit-def: $sgpr26
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:    s_branch .LBB33_6
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v9, s16
 ; VI-NEXT:    v_mov_b32_e32 v10, s17
 ; VI-NEXT:    v_mov_b32_e32 v7, s18
@@ -10300,7 +10652,7 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v13, s8
 ; VI-NEXT:    v_mov_b32_e32 v12, s10
 ; VI-NEXT:    v_mov_b32_e32 v11, s12
-; VI-NEXT:  .LBB33_5: ; %end
+; VI-NEXT:  .LBB33_6: ; %end
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; VI-NEXT:    v_perm_b32 v15, v48, v15, s4
 ; VI-NEXT:    v_perm_b32 v9, v9, v39, s4
@@ -10368,7 +10720,7 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s26, s25, 24
 ; GFX9-NEXT:    s_lshr_b32 s27, s25, 16
@@ -10400,8 +10752,46 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[14:15], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[14:15], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr28
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr29
+; GFX9-NEXT:    ; implicit-def: $sgpr27
+; GFX9-NEXT:    ; implicit-def: $sgpr26
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v2, s25, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s24, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v4, s23, 1.0
@@ -10442,40 +10832,8 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v38, 8, v10
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v48, 16, v9
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v39, 8, v9
-; GFX9-NEXT:    s_branch .LBB33_5
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr28
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr29
-; GFX9-NEXT:    ; implicit-def: $sgpr27
-; GFX9-NEXT:    ; implicit-def: $sgpr26
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:    s_branch .LBB33_6
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s18
@@ -10516,7 +10874,7 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v12, s10
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s12
-; GFX9-NEXT:  .LBB33_5: ; %end
+; GFX9-NEXT:  .LBB33_6: ; %end
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; GFX9-NEXT:    v_perm_b32 v15, v48, v15, s4
 ; GFX9-NEXT:    v_perm_b32 v9, v9, v39, s4
@@ -10576,7 +10934,7 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s14, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s15, s21, 24
 ; GFX11-NEXT:    s_lshr_b32 s22, s21, 16
@@ -10608,9 +10966,46 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB33_3
+; GFX11-NEXT:  .LBB33_2:
+; GFX11-NEXT:    s_mov_b32 s14, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr29
+; GFX11-NEXT:    ; implicit-def: $sgpr27
+; GFX11-NEXT:    ; implicit-def: $sgpr26
+; GFX11-NEXT:    ; implicit-def: $sgpr25
+; GFX11-NEXT:    ; implicit-def: $sgpr23
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr24
+; GFX11-NEXT:    ; implicit-def: $sgpr22
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:  .LBB33_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s14, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v2, s21, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v1, s20, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v4, s19, 1.0
@@ -10651,40 +11046,8 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v38, 8, v10
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v48, 16, v9
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v39, 8, v9
-; GFX11-NEXT:    s_branch .LBB33_5
-; GFX11-NEXT:  .LBB33_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr29
-; GFX11-NEXT:    ; implicit-def: $sgpr27
-; GFX11-NEXT:    ; implicit-def: $sgpr26
-; GFX11-NEXT:    ; implicit-def: $sgpr25
-; GFX11-NEXT:    ; implicit-def: $sgpr23
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr24
-; GFX11-NEXT:    ; implicit-def: $sgpr22
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    s_branch .LBB33_2
-; GFX11-NEXT:  .LBB33_4:
+; GFX11-NEXT:    s_branch .LBB33_6
+; GFX11-NEXT:  .LBB33_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v9, s0 :: v_dual_mov_b32 v10, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v7, s2 :: v_dual_mov_b32 v8, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v5, s16 :: v_dual_mov_b32 v6, s17
@@ -10705,7 +11068,7 @@ define inreg <40 x i8> @bitcast_v10f32_to_v40i8_scalar(<10 x float> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s22 :: v_dual_mov_b32 v15, s4
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s6 :: v_dual_mov_b32 v13, s8
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s10 :: v_dual_mov_b32 v11, s12
-; GFX11-NEXT:  .LBB33_5: ; %end
+; GFX11-NEXT:  .LBB33_6: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-NEXT:    v_perm_b32 v15, v48, v15, 0xc0c0004
 ; GFX11-NEXT:    v_perm_b32 v9, v9, v39, 0xc0c0004
@@ -11999,7 +12362,7 @@ define inreg <10 x float> @bitcast_v40i8_to_v10f32_scalar(<40 x i8> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s79, v2
 ; SI-NEXT:    v_readfirstlane_b32 s88, v1
 ; SI-NEXT:    v_readfirstlane_b32 s89, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_4
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -12091,8 +12454,17 @@ define inreg <10 x float> @bitcast_v40i8_to_v10f32_scalar(<40 x i8> inreg %a, i3
 ; SI-NEXT:    s_or_b32 s14, s15, s14
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
 ; SI-NEXT:    s_or_b32 s13, s13, s14
-; SI-NEXT:    s_cbranch_execnz .LBB35_3
-; SI-NEXT:  .LBB35_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s14, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s14, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -12223,7 +12595,7 @@ define inreg <10 x float> @bitcast_v40i8_to_v10f32_scalar(<40 x i8> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s11, s11, 0x3000000
 ; SI-NEXT:    s_add_i32 s12, s12, 0x3000000
 ; SI-NEXT:    s_add_i32 s13, s13, 0x3000000
-; SI-NEXT:  .LBB35_3: ; %end
+; SI-NEXT:  .LBB35_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -12235,9 +12607,6 @@ define inreg <10 x float> @bitcast_v40i8_to_v10f32_scalar(<40 x i8> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v8, s12
 ; SI-NEXT:    v_mov_b32_e32 v9, s13
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB35_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13
-; SI-NEXT:    s_branch .LBB35_2
 ;
 ; VI-LABEL: bitcast_v40i8_to_v10f32_scalar:
 ; VI:       ; %bb.0:
@@ -12270,7 +12639,7 @@ define inreg <10 x float> @bitcast_v40i8_to_v10f32_scalar(<40 x i8> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s62, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s63, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_4
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -12333,8 +12702,17 @@ define inreg <10 x float> @bitcast_v40i8_to_v10f32_scalar(<40 x i8> inreg %a, i3
 ; VI-NEXT:    v_perm_b32 v9, s7, v11, v9
 ; VI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
-; VI-NEXT:    s_cbranch_execnz .LBB35_3
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
@@ -12436,11 +12814,8 @@ define inreg <10 x float> @bitcast_v40i8_to_v10f32_scalar(<40 x i8> inreg %a, i3
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, 0x3000000, v7
 ; VI-NEXT:    v_add_u32_e32 v8, vcc, 0x3000000, v8
 ; VI-NEXT:    v_add_u32_e32 v9, vcc, 0x3000000, v9
-; VI-NEXT:  .LBB35_3: ; %end
+; VI-NEXT:  .LBB35_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB35_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
-; VI-NEXT:    s_branch .LBB35_2
 ;
 ; GFX9-LABEL: bitcast_v40i8_to_v10f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -12473,7 +12848,7 @@ define inreg <10 x float> @bitcast_v40i8_to_v10f32_scalar(<40 x i8> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s62, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s63, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -12536,8 +12911,17 @@ define inreg <10 x float> @bitcast_v40i8_to_v10f32_scalar(<40 x i8> inreg %a, i3
 ; GFX9-NEXT:    v_perm_b32 v9, s7, v11, v9
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; GFX9-NEXT:    v_or_b32_e32 v9, v10, v9
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_3
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
@@ -12630,11 +13014,8 @@ define inreg <10 x float> @bitcast_v40i8_to_v10f32_scalar(<40 x i8> inreg %a, i3
 ; GFX9-NEXT:    v_add_u32_e32 v10, 0x300, v10
 ; GFX9-NEXT:    v_add_u32_sdwa v9, v9, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v9, v10, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB35_3: ; %end
+; GFX9-NEXT:  .LBB35_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB35_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
-; GFX9-NEXT:    s_branch .LBB35_2
 ;
 ; GFX11-LABEL: bitcast_v40i8_to_v10f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -12664,7 +13045,7 @@ define inreg <10 x float> @bitcast_v40i8_to_v10f32_scalar(<40 x i8> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s57, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s58, 0
 ; GFX11-NEXT:    s_mov_b32 s58, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v5, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
@@ -12708,9 +13089,17 @@ define inreg <10 x float> @bitcast_v40i8_to_v10f32_scalar(<40 x i8> inreg %a, i3
 ; GFX11-NEXT:    v_or_b32_e32 v7, v12, v10
 ; GFX11-NEXT:    v_or_b32_e32 v8, v14, v11
 ; GFX11-NEXT:    v_or_b32_e32 v9, v15, v13
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_3
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB35_3
+; GFX11-NEXT:  .LBB35_2:
+; GFX11-NEXT:    s_mov_b32 s58, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
+; GFX11-NEXT:  .LBB35_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v5, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s22, s22, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
@@ -12802,11 +13191,8 @@ define inreg <10 x float> @bitcast_v40i8_to_v10f32_scalar(<40 x i8> inreg %a, i3
 ; GFX11-NEXT:    v_or_b32_e32 v7, v10, v11
 ; GFX11-NEXT:    v_or_b32_e32 v8, v12, v13
 ; GFX11-NEXT:    v_or_b32_e32 v9, v14, v15
-; GFX11-NEXT:  .LBB35_3: ; %end
+; GFX11-NEXT:  .LBB35_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
-; GFX11-NEXT:    s_branch .LBB35_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -12933,10 +13319,18 @@ define inreg <5 x double> @bitcast_v10f32_to_v5f64_scalar(<10 x float> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_3
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB37_4
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; SI-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; SI-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -12948,9 +13342,7 @@ define inreg <5 x double> @bitcast_v10f32_to_v5f64_scalar(<10 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB37_3:
-; SI-NEXT:    s_branch .LBB37_2
-; SI-NEXT:  .LBB37_4:
+; SI-NEXT:  .LBB37_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -12973,10 +13365,18 @@ define inreg <5 x double> @bitcast_v10f32_to_v5f64_scalar(<10 x float> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_3
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_4
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; VI-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; VI-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -12988,9 +13388,7 @@ define inreg <5 x double> @bitcast_v10f32_to_v5f64_scalar(<10 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_3:
-; VI-NEXT:    s_branch .LBB37_2
-; VI-NEXT:  .LBB37_4:
+; VI-NEXT:  .LBB37_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13013,10 +13411,18 @@ define inreg <5 x double> @bitcast_v10f32_to_v5f64_scalar(<10 x float> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_4
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -13028,9 +13434,7 @@ define inreg <5 x double> @bitcast_v10f32_to_v5f64_scalar(<10 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_3:
-; GFX9-NEXT:    s_branch .LBB37_2
-; GFX9-NEXT:  .LBB37_4:
+; GFX9-NEXT:  .LBB37_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -13058,11 +13462,16 @@ define inreg <5 x double> @bitcast_v10f32_to_v5f64_scalar(<10 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_4
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v9, s21, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v8, s20, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v7, s19, 1.0
@@ -13074,8 +13483,6 @@ define inreg <5 x double> @bitcast_v10f32_to_v5f64_scalar(<10 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_3:
-; GFX11-NEXT:    s_branch .LBB37_2
 ; GFX11-NEXT:  .LBB37_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -13198,19 +13605,25 @@ define inreg <10 x float> @bitcast_v5f64_to_v10f32_scalar(<5 x double> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_3
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB39_4
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB39_3:
-; SI-NEXT:    s_branch .LBB39_2
-; SI-NEXT:  .LBB39_4:
+; SI-NEXT:  .LBB39_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13227,19 +13640,25 @@ define inreg <10 x float> @bitcast_v5f64_to_v10f32_scalar(<5 x double> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_3
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_4
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB39_3:
-; VI-NEXT:    s_branch .LBB39_2
-; VI-NEXT:  .LBB39_4:
+; VI-NEXT:  .LBB39_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13256,19 +13675,25 @@ define inreg <10 x float> @bitcast_v5f64_to_v10f32_scalar(<5 x double> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_4
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB39_3:
-; GFX9-NEXT:    s_branch .LBB39_2
-; GFX9-NEXT:  .LBB39_4:
+; GFX9-NEXT:  .LBB39_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -13290,19 +13715,22 @@ define inreg <10 x float> @bitcast_v5f64_to_v10f32_scalar(<5 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[8:9], s[20:21], 1.0
 ; GFX11-NEXT:    v_add_f64 v[6:7], s[18:19], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[16:17], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB39_3:
-; GFX11-NEXT:    s_branch .LBB39_2
 ; GFX11-NEXT:  .LBB39_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -13436,10 +13864,18 @@ define inreg <5 x i64> @bitcast_v10f32_to_v5i64_scalar(<10 x float> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_3
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB41_4
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; SI-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; SI-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -13451,9 +13887,7 @@ define inreg <5 x i64> @bitcast_v10f32_to_v5i64_scalar(<10 x float> inreg %a, i3
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB41_3:
-; SI-NEXT:    s_branch .LBB41_2
-; SI-NEXT:  .LBB41_4:
+; SI-NEXT:  .LBB41_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13476,10 +13910,18 @@ define inreg <5 x i64> @bitcast_v10f32_to_v5i64_scalar(<10 x float> inreg %a, i3
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_3
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB41_4
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; VI-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; VI-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -13491,9 +13933,7 @@ define inreg <5 x i64> @bitcast_v10f32_to_v5i64_scalar(<10 x float> inreg %a, i3
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_3:
-; VI-NEXT:    s_branch .LBB41_2
-; VI-NEXT:  .LBB41_4:
+; VI-NEXT:  .LBB41_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13516,10 +13956,18 @@ define inreg <5 x i64> @bitcast_v10f32_to_v5i64_scalar(<10 x float> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_4
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v8, s24, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v7, s23, 1.0
@@ -13531,9 +13979,7 @@ define inreg <5 x i64> @bitcast_v10f32_to_v5i64_scalar(<10 x float> inreg %a, i3
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_3:
-; GFX9-NEXT:    s_branch .LBB41_2
-; GFX9-NEXT:  .LBB41_4:
+; GFX9-NEXT:  .LBB41_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -13561,11 +14007,16 @@ define inreg <5 x i64> @bitcast_v10f32_to_v5i64_scalar(<10 x float> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_4
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB41_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v9, s21, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v8, s20, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v7, s19, 1.0
@@ -13577,8 +14028,6 @@ define inreg <5 x i64> @bitcast_v10f32_to_v5i64_scalar(<10 x float> inreg %a, i3
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_3:
-; GFX11-NEXT:    s_branch .LBB41_2
 ; GFX11-NEXT:  .LBB41_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -13724,10 +14173,18 @@ define inreg <10 x float> @bitcast_v5i64_to_v10f32_scalar(<5 x i64> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_4
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB43_3
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s24, s24, 3
 ; SI-NEXT:    s_addc_u32 s25, s25, 0
 ; SI-NEXT:    s_add_u32 s22, s22, 3
@@ -13738,7 +14195,7 @@ define inreg <10 x float> @bitcast_v5i64_to_v10f32_scalar(<5 x i64> inreg %a, i3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB43_3: ; %end
+; SI-NEXT:  .LBB43_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13750,17 +14207,23 @@ define inreg <10 x float> @bitcast_v5i64_to_v10f32_scalar(<5 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v8, s24
 ; SI-NEXT:    v_mov_b32_e32 v9, s25
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB43_4:
-; SI-NEXT:    s_branch .LBB43_2
 ;
 ; VI-LABEL: bitcast_v5i64_to_v10f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_4
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB43_3
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s24, s24, 3
 ; VI-NEXT:    s_addc_u32 s25, s25, 0
 ; VI-NEXT:    s_add_u32 s22, s22, 3
@@ -13771,7 +14234,7 @@ define inreg <10 x float> @bitcast_v5i64_to_v10f32_scalar(<5 x i64> inreg %a, i3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB43_3: ; %end
+; VI-NEXT:  .LBB43_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13783,17 +14246,23 @@ define inreg <10 x float> @bitcast_v5i64_to_v10f32_scalar(<5 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_4:
-; VI-NEXT:    s_branch .LBB43_2
 ;
 ; GFX9-LABEL: bitcast_v5i64_to_v10f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_3
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s24, s24, 3
 ; GFX9-NEXT:    s_addc_u32 s25, s25, 0
 ; GFX9-NEXT:    s_add_u32 s22, s22, 3
@@ -13804,7 +14273,7 @@ define inreg <10 x float> @bitcast_v5i64_to_v10f32_scalar(<5 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB43_3: ; %end
+; GFX9-NEXT:  .LBB43_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -13816,19 +14285,22 @@ define inreg <10 x float> @bitcast_v5i64_to_v10f32_scalar(<5 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s24
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s25
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB43_4:
-; GFX9-NEXT:    s_branch .LBB43_2
 ;
 ; GFX11-LABEL: bitcast_v5i64_to_v10f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_3
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB43_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s20, s20, 3
 ; GFX11-NEXT:    s_addc_u32 s21, s21, 0
 ; GFX11-NEXT:    s_add_u32 s18, s18, 3
@@ -13839,7 +14311,7 @@ define inreg <10 x float> @bitcast_v5i64_to_v10f32_scalar(<5 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB43_3: ; %end
+; GFX11-NEXT:  .LBB43_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -13847,8 +14319,6 @@ define inreg <10 x float> @bitcast_v5i64_to_v10f32_scalar(<5 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_4:
-; GFX11-NEXT:    s_branch .LBB43_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -14166,7 +14636,7 @@ define inreg <20 x half> @bitcast_v20i16_to_v20f16_scalar(<20 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s46, s17, 16
 ; SI-NEXT:    s_lshr_b32 s59, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_4
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s46, 16
@@ -14207,9 +14677,27 @@ define inreg <20 x half> @bitcast_v20i16_to_v20f16_scalar(<20 x i16> inreg %a, i
 ; SI-NEXT:    s_mov_b32 s9, s43
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[72:73], 16
 ; SI-NEXT:    s_mov_b32 s7, s45
+; SI-NEXT:    s_mov_b64 s[44:45], 0
 ; SI-NEXT:    s_mov_b32 s5, s73
-; SI-NEXT:    s_cbranch_execnz .LBB45_3
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[44:45], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[44:45], s[44:45], exec
+; SI-NEXT:    s_cselect_b32 s15, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s15, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
@@ -14270,7 +14758,7 @@ define inreg <20 x half> @bitcast_v20i16_to_v20f16_scalar(<20 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s56, s9, 16
 ; SI-NEXT:    s_lshr_b32 s57, s7, 16
 ; SI-NEXT:    s_lshr_b32 s58, s5, 16
-; SI-NEXT:  .LBB45_3: ; %end
+; SI-NEXT:  .LBB45_5: ; %end
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s14
@@ -14312,27 +14800,23 @@ define inreg <20 x half> @bitcast_v20i16_to_v20f16_scalar(<20 x i16> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v8, s4
 ; SI-NEXT:    v_mov_b32_e32 v9, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB45_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    s_branch .LBB45_2
 ;
 ; VI-LABEL: bitcast_v20i16_to_v20f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_4
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB45_3
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s6, s17, 0xffff0000
 ; VI-NEXT:    s_add_i32 s7, s17, 3
@@ -14383,7 +14867,7 @@ define inreg <20 x half> @bitcast_v20i16_to_v20f16_scalar(<20 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB45_3: ; %end
+; VI-NEXT:  .LBB45_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -14395,17 +14879,23 @@ define inreg <20 x half> @bitcast_v20i16_to_v20f16_scalar(<20 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_4:
-; VI-NEXT:    s_branch .LBB45_2
 ;
 ; GFX9-LABEL: bitcast_v20i16_to_v20f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_4
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v9, s25, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v8, s24, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v7, s23, 3 op_sel_hi:[1,0]
@@ -14417,9 +14907,7 @@ define inreg <20 x half> @bitcast_v20i16_to_v20f16_scalar(<20 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_3:
-; GFX9-NEXT:    s_branch .LBB45_2
-; GFX9-NEXT:  .LBB45_4:
+; GFX9-NEXT:  .LBB45_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -14447,11 +14935,16 @@ define inreg <20 x half> @bitcast_v20i16_to_v20f16_scalar(<20 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_4
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB45_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v9, s21, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v8, s20, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v7, s19, 3 op_sel_hi:[1,0]
@@ -14463,8 +14956,6 @@ define inreg <20 x half> @bitcast_v20i16_to_v20f16_scalar(<20 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_3:
-; GFX11-NEXT:    s_branch .LBB45_2
 ; GFX11-NEXT:  .LBB45_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -14754,10 +15245,18 @@ define inreg <20 x i16> @bitcast_v20f16_to_v20i16_scalar(<20 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s6, s17, 16
 ; SI-NEXT:    s_lshr_b32 s15, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB47_3
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB47_4
-; SI-NEXT:  .LBB47_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s15
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s18
@@ -14843,10 +15342,8 @@ define inreg <20 x i16> @bitcast_v20f16_to_v20i16_scalar(<20 x half> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[14:15], v[4:5], 16
 ; SI-NEXT:    v_lshr_b64 v[12:13], v[6:7], 16
 ; SI-NEXT:    v_lshr_b64 v[10:11], v[8:9], 16
-; SI-NEXT:    s_branch .LBB47_5
-; SI-NEXT:  .LBB47_3:
-; SI-NEXT:    s_branch .LBB47_2
-; SI-NEXT:  .LBB47_4:
+; SI-NEXT:    s_branch .LBB47_6
+; SI-NEXT:  .LBB47_5:
 ; SI-NEXT:    v_mov_b32_e32 v21, s11
 ; SI-NEXT:    v_mov_b32_e32 v22, s9
 ; SI-NEXT:    v_mov_b32_e32 v23, s8
@@ -14867,7 +15364,7 @@ define inreg <20 x i16> @bitcast_v20f16_to_v20i16_scalar(<20 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v14, s13
 ; SI-NEXT:    v_mov_b32_e32 v12, s12
 ; SI-NEXT:    v_mov_b32_e32 v10, s10
-; SI-NEXT:  .LBB47_5: ; %end
+; SI-NEXT:  .LBB47_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v18
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v20
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
@@ -14904,10 +15401,18 @@ define inreg <20 x i16> @bitcast_v20f16_to_v20i16_scalar(<20 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s5, s24, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v2, s5
@@ -14960,9 +15465,7 @@ define inreg <20 x i16> @bitcast_v20f16_to_v20i16_scalar(<20 x half> inreg %a, i
 ; VI-NEXT:    v_or_b32_e32 v1, v0, v1
 ; VI-NEXT:    v_or_b32_e32 v0, v10, v11
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -14985,10 +15488,18 @@ define inreg <20 x i16> @bitcast_v20f16_to_v20i16_scalar(<20 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v9, s25, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v8, s24, v0 op_sel_hi:[1,0]
@@ -15001,9 +15512,7 @@ define inreg <20 x i16> @bitcast_v20f16_to_v20i16_scalar(<20 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -15031,11 +15540,16 @@ define inreg <20 x i16> @bitcast_v20f16_to_v20i16_scalar(<20 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB47_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v9, 0x200, s21 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v8, 0x200, s20 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v7, 0x200, s19 op_sel_hi:[0,1]
@@ -15047,8 +15561,6 @@ define inreg <20 x i16> @bitcast_v20f16_to_v20i16_scalar(<20 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB47_3:
-; GFX11-NEXT:    s_branch .LBB47_2
 ; GFX11-NEXT:  .LBB47_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -16119,22 +16631,20 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; SI-NEXT:    buffer_store_dword v3, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v3, s34, 0
-; SI-NEXT:    v_writelane_b32 v3, s35, 1
-; SI-NEXT:    v_writelane_b32 v3, s30, 2
-; SI-NEXT:    v_writelane_b32 v3, s31, 3
+; SI-NEXT:    v_writelane_b32 v3, s30, 0
+; SI-NEXT:    v_writelane_b32 v3, s31, 1
 ; SI-NEXT:    s_lshr_b32 s90, s25, 16
-; SI-NEXT:    s_lshr_b32 s35, s24, 16
+; SI-NEXT:    s_lshr_b32 s31, s24, 16
 ; SI-NEXT:    s_lshr_b32 s91, s23, 16
-; SI-NEXT:    s_lshr_b32 s34, s22, 16
+; SI-NEXT:    s_lshr_b32 s30, s22, 16
 ; SI-NEXT:    s_lshr_b32 s92, s21, 16
-; SI-NEXT:    s_lshr_b32 s31, s20, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s20, 16
 ; SI-NEXT:    s_lshr_b32 s93, s19, 16
-; SI-NEXT:    s_lshr_b32 s30, s18, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s18, 16
 ; SI-NEXT:    s_lshr_b32 s94, s17, 16
 ; SI-NEXT:    s_lshr_b32 s95, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_4
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -16143,26 +16653,26 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s5, s94, 16
 ; SI-NEXT:    s_or_b32 s13, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s10, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
 ; SI-NEXT:    s_or_b32 s11, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s8, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s92, 16
 ; SI-NEXT:    s_or_b32 s9, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s6, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s91, 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[12:13], 24
 ; SI-NEXT:    s_or_b32 s7, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s5
 ; SI-NEXT:    s_and_b32 s5, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s15, s90, 16
@@ -16191,11 +16701,49 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[4:5], 24
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[4:5], 8
-; SI-NEXT:    s_cbranch_execnz .LBB49_3
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[88:89], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[88:89], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[88:89], s[88:89], exec
+; SI-NEXT:    s_cselect_b32 s63, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s63, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_and_b32 s5, s25, 0xffff
@@ -16203,7 +16751,7 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_and_b32 s6, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s34, 16
+; SI-NEXT:    s_lshl_b32 s7, s30, 16
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_and_b32 s7, s23, 0xffff
@@ -16211,7 +16759,7 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_or_b32 s7, s8, s7
 ; SI-NEXT:    s_and_b32 s8, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s9, s31, 16
+; SI-NEXT:    s_lshl_b32 s9, vcc_hi, 16
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_and_b32 s9, s21, 0xffff
@@ -16219,7 +16767,7 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s9, s10, s9
 ; SI-NEXT:    s_and_b32 s10, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s11, s30, 16
+; SI-NEXT:    s_lshl_b32 s11, vcc_lo, 16
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_or_b32 s10, s11, s10
 ; SI-NEXT:    s_and_b32 s11, s19, 0xffff
@@ -16273,7 +16821,7 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s15, s5, 24
 ; SI-NEXT:    s_lshr_b32 s90, s5, 16
 ; SI-NEXT:    s_lshr_b32 s27, s5, 8
-; SI-NEXT:  .LBB49_3: ; %end
+; SI-NEXT:  .LBB49_5: ; %end
 ; SI-NEXT:    s_and_b32 s12, s12, 0xff
 ; SI-NEXT:    s_lshl_b32 s16, s44, 8
 ; SI-NEXT:    s_or_b32 s12, s12, s16
@@ -16400,54 +16948,20 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; SI-NEXT:    buffer_store_dword v2, v1, s[0:3], 0 offen
 ; SI-NEXT:    v_add_i32_e32 v0, vcc, 36, v0
 ; SI-NEXT:    v_mov_b32_e32 v1, s4
-; SI-NEXT:    v_readlane_b32 s30, v3, 2
+; SI-NEXT:    v_readlane_b32 s30, v3, 0
 ; SI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
-; SI-NEXT:    v_readlane_b32 s31, v3, 3
-; SI-NEXT:    v_readlane_b32 s35, v3, 1
-; SI-NEXT:    v_readlane_b32 s34, v3, 0
+; SI-NEXT:    v_readlane_b32 s31, v3, 1
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB49_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    s_branch .LBB49_2
 ;
 ; VI-LABEL: bitcast_v20i16_to_v40i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_4
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s26, s25, 24
 ; VI-NEXT:    s_lshr_b32 s27, s25, 16
@@ -16479,8 +16993,46 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB49_3
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[14:15], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[14:15], -1
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr29
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr28
+; VI-NEXT:    ; implicit-def: $sgpr27
+; VI-NEXT:    ; implicit-def: $sgpr26
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s17, 3
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -16561,7 +17113,7 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s74, s17, 8
 ; VI-NEXT:    s_lshr_b32 s75, s16, 16
 ; VI-NEXT:    s_lshr_b32 s76, s16, 8
-; VI-NEXT:  .LBB49_3: ; %end
+; VI-NEXT:  .LBB49_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v3, s12
 ; VI-NEXT:    v_mov_b32_e32 v1, s76
@@ -16644,44 +17196,12 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; VI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB49_4:
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr29
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr28
-; VI-NEXT:    ; implicit-def: $sgpr27
-; VI-NEXT:    ; implicit-def: $sgpr26
-; VI-NEXT:    s_branch .LBB49_2
 ;
 ; GFX9-LABEL: bitcast_v20i16_to_v40i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s26, s25, 24
 ; GFX9-NEXT:    s_lshr_b32 s27, s25, 16
@@ -16713,8 +17233,46 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[14:15], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[14:15], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr28
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr29
+; GFX9-NEXT:    ; implicit-def: $sgpr27
+; GFX9-NEXT:    ; implicit-def: $sgpr26
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v2, s25, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s24, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v4, s23, 3 op_sel_hi:[1,0]
@@ -16755,40 +17313,8 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v38, 8, v10
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v48, 16, v9
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v39, 8, v9
-; GFX9-NEXT:    s_branch .LBB49_5
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr28
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr29
-; GFX9-NEXT:    ; implicit-def: $sgpr27
-; GFX9-NEXT:    ; implicit-def: $sgpr26
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:    s_branch .LBB49_6
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s18
@@ -16829,7 +17355,7 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s6
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s4
-; GFX9-NEXT:  .LBB49_5: ; %end
+; GFX9-NEXT:  .LBB49_6: ; %end
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; GFX9-NEXT:    v_perm_b32 v15, v48, v15, s4
 ; GFX9-NEXT:    v_perm_b32 v9, v9, v39, s4
@@ -16889,7 +17415,7 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s14, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s15, s21, 24
 ; GFX11-NEXT:    s_lshr_b32 s22, s21, 16
@@ -16921,9 +17447,46 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB49_3
+; GFX11-NEXT:  .LBB49_2:
+; GFX11-NEXT:    s_mov_b32 s14, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr29
+; GFX11-NEXT:    ; implicit-def: $sgpr27
+; GFX11-NEXT:    ; implicit-def: $sgpr26
+; GFX11-NEXT:    ; implicit-def: $sgpr25
+; GFX11-NEXT:    ; implicit-def: $sgpr23
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr24
+; GFX11-NEXT:    ; implicit-def: $sgpr22
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:  .LBB49_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s14, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v2, s21, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s20, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v4, s19, 3 op_sel_hi:[1,0]
@@ -16964,40 +17527,8 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v38, 8, v10
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v48, 16, v9
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v39, 8, v9
-; GFX11-NEXT:    s_branch .LBB49_5
-; GFX11-NEXT:  .LBB49_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr29
-; GFX11-NEXT:    ; implicit-def: $sgpr27
-; GFX11-NEXT:    ; implicit-def: $sgpr26
-; GFX11-NEXT:    ; implicit-def: $sgpr25
-; GFX11-NEXT:    ; implicit-def: $sgpr23
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr24
-; GFX11-NEXT:    ; implicit-def: $sgpr22
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    s_branch .LBB49_2
-; GFX11-NEXT:  .LBB49_4:
+; GFX11-NEXT:    s_branch .LBB49_6
+; GFX11-NEXT:  .LBB49_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v9, s0 :: v_dual_mov_b32 v10, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v7, s2 :: v_dual_mov_b32 v8, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v5, s16 :: v_dual_mov_b32 v6, s17
@@ -17018,7 +17549,7 @@ define inreg <40 x i8> @bitcast_v20i16_to_v40i8_scalar(<20 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s22 :: v_dual_mov_b32 v11, s12
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s10 :: v_dual_mov_b32 v13, s8
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s6 :: v_dual_mov_b32 v15, s4
-; GFX11-NEXT:  .LBB49_5: ; %end
+; GFX11-NEXT:  .LBB49_6: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-NEXT:    v_perm_b32 v15, v48, v15, 0xc0c0004
 ; GFX11-NEXT:    v_perm_b32 v9, v9, v39, 0xc0c0004
@@ -18439,10 +18970,10 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s91, v24
 ; SI-NEXT:    v_readfirstlane_b32 s93, v23
 ; SI-NEXT:    v_readfirstlane_b32 s95, v22
-; SI-NEXT:    v_readfirstlane_b32 s30, v21
-; SI-NEXT:    v_readfirstlane_b32 s31, v20
-; SI-NEXT:    v_readfirstlane_b32 s34, v19
-; SI-NEXT:    v_readfirstlane_b32 s35, v18
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v21
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v20
+; SI-NEXT:    v_readfirstlane_b32 s30, v19
+; SI-NEXT:    v_readfirstlane_b32 s31, v18
 ; SI-NEXT:    v_readfirstlane_b32 s74, v17
 ; SI-NEXT:    v_readfirstlane_b32 s75, v16
 ; SI-NEXT:    v_readfirstlane_b32 s77, v15
@@ -18462,7 +18993,7 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s58, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s59, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -18492,8 +19023,8 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_lshl_b32 s7, s88, 24
 ; SI-NEXT:    s_or_b32 s44, s7, s5
-; SI-NEXT:    s_and_b32 s5, s35, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s34, 8
+; SI-NEXT:    s_and_b32 s5, s31, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s30, 8
 ; SI-NEXT:    s_or_b32 s12, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s20, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s21, 8
@@ -18516,8 +19047,8 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_lshl_b32 s15, s60, 24
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_or_b32 vcc_lo, s15, s14
-; SI-NEXT:    s_or_b32 s43, s13, vcc_lo
+; SI-NEXT:    s_or_b32 s34, s15, s14
+; SI-NEXT:    s_or_b32 s43, s13, s34
 ; SI-NEXT:    s_and_b32 s13, s79, 0xff
 ; SI-NEXT:    s_lshl_b32 s14, s77, 8
 ; SI-NEXT:    s_or_b32 s13, s13, s14
@@ -18525,8 +19056,8 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_lshl_b32 s15, s74, 24
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_or_b32 vcc_hi, s15, s14
-; SI-NEXT:    s_or_b32 s45, s13, vcc_hi
+; SI-NEXT:    s_or_b32 s35, s15, s14
+; SI-NEXT:    s_or_b32 s45, s13, s35
 ; SI-NEXT:    s_and_b32 s13, s95, 0xff
 ; SI-NEXT:    s_lshl_b32 s14, s93, 8
 ; SI-NEXT:    s_or_b32 s13, s13, s14
@@ -18534,11 +19065,11 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_lshl_b32 s15, s90, 24
 ; SI-NEXT:    s_or_b32 s36, s15, s14
-; SI-NEXT:    s_and_b32 s14, s31, 0xff
+; SI-NEXT:    s_and_b32 s14, vcc_hi, 0xff
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
-; SI-NEXT:    s_lshl_b32 s15, s30, 24
+; SI-NEXT:    s_lshl_b32 s15, vcc_lo, 24
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s5, s56
 ; SI-NEXT:    s_or_b32 s7, s7, s57
@@ -18566,19 +19097,42 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[46:47], 16
 ; SI-NEXT:    s_lshr_b32 s41, s56, 16
 ; SI-NEXT:    s_lshr_b32 s43, s57, 16
-; SI-NEXT:    s_lshr_b32 s45, vcc_lo, 16
-; SI-NEXT:    s_lshr_b32 s47, vcc_hi, 16
+; SI-NEXT:    s_lshr_b32 s45, s34, 16
+; SI-NEXT:    s_lshr_b32 s47, s35, 16
 ; SI-NEXT:    s_lshr_b32 s15, s36, 16
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
-; SI-NEXT:    s_add_i32 s35, s35, 3
-; SI-NEXT:    s_and_b32 s4, s35, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s34, 8
+; SI-NEXT:    s_mov_b64 s[56:57], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[56:57], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[56:57], s[56:57], exec
+; SI-NEXT:    s_cselect_b32 s56, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s56, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s31, s31, 3
+; SI-NEXT:    s_and_b32 s4, s31, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s30, 8
+; SI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s6, s31, 0xff
+; SI-NEXT:    s_and_b32 s6, vcc_hi, 0xff
 ; SI-NEXT:    s_addk_i32 s4, 0x300
-; SI-NEXT:    s_lshl_b32 s5, s30, 24
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 24
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s5, s6
@@ -18711,7 +19265,7 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s45, s9, 16
 ; SI-NEXT:    s_lshr_b32 s47, s7, 16
 ; SI-NEXT:    s_lshr_b32 s15, s5, 16
-; SI-NEXT:  .LBB51_3: ; %end
+; SI-NEXT:  .LBB51_5: ; %end
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s14
@@ -18765,23 +19319,6 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v40i8_to_v20i16_scalar:
 ; VI:       ; %bb.0:
@@ -18814,7 +19351,7 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s10, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -18877,8 +19414,17 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; VI-NEXT:    v_perm_b32 v9, s63, v11, v9
 ; VI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s63, s63, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s62
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -18980,11 +19526,8 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, 0x3000000, v7
 ; VI-NEXT:    v_add_u32_e32 v8, vcc, 0x3000000, v8
 ; VI-NEXT:    v_add_u32_e32 v9, vcc, 0x3000000, v9
-; VI-NEXT:  .LBB51_3: ; %end
+; VI-NEXT:  .LBB51_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v40i8_to_v20i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -19017,7 +19560,7 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s41, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s42, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v8, 0xc0c0004
@@ -19083,8 +19626,17 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_and_b32_e32 v8, 0xffff, v8
 ; GFX9-NEXT:    v_lshl_or_b32 v9, s5, 16, v8
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s4
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_3
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s63, s63, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s62
 ; GFX9-NEXT:    v_mov_b32_e32 v6, 0xc0c0004
@@ -19186,11 +19738,8 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_lshl_or_b32 v6, v6, 16, v11
 ; GFX9-NEXT:    v_lshl_or_b32 v7, v10, 16, v7
 ; GFX9-NEXT:    v_lshl_or_b32 v9, v15, 16, v9
-; GFX9-NEXT:  .LBB51_3: ; %end
+; GFX9-NEXT:  .LBB51_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB51_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX9-NEXT:    s_branch .LBB51_2
 ;
 ; GFX11-TRUE16-LABEL: bitcast_v40i8_to_v20i16_scalar:
 ; GFX11-TRUE16:       ; %bb.0:
@@ -19220,7 +19769,7 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s45, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s58, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s58, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB51_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v8, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_and_b32 s59, s43, 0xff
@@ -19261,9 +19810,17 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_perm_b32 v9, s15, s5, v8
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v9.h, v10.l
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v8, s59
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB51_3
-; GFX11-TRUE16-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB51_3
+; GFX11-TRUE16-NEXT:  .LBB51_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s58, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-TRUE16-NEXT:  .LBB51_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_add_i32 s15, s15, 3
 ; GFX11-TRUE16-NEXT:    s_add_i32 s46, s46, 3
@@ -19335,11 +19892,8 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v13.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v8.h, v11.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v9.h, v10.l
-; GFX11-TRUE16-NEXT:  .LBB51_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB51_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB51_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-TRUE16-NEXT:    s_branch .LBB51_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v40i8_to_v20i16_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -19369,7 +19923,7 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s6, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s58, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s58, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB51_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_and_b32 s59, s56, 0xff
@@ -19418,9 +19972,17 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, s59
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v3, v7, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v7, v13, 16, v11
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB51_3
-; GFX11-FAKE16-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB51_3
+; GFX11-FAKE16-NEXT:  .LBB51_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s58, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-FAKE16-NEXT:  .LBB51_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_add_i32 s57, s57, 3
 ; GFX11-FAKE16-NEXT:    s_add_i32 s46, s46, 3
@@ -19502,11 +20064,8 @@ define inreg <20 x i16> @bitcast_v40i8_to_v20i16_scalar(<40 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v7, v11, 16, v7
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v8, v8, 16, v15
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v9, v9, 16, v16
-; GFX11-FAKE16-NEXT:  .LBB51_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB51_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB51_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-FAKE16-NEXT:    s_branch .LBB51_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -19791,7 +20350,7 @@ define inreg <5 x double> @bitcast_v20i16_to_v5f64_scalar(<20 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s14, s17, 16
 ; SI-NEXT:    s_lshr_b32 s15, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_4
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -19823,8 +20382,17 @@ define inreg <5 x double> @bitcast_v20i16_to_v5f64_scalar(<20 x i16> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB53_3
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -19875,7 +20443,7 @@ define inreg <5 x double> @bitcast_v20i16_to_v5f64_scalar(<20 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
-; SI-NEXT:  .LBB53_3: ; %end
+; SI-NEXT:  .LBB53_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -19899,18 +20467,23 @@ define inreg <5 x double> @bitcast_v20i16_to_v5f64_scalar(<20 x i16> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB53_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB53_2
 ;
 ; VI-LABEL: bitcast_v20i16_to_v5f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_4
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB53_3
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s25, 3
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -19961,7 +20534,7 @@ define inreg <5 x double> @bitcast_v20i16_to_v5f64_scalar(<20 x i16> inreg %a, i
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB53_3: ; %end
+; VI-NEXT:  .LBB53_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -19973,17 +20546,23 @@ define inreg <5 x double> @bitcast_v20i16_to_v5f64_scalar(<20 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB53_4:
-; VI-NEXT:    s_branch .LBB53_2
 ;
 ; GFX9-LABEL: bitcast_v20i16_to_v5f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_4
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v9, s25, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v8, s24, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v7, s23, 3 op_sel_hi:[1,0]
@@ -19995,9 +20574,7 @@ define inreg <5 x double> @bitcast_v20i16_to_v5f64_scalar(<20 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB53_3:
-; GFX9-NEXT:    s_branch .LBB53_2
-; GFX9-NEXT:  .LBB53_4:
+; GFX9-NEXT:  .LBB53_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -20025,11 +20602,16 @@ define inreg <5 x double> @bitcast_v20i16_to_v5f64_scalar(<20 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB53_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB53_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v9, s21, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v8, s20, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v7, s19, 3 op_sel_hi:[1,0]
@@ -20041,8 +20623,6 @@ define inreg <5 x double> @bitcast_v20i16_to_v5f64_scalar(<20 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB53_3:
-; GFX11-NEXT:    s_branch .LBB53_2
 ; GFX11-NEXT:  .LBB53_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -20228,7 +20808,7 @@ define inreg <20 x i16> @bitcast_v5f64_to_v20i16_scalar(<5 x double> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s40, s25, 16
 ; SI-NEXT:    s_lshr_b32 s29, s23, 16
@@ -20240,8 +20820,26 @@ define inreg <20 x i16> @bitcast_v5f64_to_v20i16_scalar(<5 x double> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
@@ -20257,20 +20855,8 @@ define inreg <20 x i16> @bitcast_v5f64_to_v20i16_scalar(<5 x double> inreg %a, i
 ; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v19, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v1
-; SI-NEXT:    s_branch .LBB55_5
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:    s_branch .LBB55_6
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v9, s25
 ; SI-NEXT:    v_mov_b32_e32 v7, s23
 ; SI-NEXT:    v_mov_b32_e32 v5, s21
@@ -20291,7 +20877,7 @@ define inreg <20 x i16> @bitcast_v5f64_to_v20i16_scalar(<5 x double> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v12, s8
 ; SI-NEXT:    v_mov_b32_e32 v11, s6
 ; SI-NEXT:    v_mov_b32_e32 v10, s4
-; SI-NEXT:  .LBB55_5: ; %end
+; SI-NEXT:  .LBB55_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
@@ -20328,19 +20914,25 @@ define inreg <20 x i16> @bitcast_v5f64_to_v20i16_scalar(<5 x double> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -20363,19 +20955,25 @@ define inreg <20 x i16> @bitcast_v5f64_to_v20i16_scalar(<5 x double> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -20403,19 +21001,22 @@ define inreg <20 x i16> @bitcast_v5f64_to_v20i16_scalar(<5 x double> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[8:9], s[20:21], 1.0
 ; GFX11-NEXT:    v_add_f64 v[6:7], s[18:19], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[16:17], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -20710,7 +21311,7 @@ define inreg <5 x i64> @bitcast_v20i16_to_v5i64_scalar(<20 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s14, s17, 16
 ; SI-NEXT:    s_lshr_b32 s15, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -20742,8 +21343,17 @@ define inreg <5 x i64> @bitcast_v20i16_to_v5i64_scalar(<20 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -20794,7 +21404,7 @@ define inreg <5 x i64> @bitcast_v20i16_to_v5i64_scalar(<20 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
-; SI-NEXT:  .LBB57_3: ; %end
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -20818,18 +21428,23 @@ define inreg <5 x i64> @bitcast_v20i16_to_v5i64_scalar(<20 x i16> inreg %a, i32
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v20i16_to_v5i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s25, 3
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -20880,7 +21495,7 @@ define inreg <5 x i64> @bitcast_v20i16_to_v5i64_scalar(<20 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -20892,17 +21507,23 @@ define inreg <5 x i64> @bitcast_v20i16_to_v5i64_scalar(<20 x i16> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v20i16_to_v5i64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_4
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v9, s25, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v8, s24, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v7, s23, 3 op_sel_hi:[1,0]
@@ -20914,9 +21535,7 @@ define inreg <5 x i64> @bitcast_v20i16_to_v5i64_scalar(<20 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB57_3:
-; GFX9-NEXT:    s_branch .LBB57_2
-; GFX9-NEXT:  .LBB57_4:
+; GFX9-NEXT:  .LBB57_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -20944,11 +21563,16 @@ define inreg <5 x i64> @bitcast_v20i16_to_v5i64_scalar(<20 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB57_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v9, s21, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v8, s20, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v7, s19, 3 op_sel_hi:[1,0]
@@ -20960,8 +21584,6 @@ define inreg <5 x i64> @bitcast_v20i16_to_v5i64_scalar(<20 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB57_3:
-; GFX11-NEXT:    s_branch .LBB57_2
 ; GFX11-NEXT:  .LBB57_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -21170,7 +21792,7 @@ define inreg <20 x i16> @bitcast_v5i64_to_v20i16_scalar(<5 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_4
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s26, s25, 16
 ; SI-NEXT:    s_lshr_b32 s27, s23, 16
@@ -21182,8 +21804,26 @@ define inreg <20 x i16> @bitcast_v5i64_to_v20i16_scalar(<5 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB59_3
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s24, s24, 3
 ; SI-NEXT:    s_addc_u32 s25, s25, 0
 ; SI-NEXT:    s_add_u32 s22, s22, 3
@@ -21204,7 +21844,7 @@ define inreg <20 x i16> @bitcast_v5i64_to_v20i16_scalar(<5 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
-; SI-NEXT:  .LBB59_3: ; %end
+; SI-NEXT:  .LBB59_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s12, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -21246,27 +21886,23 @@ define inreg <20 x i16> @bitcast_v5i64_to_v20i16_scalar(<5 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v8, s4
 ; SI-NEXT:    v_mov_b32_e32 v9, s13
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB59_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    s_branch .LBB59_2
 ;
 ; VI-LABEL: bitcast_v5i64_to_v20i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_4
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_3
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s24, s24, 3
 ; VI-NEXT:    s_addc_u32 s25, s25, 0
 ; VI-NEXT:    s_add_u32 s22, s22, 3
@@ -21277,7 +21913,7 @@ define inreg <20 x i16> @bitcast_v5i64_to_v20i16_scalar(<5 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB59_3: ; %end
+; VI-NEXT:  .LBB59_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -21289,17 +21925,23 @@ define inreg <20 x i16> @bitcast_v5i64_to_v20i16_scalar(<5 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB59_4:
-; VI-NEXT:    s_branch .LBB59_2
 ;
 ; GFX9-LABEL: bitcast_v5i64_to_v20i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_3
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s24, s24, 3
 ; GFX9-NEXT:    s_addc_u32 s25, s25, 0
 ; GFX9-NEXT:    s_add_u32 s22, s22, 3
@@ -21310,7 +21952,7 @@ define inreg <20 x i16> @bitcast_v5i64_to_v20i16_scalar(<5 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB59_3: ; %end
+; GFX9-NEXT:  .LBB59_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -21322,19 +21964,22 @@ define inreg <20 x i16> @bitcast_v5i64_to_v20i16_scalar(<5 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s24
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s25
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB59_4:
-; GFX9-NEXT:    s_branch .LBB59_2
 ;
 ; GFX11-LABEL: bitcast_v5i64_to_v20i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB59_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB59_3
-; GFX11-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB59_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s20, s20, 3
 ; GFX11-NEXT:    s_addc_u32 s21, s21, 0
 ; GFX11-NEXT:    s_add_u32 s18, s18, 3
@@ -21345,7 +21990,7 @@ define inreg <20 x i16> @bitcast_v5i64_to_v20i16_scalar(<5 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB59_3: ; %end
+; GFX11-NEXT:  .LBB59_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -21353,8 +21998,6 @@ define inreg <20 x i16> @bitcast_v5i64_to_v20i16_scalar(<5 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB59_4:
-; GFX11-NEXT:    s_branch .LBB59_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -22399,14 +23042,12 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; SI-NEXT:    buffer_store_dword v12, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v12, s34, 0
-; SI-NEXT:    v_writelane_b32 v12, s35, 1
-; SI-NEXT:    v_writelane_b32 v12, s30, 2
-; SI-NEXT:    v_writelane_b32 v12, s31, 3
-; SI-NEXT:    s_lshr_b32 s34, s25, 16
-; SI-NEXT:    s_lshr_b32 s35, s24, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s22, 16
+; SI-NEXT:    v_writelane_b32 v12, s30, 0
+; SI-NEXT:    v_writelane_b32 v12, s31, 1
+; SI-NEXT:    s_lshr_b32 s30, s25, 16
+; SI-NEXT:    s_lshr_b32 s31, s24, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
 ; SI-NEXT:    s_lshr_b32 s94, s21, 16
 ; SI-NEXT:    s_lshr_b32 s95, s20, 16
 ; SI-NEXT:    s_lshr_b32 s92, s19, 16
@@ -22414,7 +23055,7 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s90, s17, 16
 ; SI-NEXT:    s_lshr_b32 s91, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB61_3
+; SI-NEXT:    s_cbranch_scc0 .LBB61_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -22435,17 +23076,17 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s5, s94, 16
 ; SI-NEXT:    s_or_b32 s9, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s6, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[12:13], 24
 ; SI-NEXT:    s_or_b32 s7, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s5
 ; SI-NEXT:    s_and_b32 s5, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s15, s34, 16
+; SI-NEXT:    s_lshl_b32 s15, s30, 16
 ; SI-NEXT:    s_lshr_b64 s[26:27], s[12:13], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[12:13], 8
 ; SI-NEXT:    s_lshr_b64 s[28:29], s[10:11], 24
@@ -22464,18 +23105,56 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; SI-NEXT:    s_bfe_u32 s45, s90, 0x80008
 ; SI-NEXT:    s_bfe_u32 s47, s92, 0x80008
 ; SI-NEXT:    s_bfe_u32 s57, s94, 0x80008
-; SI-NEXT:    s_bfe_u32 s59, s30, 0x80008
-; SI-NEXT:    s_bfe_u32 s61, s34, 0x80008
+; SI-NEXT:    s_bfe_u32 s59, vcc_lo, 0x80008
+; SI-NEXT:    s_bfe_u32 s61, s30, 0x80008
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[6:7], 8
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[4:5], 24
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[4:5], 8
-; SI-NEXT:    s_cbranch_execnz .LBB61_4
-; SI-NEXT:  .LBB61_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[88:89], 0
+; SI-NEXT:    s_branch .LBB61_3
+; SI-NEXT:  .LBB61_2:
+; SI-NEXT:    s_mov_b64 s[88:89], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:  .LBB61_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[88:89], s[88:89], exec
+; SI-NEXT:    s_cselect_b32 s63, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s63, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB61_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s24
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s35
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, s30
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s16
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
@@ -22484,7 +23163,7 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v3
 ; SI-NEXT:    v_readfirstlane_b32 s5, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s25
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, vcc_hi
 ; SI-NEXT:    v_cvt_f16_f32_e32 v1, v1
 ; SI-NEXT:    v_readfirstlane_b32 s4, v4
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
@@ -22499,7 +23178,7 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    v_readfirstlane_b32 s6, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, vcc_lo
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v2
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
@@ -22598,42 +23277,10 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; SI-NEXT:    v_bfe_u32 v8, v3, 8, 8
 ; SI-NEXT:    v_bfe_u32 v6, v2, 8, 8
 ; SI-NEXT:    v_bfe_u32 v5, v1, 8, 8
-; SI-NEXT:    s_branch .LBB61_5
-; SI-NEXT:  .LBB61_3:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    s_branch .LBB61_2
-; SI-NEXT:  .LBB61_4:
-; SI-NEXT:    v_mov_b32_e32 v1, s34
-; SI-NEXT:    v_mov_b32_e32 v2, s30
+; SI-NEXT:    s_branch .LBB61_6
+; SI-NEXT:  .LBB61_5:
+; SI-NEXT:    v_mov_b32_e32 v1, s30
+; SI-NEXT:    v_mov_b32_e32 v2, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v3, s94
 ; SI-NEXT:    v_mov_b32_e32 v4, s92
 ; SI-NEXT:    v_mov_b32_e32 v7, s90
@@ -22642,7 +23289,7 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v8, s57
 ; SI-NEXT:    v_mov_b32_e32 v9, s47
 ; SI-NEXT:    v_mov_b32_e32 v10, s45
-; SI-NEXT:  .LBB61_5: ; %end
+; SI-NEXT:  .LBB61_6: ; %end
 ; SI-NEXT:    s_and_b32 s12, s12, 0xff
 ; SI-NEXT:    s_lshl_b32 s16, s40, 8
 ; SI-NEXT:    s_or_b32 s12, s12, s16
@@ -22760,11 +23407,9 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; SI-NEXT:    v_or_b32_e32 v1, v2, v1
 ; SI-NEXT:    v_or_b32_e32 v1, s4, v1
 ; SI-NEXT:    v_add_i32_e32 v0, vcc, 36, v0
-; SI-NEXT:    v_readlane_b32 s30, v12, 2
+; SI-NEXT:    v_readlane_b32 s30, v12, 0
 ; SI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
-; SI-NEXT:    v_readlane_b32 s31, v12, 3
-; SI-NEXT:    v_readlane_b32 s35, v12, 1
-; SI-NEXT:    v_readlane_b32 s34, v12, 0
+; SI-NEXT:    v_readlane_b32 s31, v12, 1
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -22775,7 +23420,7 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB61_3
+; VI-NEXT:    s_cbranch_scc0 .LBB61_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s46, s25, 24
 ; VI-NEXT:    s_lshr_b32 s59, s25, 16
@@ -22807,8 +23452,46 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB61_4
-; VI-NEXT:  .LBB61_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[14:15], 0
+; VI-NEXT:    s_branch .LBB61_3
+; VI-NEXT:  .LBB61_2:
+; VI-NEXT:    s_mov_b64 s[14:15], -1
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr26
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr27
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr28
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr29
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:  .LBB61_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB61_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x200
 ; VI-NEXT:    v_add_f16_e32 v7, s4, v1
@@ -22880,40 +23563,8 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; VI-NEXT:    v_bfe_u32 v32, v9, 8, 8
 ; VI-NEXT:    v_bfe_u32 v35, v8, 8, 8
 ; VI-NEXT:    v_bfe_u32 v38, v7, 8, 8
-; VI-NEXT:    s_branch .LBB61_5
-; VI-NEXT:  .LBB61_3:
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr26
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr27
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr28
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr29
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    s_branch .LBB61_2
-; VI-NEXT:  .LBB61_4:
+; VI-NEXT:    s_branch .LBB61_6
+; VI-NEXT:  .LBB61_5:
 ; VI-NEXT:    v_mov_b32_e32 v12, s76
 ; VI-NEXT:    v_mov_b32_e32 v7, s75
 ; VI-NEXT:    v_mov_b32_e32 v13, s74
@@ -22954,7 +23605,7 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v3, s8
 ; VI-NEXT:    v_mov_b32_e32 v4, s6
 ; VI-NEXT:    v_mov_b32_e32 v5, s4
-; VI-NEXT:  .LBB61_5: ; %end
+; VI-NEXT:  .LBB61_6: ; %end
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; VI-NEXT:    v_perm_b32 v5, v12, v5, s4
 ; VI-NEXT:    v_perm_b32 v12, v21, v48, s4
@@ -23022,7 +23673,7 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB61_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB61_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s26, s25, 24
 ; GFX9-NEXT:    s_lshr_b32 s27, s25, 16
@@ -23054,8 +23705,46 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB61_4
-; GFX9-NEXT:  .LBB61_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[14:15], 0
+; GFX9-NEXT:    s_branch .LBB61_3
+; GFX9-NEXT:  .LBB61_2:
+; GFX9-NEXT:    s_mov_b64 s[14:15], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr28
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr29
+; GFX9-NEXT:    ; implicit-def: $sgpr27
+; GFX9-NEXT:    ; implicit-def: $sgpr26
+; GFX9-NEXT:  .LBB61_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB61_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v10, s17, v1 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v9, s16, v1 op_sel_hi:[1,0]
@@ -23097,40 +23786,8 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v38, 8, v10
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v48, 16, v9
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v39, 8, v9
-; GFX9-NEXT:    s_branch .LBB61_5
-; GFX9-NEXT:  .LBB61_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr28
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr29
-; GFX9-NEXT:    ; implicit-def: $sgpr27
-; GFX9-NEXT:    ; implicit-def: $sgpr26
-; GFX9-NEXT:    s_branch .LBB61_2
-; GFX9-NEXT:  .LBB61_4:
+; GFX9-NEXT:    s_branch .LBB61_6
+; GFX9-NEXT:  .LBB61_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s18
@@ -23171,7 +23828,7 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s6
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s4
-; GFX9-NEXT:  .LBB61_5: ; %end
+; GFX9-NEXT:  .LBB61_6: ; %end
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; GFX9-NEXT:    v_perm_b32 v15, v48, v15, s4
 ; GFX9-NEXT:    v_perm_b32 v9, v9, v39, s4
@@ -23231,7 +23888,7 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s14, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB61_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB61_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s15, s21, 24
 ; GFX11-NEXT:    s_lshr_b32 s22, s21, 16
@@ -23263,9 +23920,46 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-NEXT:    s_cbranch_vccnz .LBB61_4
-; GFX11-NEXT:  .LBB61_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB61_3
+; GFX11-NEXT:  .LBB61_2:
+; GFX11-NEXT:    s_mov_b32 s14, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr29
+; GFX11-NEXT:    ; implicit-def: $sgpr27
+; GFX11-NEXT:    ; implicit-def: $sgpr26
+; GFX11-NEXT:    ; implicit-def: $sgpr25
+; GFX11-NEXT:    ; implicit-def: $sgpr23
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr24
+; GFX11-NEXT:    ; implicit-def: $sgpr22
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:  .LBB61_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s14, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB61_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s21 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s20 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v4, 0x200, s19 op_sel_hi:[0,1]
@@ -23306,40 +24000,8 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v38, 8, v10
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v48, 16, v9
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v39, 8, v9
-; GFX11-NEXT:    s_branch .LBB61_5
-; GFX11-NEXT:  .LBB61_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr29
-; GFX11-NEXT:    ; implicit-def: $sgpr27
-; GFX11-NEXT:    ; implicit-def: $sgpr26
-; GFX11-NEXT:    ; implicit-def: $sgpr25
-; GFX11-NEXT:    ; implicit-def: $sgpr23
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr24
-; GFX11-NEXT:    ; implicit-def: $sgpr22
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    s_branch .LBB61_2
-; GFX11-NEXT:  .LBB61_4:
+; GFX11-NEXT:    s_branch .LBB61_6
+; GFX11-NEXT:  .LBB61_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v9, s0 :: v_dual_mov_b32 v10, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v7, s2 :: v_dual_mov_b32 v8, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v5, s16 :: v_dual_mov_b32 v6, s17
@@ -23360,7 +24022,7 @@ define inreg <40 x i8> @bitcast_v20f16_to_v40i8_scalar(<20 x half> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s22 :: v_dual_mov_b32 v11, s12
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s10 :: v_dual_mov_b32 v13, s8
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s6 :: v_dual_mov_b32 v15, s4
-; GFX11-NEXT:  .LBB61_5: ; %end
+; GFX11-NEXT:  .LBB61_6: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-NEXT:    v_perm_b32 v15, v48, v15, 0xc0c0004
 ; GFX11-NEXT:    v_perm_b32 v9, v9, v39, 0xc0c0004
@@ -24781,10 +25443,10 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s91, v24
 ; SI-NEXT:    v_readfirstlane_b32 s93, v23
 ; SI-NEXT:    v_readfirstlane_b32 s95, v22
-; SI-NEXT:    v_readfirstlane_b32 s30, v21
-; SI-NEXT:    v_readfirstlane_b32 s31, v20
-; SI-NEXT:    v_readfirstlane_b32 s34, v19
-; SI-NEXT:    v_readfirstlane_b32 s35, v18
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v21
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v20
+; SI-NEXT:    v_readfirstlane_b32 s30, v19
+; SI-NEXT:    v_readfirstlane_b32 s31, v18
 ; SI-NEXT:    v_readfirstlane_b32 s74, v17
 ; SI-NEXT:    v_readfirstlane_b32 s75, v16
 ; SI-NEXT:    v_readfirstlane_b32 s77, v15
@@ -24804,7 +25466,7 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s58, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s59, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB63_4
+; SI-NEXT:    s_cbranch_scc0 .LBB63_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -24834,8 +25496,8 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_lshl_b32 s7, s88, 24
 ; SI-NEXT:    s_or_b32 s44, s7, s5
-; SI-NEXT:    s_and_b32 s5, s35, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s34, 8
+; SI-NEXT:    s_and_b32 s5, s31, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s30, 8
 ; SI-NEXT:    s_or_b32 s12, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s20, 0xff
 ; SI-NEXT:    s_lshl_b32 s7, s21, 8
@@ -24858,8 +25520,8 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_lshl_b32 s15, s60, 24
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_or_b32 vcc_lo, s15, s14
-; SI-NEXT:    s_or_b32 s43, s13, vcc_lo
+; SI-NEXT:    s_or_b32 s34, s15, s14
+; SI-NEXT:    s_or_b32 s43, s13, s34
 ; SI-NEXT:    s_and_b32 s13, s79, 0xff
 ; SI-NEXT:    s_lshl_b32 s14, s77, 8
 ; SI-NEXT:    s_or_b32 s13, s13, s14
@@ -24867,8 +25529,8 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_lshl_b32 s15, s74, 24
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_or_b32 vcc_hi, s15, s14
-; SI-NEXT:    s_or_b32 s45, s13, vcc_hi
+; SI-NEXT:    s_or_b32 s35, s15, s14
+; SI-NEXT:    s_or_b32 s45, s13, s35
 ; SI-NEXT:    s_and_b32 s13, s95, 0xff
 ; SI-NEXT:    s_lshl_b32 s14, s93, 8
 ; SI-NEXT:    s_or_b32 s13, s13, s14
@@ -24876,11 +25538,11 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_lshl_b32 s15, s90, 24
 ; SI-NEXT:    s_or_b32 s36, s15, s14
-; SI-NEXT:    s_and_b32 s14, s31, 0xff
+; SI-NEXT:    s_and_b32 s14, vcc_hi, 0xff
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
-; SI-NEXT:    s_lshl_b32 s15, s30, 24
+; SI-NEXT:    s_lshl_b32 s15, vcc_lo, 24
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s5, s56
 ; SI-NEXT:    s_or_b32 s7, s7, s57
@@ -24908,19 +25570,42 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[46:47], 16
 ; SI-NEXT:    s_lshr_b32 s41, s56, 16
 ; SI-NEXT:    s_lshr_b32 s43, s57, 16
-; SI-NEXT:    s_lshr_b32 s45, vcc_lo, 16
-; SI-NEXT:    s_lshr_b32 s47, vcc_hi, 16
+; SI-NEXT:    s_lshr_b32 s45, s34, 16
+; SI-NEXT:    s_lshr_b32 s47, s35, 16
 ; SI-NEXT:    s_lshr_b32 s15, s36, 16
-; SI-NEXT:    s_cbranch_execnz .LBB63_3
-; SI-NEXT:  .LBB63_2: ; %cmp.true
-; SI-NEXT:    s_add_i32 s35, s35, 3
-; SI-NEXT:    s_and_b32 s4, s35, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s34, 8
+; SI-NEXT:    s_mov_b64 s[56:57], 0
+; SI-NEXT:    s_branch .LBB63_3
+; SI-NEXT:  .LBB63_2:
+; SI-NEXT:    s_mov_b64 s[56:57], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:  .LBB63_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[56:57], s[56:57], exec
+; SI-NEXT:    s_cselect_b32 s56, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s56, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB63_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s31, s31, 3
+; SI-NEXT:    s_and_b32 s4, s31, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s30, 8
+; SI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s6, s31, 0xff
+; SI-NEXT:    s_and_b32 s6, vcc_hi, 0xff
 ; SI-NEXT:    s_addk_i32 s4, 0x300
-; SI-NEXT:    s_lshl_b32 s5, s30, 24
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 24
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s5, s6
@@ -25053,7 +25738,7 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s45, s9, 16
 ; SI-NEXT:    s_lshr_b32 s47, s7, 16
 ; SI-NEXT:    s_lshr_b32 s15, s5, 16
-; SI-NEXT:  .LBB63_3: ; %end
+; SI-NEXT:  .LBB63_5: ; %end
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s14
@@ -25107,23 +25792,6 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB63_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    s_branch .LBB63_2
 ;
 ; VI-LABEL: bitcast_v40i8_to_v20f16_scalar:
 ; VI:       ; %bb.0:
@@ -25156,7 +25824,7 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s10, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB63_4
+; VI-NEXT:    s_cbranch_scc0 .LBB63_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -25219,8 +25887,17 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; VI-NEXT:    v_perm_b32 v9, s63, v11, v9
 ; VI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
-; VI-NEXT:    s_cbranch_execnz .LBB63_3
-; VI-NEXT:  .LBB63_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB63_3
+; VI-NEXT:  .LBB63_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; VI-NEXT:  .LBB63_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB63_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s63, s63, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s62
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -25322,11 +25999,8 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, 0x3000000, v7
 ; VI-NEXT:    v_add_u32_e32 v8, vcc, 0x3000000, v8
 ; VI-NEXT:    v_add_u32_e32 v9, vcc, 0x3000000, v9
-; VI-NEXT:  .LBB63_3: ; %end
+; VI-NEXT:  .LBB63_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB63_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-NEXT:    s_branch .LBB63_2
 ;
 ; GFX9-LABEL: bitcast_v40i8_to_v20f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -25359,7 +26033,7 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s41, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s42, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB63_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB63_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v8, 0xc0c0004
@@ -25425,8 +26099,17 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_and_b32_e32 v8, 0xffff, v8
 ; GFX9-NEXT:    v_lshl_or_b32 v9, s5, 16, v8
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s4
-; GFX9-NEXT:    s_cbranch_execnz .LBB63_3
-; GFX9-NEXT:  .LBB63_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB63_3
+; GFX9-NEXT:  .LBB63_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX9-NEXT:  .LBB63_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB63_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s63, s63, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s62
 ; GFX9-NEXT:    v_mov_b32_e32 v6, 0xc0c0004
@@ -25528,11 +26211,8 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_lshl_or_b32 v6, v6, 16, v11
 ; GFX9-NEXT:    v_lshl_or_b32 v7, v10, 16, v7
 ; GFX9-NEXT:    v_lshl_or_b32 v9, v15, 16, v9
-; GFX9-NEXT:  .LBB63_3: ; %end
+; GFX9-NEXT:  .LBB63_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB63_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX9-NEXT:    s_branch .LBB63_2
 ;
 ; GFX11-TRUE16-LABEL: bitcast_v40i8_to_v20f16_scalar:
 ; GFX11-TRUE16:       ; %bb.0:
@@ -25562,7 +26242,7 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s45, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s58, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s58, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB63_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB63_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v8, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_and_b32 s59, s43, 0xff
@@ -25603,9 +26283,17 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_perm_b32 v9, s15, s5, v8
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v9.h, v10.l
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v8, s59
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB63_3
-; GFX11-TRUE16-NEXT:  .LBB63_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB63_3
+; GFX11-TRUE16-NEXT:  .LBB63_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s58, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-TRUE16-NEXT:  .LBB63_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB63_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_add_i32 s15, s15, 3
 ; GFX11-TRUE16-NEXT:    s_add_i32 s46, s46, 3
@@ -25677,11 +26365,8 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v13.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v8.h, v11.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v9.h, v10.l
-; GFX11-TRUE16-NEXT:  .LBB63_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB63_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB63_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-TRUE16-NEXT:    s_branch .LBB63_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v40i8_to_v20f16_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -25711,7 +26396,7 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s6, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s58, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s58, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB63_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB63_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_and_b32 s59, s56, 0xff
@@ -25760,9 +26445,17 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, s59
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v3, v7, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v7, v13, 16, v11
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB63_3
-; GFX11-FAKE16-NEXT:  .LBB63_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB63_3
+; GFX11-FAKE16-NEXT:  .LBB63_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s58, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-FAKE16-NEXT:  .LBB63_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB63_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_add_i32 s57, s57, 3
 ; GFX11-FAKE16-NEXT:    s_add_i32 s46, s46, 3
@@ -25844,11 +26537,8 @@ define inreg <20 x half> @bitcast_v40i8_to_v20f16_scalar(<40 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v7, v11, 16, v7
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v8, v8, 16, v15
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v9, v9, 16, v16
-; GFX11-FAKE16-NEXT:  .LBB63_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB63_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB63_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-FAKE16-NEXT:    s_branch .LBB63_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -26173,7 +26863,7 @@ define inreg <5 x double> @bitcast_v20f16_to_v5f64_scalar(<20 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s14, s17, 16
 ; SI-NEXT:    s_lshr_b32 s15, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB65_3
+; SI-NEXT:    s_cbranch_scc0 .LBB65_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -26205,8 +26895,17 @@ define inreg <5 x double> @bitcast_v20f16_to_v5f64_scalar(<20 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB65_4
-; SI-NEXT:  .LBB65_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB65_3
+; SI-NEXT:  .LBB65_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB65_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB65_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s15
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s14
@@ -26287,11 +26986,8 @@ define inreg <5 x double> @bitcast_v20f16_to_v5f64_scalar(<20 x half> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v8, v9, v8
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v10
 ; SI-NEXT:    v_or_b32_e32 v9, v11, v9
-; SI-NEXT:    s_branch .LBB65_5
-; SI-NEXT:  .LBB65_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB65_2
-; SI-NEXT:  .LBB65_4:
+; SI-NEXT:    s_branch .LBB65_6
+; SI-NEXT:  .LBB65_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -26308,7 +27004,7 @@ define inreg <5 x double> @bitcast_v20f16_to_v5f64_scalar(<20 x half> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v13, s49
 ; SI-NEXT:    v_mov_b32_e32 v14, s50
 ; SI-NEXT:    v_mov_b32_e32 v15, s51
-; SI-NEXT:  .LBB65_5: ; %end
+; SI-NEXT:  .LBB65_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s51, v16, 7
 ; SI-NEXT:    v_readlane_b32 s50, v16, 6
 ; SI-NEXT:    v_readlane_b32 s49, v16, 5
@@ -26327,10 +27023,18 @@ define inreg <5 x double> @bitcast_v20f16_to_v5f64_scalar(<20 x half> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB65_3
+; VI-NEXT:    s_cbranch_scc0 .LBB65_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB65_4
-; VI-NEXT:  .LBB65_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB65_3
+; VI-NEXT:  .LBB65_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB65_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB65_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s25, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -26383,9 +27087,7 @@ define inreg <5 x double> @bitcast_v20f16_to_v5f64_scalar(<20 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v10
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB65_3:
-; VI-NEXT:    s_branch .LBB65_2
-; VI-NEXT:  .LBB65_4:
+; VI-NEXT:  .LBB65_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -26408,10 +27110,18 @@ define inreg <5 x double> @bitcast_v20f16_to_v5f64_scalar(<20 x half> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB65_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB65_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB65_4
-; GFX9-NEXT:  .LBB65_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB65_3
+; GFX9-NEXT:  .LBB65_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB65_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB65_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v9, s25, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v8, s24, v0 op_sel_hi:[1,0]
@@ -26424,9 +27134,7 @@ define inreg <5 x double> @bitcast_v20f16_to_v5f64_scalar(<20 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB65_3:
-; GFX9-NEXT:    s_branch .LBB65_2
-; GFX9-NEXT:  .LBB65_4:
+; GFX9-NEXT:  .LBB65_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -26454,11 +27162,16 @@ define inreg <5 x double> @bitcast_v20f16_to_v5f64_scalar(<20 x half> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB65_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB65_4
-; GFX11-NEXT:  .LBB65_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB65_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB65_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB65_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v9, 0x200, s21 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v8, 0x200, s20 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v7, 0x200, s19 op_sel_hi:[0,1]
@@ -26470,8 +27183,6 @@ define inreg <5 x double> @bitcast_v20f16_to_v5f64_scalar(<20 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB65_3:
-; GFX11-NEXT:    s_branch .LBB65_2
 ; GFX11-NEXT:  .LBB65_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -26657,7 +27368,7 @@ define inreg <20 x half> @bitcast_v5f64_to_v20f16_scalar(<5 x double> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB67_3
+; SI-NEXT:    s_cbranch_scc0 .LBB67_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s40, s25, 16
 ; SI-NEXT:    s_lshr_b32 s29, s23, 16
@@ -26669,8 +27380,26 @@ define inreg <20 x half> @bitcast_v5f64_to_v20f16_scalar(<5 x double> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB67_4
-; SI-NEXT:  .LBB67_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB67_3
+; SI-NEXT:  .LBB67_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:  .LBB67_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB67_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
@@ -26686,20 +27415,8 @@ define inreg <20 x half> @bitcast_v5f64_to_v20f16_scalar(<5 x double> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v19, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v1
-; SI-NEXT:    s_branch .LBB67_5
-; SI-NEXT:  .LBB67_3:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    s_branch .LBB67_2
-; SI-NEXT:  .LBB67_4:
+; SI-NEXT:    s_branch .LBB67_6
+; SI-NEXT:  .LBB67_5:
 ; SI-NEXT:    v_mov_b32_e32 v9, s25
 ; SI-NEXT:    v_mov_b32_e32 v7, s23
 ; SI-NEXT:    v_mov_b32_e32 v5, s21
@@ -26720,7 +27437,7 @@ define inreg <20 x half> @bitcast_v5f64_to_v20f16_scalar(<5 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v12, s8
 ; SI-NEXT:    v_mov_b32_e32 v11, s6
 ; SI-NEXT:    v_mov_b32_e32 v10, s4
-; SI-NEXT:  .LBB67_5: ; %end
+; SI-NEXT:  .LBB67_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
@@ -26757,19 +27474,25 @@ define inreg <20 x half> @bitcast_v5f64_to_v20f16_scalar(<5 x double> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB67_3
+; VI-NEXT:    s_cbranch_scc0 .LBB67_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB67_4
-; VI-NEXT:  .LBB67_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB67_3
+; VI-NEXT:  .LBB67_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB67_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB67_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB67_3:
-; VI-NEXT:    s_branch .LBB67_2
-; VI-NEXT:  .LBB67_4:
+; VI-NEXT:  .LBB67_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -26792,19 +27515,25 @@ define inreg <20 x half> @bitcast_v5f64_to_v20f16_scalar(<5 x double> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB67_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB67_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB67_4
-; GFX9-NEXT:  .LBB67_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB67_3
+; GFX9-NEXT:  .LBB67_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB67_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB67_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB67_3:
-; GFX9-NEXT:    s_branch .LBB67_2
-; GFX9-NEXT:  .LBB67_4:
+; GFX9-NEXT:  .LBB67_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -26832,19 +27561,22 @@ define inreg <20 x half> @bitcast_v5f64_to_v20f16_scalar(<5 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB67_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB67_4
-; GFX11-NEXT:  .LBB67_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB67_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB67_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB67_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[8:9], s[20:21], 1.0
 ; GFX11-NEXT:    v_add_f64 v[6:7], s[18:19], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[16:17], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB67_3:
-; GFX11-NEXT:    s_branch .LBB67_2
 ; GFX11-NEXT:  .LBB67_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -27179,7 +27911,7 @@ define inreg <5 x i64> @bitcast_v20f16_to_v5i64_scalar(<20 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s14, s17, 16
 ; SI-NEXT:    s_lshr_b32 s15, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB69_3
+; SI-NEXT:    s_cbranch_scc0 .LBB69_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -27211,8 +27943,17 @@ define inreg <5 x i64> @bitcast_v20f16_to_v5i64_scalar(<20 x half> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB69_4
-; SI-NEXT:  .LBB69_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB69_3
+; SI-NEXT:  .LBB69_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB69_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB69_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s15
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s14
@@ -27293,11 +28034,8 @@ define inreg <5 x i64> @bitcast_v20f16_to_v5i64_scalar(<20 x half> inreg %a, i32
 ; SI-NEXT:    v_or_b32_e32 v8, v9, v8
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v10
 ; SI-NEXT:    v_or_b32_e32 v9, v11, v9
-; SI-NEXT:    s_branch .LBB69_5
-; SI-NEXT:  .LBB69_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB69_2
-; SI-NEXT:  .LBB69_4:
+; SI-NEXT:    s_branch .LBB69_6
+; SI-NEXT:  .LBB69_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -27314,7 +28052,7 @@ define inreg <5 x i64> @bitcast_v20f16_to_v5i64_scalar(<20 x half> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v13, s49
 ; SI-NEXT:    v_mov_b32_e32 v14, s50
 ; SI-NEXT:    v_mov_b32_e32 v15, s51
-; SI-NEXT:  .LBB69_5: ; %end
+; SI-NEXT:  .LBB69_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s51, v16, 7
 ; SI-NEXT:    v_readlane_b32 s50, v16, 6
 ; SI-NEXT:    v_readlane_b32 s49, v16, 5
@@ -27333,10 +28071,18 @@ define inreg <5 x i64> @bitcast_v20f16_to_v5i64_scalar(<20 x half> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB69_3
+; VI-NEXT:    s_cbranch_scc0 .LBB69_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB69_4
-; VI-NEXT:  .LBB69_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB69_3
+; VI-NEXT:  .LBB69_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB69_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB69_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s25, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -27389,9 +28135,7 @@ define inreg <5 x i64> @bitcast_v20f16_to_v5i64_scalar(<20 x half> inreg %a, i32
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v10
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB69_3:
-; VI-NEXT:    s_branch .LBB69_2
-; VI-NEXT:  .LBB69_4:
+; VI-NEXT:  .LBB69_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -27414,10 +28158,18 @@ define inreg <5 x i64> @bitcast_v20f16_to_v5i64_scalar(<20 x half> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB69_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB69_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB69_4
-; GFX9-NEXT:  .LBB69_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB69_3
+; GFX9-NEXT:  .LBB69_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB69_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB69_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v9, s25, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v8, s24, v0 op_sel_hi:[1,0]
@@ -27430,9 +28182,7 @@ define inreg <5 x i64> @bitcast_v20f16_to_v5i64_scalar(<20 x half> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB69_3:
-; GFX9-NEXT:    s_branch .LBB69_2
-; GFX9-NEXT:  .LBB69_4:
+; GFX9-NEXT:  .LBB69_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -27460,11 +28210,16 @@ define inreg <5 x i64> @bitcast_v20f16_to_v5i64_scalar(<20 x half> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB69_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB69_4
-; GFX11-NEXT:  .LBB69_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB69_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB69_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB69_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v9, 0x200, s21 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v8, 0x200, s20 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v7, 0x200, s19 op_sel_hi:[0,1]
@@ -27476,8 +28231,6 @@ define inreg <5 x i64> @bitcast_v20f16_to_v5i64_scalar(<20 x half> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB69_3:
-; GFX11-NEXT:    s_branch .LBB69_2
 ; GFX11-NEXT:  .LBB69_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -27686,7 +28439,7 @@ define inreg <20 x half> @bitcast_v5i64_to_v20f16_scalar(<5 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB71_4
+; SI-NEXT:    s_cbranch_scc0 .LBB71_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s26, s25, 16
 ; SI-NEXT:    s_lshr_b32 s27, s23, 16
@@ -27698,8 +28451,26 @@ define inreg <20 x half> @bitcast_v5i64_to_v20f16_scalar(<5 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB71_3
-; SI-NEXT:  .LBB71_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[14:15], 0
+; SI-NEXT:    s_branch .LBB71_3
+; SI-NEXT:  .LBB71_2:
+; SI-NEXT:    s_mov_b64 s[14:15], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr29
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:  .LBB71_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB71_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s24, s24, 3
 ; SI-NEXT:    s_addc_u32 s25, s25, 0
 ; SI-NEXT:    s_add_u32 s22, s22, 3
@@ -27720,7 +28491,7 @@ define inreg <20 x half> @bitcast_v5i64_to_v20f16_scalar(<5 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 16
-; SI-NEXT:  .LBB71_3: ; %end
+; SI-NEXT:  .LBB71_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s12, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -27762,27 +28533,23 @@ define inreg <20 x half> @bitcast_v5i64_to_v20f16_scalar(<5 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v8, s4
 ; SI-NEXT:    v_mov_b32_e32 v9, s13
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB71_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr29
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    s_branch .LBB71_2
 ;
 ; VI-LABEL: bitcast_v5i64_to_v20f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB71_4
+; VI-NEXT:    s_cbranch_scc0 .LBB71_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB71_3
-; VI-NEXT:  .LBB71_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB71_3
+; VI-NEXT:  .LBB71_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB71_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB71_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s24, s24, 3
 ; VI-NEXT:    s_addc_u32 s25, s25, 0
 ; VI-NEXT:    s_add_u32 s22, s22, 3
@@ -27793,7 +28560,7 @@ define inreg <20 x half> @bitcast_v5i64_to_v20f16_scalar(<5 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB71_3: ; %end
+; VI-NEXT:  .LBB71_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -27805,17 +28572,23 @@ define inreg <20 x half> @bitcast_v5i64_to_v20f16_scalar(<5 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB71_4:
-; VI-NEXT:    s_branch .LBB71_2
 ;
 ; GFX9-LABEL: bitcast_v5i64_to_v20f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB71_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB71_3
-; GFX9-NEXT:  .LBB71_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB71_3
+; GFX9-NEXT:  .LBB71_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB71_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB71_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s24, s24, 3
 ; GFX9-NEXT:    s_addc_u32 s25, s25, 0
 ; GFX9-NEXT:    s_add_u32 s22, s22, 3
@@ -27826,7 +28599,7 @@ define inreg <20 x half> @bitcast_v5i64_to_v20f16_scalar(<5 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB71_3: ; %end
+; GFX9-NEXT:  .LBB71_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -27838,19 +28611,22 @@ define inreg <20 x half> @bitcast_v5i64_to_v20f16_scalar(<5 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s24
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s25
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB71_4:
-; GFX9-NEXT:    s_branch .LBB71_2
 ;
 ; GFX11-LABEL: bitcast_v5i64_to_v20f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB71_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB71_3
-; GFX11-NEXT:  .LBB71_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB71_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB71_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB71_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s20, s20, 3
 ; GFX11-NEXT:    s_addc_u32 s21, s21, 0
 ; GFX11-NEXT:    s_add_u32 s18, s18, 3
@@ -27861,7 +28637,7 @@ define inreg <20 x half> @bitcast_v5i64_to_v20f16_scalar(<5 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB71_3: ; %end
+; GFX11-NEXT:  .LBB71_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -27869,8 +28645,6 @@ define inreg <20 x half> @bitcast_v5i64_to_v20f16_scalar(<5 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB71_4:
-; GFX11-NEXT:    s_branch .LBB71_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -29187,7 +29961,7 @@ define inreg <5 x double> @bitcast_v40i8_to_v5f64_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s78, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s79, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB73_4
+; SI-NEXT:    s_cbranch_scc0 .LBB73_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -29279,8 +30053,17 @@ define inreg <5 x double> @bitcast_v40i8_to_v5f64_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s45, s5
 ; SI-NEXT:    s_or_b32 s45, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB73_3
-; SI-NEXT:  .LBB73_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB73_3
+; SI-NEXT:  .LBB73_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB73_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB73_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -29411,7 +30194,7 @@ define inreg <5 x double> @bitcast_v40i8_to_v5f64_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_or_b32 s5, s5, s6
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s45, s4, 0x3000000
-; SI-NEXT:  .LBB73_3: ; %end
+; SI-NEXT:  .LBB73_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -29435,9 +30218,6 @@ define inreg <5 x double> @bitcast_v40i8_to_v5f64_scalar(<40 x i8> inreg %a, i32
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB73_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB73_2
 ;
 ; VI-LABEL: bitcast_v40i8_to_v5f64_scalar:
 ; VI:       ; %bb.0:
@@ -29470,7 +30250,7 @@ define inreg <5 x double> @bitcast_v40i8_to_v5f64_scalar(<40 x i8> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s62, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s63, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB73_4
+; VI-NEXT:    s_cbranch_scc0 .LBB73_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -29533,8 +30313,17 @@ define inreg <5 x double> @bitcast_v40i8_to_v5f64_scalar(<40 x i8> inreg %a, i32
 ; VI-NEXT:    v_perm_b32 v9, s7, v11, v9
 ; VI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
-; VI-NEXT:    s_cbranch_execnz .LBB73_3
-; VI-NEXT:  .LBB73_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB73_3
+; VI-NEXT:  .LBB73_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; VI-NEXT:  .LBB73_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB73_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
@@ -29636,11 +30425,8 @@ define inreg <5 x double> @bitcast_v40i8_to_v5f64_scalar(<40 x i8> inreg %a, i32
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, 0x3000000, v7
 ; VI-NEXT:    v_add_u32_e32 v8, vcc, 0x3000000, v8
 ; VI-NEXT:    v_add_u32_e32 v9, vcc, 0x3000000, v9
-; VI-NEXT:  .LBB73_3: ; %end
+; VI-NEXT:  .LBB73_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB73_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-NEXT:    s_branch .LBB73_2
 ;
 ; GFX9-LABEL: bitcast_v40i8_to_v5f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -29673,7 +30459,7 @@ define inreg <5 x double> @bitcast_v40i8_to_v5f64_scalar(<40 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s62, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s63, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB73_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB73_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -29736,8 +30522,17 @@ define inreg <5 x double> @bitcast_v40i8_to_v5f64_scalar(<40 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_perm_b32 v9, s7, v11, v9
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; GFX9-NEXT:    v_or_b32_e32 v9, v10, v9
-; GFX9-NEXT:    s_cbranch_execnz .LBB73_3
-; GFX9-NEXT:  .LBB73_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB73_3
+; GFX9-NEXT:  .LBB73_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX9-NEXT:  .LBB73_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB73_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
@@ -29830,11 +30625,8 @@ define inreg <5 x double> @bitcast_v40i8_to_v5f64_scalar(<40 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_add_u32_e32 v10, 0x300, v10
 ; GFX9-NEXT:    v_add_u32_sdwa v9, v9, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v9, v10, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB73_3: ; %end
+; GFX9-NEXT:  .LBB73_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB73_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX9-NEXT:    s_branch .LBB73_2
 ;
 ; GFX11-LABEL: bitcast_v40i8_to_v5f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -29864,7 +30656,7 @@ define inreg <5 x double> @bitcast_v40i8_to_v5f64_scalar(<40 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_readfirstlane_b32 s57, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s58, 0
 ; GFX11-NEXT:    s_mov_b32 s58, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB73_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB73_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v5, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
@@ -29908,9 +30700,17 @@ define inreg <5 x double> @bitcast_v40i8_to_v5f64_scalar(<40 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_or_b32_e32 v7, v12, v10
 ; GFX11-NEXT:    v_or_b32_e32 v8, v14, v11
 ; GFX11-NEXT:    v_or_b32_e32 v9, v15, v13
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-NEXT:    s_cbranch_vccnz .LBB73_3
-; GFX11-NEXT:  .LBB73_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB73_3
+; GFX11-NEXT:  .LBB73_2:
+; GFX11-NEXT:    s_mov_b32 s58, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-NEXT:  .LBB73_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB73_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v5, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s22, s22, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
@@ -30002,11 +30802,8 @@ define inreg <5 x double> @bitcast_v40i8_to_v5f64_scalar(<40 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_or_b32_e32 v7, v10, v11
 ; GFX11-NEXT:    v_or_b32_e32 v8, v12, v13
 ; GFX11-NEXT:    v_or_b32_e32 v9, v14, v15
-; GFX11-NEXT:  .LBB73_3: ; %end
+; GFX11-NEXT:  .LBB73_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB73_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-NEXT:    s_branch .LBB73_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -30874,7 +31671,7 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB75_3
+; SI-NEXT:    s_cbranch_scc0 .LBB75_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s72, s25, 24
 ; SI-NEXT:    s_lshr_b32 s73, s25, 16
@@ -30906,8 +31703,46 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB75_4
-; SI-NEXT:  .LBB75_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[62:63], 0
+; SI-NEXT:    s_branch .LBB75_3
+; SI-NEXT:  .LBB75_2:
+; SI-NEXT:    s_mov_b64 s[62:63], -1
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:  .LBB75_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[62:63], s[62:63], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB75_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[8:9], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[15:16], s[18:19], 1.0
 ; SI-NEXT:    v_lshr_b64 v[22:23], v[8:9], 8
@@ -30948,40 +31783,8 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s92, s17, 24
 ; SI-NEXT:    s_lshr_b32 s93, s17, 16
 ; SI-NEXT:    s_lshr_b32 s94, s17, 8
-; SI-NEXT:    s_branch .LBB75_5
-; SI-NEXT:  .LBB75_3:
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    s_branch .LBB75_2
-; SI-NEXT:  .LBB75_4:
+; SI-NEXT:    s_branch .LBB75_6
+; SI-NEXT:  .LBB75_5:
 ; SI-NEXT:    v_mov_b32_e32 v20, s16
 ; SI-NEXT:    v_mov_b32_e32 v15, s18
 ; SI-NEXT:    v_mov_b32_e32 v8, s20
@@ -31002,7 +31805,7 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v10, s6
 ; SI-NEXT:    v_mov_b32_e32 v6, s4
 ; SI-NEXT:    v_mov_b32_e32 v5, s10
-; SI-NEXT:  .LBB75_5: ; %end
+; SI-NEXT:  .LBB75_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v20
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 8, v28
 ; SI-NEXT:    s_and_b32 s4, s17, 0xff
@@ -31133,7 +31936,7 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB75_3
+; VI-NEXT:    s_cbranch_scc0 .LBB75_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s58, s25, 24
 ; VI-NEXT:    s_lshr_b32 s57, s25, 16
@@ -31165,8 +31968,46 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB75_4
-; VI-NEXT:  .LBB75_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[14:15], 0
+; VI-NEXT:    s_branch .LBB75_3
+; VI-NEXT:  .LBB75_2:
+; VI-NEXT:    s_mov_b64 s[14:15], -1
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr26
+; VI-NEXT:    ; implicit-def: $sgpr27
+; VI-NEXT:    ; implicit-def: $sgpr28
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr29
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:  .LBB75_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB75_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[1:2], s[24:25], 1.0
 ; VI-NEXT:    v_add_f64 v[3:4], s[22:23], 1.0
 ; VI-NEXT:    v_add_f64 v[5:6], s[20:21], 1.0
@@ -31202,40 +32043,8 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; VI-NEXT:    v_lshrrev_b32_e32 v48, 8, v10
 ; VI-NEXT:    v_lshrrev_b32_e32 v34, 16, v9
 ; VI-NEXT:    v_lshrrev_b32_e32 v36, 8, v9
-; VI-NEXT:    s_branch .LBB75_5
-; VI-NEXT:  .LBB75_3:
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr26
-; VI-NEXT:    ; implicit-def: $sgpr27
-; VI-NEXT:    ; implicit-def: $sgpr28
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr29
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    s_branch .LBB75_2
-; VI-NEXT:  .LBB75_4:
+; VI-NEXT:    s_branch .LBB75_6
+; VI-NEXT:  .LBB75_5:
 ; VI-NEXT:    v_mov_b32_e32 v9, s16
 ; VI-NEXT:    v_mov_b32_e32 v7, s18
 ; VI-NEXT:    v_mov_b32_e32 v5, s20
@@ -31276,7 +32085,7 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v13, s8
 ; VI-NEXT:    v_mov_b32_e32 v12, s10
 ; VI-NEXT:    v_mov_b32_e32 v11, s12
-; VI-NEXT:  .LBB75_5: ; %end
+; VI-NEXT:  .LBB75_6: ; %end
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; VI-NEXT:    v_perm_b32 v15, v34, v15, s4
 ; VI-NEXT:    v_perm_b32 v9, v9, v36, s4
@@ -31344,7 +32153,7 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB75_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB75_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s58, s25, 24
 ; GFX9-NEXT:    s_lshr_b32 s57, s25, 16
@@ -31376,8 +32185,46 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB75_4
-; GFX9-NEXT:  .LBB75_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[14:15], 0
+; GFX9-NEXT:    s_branch .LBB75_3
+; GFX9-NEXT:  .LBB75_2:
+; GFX9-NEXT:    s_mov_b64 s[14:15], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr26
+; GFX9-NEXT:    ; implicit-def: $sgpr27
+; GFX9-NEXT:    ; implicit-def: $sgpr28
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr29
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:  .LBB75_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB75_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[1:2], s[24:25], 1.0
 ; GFX9-NEXT:    v_add_f64 v[3:4], s[22:23], 1.0
 ; GFX9-NEXT:    v_add_f64 v[5:6], s[20:21], 1.0
@@ -31413,40 +32260,8 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v48, 8, v10
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v33, 16, v9
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v35, 8, v9
-; GFX9-NEXT:    s_branch .LBB75_5
-; GFX9-NEXT:  .LBB75_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr26
-; GFX9-NEXT:    ; implicit-def: $sgpr27
-; GFX9-NEXT:    ; implicit-def: $sgpr28
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr29
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    s_branch .LBB75_2
-; GFX9-NEXT:  .LBB75_4:
+; GFX9-NEXT:    s_branch .LBB75_6
+; GFX9-NEXT:  .LBB75_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s20
@@ -31487,7 +32302,7 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v12, s10
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s12
-; GFX9-NEXT:  .LBB75_5: ; %end
+; GFX9-NEXT:  .LBB75_6: ; %end
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; GFX9-NEXT:    v_perm_b32 v15, v33, v15, s4
 ; GFX9-NEXT:    v_perm_b32 v9, v9, v35, s4
@@ -31547,7 +32362,7 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s14, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB75_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB75_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s45, s21, 24
 ; GFX11-NEXT:    s_lshr_b32 s44, s21, 16
@@ -31579,9 +32394,46 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-NEXT:    s_cbranch_vccnz .LBB75_4
-; GFX11-NEXT:  .LBB75_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB75_3
+; GFX11-NEXT:  .LBB75_2:
+; GFX11-NEXT:    s_mov_b32 s14, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr22
+; GFX11-NEXT:    ; implicit-def: $sgpr23
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr24
+; GFX11-NEXT:    ; implicit-def: $sgpr25
+; GFX11-NEXT:    ; implicit-def: $sgpr26
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr27
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:    ; implicit-def: $sgpr29
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:  .LBB75_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s14, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB75_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[5:6], s[16:17], 1.0
 ; GFX11-NEXT:    v_add_f64 v[1:2], s[20:21], 1.0
 ; GFX11-NEXT:    v_add_f64 v[7:8], s[2:3], 1.0
@@ -31617,40 +32469,8 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v48, 8, v13
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v34, 16, v12
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v35, 8, v12
-; GFX11-NEXT:    s_branch .LBB75_5
-; GFX11-NEXT:  .LBB75_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr22
-; GFX11-NEXT:    ; implicit-def: $sgpr23
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr24
-; GFX11-NEXT:    ; implicit-def: $sgpr25
-; GFX11-NEXT:    ; implicit-def: $sgpr26
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr27
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    ; implicit-def: $sgpr29
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    s_branch .LBB75_2
-; GFX11-NEXT:  .LBB75_4:
+; GFX11-NEXT:    s_branch .LBB75_6
+; GFX11-NEXT:  .LBB75_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s0 :: v_dual_mov_b32 v7, s2
 ; GFX11-NEXT:    v_dual_mov_b32 v5, s16 :: v_dual_mov_b32 v2, s21
 ; GFX11-NEXT:    v_dual_mov_b32 v3, s18 :: v_dual_mov_b32 v4, s19
@@ -31671,7 +32491,7 @@ define inreg <40 x i8> @bitcast_v5f64_to_v40i8_scalar(<5 x double> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v36, s26 :: v_dual_mov_b32 v37, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v33, s24 :: v_dual_mov_b32 v38, s23
 ; GFX11-NEXT:    v_dual_mov_b32 v39, s22 :: v_dual_mov_b32 v48, s15
-; GFX11-NEXT:  .LBB75_5: ; %end
+; GFX11-NEXT:  .LBB75_6: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-NEXT:    v_perm_b32 v16, v34, v16, 0xc0c0004
 ; GFX11-NEXT:    v_perm_b32 v12, v12, v35, 0xc0c0004
@@ -33034,7 +33854,7 @@ define inreg <5 x i64> @bitcast_v40i8_to_v5i64_scalar(<40 x i8> inreg %a, i32 in
 ; SI-NEXT:    v_readfirstlane_b32 s78, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s79, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB77_4
+; SI-NEXT:    s_cbranch_scc0 .LBB77_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -33126,8 +33946,17 @@ define inreg <5 x i64> @bitcast_v40i8_to_v5i64_scalar(<40 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s45, s5
 ; SI-NEXT:    s_or_b32 s45, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB77_3
-; SI-NEXT:  .LBB77_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB77_3
+; SI-NEXT:  .LBB77_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB77_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB77_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -33258,7 +34087,7 @@ define inreg <5 x i64> @bitcast_v40i8_to_v5i64_scalar(<40 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_or_b32 s5, s5, s6
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s45, s4, 0x3000000
-; SI-NEXT:  .LBB77_3: ; %end
+; SI-NEXT:  .LBB77_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -33282,9 +34111,6 @@ define inreg <5 x i64> @bitcast_v40i8_to_v5i64_scalar(<40 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB77_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB77_2
 ;
 ; VI-LABEL: bitcast_v40i8_to_v5i64_scalar:
 ; VI:       ; %bb.0:
@@ -33317,7 +34143,7 @@ define inreg <5 x i64> @bitcast_v40i8_to_v5i64_scalar(<40 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_readfirstlane_b32 s62, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s63, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB77_4
+; VI-NEXT:    s_cbranch_scc0 .LBB77_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -33380,8 +34206,17 @@ define inreg <5 x i64> @bitcast_v40i8_to_v5i64_scalar(<40 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_perm_b32 v9, s7, v11, v9
 ; VI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
-; VI-NEXT:    s_cbranch_execnz .LBB77_3
-; VI-NEXT:  .LBB77_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB77_3
+; VI-NEXT:  .LBB77_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; VI-NEXT:  .LBB77_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB77_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
@@ -33483,11 +34318,8 @@ define inreg <5 x i64> @bitcast_v40i8_to_v5i64_scalar(<40 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, 0x3000000, v7
 ; VI-NEXT:    v_add_u32_e32 v8, vcc, 0x3000000, v8
 ; VI-NEXT:    v_add_u32_e32 v9, vcc, 0x3000000, v9
-; VI-NEXT:  .LBB77_3: ; %end
+; VI-NEXT:  .LBB77_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB77_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-NEXT:    s_branch .LBB77_2
 ;
 ; GFX9-LABEL: bitcast_v40i8_to_v5i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -33520,7 +34352,7 @@ define inreg <5 x i64> @bitcast_v40i8_to_v5i64_scalar(<40 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_readfirstlane_b32 s62, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s63, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB77_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB77_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -33583,8 +34415,17 @@ define inreg <5 x i64> @bitcast_v40i8_to_v5i64_scalar(<40 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_perm_b32 v9, s7, v11, v9
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; GFX9-NEXT:    v_or_b32_e32 v9, v10, v9
-; GFX9-NEXT:    s_cbranch_execnz .LBB77_3
-; GFX9-NEXT:  .LBB77_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB77_3
+; GFX9-NEXT:  .LBB77_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX9-NEXT:  .LBB77_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB77_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v9, 0xc0c0004
@@ -33677,11 +34518,8 @@ define inreg <5 x i64> @bitcast_v40i8_to_v5i64_scalar(<40 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_add_u32_e32 v10, 0x300, v10
 ; GFX9-NEXT:    v_add_u32_sdwa v9, v9, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v9, v10, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB77_3: ; %end
+; GFX9-NEXT:  .LBB77_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB77_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX9-NEXT:    s_branch .LBB77_2
 ;
 ; GFX11-LABEL: bitcast_v40i8_to_v5i64_scalar:
 ; GFX11:       ; %bb.0:
@@ -33711,7 +34549,7 @@ define inreg <5 x i64> @bitcast_v40i8_to_v5i64_scalar(<40 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    v_readfirstlane_b32 s57, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s58, 0
 ; GFX11-NEXT:    s_mov_b32 s58, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB77_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB77_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v5, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
@@ -33755,9 +34593,17 @@ define inreg <5 x i64> @bitcast_v40i8_to_v5i64_scalar(<40 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    v_or_b32_e32 v7, v12, v10
 ; GFX11-NEXT:    v_or_b32_e32 v8, v14, v11
 ; GFX11-NEXT:    v_or_b32_e32 v9, v15, v13
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-NEXT:    s_cbranch_vccnz .LBB77_3
-; GFX11-NEXT:  .LBB77_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB77_3
+; GFX11-NEXT:  .LBB77_2:
+; GFX11-NEXT:    s_mov_b32 s58, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-NEXT:  .LBB77_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB77_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v5, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s22, s22, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
@@ -33849,11 +34695,8 @@ define inreg <5 x i64> @bitcast_v40i8_to_v5i64_scalar(<40 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    v_or_b32_e32 v7, v10, v11
 ; GFX11-NEXT:    v_or_b32_e32 v8, v12, v13
 ; GFX11-NEXT:    v_or_b32_e32 v9, v14, v15
-; GFX11-NEXT:  .LBB77_3: ; %end
+; GFX11-NEXT:  .LBB77_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB77_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-NEXT:    s_branch .LBB77_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -34752,7 +35595,7 @@ define inreg <40 x i8> @bitcast_v5i64_to_v40i8_scalar(<5 x i64> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB79_4
+; SI-NEXT:    s_cbranch_scc0 .LBB79_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s72, s25, 24
 ; SI-NEXT:    s_lshr_b32 s73, s25, 16
@@ -34784,8 +35627,46 @@ define inreg <40 x i8> @bitcast_v5i64_to_v40i8_scalar(<5 x i64> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB79_3
-; SI-NEXT:  .LBB79_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[62:63], 0
+; SI-NEXT:    s_branch .LBB79_3
+; SI-NEXT:  .LBB79_2:
+; SI-NEXT:    s_mov_b64 s[62:63], -1
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:  .LBB79_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[62:63], s[62:63], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB79_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s24, s24, 3
 ; SI-NEXT:    s_addc_u32 s25, s25, 0
 ; SI-NEXT:    s_add_u32 s22, s22, 3
@@ -34826,7 +35707,7 @@ define inreg <40 x i8> @bitcast_v5i64_to_v40i8_scalar(<5 x i64> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 8
-; SI-NEXT:  .LBB79_3: ; %end
+; SI-NEXT:  .LBB79_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s5, s60, 8
 ; SI-NEXT:    s_and_b32 s7, s16, 0xff
 ; SI-NEXT:    s_or_b32 s5, s7, s5
@@ -34956,44 +35837,12 @@ define inreg <40 x i8> @bitcast_v5i64_to_v40i8_scalar(<5 x i64> inreg %a, i32 in
 ; SI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB79_4:
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_branch .LBB79_2
 ;
 ; VI-LABEL: bitcast_v5i64_to_v40i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB79_4
+; VI-NEXT:    s_cbranch_scc0 .LBB79_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s26, s25, 24
 ; VI-NEXT:    s_lshr_b32 s27, s25, 16
@@ -35025,8 +35874,46 @@ define inreg <40 x i8> @bitcast_v5i64_to_v40i8_scalar(<5 x i64> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB79_3
-; VI-NEXT:  .LBB79_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[14:15], 0
+; VI-NEXT:    s_branch .LBB79_3
+; VI-NEXT:  .LBB79_2:
+; VI-NEXT:    s_mov_b64 s[14:15], -1
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr29
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr28
+; VI-NEXT:    ; implicit-def: $sgpr27
+; VI-NEXT:    ; implicit-def: $sgpr26
+; VI-NEXT:  .LBB79_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB79_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -35067,7 +35954,7 @@ define inreg <40 x i8> @bitcast_v5i64_to_v40i8_scalar(<5 x i64> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s74, s17, 8
 ; VI-NEXT:    s_lshr_b32 s75, s16, 16
 ; VI-NEXT:    s_lshr_b32 s76, s16, 8
-; VI-NEXT:  .LBB79_3: ; %end
+; VI-NEXT:  .LBB79_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v3, s12
 ; VI-NEXT:    v_mov_b32_e32 v1, s76
@@ -35150,44 +36037,12 @@ define inreg <40 x i8> @bitcast_v5i64_to_v40i8_scalar(<5 x i64> inreg %a, i32 in
 ; VI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB79_4:
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr29
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr28
-; VI-NEXT:    ; implicit-def: $sgpr27
-; VI-NEXT:    ; implicit-def: $sgpr26
-; VI-NEXT:    s_branch .LBB79_2
 ;
 ; GFX9-LABEL: bitcast_v5i64_to_v40i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB79_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB79_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s26, s25, 24
 ; GFX9-NEXT:    s_lshr_b32 s27, s25, 16
@@ -35219,8 +36074,46 @@ define inreg <40 x i8> @bitcast_v5i64_to_v40i8_scalar(<5 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[10:11], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[12:13], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB79_3
-; GFX9-NEXT:  .LBB79_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[14:15], 0
+; GFX9-NEXT:    s_branch .LBB79_3
+; GFX9-NEXT:  .LBB79_2:
+; GFX9-NEXT:    s_mov_b64 s[14:15], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr29
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr28
+; GFX9-NEXT:    ; implicit-def: $sgpr27
+; GFX9-NEXT:    ; implicit-def: $sgpr26
+; GFX9-NEXT:  .LBB79_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB79_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -35261,7 +36154,7 @@ define inreg <40 x i8> @bitcast_v5i64_to_v40i8_scalar(<5 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b32 s74, s17, 8
 ; GFX9-NEXT:    s_lshr_b32 s75, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s76, s16, 8
-; GFX9-NEXT:  .LBB79_3: ; %end
+; GFX9-NEXT:  .LBB79_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s12
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s76
@@ -35335,45 +36228,13 @@ define inreg <40 x i8> @bitcast_v5i64_to_v40i8_scalar(<5 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:36
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB79_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr29
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr28
-; GFX9-NEXT:    ; implicit-def: $sgpr27
-; GFX9-NEXT:    ; implicit-def: $sgpr26
-; GFX9-NEXT:    s_branch .LBB79_2
 ;
 ; GFX11-LABEL: bitcast_v5i64_to_v40i8_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s63, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB79_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB79_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s14, s21, 24
 ; GFX11-NEXT:    s_lshr_b32 s22, s21, 16
@@ -35405,9 +36266,46 @@ define inreg <40 x i8> @bitcast_v5i64_to_v40i8_scalar(<5 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[10:11], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[12:13], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s63
-; GFX11-NEXT:    s_cbranch_vccnz .LBB79_3
-; GFX11-NEXT:  .LBB79_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB79_3
+; GFX11-NEXT:  .LBB79_2:
+; GFX11-NEXT:    s_mov_b32 s63, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:    ; implicit-def: $sgpr29
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr25
+; GFX11-NEXT:    ; implicit-def: $sgpr27
+; GFX11-NEXT:    ; implicit-def: $sgpr26
+; GFX11-NEXT:    ; implicit-def: $sgpr23
+; GFX11-NEXT:    ; implicit-def: $sgpr24
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr22
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:  .LBB79_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s63, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB79_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -35448,7 +36346,7 @@ define inreg <40 x i8> @bitcast_v5i64_to_v40i8_scalar(<5 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b32 s60, s1, 8
 ; GFX11-NEXT:    s_lshr_b32 s61, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s62, s0, 8
-; GFX11-NEXT:  .LBB79_3: ; %end
+; GFX11-NEXT:  .LBB79_5: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v6, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_perm_b32 v7, s56, s10, v6
@@ -35496,38 +36394,6 @@ define inreg <40 x i8> @bitcast_v5i64_to_v40i8_scalar(<5 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    scratch_store_b128 v0, v[5:8], off offset:16
 ; GFX11-NEXT:    scratch_store_b64 v0, v[9:10], off offset:32
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB79_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    ; implicit-def: $sgpr29
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr25
-; GFX11-NEXT:    ; implicit-def: $sgpr27
-; GFX11-NEXT:    ; implicit-def: $sgpr26
-; GFX11-NEXT:    ; implicit-def: $sgpr23
-; GFX11-NEXT:    ; implicit-def: $sgpr24
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr22
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    s_branch .LBB79_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -35640,19 +36506,25 @@ define inreg <5 x i64> @bitcast_v5f64_to_v5i64_scalar(<5 x double> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB81_3
+; SI-NEXT:    s_cbranch_scc0 .LBB81_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB81_4
-; SI-NEXT:  .LBB81_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB81_3
+; SI-NEXT:  .LBB81_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB81_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB81_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB81_3:
-; SI-NEXT:    s_branch .LBB81_2
-; SI-NEXT:  .LBB81_4:
+; SI-NEXT:  .LBB81_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -35675,19 +36547,25 @@ define inreg <5 x i64> @bitcast_v5f64_to_v5i64_scalar(<5 x double> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB81_3
+; VI-NEXT:    s_cbranch_scc0 .LBB81_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB81_4
-; VI-NEXT:  .LBB81_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB81_3
+; VI-NEXT:  .LBB81_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB81_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB81_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB81_3:
-; VI-NEXT:    s_branch .LBB81_2
-; VI-NEXT:  .LBB81_4:
+; VI-NEXT:  .LBB81_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -35710,19 +36588,25 @@ define inreg <5 x i64> @bitcast_v5f64_to_v5i64_scalar(<5 x double> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB81_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB81_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB81_4
-; GFX9-NEXT:  .LBB81_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB81_3
+; GFX9-NEXT:  .LBB81_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB81_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB81_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB81_3:
-; GFX9-NEXT:    s_branch .LBB81_2
-; GFX9-NEXT:  .LBB81_4:
+; GFX9-NEXT:  .LBB81_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -35750,19 +36634,22 @@ define inreg <5 x i64> @bitcast_v5f64_to_v5i64_scalar(<5 x double> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB81_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB81_4
-; GFX11-NEXT:  .LBB81_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB81_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB81_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB81_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[16:17], 1.0
 ; GFX11-NEXT:    v_add_f64 v[6:7], s[18:19], 1.0
 ; GFX11-NEXT:    v_add_f64 v[8:9], s[20:21], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB81_3:
-; GFX11-NEXT:    s_branch .LBB81_2
 ; GFX11-NEXT:  .LBB81_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -35908,10 +36795,18 @@ define inreg <5 x double> @bitcast_v5i64_to_v5f64_scalar(<5 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s26, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB83_4
+; SI-NEXT:    s_cbranch_scc0 .LBB83_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB83_3
-; SI-NEXT:  .LBB83_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB83_3
+; SI-NEXT:  .LBB83_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB83_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB83_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
@@ -35922,7 +36817,7 @@ define inreg <5 x double> @bitcast_v5i64_to_v5f64_scalar(<5 x i64> inreg %a, i32
 ; SI-NEXT:    s_addc_u32 s23, s23, 0
 ; SI-NEXT:    s_add_u32 s24, s24, 3
 ; SI-NEXT:    s_addc_u32 s25, s25, 0
-; SI-NEXT:  .LBB83_3: ; %end
+; SI-NEXT:  .LBB83_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -35934,17 +36829,23 @@ define inreg <5 x double> @bitcast_v5i64_to_v5f64_scalar(<5 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v8, s24
 ; SI-NEXT:    v_mov_b32_e32 v9, s25
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB83_4:
-; SI-NEXT:    s_branch .LBB83_2
 ;
 ; VI-LABEL: bitcast_v5i64_to_v5f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s26, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB83_4
+; VI-NEXT:    s_cbranch_scc0 .LBB83_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB83_3
-; VI-NEXT:  .LBB83_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB83_3
+; VI-NEXT:  .LBB83_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB83_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB83_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -35955,7 +36856,7 @@ define inreg <5 x double> @bitcast_v5i64_to_v5f64_scalar(<5 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s23, s23, 0
 ; VI-NEXT:    s_add_u32 s24, s24, 3
 ; VI-NEXT:    s_addc_u32 s25, s25, 0
-; VI-NEXT:  .LBB83_3: ; %end
+; VI-NEXT:  .LBB83_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -35967,17 +36868,23 @@ define inreg <5 x double> @bitcast_v5i64_to_v5f64_scalar(<5 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v8, s24
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB83_4:
-; VI-NEXT:    s_branch .LBB83_2
 ;
 ; GFX9-LABEL: bitcast_v5i64_to_v5f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s26, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB83_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB83_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB83_3
-; GFX9-NEXT:  .LBB83_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB83_3
+; GFX9-NEXT:  .LBB83_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB83_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB83_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -35988,7 +36895,7 @@ define inreg <5 x double> @bitcast_v5i64_to_v5f64_scalar(<5 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s23, s23, 0
 ; GFX9-NEXT:    s_add_u32 s24, s24, 3
 ; GFX9-NEXT:    s_addc_u32 s25, s25, 0
-; GFX9-NEXT:  .LBB83_3: ; %end
+; GFX9-NEXT:  .LBB83_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -36000,19 +36907,22 @@ define inreg <5 x double> @bitcast_v5i64_to_v5f64_scalar(<5 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s24
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s25
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB83_4:
-; GFX9-NEXT:    s_branch .LBB83_2
 ;
 ; GFX11-LABEL: bitcast_v5i64_to_v5f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s22, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB83_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB83_3
-; GFX11-NEXT:  .LBB83_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB83_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB83_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB83_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -36023,15 +36933,13 @@ define inreg <5 x double> @bitcast_v5i64_to_v5f64_scalar(<5 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX11-NEXT:    s_add_u32 s20, s20, 3
 ; GFX11-NEXT:    s_addc_u32 s21, s21, 0
-; GFX11-NEXT:  .LBB83_3: ; %end
+; GFX11-NEXT:  .LBB83_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB83_4:
-; GFX11-NEXT:    s_branch .LBB83_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.32bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.32bit.ll
index 123d1042e27c9..44c34161a1766 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.32bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.32bit.ll
@@ -81,62 +81,82 @@ define inreg float @bitcast_i32_to_f32_scalar(i32 inreg %a, i32 inreg %b) #0 {
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_i32_to_f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_i32_to_f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_i32_to_f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccz .LBB1_4
-; GFX11-NEXT:  ; %bb.2: ; %end
-; GFX11-NEXT:    v_mov_b32_e32 v0, s0
-; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_3:
-; GFX11-NEXT:  .LBB1_4: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -232,15 +252,21 @@ define inreg i32 @bitcast_f32_to_i32_scalar(float inreg %a, i32 inreg %b) #0 {
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -248,15 +274,21 @@ define inreg i32 @bitcast_f32_to_i32_scalar(float inreg %a, i32 inreg %b) #0 {
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -264,15 +296,21 @@ define inreg i32 @bitcast_f32_to_i32_scalar(float inreg %a, i32 inreg %b) #0 {
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -281,15 +319,18 @@ define inreg i32 @bitcast_f32_to_i32_scalar(float inreg %a, i32 inreg %b) #0 {
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -393,68 +434,88 @@ define inreg <2 x i16> @bitcast_i32_to_v2i16_scalar(i32 inreg %a, i32 inreg %b)
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s5
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_i32_to_v2i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_i32_to_v2i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_i32_to_v2i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccz .LBB5_4
-; GFX11-NEXT:  ; %bb.2: ; %end
-; GFX11-NEXT:    v_mov_b32_e32 v0, s0
-; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_3:
-; GFX11-NEXT:  .LBB5_4: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -573,57 +634,75 @@ define inreg i32 @bitcast_v2i16_to_i32_scalar(<2 x i16> inreg %a, i32 inreg %b)
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s7, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s7, s4, 0x30000
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v2i16_to_i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v2i16_to_i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_4
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_3:
-; GFX9-NEXT:    s_branch .LBB7_2
-; GFX9-NEXT:  .LBB7_4:
+; GFX9-NEXT:  .LBB7_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -632,15 +711,18 @@ define inreg i32 @bitcast_v2i16_to_i32_scalar(<2 x i16> inreg %a, i32 inreg %b)
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_4
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_3:
-; GFX11-NEXT:    s_branch .LBB7_2
 ; GFX11-NEXT:  .LBB7_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -744,68 +826,88 @@ define inreg <2 x half> @bitcast_i32_to_v2f16_scalar(i32 inreg %a, i32 inreg %b)
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s5
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_i32_to_v2f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_i32_to_v2f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_i32_to_v2f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccz .LBB9_4
-; GFX11-NEXT:  ; %bb.2: ; %end
-; GFX11-NEXT:    v_mov_b32_e32 v0, s0
-; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_3:
-; GFX11-NEXT:  .LBB9_4: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -924,13 +1026,22 @@ define inreg i32 @bitcast_v2f16_to_i32_scalar(<2 x half> inreg %a, i32 inreg %b)
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s7, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
@@ -940,10 +1051,7 @@ define inreg i32 @bitcast_v2f16_to_i32_scalar(<2 x half> inreg %a, i32 inreg %b)
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -951,10 +1059,18 @@ define inreg i32 @bitcast_v2f16_to_i32_scalar(<2 x half> inreg %a, i32 inreg %b)
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -962,9 +1078,7 @@ define inreg i32 @bitcast_v2f16_to_i32_scalar(<2 x half> inreg %a, i32 inreg %b)
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v1
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -972,16 +1086,22 @@ define inreg i32 @bitcast_v2f16_to_i32_scalar(<2 x half> inreg %a, i32 inreg %b)
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -990,15 +1110,18 @@ define inreg i32 @bitcast_v2f16_to_i32_scalar(<2 x half> inreg %a, i32 inreg %b)
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -1107,71 +1230,91 @@ define inreg <2 x bfloat> @bitcast_i32_to_v2bf16_scalar(i32 inreg %a, i32 inreg
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s7, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s7, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s16, 16
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s7
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_i32_to_v2bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_i32_to_v2bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB13_3: ; %end
+; GFX9-NEXT:  .LBB13_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_i32_to_v2bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccz .LBB13_4
-; GFX11-NEXT:  ; %bb.2: ; %end
-; GFX11-NEXT:    v_mov_b32_e32 v0, s0
-; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_3:
-; GFX11-NEXT:  .LBB13_4: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB13_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
+; GFX11-NEXT:  .LBB13_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -1385,32 +1528,46 @@ define inreg i32 @bitcast_v2bf16_to_i32_scalar(<2 x bfloat> inreg %a, i32 inreg
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
 ; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[2:3], 16
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v4
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v2
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
-; SI-NEXT:  .LBB15_3: ; %end
+; SI-NEXT:  .LBB15_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v2bf16_to_i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_3
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB15_4
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -1431,9 +1588,7 @@ define inreg i32 @bitcast_v2bf16_to_i32_scalar(<2 x bfloat> inreg %a, i32 inreg
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_lshrrev_b64 v[0:1], 16, v[0:1]
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_3:
-; VI-NEXT:    s_branch .LBB15_2
-; VI-NEXT:  .LBB15_4:
+; VI-NEXT:  .LBB15_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1441,10 +1596,18 @@ define inreg i32 @bitcast_v2bf16_to_i32_scalar(<2 x bfloat> inreg %a, i32 inreg
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -1467,9 +1630,7 @@ define inreg i32 @bitcast_v2bf16_to_i32_scalar(<2 x bfloat> inreg %a, i32 inreg
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v2, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1478,11 +1639,16 @@ define inreg i32 @bitcast_v2bf16_to_i32_scalar(<2 x bfloat> inreg %a, i32 inreg
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-TRUE16-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s1, -1
+; GFX11-TRUE16-NEXT:  .LBB15_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s1, s0, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s1
@@ -1508,8 +1674,6 @@ define inreg i32 @bitcast_v2bf16_to_i32_scalar(<2 x bfloat> inreg %a, i32 inreg
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v2.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB15_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB15_2
 ; GFX11-TRUE16-NEXT:  .LBB15_4:
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -1519,11 +1683,16 @@ define inreg i32 @bitcast_v2bf16_to_i32_scalar(<2 x bfloat> inreg %a, i32 inreg
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-FAKE16-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s1, -1
+; GFX11-FAKE16-NEXT:  .LBB15_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s1, s0, 16
 ; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, 0xffff0000
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s1
@@ -1549,8 +1718,6 @@ define inreg i32 @bitcast_v2bf16_to_i32_scalar(<2 x bfloat> inreg %a, i32 inreg
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB15_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB15_2
 ; GFX11-FAKE16-NEXT:  .LBB15_4:
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -1646,62 +1813,82 @@ define inreg <1 x i32> @bitcast_i32_to_v1i32_scalar(i32 inreg %a, i32 inreg %b)
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_i32_to_v1i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_i32_to_v1i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_i32_to_v1i32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccz .LBB17_4
-; GFX11-NEXT:  ; %bb.2: ; %end
-; GFX11-NEXT:    v_mov_b32_e32 v0, s0
-; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_3:
-; GFX11-NEXT:  .LBB17_4: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB17_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
+; GFX11-NEXT:  .LBB17_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -1797,62 +1984,82 @@ define inreg i32 @bitcast_v1i32_to_i32_scalar(<1 x i32> inreg %a, i32 inreg %b)
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_4
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB19_3
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB19_3: ; %end
+; SI-NEXT:  .LBB19_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB19_4:
-; SI-NEXT:    s_branch .LBB19_2
 ;
 ; VI-LABEL: bitcast_v1i32_to_i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_4
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB19_3
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB19_3: ; %end
+; VI-NEXT:  .LBB19_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB19_4:
-; VI-NEXT:    s_branch .LBB19_2
 ;
 ; GFX9-LABEL: bitcast_v1i32_to_i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_3
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB19_3: ; %end
+; GFX9-NEXT:  .LBB19_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB19_4:
-; GFX9-NEXT:    s_branch .LBB19_2
 ;
 ; GFX11-LABEL: bitcast_v1i32_to_i32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccz .LBB19_4
-; GFX11-NEXT:  ; %bb.2: ; %end
-; GFX11-NEXT:    v_mov_b32_e32 v0, s0
-; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:  .LBB19_4: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
+; GFX11-NEXT:  .LBB19_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -2044,111 +2251,134 @@ define inreg <4 x i8> @bitcast_i32_to_v4i8_scalar(i32 inreg %a, i32 inreg %b) #0
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_4
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s6, s16, 24
 ; SI-NEXT:    s_lshr_b32 s7, s16, 16
 ; SI-NEXT:    s_lshr_b32 s8, s16, 8
-; SI-NEXT:    s_cbranch_execnz .LBB21_3
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_lshr_b32 s7, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s16, 24
 ; SI-NEXT:    s_lshr_b32 s8, s16, 8
-; SI-NEXT:  .LBB21_3: ; %end
+; SI-NEXT:  .LBB21_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s8
 ; SI-NEXT:    v_mov_b32_e32 v2, s7
 ; SI-NEXT:    v_mov_b32_e32 v3, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB21_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB21_2
 ;
 ; VI-LABEL: bitcast_i32_to_v4i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_4
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s6, s16, 24
 ; VI-NEXT:    s_lshr_b32 s7, s16, 16
 ; VI-NEXT:    s_lshr_b32 s8, s16, 8
-; VI-NEXT:    s_cbranch_execnz .LBB21_3
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr7
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_lshr_b32 s7, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s16, 24
 ; VI-NEXT:    s_lshr_b32 s8, s16, 8
-; VI-NEXT:  .LBB21_3: ; %end
+; VI-NEXT:  .LBB21_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s8
 ; VI-NEXT:    v_mov_b32_e32 v2, s7
 ; VI-NEXT:    v_mov_b32_e32 v3, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB21_4:
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr7
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    s_branch .LBB21_2
 ;
 ; GFX9-LABEL: bitcast_i32_to_v4i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s6, s16, 24
 ; GFX9-NEXT:    s_lshr_b32 s7, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s8, s16, 8
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_3
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr7
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    s_lshr_b32 s7, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s6, s16, 24
 ; GFX9-NEXT:    s_lshr_b32 s8, s16, 8
-; GFX9-NEXT:  .LBB21_3: ; %end
+; GFX9-NEXT:  .LBB21_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB21_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr7
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    s_branch .LBB21_2
 ;
 ; GFX11-LABEL: bitcast_i32_to_v4i8_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s1, s0, 24
 ; GFX11-NEXT:    s_lshr_b32 s2, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s3, s0, 8
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_3
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB21_3
+; GFX11-NEXT:  .LBB21_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr3
+; GFX11-NEXT:    ; implicit-def: $sgpr2
+; GFX11-NEXT:    ; implicit-def: $sgpr1
+; GFX11-NEXT:  .LBB21_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_lshr_b32 s2, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s1, s0, 24
 ; GFX11-NEXT:    s_lshr_b32 s3, s0, 8
-; GFX11-NEXT:  .LBB21_3: ; %end
+; GFX11-NEXT:  .LBB21_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB21_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr3
-; GFX11-NEXT:    ; implicit-def: $sgpr2
-; GFX11-NEXT:    ; implicit-def: $sgpr1
-; GFX11-NEXT:    s_branch .LBB21_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2406,7 +2636,7 @@ define inreg i32 @bitcast_v4i8_to_i32_scalar(<4 x i8> inreg %a, i32 inreg %b) #0
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -2417,8 +2647,17 @@ define inreg i32 @bitcast_v4i8_to_i32_scalar(<4 x i8> inreg %a, i32 inreg %b) #0
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_or_b32 s6, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -2432,18 +2671,15 @@ define inreg i32 @bitcast_v4i8_to_i32_scalar(<4 x i8> inreg %a, i32 inreg %b) #0
 ; SI-NEXT:    s_or_b32 s5, s5, s6
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s6, s4, 0x3000000
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v4i8_to_i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_4
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -2452,8 +2688,17 @@ define inreg i32 @bitcast_v4i8_to_i32_scalar(<4 x i8> inreg %a, i32 inreg %b) #0
 ; VI-NEXT:    v_perm_b32 v1, s18, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v1
-; VI-NEXT:    s_cbranch_execnz .LBB23_3
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -2465,17 +2710,14 @@ define inreg i32 @bitcast_v4i8_to_i32_scalar(<4 x i8> inreg %a, i32 inreg %b) #0
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
-; VI-NEXT:  .LBB23_3: ; %end
+; VI-NEXT:  .LBB23_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_4:
-; VI-NEXT:    ; implicit-def: $vgpr0
-; VI-NEXT:    s_branch .LBB23_2
 ;
 ; GFX9-LABEL: bitcast_v4i8_to_i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -2484,8 +2726,17 @@ define inreg i32 @bitcast_v4i8_to_i32_scalar(<4 x i8> inreg %a, i32 inreg %b) #0
 ; GFX9-NEXT:    v_perm_b32 v1, s18, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_or_b32_e32 v0, v0, v1
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_3
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -2497,18 +2748,15 @@ define inreg i32 @bitcast_v4i8_to_i32_scalar(<4 x i8> inreg %a, i32 inreg %b) #0
 ; GFX9-NEXT:    v_add_u32_e32 v0, 0x300, v0
 ; GFX9-NEXT:    v_add_u32_sdwa v1, v1, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB23_3: ; %end
+; GFX9-NEXT:  .LBB23_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0
-; GFX9-NEXT:    s_branch .LBB23_2
 ;
 ; GFX11-LABEL: bitcast_v4i8_to_i32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
@@ -2517,9 +2765,17 @@ define inreg i32 @bitcast_v4i8_to_i32_scalar(<4 x i8> inreg %a, i32 inreg %b) #0
 ; GFX11-NEXT:    v_perm_b32 v0, s0, s1, v0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v1
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_3
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB23_3
+; GFX11-NEXT:  .LBB23_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0
+; GFX11-NEXT:  .LBB23_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -2533,11 +2789,8 @@ define inreg i32 @bitcast_v4i8_to_i32_scalar(<4 x i8> inreg %a, i32 inreg %b) #0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; GFX11-NEXT:    v_or_b32_e32 v0, v1, v0
-; GFX11-NEXT:  .LBB23_3: ; %end
+; GFX11-NEXT:  .LBB23_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0
-; GFX11-NEXT:    s_branch .LBB23_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2638,21 +2891,27 @@ define inreg <2 x i16> @bitcast_f32_to_v2i16_scalar(float inreg %a, i32 inreg %b
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_3
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB25_4
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
-; SI-NEXT:    s_branch .LBB25_5
-; SI-NEXT:  .LBB25_3:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB25_2
-; SI-NEXT:  .LBB25_4:
+; SI-NEXT:    s_branch .LBB25_6
+; SI-NEXT:  .LBB25_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s6
-; SI-NEXT:  .LBB25_5: ; %end
+; SI-NEXT:  .LBB25_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v1
@@ -2662,15 +2921,21 @@ define inreg <2 x i16> @bitcast_f32_to_v2i16_scalar(float inreg %a, i32 inreg %b
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_3
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB25_4
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB25_3:
-; VI-NEXT:    s_branch .LBB25_2
-; VI-NEXT:  .LBB25_4:
+; VI-NEXT:  .LBB25_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2678,15 +2943,21 @@ define inreg <2 x i16> @bitcast_f32_to_v2i16_scalar(float inreg %a, i32 inreg %b
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_4
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB25_3:
-; GFX9-NEXT:    s_branch .LBB25_2
-; GFX9-NEXT:  .LBB25_4:
+; GFX9-NEXT:  .LBB25_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2695,15 +2966,18 @@ define inreg <2 x i16> @bitcast_f32_to_v2i16_scalar(float inreg %a, i32 inreg %b
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_4
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB25_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB25_3:
-; GFX11-NEXT:    s_branch .LBB25_2
 ; GFX11-NEXT:  .LBB25_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -2822,57 +3096,75 @@ define inreg float @bitcast_v2i16_to_f32_scalar(<2 x i16> inreg %a, i32 inreg %b
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB27_4
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s7, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB27_3
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s7, s4, 0x30000
-; SI-NEXT:  .LBB27_3: ; %end
+; SI-NEXT:  .LBB27_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB27_4:
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB27_2
 ;
 ; VI-LABEL: bitcast_v2i16_to_f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_4
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB27_3
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB27_3: ; %end
+; VI-NEXT:  .LBB27_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB27_4:
-; VI-NEXT:    s_branch .LBB27_2
 ;
 ; GFX9-LABEL: bitcast_v2i16_to_f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_4
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB27_3:
-; GFX9-NEXT:    s_branch .LBB27_2
-; GFX9-NEXT:  .LBB27_4:
+; GFX9-NEXT:  .LBB27_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2881,15 +3173,18 @@ define inreg float @bitcast_v2i16_to_f32_scalar(<2 x i16> inreg %a, i32 inreg %b
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_4
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB27_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB27_3:
-; GFX11-NEXT:    s_branch .LBB27_2
 ; GFX11-NEXT:  .LBB27_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -2993,21 +3288,27 @@ define inreg <2 x half> @bitcast_f32_to_v2f16_scalar(float inreg %a, i32 inreg %
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
-; SI-NEXT:    s_branch .LBB29_5
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:    s_branch .LBB29_6
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s6
-; SI-NEXT:  .LBB29_5: ; %end
+; SI-NEXT:  .LBB29_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v1
@@ -3017,15 +3318,21 @@ define inreg <2 x half> @bitcast_f32_to_v2f16_scalar(float inreg %a, i32 inreg %
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3033,15 +3340,21 @@ define inreg <2 x half> @bitcast_f32_to_v2f16_scalar(float inreg %a, i32 inreg %
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3050,15 +3363,18 @@ define inreg <2 x half> @bitcast_f32_to_v2f16_scalar(float inreg %a, i32 inreg %
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB29_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB29_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB29_3:
-; GFX11-NEXT:    s_branch .LBB29_2
 ; GFX11-NEXT:  .LBB29_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -3177,13 +3493,22 @@ define inreg float @bitcast_v2f16_to_f32_scalar(<2 x half> inreg %a, i32 inreg %
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_3
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s7, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB31_4
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
@@ -3193,10 +3518,7 @@ define inreg float @bitcast_v2f16_to_f32_scalar(<2 x half> inreg %a, i32 inreg %
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_3:
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB31_2
-; SI-NEXT:  .LBB31_4:
+; SI-NEXT:  .LBB31_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3204,10 +3526,18 @@ define inreg float @bitcast_v2f16_to_f32_scalar(<2 x half> inreg %a, i32 inreg %
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_3
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB31_4
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -3215,9 +3545,7 @@ define inreg float @bitcast_v2f16_to_f32_scalar(<2 x half> inreg %a, i32 inreg %
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v1
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_3:
-; VI-NEXT:    s_branch .LBB31_2
-; VI-NEXT:  .LBB31_4:
+; VI-NEXT:  .LBB31_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3225,16 +3553,22 @@ define inreg float @bitcast_v2f16_to_f32_scalar(<2 x half> inreg %a, i32 inreg %
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_4
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB31_3:
-; GFX9-NEXT:    s_branch .LBB31_2
-; GFX9-NEXT:  .LBB31_4:
+; GFX9-NEXT:  .LBB31_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3243,15 +3577,18 @@ define inreg float @bitcast_v2f16_to_f32_scalar(<2 x half> inreg %a, i32 inreg %
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_4
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_3:
-; GFX11-NEXT:    s_branch .LBB31_2
 ; GFX11-NEXT:  .LBB31_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -3360,24 +3697,30 @@ define inreg <2 x bfloat> @bitcast_f32_to_v2bf16_scalar(float inreg %a, i32 inre
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s6, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s7, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
-; SI-NEXT:    s_branch .LBB33_5
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:    s_branch .LBB33_6
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s7
 ; SI-NEXT:    v_mov_b32_e32 v1, s6
-; SI-NEXT:  .LBB33_5: ; %end
+; SI-NEXT:  .LBB33_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
@@ -3388,15 +3731,21 @@ define inreg <2 x bfloat> @bitcast_f32_to_v2bf16_scalar(float inreg %a, i32 inre
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3404,15 +3753,21 @@ define inreg <2 x bfloat> @bitcast_f32_to_v2bf16_scalar(float inreg %a, i32 inre
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3421,15 +3776,18 @@ define inreg <2 x bfloat> @bitcast_f32_to_v2bf16_scalar(float inreg %a, i32 inre
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB33_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB33_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB33_3:
-; GFX11-NEXT:    s_branch .LBB33_2
 ; GFX11-NEXT:  .LBB33_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -3643,32 +4001,46 @@ define inreg float @bitcast_v2bf16_to_f32_scalar(<2 x bfloat> inreg %a, i32 inre
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
 ; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB35_4
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[2:3], 16
-; SI-NEXT:    s_cbranch_execnz .LBB35_3
-; SI-NEXT:  .LBB35_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v4
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v2
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
-; SI-NEXT:  .LBB35_3: ; %end
+; SI-NEXT:  .LBB35_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB35_4:
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    s_branch .LBB35_2
 ;
 ; VI-LABEL: bitcast_v2bf16_to_f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -3689,9 +4061,7 @@ define inreg float @bitcast_v2bf16_to_f32_scalar(<2 x bfloat> inreg %a, i32 inre
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_lshrrev_b64 v[0:1], 16, v[0:1]
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3699,10 +4069,18 @@ define inreg float @bitcast_v2bf16_to_f32_scalar(<2 x bfloat> inreg %a, i32 inre
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -3725,9 +4103,7 @@ define inreg float @bitcast_v2bf16_to_f32_scalar(<2 x bfloat> inreg %a, i32 inre
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v2, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3736,11 +4112,16 @@ define inreg float @bitcast_v2bf16_to_f32_scalar(<2 x bfloat> inreg %a, i32 inre
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-TRUE16-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s1, -1
+; GFX11-TRUE16-NEXT:  .LBB35_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s1, s0, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s1
@@ -3766,8 +4147,6 @@ define inreg float @bitcast_v2bf16_to_f32_scalar(<2 x bfloat> inreg %a, i32 inre
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v2.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB35_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB35_2
 ; GFX11-TRUE16-NEXT:  .LBB35_4:
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -3777,11 +4156,16 @@ define inreg float @bitcast_v2bf16_to_f32_scalar(<2 x bfloat> inreg %a, i32 inre
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-FAKE16-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s1, -1
+; GFX11-FAKE16-NEXT:  .LBB35_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s1, s0, 16
 ; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, 0xffff0000
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s1
@@ -3807,8 +4191,6 @@ define inreg float @bitcast_v2bf16_to_f32_scalar(<2 x bfloat> inreg %a, i32 inre
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB35_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB35_2
 ; GFX11-FAKE16-NEXT:  .LBB35_4:
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -3904,15 +4286,21 @@ define inreg <1 x i32> @bitcast_f32_to_v1i32_scalar(float inreg %a, i32 inreg %b
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_3
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB37_4
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB37_3:
-; SI-NEXT:    s_branch .LBB37_2
-; SI-NEXT:  .LBB37_4:
+; SI-NEXT:  .LBB37_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3920,15 +4308,21 @@ define inreg <1 x i32> @bitcast_f32_to_v1i32_scalar(float inreg %a, i32 inreg %b
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_3
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_4
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_3:
-; VI-NEXT:    s_branch .LBB37_2
-; VI-NEXT:  .LBB37_4:
+; VI-NEXT:  .LBB37_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3936,15 +4330,21 @@ define inreg <1 x i32> @bitcast_f32_to_v1i32_scalar(float inreg %a, i32 inreg %b
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_4
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_3:
-; GFX9-NEXT:    s_branch .LBB37_2
-; GFX9-NEXT:  .LBB37_4:
+; GFX9-NEXT:  .LBB37_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3953,15 +4353,18 @@ define inreg <1 x i32> @bitcast_f32_to_v1i32_scalar(float inreg %a, i32 inreg %b
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_4
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_3:
-; GFX11-NEXT:    s_branch .LBB37_2
 ; GFX11-NEXT:  .LBB37_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -4057,62 +4460,82 @@ define inreg float @bitcast_v1i32_to_f32_scalar(<1 x i32> inreg %a, i32 inreg %b
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_4
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB39_3
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB39_3: ; %end
+; SI-NEXT:  .LBB39_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB39_4:
-; SI-NEXT:    s_branch .LBB39_2
 ;
 ; VI-LABEL: bitcast_v1i32_to_f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_4
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_3
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB39_3: ; %end
+; VI-NEXT:  .LBB39_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB39_4:
-; VI-NEXT:    s_branch .LBB39_2
 ;
 ; GFX9-LABEL: bitcast_v1i32_to_f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_3
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB39_3: ; %end
+; GFX9-NEXT:  .LBB39_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB39_4:
-; GFX9-NEXT:    s_branch .LBB39_2
 ;
 ; GFX11-LABEL: bitcast_v1i32_to_f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccz .LBB39_4
-; GFX11-NEXT:  ; %bb.2: ; %end
-; GFX11-NEXT:    v_mov_b32_e32 v0, s0
-; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB39_3:
-; GFX11-NEXT:  .LBB39_4: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
+; GFX11-NEXT:  .LBB39_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -4304,24 +4727,30 @@ define inreg <4 x i8> @bitcast_f32_to_v4i8_scalar(float inreg %a, i32 inreg %b)
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_3
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s7, s16, 24
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_lshr_b32 s8, s16, 8
-; SI-NEXT:    s_cbranch_execnz .LBB41_4
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 24, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 8, v0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB41_3:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB41_2
-; SI-NEXT:  .LBB41_4:
+; SI-NEXT:  .LBB41_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s8
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
@@ -4332,24 +4761,30 @@ define inreg <4 x i8> @bitcast_f32_to_v4i8_scalar(float inreg %a, i32 inreg %b)
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_3
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s7, s16, 24
 ; VI-NEXT:    s_lshr_b32 s6, s16, 16
 ; VI-NEXT:    s_lshr_b32 s8, s16, 8
-; VI-NEXT:    s_cbranch_execnz .LBB41_4
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr7
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 24, v0
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 8, v0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_3:
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr7
-; VI-NEXT:    s_branch .LBB41_2
-; VI-NEXT:  .LBB41_4:
+; VI-NEXT:  .LBB41_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s8
 ; VI-NEXT:    v_mov_b32_e32 v3, s7
@@ -4360,24 +4795,30 @@ define inreg <4 x i8> @bitcast_f32_to_v4i8_scalar(float inreg %a, i32 inreg %b)
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s7, s16, 24
 ; GFX9-NEXT:    s_lshr_b32 s6, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s8, s16, 8
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_4
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr7
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v3, 24, v0
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr7
-; GFX9-NEXT:    s_branch .LBB41_2
-; GFX9-NEXT:  .LBB41_4:
+; GFX9-NEXT:  .LBB41_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
@@ -4388,29 +4829,34 @@ define inreg <4 x i8> @bitcast_f32_to_v4i8_scalar(float inreg %a, i32 inreg %b)
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
-; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_3
+; GFX11-NEXT:    s_mov_b32 s3, 0
+; GFX11-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-NEXT:    s_lshr_b32 s3, s0, 24
-; GFX11-NEXT:    s_lshr_b32 s2, s0, 16
+; GFX11-NEXT:    s_lshr_b32 s2, s0, 24
+; GFX11-NEXT:    s_lshr_b32 s1, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s4, s0, 8
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_4
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB41_3
+; GFX11-NEXT:  .LBB41_2:
+; GFX11-NEXT:    s_mov_b32 s3, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr1
+; GFX11-NEXT:    ; implicit-def: $sgpr2
+; GFX11-NEXT:  .LBB41_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v3, 24, v0
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr2
-; GFX11-NEXT:    ; implicit-def: $sgpr3
-; GFX11-NEXT:    s_branch .LBB41_2
-; GFX11-NEXT:  .LBB41_4:
+; GFX11-NEXT:  .LBB41_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s4
-; GFX11-NEXT:    v_dual_mov_b32 v3, s3 :: v_dual_mov_b32 v2, s2
+; GFX11-NEXT:    v_dual_mov_b32 v3, s2 :: v_dual_mov_b32 v2, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
@@ -4669,7 +5115,7 @@ define inreg float @bitcast_v4i8_to_f32_scalar(<4 x i8> inreg %a, i32 inreg %b)
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_4
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -4680,8 +5126,17 @@ define inreg float @bitcast_v4i8_to_f32_scalar(<4 x i8> inreg %a, i32 inreg %b)
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_or_b32 s6, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB43_3
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -4695,18 +5150,15 @@ define inreg float @bitcast_v4i8_to_f32_scalar(<4 x i8> inreg %a, i32 inreg %b)
 ; SI-NEXT:    s_or_b32 s5, s5, s6
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s6, s4, 0x3000000
-; SI-NEXT:  .LBB43_3: ; %end
+; SI-NEXT:  .LBB43_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB43_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB43_2
 ;
 ; VI-LABEL: bitcast_v4i8_to_f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_4
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -4715,8 +5167,17 @@ define inreg float @bitcast_v4i8_to_f32_scalar(<4 x i8> inreg %a, i32 inreg %b)
 ; VI-NEXT:    v_perm_b32 v1, s18, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v1
-; VI-NEXT:    s_cbranch_execnz .LBB43_3
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -4728,17 +5189,14 @@ define inreg float @bitcast_v4i8_to_f32_scalar(<4 x i8> inreg %a, i32 inreg %b)
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
-; VI-NEXT:  .LBB43_3: ; %end
+; VI-NEXT:  .LBB43_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_4:
-; VI-NEXT:    ; implicit-def: $vgpr0
-; VI-NEXT:    s_branch .LBB43_2
 ;
 ; GFX9-LABEL: bitcast_v4i8_to_f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -4747,8 +5205,17 @@ define inreg float @bitcast_v4i8_to_f32_scalar(<4 x i8> inreg %a, i32 inreg %b)
 ; GFX9-NEXT:    v_perm_b32 v1, s18, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_or_b32_e32 v0, v0, v1
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_3
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -4760,18 +5227,15 @@ define inreg float @bitcast_v4i8_to_f32_scalar(<4 x i8> inreg %a, i32 inreg %b)
 ; GFX9-NEXT:    v_add_u32_e32 v0, 0x300, v0
 ; GFX9-NEXT:    v_add_u32_sdwa v1, v1, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB43_3: ; %end
+; GFX9-NEXT:  .LBB43_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB43_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0
-; GFX9-NEXT:    s_branch .LBB43_2
 ;
 ; GFX11-LABEL: bitcast_v4i8_to_f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
@@ -4780,9 +5244,17 @@ define inreg float @bitcast_v4i8_to_f32_scalar(<4 x i8> inreg %a, i32 inreg %b)
 ; GFX11-NEXT:    v_perm_b32 v0, s0, s1, v0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v1
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_3
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB43_3
+; GFX11-NEXT:  .LBB43_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0
+; GFX11-NEXT:  .LBB43_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -4796,11 +5268,8 @@ define inreg float @bitcast_v4i8_to_f32_scalar(<4 x i8> inreg %a, i32 inreg %b)
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; GFX11-NEXT:    v_or_b32_e32 v0, v1, v0
-; GFX11-NEXT:  .LBB43_3: ; %end
+; GFX11-NEXT:  .LBB43_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0
-; GFX11-NEXT:    s_branch .LBB43_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -4913,61 +5382,79 @@ define inreg <2 x half> @bitcast_v2i16_to_v2f16_scalar(<2 x i16> inreg %a, i32 i
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_4
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s7, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB45_3
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s5, s6, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s5, 16
 ; SI-NEXT:    s_or_b32 s7, s4, s6
 ; SI-NEXT:    s_and_b32 s6, s5, 0xffff
-; SI-NEXT:  .LBB45_3: ; %end
+; SI-NEXT:  .LBB45_5: ; %end
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s5
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB45_4:
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB45_2
 ;
 ; VI-LABEL: bitcast_v2i16_to_v2f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_4
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB45_3
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB45_3: ; %end
+; VI-NEXT:  .LBB45_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_4:
-; VI-NEXT:    s_branch .LBB45_2
 ;
 ; GFX9-LABEL: bitcast_v2i16_to_v2f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_4
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_3:
-; GFX9-NEXT:    s_branch .LBB45_2
-; GFX9-NEXT:  .LBB45_4:
+; GFX9-NEXT:  .LBB45_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -4976,15 +5463,18 @@ define inreg <2 x half> @bitcast_v2i16_to_v2f16_scalar(<2 x i16> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_4
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB45_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_3:
-; GFX11-NEXT:    s_branch .LBB45_2
 ; GFX11-NEXT:  .LBB45_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -5097,10 +5587,18 @@ define inreg <2 x i16> @bitcast_v2f16_to_v2i16_scalar(<2 x half> inreg %a, i32 i
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB47_3
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB47_4
-; SI-NEXT:  .LBB47_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
@@ -5109,13 +5607,11 @@ define inreg <2 x i16> @bitcast_v2f16_to_v2i16_scalar(<2 x half> inreg %a, i32 i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v1, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v2
-; SI-NEXT:    s_branch .LBB47_5
-; SI-NEXT:  .LBB47_3:
-; SI-NEXT:    s_branch .LBB47_2
-; SI-NEXT:  .LBB47_4:
+; SI-NEXT:    s_branch .LBB47_6
+; SI-NEXT:  .LBB47_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s6
 ; SI-NEXT:    v_mov_b32_e32 v1, s16
-; SI-NEXT:  .LBB47_5: ; %end
+; SI-NEXT:  .LBB47_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
@@ -5125,10 +5621,18 @@ define inreg <2 x i16> @bitcast_v2f16_to_v2i16_scalar(<2 x half> inreg %a, i32 i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v2, s4
@@ -5136,9 +5640,7 @@ define inreg <2 x i16> @bitcast_v2f16_to_v2i16_scalar(<2 x half> inreg %a, i32 i
 ; VI-NEXT:    v_add_f16_sdwa v0, v2, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5146,16 +5648,22 @@ define inreg <2 x i16> @bitcast_v2f16_to_v2i16_scalar(<2 x half> inreg %a, i32 i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5164,15 +5672,18 @@ define inreg <2 x i16> @bitcast_v2f16_to_v2i16_scalar(<2 x half> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB47_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB47_3:
-; GFX11-NEXT:    s_branch .LBB47_2
 ; GFX11-NEXT:  .LBB47_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -5280,59 +5791,77 @@ define inreg <2 x bfloat> @bitcast_v2i16_to_v2bf16_scalar(<2 x i16> inreg %a, i3
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b32 s7, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_4
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s6, s16, 16
 ; SI-NEXT:    s_lshl_b32 s8, s7, 16
-; SI-NEXT:    s_cbranch_execnz .LBB49_3
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_lshl_b32 s4, s7, 16
 ; SI-NEXT:    s_lshl_b32 s5, s16, 16
 ; SI-NEXT:    s_add_i32 s6, s5, 0x30000
 ; SI-NEXT:    s_add_i32 s8, s4, 0x30000
-; SI-NEXT:  .LBB49_3: ; %end
+; SI-NEXT:  .LBB49_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s8
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB49_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB49_2
 ;
 ; VI-LABEL: bitcast_v2i16_to_v2bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_4
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB49_3
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB49_3: ; %end
+; VI-NEXT:  .LBB49_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB49_4:
-; VI-NEXT:    s_branch .LBB49_2
 ;
 ; GFX9-LABEL: bitcast_v2i16_to_v2bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5341,15 +5870,18 @@ define inreg <2 x bfloat> @bitcast_v2i16_to_v2bf16_scalar(<2 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB49_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB49_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB49_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB49_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB49_3:
-; GFX11-NEXT:    s_branch .LBB49_2
 ; GFX11-NEXT:  .LBB49_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -5554,36 +6086,50 @@ define inreg <2 x i16> @bitcast_v2bf16_to_v2i16_scalar(<2 x bfloat> inreg %a, i3
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s5
 ; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s4
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v3
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr2
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v3
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[0:1], 16
-; SI-NEXT:  .LBB51_3: ; %end
+; SI-NEXT:  .LBB51_5: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v1
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $vgpr2
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v2bf16_to_v2i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_3
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB51_4
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -5604,9 +6150,7 @@ define inreg <2 x i16> @bitcast_v2bf16_to_v2i16_scalar(<2 x bfloat> inreg %a, i3
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_lshrrev_b64 v[0:1], 16, v[0:1]
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_3:
-; VI-NEXT:    s_branch .LBB51_2
-; VI-NEXT:  .LBB51_4:
+; VI-NEXT:  .LBB51_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5614,10 +6158,18 @@ define inreg <2 x i16> @bitcast_v2bf16_to_v2i16_scalar(<2 x bfloat> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_4
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -5639,9 +6191,7 @@ define inreg <2 x i16> @bitcast_v2bf16_to_v2i16_scalar(<2 x bfloat> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xffff0000
 ; GFX9-NEXT:    v_and_or_b32 v0, v1, v2, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB51_3:
-; GFX9-NEXT:    s_branch .LBB51_2
-; GFX9-NEXT:  .LBB51_4:
+; GFX9-NEXT:  .LBB51_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5650,11 +6200,16 @@ define inreg <2 x i16> @bitcast_v2bf16_to_v2i16_scalar(<2 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB51_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB51_4
-; GFX11-TRUE16-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB51_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s1, -1
+; GFX11-TRUE16-NEXT:  .LBB51_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB51_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s0, 16
 ; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, 0xffff0000
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s1
@@ -5676,8 +6231,6 @@ define inreg <2 x i16> @bitcast_v2bf16_to_v2i16_scalar(<2 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.h
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB51_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB51_2
 ; GFX11-TRUE16-NEXT:  .LBB51_4:
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -5687,11 +6240,16 @@ define inreg <2 x i16> @bitcast_v2bf16_to_v2i16_scalar(<2 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB51_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB51_4
-; GFX11-FAKE16-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB51_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s1, -1
+; GFX11-FAKE16-NEXT:  .LBB51_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB51_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s1, s0, 16
 ; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, 0xffff0000
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s1
@@ -5715,8 +6273,6 @@ define inreg <2 x i16> @bitcast_v2bf16_to_v2i16_scalar(<2 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v1, v3, v5, vcc_lo
 ; GFX11-FAKE16-NEXT:    v_and_or_b32 v0, 0xffff0000, v1, v0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB51_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB51_2
 ; GFX11-FAKE16-NEXT:  .LBB51_4:
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -5835,57 +6391,75 @@ define inreg <1 x i32> @bitcast_v2i16_to_v1i32_scalar(<2 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_4
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s7, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB53_3
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s7, s4, 0x30000
-; SI-NEXT:  .LBB53_3: ; %end
+; SI-NEXT:  .LBB53_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB53_4:
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB53_2
 ;
 ; VI-LABEL: bitcast_v2i16_to_v1i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_4
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB53_3
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB53_3: ; %end
+; VI-NEXT:  .LBB53_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB53_4:
-; VI-NEXT:    s_branch .LBB53_2
 ;
 ; GFX9-LABEL: bitcast_v2i16_to_v1i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_4
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB53_3:
-; GFX9-NEXT:    s_branch .LBB53_2
-; GFX9-NEXT:  .LBB53_4:
+; GFX9-NEXT:  .LBB53_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5894,15 +6468,18 @@ define inreg <1 x i32> @bitcast_v2i16_to_v1i32_scalar(<2 x i16> inreg %a, i32 in
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB53_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB53_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB53_3:
-; GFX11-NEXT:    s_branch .LBB53_2
 ; GFX11-NEXT:  .LBB53_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -6006,68 +6583,88 @@ define inreg <2 x i16> @bitcast_v1i32_to_v2i16_scalar(<1 x i32> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_4
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB55_3
-; SI-NEXT:  .LBB55_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
-; SI-NEXT:  .LBB55_3: ; %end
+; SI-NEXT:  .LBB55_5: ; %end
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s5
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB55_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB55_2
 ;
 ; VI-LABEL: bitcast_v1i32_to_v2i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_4
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB55_3
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB55_3: ; %end
+; VI-NEXT:  .LBB55_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB55_4:
-; VI-NEXT:    s_branch .LBB55_2
 ;
 ; GFX9-LABEL: bitcast_v1i32_to_v2i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_3
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB55_3: ; %end
+; GFX9-NEXT:  .LBB55_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB55_4:
-; GFX9-NEXT:    s_branch .LBB55_2
 ;
 ; GFX11-LABEL: bitcast_v1i32_to_v2i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccz .LBB55_4
-; GFX11-NEXT:  ; %bb.2: ; %end
-; GFX11-NEXT:    v_mov_b32_e32 v0, s0
-; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:  .LBB55_4: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
+; GFX11-NEXT:  .LBB55_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -6275,15 +6872,26 @@ define inreg <4 x i8> @bitcast_v2i16_to_v4i8_scalar(<2 x i16> inreg %a, i32 inre
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s7, s4, s5
 ; SI-NEXT:    s_lshr_b32 s8, s7, 8
 ; SI-NEXT:    s_bfe_u32 s9, s6, 0x80008
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s5, s6, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
@@ -6292,30 +6900,37 @@ define inreg <4 x i8> @bitcast_v2i16_to_v4i8_scalar(<2 x i16> inreg %a, i32 inre
 ; SI-NEXT:    s_lshr_b32 s8, s7, 8
 ; SI-NEXT:    s_and_b32 s6, s5, 0xffff
 ; SI-NEXT:    s_bfe_u32 s9, s5, 0x80008
-; SI-NEXT:  .LBB57_3: ; %end
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s7
 ; SI-NEXT:    v_mov_b32_e32 v1, s8
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    v_mov_b32_e32 v3, s9
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v2i16_to_v4i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s8, s16, 24
 ; VI-NEXT:    s_lshr_b32 s6, s16, 16
 ; VI-NEXT:    s_lshr_b32 s9, s16, 8
+; VI-NEXT:    s_mov_b64 s[4:5], 0
 ; VI-NEXT:    s_mov_b32 s7, s16
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr7
+; VI-NEXT:    ; implicit-def: $sgpr9
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s5, s16, 16
 ; VI-NEXT:    s_add_i32 s7, s16, 3
 ; VI-NEXT:    s_add_i32 s6, s5, 3
@@ -6324,41 +6939,41 @@ define inreg <4 x i8> @bitcast_v2i16_to_v4i8_scalar(<2 x i16> inreg %a, i32 inre
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_lshr_b32 s9, s4, 8
 ; VI-NEXT:    s_bfe_u32 s8, s6, 0x80008
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s7
 ; VI-NEXT:    v_mov_b32_e32 v1, s9
 ; VI-NEXT:    v_mov_b32_e32 v2, s6
 ; VI-NEXT:    v_mov_b32_e32 v3, s8
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    ; implicit-def: $sgpr7
-; VI-NEXT:    ; implicit-def: $sgpr9
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v2i16_to_v4i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s7, s16, 24
 ; GFX9-NEXT:    s_lshr_b32 s6, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s8, s16, 8
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_4
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr7
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v3, 24, v0
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB57_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr7
-; GFX9-NEXT:    s_branch .LBB57_2
-; GFX9-NEXT:  .LBB57_4:
+; GFX9-NEXT:  .LBB57_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
@@ -6369,29 +6984,34 @@ define inreg <4 x i8> @bitcast_v2i16_to_v4i8_scalar(<2 x i16> inreg %a, i32 inre
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
-; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB57_3
+; GFX11-NEXT:    s_mov_b32 s3, 0
+; GFX11-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-NEXT:    s_lshr_b32 s3, s0, 24
-; GFX11-NEXT:    s_lshr_b32 s2, s0, 16
+; GFX11-NEXT:    s_lshr_b32 s2, s0, 24
+; GFX11-NEXT:    s_lshr_b32 s1, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s4, s0, 8
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB57_3
+; GFX11-NEXT:  .LBB57_2:
+; GFX11-NEXT:    s_mov_b32 s3, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr1
+; GFX11-NEXT:    ; implicit-def: $sgpr2
+; GFX11-NEXT:  .LBB57_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v3, 24, v0
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB57_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr2
-; GFX11-NEXT:    ; implicit-def: $sgpr3
-; GFX11-NEXT:    s_branch .LBB57_2
-; GFX11-NEXT:  .LBB57_4:
+; GFX11-NEXT:  .LBB57_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s4
-; GFX11-NEXT:    v_dual_mov_b32 v3, s3 :: v_dual_mov_b32 v2, s2
+; GFX11-NEXT:    v_dual_mov_b32 v3, s2 :: v_dual_mov_b32 v2, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
@@ -6650,7 +7270,7 @@ define inreg <2 x i16> @bitcast_v4i8_to_v2i16_scalar(<4 x i8> inreg %a, i32 inre
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_4
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -6662,8 +7282,18 @@ define inreg <2 x i16> @bitcast_v4i8_to_v2i16_scalar(<4 x i8> inreg %a, i32 inre
 ; SI-NEXT:    s_lshl_b32 s6, s5, 16
 ; SI-NEXT:    s_or_b32 s6, s4, s6
 ; SI-NEXT:    s_and_b32 s7, s5, 0xffff
-; SI-NEXT:    s_cbranch_execnz .LBB59_3
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -6678,22 +7308,18 @@ define inreg <2 x i16> @bitcast_v4i8_to_v2i16_scalar(<4 x i8> inreg %a, i32 inre
 ; SI-NEXT:    s_lshl_b32 s6, s5, 16
 ; SI-NEXT:    s_or_b32 s6, s4, s6
 ; SI-NEXT:    s_and_b32 s7, s5, 0xffff
-; SI-NEXT:  .LBB59_3: ; %end
+; SI-NEXT:  .LBB59_5: ; %end
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s5
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB59_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB59_2
 ;
 ; VI-LABEL: bitcast_v4i8_to_v2i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_4
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -6702,8 +7328,17 @@ define inreg <2 x i16> @bitcast_v4i8_to_v2i16_scalar(<4 x i8> inreg %a, i32 inre
 ; VI-NEXT:    v_perm_b32 v1, s18, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v1
-; VI-NEXT:    s_cbranch_execnz .LBB59_3
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -6715,17 +7350,14 @@ define inreg <2 x i16> @bitcast_v4i8_to_v2i16_scalar(<4 x i8> inreg %a, i32 inre
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
-; VI-NEXT:  .LBB59_3: ; %end
+; VI-NEXT:  .LBB59_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB59_4:
-; VI-NEXT:    ; implicit-def: $vgpr0
-; VI-NEXT:    s_branch .LBB59_2
 ;
 ; GFX9-LABEL: bitcast_v4i8_to_v2i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -6734,8 +7366,17 @@ define inreg <2 x i16> @bitcast_v4i8_to_v2i16_scalar(<4 x i8> inreg %a, i32 inre
 ; GFX9-NEXT:    v_perm_b32 v1, s18, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_or_b32_e32 v0, v0, v1
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_3
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -6747,18 +7388,15 @@ define inreg <2 x i16> @bitcast_v4i8_to_v2i16_scalar(<4 x i8> inreg %a, i32 inre
 ; GFX9-NEXT:    v_add_u32_e32 v0, 0x300, v0
 ; GFX9-NEXT:    v_add_u32_sdwa v1, v1, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB59_3: ; %end
+; GFX9-NEXT:  .LBB59_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB59_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0
-; GFX9-NEXT:    s_branch .LBB59_2
 ;
 ; GFX11-LABEL: bitcast_v4i8_to_v2i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB59_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
@@ -6767,9 +7405,17 @@ define inreg <2 x i16> @bitcast_v4i8_to_v2i16_scalar(<4 x i8> inreg %a, i32 inre
 ; GFX11-NEXT:    v_perm_b32 v0, s0, s1, v0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v1
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB59_3
-; GFX11-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB59_3
+; GFX11-NEXT:  .LBB59_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0
+; GFX11-NEXT:  .LBB59_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -6783,11 +7429,8 @@ define inreg <2 x i16> @bitcast_v4i8_to_v2i16_scalar(<4 x i8> inreg %a, i32 inre
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; GFX11-NEXT:    v_or_b32_e32 v0, v1, v0
-; GFX11-NEXT:  .LBB59_3: ; %end
+; GFX11-NEXT:  .LBB59_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB59_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0
-; GFX11-NEXT:    s_branch .LBB59_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -6906,12 +7549,22 @@ define inreg <2 x bfloat> @bitcast_v2f16_to_v2bf16_scalar(<2 x half> inreg %a, i
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB61_3
+; SI-NEXT:    s_cbranch_scc0 .LBB61_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s7, s16, 16
 ; SI-NEXT:    s_lshl_b32 s8, s6, 16
-; SI-NEXT:    s_cbranch_execnz .LBB61_4
-; SI-NEXT:  .LBB61_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB61_3
+; SI-NEXT:  .LBB61_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB61_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB61_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
@@ -6920,15 +7573,11 @@ define inreg <2 x bfloat> @bitcast_v2f16_to_v2bf16_scalar(<2 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
-; SI-NEXT:    s_branch .LBB61_5
-; SI-NEXT:  .LBB61_3:
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB61_2
-; SI-NEXT:  .LBB61_4:
+; SI-NEXT:    s_branch .LBB61_6
+; SI-NEXT:  .LBB61_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s8
 ; SI-NEXT:    v_mov_b32_e32 v0, s7
-; SI-NEXT:  .LBB61_5: ; %end
+; SI-NEXT:  .LBB61_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
@@ -6939,10 +7588,18 @@ define inreg <2 x bfloat> @bitcast_v2f16_to_v2bf16_scalar(<2 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB61_3
+; VI-NEXT:    s_cbranch_scc0 .LBB61_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB61_4
-; VI-NEXT:  .LBB61_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB61_3
+; VI-NEXT:  .LBB61_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB61_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB61_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v2, s4
@@ -6950,9 +7607,7 @@ define inreg <2 x bfloat> @bitcast_v2f16_to_v2bf16_scalar(<2 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v0, v2, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB61_3:
-; VI-NEXT:    s_branch .LBB61_2
-; VI-NEXT:  .LBB61_4:
+; VI-NEXT:  .LBB61_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -6960,16 +7615,22 @@ define inreg <2 x bfloat> @bitcast_v2f16_to_v2bf16_scalar(<2 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB61_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB61_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB61_4
-; GFX9-NEXT:  .LBB61_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB61_3
+; GFX9-NEXT:  .LBB61_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB61_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB61_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB61_3:
-; GFX9-NEXT:    s_branch .LBB61_2
-; GFX9-NEXT:  .LBB61_4:
+; GFX9-NEXT:  .LBB61_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -6978,15 +7639,18 @@ define inreg <2 x bfloat> @bitcast_v2f16_to_v2bf16_scalar(<2 x half> inreg %a, i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB61_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB61_4
-; GFX11-NEXT:  .LBB61_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB61_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB61_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB61_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB61_3:
-; GFX11-NEXT:    s_branch .LBB61_2
 ; GFX11-NEXT:  .LBB61_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -7198,35 +7862,49 @@ define inreg <2 x half> @bitcast_v2bf16_to_v2f16_scalar(<2 x bfloat> inreg %a, i
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
 ; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB63_4
+; SI-NEXT:    s_cbranch_scc0 .LBB63_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v4
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[0:1], 16
-; SI-NEXT:    s_cbranch_execnz .LBB63_3
-; SI-NEXT:  .LBB63_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB63_3
+; SI-NEXT:  .LBB63_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr2
+; SI-NEXT:  .LBB63_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB63_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v4
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[0:1], 16
-; SI-NEXT:  .LBB63_3: ; %end
+; SI-NEXT:  .LBB63_5: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v1
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB63_4:
-; SI-NEXT:    ; implicit-def: $vgpr2
-; SI-NEXT:    s_branch .LBB63_2
 ;
 ; VI-LABEL: bitcast_v2bf16_to_v2f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB63_3
+; VI-NEXT:    s_cbranch_scc0 .LBB63_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB63_4
-; VI-NEXT:  .LBB63_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB63_3
+; VI-NEXT:  .LBB63_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB63_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB63_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -7247,9 +7925,7 @@ define inreg <2 x half> @bitcast_v2bf16_to_v2f16_scalar(<2 x bfloat> inreg %a, i
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_lshrrev_b64 v[0:1], 16, v[0:1]
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB63_3:
-; VI-NEXT:    s_branch .LBB63_2
-; VI-NEXT:  .LBB63_4:
+; VI-NEXT:  .LBB63_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7257,10 +7933,18 @@ define inreg <2 x half> @bitcast_v2bf16_to_v2f16_scalar(<2 x bfloat> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB63_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB63_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB63_4
-; GFX9-NEXT:  .LBB63_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB63_3
+; GFX9-NEXT:  .LBB63_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB63_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB63_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -7283,9 +7967,7 @@ define inreg <2 x half> @bitcast_v2bf16_to_v2f16_scalar(<2 x bfloat> inreg %a, i
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v2, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB63_3:
-; GFX9-NEXT:    s_branch .LBB63_2
-; GFX9-NEXT:  .LBB63_4:
+; GFX9-NEXT:  .LBB63_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7294,11 +7976,16 @@ define inreg <2 x half> @bitcast_v2bf16_to_v2f16_scalar(<2 x bfloat> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB63_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB63_4
-; GFX11-TRUE16-NEXT:  .LBB63_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB63_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s1, -1
+; GFX11-TRUE16-NEXT:  .LBB63_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB63_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s1, s0, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s1
@@ -7324,8 +8011,6 @@ define inreg <2 x half> @bitcast_v2bf16_to_v2f16_scalar(<2 x bfloat> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v2.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB63_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB63_2
 ; GFX11-TRUE16-NEXT:  .LBB63_4:
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -7335,11 +8020,16 @@ define inreg <2 x half> @bitcast_v2bf16_to_v2f16_scalar(<2 x bfloat> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB63_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB63_4
-; GFX11-FAKE16-NEXT:  .LBB63_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB63_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s1, -1
+; GFX11-FAKE16-NEXT:  .LBB63_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB63_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s1, s0, 16
 ; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, 0xffff0000
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s1
@@ -7365,8 +8055,6 @@ define inreg <2 x half> @bitcast_v2bf16_to_v2f16_scalar(<2 x bfloat> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB63_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB63_2
 ; GFX11-FAKE16-NEXT:  .LBB63_4:
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -7485,13 +8173,22 @@ define inreg <1 x i32> @bitcast_v2f16_to_v1i32_scalar(<2 x half> inreg %a, i32 i
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB65_3
+; SI-NEXT:    s_cbranch_scc0 .LBB65_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s7, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB65_4
-; SI-NEXT:  .LBB65_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB65_3
+; SI-NEXT:  .LBB65_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB65_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB65_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
@@ -7501,10 +8198,7 @@ define inreg <1 x i32> @bitcast_v2f16_to_v1i32_scalar(<2 x half> inreg %a, i32 i
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB65_3:
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB65_2
-; SI-NEXT:  .LBB65_4:
+; SI-NEXT:  .LBB65_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7512,10 +8206,18 @@ define inreg <1 x i32> @bitcast_v2f16_to_v1i32_scalar(<2 x half> inreg %a, i32 i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB65_3
+; VI-NEXT:    s_cbranch_scc0 .LBB65_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB65_4
-; VI-NEXT:  .LBB65_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB65_3
+; VI-NEXT:  .LBB65_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB65_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB65_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -7523,9 +8225,7 @@ define inreg <1 x i32> @bitcast_v2f16_to_v1i32_scalar(<2 x half> inreg %a, i32 i
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v1
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB65_3:
-; VI-NEXT:    s_branch .LBB65_2
-; VI-NEXT:  .LBB65_4:
+; VI-NEXT:  .LBB65_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7533,16 +8233,22 @@ define inreg <1 x i32> @bitcast_v2f16_to_v1i32_scalar(<2 x half> inreg %a, i32 i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB65_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB65_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB65_4
-; GFX9-NEXT:  .LBB65_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB65_3
+; GFX9-NEXT:  .LBB65_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB65_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB65_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB65_3:
-; GFX9-NEXT:    s_branch .LBB65_2
-; GFX9-NEXT:  .LBB65_4:
+; GFX9-NEXT:  .LBB65_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7551,15 +8257,18 @@ define inreg <1 x i32> @bitcast_v2f16_to_v1i32_scalar(<2 x half> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB65_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB65_4
-; GFX11-NEXT:  .LBB65_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB65_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB65_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB65_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB65_3:
-; GFX11-NEXT:    s_branch .LBB65_2
 ; GFX11-NEXT:  .LBB65_4:
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -7663,68 +8372,88 @@ define inreg <2 x half> @bitcast_v1i32_to_v2f16_scalar(<1 x i32> inreg %a, i32 i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB67_4
+; SI-NEXT:    s_cbranch_scc0 .LBB67_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB67_3
-; SI-NEXT:  .LBB67_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB67_3
+; SI-NEXT:  .LBB67_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB67_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB67_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
-; SI-NEXT:  .LBB67_3: ; %end
+; SI-NEXT:  .LBB67_5: ; %end
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s5
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB67_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB67_2
 ;
 ; VI-LABEL: bitcast_v1i32_to_v2f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB67_4
+; VI-NEXT:    s_cbranch_scc0 .LBB67_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB67_3
-; VI-NEXT:  .LBB67_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB67_3
+; VI-NEXT:  .LBB67_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB67_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB67_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB67_3: ; %end
+; VI-NEXT:  .LBB67_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB67_4:
-; VI-NEXT:    s_branch .LBB67_2
 ;
 ; GFX9-LABEL: bitcast_v1i32_to_v2f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB67_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB67_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB67_3
-; GFX9-NEXT:  .LBB67_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB67_3
+; GFX9-NEXT:  .LBB67_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB67_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB67_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB67_3: ; %end
+; GFX9-NEXT:  .LBB67_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB67_4:
-; GFX9-NEXT:    s_branch .LBB67_2
 ;
 ; GFX11-LABEL: bitcast_v1i32_to_v2f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB67_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccz .LBB67_4
-; GFX11-NEXT:  ; %bb.2: ; %end
-; GFX11-NEXT:    v_mov_b32_e32 v0, s0
-; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB67_3:
-; GFX11-NEXT:  .LBB67_4: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB67_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB67_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB67_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
+; GFX11-NEXT:  .LBB67_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -7931,15 +8660,26 @@ define inreg <4 x i8> @bitcast_v2f16_to_v4i8_scalar(<2 x half> inreg %a, i32 inr
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB69_3
+; SI-NEXT:    s_cbranch_scc0 .LBB69_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s7, s4, s5
 ; SI-NEXT:    s_lshr_b32 s8, s7, 8
 ; SI-NEXT:    s_bfe_u32 s9, s6, 0x80008
-; SI-NEXT:    s_cbranch_execnz .LBB69_4
-; SI-NEXT:  .LBB69_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB69_3
+; SI-NEXT:  .LBB69_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:  .LBB69_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB69_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
@@ -7951,12 +8691,7 @@ define inreg <4 x i8> @bitcast_v2f16_to_v4i8_scalar(<2 x half> inreg %a, i32 inr
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 8, v0
 ; SI-NEXT:    v_bfe_u32 v3, v2, 8, 8
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB69_3:
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    s_branch .LBB69_2
-; SI-NEXT:  .LBB69_4:
+; SI-NEXT:  .LBB69_5:
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    v_mov_b32_e32 v3, s9
 ; SI-NEXT:    v_mov_b32_e32 v0, s7
@@ -7967,13 +8702,24 @@ define inreg <4 x i8> @bitcast_v2f16_to_v4i8_scalar(<2 x half> inreg %a, i32 inr
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB69_3
+; VI-NEXT:    s_cbranch_scc0 .LBB69_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s6, s16, 24
 ; VI-NEXT:    s_lshr_b32 s8, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s16, 8
-; VI-NEXT:    s_cbranch_execnz .LBB69_4
-; VI-NEXT:  .LBB69_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB69_3
+; VI-NEXT:  .LBB69_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr7
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:  .LBB69_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB69_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_add_f16_e32 v2, s4, v0
@@ -7983,12 +8729,7 @@ define inreg <4 x i8> @bitcast_v2f16_to_v4i8_scalar(<2 x half> inreg %a, i32 inr
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 8, v1
 ; VI-NEXT:    v_bfe_u32 v3, v2, 8, 8
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB69_3:
-; VI-NEXT:    ; implicit-def: $sgpr7
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    s_branch .LBB69_2
-; VI-NEXT:  .LBB69_4:
+; VI-NEXT:  .LBB69_5:
 ; VI-NEXT:    v_mov_b32_e32 v2, s8
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v3, s6
@@ -7999,25 +8740,31 @@ define inreg <4 x i8> @bitcast_v2f16_to_v4i8_scalar(<2 x half> inreg %a, i32 inr
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB69_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB69_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s7, s16, 24
 ; GFX9-NEXT:    s_lshr_b32 s6, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s8, s16, 8
-; GFX9-NEXT:    s_cbranch_execnz .LBB69_4
-; GFX9-NEXT:  .LBB69_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB69_3
+; GFX9-NEXT:  .LBB69_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr7
+; GFX9-NEXT:  .LBB69_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB69_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v3, 24, v0
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB69_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr7
-; GFX9-NEXT:    s_branch .LBB69_2
-; GFX9-NEXT:  .LBB69_4:
+; GFX9-NEXT:  .LBB69_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s7
@@ -8028,29 +8775,34 @@ define inreg <4 x i8> @bitcast_v2f16_to_v4i8_scalar(<2 x half> inreg %a, i32 inr
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
-; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB69_3
+; GFX11-NEXT:    s_mov_b32 s3, 0
+; GFX11-NEXT:    s_cbranch_scc0 .LBB69_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-NEXT:    s_lshr_b32 s3, s0, 24
-; GFX11-NEXT:    s_lshr_b32 s2, s0, 16
+; GFX11-NEXT:    s_lshr_b32 s2, s0, 24
+; GFX11-NEXT:    s_lshr_b32 s1, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s4, s0, 8
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccnz .LBB69_4
-; GFX11-NEXT:  .LBB69_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB69_3
+; GFX11-NEXT:  .LBB69_2:
+; GFX11-NEXT:    s_mov_b32 s3, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr1
+; GFX11-NEXT:    ; implicit-def: $sgpr2
+; GFX11-NEXT:  .LBB69_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB69_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v3, 24, v0
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB69_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr2
-; GFX11-NEXT:    ; implicit-def: $sgpr3
-; GFX11-NEXT:    s_branch .LBB69_2
-; GFX11-NEXT:  .LBB69_4:
+; GFX11-NEXT:  .LBB69_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s4
-; GFX11-NEXT:    v_dual_mov_b32 v3, s3 :: v_dual_mov_b32 v2, s2
+; GFX11-NEXT:    v_dual_mov_b32 v3, s2 :: v_dual_mov_b32 v2, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
@@ -8309,7 +9061,7 @@ define inreg <2 x half> @bitcast_v4i8_to_v2f16_scalar(<4 x i8> inreg %a, i32 inr
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB71_4
+; SI-NEXT:    s_cbranch_scc0 .LBB71_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -8321,8 +9073,18 @@ define inreg <2 x half> @bitcast_v4i8_to_v2f16_scalar(<4 x i8> inreg %a, i32 inr
 ; SI-NEXT:    s_lshl_b32 s6, s5, 16
 ; SI-NEXT:    s_or_b32 s6, s4, s6
 ; SI-NEXT:    s_and_b32 s7, s5, 0xffff
-; SI-NEXT:    s_cbranch_execnz .LBB71_3
-; SI-NEXT:  .LBB71_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB71_3
+; SI-NEXT:  .LBB71_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB71_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB71_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -8337,22 +9099,18 @@ define inreg <2 x half> @bitcast_v4i8_to_v2f16_scalar(<4 x i8> inreg %a, i32 inr
 ; SI-NEXT:    s_lshl_b32 s6, s5, 16
 ; SI-NEXT:    s_or_b32 s6, s4, s6
 ; SI-NEXT:    s_and_b32 s7, s5, 0xffff
-; SI-NEXT:  .LBB71_3: ; %end
+; SI-NEXT:  .LBB71_5: ; %end
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s5
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB71_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB71_2
 ;
 ; VI-LABEL: bitcast_v4i8_to_v2f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB71_4
+; VI-NEXT:    s_cbranch_scc0 .LBB71_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -8361,8 +9119,17 @@ define inreg <2 x half> @bitcast_v4i8_to_v2f16_scalar(<4 x i8> inreg %a, i32 inr
 ; VI-NEXT:    v_perm_b32 v1, s18, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v1
-; VI-NEXT:    s_cbranch_execnz .LBB71_3
-; VI-NEXT:  .LBB71_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB71_3
+; VI-NEXT:  .LBB71_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0
+; VI-NEXT:  .LBB71_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB71_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -8374,17 +9141,14 @@ define inreg <2 x half> @bitcast_v4i8_to_v2f16_scalar(<4 x i8> inreg %a, i32 inr
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
-; VI-NEXT:  .LBB71_3: ; %end
+; VI-NEXT:  .LBB71_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB71_4:
-; VI-NEXT:    ; implicit-def: $vgpr0
-; VI-NEXT:    s_branch .LBB71_2
 ;
 ; GFX9-LABEL: bitcast_v4i8_to_v2f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB71_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -8393,8 +9157,17 @@ define inreg <2 x half> @bitcast_v4i8_to_v2f16_scalar(<4 x i8> inreg %a, i32 inr
 ; GFX9-NEXT:    v_perm_b32 v1, s18, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_or_b32_e32 v0, v0, v1
-; GFX9-NEXT:    s_cbranch_execnz .LBB71_3
-; GFX9-NEXT:  .LBB71_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB71_3
+; GFX9-NEXT:  .LBB71_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0
+; GFX9-NEXT:  .LBB71_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB71_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -8406,18 +9179,15 @@ define inreg <2 x half> @bitcast_v4i8_to_v2f16_scalar(<4 x i8> inreg %a, i32 inr
 ; GFX9-NEXT:    v_add_u32_e32 v0, 0x300, v0
 ; GFX9-NEXT:    v_add_u32_sdwa v1, v1, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB71_3: ; %end
+; GFX9-NEXT:  .LBB71_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB71_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0
-; GFX9-NEXT:    s_branch .LBB71_2
 ;
 ; GFX11-LABEL: bitcast_v4i8_to_v2f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB71_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
@@ -8426,9 +9196,17 @@ define inreg <2 x half> @bitcast_v4i8_to_v2f16_scalar(<4 x i8> inreg %a, i32 inr
 ; GFX11-NEXT:    v_perm_b32 v0, s0, s1, v0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v1
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB71_3
-; GFX11-NEXT:  .LBB71_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB71_3
+; GFX11-NEXT:  .LBB71_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0
+; GFX11-NEXT:  .LBB71_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB71_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -8442,11 +9220,8 @@ define inreg <2 x half> @bitcast_v4i8_to_v2f16_scalar(<4 x i8> inreg %a, i32 inr
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; GFX11-NEXT:    v_or_b32_e32 v0, v1, v0
-; GFX11-NEXT:  .LBB71_3: ; %end
+; GFX11-NEXT:  .LBB71_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB71_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0
-; GFX11-NEXT:    s_branch .LBB71_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -8657,32 +9432,46 @@ define inreg <1 x i32> @bitcast_v2bf16_to_v1i32_scalar(<2 x bfloat> inreg %a, i3
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
 ; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB73_4
+; SI-NEXT:    s_cbranch_scc0 .LBB73_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[2:3], 16
-; SI-NEXT:    s_cbranch_execnz .LBB73_3
-; SI-NEXT:  .LBB73_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB73_3
+; SI-NEXT:  .LBB73_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:  .LBB73_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB73_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v4
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v2
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
-; SI-NEXT:  .LBB73_3: ; %end
+; SI-NEXT:  .LBB73_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB73_4:
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    s_branch .LBB73_2
 ;
 ; VI-LABEL: bitcast_v2bf16_to_v1i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB73_3
+; VI-NEXT:    s_cbranch_scc0 .LBB73_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB73_4
-; VI-NEXT:  .LBB73_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB73_3
+; VI-NEXT:  .LBB73_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB73_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB73_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -8703,9 +9492,7 @@ define inreg <1 x i32> @bitcast_v2bf16_to_v1i32_scalar(<2 x bfloat> inreg %a, i3
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_lshrrev_b64 v[0:1], 16, v[0:1]
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB73_3:
-; VI-NEXT:    s_branch .LBB73_2
-; VI-NEXT:  .LBB73_4:
+; VI-NEXT:  .LBB73_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -8713,10 +9500,18 @@ define inreg <1 x i32> @bitcast_v2bf16_to_v1i32_scalar(<2 x bfloat> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB73_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB73_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB73_4
-; GFX9-NEXT:  .LBB73_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB73_3
+; GFX9-NEXT:  .LBB73_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB73_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB73_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -8739,9 +9534,7 @@ define inreg <1 x i32> @bitcast_v2bf16_to_v1i32_scalar(<2 x bfloat> inreg %a, i3
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v2, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB73_3:
-; GFX9-NEXT:    s_branch .LBB73_2
-; GFX9-NEXT:  .LBB73_4:
+; GFX9-NEXT:  .LBB73_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -8750,11 +9543,16 @@ define inreg <1 x i32> @bitcast_v2bf16_to_v1i32_scalar(<2 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB73_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB73_4
-; GFX11-TRUE16-NEXT:  .LBB73_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB73_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s1, -1
+; GFX11-TRUE16-NEXT:  .LBB73_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB73_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s1, s0, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s1
@@ -8780,8 +9578,6 @@ define inreg <1 x i32> @bitcast_v2bf16_to_v1i32_scalar(<2 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v2.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB73_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB73_2
 ; GFX11-TRUE16-NEXT:  .LBB73_4:
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -8791,11 +9587,16 @@ define inreg <1 x i32> @bitcast_v2bf16_to_v1i32_scalar(<2 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB73_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB73_4
-; GFX11-FAKE16-NEXT:  .LBB73_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB73_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s1, -1
+; GFX11-FAKE16-NEXT:  .LBB73_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB73_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s1, s0, 16
 ; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, 0xffff0000
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s1
@@ -8821,8 +9622,6 @@ define inreg <1 x i32> @bitcast_v2bf16_to_v1i32_scalar(<2 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB73_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB73_2
 ; GFX11-FAKE16-NEXT:  .LBB73_4:
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -8931,71 +9730,91 @@ define inreg <2 x bfloat> @bitcast_v1i32_to_v2bf16_scalar(<1 x i32> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB75_4
+; SI-NEXT:    s_cbranch_scc0 .LBB75_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s7, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB75_3
-; SI-NEXT:  .LBB75_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB75_3
+; SI-NEXT:  .LBB75_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB75_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB75_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s7, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s16, 16
-; SI-NEXT:  .LBB75_3: ; %end
+; SI-NEXT:  .LBB75_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s7
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB75_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB75_2
 ;
 ; VI-LABEL: bitcast_v1i32_to_v2bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB75_4
+; VI-NEXT:    s_cbranch_scc0 .LBB75_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB75_3
-; VI-NEXT:  .LBB75_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB75_3
+; VI-NEXT:  .LBB75_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB75_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB75_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB75_3: ; %end
+; VI-NEXT:  .LBB75_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB75_4:
-; VI-NEXT:    s_branch .LBB75_2
 ;
 ; GFX9-LABEL: bitcast_v1i32_to_v2bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB75_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB75_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB75_3
-; GFX9-NEXT:  .LBB75_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB75_3
+; GFX9-NEXT:  .LBB75_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB75_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB75_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB75_3: ; %end
+; GFX9-NEXT:  .LBB75_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB75_4:
-; GFX9-NEXT:    s_branch .LBB75_2
 ;
 ; GFX11-LABEL: bitcast_v1i32_to_v2bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB75_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-NEXT:    s_cbranch_vccz .LBB75_4
-; GFX11-NEXT:  ; %bb.2: ; %end
-; GFX11-NEXT:    v_mov_b32_e32 v0, s0
-; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB75_3:
-; GFX11-NEXT:  .LBB75_4: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB75_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s1, -1
+; GFX11-NEXT:  .LBB75_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB75_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
+; GFX11-NEXT:  .LBB75_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -9276,14 +10095,25 @@ define inreg <4 x i8> @bitcast_v2bf16_to_v4i8_scalar(<2 x bfloat> inreg %a, i32
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB77_4
+; SI-NEXT:    s_cbranch_scc0 .LBB77_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; SI-NEXT:    v_lshr_b64 v[4:5], v[1:2], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 24, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 8, v4
-; SI-NEXT:    s_cbranch_execnz .LBB77_3
-; SI-NEXT:  .LBB77_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB77_3
+; SI-NEXT:  .LBB77_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr4
+; SI-NEXT:    ; implicit-def: $vgpr5
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:  .LBB77_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB77_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v0
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v1
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
@@ -9292,27 +10122,33 @@ define inreg <4 x i8> @bitcast_v2bf16_to_v4i8_scalar(<2 x bfloat> inreg %a, i32
 ; SI-NEXT:    v_lshr_b64 v[4:5], v[1:2], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 24, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 8, v4
-; SI-NEXT:  .LBB77_3: ; %end
+; SI-NEXT:  .LBB77_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, v4
 ; SI-NEXT:    v_mov_b32_e32 v1, v5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB77_4:
-; SI-NEXT:    ; implicit-def: $vgpr4
-; SI-NEXT:    ; implicit-def: $vgpr5
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    s_branch .LBB77_2
 ;
 ; VI-LABEL: bitcast_v2bf16_to_v4i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB77_3
+; VI-NEXT:    s_cbranch_scc0 .LBB77_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s6, s16, 24
 ; VI-NEXT:    s_lshr_b32 s8, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s16, 8
-; VI-NEXT:    s_cbranch_execnz .LBB77_4
-; VI-NEXT:  .LBB77_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB77_3
+; VI-NEXT:  .LBB77_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr7
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:  .LBB77_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB77_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -9336,12 +10172,7 @@ define inreg <4 x i8> @bitcast_v2bf16_to_v4i8_scalar(<2 x bfloat> inreg %a, i32
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 24, v4
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 8, v4
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB77_3:
-; VI-NEXT:    ; implicit-def: $sgpr7
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    s_branch .LBB77_2
-; VI-NEXT:  .LBB77_4:
+; VI-NEXT:  .LBB77_5:
 ; VI-NEXT:    v_mov_b32_e32 v2, s8
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v3, s6
@@ -9352,13 +10183,24 @@ define inreg <4 x i8> @bitcast_v2bf16_to_v4i8_scalar(<2 x bfloat> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB77_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB77_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s6, s16, 24
 ; GFX9-NEXT:    s_lshr_b32 s8, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s7, s16, 8
-; GFX9-NEXT:    s_cbranch_execnz .LBB77_4
-; GFX9-NEXT:  .LBB77_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB77_3
+; GFX9-NEXT:  .LBB77_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr7
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:  .LBB77_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB77_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -9383,12 +10225,7 @@ define inreg <4 x i8> @bitcast_v2bf16_to_v4i8_scalar(<2 x bfloat> inreg %a, i32
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v3, 24, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v1
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB77_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr7
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    s_branch .LBB77_2
-; GFX9-NEXT:  .LBB77_4:
+; GFX9-NEXT:  .LBB77_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s6
@@ -9399,15 +10236,25 @@ define inreg <4 x i8> @bitcast_v2bf16_to_v4i8_scalar(<2 x bfloat> inreg %a, i32
 ; GFX11-TRUE16:       ; %bb.0:
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB77_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB77_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s2, s0, 24
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s1, s0, 24
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s4, s0, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s3, s0, 8
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB77_4
-; GFX11-TRUE16-NEXT:  .LBB77_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB77_3
+; GFX11-TRUE16-NEXT:  .LBB77_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr3
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr1
+; GFX11-TRUE16-NEXT:  .LBB77_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB77_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s0, 16
 ; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, 0xffff0000
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s1
@@ -9437,13 +10284,8 @@ define inreg <4 x i8> @bitcast_v2bf16_to_v4i8_scalar(<2 x bfloat> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 24, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB77_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr3
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr4
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr2
-; GFX11-TRUE16-NEXT:    s_branch .LBB77_2
-; GFX11-TRUE16-NEXT:  .LBB77_4:
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s2
+; GFX11-TRUE16-NEXT:  .LBB77_5:
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v1, s3
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -9451,15 +10293,25 @@ define inreg <4 x i8> @bitcast_v2bf16_to_v4i8_scalar(<2 x bfloat> inreg %a, i32
 ; GFX11-FAKE16:       ; %bb.0:
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB77_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB77_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s2, s0, 24
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s1, s0, 24
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s4, s0, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s3, s0, 8
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s1
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB77_4
-; GFX11-FAKE16-NEXT:  .LBB77_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB77_3
+; GFX11-FAKE16-NEXT:  .LBB77_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr3
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr1
+; GFX11-FAKE16-NEXT:  .LBB77_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB77_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s1, s0, 16
 ; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, 0xffff0000
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s1
@@ -9489,13 +10341,8 @@ define inreg <4 x i8> @bitcast_v2bf16_to_v4i8_scalar(<2 x bfloat> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 24, v1
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB77_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr3
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr4
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr2
-; GFX11-FAKE16-NEXT:    s_branch .LBB77_2
-; GFX11-FAKE16-NEXT:  .LBB77_4:
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s2
+; GFX11-FAKE16-NEXT:  .LBB77_5:
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v1, s3
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
   %cmp = icmp eq i32 %b, 0
@@ -9752,7 +10599,7 @@ define inreg <2 x bfloat> @bitcast_v4i8_to_v2bf16_scalar(<4 x i8> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB79_4
+; SI-NEXT:    s_cbranch_scc0 .LBB79_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
@@ -9762,8 +10609,18 @@ define inreg <2 x bfloat> @bitcast_v4i8_to_v2bf16_scalar(<4 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_lshl_b32 s5, s19, 24
 ; SI-NEXT:    s_or_b32 s7, s5, s4
-; SI-NEXT:    s_cbranch_execnz .LBB79_3
-; SI-NEXT:  .LBB79_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB79_3
+; SI-NEXT:  .LBB79_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB79_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB79_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_and_b32 s5, s18, 0xff
 ; SI-NEXT:    s_add_i32 s16, s16, 3
@@ -9776,22 +10633,18 @@ define inreg <2 x bfloat> @bitcast_v4i8_to_v2bf16_scalar(<4 x i8> inreg %a, i32
 ; SI-NEXT:    s_or_b32 s5, s5, s6
 ; SI-NEXT:    s_add_i32 s6, s5, 0x3000000
 ; SI-NEXT:    s_add_i32 s7, s4, 0x3000000
-; SI-NEXT:  .LBB79_3: ; %end
+; SI-NEXT:  .LBB79_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s7
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB79_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB79_2
 ;
 ; VI-LABEL: bitcast_v4i8_to_v2bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB79_4
+; VI-NEXT:    s_cbranch_scc0 .LBB79_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -9800,8 +10653,17 @@ define inreg <2 x bfloat> @bitcast_v4i8_to_v2bf16_scalar(<4 x i8> inreg %a, i32
 ; VI-NEXT:    v_perm_b32 v1, s18, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v1
-; VI-NEXT:    s_cbranch_execnz .LBB79_3
-; VI-NEXT:  .LBB79_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB79_3
+; VI-NEXT:  .LBB79_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0
+; VI-NEXT:  .LBB79_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB79_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -9813,17 +10675,14 @@ define inreg <2 x bfloat> @bitcast_v4i8_to_v2bf16_scalar(<4 x i8> inreg %a, i32
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
-; VI-NEXT:  .LBB79_3: ; %end
+; VI-NEXT:  .LBB79_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB79_4:
-; VI-NEXT:    ; implicit-def: $vgpr0
-; VI-NEXT:    s_branch .LBB79_2
 ;
 ; GFX9-LABEL: bitcast_v4i8_to_v2bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB79_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB79_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -9832,8 +10691,17 @@ define inreg <2 x bfloat> @bitcast_v4i8_to_v2bf16_scalar(<4 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_perm_b32 v1, s18, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_or_b32_e32 v0, v0, v1
-; GFX9-NEXT:    s_cbranch_execnz .LBB79_3
-; GFX9-NEXT:  .LBB79_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB79_3
+; GFX9-NEXT:  .LBB79_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0
+; GFX9-NEXT:  .LBB79_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB79_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -9845,18 +10713,15 @@ define inreg <2 x bfloat> @bitcast_v4i8_to_v2bf16_scalar(<4 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_add_u32_e32 v0, 0x300, v0
 ; GFX9-NEXT:    v_add_u32_sdwa v1, v1, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB79_3: ; %end
+; GFX9-NEXT:  .LBB79_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB79_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0
-; GFX9-NEXT:    s_branch .LBB79_2
 ;
 ; GFX11-LABEL: bitcast_v4i8_to_v2bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB79_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB79_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
@@ -9865,9 +10730,17 @@ define inreg <2 x bfloat> @bitcast_v4i8_to_v2bf16_scalar(<4 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_perm_b32 v0, s0, s1, v0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v1
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB79_3
-; GFX11-NEXT:  .LBB79_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB79_3
+; GFX11-NEXT:  .LBB79_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0
+; GFX11-NEXT:  .LBB79_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB79_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -9881,11 +10754,8 @@ define inreg <2 x bfloat> @bitcast_v4i8_to_v2bf16_scalar(<4 x i8> inreg %a, i32
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; GFX11-NEXT:    v_or_b32_e32 v0, v1, v0
-; GFX11-NEXT:  .LBB79_3: ; %end
+; GFX11-NEXT:  .LBB79_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB79_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0
-; GFX11-NEXT:    s_branch .LBB79_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -10074,111 +10944,134 @@ define inreg <4 x i8> @bitcast_v1i32_to_v4i8_scalar(<1 x i32> inreg %a, i32 inre
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s17, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB81_4
+; SI-NEXT:    s_cbranch_scc0 .LBB81_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s6, s16, 24
 ; SI-NEXT:    s_lshr_b32 s7, s16, 16
 ; SI-NEXT:    s_lshr_b32 s8, s16, 8
-; SI-NEXT:    s_cbranch_execnz .LBB81_3
-; SI-NEXT:  .LBB81_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB81_3
+; SI-NEXT:  .LBB81_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB81_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB81_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_lshr_b32 s7, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s16, 24
 ; SI-NEXT:    s_lshr_b32 s8, s16, 8
-; SI-NEXT:  .LBB81_3: ; %end
+; SI-NEXT:  .LBB81_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s8
 ; SI-NEXT:    v_mov_b32_e32 v2, s7
 ; SI-NEXT:    v_mov_b32_e32 v3, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB81_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB81_2
 ;
 ; VI-LABEL: bitcast_v1i32_to_v4i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s17, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB81_4
+; VI-NEXT:    s_cbranch_scc0 .LBB81_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s6, s16, 24
 ; VI-NEXT:    s_lshr_b32 s7, s16, 16
 ; VI-NEXT:    s_lshr_b32 s8, s16, 8
-; VI-NEXT:    s_cbranch_execnz .LBB81_3
-; VI-NEXT:  .LBB81_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB81_3
+; VI-NEXT:  .LBB81_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr7
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:  .LBB81_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB81_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_lshr_b32 s7, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s16, 24
 ; VI-NEXT:    s_lshr_b32 s8, s16, 8
-; VI-NEXT:  .LBB81_3: ; %end
+; VI-NEXT:  .LBB81_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s8
 ; VI-NEXT:    v_mov_b32_e32 v2, s7
 ; VI-NEXT:    v_mov_b32_e32 v3, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB81_4:
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr7
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    s_branch .LBB81_2
 ;
 ; GFX9-LABEL: bitcast_v1i32_to_v4i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s17, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB81_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB81_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s6, s16, 24
 ; GFX9-NEXT:    s_lshr_b32 s7, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s8, s16, 8
-; GFX9-NEXT:    s_cbranch_execnz .LBB81_3
-; GFX9-NEXT:  .LBB81_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB81_3
+; GFX9-NEXT:  .LBB81_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr7
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:  .LBB81_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB81_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    s_lshr_b32 s7, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s6, s16, 24
 ; GFX9-NEXT:    s_lshr_b32 s8, s16, 8
-; GFX9-NEXT:  .LBB81_3: ; %end
+; GFX9-NEXT:  .LBB81_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB81_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr7
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    s_branch .LBB81_2
 ;
 ; GFX11-LABEL: bitcast_v1i32_to_v4i8_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB81_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB81_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s1, s0, 24
 ; GFX11-NEXT:    s_lshr_b32 s2, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s3, s0, 8
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB81_3
-; GFX11-NEXT:  .LBB81_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB81_3
+; GFX11-NEXT:  .LBB81_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr3
+; GFX11-NEXT:    ; implicit-def: $sgpr2
+; GFX11-NEXT:    ; implicit-def: $sgpr1
+; GFX11-NEXT:  .LBB81_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB81_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_lshr_b32 s2, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s1, s0, 24
 ; GFX11-NEXT:    s_lshr_b32 s3, s0, 8
-; GFX11-NEXT:  .LBB81_3: ; %end
+; GFX11-NEXT:  .LBB81_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB81_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr3
-; GFX11-NEXT:    ; implicit-def: $sgpr2
-; GFX11-NEXT:    ; implicit-def: $sgpr1
-; GFX11-NEXT:    s_branch .LBB81_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -10436,7 +11329,7 @@ define inreg <1 x i32> @bitcast_v4i8_to_v1i32_scalar(<4 x i8> inreg %a, i32 inre
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s20, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB83_4
+; SI-NEXT:    s_cbranch_scc0 .LBB83_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -10447,8 +11340,17 @@ define inreg <1 x i32> @bitcast_v4i8_to_v1i32_scalar(<4 x i8> inreg %a, i32 inre
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_or_b32 s6, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB83_3
-; SI-NEXT:  .LBB83_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB83_3
+; SI-NEXT:  .LBB83_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB83_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB83_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -10462,18 +11364,15 @@ define inreg <1 x i32> @bitcast_v4i8_to_v1i32_scalar(<4 x i8> inreg %a, i32 inre
 ; SI-NEXT:    s_or_b32 s5, s5, s6
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s6, s4, 0x3000000
-; SI-NEXT:  .LBB83_3: ; %end
+; SI-NEXT:  .LBB83_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB83_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB83_2
 ;
 ; VI-LABEL: bitcast_v4i8_to_v1i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s20, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB83_4
+; VI-NEXT:    s_cbranch_scc0 .LBB83_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -10482,8 +11381,17 @@ define inreg <1 x i32> @bitcast_v4i8_to_v1i32_scalar(<4 x i8> inreg %a, i32 inre
 ; VI-NEXT:    v_perm_b32 v1, s18, v2, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v1
-; VI-NEXT:    s_cbranch_execnz .LBB83_3
-; VI-NEXT:  .LBB83_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB83_3
+; VI-NEXT:  .LBB83_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0
+; VI-NEXT:  .LBB83_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB83_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -10495,17 +11403,14 @@ define inreg <1 x i32> @bitcast_v4i8_to_v1i32_scalar(<4 x i8> inreg %a, i32 inre
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
-; VI-NEXT:  .LBB83_3: ; %end
+; VI-NEXT:  .LBB83_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB83_4:
-; VI-NEXT:    ; implicit-def: $vgpr0
-; VI-NEXT:    s_branch .LBB83_2
 ;
 ; GFX9-LABEL: bitcast_v4i8_to_v1i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s20, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB83_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB83_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -10514,8 +11419,17 @@ define inreg <1 x i32> @bitcast_v4i8_to_v1i32_scalar(<4 x i8> inreg %a, i32 inre
 ; GFX9-NEXT:    v_perm_b32 v1, s18, v2, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_or_b32_e32 v0, v0, v1
-; GFX9-NEXT:    s_cbranch_execnz .LBB83_3
-; GFX9-NEXT:  .LBB83_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB83_3
+; GFX9-NEXT:  .LBB83_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0
+; GFX9-NEXT:  .LBB83_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB83_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -10527,18 +11441,15 @@ define inreg <1 x i32> @bitcast_v4i8_to_v1i32_scalar(<4 x i8> inreg %a, i32 inre
 ; GFX9-NEXT:    v_add_u32_e32 v0, 0x300, v0
 ; GFX9-NEXT:    v_add_u32_sdwa v1, v1, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB83_3: ; %end
+; GFX9-NEXT:  .LBB83_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB83_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0
-; GFX9-NEXT:    s_branch .LBB83_2
 ;
 ; GFX11-LABEL: bitcast_v4i8_to_v1i32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s16, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB83_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB83_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
@@ -10547,9 +11458,17 @@ define inreg <1 x i32> @bitcast_v4i8_to_v1i32_scalar(<4 x i8> inreg %a, i32 inre
 ; GFX11-NEXT:    v_perm_b32 v0, s0, s1, v0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_or_b32_e32 v0, v0, v1
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB83_3
-; GFX11-NEXT:  .LBB83_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB83_3
+; GFX11-NEXT:  .LBB83_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0
+; GFX11-NEXT:  .LBB83_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB83_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -10563,11 +11482,8 @@ define inreg <1 x i32> @bitcast_v4i8_to_v1i32_scalar(<4 x i8> inreg %a, i32 inre
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; GFX11-NEXT:    v_or_b32_e32 v0, v1, v0
-; GFX11-NEXT:  .LBB83_3: ; %end
+; GFX11-NEXT:  .LBB83_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB83_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0
-; GFX11-NEXT:    s_branch .LBB83_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.352bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.352bit.ll
index 79c9fc7faf339..8b5acdca0294f 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.352bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.352bit.ll
@@ -125,10 +125,18 @@ define inreg <11 x float> @bitcast_v11i32_to_v11f32_scalar(<11 x i32> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s27, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s24, s24, 3
@@ -140,7 +148,7 @@ define inreg <11 x float> @bitcast_v11i32_to_v11f32_scalar(<11 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -153,17 +161,23 @@ define inreg <11 x float> @bitcast_v11i32_to_v11f32_scalar(<11 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v9, s25
 ; SI-NEXT:    v_mov_b32_e32 v10, s26
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v11i32_to_v11f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s27, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s24, s24, 3
@@ -175,7 +189,7 @@ define inreg <11 x float> @bitcast_v11i32_to_v11f32_scalar(<11 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -188,17 +202,23 @@ define inreg <11 x float> @bitcast_v11i32_to_v11f32_scalar(<11 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v11i32_to_v11f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s27, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s26, s26, 3
 ; GFX9-NEXT:    s_add_i32 s25, s25, 3
 ; GFX9-NEXT:    s_add_i32 s24, s24, 3
@@ -210,7 +230,7 @@ define inreg <11 x float> @bitcast_v11i32_to_v11f32_scalar(<11 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -223,19 +243,22 @@ define inreg <11 x float> @bitcast_v11i32_to_v11f32_scalar(<11 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s25
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s26
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v11i32_to_v11f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s23, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s22, s22, 3
 ; GFX11-NEXT:    s_add_i32 s21, s21, 3
 ; GFX11-NEXT:    s_add_i32 s20, s20, 3
@@ -247,7 +270,7 @@ define inreg <11 x float> @bitcast_v11i32_to_v11f32_scalar(<11 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -256,8 +279,6 @@ define inreg <11 x float> @bitcast_v11i32_to_v11f32_scalar(<11 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    v_mov_b32_e32 v10, s22
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -388,10 +409,18 @@ define inreg <11 x i32> @bitcast_v11f32_to_v11i32_scalar(<11 x float> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s27, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; SI-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; SI-NEXT:    v_add_f32_e64 v8, s24, 1.0
@@ -404,9 +433,7 @@ define inreg <11 x i32> @bitcast_v11f32_to_v11i32_scalar(<11 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -424,10 +451,18 @@ define inreg <11 x i32> @bitcast_v11f32_to_v11i32_scalar(<11 x float> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s27, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; VI-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; VI-NEXT:    v_add_f32_e64 v8, s24, 1.0
@@ -440,9 +475,7 @@ define inreg <11 x i32> @bitcast_v11f32_to_v11i32_scalar(<11 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -460,10 +493,18 @@ define inreg <11 x i32> @bitcast_v11f32_to_v11i32_scalar(<11 x float> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s27, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v8, s24, 1.0
@@ -476,9 +517,7 @@ define inreg <11 x i32> @bitcast_v11f32_to_v11i32_scalar(<11 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -501,11 +540,16 @@ define inreg <11 x i32> @bitcast_v11f32_to_v11i32_scalar(<11 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s23, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v10, s22, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v9, s21, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v8, s20, 1.0
@@ -518,8 +562,6 @@ define inreg <11 x i32> @bitcast_v11f32_to_v11i32_scalar(<11 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -733,7 +775,7 @@ define inreg <22 x i16> @bitcast_v11i32_to_v22i16_scalar(<11 x i32> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s27, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s27, s25, 16
 ; SI-NEXT:    s_lshr_b32 s40, s23, 16
@@ -746,8 +788,27 @@ define inreg <22 x i16> @bitcast_v11i32_to_v22i16_scalar(<11 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
@@ -770,7 +831,7 @@ define inreg <22 x i16> @bitcast_v11i32_to_v22i16_scalar(<11 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s42, s19, 16
 ; SI-NEXT:    s_lshr_b32 s43, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[26:27], 16
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s14, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -816,28 +877,23 @@ define inreg <22 x i16> @bitcast_v11i32_to_v22i16_scalar(<11 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v9, s14
 ; SI-NEXT:    v_mov_b32_e32 v10, s8
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v11i32_to_v22i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s27, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s24, s24, 3
@@ -849,7 +905,7 @@ define inreg <22 x i16> @bitcast_v11i32_to_v22i16_scalar(<11 x i32> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -862,17 +918,23 @@ define inreg <22 x i16> @bitcast_v11i32_to_v22i16_scalar(<11 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v11i32_to_v22i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s27, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s26, s26, 3
 ; GFX9-NEXT:    s_add_i32 s25, s25, 3
 ; GFX9-NEXT:    s_add_i32 s24, s24, 3
@@ -884,7 +946,7 @@ define inreg <22 x i16> @bitcast_v11i32_to_v22i16_scalar(<11 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -897,19 +959,22 @@ define inreg <22 x i16> @bitcast_v11i32_to_v22i16_scalar(<11 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s25
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s26
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v11i32_to_v22i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s23, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s22, s22, 3
 ; GFX11-NEXT:    s_add_i32 s21, s21, 3
 ; GFX11-NEXT:    s_add_i32 s20, s20, 3
@@ -921,7 +986,7 @@ define inreg <22 x i16> @bitcast_v11i32_to_v22i16_scalar(<11 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -930,8 +995,6 @@ define inreg <22 x i16> @bitcast_v11i32_to_v22i16_scalar(<11 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    v_mov_b32_e32 v10, s22
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1221,7 +1284,7 @@ define inreg <11 x i32> @bitcast_v22i16_to_v11i32_scalar(<22 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s56, s17, 16
 ; SI-NEXT:    s_lshr_b32 s57, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s27, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s57, 16
@@ -1256,8 +1319,17 @@ define inreg <11 x i32> @bitcast_v22i16_to_v11i32_scalar(<22 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s14, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s27, s15, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s27
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s27, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s27, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s57, 16
@@ -1313,7 +1385,7 @@ define inreg <11 x i32> @bitcast_v22i16_to_v11i32_scalar(<22 x i16> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s12, s12, 0x30000
 ; SI-NEXT:    s_add_i32 s13, s13, 0x30000
 ; SI-NEXT:    s_add_i32 s14, s14, 0x30000
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -1326,18 +1398,23 @@ define inreg <11 x i32> @bitcast_v22i16_to_v11i32_scalar(<22 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v9, s13
 ; SI-NEXT:    v_mov_b32_e32 v10, s14
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v22i16_to_v11i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s27, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s26, 3
 ; VI-NEXT:    s_and_b32 s4, s26, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -1393,7 +1470,7 @@ define inreg <11 x i32> @bitcast_v22i16_to_v11i32_scalar(<22 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1406,17 +1483,23 @@ define inreg <11 x i32> @bitcast_v22i16_to_v11i32_scalar(<22 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v22i16_to_v11i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s27, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_4
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v10, s26, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v9, s25, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v8, s24, 3 op_sel_hi:[1,0]
@@ -1429,9 +1512,7 @@ define inreg <11 x i32> @bitcast_v22i16_to_v11i32_scalar(<22 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_3:
-; GFX9-NEXT:    s_branch .LBB7_2
-; GFX9-NEXT:  .LBB7_4:
+; GFX9-NEXT:  .LBB7_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1454,11 +1535,16 @@ define inreg <11 x i32> @bitcast_v22i16_to_v11i32_scalar(<22 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s23, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_4
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v10, s22, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v9, s21, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v8, s20, 3 op_sel_hi:[1,0]
@@ -1471,8 +1557,6 @@ define inreg <11 x i32> @bitcast_v22i16_to_v11i32_scalar(<22 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_3:
-; GFX11-NEXT:    s_branch .LBB7_2
 ; GFX11-NEXT:  .LBB7_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -1686,7 +1770,7 @@ define inreg <22 x half> @bitcast_v11i32_to_v22f16_scalar(<11 x i32> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s27, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s27, s25, 16
 ; SI-NEXT:    s_lshr_b32 s40, s23, 16
@@ -1699,8 +1783,27 @@ define inreg <22 x half> @bitcast_v11i32_to_v22f16_scalar(<11 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
@@ -1723,7 +1826,7 @@ define inreg <22 x half> @bitcast_v11i32_to_v22f16_scalar(<11 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s42, s19, 16
 ; SI-NEXT:    s_lshr_b32 s43, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[26:27], 16
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s14, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -1769,28 +1872,23 @@ define inreg <22 x half> @bitcast_v11i32_to_v22f16_scalar(<11 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v9, s14
 ; SI-NEXT:    v_mov_b32_e32 v10, s8
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v11i32_to_v22f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s27, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s24, s24, 3
@@ -1802,7 +1900,7 @@ define inreg <22 x half> @bitcast_v11i32_to_v22f16_scalar(<11 x i32> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1815,17 +1913,23 @@ define inreg <22 x half> @bitcast_v11i32_to_v22f16_scalar(<11 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v11i32_to_v22f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s27, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s26, s26, 3
 ; GFX9-NEXT:    s_add_i32 s25, s25, 3
 ; GFX9-NEXT:    s_add_i32 s24, s24, 3
@@ -1837,7 +1941,7 @@ define inreg <22 x half> @bitcast_v11i32_to_v22f16_scalar(<11 x i32> inreg %a, i
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1850,19 +1954,22 @@ define inreg <22 x half> @bitcast_v11i32_to_v22f16_scalar(<11 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s25
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s26
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v11i32_to_v22f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s23, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s22, s22, 3
 ; GFX11-NEXT:    s_add_i32 s21, s21, 3
 ; GFX11-NEXT:    s_add_i32 s20, s20, 3
@@ -1874,7 +1981,7 @@ define inreg <22 x half> @bitcast_v11i32_to_v22f16_scalar(<11 x i32> inreg %a, i
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1883,8 +1990,6 @@ define inreg <22 x half> @bitcast_v11i32_to_v22f16_scalar(<11 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    v_mov_b32_e32 v10, s22
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2218,7 +2323,7 @@ define inreg <11 x i32> @bitcast_v22f16_to_v11i32_scalar(<22 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s56, s17, 16
 ; SI-NEXT:    s_lshr_b32 s57, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s27, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s57, 16
@@ -2253,8 +2358,17 @@ define inreg <11 x i32> @bitcast_v22f16_to_v11i32_scalar(<22 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s14, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s27, s15, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s27
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s27, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s27, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s57
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s56
@@ -2344,10 +2458,7 @@ define inreg <11 x i32> @bitcast_v22f16_to_v11i32_scalar(<22 x half> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v11
 ; SI-NEXT:    v_or_b32_e32 v10, v12, v10
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -2365,10 +2476,18 @@ define inreg <11 x i32> @bitcast_v22f16_to_v11i32_scalar(<22 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s27, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s26, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -2426,9 +2545,7 @@ define inreg <11 x i32> @bitcast_v22f16_to_v11i32_scalar(<22 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v11
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2446,10 +2563,18 @@ define inreg <11 x i32> @bitcast_v22f16_to_v11i32_scalar(<22 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s27, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v10, s26, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v9, s25, v0 op_sel_hi:[1,0]
@@ -2463,9 +2588,7 @@ define inreg <11 x i32> @bitcast_v22f16_to_v11i32_scalar(<22 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2488,11 +2611,16 @@ define inreg <11 x i32> @bitcast_v22f16_to_v11i32_scalar(<22 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s23, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v10, 0x200, s22 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v9, 0x200, s21 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v8, 0x200, s20 op_sel_hi:[0,1]
@@ -2505,8 +2633,6 @@ define inreg <11 x i32> @bitcast_v22f16_to_v11i32_scalar(<22 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -2714,7 +2840,7 @@ define inreg <22 x i16> @bitcast_v11f32_to_v22i16_scalar(<11 x float> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s27, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_3
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s27, s17, 16
 ; SI-NEXT:    s_lshr_b32 s43, s25, 16
@@ -2727,8 +2853,27 @@ define inreg <22 x i16> @bitcast_v11f32_to_v22i16_scalar(<11 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_4
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; SI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; SI-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -2751,21 +2896,8 @@ define inreg <22 x i16> @bitcast_v11f32_to_v22i16_scalar(<11 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v21, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v23, 16, v1
-; SI-NEXT:    s_branch .LBB13_5
-; SI-NEXT:  .LBB13_3:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB13_2
-; SI-NEXT:  .LBB13_4:
+; SI-NEXT:    s_branch .LBB13_6
+; SI-NEXT:  .LBB13_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2788,7 +2920,7 @@ define inreg <22 x i16> @bitcast_v11f32_to_v22i16_scalar(<11 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v15, s10
 ; SI-NEXT:    v_mov_b32_e32 v12, s6
 ; SI-NEXT:    v_mov_b32_e32 v11, s4
-; SI-NEXT:  .LBB13_5: ; %end
+; SI-NEXT:  .LBB13_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v17
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v14
@@ -2828,10 +2960,18 @@ define inreg <22 x i16> @bitcast_v11f32_to_v22i16_scalar(<11 x float> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s27, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_3
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB13_4
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; VI-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; VI-NEXT:    v_add_f32_e64 v8, s24, 1.0
@@ -2844,9 +2984,7 @@ define inreg <22 x i16> @bitcast_v11f32_to_v22i16_scalar(<11 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_3:
-; VI-NEXT:    s_branch .LBB13_2
-; VI-NEXT:  .LBB13_4:
+; VI-NEXT:  .LBB13_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2869,10 +3007,18 @@ define inreg <22 x i16> @bitcast_v11f32_to_v22i16_scalar(<11 x float> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s27, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_4
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v8, s24, 1.0
@@ -2885,9 +3031,7 @@ define inreg <22 x i16> @bitcast_v11f32_to_v22i16_scalar(<11 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_3:
-; GFX9-NEXT:    s_branch .LBB13_2
-; GFX9-NEXT:  .LBB13_4:
+; GFX9-NEXT:  .LBB13_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2915,11 +3059,16 @@ define inreg <22 x i16> @bitcast_v11f32_to_v22i16_scalar(<11 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s23, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_4
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB13_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v10, s22, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v9, s21, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v8, s20, 1.0
@@ -2932,8 +3081,6 @@ define inreg <22 x i16> @bitcast_v11f32_to_v22i16_scalar(<11 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_3:
-; GFX11-NEXT:    s_branch .LBB13_2
 ; GFX11-NEXT:  .LBB13_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -3233,7 +3380,7 @@ define inreg <11 x float> @bitcast_v22i16_to_v11f32_scalar(<22 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s56, s17, 16
 ; SI-NEXT:    s_lshr_b32 s57, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s27, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s57, 16
@@ -3268,8 +3415,17 @@ define inreg <11 x float> @bitcast_v22i16_to_v11f32_scalar(<22 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s14, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s27, s15, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s27
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s27, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s27, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s57, 16
@@ -3325,7 +3481,7 @@ define inreg <11 x float> @bitcast_v22i16_to_v11f32_scalar(<22 x i16> inreg %a,
 ; SI-NEXT:    s_add_i32 s12, s12, 0x30000
 ; SI-NEXT:    s_add_i32 s13, s13, 0x30000
 ; SI-NEXT:    s_add_i32 s14, s14, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
+; SI-NEXT:  .LBB15_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -3338,18 +3494,23 @@ define inreg <11 x float> @bitcast_v22i16_to_v11f32_scalar(<22 x i16> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v9, s13
 ; SI-NEXT:    v_mov_b32_e32 v10, s14
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v22i16_to_v11f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s27, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s26, 3
 ; VI-NEXT:    s_and_b32 s4, s26, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -3405,7 +3566,7 @@ define inreg <11 x float> @bitcast_v22i16_to_v11f32_scalar(<22 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
+; VI-NEXT:  .LBB15_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3418,17 +3579,23 @@ define inreg <11 x float> @bitcast_v22i16_to_v11f32_scalar(<22 x i16> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v22i16_to_v11f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s27, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v10, s26, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v9, s25, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v8, s24, 3 op_sel_hi:[1,0]
@@ -3441,9 +3608,7 @@ define inreg <11 x float> @bitcast_v22i16_to_v11f32_scalar(<22 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3466,11 +3631,16 @@ define inreg <11 x float> @bitcast_v22i16_to_v11f32_scalar(<22 x i16> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s23, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v10, s22, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v9, s21, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v8, s20, 3 op_sel_hi:[1,0]
@@ -3483,8 +3653,6 @@ define inreg <11 x float> @bitcast_v22i16_to_v11f32_scalar(<22 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -3692,7 +3860,7 @@ define inreg <22 x half> @bitcast_v11f32_to_v22f16_scalar(<11 x float> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s27, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_3
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s27, s17, 16
 ; SI-NEXT:    s_lshr_b32 s43, s25, 16
@@ -3705,8 +3873,27 @@ define inreg <22 x half> @bitcast_v11f32_to_v22f16_scalar(<11 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_4
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v5, s21, 1.0
 ; SI-NEXT:    v_add_f32_e64 v4, s20, 1.0
 ; SI-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -3729,21 +3916,8 @@ define inreg <22 x half> @bitcast_v11f32_to_v22f16_scalar(<11 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v21, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v23, 16, v1
-; SI-NEXT:    s_branch .LBB17_5
-; SI-NEXT:  .LBB17_3:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB17_2
-; SI-NEXT:  .LBB17_4:
+; SI-NEXT:    s_branch .LBB17_6
+; SI-NEXT:  .LBB17_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3766,7 +3940,7 @@ define inreg <22 x half> @bitcast_v11f32_to_v22f16_scalar(<11 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v15, s10
 ; SI-NEXT:    v_mov_b32_e32 v12, s6
 ; SI-NEXT:    v_mov_b32_e32 v11, s4
-; SI-NEXT:  .LBB17_5: ; %end
+; SI-NEXT:  .LBB17_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v17
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v14
@@ -3806,10 +3980,18 @@ define inreg <22 x half> @bitcast_v11f32_to_v22f16_scalar(<11 x float> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s27, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_3
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB17_4
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; VI-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; VI-NEXT:    v_add_f32_e64 v8, s24, 1.0
@@ -3822,9 +4004,7 @@ define inreg <22 x half> @bitcast_v11f32_to_v22f16_scalar(<11 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_3:
-; VI-NEXT:    s_branch .LBB17_2
-; VI-NEXT:  .LBB17_4:
+; VI-NEXT:  .LBB17_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3847,10 +4027,18 @@ define inreg <22 x half> @bitcast_v11f32_to_v22f16_scalar(<11 x float> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s27, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_4
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v9, s25, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v8, s24, 1.0
@@ -3863,9 +4051,7 @@ define inreg <22 x half> @bitcast_v11f32_to_v22f16_scalar(<11 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_3:
-; GFX9-NEXT:    s_branch .LBB17_2
-; GFX9-NEXT:  .LBB17_4:
+; GFX9-NEXT:  .LBB17_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3893,11 +4079,16 @@ define inreg <22 x half> @bitcast_v11f32_to_v22f16_scalar(<11 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s23, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_4
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB17_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v10, s22, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v9, s21, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v8, s20, 1.0
@@ -3910,8 +4101,6 @@ define inreg <22 x half> @bitcast_v11f32_to_v22f16_scalar(<11 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_3:
-; GFX11-NEXT:    s_branch .LBB17_2
 ; GFX11-NEXT:  .LBB17_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -4255,7 +4444,7 @@ define inreg <11 x float> @bitcast_v22f16_to_v11f32_scalar(<22 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s56, s17, 16
 ; SI-NEXT:    s_lshr_b32 s57, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s27, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s57, 16
@@ -4290,8 +4479,17 @@ define inreg <11 x float> @bitcast_v22f16_to_v11f32_scalar(<22 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s14, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s27, s15, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s27
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s27, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s27, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s57
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s56
@@ -4381,10 +4579,7 @@ define inreg <11 x float> @bitcast_v22f16_to_v11f32_scalar(<22 x half> inreg %a,
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v11
 ; SI-NEXT:    v_or_b32_e32 v10, v12, v10
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -4402,10 +4597,18 @@ define inreg <11 x float> @bitcast_v22f16_to_v11f32_scalar(<22 x half> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s27, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s26, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -4463,9 +4666,7 @@ define inreg <11 x float> @bitcast_v22f16_to_v11f32_scalar(<22 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v11
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4483,10 +4684,18 @@ define inreg <11 x float> @bitcast_v22f16_to_v11f32_scalar(<22 x half> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s27, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v10, s26, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v9, s25, v0 op_sel_hi:[1,0]
@@ -4500,9 +4709,7 @@ define inreg <11 x float> @bitcast_v22f16_to_v11f32_scalar(<22 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4525,11 +4732,16 @@ define inreg <11 x float> @bitcast_v22f16_to_v11f32_scalar(<22 x half> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s23, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v10, 0x200, s22 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v9, 0x200, s21 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v8, 0x200, s20 op_sel_hi:[0,1]
@@ -4542,8 +4754,6 @@ define inreg <11 x float> @bitcast_v22f16_to_v11f32_scalar(<22 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -4890,7 +5100,7 @@ define inreg <22 x half> @bitcast_v22i16_to_v22f16_scalar(<22 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s57, s17, 16
 ; SI-NEXT:    s_lshr_b32 s62, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s27, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_4
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s57, 16
@@ -4935,8 +5145,27 @@ define inreg <22 x half> @bitcast_v22i16_to_v22f16_scalar(<22 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[42:43], 16
 ; SI-NEXT:    s_mov_b32 s5, s45
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[44:45], 16
-; SI-NEXT:    s_cbranch_execnz .LBB21_3
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[46:47], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[46:47], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr27
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; SI-NEXT:    s_cselect_b32 s15, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s15, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s74, 16
@@ -5003,7 +5232,7 @@ define inreg <22 x half> @bitcast_v22i16_to_v22f16_scalar(<22 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s60, s7, 16
 ; SI-NEXT:    s_lshr_b32 s61, s5, 16
 ; SI-NEXT:    s_lshr_b32 s56, s27, 16
-; SI-NEXT:  .LBB21_3: ; %end
+; SI-NEXT:  .LBB21_5: ; %end
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s14
@@ -5049,28 +5278,23 @@ define inreg <22 x half> @bitcast_v22i16_to_v22f16_scalar(<22 x i16> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v9, s5
 ; SI-NEXT:    v_mov_b32_e32 v10, s14
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB21_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr27
-; SI-NEXT:    s_branch .LBB21_2
 ;
 ; VI-LABEL: bitcast_v22i16_to_v22f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s27, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_4
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_3
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s6, s17, 0xffff0000
@@ -5126,7 +5350,7 @@ define inreg <22 x half> @bitcast_v22i16_to_v22f16_scalar(<22 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB21_3: ; %end
+; VI-NEXT:  .LBB21_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5139,17 +5363,23 @@ define inreg <22 x half> @bitcast_v22i16_to_v22f16_scalar(<22 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v9, s25
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB21_4:
-; VI-NEXT:    s_branch .LBB21_2
 ;
 ; GFX9-LABEL: bitcast_v22i16_to_v22f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s27, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_4
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v10, s26, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v9, s25, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v8, s24, 3 op_sel_hi:[1,0]
@@ -5162,9 +5392,7 @@ define inreg <22 x half> @bitcast_v22i16_to_v22f16_scalar(<22 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB21_3:
-; GFX9-NEXT:    s_branch .LBB21_2
-; GFX9-NEXT:  .LBB21_4:
+; GFX9-NEXT:  .LBB21_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5192,11 +5420,16 @@ define inreg <22 x half> @bitcast_v22i16_to_v22f16_scalar(<22 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s23, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_4
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v10, s22, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v9, s21, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v8, s20, 3 op_sel_hi:[1,0]
@@ -5209,8 +5442,6 @@ define inreg <22 x half> @bitcast_v22i16_to_v22f16_scalar(<22 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB21_3:
-; GFX11-NEXT:    s_branch .LBB21_2
 ; GFX11-NEXT:  .LBB21_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -5518,10 +5749,18 @@ define inreg <22 x i16> @bitcast_v22f16_to_v22i16_scalar(<22 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s6, s17, 16
 ; SI-NEXT:    s_lshr_b32 s28, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s27, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_3
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB23_4
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s14
 ; SI-NEXT:    v_cvt_f32_f16_e32 v5, s11
@@ -5615,10 +5854,8 @@ define inreg <22 x i16> @bitcast_v22f16_to_v22i16_scalar(<22 x half> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[14:15], v[4:5], 16
 ; SI-NEXT:    v_lshr_b64 v[12:13], v[6:7], 16
 ; SI-NEXT:    v_lshr_b64 v[10:11], v[8:9], 16
-; SI-NEXT:    s_branch .LBB23_5
-; SI-NEXT:  .LBB23_3:
-; SI-NEXT:    s_branch .LBB23_2
-; SI-NEXT:  .LBB23_4:
+; SI-NEXT:    s_branch .LBB23_6
+; SI-NEXT:  .LBB23_5:
 ; SI-NEXT:    v_mov_b32_e32 v20, s12
 ; SI-NEXT:    v_mov_b32_e32 v24, s9
 ; SI-NEXT:    v_mov_b32_e32 v21, s10
@@ -5641,7 +5878,7 @@ define inreg <22 x i16> @bitcast_v22f16_to_v22i16_scalar(<22 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v14, s14
 ; SI-NEXT:    v_mov_b32_e32 v12, s13
 ; SI-NEXT:    v_mov_b32_e32 v10, s11
-; SI-NEXT:  .LBB23_5: ; %end
+; SI-NEXT:  .LBB23_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v18
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v30
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
@@ -5681,10 +5918,18 @@ define inreg <22 x i16> @bitcast_v22f16_to_v22i16_scalar(<22 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s27, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_3
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_4
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s5, s25, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v2, s5
@@ -5742,9 +5987,7 @@ define inreg <22 x i16> @bitcast_v22f16_to_v22i16_scalar(<22 x half> inreg %a, i
 ; VI-NEXT:    v_or_b32_e32 v1, v0, v1
 ; VI-NEXT:    v_or_b32_e32 v0, v11, v12
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_3:
-; VI-NEXT:    s_branch .LBB23_2
-; VI-NEXT:  .LBB23_4:
+; VI-NEXT:  .LBB23_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5767,10 +6010,18 @@ define inreg <22 x i16> @bitcast_v22f16_to_v22i16_scalar(<22 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s27, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_4
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v10, s26, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v9, s25, v0 op_sel_hi:[1,0]
@@ -5784,9 +6035,7 @@ define inreg <22 x i16> @bitcast_v22f16_to_v22i16_scalar(<22 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_3:
-; GFX9-NEXT:    s_branch .LBB23_2
-; GFX9-NEXT:  .LBB23_4:
+; GFX9-NEXT:  .LBB23_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5814,11 +6063,16 @@ define inreg <22 x i16> @bitcast_v22f16_to_v22i16_scalar(<22 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s23, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_4
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v10, 0x200, s22 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v9, 0x200, s21 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v8, 0x200, s20 op_sel_hi:[0,1]
@@ -5831,8 +6085,6 @@ define inreg <22 x i16> @bitcast_v22f16_to_v22i16_scalar(<22 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_3:
-; GFX11-NEXT:    s_branch .LBB23_2
 ; GFX11-NEXT:  .LBB23_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.384bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.384bit.ll
index 6d91f0ea85573..369bec7445f6c 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.384bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.384bit.ll
@@ -129,10 +129,18 @@ define inreg <12 x float> @bitcast_v12i32_to_v12f32_scalar(<12 x i32> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s25, s25, 3
@@ -145,7 +153,7 @@ define inreg <12 x float> @bitcast_v12i32_to_v12f32_scalar(<12 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -159,17 +167,23 @@ define inreg <12 x float> @bitcast_v12i32_to_v12f32_scalar(<12 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v10, s26
 ; SI-NEXT:    v_mov_b32_e32 v11, s27
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v12i32_to_v12f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s27, s27, 3
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s25, s25, 3
@@ -182,7 +196,7 @@ define inreg <12 x float> @bitcast_v12i32_to_v12f32_scalar(<12 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -196,17 +210,23 @@ define inreg <12 x float> @bitcast_v12i32_to_v12f32_scalar(<12 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    v_mov_b32_e32 v11, s27
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v12i32_to_v12f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s27, s27, 3
 ; GFX9-NEXT:    s_add_i32 s26, s26, 3
 ; GFX9-NEXT:    s_add_i32 s25, s25, 3
@@ -219,7 +239,7 @@ define inreg <12 x float> @bitcast_v12i32_to_v12f32_scalar(<12 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -233,19 +253,22 @@ define inreg <12 x float> @bitcast_v12i32_to_v12f32_scalar(<12 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s26
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s27
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v12i32_to_v12f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s23, s23, 3
 ; GFX11-NEXT:    s_add_i32 s22, s22, 3
 ; GFX11-NEXT:    s_add_i32 s21, s21, 3
@@ -258,7 +281,7 @@ define inreg <12 x float> @bitcast_v12i32_to_v12f32_scalar(<12 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -267,8 +290,6 @@ define inreg <12 x float> @bitcast_v12i32_to_v12f32_scalar(<12 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -402,10 +423,18 @@ define inreg <12 x i32> @bitcast_v12f32_to_v12i32_scalar(<12 x float> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v11, s27, 1.0
 ; SI-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; SI-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -419,9 +448,7 @@ define inreg <12 x i32> @bitcast_v12f32_to_v12i32_scalar(<12 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -440,10 +467,18 @@ define inreg <12 x i32> @bitcast_v12f32_to_v12i32_scalar(<12 x float> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v11, s27, 1.0
 ; VI-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; VI-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -457,9 +492,7 @@ define inreg <12 x i32> @bitcast_v12f32_to_v12i32_scalar(<12 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -478,10 +511,18 @@ define inreg <12 x i32> @bitcast_v12f32_to_v12i32_scalar(<12 x float> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v11, s27, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -495,9 +536,7 @@ define inreg <12 x i32> @bitcast_v12f32_to_v12i32_scalar(<12 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -521,11 +560,16 @@ define inreg <12 x i32> @bitcast_v12f32_to_v12i32_scalar(<12 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v11, s23, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v10, s22, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v9, s21, 1.0
@@ -539,8 +583,6 @@ define inreg <12 x i32> @bitcast_v12f32_to_v12i32_scalar(<12 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -689,10 +731,18 @@ define inreg <6 x double> @bitcast_v12i32_to_v6f64_scalar(<12 x i32> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s25, s25, 3
@@ -705,7 +755,7 @@ define inreg <6 x double> @bitcast_v12i32_to_v6f64_scalar(<12 x i32> inreg %a, i
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -719,17 +769,23 @@ define inreg <6 x double> @bitcast_v12i32_to_v6f64_scalar(<12 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v10, s26
 ; SI-NEXT:    v_mov_b32_e32 v11, s27
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v12i32_to_v6f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s27, s27, 3
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s25, s25, 3
@@ -742,7 +798,7 @@ define inreg <6 x double> @bitcast_v12i32_to_v6f64_scalar(<12 x i32> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -756,17 +812,23 @@ define inreg <6 x double> @bitcast_v12i32_to_v6f64_scalar(<12 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    v_mov_b32_e32 v11, s27
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v12i32_to_v6f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s27, s27, 3
 ; GFX9-NEXT:    s_add_i32 s26, s26, 3
 ; GFX9-NEXT:    s_add_i32 s25, s25, 3
@@ -779,7 +841,7 @@ define inreg <6 x double> @bitcast_v12i32_to_v6f64_scalar(<12 x i32> inreg %a, i
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -793,19 +855,22 @@ define inreg <6 x double> @bitcast_v12i32_to_v6f64_scalar(<12 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s26
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s27
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v12i32_to_v6f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s23, s23, 3
 ; GFX11-NEXT:    s_add_i32 s22, s22, 3
 ; GFX11-NEXT:    s_add_i32 s21, s21, 3
@@ -818,7 +883,7 @@ define inreg <6 x double> @bitcast_v12i32_to_v6f64_scalar(<12 x i32> inreg %a, i
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -827,8 +892,6 @@ define inreg <6 x double> @bitcast_v12i32_to_v6f64_scalar(<12 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -945,10 +1008,18 @@ define inreg <12 x i32> @bitcast_v6f64_to_v12i32_scalar(<6 x double> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_3
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB7_4
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
@@ -956,9 +1027,7 @@ define inreg <12 x i32> @bitcast_v6f64_to_v12i32_scalar(<6 x double> inreg %a, i
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_3:
-; SI-NEXT:    s_branch .LBB7_2
-; SI-NEXT:  .LBB7_4:
+; SI-NEXT:  .LBB7_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -977,10 +1046,18 @@ define inreg <12 x i32> @bitcast_v6f64_to_v12i32_scalar(<6 x double> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_3
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_4
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
@@ -988,9 +1065,7 @@ define inreg <12 x i32> @bitcast_v6f64_to_v12i32_scalar(<6 x double> inreg %a, i
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_3:
-; VI-NEXT:    s_branch .LBB7_2
-; VI-NEXT:  .LBB7_4:
+; VI-NEXT:  .LBB7_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1009,10 +1084,18 @@ define inreg <12 x i32> @bitcast_v6f64_to_v12i32_scalar(<6 x double> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_4
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
@@ -1020,9 +1103,7 @@ define inreg <12 x i32> @bitcast_v6f64_to_v12i32_scalar(<6 x double> inreg %a, i
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_3:
-; GFX9-NEXT:    s_branch .LBB7_2
-; GFX9-NEXT:  .LBB7_4:
+; GFX9-NEXT:  .LBB7_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1046,11 +1127,16 @@ define inreg <12 x i32> @bitcast_v6f64_to_v12i32_scalar(<6 x double> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_4
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
 ; GFX11-NEXT:    v_add_f64 v[8:9], s[20:21], 1.0
 ; GFX11-NEXT:    v_add_f64 v[6:7], s[18:19], 1.0
@@ -1058,8 +1144,6 @@ define inreg <12 x i32> @bitcast_v6f64_to_v12i32_scalar(<6 x double> inreg %a, i
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_3:
-; GFX11-NEXT:    s_branch .LBB7_2
 ; GFX11-NEXT:  .LBB7_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -1208,10 +1292,18 @@ define inreg <6 x i64> @bitcast_v12i32_to_v6i64_scalar(<12 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s25, s25, 3
@@ -1224,7 +1316,7 @@ define inreg <6 x i64> @bitcast_v12i32_to_v6i64_scalar(<12 x i32> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1238,17 +1330,23 @@ define inreg <6 x i64> @bitcast_v12i32_to_v6i64_scalar(<12 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v10, s26
 ; SI-NEXT:    v_mov_b32_e32 v11, s27
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v12i32_to_v6i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s27, s27, 3
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s25, s25, 3
@@ -1261,7 +1359,7 @@ define inreg <6 x i64> @bitcast_v12i32_to_v6i64_scalar(<12 x i32> inreg %a, i32
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1275,17 +1373,23 @@ define inreg <6 x i64> @bitcast_v12i32_to_v6i64_scalar(<12 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    v_mov_b32_e32 v11, s27
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v12i32_to_v6i64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s27, s27, 3
 ; GFX9-NEXT:    s_add_i32 s26, s26, 3
 ; GFX9-NEXT:    s_add_i32 s25, s25, 3
@@ -1298,7 +1402,7 @@ define inreg <6 x i64> @bitcast_v12i32_to_v6i64_scalar(<12 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1312,19 +1416,22 @@ define inreg <6 x i64> @bitcast_v12i32_to_v6i64_scalar(<12 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s26
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s27
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v12i32_to_v6i64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s23, s23, 3
 ; GFX11-NEXT:    s_add_i32 s22, s22, 3
 ; GFX11-NEXT:    s_add_i32 s21, s21, 3
@@ -1337,7 +1444,7 @@ define inreg <6 x i64> @bitcast_v12i32_to_v6i64_scalar(<12 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1346,8 +1453,6 @@ define inreg <6 x i64> @bitcast_v12i32_to_v6i64_scalar(<12 x i32> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1491,10 +1596,18 @@ define inreg <12 x i32> @bitcast_v6i64_to_v12i32_scalar(<6 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_4
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB11_3
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s26, s26, 3
 ; SI-NEXT:    s_addc_u32 s27, s27, 0
 ; SI-NEXT:    s_add_u32 s24, s24, 3
@@ -1507,7 +1620,7 @@ define inreg <12 x i32> @bitcast_v6i64_to_v12i32_scalar(<6 x i64> inreg %a, i32
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB11_3: ; %end
+; SI-NEXT:  .LBB11_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1521,17 +1634,23 @@ define inreg <12 x i32> @bitcast_v6i64_to_v12i32_scalar(<6 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v10, s26
 ; SI-NEXT:    v_mov_b32_e32 v11, s27
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB11_4:
-; SI-NEXT:    s_branch .LBB11_2
 ;
 ; VI-LABEL: bitcast_v6i64_to_v12i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_4
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_3
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s26, s26, 3
 ; VI-NEXT:    s_addc_u32 s27, s27, 0
 ; VI-NEXT:    s_add_u32 s24, s24, 3
@@ -1544,7 +1663,7 @@ define inreg <12 x i32> @bitcast_v6i64_to_v12i32_scalar(<6 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB11_3: ; %end
+; VI-NEXT:  .LBB11_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1558,17 +1677,23 @@ define inreg <12 x i32> @bitcast_v6i64_to_v12i32_scalar(<6 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    v_mov_b32_e32 v11, s27
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB11_4:
-; VI-NEXT:    s_branch .LBB11_2
 ;
 ; GFX9-LABEL: bitcast_v6i64_to_v12i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_3
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s26, s26, 3
 ; GFX9-NEXT:    s_addc_u32 s27, s27, 0
 ; GFX9-NEXT:    s_add_u32 s24, s24, 3
@@ -1581,7 +1706,7 @@ define inreg <12 x i32> @bitcast_v6i64_to_v12i32_scalar(<6 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB11_3: ; %end
+; GFX9-NEXT:  .LBB11_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1595,19 +1720,22 @@ define inreg <12 x i32> @bitcast_v6i64_to_v12i32_scalar(<6 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s26
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s27
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB11_4:
-; GFX9-NEXT:    s_branch .LBB11_2
 ;
 ; GFX11-LABEL: bitcast_v6i64_to_v12i32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_3
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s22, s22, 3
 ; GFX11-NEXT:    s_addc_u32 s23, s23, 0
 ; GFX11-NEXT:    s_add_u32 s20, s20, 3
@@ -1620,7 +1748,7 @@ define inreg <12 x i32> @bitcast_v6i64_to_v12i32_scalar(<6 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB11_3: ; %end
+; GFX11-NEXT:  .LBB11_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1629,8 +1757,6 @@ define inreg <12 x i32> @bitcast_v6i64_to_v12i32_scalar(<6 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB11_4:
-; GFX11-NEXT:    s_branch .LBB11_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1846,7 +1972,7 @@ define inreg <24 x i16> @bitcast_v12i32_to_v24i16_scalar(<12 x i32> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s40, s27, 16
 ; SI-NEXT:    s_lshr_b32 s41, s25, 16
@@ -1860,8 +1986,28 @@ define inreg <24 x i16> @bitcast_v12i32_to_v24i16_scalar(<12 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -1886,7 +2032,7 @@ define inreg <24 x i16> @bitcast_v12i32_to_v24i16_scalar(<12 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s43, s21, 16
 ; SI-NEXT:    s_lshr_b32 s44, s19, 16
 ; SI-NEXT:    s_lshr_b32 s45, s17, 16
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s14, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -1936,29 +2082,23 @@ define inreg <24 x i16> @bitcast_v12i32_to_v24i16_scalar(<12 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v10, s4
 ; SI-NEXT:    v_mov_b32_e32 v11, s15
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_v12i32_to_v24i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s27, s27, 3
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s25, s25, 3
@@ -1971,7 +2111,7 @@ define inreg <24 x i16> @bitcast_v12i32_to_v24i16_scalar(<12 x i32> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1985,17 +2125,23 @@ define inreg <24 x i16> @bitcast_v12i32_to_v24i16_scalar(<12 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    v_mov_b32_e32 v11, s27
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v12i32_to_v24i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s27, s27, 3
 ; GFX9-NEXT:    s_add_i32 s26, s26, 3
 ; GFX9-NEXT:    s_add_i32 s25, s25, 3
@@ -2008,7 +2154,7 @@ define inreg <24 x i16> @bitcast_v12i32_to_v24i16_scalar(<12 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB13_3: ; %end
+; GFX9-NEXT:  .LBB13_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2022,19 +2168,22 @@ define inreg <24 x i16> @bitcast_v12i32_to_v24i16_scalar(<12 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s26
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s27
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_v12i32_to_v24i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB13_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s23, s23, 3
 ; GFX11-NEXT:    s_add_i32 s22, s22, 3
 ; GFX11-NEXT:    s_add_i32 s21, s21, 3
@@ -2047,7 +2196,7 @@ define inreg <24 x i16> @bitcast_v12i32_to_v24i16_scalar(<12 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2056,8 +2205,6 @@ define inreg <24 x i16> @bitcast_v12i32_to_v24i16_scalar(<12 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2364,7 +2511,7 @@ define inreg <12 x i32> @bitcast_v24i16_to_v12i32_scalar(<24 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s58, s17, 16
 ; SI-NEXT:    s_lshr_b32 s59, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -2402,8 +2549,17 @@ define inreg <12 x i32> @bitcast_v24i16_to_v12i32_scalar(<24 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s15, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s28, s40, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s28
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s28, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s28, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -2464,7 +2620,7 @@ define inreg <12 x i32> @bitcast_v24i16_to_v12i32_scalar(<24 x i16> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s13, s13, 0x30000
 ; SI-NEXT:    s_add_i32 s14, s14, 0x30000
 ; SI-NEXT:    s_add_i32 s15, s15, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
+; SI-NEXT:  .LBB15_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -2478,18 +2634,23 @@ define inreg <12 x i32> @bitcast_v24i16_to_v12i32_scalar(<24 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v10, s14
 ; SI-NEXT:    v_mov_b32_e32 v11, s15
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v24i16_to_v12i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s27, 3
 ; VI-NEXT:    s_and_b32 s4, s27, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -2550,7 +2711,7 @@ define inreg <12 x i32> @bitcast_v24i16_to_v12i32_scalar(<24 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
+; VI-NEXT:  .LBB15_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2564,17 +2725,23 @@ define inreg <12 x i32> @bitcast_v24i16_to_v12i32_scalar(<24 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    v_mov_b32_e32 v11, s27
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v24i16_to_v12i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v11, s27, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v10, s26, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v9, s25, 3 op_sel_hi:[1,0]
@@ -2588,9 +2755,7 @@ define inreg <12 x i32> @bitcast_v24i16_to_v12i32_scalar(<24 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2614,11 +2779,16 @@ define inreg <12 x i32> @bitcast_v24i16_to_v12i32_scalar(<24 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v11, s23, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v10, s22, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v9, s21, 3 op_sel_hi:[1,0]
@@ -2632,8 +2802,6 @@ define inreg <12 x i32> @bitcast_v24i16_to_v12i32_scalar(<24 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -2857,7 +3025,7 @@ define inreg <24 x half> @bitcast_v12i32_to_v24f16_scalar(<12 x i32> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s40, s27, 16
 ; SI-NEXT:    s_lshr_b32 s41, s25, 16
@@ -2871,8 +3039,28 @@ define inreg <24 x half> @bitcast_v12i32_to_v24f16_scalar(<12 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -2897,7 +3085,7 @@ define inreg <24 x half> @bitcast_v12i32_to_v24f16_scalar(<12 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s43, s21, 16
 ; SI-NEXT:    s_lshr_b32 s44, s19, 16
 ; SI-NEXT:    s_lshr_b32 s45, s17, 16
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s14, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -2947,29 +3135,23 @@ define inreg <24 x half> @bitcast_v12i32_to_v24f16_scalar(<12 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v10, s4
 ; SI-NEXT:    v_mov_b32_e32 v11, s15
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_v12i32_to_v24f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s27, s27, 3
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s25, s25, 3
@@ -2982,7 +3164,7 @@ define inreg <24 x half> @bitcast_v12i32_to_v24f16_scalar(<12 x i32> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2996,17 +3178,23 @@ define inreg <24 x half> @bitcast_v12i32_to_v24f16_scalar(<12 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    v_mov_b32_e32 v11, s27
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v12i32_to_v24f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s27, s27, 3
 ; GFX9-NEXT:    s_add_i32 s26, s26, 3
 ; GFX9-NEXT:    s_add_i32 s25, s25, 3
@@ -3019,7 +3207,7 @@ define inreg <24 x half> @bitcast_v12i32_to_v24f16_scalar(<12 x i32> inreg %a, i
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3033,19 +3221,22 @@ define inreg <24 x half> @bitcast_v12i32_to_v24f16_scalar(<12 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s26
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s27
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v12i32_to_v24f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB17_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s23, s23, 3
 ; GFX11-NEXT:    s_add_i32 s22, s22, 3
 ; GFX11-NEXT:    s_add_i32 s21, s21, 3
@@ -3058,7 +3249,7 @@ define inreg <24 x half> @bitcast_v12i32_to_v24f16_scalar(<12 x i32> inreg %a, i
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -3067,8 +3258,6 @@ define inreg <24 x half> @bitcast_v12i32_to_v24f16_scalar(<12 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -3423,7 +3612,7 @@ define inreg <12 x i32> @bitcast_v24f16_to_v12i32_scalar(<24 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s58, s17, 16
 ; SI-NEXT:    s_lshr_b32 s59, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -3461,8 +3650,17 @@ define inreg <12 x i32> @bitcast_v24f16_to_v12i32_scalar(<24 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s15, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s28, s40, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s28
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s28, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s28, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s59
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s58
@@ -3560,10 +3758,7 @@ define inreg <12 x i32> @bitcast_v24f16_to_v12i32_scalar(<24 x half> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v12
 ; SI-NEXT:    v_or_b32_e32 v11, v13, v11
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -3582,10 +3777,18 @@ define inreg <12 x i32> @bitcast_v24f16_to_v12i32_scalar(<24 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s27, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -3648,9 +3851,7 @@ define inreg <12 x i32> @bitcast_v24f16_to_v12i32_scalar(<24 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v12
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3669,10 +3870,18 @@ define inreg <12 x i32> @bitcast_v24f16_to_v12i32_scalar(<24 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v11, s27, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v10, s26, v0 op_sel_hi:[1,0]
@@ -3687,9 +3896,7 @@ define inreg <12 x i32> @bitcast_v24f16_to_v12i32_scalar(<24 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3713,11 +3920,16 @@ define inreg <12 x i32> @bitcast_v24f16_to_v12i32_scalar(<24 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v11, 0x200, s23 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v10, 0x200, s22 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v9, 0x200, s21 op_sel_hi:[0,1]
@@ -3731,8 +3943,6 @@ define inreg <12 x i32> @bitcast_v24f16_to_v12i32_scalar(<24 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -3874,10 +4084,18 @@ define inreg <6 x double> @bitcast_v12f32_to_v6f64_scalar(<12 x float> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_3
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB21_4
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v11, s27, 1.0
 ; SI-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; SI-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -3891,9 +4109,7 @@ define inreg <6 x double> @bitcast_v12f32_to_v6f64_scalar(<12 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB21_3:
-; SI-NEXT:    s_branch .LBB21_2
-; SI-NEXT:  .LBB21_4:
+; SI-NEXT:  .LBB21_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3916,10 +4132,18 @@ define inreg <6 x double> @bitcast_v12f32_to_v6f64_scalar(<12 x float> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_3
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_4
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v11, s27, 1.0
 ; VI-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; VI-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -3933,9 +4157,7 @@ define inreg <6 x double> @bitcast_v12f32_to_v6f64_scalar(<12 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB21_3:
-; VI-NEXT:    s_branch .LBB21_2
-; VI-NEXT:  .LBB21_4:
+; VI-NEXT:  .LBB21_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3958,10 +4180,18 @@ define inreg <6 x double> @bitcast_v12f32_to_v6f64_scalar(<12 x float> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_4
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v11, s27, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -3975,9 +4205,7 @@ define inreg <6 x double> @bitcast_v12f32_to_v6f64_scalar(<12 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB21_3:
-; GFX9-NEXT:    s_branch .LBB21_2
-; GFX9-NEXT:  .LBB21_4:
+; GFX9-NEXT:  .LBB21_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4005,11 +4233,16 @@ define inreg <6 x double> @bitcast_v12f32_to_v6f64_scalar(<12 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_4
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v11, s23, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v10, s22, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v9, s21, 1.0
@@ -4023,8 +4256,6 @@ define inreg <6 x double> @bitcast_v12f32_to_v6f64_scalar(<12 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB21_3:
-; GFX11-NEXT:    s_branch .LBB21_2
 ; GFX11-NEXT:  .LBB21_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -4151,10 +4382,18 @@ define inreg <12 x float> @bitcast_v6f64_to_v12f32_scalar(<6 x double> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_3
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB23_4
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
@@ -4162,9 +4401,7 @@ define inreg <12 x float> @bitcast_v6f64_to_v12f32_scalar(<6 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_3:
-; SI-NEXT:    s_branch .LBB23_2
-; SI-NEXT:  .LBB23_4:
+; SI-NEXT:  .LBB23_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4183,10 +4420,18 @@ define inreg <12 x float> @bitcast_v6f64_to_v12f32_scalar(<6 x double> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_3
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_4
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
@@ -4194,9 +4439,7 @@ define inreg <12 x float> @bitcast_v6f64_to_v12f32_scalar(<6 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_3:
-; VI-NEXT:    s_branch .LBB23_2
-; VI-NEXT:  .LBB23_4:
+; VI-NEXT:  .LBB23_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4215,10 +4458,18 @@ define inreg <12 x float> @bitcast_v6f64_to_v12f32_scalar(<6 x double> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_4
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
@@ -4226,9 +4477,7 @@ define inreg <12 x float> @bitcast_v6f64_to_v12f32_scalar(<6 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_3:
-; GFX9-NEXT:    s_branch .LBB23_2
-; GFX9-NEXT:  .LBB23_4:
+; GFX9-NEXT:  .LBB23_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4252,11 +4501,16 @@ define inreg <12 x float> @bitcast_v6f64_to_v12f32_scalar(<6 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_4
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
 ; GFX11-NEXT:    v_add_f64 v[8:9], s[20:21], 1.0
 ; GFX11-NEXT:    v_add_f64 v[6:7], s[18:19], 1.0
@@ -4264,8 +4518,6 @@ define inreg <12 x float> @bitcast_v6f64_to_v12f32_scalar(<6 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_3:
-; GFX11-NEXT:    s_branch .LBB23_2
 ; GFX11-NEXT:  .LBB23_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -4407,10 +4659,18 @@ define inreg <6 x i64> @bitcast_v12f32_to_v6i64_scalar(<12 x float> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_3
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB25_4
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v11, s27, 1.0
 ; SI-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; SI-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -4424,9 +4684,7 @@ define inreg <6 x i64> @bitcast_v12f32_to_v6i64_scalar(<12 x float> inreg %a, i3
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB25_3:
-; SI-NEXT:    s_branch .LBB25_2
-; SI-NEXT:  .LBB25_4:
+; SI-NEXT:  .LBB25_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4449,10 +4707,18 @@ define inreg <6 x i64> @bitcast_v12f32_to_v6i64_scalar(<12 x float> inreg %a, i3
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_3
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB25_4
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v11, s27, 1.0
 ; VI-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; VI-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -4466,9 +4732,7 @@ define inreg <6 x i64> @bitcast_v12f32_to_v6i64_scalar(<12 x float> inreg %a, i3
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB25_3:
-; VI-NEXT:    s_branch .LBB25_2
-; VI-NEXT:  .LBB25_4:
+; VI-NEXT:  .LBB25_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4491,10 +4755,18 @@ define inreg <6 x i64> @bitcast_v12f32_to_v6i64_scalar(<12 x float> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_4
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v11, s27, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -4508,9 +4780,7 @@ define inreg <6 x i64> @bitcast_v12f32_to_v6i64_scalar(<12 x float> inreg %a, i3
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB25_3:
-; GFX9-NEXT:    s_branch .LBB25_2
-; GFX9-NEXT:  .LBB25_4:
+; GFX9-NEXT:  .LBB25_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4538,11 +4808,16 @@ define inreg <6 x i64> @bitcast_v12f32_to_v6i64_scalar(<12 x float> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_4
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB25_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v11, s23, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v10, s22, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v9, s21, 1.0
@@ -4556,8 +4831,6 @@ define inreg <6 x i64> @bitcast_v12f32_to_v6i64_scalar(<12 x float> inreg %a, i3
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB25_3:
-; GFX11-NEXT:    s_branch .LBB25_2
 ; GFX11-NEXT:  .LBB25_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -4711,10 +4984,18 @@ define inreg <12 x float> @bitcast_v6i64_to_v12f32_scalar(<6 x i64> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB27_4
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB27_3
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s26, s26, 3
 ; SI-NEXT:    s_addc_u32 s27, s27, 0
 ; SI-NEXT:    s_add_u32 s24, s24, 3
@@ -4727,7 +5008,7 @@ define inreg <12 x float> @bitcast_v6i64_to_v12f32_scalar(<6 x i64> inreg %a, i3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB27_3: ; %end
+; SI-NEXT:  .LBB27_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4741,17 +5022,23 @@ define inreg <12 x float> @bitcast_v6i64_to_v12f32_scalar(<6 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v10, s26
 ; SI-NEXT:    v_mov_b32_e32 v11, s27
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB27_4:
-; SI-NEXT:    s_branch .LBB27_2
 ;
 ; VI-LABEL: bitcast_v6i64_to_v12f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_4
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB27_3
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s26, s26, 3
 ; VI-NEXT:    s_addc_u32 s27, s27, 0
 ; VI-NEXT:    s_add_u32 s24, s24, 3
@@ -4764,7 +5051,7 @@ define inreg <12 x float> @bitcast_v6i64_to_v12f32_scalar(<6 x i64> inreg %a, i3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB27_3: ; %end
+; VI-NEXT:  .LBB27_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4778,17 +5065,23 @@ define inreg <12 x float> @bitcast_v6i64_to_v12f32_scalar(<6 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    v_mov_b32_e32 v11, s27
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB27_4:
-; VI-NEXT:    s_branch .LBB27_2
 ;
 ; GFX9-LABEL: bitcast_v6i64_to_v12f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_3
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s26, s26, 3
 ; GFX9-NEXT:    s_addc_u32 s27, s27, 0
 ; GFX9-NEXT:    s_add_u32 s24, s24, 3
@@ -4801,7 +5094,7 @@ define inreg <12 x float> @bitcast_v6i64_to_v12f32_scalar(<6 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB27_3: ; %end
+; GFX9-NEXT:  .LBB27_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4815,19 +5108,22 @@ define inreg <12 x float> @bitcast_v6i64_to_v12f32_scalar(<6 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s26
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s27
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB27_4:
-; GFX9-NEXT:    s_branch .LBB27_2
 ;
 ; GFX11-LABEL: bitcast_v6i64_to_v12f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_3
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB27_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s22, s22, 3
 ; GFX11-NEXT:    s_addc_u32 s23, s23, 0
 ; GFX11-NEXT:    s_add_u32 s20, s20, 3
@@ -4840,7 +5136,7 @@ define inreg <12 x float> @bitcast_v6i64_to_v12f32_scalar(<6 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB27_3: ; %end
+; GFX11-NEXT:  .LBB27_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -4849,8 +5145,6 @@ define inreg <12 x float> @bitcast_v6i64_to_v12f32_scalar(<6 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB27_4:
-; GFX11-NEXT:    s_branch .LBB27_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -5059,7 +5353,7 @@ define inreg <24 x i16> @bitcast_v12f32_to_v24i16_scalar(<12 x float> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s45, s27, 16
 ; SI-NEXT:    s_lshr_b32 s44, s25, 16
@@ -5073,8 +5367,28 @@ define inreg <24 x i16> @bitcast_v12f32_to_v24i16_scalar(<12 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v11, s27, 1.0
 ; SI-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; SI-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -5099,22 +5413,8 @@ define inreg <24 x i16> @bitcast_v12f32_to_v24i16_scalar(<12 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v23, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v1
-; SI-NEXT:    s_branch .LBB29_5
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:    s_branch .LBB29_6
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5139,7 +5439,7 @@ define inreg <24 x i16> @bitcast_v12f32_to_v24i16_scalar(<12 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v14, s8
 ; SI-NEXT:    v_mov_b32_e32 v13, s6
 ; SI-NEXT:    v_mov_b32_e32 v12, s4
-; SI-NEXT:  .LBB29_5: ; %end
+; SI-NEXT:  .LBB29_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v16
@@ -5182,10 +5482,18 @@ define inreg <24 x i16> @bitcast_v12f32_to_v24i16_scalar(<12 x float> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v11, s27, 1.0
 ; VI-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; VI-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -5199,9 +5507,7 @@ define inreg <24 x i16> @bitcast_v12f32_to_v24i16_scalar(<12 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5224,10 +5530,18 @@ define inreg <24 x i16> @bitcast_v12f32_to_v24i16_scalar(<12 x float> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v11, s27, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -5241,9 +5555,7 @@ define inreg <24 x i16> @bitcast_v12f32_to_v24i16_scalar(<12 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5271,11 +5583,16 @@ define inreg <24 x i16> @bitcast_v12f32_to_v24i16_scalar(<12 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB29_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB29_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v11, s23, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v10, s22, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v9, s21, 1.0
@@ -5289,8 +5606,6 @@ define inreg <24 x i16> @bitcast_v12f32_to_v24i16_scalar(<12 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB29_3:
-; GFX11-NEXT:    s_branch .LBB29_2
 ; GFX11-NEXT:  .LBB29_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -5607,7 +5922,7 @@ define inreg <12 x float> @bitcast_v24i16_to_v12f32_scalar(<24 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s58, s17, 16
 ; SI-NEXT:    s_lshr_b32 s59, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_4
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -5645,8 +5960,17 @@ define inreg <12 x float> @bitcast_v24i16_to_v12f32_scalar(<24 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s15, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s28, s40, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s28
-; SI-NEXT:    s_cbranch_execnz .LBB31_3
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s28, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s28, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -5707,7 +6031,7 @@ define inreg <12 x float> @bitcast_v24i16_to_v12f32_scalar(<24 x i16> inreg %a,
 ; SI-NEXT:    s_add_i32 s13, s13, 0x30000
 ; SI-NEXT:    s_add_i32 s14, s14, 0x30000
 ; SI-NEXT:    s_add_i32 s15, s15, 0x30000
-; SI-NEXT:  .LBB31_3: ; %end
+; SI-NEXT:  .LBB31_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -5721,18 +6045,23 @@ define inreg <12 x float> @bitcast_v24i16_to_v12f32_scalar(<24 x i16> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v10, s14
 ; SI-NEXT:    v_mov_b32_e32 v11, s15
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
-; SI-NEXT:    s_branch .LBB31_2
 ;
 ; VI-LABEL: bitcast_v24i16_to_v12f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_4
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB31_3
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s27, 3
 ; VI-NEXT:    s_and_b32 s4, s27, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -5793,7 +6122,7 @@ define inreg <12 x float> @bitcast_v24i16_to_v12f32_scalar(<24 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB31_3: ; %end
+; VI-NEXT:  .LBB31_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5807,17 +6136,23 @@ define inreg <12 x float> @bitcast_v24i16_to_v12f32_scalar(<24 x i16> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    v_mov_b32_e32 v11, s27
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_4:
-; VI-NEXT:    s_branch .LBB31_2
 ;
 ; GFX9-LABEL: bitcast_v24i16_to_v12f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_4
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v11, s27, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v10, s26, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v9, s25, 3 op_sel_hi:[1,0]
@@ -5831,9 +6166,7 @@ define inreg <12 x float> @bitcast_v24i16_to_v12f32_scalar(<24 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB31_3:
-; GFX9-NEXT:    s_branch .LBB31_2
-; GFX9-NEXT:  .LBB31_4:
+; GFX9-NEXT:  .LBB31_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5857,11 +6190,16 @@ define inreg <12 x float> @bitcast_v24i16_to_v12f32_scalar(<24 x i16> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_4
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v11, s23, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v10, s22, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v9, s21, 3 op_sel_hi:[1,0]
@@ -5875,8 +6213,6 @@ define inreg <12 x float> @bitcast_v24i16_to_v12f32_scalar(<24 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_3:
-; GFX11-NEXT:    s_branch .LBB31_2
 ; GFX11-NEXT:  .LBB31_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -6093,7 +6429,7 @@ define inreg <24 x half> @bitcast_v12f32_to_v24f16_scalar(<12 x float> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s45, s27, 16
 ; SI-NEXT:    s_lshr_b32 s44, s25, 16
@@ -6107,8 +6443,28 @@ define inreg <24 x half> @bitcast_v12f32_to_v24f16_scalar(<12 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v11, s27, 1.0
 ; SI-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; SI-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -6133,22 +6489,8 @@ define inreg <24 x half> @bitcast_v12f32_to_v24f16_scalar(<12 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v23, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v1
-; SI-NEXT:    s_branch .LBB33_5
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:    s_branch .LBB33_6
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6173,7 +6515,7 @@ define inreg <24 x half> @bitcast_v12f32_to_v24f16_scalar(<12 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v14, s8
 ; SI-NEXT:    v_mov_b32_e32 v13, s6
 ; SI-NEXT:    v_mov_b32_e32 v12, s4
-; SI-NEXT:  .LBB33_5: ; %end
+; SI-NEXT:  .LBB33_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v16
@@ -6216,10 +6558,18 @@ define inreg <24 x half> @bitcast_v12f32_to_v24f16_scalar(<12 x float> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v11, s27, 1.0
 ; VI-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; VI-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -6233,9 +6583,7 @@ define inreg <24 x half> @bitcast_v12f32_to_v24f16_scalar(<12 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6258,10 +6606,18 @@ define inreg <24 x half> @bitcast_v12f32_to_v24f16_scalar(<12 x float> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v11, s27, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v10, s26, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v9, s25, 1.0
@@ -6275,9 +6631,7 @@ define inreg <24 x half> @bitcast_v12f32_to_v24f16_scalar(<12 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6305,11 +6659,16 @@ define inreg <24 x half> @bitcast_v12f32_to_v24f16_scalar(<12 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB33_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB33_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v11, s23, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v10, s22, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v9, s21, 1.0
@@ -6323,8 +6682,6 @@ define inreg <24 x half> @bitcast_v12f32_to_v24f16_scalar(<12 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB33_3:
-; GFX11-NEXT:    s_branch .LBB33_2
 ; GFX11-NEXT:  .LBB33_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -6689,7 +7046,7 @@ define inreg <12 x float> @bitcast_v24f16_to_v12f32_scalar(<24 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s58, s17, 16
 ; SI-NEXT:    s_lshr_b32 s59, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_3
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -6727,8 +7084,17 @@ define inreg <12 x float> @bitcast_v24f16_to_v12f32_scalar(<24 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s15, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s28, s40, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s28
-; SI-NEXT:    s_cbranch_execnz .LBB35_4
-; SI-NEXT:  .LBB35_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s28, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s28, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s59
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s58
@@ -6826,10 +7192,7 @@ define inreg <12 x float> @bitcast_v24f16_to_v12f32_scalar(<24 x half> inreg %a,
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v12
 ; SI-NEXT:    v_or_b32_e32 v11, v13, v11
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB35_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
-; SI-NEXT:    s_branch .LBB35_2
-; SI-NEXT:  .LBB35_4:
+; SI-NEXT:  .LBB35_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -6848,10 +7211,18 @@ define inreg <12 x float> @bitcast_v24f16_to_v12f32_scalar(<24 x half> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s27, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -6914,9 +7285,7 @@ define inreg <12 x float> @bitcast_v24f16_to_v12f32_scalar(<24 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v12
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6935,10 +7304,18 @@ define inreg <12 x float> @bitcast_v24f16_to_v12f32_scalar(<24 x half> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v11, s27, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v10, s26, v0 op_sel_hi:[1,0]
@@ -6953,9 +7330,7 @@ define inreg <12 x float> @bitcast_v24f16_to_v12f32_scalar(<24 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6979,11 +7354,16 @@ define inreg <12 x float> @bitcast_v24f16_to_v12f32_scalar(<24 x half> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v11, 0x200, s23 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v10, 0x200, s22 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v9, 0x200, s21 op_sel_hi:[0,1]
@@ -6997,8 +7377,6 @@ define inreg <12 x float> @bitcast_v24f16_to_v12f32_scalar(<24 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -7123,10 +7501,18 @@ define inreg <6 x i64> @bitcast_v6f64_to_v6i64_scalar(<6 x double> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_3
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB37_4
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
@@ -7134,9 +7520,7 @@ define inreg <6 x i64> @bitcast_v6f64_to_v6i64_scalar(<6 x double> inreg %a, i32
 ; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB37_3:
-; SI-NEXT:    s_branch .LBB37_2
-; SI-NEXT:  .LBB37_4:
+; SI-NEXT:  .LBB37_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7159,10 +7543,18 @@ define inreg <6 x i64> @bitcast_v6f64_to_v6i64_scalar(<6 x double> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_3
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_4
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
@@ -7170,9 +7562,7 @@ define inreg <6 x i64> @bitcast_v6f64_to_v6i64_scalar(<6 x double> inreg %a, i32
 ; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_3:
-; VI-NEXT:    s_branch .LBB37_2
-; VI-NEXT:  .LBB37_4:
+; VI-NEXT:  .LBB37_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7195,10 +7585,18 @@ define inreg <6 x i64> @bitcast_v6f64_to_v6i64_scalar(<6 x double> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_4
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
@@ -7206,9 +7604,7 @@ define inreg <6 x i64> @bitcast_v6f64_to_v6i64_scalar(<6 x double> inreg %a, i32
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_3:
-; GFX9-NEXT:    s_branch .LBB37_2
-; GFX9-NEXT:  .LBB37_4:
+; GFX9-NEXT:  .LBB37_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -7236,11 +7632,16 @@ define inreg <6 x i64> @bitcast_v6f64_to_v6i64_scalar(<6 x double> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_4
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[16:17], 1.0
@@ -7248,8 +7649,6 @@ define inreg <6 x i64> @bitcast_v6f64_to_v6i64_scalar(<6 x double> inreg %a, i32
 ; GFX11-NEXT:    v_add_f64 v[8:9], s[20:21], 1.0
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_3:
-; GFX11-NEXT:    s_branch .LBB37_2
 ; GFX11-NEXT:  .LBB37_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -7403,10 +7802,18 @@ define inreg <6 x double> @bitcast_v6i64_to_v6f64_scalar(<6 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_4
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB39_3
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
@@ -7419,7 +7826,7 @@ define inreg <6 x double> @bitcast_v6i64_to_v6f64_scalar(<6 x i64> inreg %a, i32
 ; SI-NEXT:    s_addc_u32 s25, s25, 0
 ; SI-NEXT:    s_add_u32 s26, s26, 3
 ; SI-NEXT:    s_addc_u32 s27, s27, 0
-; SI-NEXT:  .LBB39_3: ; %end
+; SI-NEXT:  .LBB39_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7433,17 +7840,23 @@ define inreg <6 x double> @bitcast_v6i64_to_v6f64_scalar(<6 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v10, s26
 ; SI-NEXT:    v_mov_b32_e32 v11, s27
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB39_4:
-; SI-NEXT:    s_branch .LBB39_2
 ;
 ; VI-LABEL: bitcast_v6i64_to_v6f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_4
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_3
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -7456,7 +7869,7 @@ define inreg <6 x double> @bitcast_v6i64_to_v6f64_scalar(<6 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s25, s25, 0
 ; VI-NEXT:    s_add_u32 s26, s26, 3
 ; VI-NEXT:    s_addc_u32 s27, s27, 0
-; VI-NEXT:  .LBB39_3: ; %end
+; VI-NEXT:  .LBB39_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7470,17 +7883,23 @@ define inreg <6 x double> @bitcast_v6i64_to_v6f64_scalar(<6 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    v_mov_b32_e32 v11, s27
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB39_4:
-; VI-NEXT:    s_branch .LBB39_2
 ;
 ; GFX9-LABEL: bitcast_v6i64_to_v6f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_3
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -7493,7 +7912,7 @@ define inreg <6 x double> @bitcast_v6i64_to_v6f64_scalar(<6 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s25, s25, 0
 ; GFX9-NEXT:    s_add_u32 s26, s26, 3
 ; GFX9-NEXT:    s_addc_u32 s27, s27, 0
-; GFX9-NEXT:  .LBB39_3: ; %end
+; GFX9-NEXT:  .LBB39_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -7507,19 +7926,22 @@ define inreg <6 x double> @bitcast_v6i64_to_v6f64_scalar(<6 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s26
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s27
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB39_4:
-; GFX9-NEXT:    s_branch .LBB39_2
 ;
 ; GFX11-LABEL: bitcast_v6i64_to_v6f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB39_3
-; GFX11-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -7532,7 +7954,7 @@ define inreg <6 x double> @bitcast_v6i64_to_v6f64_scalar(<6 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s21, s21, 0
 ; GFX11-NEXT:    s_add_u32 s22, s22, 3
 ; GFX11-NEXT:    s_addc_u32 s23, s23, 0
-; GFX11-NEXT:  .LBB39_3: ; %end
+; GFX11-NEXT:  .LBB39_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -7540,8 +7962,6 @@ define inreg <6 x double> @bitcast_v6i64_to_v6f64_scalar(<6 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB39_4:
-; GFX11-NEXT:    s_branch .LBB39_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -7733,7 +8153,7 @@ define inreg <24 x i16> @bitcast_v6f64_to_v24i16_scalar(<6 x double> inreg %a, i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_3
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s45, s27, 16
 ; SI-NEXT:    s_lshr_b32 s44, s25, 16
@@ -7747,8 +8167,28 @@ define inreg <24 x i16> @bitcast_v6f64_to_v24i16_scalar(<6 x double> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB41_4
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
@@ -7767,22 +8207,8 @@ define inreg <24 x i16> @bitcast_v6f64_to_v24i16_scalar(<6 x double> inreg %a, i
 ; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v23, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v1
-; SI-NEXT:    s_branch .LBB41_5
-; SI-NEXT:  .LBB41_3:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    s_branch .LBB41_2
-; SI-NEXT:  .LBB41_4:
+; SI-NEXT:    s_branch .LBB41_6
+; SI-NEXT:  .LBB41_5:
 ; SI-NEXT:    v_mov_b32_e32 v11, s27
 ; SI-NEXT:    v_mov_b32_e32 v9, s25
 ; SI-NEXT:    v_mov_b32_e32 v7, s23
@@ -7807,7 +8233,7 @@ define inreg <24 x i16> @bitcast_v6f64_to_v24i16_scalar(<6 x double> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v14, s8
 ; SI-NEXT:    v_mov_b32_e32 v13, s6
 ; SI-NEXT:    v_mov_b32_e32 v12, s4
-; SI-NEXT:  .LBB41_5: ; %end
+; SI-NEXT:  .LBB41_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v16
@@ -7850,10 +8276,18 @@ define inreg <24 x i16> @bitcast_v6f64_to_v24i16_scalar(<6 x double> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_3
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB41_4
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
@@ -7861,9 +8295,7 @@ define inreg <24 x i16> @bitcast_v6f64_to_v24i16_scalar(<6 x double> inreg %a, i
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_3:
-; VI-NEXT:    s_branch .LBB41_2
-; VI-NEXT:  .LBB41_4:
+; VI-NEXT:  .LBB41_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7886,10 +8318,18 @@ define inreg <24 x i16> @bitcast_v6f64_to_v24i16_scalar(<6 x double> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_4
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
@@ -7897,9 +8337,7 @@ define inreg <24 x i16> @bitcast_v6f64_to_v24i16_scalar(<6 x double> inreg %a, i
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_3:
-; GFX9-NEXT:    s_branch .LBB41_2
-; GFX9-NEXT:  .LBB41_4:
+; GFX9-NEXT:  .LBB41_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -7927,11 +8365,16 @@ define inreg <24 x i16> @bitcast_v6f64_to_v24i16_scalar(<6 x double> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_4
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB41_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
 ; GFX11-NEXT:    v_add_f64 v[8:9], s[20:21], 1.0
 ; GFX11-NEXT:    v_add_f64 v[6:7], s[18:19], 1.0
@@ -7939,8 +8382,6 @@ define inreg <24 x i16> @bitcast_v6f64_to_v24i16_scalar(<6 x double> inreg %a, i
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_3:
-; GFX11-NEXT:    s_branch .LBB41_2
 ; GFX11-NEXT:  .LBB41_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -8269,7 +8710,7 @@ define inreg <6 x double> @bitcast_v24i16_to_v6f64_scalar(<24 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s29, s17, 16
 ; SI-NEXT:    s_lshr_b32 s56, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_4
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s56, 16
@@ -8307,8 +8748,17 @@ define inreg <6 x double> @bitcast_v24i16_to_v6f64_scalar(<24 x i16> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB43_3
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s56, 16
@@ -8369,7 +8819,7 @@ define inreg <6 x double> @bitcast_v24i16_to_v6f64_scalar(<24 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s47, s4, 0x30000
-; SI-NEXT:  .LBB43_3: ; %end
+; SI-NEXT:  .LBB43_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -8395,18 +8845,23 @@ define inreg <6 x double> @bitcast_v24i16_to_v6f64_scalar(<24 x i16> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB43_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB43_2
 ;
 ; VI-LABEL: bitcast_v24i16_to_v6f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_4
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB43_3
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s27, 3
 ; VI-NEXT:    s_and_b32 s4, s27, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -8467,7 +8922,7 @@ define inreg <6 x double> @bitcast_v24i16_to_v6f64_scalar(<24 x i16> inreg %a, i
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB43_3: ; %end
+; VI-NEXT:  .LBB43_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8481,17 +8936,23 @@ define inreg <6 x double> @bitcast_v24i16_to_v6f64_scalar(<24 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    v_mov_b32_e32 v11, s27
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_4:
-; VI-NEXT:    s_branch .LBB43_2
 ;
 ; GFX9-LABEL: bitcast_v24i16_to_v6f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v11, s27, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v10, s26, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v9, s25, 3 op_sel_hi:[1,0]
@@ -8505,9 +8966,7 @@ define inreg <6 x double> @bitcast_v24i16_to_v6f64_scalar(<24 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -8535,11 +8994,16 @@ define inreg <6 x double> @bitcast_v24i16_to_v6f64_scalar(<24 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB43_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v11, s23, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v10, s22, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v9, s21, 3 op_sel_hi:[1,0]
@@ -8553,8 +9017,6 @@ define inreg <6 x double> @bitcast_v24i16_to_v6f64_scalar(<24 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_3:
-; GFX11-NEXT:    s_branch .LBB43_2
 ; GFX11-NEXT:  .LBB43_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -8756,7 +9218,7 @@ define inreg <24 x half> @bitcast_v6f64_to_v24f16_scalar(<6 x double> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_3
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s45, s27, 16
 ; SI-NEXT:    s_lshr_b32 s44, s25, 16
@@ -8770,8 +9232,28 @@ define inreg <24 x half> @bitcast_v6f64_to_v24f16_scalar(<6 x double> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB45_4
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
@@ -8790,22 +9272,8 @@ define inreg <24 x half> @bitcast_v6f64_to_v24f16_scalar(<6 x double> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v23, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v1
-; SI-NEXT:    s_branch .LBB45_5
-; SI-NEXT:  .LBB45_3:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    s_branch .LBB45_2
-; SI-NEXT:  .LBB45_4:
+; SI-NEXT:    s_branch .LBB45_6
+; SI-NEXT:  .LBB45_5:
 ; SI-NEXT:    v_mov_b32_e32 v11, s27
 ; SI-NEXT:    v_mov_b32_e32 v9, s25
 ; SI-NEXT:    v_mov_b32_e32 v7, s23
@@ -8830,7 +9298,7 @@ define inreg <24 x half> @bitcast_v6f64_to_v24f16_scalar(<6 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v14, s8
 ; SI-NEXT:    v_mov_b32_e32 v13, s6
 ; SI-NEXT:    v_mov_b32_e32 v12, s4
-; SI-NEXT:  .LBB45_5: ; %end
+; SI-NEXT:  .LBB45_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v16
@@ -8873,10 +9341,18 @@ define inreg <24 x half> @bitcast_v6f64_to_v24f16_scalar(<6 x double> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_3
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB45_4
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
@@ -8884,9 +9360,7 @@ define inreg <24 x half> @bitcast_v6f64_to_v24f16_scalar(<6 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_3:
-; VI-NEXT:    s_branch .LBB45_2
-; VI-NEXT:  .LBB45_4:
+; VI-NEXT:  .LBB45_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8909,10 +9383,18 @@ define inreg <24 x half> @bitcast_v6f64_to_v24f16_scalar(<6 x double> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_4
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
 ; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
@@ -8920,9 +9402,7 @@ define inreg <24 x half> @bitcast_v6f64_to_v24f16_scalar(<6 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_3:
-; GFX9-NEXT:    s_branch .LBB45_2
-; GFX9-NEXT:  .LBB45_4:
+; GFX9-NEXT:  .LBB45_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -8950,11 +9430,16 @@ define inreg <24 x half> @bitcast_v6f64_to_v24f16_scalar(<6 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_4
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB45_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
 ; GFX11-NEXT:    v_add_f64 v[8:9], s[20:21], 1.0
 ; GFX11-NEXT:    v_add_f64 v[6:7], s[18:19], 1.0
@@ -8962,8 +9447,6 @@ define inreg <24 x half> @bitcast_v6f64_to_v24f16_scalar(<6 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_3:
-; GFX11-NEXT:    s_branch .LBB45_2
 ; GFX11-NEXT:  .LBB45_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -9340,7 +9823,7 @@ define inreg <6 x double> @bitcast_v24f16_to_v6f64_scalar(<24 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s29, s17, 16
 ; SI-NEXT:    s_lshr_b32 s56, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB47_3
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s56, 16
@@ -9378,8 +9861,17 @@ define inreg <6 x double> @bitcast_v24f16_to_v6f64_scalar(<24 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB47_4
-; SI-NEXT:  .LBB47_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s56
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s29
@@ -9476,11 +9968,8 @@ define inreg <6 x double> @bitcast_v24f16_to_v6f64_scalar(<24 x half> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v10, v11, v10
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v12
 ; SI-NEXT:    v_or_b32_e32 v11, v13, v11
-; SI-NEXT:    s_branch .LBB47_5
-; SI-NEXT:  .LBB47_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB47_2
-; SI-NEXT:  .LBB47_4:
+; SI-NEXT:    s_branch .LBB47_6
+; SI-NEXT:  .LBB47_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -9497,7 +9986,7 @@ define inreg <6 x double> @bitcast_v24f16_to_v6f64_scalar(<24 x half> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v13, s49
 ; SI-NEXT:    v_mov_b32_e32 v14, s50
 ; SI-NEXT:    v_mov_b32_e32 v15, s51
-; SI-NEXT:  .LBB47_5: ; %end
+; SI-NEXT:  .LBB47_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s51, v16, 7
 ; SI-NEXT:    v_readlane_b32 s50, v16, 6
 ; SI-NEXT:    v_readlane_b32 s49, v16, 5
@@ -9516,10 +10005,18 @@ define inreg <6 x double> @bitcast_v24f16_to_v6f64_scalar(<24 x half> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s27, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -9582,9 +10079,7 @@ define inreg <6 x double> @bitcast_v24f16_to_v6f64_scalar(<24 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v12
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -9607,10 +10102,18 @@ define inreg <6 x double> @bitcast_v24f16_to_v6f64_scalar(<24 x half> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v11, s27, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v10, s26, v0 op_sel_hi:[1,0]
@@ -9625,9 +10128,7 @@ define inreg <6 x double> @bitcast_v24f16_to_v6f64_scalar(<24 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -9655,11 +10156,16 @@ define inreg <6 x double> @bitcast_v24f16_to_v6f64_scalar(<24 x half> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB47_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v11, 0x200, s23 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v10, 0x200, s22 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v9, 0x200, s21 op_sel_hi:[0,1]
@@ -9673,8 +10179,6 @@ define inreg <6 x double> @bitcast_v24f16_to_v6f64_scalar(<24 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB47_3:
-; GFX11-NEXT:    s_branch .LBB47_2
 ; GFX11-NEXT:  .LBB47_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -9903,7 +10407,7 @@ define inreg <24 x i16> @bitcast_v6i64_to_v24i16_scalar(<6 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_4
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s40, s27, 16
 ; SI-NEXT:    s_lshr_b32 s41, s25, 16
@@ -9917,8 +10421,28 @@ define inreg <24 x i16> @bitcast_v6i64_to_v24i16_scalar(<6 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB49_3
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s26, s26, 3
 ; SI-NEXT:    s_addc_u32 s27, s27, 0
 ; SI-NEXT:    s_add_u32 s24, s24, 3
@@ -9943,7 +10467,7 @@ define inreg <24 x i16> @bitcast_v6i64_to_v24i16_scalar(<6 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 16
-; SI-NEXT:  .LBB49_3: ; %end
+; SI-NEXT:  .LBB49_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s14, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -9993,29 +10517,23 @@ define inreg <24 x i16> @bitcast_v6i64_to_v24i16_scalar(<6 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v10, s4
 ; SI-NEXT:    v_mov_b32_e32 v11, s15
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB49_4:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    s_branch .LBB49_2
 ;
 ; VI-LABEL: bitcast_v6i64_to_v24i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_4
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB49_3
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s26, s26, 3
 ; VI-NEXT:    s_addc_u32 s27, s27, 0
 ; VI-NEXT:    s_add_u32 s24, s24, 3
@@ -10028,7 +10546,7 @@ define inreg <24 x i16> @bitcast_v6i64_to_v24i16_scalar(<6 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB49_3: ; %end
+; VI-NEXT:  .LBB49_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -10042,17 +10560,23 @@ define inreg <24 x i16> @bitcast_v6i64_to_v24i16_scalar(<6 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    v_mov_b32_e32 v11, s27
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB49_4:
-; VI-NEXT:    s_branch .LBB49_2
 ;
 ; GFX9-LABEL: bitcast_v6i64_to_v24i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_3
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s26, s26, 3
 ; GFX9-NEXT:    s_addc_u32 s27, s27, 0
 ; GFX9-NEXT:    s_add_u32 s24, s24, 3
@@ -10065,7 +10589,7 @@ define inreg <24 x i16> @bitcast_v6i64_to_v24i16_scalar(<6 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB49_3: ; %end
+; GFX9-NEXT:  .LBB49_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -10079,19 +10603,22 @@ define inreg <24 x i16> @bitcast_v6i64_to_v24i16_scalar(<6 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s26
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s27
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB49_4:
-; GFX9-NEXT:    s_branch .LBB49_2
 ;
 ; GFX11-LABEL: bitcast_v6i64_to_v24i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB49_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB49_3
-; GFX11-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB49_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB49_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB49_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s22, s22, 3
 ; GFX11-NEXT:    s_addc_u32 s23, s23, 0
 ; GFX11-NEXT:    s_add_u32 s20, s20, 3
@@ -10104,7 +10631,7 @@ define inreg <24 x i16> @bitcast_v6i64_to_v24i16_scalar(<6 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB49_3: ; %end
+; GFX11-NEXT:  .LBB49_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -10113,8 +10640,6 @@ define inreg <24 x i16> @bitcast_v6i64_to_v24i16_scalar(<6 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB49_4:
-; GFX11-NEXT:    s_branch .LBB49_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -10433,7 +10958,7 @@ define inreg <6 x i64> @bitcast_v24i16_to_v6i64_scalar(<24 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s29, s17, 16
 ; SI-NEXT:    s_lshr_b32 s56, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s56, 16
@@ -10471,8 +10996,17 @@ define inreg <6 x i64> @bitcast_v24i16_to_v6i64_scalar(<24 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s56, 16
@@ -10533,7 +11067,7 @@ define inreg <6 x i64> @bitcast_v24i16_to_v6i64_scalar(<24 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s47, s4, 0x30000
-; SI-NEXT:  .LBB51_3: ; %end
+; SI-NEXT:  .LBB51_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -10559,18 +11093,23 @@ define inreg <6 x i64> @bitcast_v24i16_to_v6i64_scalar(<24 x i16> inreg %a, i32
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v24i16_to_v6i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s27, 3
 ; VI-NEXT:    s_and_b32 s4, s27, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -10631,7 +11170,7 @@ define inreg <6 x i64> @bitcast_v24i16_to_v6i64_scalar(<24 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB51_3: ; %end
+; VI-NEXT:  .LBB51_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -10645,17 +11184,23 @@ define inreg <6 x i64> @bitcast_v24i16_to_v6i64_scalar(<24 x i16> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    v_mov_b32_e32 v11, s27
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v24i16_to_v6i64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_4
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v11, s27, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v10, s26, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v9, s25, 3 op_sel_hi:[1,0]
@@ -10669,9 +11214,7 @@ define inreg <6 x i64> @bitcast_v24i16_to_v6i64_scalar(<24 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB51_3:
-; GFX9-NEXT:    s_branch .LBB51_2
-; GFX9-NEXT:  .LBB51_4:
+; GFX9-NEXT:  .LBB51_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -10699,11 +11242,16 @@ define inreg <6 x i64> @bitcast_v24i16_to_v6i64_scalar(<24 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB51_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB51_4
-; GFX11-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB51_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v11, s23, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v10, s22, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v9, s21, 3 op_sel_hi:[1,0]
@@ -10717,8 +11265,6 @@ define inreg <6 x i64> @bitcast_v24i16_to_v6i64_scalar(<24 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB51_3:
-; GFX11-NEXT:    s_branch .LBB51_2
 ; GFX11-NEXT:  .LBB51_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -10947,7 +11493,7 @@ define inreg <24 x half> @bitcast_v6i64_to_v24f16_scalar(<6 x i64> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_4
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s40, s27, 16
 ; SI-NEXT:    s_lshr_b32 s41, s25, 16
@@ -10961,8 +11507,28 @@ define inreg <24 x half> @bitcast_v6i64_to_v24f16_scalar(<6 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB53_3
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[28:29], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[28:29], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[28:29], s[28:29], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s26, s26, 3
 ; SI-NEXT:    s_addc_u32 s27, s27, 0
 ; SI-NEXT:    s_add_u32 s24, s24, 3
@@ -10987,7 +11553,7 @@ define inreg <24 x half> @bitcast_v6i64_to_v24f16_scalar(<6 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[16:17], 16
-; SI-NEXT:  .LBB53_3: ; %end
+; SI-NEXT:  .LBB53_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s14, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -11037,29 +11603,23 @@ define inreg <24 x half> @bitcast_v6i64_to_v24f16_scalar(<6 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v10, s4
 ; SI-NEXT:    v_mov_b32_e32 v11, s15
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB53_4:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    s_branch .LBB53_2
 ;
 ; VI-LABEL: bitcast_v6i64_to_v24f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_4
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB53_3
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s26, s26, 3
 ; VI-NEXT:    s_addc_u32 s27, s27, 0
 ; VI-NEXT:    s_add_u32 s24, s24, 3
@@ -11072,7 +11632,7 @@ define inreg <24 x half> @bitcast_v6i64_to_v24f16_scalar(<6 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB53_3: ; %end
+; VI-NEXT:  .LBB53_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -11086,17 +11646,23 @@ define inreg <24 x half> @bitcast_v6i64_to_v24f16_scalar(<6 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    v_mov_b32_e32 v11, s27
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB53_4:
-; VI-NEXT:    s_branch .LBB53_2
 ;
 ; GFX9-LABEL: bitcast_v6i64_to_v24f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_3
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s26, s26, 3
 ; GFX9-NEXT:    s_addc_u32 s27, s27, 0
 ; GFX9-NEXT:    s_add_u32 s24, s24, 3
@@ -11109,7 +11675,7 @@ define inreg <24 x half> @bitcast_v6i64_to_v24f16_scalar(<6 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB53_3: ; %end
+; GFX9-NEXT:  .LBB53_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -11123,19 +11689,22 @@ define inreg <24 x half> @bitcast_v6i64_to_v24f16_scalar(<6 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s26
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s27
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB53_4:
-; GFX9-NEXT:    s_branch .LBB53_2
 ;
 ; GFX11-LABEL: bitcast_v6i64_to_v24f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB53_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB53_3
-; GFX11-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB53_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s22, s22, 3
 ; GFX11-NEXT:    s_addc_u32 s23, s23, 0
 ; GFX11-NEXT:    s_add_u32 s20, s20, 3
@@ -11148,7 +11717,7 @@ define inreg <24 x half> @bitcast_v6i64_to_v24f16_scalar(<6 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB53_3: ; %end
+; GFX11-NEXT:  .LBB53_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -11157,8 +11726,6 @@ define inreg <24 x half> @bitcast_v6i64_to_v24f16_scalar(<6 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB53_4:
-; GFX11-NEXT:    s_branch .LBB53_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -11525,7 +12092,7 @@ define inreg <6 x i64> @bitcast_v24f16_to_v6i64_scalar(<24 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s29, s17, 16
 ; SI-NEXT:    s_lshr_b32 s56, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s56, 16
@@ -11563,8 +12130,17 @@ define inreg <6 x i64> @bitcast_v24f16_to_v6i64_scalar(<24 x half> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s56
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s29
@@ -11661,11 +12237,8 @@ define inreg <6 x i64> @bitcast_v24f16_to_v6i64_scalar(<24 x half> inreg %a, i32
 ; SI-NEXT:    v_or_b32_e32 v10, v11, v10
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v12
 ; SI-NEXT:    v_or_b32_e32 v11, v13, v11
-; SI-NEXT:    s_branch .LBB55_5
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:    s_branch .LBB55_6
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -11682,7 +12255,7 @@ define inreg <6 x i64> @bitcast_v24f16_to_v6i64_scalar(<24 x half> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v13, s49
 ; SI-NEXT:    v_mov_b32_e32 v14, s50
 ; SI-NEXT:    v_mov_b32_e32 v15, s51
-; SI-NEXT:  .LBB55_5: ; %end
+; SI-NEXT:  .LBB55_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s51, v16, 7
 ; SI-NEXT:    v_readlane_b32 s50, v16, 6
 ; SI-NEXT:    v_readlane_b32 s49, v16, 5
@@ -11701,10 +12274,18 @@ define inreg <6 x i64> @bitcast_v24f16_to_v6i64_scalar(<24 x half> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s27, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -11767,9 +12348,7 @@ define inreg <6 x i64> @bitcast_v24f16_to_v6i64_scalar(<24 x half> inreg %a, i32
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v12
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -11792,10 +12371,18 @@ define inreg <6 x i64> @bitcast_v24f16_to_v6i64_scalar(<24 x half> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v11, s27, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v10, s26, v0 op_sel_hi:[1,0]
@@ -11810,9 +12397,7 @@ define inreg <6 x i64> @bitcast_v24f16_to_v6i64_scalar(<24 x half> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -11840,11 +12425,16 @@ define inreg <6 x i64> @bitcast_v24f16_to_v6i64_scalar(<24 x half> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v11, 0x200, s23 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v10, 0x200, s22 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v9, 0x200, s21 op_sel_hi:[0,1]
@@ -11858,8 +12448,6 @@ define inreg <6 x i64> @bitcast_v24f16_to_v6i64_scalar(<24 x half> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -12231,7 +12819,7 @@ define inreg <24 x half> @bitcast_v24i16_to_v24f16_scalar(<24 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s60, s17, 16
 ; SI-NEXT:    s_lshr_b32 s74, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s60, 16
@@ -12281,8 +12869,28 @@ define inreg <24 x half> @bitcast_v24i16_to_v24f16_scalar(<24 x i16> inreg %a, i
 ; SI-NEXT:    s_or_b32 s12, s12, s56
 ; SI-NEXT:    s_mov_b32 s13, s57
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[56:57], 16
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[58:59], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[58:59], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[58:59], s[58:59], exec
+; SI-NEXT:    s_cselect_b32 s29, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s29, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s79, 16
@@ -12355,7 +12963,7 @@ define inreg <24 x half> @bitcast_v24i16_to_v24f16_scalar(<24 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s63, s5, 16
 ; SI-NEXT:    s_lshr_b32 s72, s15, 16
 ; SI-NEXT:    s_lshr_b32 s73, s13, 16
-; SI-NEXT:  .LBB57_3: ; %end
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_lshl_b32 s16, s28, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s16
@@ -12405,29 +13013,23 @@ define inreg <24 x half> @bitcast_v24i16_to_v24f16_scalar(<24 x i16> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v10, s12
 ; SI-NEXT:    v_mov_b32_e32 v11, s13
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v24i16_to_v24f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s6, s17, 0xffff0000
@@ -12488,7 +13090,7 @@ define inreg <24 x half> @bitcast_v24i16_to_v24f16_scalar(<24 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -12502,17 +13104,23 @@ define inreg <24 x half> @bitcast_v24i16_to_v24f16_scalar(<24 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v10, s26
 ; VI-NEXT:    v_mov_b32_e32 v11, s27
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v24i16_to_v24f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_4
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v11, s27, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v10, s26, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v9, s25, 3 op_sel_hi:[1,0]
@@ -12526,9 +13134,7 @@ define inreg <24 x half> @bitcast_v24i16_to_v24f16_scalar(<24 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB57_3:
-; GFX9-NEXT:    s_branch .LBB57_2
-; GFX9-NEXT:  .LBB57_4:
+; GFX9-NEXT:  .LBB57_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -12556,11 +13162,16 @@ define inreg <24 x half> @bitcast_v24i16_to_v24f16_scalar(<24 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB57_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v11, s23, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v10, s22, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v9, s21, 3 op_sel_hi:[1,0]
@@ -12574,8 +13185,6 @@ define inreg <24 x half> @bitcast_v24i16_to_v24f16_scalar(<24 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB57_3:
-; GFX11-NEXT:    s_branch .LBB57_2
 ; GFX11-NEXT:  .LBB57_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -12902,10 +13511,18 @@ define inreg <24 x i16> @bitcast_v24f16_to_v24i16_scalar(<24 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s6, s17, 16
 ; SI-NEXT:    s_lshr_b32 s40, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_3
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB59_4
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s29
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s15
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s14
@@ -13008,10 +13625,8 @@ define inreg <24 x i16> @bitcast_v24f16_to_v24i16_scalar(<24 x half> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[16:17], v[6:7], 16
 ; SI-NEXT:    v_lshr_b64 v[14:15], v[8:9], 16
 ; SI-NEXT:    v_lshr_b64 v[12:13], v[10:11], 16
-; SI-NEXT:    s_branch .LBB59_5
-; SI-NEXT:  .LBB59_3:
-; SI-NEXT:    s_branch .LBB59_2
-; SI-NEXT:  .LBB59_4:
+; SI-NEXT:    s_branch .LBB59_6
+; SI-NEXT:  .LBB59_5:
 ; SI-NEXT:    v_mov_b32_e32 v24, s13
 ; SI-NEXT:    v_mov_b32_e32 v28, s10
 ; SI-NEXT:    v_mov_b32_e32 v25, s12
@@ -13036,7 +13651,7 @@ define inreg <24 x i16> @bitcast_v24f16_to_v24i16_scalar(<24 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v16, s14
 ; SI-NEXT:    v_mov_b32_e32 v14, s9
 ; SI-NEXT:    v_mov_b32_e32 v12, s8
-; SI-NEXT:  .LBB59_5: ; %end
+; SI-NEXT:  .LBB59_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v22
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v34
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
@@ -13079,10 +13694,18 @@ define inreg <24 x i16> @bitcast_v24f16_to_v24i16_scalar(<24 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_3
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_4
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s5, s26, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v2, s5
@@ -13145,9 +13768,7 @@ define inreg <24 x i16> @bitcast_v24f16_to_v24i16_scalar(<24 x half> inreg %a, i
 ; VI-NEXT:    v_or_b32_e32 v1, v0, v1
 ; VI-NEXT:    v_or_b32_e32 v0, v12, v13
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB59_3:
-; VI-NEXT:    s_branch .LBB59_2
-; VI-NEXT:  .LBB59_4:
+; VI-NEXT:  .LBB59_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13170,10 +13791,18 @@ define inreg <24 x i16> @bitcast_v24f16_to_v24i16_scalar(<24 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_4
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v11, s27, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v10, s26, v0 op_sel_hi:[1,0]
@@ -13188,9 +13817,7 @@ define inreg <24 x i16> @bitcast_v24f16_to_v24i16_scalar(<24 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB59_3:
-; GFX9-NEXT:    s_branch .LBB59_2
-; GFX9-NEXT:  .LBB59_4:
+; GFX9-NEXT:  .LBB59_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -13218,11 +13845,16 @@ define inreg <24 x i16> @bitcast_v24f16_to_v24i16_scalar(<24 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB59_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v11, 0x200, s23 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v10, 0x200, s22 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v9, 0x200, s21 op_sel_hi:[0,1]
@@ -13236,8 +13868,6 @@ define inreg <24 x i16> @bitcast_v24f16_to_v24i16_scalar(<24 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB59_3:
-; GFX11-NEXT:    s_branch .LBB59_2
 ; GFX11-NEXT:  .LBB59_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.448bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.448bit.ll
index 04ccab7cc4b61..910198216abe7 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.448bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.448bit.ll
@@ -138,10 +138,18 @@ define inreg <14 x float> @bitcast_v14i32_to_v14f32_scalar(<14 x i32> inreg %a,
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s29, s29, 3
 ; SI-NEXT:    s_add_i32 s28, s28, 3
 ; SI-NEXT:    s_add_i32 s27, s27, 3
@@ -156,7 +164,7 @@ define inreg <14 x float> @bitcast_v14i32_to_v14f32_scalar(<14 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -172,18 +180,24 @@ define inreg <14 x float> @bitcast_v14i32_to_v14f32_scalar(<14 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v12, s28
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v14i32_to_v14f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s29, s29, 3
 ; VI-NEXT:    s_add_i32 s28, s28, 3
 ; VI-NEXT:    s_add_i32 s27, s27, 3
@@ -198,7 +212,7 @@ define inreg <14 x float> @bitcast_v14i32_to_v14f32_scalar(<14 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -214,18 +228,24 @@ define inreg <14 x float> @bitcast_v14i32_to_v14f32_scalar(<14 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v12, s28
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v14i32_to_v14f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
 ; GFX9-NEXT:    s_add_i32 s28, s28, 3
 ; GFX9-NEXT:    s_add_i32 s27, s27, 3
@@ -240,7 +260,7 @@ define inreg <14 x float> @bitcast_v14i32_to_v14f32_scalar(<14 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -256,19 +276,22 @@ define inreg <14 x float> @bitcast_v14i32_to_v14f32_scalar(<14 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v12, s28
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v14i32_to_v14f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s25, s25, 3
 ; GFX11-NEXT:    s_add_i32 s24, s24, 3
 ; GFX11-NEXT:    s_add_i32 s23, s23, 3
@@ -283,7 +306,7 @@ define inreg <14 x float> @bitcast_v14i32_to_v14f32_scalar(<14 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -293,8 +316,6 @@ define inreg <14 x float> @bitcast_v14i32_to_v14f32_scalar(<14 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -437,10 +458,18 @@ define inreg <14 x i32> @bitcast_v14f32_to_v14i32_scalar(<14 x float> inreg %a,
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; SI-NEXT:    v_add_f32_e64 v12, s28, 1.0
 ; SI-NEXT:    v_add_f32_e64 v11, s27, 1.0
@@ -456,9 +485,7 @@ define inreg <14 x i32> @bitcast_v14f32_to_v14i32_scalar(<14 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -482,10 +509,18 @@ define inreg <14 x i32> @bitcast_v14f32_to_v14i32_scalar(<14 x float> inreg %a,
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; VI-NEXT:    v_add_f32_e64 v12, s28, 1.0
 ; VI-NEXT:    v_add_f32_e64 v11, s27, 1.0
@@ -501,9 +536,7 @@ define inreg <14 x i32> @bitcast_v14f32_to_v14i32_scalar(<14 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -527,10 +560,18 @@ define inreg <14 x i32> @bitcast_v14f32_to_v14i32_scalar(<14 x float> inreg %a,
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v12, s28, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v11, s27, 1.0
@@ -546,9 +587,7 @@ define inreg <14 x i32> @bitcast_v14f32_to_v14i32_scalar(<14 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -576,11 +615,16 @@ define inreg <14 x i32> @bitcast_v14f32_to_v14i32_scalar(<14 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v13, s25, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v12, s24, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v11, s23, 1.0
@@ -596,8 +640,6 @@ define inreg <14 x i32> @bitcast_v14f32_to_v14i32_scalar(<14 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -757,10 +799,18 @@ define inreg <7 x i64> @bitcast_v14i32_to_v7i64_scalar(<14 x i32> inreg %a, i32
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s29, s29, 3
 ; SI-NEXT:    s_add_i32 s28, s28, 3
 ; SI-NEXT:    s_add_i32 s27, s27, 3
@@ -775,7 +825,7 @@ define inreg <7 x i64> @bitcast_v14i32_to_v7i64_scalar(<14 x i32> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -791,18 +841,24 @@ define inreg <7 x i64> @bitcast_v14i32_to_v7i64_scalar(<14 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v12, s28
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v14i32_to_v7i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s29, s29, 3
 ; VI-NEXT:    s_add_i32 s28, s28, 3
 ; VI-NEXT:    s_add_i32 s27, s27, 3
@@ -817,7 +873,7 @@ define inreg <7 x i64> @bitcast_v14i32_to_v7i64_scalar(<14 x i32> inreg %a, i32
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -833,18 +889,24 @@ define inreg <7 x i64> @bitcast_v14i32_to_v7i64_scalar(<14 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v12, s28
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v14i32_to_v7i64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
 ; GFX9-NEXT:    s_add_i32 s28, s28, 3
 ; GFX9-NEXT:    s_add_i32 s27, s27, 3
@@ -859,7 +921,7 @@ define inreg <7 x i64> @bitcast_v14i32_to_v7i64_scalar(<14 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -875,19 +937,22 @@ define inreg <7 x i64> @bitcast_v14i32_to_v7i64_scalar(<14 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v12, s28
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v14i32_to_v7i64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s25, s25, 3
 ; GFX11-NEXT:    s_add_i32 s24, s24, 3
 ; GFX11-NEXT:    s_add_i32 s23, s23, 3
@@ -902,7 +967,7 @@ define inreg <7 x i64> @bitcast_v14i32_to_v7i64_scalar(<14 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -912,8 +977,6 @@ define inreg <7 x i64> @bitcast_v14i32_to_v7i64_scalar(<14 x i32> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1067,10 +1130,18 @@ define inreg <14 x i32> @bitcast_v7i64_to_v14i32_scalar(<7 x i64> inreg %a, i32
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s28, s28, 3
 ; SI-NEXT:    s_addc_u32 s29, s29, 0
 ; SI-NEXT:    s_add_u32 s26, s26, 3
@@ -1085,7 +1156,7 @@ define inreg <14 x i32> @bitcast_v7i64_to_v14i32_scalar(<7 x i64> inreg %a, i32
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1101,18 +1172,24 @@ define inreg <14 x i32> @bitcast_v7i64_to_v14i32_scalar(<7 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v12, s28
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v7i64_to_v14i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s28, s28, 3
 ; VI-NEXT:    s_addc_u32 s29, s29, 0
 ; VI-NEXT:    s_add_u32 s26, s26, 3
@@ -1127,7 +1204,7 @@ define inreg <14 x i32> @bitcast_v7i64_to_v14i32_scalar(<7 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1143,18 +1220,24 @@ define inreg <14 x i32> @bitcast_v7i64_to_v14i32_scalar(<7 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v12, s28
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v7i64_to_v14i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s28, s28, 3
 ; GFX9-NEXT:    s_addc_u32 s29, s29, 0
 ; GFX9-NEXT:    s_add_u32 s26, s26, 3
@@ -1169,7 +1252,7 @@ define inreg <14 x i32> @bitcast_v7i64_to_v14i32_scalar(<7 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB7_3: ; %end
+; GFX9-NEXT:  .LBB7_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1185,19 +1268,22 @@ define inreg <14 x i32> @bitcast_v7i64_to_v14i32_scalar(<7 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v12, s28
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_4:
-; GFX9-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-LABEL: bitcast_v7i64_to_v14i32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_3
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s24, s24, 3
 ; GFX11-NEXT:    s_addc_u32 s25, s25, 0
 ; GFX11-NEXT:    s_add_u32 s22, s22, 3
@@ -1212,7 +1298,7 @@ define inreg <14 x i32> @bitcast_v7i64_to_v14i32_scalar(<7 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB7_3: ; %end
+; GFX11-NEXT:  .LBB7_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1222,8 +1308,6 @@ define inreg <14 x i32> @bitcast_v7i64_to_v14i32_scalar(<7 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_4:
-; GFX11-NEXT:    s_branch .LBB7_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1373,10 +1457,18 @@ define inreg <7 x double> @bitcast_v14i32_to_v7f64_scalar(<14 x i32> inreg %a, i
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s29, s29, 3
 ; SI-NEXT:    s_add_i32 s28, s28, 3
 ; SI-NEXT:    s_add_i32 s27, s27, 3
@@ -1391,7 +1483,7 @@ define inreg <7 x double> @bitcast_v14i32_to_v7f64_scalar(<14 x i32> inreg %a, i
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1407,18 +1499,24 @@ define inreg <7 x double> @bitcast_v14i32_to_v7f64_scalar(<14 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v12, s28
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v14i32_to_v7f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s29, s29, 3
 ; VI-NEXT:    s_add_i32 s28, s28, 3
 ; VI-NEXT:    s_add_i32 s27, s27, 3
@@ -1433,7 +1531,7 @@ define inreg <7 x double> @bitcast_v14i32_to_v7f64_scalar(<14 x i32> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1449,18 +1547,24 @@ define inreg <7 x double> @bitcast_v14i32_to_v7f64_scalar(<14 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v12, s28
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v14i32_to_v7f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
 ; GFX9-NEXT:    s_add_i32 s28, s28, 3
 ; GFX9-NEXT:    s_add_i32 s27, s27, 3
@@ -1475,7 +1579,7 @@ define inreg <7 x double> @bitcast_v14i32_to_v7f64_scalar(<14 x i32> inreg %a, i
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1491,19 +1595,22 @@ define inreg <7 x double> @bitcast_v14i32_to_v7f64_scalar(<14 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v12, s28
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v14i32_to_v7f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s25, s25, 3
 ; GFX11-NEXT:    s_add_i32 s24, s24, 3
 ; GFX11-NEXT:    s_add_i32 s23, s23, 3
@@ -1518,7 +1625,7 @@ define inreg <7 x double> @bitcast_v14i32_to_v7f64_scalar(<14 x i32> inreg %a, i
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1528,8 +1635,6 @@ define inreg <7 x double> @bitcast_v14i32_to_v7f64_scalar(<14 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1651,10 +1756,18 @@ define inreg <14 x i32> @bitcast_v7f64_to_v14i32_scalar(<7 x double> inreg %a, i
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
@@ -1663,9 +1776,7 @@ define inreg <14 x i32> @bitcast_v7f64_to_v14i32_scalar(<7 x double> inreg %a, i
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1689,10 +1800,18 @@ define inreg <14 x i32> @bitcast_v7f64_to_v14i32_scalar(<7 x double> inreg %a, i
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
@@ -1701,9 +1820,7 @@ define inreg <14 x i32> @bitcast_v7f64_to_v14i32_scalar(<7 x double> inreg %a, i
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1727,10 +1844,18 @@ define inreg <14 x i32> @bitcast_v7f64_to_v14i32_scalar(<7 x double> inreg %a, i
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
@@ -1739,9 +1864,7 @@ define inreg <14 x i32> @bitcast_v7f64_to_v14i32_scalar(<7 x double> inreg %a, i
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1769,11 +1892,16 @@ define inreg <14 x i32> @bitcast_v7f64_to_v14i32_scalar(<7 x double> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
 ; GFX11-NEXT:    v_add_f64 v[8:9], s[20:21], 1.0
@@ -1782,8 +1910,6 @@ define inreg <14 x i32> @bitcast_v7f64_to_v14i32_scalar(<7 x double> inreg %a, i
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -2030,7 +2156,7 @@ define inreg <28 x i16> @bitcast_v14i32_to_v28i16_scalar(<14 x i32> inreg %a, i3
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s44, s29, 16
 ; SI-NEXT:    s_lshr_b32 s45, s27, 16
@@ -2046,8 +2172,30 @@ define inreg <28 x i16> @bitcast_v14i32_to_v28i16_scalar(<14 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[42:43], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[42:43], -1
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[42:43], s[42:43], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -2076,7 +2224,7 @@ define inreg <28 x i16> @bitcast_v14i32_to_v28i16_scalar(<14 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s56, s21, 16
 ; SI-NEXT:    s_lshr_b32 s57, s19, 16
 ; SI-NEXT:    s_lshr_b32 s58, s17, 16
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s40, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -2134,32 +2282,24 @@ define inreg <28 x i16> @bitcast_v14i32_to_v28i16_scalar(<14 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v12, s4
 ; SI-NEXT:    v_mov_b32_e32 v13, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_v14i32_to_v28i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s29, s29, 3
 ; VI-NEXT:    s_add_i32 s28, s28, 3
 ; VI-NEXT:    s_add_i32 s27, s27, 3
@@ -2174,7 +2314,7 @@ define inreg <28 x i16> @bitcast_v14i32_to_v28i16_scalar(<14 x i32> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2190,18 +2330,24 @@ define inreg <28 x i16> @bitcast_v14i32_to_v28i16_scalar(<14 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v12, s28
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v14i32_to_v28i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
 ; GFX9-NEXT:    s_add_i32 s28, s28, 3
 ; GFX9-NEXT:    s_add_i32 s27, s27, 3
@@ -2216,7 +2362,7 @@ define inreg <28 x i16> @bitcast_v14i32_to_v28i16_scalar(<14 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB13_3: ; %end
+; GFX9-NEXT:  .LBB13_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2232,19 +2378,22 @@ define inreg <28 x i16> @bitcast_v14i32_to_v28i16_scalar(<14 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v12, s28
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_v14i32_to_v28i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB13_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s25, s25, 3
 ; GFX11-NEXT:    s_add_i32 s24, s24, 3
 ; GFX11-NEXT:    s_add_i32 s23, s23, 3
@@ -2259,7 +2408,7 @@ define inreg <28 x i16> @bitcast_v14i32_to_v28i16_scalar(<14 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2269,8 +2418,6 @@ define inreg <28 x i16> @bitcast_v14i32_to_v28i16_scalar(<14 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2624,7 +2771,7 @@ define inreg <14 x i32> @bitcast_v28i16_to_v14i32_scalar(<28 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s59, s16, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -2668,8 +2815,17 @@ define inreg <14 x i32> @bitcast_v28i16_to_v14i32_scalar(<28 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -2740,7 +2896,7 @@ define inreg <14 x i32> @bitcast_v28i16_to_v14i32_scalar(<28 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
+; SI-NEXT:  .LBB15_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -2768,19 +2924,24 @@ define inreg <14 x i32> @bitcast_v28i16_to_v14i32_scalar(<28 x i16> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v28i16_to_v14i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s29, 3
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -2851,7 +3012,7 @@ define inreg <14 x i32> @bitcast_v28i16_to_v14i32_scalar(<28 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
+; VI-NEXT:  .LBB15_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2867,18 +3028,24 @@ define inreg <14 x i32> @bitcast_v28i16_to_v14i32_scalar(<28 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v12, s28
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v28i16_to_v14i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v13, s29, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v12, s28, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v11, s27, 3 op_sel_hi:[1,0]
@@ -2894,9 +3061,7 @@ define inreg <14 x i32> @bitcast_v28i16_to_v14i32_scalar(<28 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2924,11 +3089,16 @@ define inreg <14 x i32> @bitcast_v28i16_to_v14i32_scalar(<28 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v13, s25, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v12, s24, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v11, s23, 3 op_sel_hi:[1,0]
@@ -2944,8 +3114,6 @@ define inreg <14 x i32> @bitcast_v28i16_to_v14i32_scalar(<28 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -3192,7 +3360,7 @@ define inreg <28 x half> @bitcast_v14i32_to_v28f16_scalar(<14 x i32> inreg %a, i
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s44, s29, 16
 ; SI-NEXT:    s_lshr_b32 s45, s27, 16
@@ -3208,8 +3376,30 @@ define inreg <28 x half> @bitcast_v14i32_to_v28f16_scalar(<14 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[42:43], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[42:43], -1
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[42:43], s[42:43], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -3238,7 +3428,7 @@ define inreg <28 x half> @bitcast_v14i32_to_v28f16_scalar(<14 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s56, s21, 16
 ; SI-NEXT:    s_lshr_b32 s57, s19, 16
 ; SI-NEXT:    s_lshr_b32 s58, s17, 16
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s40, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -3296,32 +3486,24 @@ define inreg <28 x half> @bitcast_v14i32_to_v28f16_scalar(<14 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v12, s4
 ; SI-NEXT:    v_mov_b32_e32 v13, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_v14i32_to_v28f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s29, s29, 3
 ; VI-NEXT:    s_add_i32 s28, s28, 3
 ; VI-NEXT:    s_add_i32 s27, s27, 3
@@ -3336,7 +3518,7 @@ define inreg <28 x half> @bitcast_v14i32_to_v28f16_scalar(<14 x i32> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3352,18 +3534,24 @@ define inreg <28 x half> @bitcast_v14i32_to_v28f16_scalar(<14 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v12, s28
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v14i32_to_v28f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
 ; GFX9-NEXT:    s_add_i32 s28, s28, 3
 ; GFX9-NEXT:    s_add_i32 s27, s27, 3
@@ -3378,7 +3566,7 @@ define inreg <28 x half> @bitcast_v14i32_to_v28f16_scalar(<14 x i32> inreg %a, i
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3394,19 +3582,22 @@ define inreg <28 x half> @bitcast_v14i32_to_v28f16_scalar(<14 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v12, s28
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v14i32_to_v28f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB17_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s25, s25, 3
 ; GFX11-NEXT:    s_add_i32 s24, s24, 3
 ; GFX11-NEXT:    s_add_i32 s23, s23, 3
@@ -3421,7 +3612,7 @@ define inreg <28 x half> @bitcast_v14i32_to_v28f16_scalar(<14 x i32> inreg %a, i
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -3431,8 +3622,6 @@ define inreg <28 x half> @bitcast_v14i32_to_v28f16_scalar(<14 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -3842,7 +4031,7 @@ define inreg <14 x i32> @bitcast_v28f16_to_v14i32_scalar(<28 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s59, s16, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -3886,8 +4075,17 @@ define inreg <14 x i32> @bitcast_v28f16_to_v14i32_scalar(<28 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s59
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s58
@@ -4000,11 +4198,8 @@ define inreg <14 x i32> @bitcast_v28f16_to_v14i32_scalar(<28 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v12, v13, v12
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v14
 ; SI-NEXT:    v_or_b32_e32 v13, v15, v13
-; SI-NEXT:    s_branch .LBB19_5
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:    s_branch .LBB19_6
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -4021,7 +4216,7 @@ define inreg <14 x i32> @bitcast_v28f16_to_v14i32_scalar(<28 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v13, s49
 ; SI-NEXT:    v_mov_b32_e32 v14, s50
 ; SI-NEXT:    v_mov_b32_e32 v15, s51
-; SI-NEXT:  .LBB19_5: ; %end
+; SI-NEXT:  .LBB19_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s51, v16, 7
 ; SI-NEXT:    v_readlane_b32 s50, v16, 6
 ; SI-NEXT:    v_readlane_b32 s49, v16, 5
@@ -4041,10 +4236,18 @@ define inreg <14 x i32> @bitcast_v28f16_to_v14i32_scalar(<28 x half> inreg %a, i
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s29, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -4117,9 +4320,7 @@ define inreg <14 x i32> @bitcast_v28f16_to_v14i32_scalar(<28 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v14
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4143,10 +4344,18 @@ define inreg <14 x i32> @bitcast_v28f16_to_v14i32_scalar(<28 x half> inreg %a, i
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v13, s29, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v12, s28, v0 op_sel_hi:[1,0]
@@ -4163,9 +4372,7 @@ define inreg <14 x i32> @bitcast_v28f16_to_v14i32_scalar(<28 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4193,11 +4400,16 @@ define inreg <14 x i32> @bitcast_v28f16_to_v14i32_scalar(<28 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s25 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v12, 0x200, s24 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v11, 0x200, s23 op_sel_hi:[0,1]
@@ -4213,8 +4425,6 @@ define inreg <14 x i32> @bitcast_v28f16_to_v14i32_scalar(<28 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -4367,10 +4577,18 @@ define inreg <7 x i64> @bitcast_v14f32_to_v7i64_scalar(<14 x float> inreg %a, i3
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_3
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB21_4
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; SI-NEXT:    v_add_f32_e64 v12, s28, 1.0
 ; SI-NEXT:    v_add_f32_e64 v11, s27, 1.0
@@ -4386,9 +4604,7 @@ define inreg <7 x i64> @bitcast_v14f32_to_v7i64_scalar(<14 x float> inreg %a, i3
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB21_3:
-; SI-NEXT:    s_branch .LBB21_2
-; SI-NEXT:  .LBB21_4:
+; SI-NEXT:  .LBB21_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4412,10 +4628,18 @@ define inreg <7 x i64> @bitcast_v14f32_to_v7i64_scalar(<14 x float> inreg %a, i3
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_3
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_4
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; VI-NEXT:    v_add_f32_e64 v12, s28, 1.0
 ; VI-NEXT:    v_add_f32_e64 v11, s27, 1.0
@@ -4431,9 +4655,7 @@ define inreg <7 x i64> @bitcast_v14f32_to_v7i64_scalar(<14 x float> inreg %a, i3
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB21_3:
-; VI-NEXT:    s_branch .LBB21_2
-; VI-NEXT:  .LBB21_4:
+; VI-NEXT:  .LBB21_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4457,10 +4679,18 @@ define inreg <7 x i64> @bitcast_v14f32_to_v7i64_scalar(<14 x float> inreg %a, i3
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_4
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v12, s28, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v11, s27, 1.0
@@ -4476,9 +4706,7 @@ define inreg <7 x i64> @bitcast_v14f32_to_v7i64_scalar(<14 x float> inreg %a, i3
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB21_3:
-; GFX9-NEXT:    s_branch .LBB21_2
-; GFX9-NEXT:  .LBB21_4:
+; GFX9-NEXT:  .LBB21_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4506,11 +4734,16 @@ define inreg <7 x i64> @bitcast_v14f32_to_v7i64_scalar(<14 x float> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_4
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v13, s25, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v12, s24, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v11, s23, 1.0
@@ -4526,8 +4759,6 @@ define inreg <7 x i64> @bitcast_v14f32_to_v7i64_scalar(<14 x float> inreg %a, i3
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB21_3:
-; GFX11-NEXT:    s_branch .LBB21_2
 ; GFX11-NEXT:  .LBB21_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -4691,10 +4922,18 @@ define inreg <14 x float> @bitcast_v7i64_to_v14f32_scalar(<7 x i64> inreg %a, i3
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s28, s28, 3
 ; SI-NEXT:    s_addc_u32 s29, s29, 0
 ; SI-NEXT:    s_add_u32 s26, s26, 3
@@ -4709,7 +4948,7 @@ define inreg <14 x float> @bitcast_v7i64_to_v14f32_scalar(<7 x i64> inreg %a, i3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4725,18 +4964,24 @@ define inreg <14 x float> @bitcast_v7i64_to_v14f32_scalar(<7 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v12, s28
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v7i64_to_v14f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_4
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_3
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s28, s28, 3
 ; VI-NEXT:    s_addc_u32 s29, s29, 0
 ; VI-NEXT:    s_add_u32 s26, s26, 3
@@ -4751,7 +4996,7 @@ define inreg <14 x float> @bitcast_v7i64_to_v14f32_scalar(<7 x i64> inreg %a, i3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB23_3: ; %end
+; VI-NEXT:  .LBB23_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4767,18 +5012,24 @@ define inreg <14 x float> @bitcast_v7i64_to_v14f32_scalar(<7 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v12, s28
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_4:
-; VI-NEXT:    s_branch .LBB23_2
 ;
 ; GFX9-LABEL: bitcast_v7i64_to_v14f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_3
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s28, s28, 3
 ; GFX9-NEXT:    s_addc_u32 s29, s29, 0
 ; GFX9-NEXT:    s_add_u32 s26, s26, 3
@@ -4793,7 +5044,7 @@ define inreg <14 x float> @bitcast_v7i64_to_v14f32_scalar(<7 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB23_3: ; %end
+; GFX9-NEXT:  .LBB23_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4809,19 +5060,22 @@ define inreg <14 x float> @bitcast_v7i64_to_v14f32_scalar(<7 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v12, s28
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_4:
-; GFX9-NEXT:    s_branch .LBB23_2
 ;
 ; GFX11-LABEL: bitcast_v7i64_to_v14f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_3
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s24, s24, 3
 ; GFX11-NEXT:    s_addc_u32 s25, s25, 0
 ; GFX11-NEXT:    s_add_u32 s22, s22, 3
@@ -4836,7 +5090,7 @@ define inreg <14 x float> @bitcast_v7i64_to_v14f32_scalar(<7 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB23_3: ; %end
+; GFX11-NEXT:  .LBB23_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -4846,8 +5100,6 @@ define inreg <14 x float> @bitcast_v7i64_to_v14f32_scalar(<7 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_4:
-; GFX11-NEXT:    s_branch .LBB23_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -4990,10 +5242,18 @@ define inreg <7 x double> @bitcast_v14f32_to_v7f64_scalar(<14 x float> inreg %a,
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_3
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB25_4
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; SI-NEXT:    v_add_f32_e64 v12, s28, 1.0
 ; SI-NEXT:    v_add_f32_e64 v11, s27, 1.0
@@ -5009,9 +5269,7 @@ define inreg <7 x double> @bitcast_v14f32_to_v7f64_scalar(<14 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB25_3:
-; SI-NEXT:    s_branch .LBB25_2
-; SI-NEXT:  .LBB25_4:
+; SI-NEXT:  .LBB25_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5035,10 +5293,18 @@ define inreg <7 x double> @bitcast_v14f32_to_v7f64_scalar(<14 x float> inreg %a,
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_3
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB25_4
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; VI-NEXT:    v_add_f32_e64 v12, s28, 1.0
 ; VI-NEXT:    v_add_f32_e64 v11, s27, 1.0
@@ -5054,9 +5320,7 @@ define inreg <7 x double> @bitcast_v14f32_to_v7f64_scalar(<14 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB25_3:
-; VI-NEXT:    s_branch .LBB25_2
-; VI-NEXT:  .LBB25_4:
+; VI-NEXT:  .LBB25_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5080,10 +5344,18 @@ define inreg <7 x double> @bitcast_v14f32_to_v7f64_scalar(<14 x float> inreg %a,
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_4
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v12, s28, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v11, s27, 1.0
@@ -5099,9 +5371,7 @@ define inreg <7 x double> @bitcast_v14f32_to_v7f64_scalar(<14 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB25_3:
-; GFX9-NEXT:    s_branch .LBB25_2
-; GFX9-NEXT:  .LBB25_4:
+; GFX9-NEXT:  .LBB25_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5129,11 +5399,16 @@ define inreg <7 x double> @bitcast_v14f32_to_v7f64_scalar(<14 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_4
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB25_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v13, s25, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v12, s24, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v11, s23, 1.0
@@ -5149,8 +5424,6 @@ define inreg <7 x double> @bitcast_v14f32_to_v7f64_scalar(<14 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB25_3:
-; GFX11-NEXT:    s_branch .LBB25_2
 ; GFX11-NEXT:  .LBB25_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -5282,10 +5555,18 @@ define inreg <14 x float> @bitcast_v7f64_to_v14f32_scalar(<7 x double> inreg %a,
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB27_3
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB27_4
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
@@ -5294,9 +5575,7 @@ define inreg <14 x float> @bitcast_v7f64_to_v14f32_scalar(<7 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB27_3:
-; SI-NEXT:    s_branch .LBB27_2
-; SI-NEXT:  .LBB27_4:
+; SI-NEXT:  .LBB27_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5320,10 +5599,18 @@ define inreg <14 x float> @bitcast_v7f64_to_v14f32_scalar(<7 x double> inreg %a,
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_3
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB27_4
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
@@ -5332,9 +5619,7 @@ define inreg <14 x float> @bitcast_v7f64_to_v14f32_scalar(<7 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB27_3:
-; VI-NEXT:    s_branch .LBB27_2
-; VI-NEXT:  .LBB27_4:
+; VI-NEXT:  .LBB27_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5358,10 +5643,18 @@ define inreg <14 x float> @bitcast_v7f64_to_v14f32_scalar(<7 x double> inreg %a,
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_4
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
@@ -5370,9 +5663,7 @@ define inreg <14 x float> @bitcast_v7f64_to_v14f32_scalar(<7 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB27_3:
-; GFX9-NEXT:    s_branch .LBB27_2
-; GFX9-NEXT:  .LBB27_4:
+; GFX9-NEXT:  .LBB27_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5400,11 +5691,16 @@ define inreg <14 x float> @bitcast_v7f64_to_v14f32_scalar(<7 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_4
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB27_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
 ; GFX11-NEXT:    v_add_f64 v[8:9], s[20:21], 1.0
@@ -5413,8 +5709,6 @@ define inreg <14 x float> @bitcast_v7f64_to_v14f32_scalar(<7 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB27_3:
-; GFX11-NEXT:    s_branch .LBB27_2
 ; GFX11-NEXT:  .LBB27_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -5654,7 +5948,7 @@ define inreg <28 x i16> @bitcast_v14f32_to_v28i16_scalar(<14 x float> inreg %a,
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s58, s29, 16
 ; SI-NEXT:    s_lshr_b32 s57, s27, 16
@@ -5670,8 +5964,30 @@ define inreg <28 x i16> @bitcast_v14f32_to_v28i16_scalar(<14 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[42:43], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[42:43], -1
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[42:43], s[42:43], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; SI-NEXT:    v_add_f32_e64 v12, s28, 1.0
 ; SI-NEXT:    v_add_f32_e64 v11, s27, 1.0
@@ -5700,24 +6016,8 @@ define inreg <28 x i16> @bitcast_v14f32_to_v28i16_scalar(<14 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v26, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v27, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v28, 16, v1
-; SI-NEXT:    s_branch .LBB29_5
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:    s_branch .LBB29_6
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5746,7 +6046,7 @@ define inreg <28 x i16> @bitcast_v14f32_to_v28i16_scalar(<14 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v18, s12
 ; SI-NEXT:    v_mov_b32_e32 v19, s14
 ; SI-NEXT:    v_mov_b32_e32 v20, s40
-; SI-NEXT:  .LBB29_5: ; %end
+; SI-NEXT:  .LBB29_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v20, 16, v20
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v19, 16, v19
@@ -5796,10 +6096,18 @@ define inreg <28 x i16> @bitcast_v14f32_to_v28i16_scalar(<14 x float> inreg %a,
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; VI-NEXT:    v_add_f32_e64 v12, s28, 1.0
 ; VI-NEXT:    v_add_f32_e64 v11, s27, 1.0
@@ -5815,9 +6123,7 @@ define inreg <28 x i16> @bitcast_v14f32_to_v28i16_scalar(<14 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5841,10 +6147,18 @@ define inreg <28 x i16> @bitcast_v14f32_to_v28i16_scalar(<14 x float> inreg %a,
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v12, s28, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v11, s27, 1.0
@@ -5860,9 +6174,7 @@ define inreg <28 x i16> @bitcast_v14f32_to_v28i16_scalar(<14 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5890,11 +6202,16 @@ define inreg <28 x i16> @bitcast_v14f32_to_v28i16_scalar(<14 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB29_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB29_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v13, s25, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v12, s24, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v11, s23, 1.0
@@ -5910,8 +6227,6 @@ define inreg <28 x i16> @bitcast_v14f32_to_v28i16_scalar(<14 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB29_3:
-; GFX11-NEXT:    s_branch .LBB29_2
 ; GFX11-NEXT:  .LBB29_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -6275,7 +6590,7 @@ define inreg <14 x float> @bitcast_v28i16_to_v14f32_scalar(<28 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s59, s16, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_4
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -6319,8 +6634,17 @@ define inreg <14 x float> @bitcast_v28i16_to_v14f32_scalar(<28 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB31_3
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -6391,7 +6715,7 @@ define inreg <14 x float> @bitcast_v28i16_to_v14f32_scalar(<28 x i16> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:  .LBB31_3: ; %end
+; SI-NEXT:  .LBB31_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -6419,19 +6743,24 @@ define inreg <14 x float> @bitcast_v28i16_to_v14f32_scalar(<28 x i16> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB31_2
 ;
 ; VI-LABEL: bitcast_v28i16_to_v14f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_4
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB31_3
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s29, 3
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -6502,7 +6831,7 @@ define inreg <14 x float> @bitcast_v28i16_to_v14f32_scalar(<28 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB31_3: ; %end
+; VI-NEXT:  .LBB31_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6518,18 +6847,24 @@ define inreg <14 x float> @bitcast_v28i16_to_v14f32_scalar(<28 x i16> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v12, s28
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_4:
-; VI-NEXT:    s_branch .LBB31_2
 ;
 ; GFX9-LABEL: bitcast_v28i16_to_v14f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_4
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v13, s29, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v12, s28, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v11, s27, 3 op_sel_hi:[1,0]
@@ -6545,9 +6880,7 @@ define inreg <14 x float> @bitcast_v28i16_to_v14f32_scalar(<28 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB31_3:
-; GFX9-NEXT:    s_branch .LBB31_2
-; GFX9-NEXT:  .LBB31_4:
+; GFX9-NEXT:  .LBB31_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6575,11 +6908,16 @@ define inreg <14 x float> @bitcast_v28i16_to_v14f32_scalar(<28 x i16> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_4
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v13, s25, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v12, s24, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v11, s23, 3 op_sel_hi:[1,0]
@@ -6595,8 +6933,6 @@ define inreg <14 x float> @bitcast_v28i16_to_v14f32_scalar(<28 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_3:
-; GFX11-NEXT:    s_branch .LBB31_2
 ; GFX11-NEXT:  .LBB31_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -6836,7 +7172,7 @@ define inreg <28 x half> @bitcast_v14f32_to_v28f16_scalar(<14 x float> inreg %a,
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s58, s29, 16
 ; SI-NEXT:    s_lshr_b32 s57, s27, 16
@@ -6852,8 +7188,30 @@ define inreg <28 x half> @bitcast_v14f32_to_v28f16_scalar(<14 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[42:43], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[42:43], -1
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[42:43], s[42:43], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; SI-NEXT:    v_add_f32_e64 v12, s28, 1.0
 ; SI-NEXT:    v_add_f32_e64 v11, s27, 1.0
@@ -6882,24 +7240,8 @@ define inreg <28 x half> @bitcast_v14f32_to_v28f16_scalar(<14 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v26, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v27, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v28, 16, v1
-; SI-NEXT:    s_branch .LBB33_5
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:    s_branch .LBB33_6
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6928,7 +7270,7 @@ define inreg <28 x half> @bitcast_v14f32_to_v28f16_scalar(<14 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v18, s12
 ; SI-NEXT:    v_mov_b32_e32 v19, s14
 ; SI-NEXT:    v_mov_b32_e32 v20, s40
-; SI-NEXT:  .LBB33_5: ; %end
+; SI-NEXT:  .LBB33_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v20, 16, v20
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v19, 16, v19
@@ -6978,10 +7320,18 @@ define inreg <28 x half> @bitcast_v14f32_to_v28f16_scalar(<14 x float> inreg %a,
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; VI-NEXT:    v_add_f32_e64 v12, s28, 1.0
 ; VI-NEXT:    v_add_f32_e64 v11, s27, 1.0
@@ -6997,9 +7347,7 @@ define inreg <28 x half> @bitcast_v14f32_to_v28f16_scalar(<14 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7023,10 +7371,18 @@ define inreg <28 x half> @bitcast_v14f32_to_v28f16_scalar(<14 x float> inreg %a,
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v12, s28, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v11, s27, 1.0
@@ -7042,9 +7398,7 @@ define inreg <28 x half> @bitcast_v14f32_to_v28f16_scalar(<14 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -7072,11 +7426,16 @@ define inreg <28 x half> @bitcast_v14f32_to_v28f16_scalar(<14 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB33_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB33_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v13, s25, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v12, s24, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v11, s23, 1.0
@@ -7092,8 +7451,6 @@ define inreg <28 x half> @bitcast_v14f32_to_v28f16_scalar(<14 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB33_3:
-; GFX11-NEXT:    s_branch .LBB33_2
 ; GFX11-NEXT:  .LBB33_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -7513,7 +7870,7 @@ define inreg <14 x float> @bitcast_v28f16_to_v14f32_scalar(<28 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s59, s16, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_3
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -7557,8 +7914,17 @@ define inreg <14 x float> @bitcast_v28f16_to_v14f32_scalar(<28 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB35_4
-; SI-NEXT:  .LBB35_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s59
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s58
@@ -7671,11 +8037,8 @@ define inreg <14 x float> @bitcast_v28f16_to_v14f32_scalar(<28 x half> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v12, v13, v12
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v14
 ; SI-NEXT:    v_or_b32_e32 v13, v15, v13
-; SI-NEXT:    s_branch .LBB35_5
-; SI-NEXT:  .LBB35_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB35_2
-; SI-NEXT:  .LBB35_4:
+; SI-NEXT:    s_branch .LBB35_6
+; SI-NEXT:  .LBB35_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -7692,7 +8055,7 @@ define inreg <14 x float> @bitcast_v28f16_to_v14f32_scalar(<28 x half> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v13, s49
 ; SI-NEXT:    v_mov_b32_e32 v14, s50
 ; SI-NEXT:    v_mov_b32_e32 v15, s51
-; SI-NEXT:  .LBB35_5: ; %end
+; SI-NEXT:  .LBB35_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s51, v16, 7
 ; SI-NEXT:    v_readlane_b32 s50, v16, 6
 ; SI-NEXT:    v_readlane_b32 s49, v16, 5
@@ -7712,10 +8075,18 @@ define inreg <14 x float> @bitcast_v28f16_to_v14f32_scalar(<28 x half> inreg %a,
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s29, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -7788,9 +8159,7 @@ define inreg <14 x float> @bitcast_v28f16_to_v14f32_scalar(<28 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v14
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7814,10 +8183,18 @@ define inreg <14 x float> @bitcast_v28f16_to_v14f32_scalar(<28 x half> inreg %a,
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v13, s29, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v12, s28, v0 op_sel_hi:[1,0]
@@ -7834,9 +8211,7 @@ define inreg <14 x float> @bitcast_v28f16_to_v14f32_scalar(<28 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -7864,11 +8239,16 @@ define inreg <14 x float> @bitcast_v28f16_to_v14f32_scalar(<28 x half> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s25 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v12, 0x200, s24 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v11, 0x200, s23 op_sel_hi:[0,1]
@@ -7884,8 +8264,6 @@ define inreg <14 x float> @bitcast_v28f16_to_v14f32_scalar(<28 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -8049,10 +8427,18 @@ define inreg <7 x double> @bitcast_v7i64_to_v7f64_scalar(<7 x i64> inreg %a, i32
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_4
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB37_3
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
@@ -8067,7 +8453,7 @@ define inreg <7 x double> @bitcast_v7i64_to_v7f64_scalar(<7 x i64> inreg %a, i32
 ; SI-NEXT:    s_addc_u32 s27, s27, 0
 ; SI-NEXT:    s_add_u32 s28, s28, 3
 ; SI-NEXT:    s_addc_u32 s29, s29, 0
-; SI-NEXT:  .LBB37_3: ; %end
+; SI-NEXT:  .LBB37_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8083,18 +8469,24 @@ define inreg <7 x double> @bitcast_v7i64_to_v7f64_scalar(<7 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v12, s28
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB37_4:
-; SI-NEXT:    s_branch .LBB37_2
 ;
 ; VI-LABEL: bitcast_v7i64_to_v7f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_4
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_3
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -8109,7 +8501,7 @@ define inreg <7 x double> @bitcast_v7i64_to_v7f64_scalar(<7 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s27, s27, 0
 ; VI-NEXT:    s_add_u32 s28, s28, 3
 ; VI-NEXT:    s_addc_u32 s29, s29, 0
-; VI-NEXT:  .LBB37_3: ; %end
+; VI-NEXT:  .LBB37_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8125,18 +8517,24 @@ define inreg <7 x double> @bitcast_v7i64_to_v7f64_scalar(<7 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v12, s28
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_4:
-; VI-NEXT:    s_branch .LBB37_2
 ;
 ; GFX9-LABEL: bitcast_v7i64_to_v7f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_3
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -8151,7 +8549,7 @@ define inreg <7 x double> @bitcast_v7i64_to_v7f64_scalar(<7 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s27, s27, 0
 ; GFX9-NEXT:    s_add_u32 s28, s28, 3
 ; GFX9-NEXT:    s_addc_u32 s29, s29, 0
-; GFX9-NEXT:  .LBB37_3: ; %end
+; GFX9-NEXT:  .LBB37_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -8167,19 +8565,22 @@ define inreg <7 x double> @bitcast_v7i64_to_v7f64_scalar(<7 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v12, s28
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_4:
-; GFX9-NEXT:    s_branch .LBB37_2
 ;
 ; GFX11-LABEL: bitcast_v7i64_to_v7f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_3
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -8194,7 +8595,7 @@ define inreg <7 x double> @bitcast_v7i64_to_v7f64_scalar(<7 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s23, s23, 0
 ; GFX11-NEXT:    s_add_u32 s24, s24, 3
 ; GFX11-NEXT:    s_addc_u32 s25, s25, 0
-; GFX11-NEXT:  .LBB37_3: ; %end
+; GFX11-NEXT:  .LBB37_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -8203,8 +8604,6 @@ define inreg <7 x double> @bitcast_v7i64_to_v7f64_scalar(<7 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_4:
-; GFX11-NEXT:    s_branch .LBB37_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -8326,10 +8725,18 @@ define inreg <7 x i64> @bitcast_v7f64_to_v7i64_scalar(<7 x double> inreg %a, i32
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_3
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB39_4
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
@@ -8338,9 +8745,7 @@ define inreg <7 x i64> @bitcast_v7f64_to_v7i64_scalar(<7 x double> inreg %a, i32
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; SI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB39_3:
-; SI-NEXT:    s_branch .LBB39_2
-; SI-NEXT:  .LBB39_4:
+; SI-NEXT:  .LBB39_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8364,10 +8769,18 @@ define inreg <7 x i64> @bitcast_v7f64_to_v7i64_scalar(<7 x double> inreg %a, i32
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_3
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_4
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
@@ -8376,9 +8789,7 @@ define inreg <7 x i64> @bitcast_v7f64_to_v7i64_scalar(<7 x double> inreg %a, i32
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB39_3:
-; VI-NEXT:    s_branch .LBB39_2
-; VI-NEXT:  .LBB39_4:
+; VI-NEXT:  .LBB39_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8402,10 +8813,18 @@ define inreg <7 x i64> @bitcast_v7f64_to_v7i64_scalar(<7 x double> inreg %a, i32
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_4
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
@@ -8414,9 +8833,7 @@ define inreg <7 x i64> @bitcast_v7f64_to_v7i64_scalar(<7 x double> inreg %a, i32
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB39_3:
-; GFX9-NEXT:    s_branch .LBB39_2
-; GFX9-NEXT:  .LBB39_4:
+; GFX9-NEXT:  .LBB39_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -8444,11 +8861,16 @@ define inreg <7 x i64> @bitcast_v7f64_to_v7i64_scalar(<7 x double> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[16:17], 1.0
@@ -8457,8 +8879,6 @@ define inreg <7 x i64> @bitcast_v7f64_to_v7i64_scalar(<7 x double> inreg %a, i32
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB39_3:
-; GFX11-NEXT:    s_branch .LBB39_2
 ; GFX11-NEXT:  .LBB39_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -8709,7 +9129,7 @@ define inreg <28 x i16> @bitcast_v7i64_to_v28i16_scalar(<7 x i64> inreg %a, i32
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_4
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s44, s29, 16
 ; SI-NEXT:    s_lshr_b32 s45, s27, 16
@@ -8725,8 +9145,30 @@ define inreg <28 x i16> @bitcast_v7i64_to_v28i16_scalar(<7 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB41_3
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[42:43], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[42:43], -1
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[42:43], s[42:43], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s28, s28, 3
 ; SI-NEXT:    s_addc_u32 s29, s29, 0
 ; SI-NEXT:    s_add_u32 s26, s26, 3
@@ -8755,7 +9197,7 @@ define inreg <28 x i16> @bitcast_v7i64_to_v28i16_scalar(<7 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 16
-; SI-NEXT:  .LBB41_3: ; %end
+; SI-NEXT:  .LBB41_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s40, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -8813,32 +9255,24 @@ define inreg <28 x i16> @bitcast_v7i64_to_v28i16_scalar(<7 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v12, s4
 ; SI-NEXT:    v_mov_b32_e32 v13, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB41_4:
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    s_branch .LBB41_2
 ;
 ; VI-LABEL: bitcast_v7i64_to_v28i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_4
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB41_3
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s28, s28, 3
 ; VI-NEXT:    s_addc_u32 s29, s29, 0
 ; VI-NEXT:    s_add_u32 s26, s26, 3
@@ -8853,7 +9287,7 @@ define inreg <28 x i16> @bitcast_v7i64_to_v28i16_scalar(<7 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB41_3: ; %end
+; VI-NEXT:  .LBB41_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8869,18 +9303,24 @@ define inreg <28 x i16> @bitcast_v7i64_to_v28i16_scalar(<7 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v12, s28
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_4:
-; VI-NEXT:    s_branch .LBB41_2
 ;
 ; GFX9-LABEL: bitcast_v7i64_to_v28i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_3
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s28, s28, 3
 ; GFX9-NEXT:    s_addc_u32 s29, s29, 0
 ; GFX9-NEXT:    s_add_u32 s26, s26, 3
@@ -8895,7 +9335,7 @@ define inreg <28 x i16> @bitcast_v7i64_to_v28i16_scalar(<7 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB41_3: ; %end
+; GFX9-NEXT:  .LBB41_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -8911,19 +9351,22 @@ define inreg <28 x i16> @bitcast_v7i64_to_v28i16_scalar(<7 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v12, s28
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_4:
-; GFX9-NEXT:    s_branch .LBB41_2
 ;
 ; GFX11-LABEL: bitcast_v7i64_to_v28i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_3
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB41_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s24, s24, 3
 ; GFX11-NEXT:    s_addc_u32 s25, s25, 0
 ; GFX11-NEXT:    s_add_u32 s22, s22, 3
@@ -8938,7 +9381,7 @@ define inreg <28 x i16> @bitcast_v7i64_to_v28i16_scalar(<7 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB41_3: ; %end
+; GFX11-NEXT:  .LBB41_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -8948,8 +9391,6 @@ define inreg <28 x i16> @bitcast_v7i64_to_v28i16_scalar(<7 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_4:
-; GFX11-NEXT:    s_branch .LBB41_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -9303,7 +9744,7 @@ define inreg <7 x i64> @bitcast_v28i16_to_v7i64_scalar(<28 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s59, s16, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_4
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -9347,8 +9788,17 @@ define inreg <7 x i64> @bitcast_v28i16_to_v7i64_scalar(<28 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB43_3
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -9419,7 +9869,7 @@ define inreg <7 x i64> @bitcast_v28i16_to_v7i64_scalar(<28 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:  .LBB43_3: ; %end
+; SI-NEXT:  .LBB43_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -9447,19 +9897,24 @@ define inreg <7 x i64> @bitcast_v28i16_to_v7i64_scalar(<28 x i16> inreg %a, i32
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB43_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB43_2
 ;
 ; VI-LABEL: bitcast_v28i16_to_v7i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_4
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB43_3
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s29, 3
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -9530,7 +9985,7 @@ define inreg <7 x i64> @bitcast_v28i16_to_v7i64_scalar(<28 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB43_3: ; %end
+; VI-NEXT:  .LBB43_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -9546,18 +10001,24 @@ define inreg <7 x i64> @bitcast_v28i16_to_v7i64_scalar(<28 x i16> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v12, s28
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_4:
-; VI-NEXT:    s_branch .LBB43_2
 ;
 ; GFX9-LABEL: bitcast_v28i16_to_v7i64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v13, s29, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v12, s28, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v11, s27, 3 op_sel_hi:[1,0]
@@ -9573,9 +10034,7 @@ define inreg <7 x i64> @bitcast_v28i16_to_v7i64_scalar(<28 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -9603,11 +10062,16 @@ define inreg <7 x i64> @bitcast_v28i16_to_v7i64_scalar(<28 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB43_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v13, s25, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v12, s24, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v11, s23, 3 op_sel_hi:[1,0]
@@ -9623,8 +10087,6 @@ define inreg <7 x i64> @bitcast_v28i16_to_v7i64_scalar(<28 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_3:
-; GFX11-NEXT:    s_branch .LBB43_2
 ; GFX11-NEXT:  .LBB43_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -9875,7 +10337,7 @@ define inreg <28 x half> @bitcast_v7i64_to_v28f16_scalar(<7 x i64> inreg %a, i32
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_4
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s44, s29, 16
 ; SI-NEXT:    s_lshr_b32 s45, s27, 16
@@ -9891,8 +10353,30 @@ define inreg <28 x half> @bitcast_v7i64_to_v28f16_scalar(<7 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB45_3
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[42:43], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[42:43], -1
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[42:43], s[42:43], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s28, s28, 3
 ; SI-NEXT:    s_addc_u32 s29, s29, 0
 ; SI-NEXT:    s_add_u32 s26, s26, 3
@@ -9921,7 +10405,7 @@ define inreg <28 x half> @bitcast_v7i64_to_v28f16_scalar(<7 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 16
-; SI-NEXT:  .LBB45_3: ; %end
+; SI-NEXT:  .LBB45_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s40, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s7
@@ -9979,32 +10463,24 @@ define inreg <28 x half> @bitcast_v7i64_to_v28f16_scalar(<7 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v12, s4
 ; SI-NEXT:    v_mov_b32_e32 v13, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB45_4:
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    s_branch .LBB45_2
 ;
 ; VI-LABEL: bitcast_v7i64_to_v28f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_4
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB45_3
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s28, s28, 3
 ; VI-NEXT:    s_addc_u32 s29, s29, 0
 ; VI-NEXT:    s_add_u32 s26, s26, 3
@@ -10019,7 +10495,7 @@ define inreg <28 x half> @bitcast_v7i64_to_v28f16_scalar(<7 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB45_3: ; %end
+; VI-NEXT:  .LBB45_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -10035,18 +10511,24 @@ define inreg <28 x half> @bitcast_v7i64_to_v28f16_scalar(<7 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v12, s28
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_4:
-; VI-NEXT:    s_branch .LBB45_2
 ;
 ; GFX9-LABEL: bitcast_v7i64_to_v28f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_3
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s28, s28, 3
 ; GFX9-NEXT:    s_addc_u32 s29, s29, 0
 ; GFX9-NEXT:    s_add_u32 s26, s26, 3
@@ -10061,7 +10543,7 @@ define inreg <28 x half> @bitcast_v7i64_to_v28f16_scalar(<7 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB45_3: ; %end
+; GFX9-NEXT:  .LBB45_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -10077,19 +10559,22 @@ define inreg <28 x half> @bitcast_v7i64_to_v28f16_scalar(<7 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v12, s28
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_4:
-; GFX9-NEXT:    s_branch .LBB45_2
 ;
 ; GFX11-LABEL: bitcast_v7i64_to_v28f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_3
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB45_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s24, s24, 3
 ; GFX11-NEXT:    s_addc_u32 s25, s25, 0
 ; GFX11-NEXT:    s_add_u32 s22, s22, 3
@@ -10104,7 +10589,7 @@ define inreg <28 x half> @bitcast_v7i64_to_v28f16_scalar(<7 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB45_3: ; %end
+; GFX11-NEXT:  .LBB45_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -10114,8 +10599,6 @@ define inreg <28 x half> @bitcast_v7i64_to_v28f16_scalar(<7 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v11, s23
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_4:
-; GFX11-NEXT:    s_branch .LBB45_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -10525,7 +11008,7 @@ define inreg <7 x i64> @bitcast_v28f16_to_v7i64_scalar(<28 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s59, s16, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB47_3
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -10569,8 +11052,17 @@ define inreg <7 x i64> @bitcast_v28f16_to_v7i64_scalar(<28 x half> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB47_4
-; SI-NEXT:  .LBB47_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s59
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s58
@@ -10683,11 +11175,8 @@ define inreg <7 x i64> @bitcast_v28f16_to_v7i64_scalar(<28 x half> inreg %a, i32
 ; SI-NEXT:    v_or_b32_e32 v12, v13, v12
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v14
 ; SI-NEXT:    v_or_b32_e32 v13, v15, v13
-; SI-NEXT:    s_branch .LBB47_5
-; SI-NEXT:  .LBB47_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB47_2
-; SI-NEXT:  .LBB47_4:
+; SI-NEXT:    s_branch .LBB47_6
+; SI-NEXT:  .LBB47_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -10704,7 +11193,7 @@ define inreg <7 x i64> @bitcast_v28f16_to_v7i64_scalar(<28 x half> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v13, s49
 ; SI-NEXT:    v_mov_b32_e32 v14, s50
 ; SI-NEXT:    v_mov_b32_e32 v15, s51
-; SI-NEXT:  .LBB47_5: ; %end
+; SI-NEXT:  .LBB47_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s51, v16, 7
 ; SI-NEXT:    v_readlane_b32 s50, v16, 6
 ; SI-NEXT:    v_readlane_b32 s49, v16, 5
@@ -10724,10 +11213,18 @@ define inreg <7 x i64> @bitcast_v28f16_to_v7i64_scalar(<28 x half> inreg %a, i32
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s29, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -10800,9 +11297,7 @@ define inreg <7 x i64> @bitcast_v28f16_to_v7i64_scalar(<28 x half> inreg %a, i32
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v14
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -10826,10 +11321,18 @@ define inreg <7 x i64> @bitcast_v28f16_to_v7i64_scalar(<28 x half> inreg %a, i32
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v13, s29, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v12, s28, v0 op_sel_hi:[1,0]
@@ -10846,9 +11349,7 @@ define inreg <7 x i64> @bitcast_v28f16_to_v7i64_scalar(<28 x half> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -10876,11 +11377,16 @@ define inreg <7 x i64> @bitcast_v28f16_to_v7i64_scalar(<28 x half> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB47_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s25 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v12, 0x200, s24 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v11, 0x200, s23 op_sel_hi:[0,1]
@@ -10896,8 +11402,6 @@ define inreg <7 x i64> @bitcast_v28f16_to_v7i64_scalar(<28 x half> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB47_3:
-; GFX11-NEXT:    s_branch .LBB47_2
 ; GFX11-NEXT:  .LBB47_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -11116,7 +11620,7 @@ define inreg <28 x i16> @bitcast_v7f64_to_v28i16_scalar(<7 x double> inreg %a, i
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_3
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s58, s29, 16
 ; SI-NEXT:    s_lshr_b32 s57, s27, 16
@@ -11132,8 +11636,30 @@ define inreg <28 x i16> @bitcast_v7f64_to_v28i16_scalar(<7 x double> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB49_4
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[42:43], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[42:43], -1
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[42:43], s[42:43], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
@@ -11155,24 +11681,8 @@ define inreg <28 x i16> @bitcast_v7f64_to_v28i16_scalar(<7 x double> inreg %a, i
 ; SI-NEXT:    v_lshrrev_b32_e32 v26, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v27, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v28, 16, v1
-; SI-NEXT:    s_branch .LBB49_5
-; SI-NEXT:  .LBB49_3:
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    s_branch .LBB49_2
-; SI-NEXT:  .LBB49_4:
+; SI-NEXT:    s_branch .LBB49_6
+; SI-NEXT:  .LBB49_5:
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    v_mov_b32_e32 v11, s27
 ; SI-NEXT:    v_mov_b32_e32 v9, s25
@@ -11201,7 +11711,7 @@ define inreg <28 x i16> @bitcast_v7f64_to_v28i16_scalar(<7 x double> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v16, s8
 ; SI-NEXT:    v_mov_b32_e32 v15, s6
 ; SI-NEXT:    v_mov_b32_e32 v14, s4
-; SI-NEXT:  .LBB49_5: ; %end
+; SI-NEXT:  .LBB49_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v20, 16, v20
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v19, 16, v19
@@ -11251,10 +11761,18 @@ define inreg <28 x i16> @bitcast_v7f64_to_v28i16_scalar(<7 x double> inreg %a, i
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_3
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB49_4
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
@@ -11263,9 +11781,7 @@ define inreg <28 x i16> @bitcast_v7f64_to_v28i16_scalar(<7 x double> inreg %a, i
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB49_3:
-; VI-NEXT:    s_branch .LBB49_2
-; VI-NEXT:  .LBB49_4:
+; VI-NEXT:  .LBB49_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -11289,10 +11805,18 @@ define inreg <28 x i16> @bitcast_v7f64_to_v28i16_scalar(<7 x double> inreg %a, i
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
@@ -11301,9 +11825,7 @@ define inreg <28 x i16> @bitcast_v7f64_to_v28i16_scalar(<7 x double> inreg %a, i
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -11331,11 +11853,16 @@ define inreg <28 x i16> @bitcast_v7f64_to_v28i16_scalar(<7 x double> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB49_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB49_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB49_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB49_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
 ; GFX11-NEXT:    v_add_f64 v[8:9], s[20:21], 1.0
@@ -11344,8 +11871,6 @@ define inreg <28 x i16> @bitcast_v7f64_to_v28i16_scalar(<7 x double> inreg %a, i
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB49_3:
-; GFX11-NEXT:    s_branch .LBB49_2
 ; GFX11-NEXT:  .LBB49_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -11709,7 +12234,7 @@ define inreg <7 x double> @bitcast_v28i16_to_v7f64_scalar(<28 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s59, s16, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -11753,8 +12278,17 @@ define inreg <7 x double> @bitcast_v28i16_to_v7f64_scalar(<28 x i16> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -11825,7 +12359,7 @@ define inreg <7 x double> @bitcast_v28i16_to_v7f64_scalar(<28 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:  .LBB51_3: ; %end
+; SI-NEXT:  .LBB51_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -11853,19 +12387,24 @@ define inreg <7 x double> @bitcast_v28i16_to_v7f64_scalar(<28 x i16> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v28i16_to_v7f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s29, 3
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -11936,7 +12475,7 @@ define inreg <7 x double> @bitcast_v28i16_to_v7f64_scalar(<28 x i16> inreg %a, i
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB51_3: ; %end
+; VI-NEXT:  .LBB51_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -11952,18 +12491,24 @@ define inreg <7 x double> @bitcast_v28i16_to_v7f64_scalar(<28 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v12, s28
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v28i16_to_v7f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_4
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v13, s29, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v12, s28, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v11, s27, 3 op_sel_hi:[1,0]
@@ -11979,9 +12524,7 @@ define inreg <7 x double> @bitcast_v28i16_to_v7f64_scalar(<28 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB51_3:
-; GFX9-NEXT:    s_branch .LBB51_2
-; GFX9-NEXT:  .LBB51_4:
+; GFX9-NEXT:  .LBB51_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -12009,11 +12552,16 @@ define inreg <7 x double> @bitcast_v28i16_to_v7f64_scalar(<28 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB51_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB51_4
-; GFX11-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB51_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v13, s25, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v12, s24, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v11, s23, 3 op_sel_hi:[1,0]
@@ -12029,8 +12577,6 @@ define inreg <7 x double> @bitcast_v28i16_to_v7f64_scalar(<28 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB51_3:
-; GFX11-NEXT:    s_branch .LBB51_2
 ; GFX11-NEXT:  .LBB51_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -12249,7 +12795,7 @@ define inreg <28 x half> @bitcast_v7f64_to_v28f16_scalar(<7 x double> inreg %a,
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_3
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s58, s29, 16
 ; SI-NEXT:    s_lshr_b32 s57, s27, 16
@@ -12265,8 +12811,30 @@ define inreg <28 x half> @bitcast_v7f64_to_v28f16_scalar(<7 x double> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB53_4
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[42:43], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[42:43], -1
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[42:43], s[42:43], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
@@ -12288,24 +12856,8 @@ define inreg <28 x half> @bitcast_v7f64_to_v28f16_scalar(<7 x double> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v26, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v27, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v28, 16, v1
-; SI-NEXT:    s_branch .LBB53_5
-; SI-NEXT:  .LBB53_3:
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    s_branch .LBB53_2
-; SI-NEXT:  .LBB53_4:
+; SI-NEXT:    s_branch .LBB53_6
+; SI-NEXT:  .LBB53_5:
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    v_mov_b32_e32 v11, s27
 ; SI-NEXT:    v_mov_b32_e32 v9, s25
@@ -12334,7 +12886,7 @@ define inreg <28 x half> @bitcast_v7f64_to_v28f16_scalar(<7 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v16, s8
 ; SI-NEXT:    v_mov_b32_e32 v15, s6
 ; SI-NEXT:    v_mov_b32_e32 v14, s4
-; SI-NEXT:  .LBB53_5: ; %end
+; SI-NEXT:  .LBB53_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v20, 16, v20
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v19, 16, v19
@@ -12384,10 +12936,18 @@ define inreg <28 x half> @bitcast_v7f64_to_v28f16_scalar(<7 x double> inreg %a,
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_3
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB53_4
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
@@ -12396,9 +12956,7 @@ define inreg <28 x half> @bitcast_v7f64_to_v28f16_scalar(<7 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB53_3:
-; VI-NEXT:    s_branch .LBB53_2
-; VI-NEXT:  .LBB53_4:
+; VI-NEXT:  .LBB53_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -12422,10 +12980,18 @@ define inreg <28 x half> @bitcast_v7f64_to_v28f16_scalar(<7 x double> inreg %a,
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_4
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
@@ -12434,9 +13000,7 @@ define inreg <28 x half> @bitcast_v7f64_to_v28f16_scalar(<7 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB53_3:
-; GFX9-NEXT:    s_branch .LBB53_2
-; GFX9-NEXT:  .LBB53_4:
+; GFX9-NEXT:  .LBB53_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -12464,11 +13028,16 @@ define inreg <28 x half> @bitcast_v7f64_to_v28f16_scalar(<7 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB53_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB53_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
 ; GFX11-NEXT:    v_add_f64 v[8:9], s[20:21], 1.0
@@ -12477,8 +13046,6 @@ define inreg <28 x half> @bitcast_v7f64_to_v28f16_scalar(<7 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB53_3:
-; GFX11-NEXT:    s_branch .LBB53_2
 ; GFX11-NEXT:  .LBB53_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -12898,7 +13465,7 @@ define inreg <7 x double> @bitcast_v28f16_to_v7f64_scalar(<28 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s59, s16, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -12942,8 +13509,17 @@ define inreg <7 x double> @bitcast_v28f16_to_v7f64_scalar(<28 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s59
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s58
@@ -13056,11 +13632,8 @@ define inreg <7 x double> @bitcast_v28f16_to_v7f64_scalar(<28 x half> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v12, v13, v12
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v14
 ; SI-NEXT:    v_or_b32_e32 v13, v15, v13
-; SI-NEXT:    s_branch .LBB55_5
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:    s_branch .LBB55_6
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -13077,7 +13650,7 @@ define inreg <7 x double> @bitcast_v28f16_to_v7f64_scalar(<28 x half> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v13, s49
 ; SI-NEXT:    v_mov_b32_e32 v14, s50
 ; SI-NEXT:    v_mov_b32_e32 v15, s51
-; SI-NEXT:  .LBB55_5: ; %end
+; SI-NEXT:  .LBB55_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s51, v16, 7
 ; SI-NEXT:    v_readlane_b32 s50, v16, 6
 ; SI-NEXT:    v_readlane_b32 s49, v16, 5
@@ -13097,10 +13670,18 @@ define inreg <7 x double> @bitcast_v28f16_to_v7f64_scalar(<28 x half> inreg %a,
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s29, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -13173,9 +13754,7 @@ define inreg <7 x double> @bitcast_v28f16_to_v7f64_scalar(<28 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v14
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13199,10 +13778,18 @@ define inreg <7 x double> @bitcast_v28f16_to_v7f64_scalar(<28 x half> inreg %a,
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v13, s29, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v12, s28, v0 op_sel_hi:[1,0]
@@ -13219,9 +13806,7 @@ define inreg <7 x double> @bitcast_v28f16_to_v7f64_scalar(<28 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -13249,11 +13834,16 @@ define inreg <7 x double> @bitcast_v28f16_to_v7f64_scalar(<28 x half> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s25 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v12, 0x200, s24 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v11, 0x200, s23 op_sel_hi:[0,1]
@@ -13269,8 +13859,6 @@ define inreg <7 x double> @bitcast_v28f16_to_v7f64_scalar(<28 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -13708,7 +14296,7 @@ define inreg <28 x half> @bitcast_v28i16_to_v28f16_scalar(<28 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s89, s16, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s74, 16
@@ -13766,8 +14354,30 @@ define inreg <28 x half> @bitcast_v28i16_to_v28f16_scalar(<28 x i16> inreg %a, i
 ; SI-NEXT:    s_or_b32 s14, s14, s62
 ; SI-NEXT:    s_mov_b32 s15, s63
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[62:63], 16
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[72:73], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[72:73], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[72:73], s[72:73], exec
+; SI-NEXT:    s_cselect_b32 s43, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s43, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s28, s28, 3
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -13852,7 +14462,7 @@ define inreg <28 x half> @bitcast_v28i16_to_v28f16_scalar(<28 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s78, s5, 16
 ; SI-NEXT:    s_lshr_b32 s79, s41, 16
 ; SI-NEXT:    s_lshr_b32 s88, s15, 16
-; SI-NEXT:  .LBB57_3: ; %end
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_lshl_b32 s16, s42, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s16
@@ -13910,32 +14520,24 @@ define inreg <28 x half> @bitcast_v28i16_to_v28f16_scalar(<28 x i16> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v12, s14
 ; SI-NEXT:    v_mov_b32_e32 v13, s15
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v28i16_to_v28f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s6, s17, 0xffff0000
@@ -14006,7 +14608,7 @@ define inreg <28 x half> @bitcast_v28i16_to_v28f16_scalar(<28 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -14022,18 +14624,24 @@ define inreg <28 x half> @bitcast_v28i16_to_v28f16_scalar(<28 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v12, s28
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v28i16_to_v28f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_4
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v13, s29, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v12, s28, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v11, s27, 3 op_sel_hi:[1,0]
@@ -14049,9 +14657,7 @@ define inreg <28 x half> @bitcast_v28i16_to_v28f16_scalar(<28 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB57_3:
-; GFX9-NEXT:    s_branch .LBB57_2
-; GFX9-NEXT:  .LBB57_4:
+; GFX9-NEXT:  .LBB57_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -14079,11 +14685,16 @@ define inreg <28 x half> @bitcast_v28i16_to_v28f16_scalar(<28 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB57_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v13, s25, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v12, s24, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v11, s23, 3 op_sel_hi:[1,0]
@@ -14099,8 +14710,6 @@ define inreg <28 x half> @bitcast_v28i16_to_v28f16_scalar(<28 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB57_3:
-; GFX11-NEXT:    s_branch .LBB57_2
 ; GFX11-NEXT:  .LBB57_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -14465,10 +15074,18 @@ define inreg <28 x i16> @bitcast_v28f16_to_v28i16_scalar(<28 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s43, s16, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_3
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB59_4
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s42
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s41
@@ -14588,10 +15205,8 @@ define inreg <28 x i16> @bitcast_v28f16_to_v28i16_scalar(<28 x half> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[18:19], v[8:9], 16
 ; SI-NEXT:    v_lshr_b64 v[16:17], v[10:11], 16
 ; SI-NEXT:    v_lshr_b64 v[14:15], v[12:13], 16
-; SI-NEXT:    s_branch .LBB59_5
-; SI-NEXT:  .LBB59_3:
-; SI-NEXT:    s_branch .LBB59_2
-; SI-NEXT:  .LBB59_4:
+; SI-NEXT:    s_branch .LBB59_6
+; SI-NEXT:  .LBB59_5:
 ; SI-NEXT:    v_mov_b32_e32 v28, s15
 ; SI-NEXT:    v_mov_b32_e32 v33, s10
 ; SI-NEXT:    v_mov_b32_e32 v29, s11
@@ -14620,7 +15235,7 @@ define inreg <28 x i16> @bitcast_v28f16_to_v28i16_scalar(<28 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v18, s14
 ; SI-NEXT:    v_mov_b32_e32 v16, s13
 ; SI-NEXT:    v_mov_b32_e32 v14, s12
-; SI-NEXT:  .LBB59_5: ; %end
+; SI-NEXT:  .LBB59_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v26
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v49
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
@@ -14670,10 +15285,18 @@ define inreg <28 x i16> @bitcast_v28f16_to_v28i16_scalar(<28 x half> inreg %a, i
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_3
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_4
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s5, s28, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v2, s5
@@ -14746,9 +15369,7 @@ define inreg <28 x i16> @bitcast_v28f16_to_v28i16_scalar(<28 x half> inreg %a, i
 ; VI-NEXT:    v_or_b32_e32 v1, v0, v1
 ; VI-NEXT:    v_or_b32_e32 v0, v14, v15
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB59_3:
-; VI-NEXT:    s_branch .LBB59_2
-; VI-NEXT:  .LBB59_4:
+; VI-NEXT:  .LBB59_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -14772,10 +15393,18 @@ define inreg <28 x i16> @bitcast_v28f16_to_v28i16_scalar(<28 x half> inreg %a, i
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_4
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v13, s29, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v12, s28, v0 op_sel_hi:[1,0]
@@ -14792,9 +15421,7 @@ define inreg <28 x i16> @bitcast_v28f16_to_v28i16_scalar(<28 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB59_3:
-; GFX9-NEXT:    s_branch .LBB59_2
-; GFX9-NEXT:  .LBB59_4:
+; GFX9-NEXT:  .LBB59_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -14822,11 +15449,16 @@ define inreg <28 x i16> @bitcast_v28f16_to_v28i16_scalar(<28 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s26, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB59_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s25 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v12, 0x200, s24 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v11, 0x200, s23 op_sel_hi:[0,1]
@@ -14842,8 +15474,6 @@ define inreg <28 x i16> @bitcast_v28f16_to_v28i16_scalar(<28 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB59_3:
-; GFX11-NEXT:    s_branch .LBB59_2
 ; GFX11-NEXT:  .LBB59_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.48bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.48bit.ll
index 62cd5098d32f2..5c9706d96e4ed 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.48bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.48bit.ll
@@ -253,15 +253,26 @@ define inreg <3 x half> @bitcast_v3bf16_to_v3f16_scalar(<3 x bfloat> inreg %a, i
 ; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s5
 ; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s6
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v9
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v8
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v9
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[0:1], 16
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[4:5], 16
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr2
+; SI-NEXT:    ; implicit-def: $vgpr6
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v9
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v4
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v1
@@ -273,25 +284,28 @@ define inreg <3 x half> @bitcast_v3bf16_to_v3f16_scalar(<3 x bfloat> inreg %a, i
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v4
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[0:1], 16
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    ; implicit-def: $vgpr2
-; SI-NEXT:    ; implicit-def: $vgpr6
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v3bf16_to_v3f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_3
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_4
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -322,9 +336,7 @@ define inreg <3 x half> @bitcast_v3bf16_to_v3f16_scalar(<3 x bfloat> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x7fc00000
 ; VI-NEXT:    v_or_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_3:
-; VI-NEXT:    s_branch .LBB1_2
-; VI-NEXT:  .LBB1_4:
+; VI-NEXT:  .LBB1_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -333,10 +345,18 @@ define inreg <3 x half> @bitcast_v3bf16_to_v3f16_scalar(<3 x bfloat> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_4
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_lshl_b32 s4, s17, 16
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -370,9 +390,7 @@ define inreg <3 x half> @bitcast_v3bf16_to_v3f16_scalar(<3 x bfloat> inreg %a, i
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v2, 16, v0
 ; GFX9-NEXT:    v_lshl_or_b32 v1, s4, 16, v1
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_3:
-; GFX9-NEXT:    s_branch .LBB1_2
-; GFX9-NEXT:  .LBB1_4:
+; GFX9-NEXT:  .LBB1_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -382,11 +400,16 @@ define inreg <3 x half> @bitcast_v3bf16_to_v3f16_scalar(<3 x bfloat> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB1_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB1_4
-; GFX11-TRUE16-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-TRUE16-NEXT:  .LBB1_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s2, 0, s0
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s1, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -424,8 +447,6 @@ define inreg <3 x half> @bitcast_v3bf16_to_v3f16_scalar(<3 x bfloat> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v2
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v3.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB1_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB1_2
 ; GFX11-TRUE16-NEXT:  .LBB1_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -435,11 +456,16 @@ define inreg <3 x half> @bitcast_v3bf16_to_v3f16_scalar(<3 x bfloat> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB1_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB1_4
-; GFX11-FAKE16-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-FAKE16-NEXT:  .LBB1_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s2, s0, 16
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s1, s1, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -478,8 +504,6 @@ define inreg <3 x half> @bitcast_v3bf16_to_v3f16_scalar(<3 x bfloat> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v1, 0x7fc0, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v2, 16, v0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB1_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB1_2
 ; GFX11-FAKE16-NEXT:  .LBB1_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -614,13 +638,24 @@ define inreg <3 x bfloat> @bitcast_v3f16_to_v3bf16_scalar(<3 x half> inreg %a, i
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s5, s16, 16
 ; SI-NEXT:    s_lshl_b32 s8, s4, 16
 ; SI-NEXT:    s_lshl_b32 s9, s17, 16
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr5
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s17
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s4
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s16
@@ -633,17 +668,12 @@ define inreg <3 x bfloat> @bitcast_v3f16_to_v3bf16_scalar(<3 x half> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v3
-; SI-NEXT:    s_branch .LBB3_5
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    ; implicit-def: $sgpr5
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:    s_branch .LBB3_6
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v2, s9
 ; SI-NEXT:    v_mov_b32_e32 v1, s8
 ; SI-NEXT:    v_mov_b32_e32 v0, s5
-; SI-NEXT:  .LBB3_5: ; %end
+; SI-NEXT:  .LBB3_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
@@ -656,10 +686,18 @@ define inreg <3 x bfloat> @bitcast_v3f16_to_v3bf16_scalar(<3 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v3, s4
@@ -669,9 +707,7 @@ define inreg <3 x bfloat> @bitcast_v3f16_to_v3bf16_scalar(<3 x half> inreg %a, i
 ; VI-NEXT:    v_or_b32_e32 v0, v2, v0
 ; VI-NEXT:    v_or_b32_e32 v1, 0x7e000000, v1
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -680,17 +716,23 @@ define inreg <3 x bfloat> @bitcast_v3f16_to_v3bf16_scalar(<3 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -700,16 +742,19 @@ define inreg <3 x bfloat> @bitcast_v3f16_to_v3bf16_scalar(<3 x half> inreg %a, i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -969,13 +1014,24 @@ define inreg <3 x i16> @bitcast_v3bf16_to_v3i16_scalar(<3 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s6
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s5
 ; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s4
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v4
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr2
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v0
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v5
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
@@ -987,25 +1043,28 @@ define inreg <3 x i16> @bitcast_v3bf16_to_v3i16_scalar(<3 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[0:1], 16
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v3
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    ; implicit-def: $vgpr2
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v3bf16_to_v3i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_3
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_4
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -1036,9 +1095,7 @@ define inreg <3 x i16> @bitcast_v3bf16_to_v3i16_scalar(<3 x bfloat> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x7fc00000
 ; VI-NEXT:    v_or_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_3:
-; VI-NEXT:    s_branch .LBB5_2
-; VI-NEXT:  .LBB5_4:
+; VI-NEXT:  .LBB5_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -1047,10 +1104,18 @@ define inreg <3 x i16> @bitcast_v3bf16_to_v3i16_scalar(<3 x bfloat> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_4
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_lshl_b32 s4, s17, 16
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -1084,9 +1149,7 @@ define inreg <3 x i16> @bitcast_v3bf16_to_v3i16_scalar(<3 x bfloat> inreg %a, i3
 ; GFX9-NEXT:    v_and_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v1, s4, 16, v1
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_3:
-; GFX9-NEXT:    s_branch .LBB5_2
-; GFX9-NEXT:  .LBB5_4:
+; GFX9-NEXT:  .LBB5_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -1096,11 +1159,16 @@ define inreg <3 x i16> @bitcast_v3bf16_to_v3i16_scalar(<3 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB5_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB5_4
-; GFX11-TRUE16-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-TRUE16-NEXT:  .LBB5_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s2, s0, 16
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s0, 0, s0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -1134,8 +1202,6 @@ define inreg <3 x i16> @bitcast_v3bf16_to_v3i16_scalar(<3 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.h
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v4.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB5_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB5_2
 ; GFX11-TRUE16-NEXT:  .LBB5_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -1145,11 +1211,16 @@ define inreg <3 x i16> @bitcast_v3bf16_to_v3i16_scalar(<3 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB5_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB5_4
-; GFX11-FAKE16-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-FAKE16-NEXT:  .LBB5_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s2, s0, 16
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s1, s1, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -1185,8 +1256,6 @@ define inreg <3 x i16> @bitcast_v3bf16_to_v3i16_scalar(<3 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_and_or_b32 v0, 0xffff0000, v2, v0
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB5_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB5_2
 ; GFX11-FAKE16-NEXT:  .LBB5_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -1309,13 +1378,24 @@ define inreg <3 x bfloat> @bitcast_v3i16_to_v3bf16_scalar(<3 x i16> inreg %a, i3
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s5, s16, 16
 ; SI-NEXT:    s_lshl_b32 s8, s4, 16
 ; SI-NEXT:    s_lshl_b32 s9, s17, 16
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr5
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s5, s16, 3
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
@@ -1325,7 +1405,7 @@ define inreg <3 x bfloat> @bitcast_v3i16_to_v3bf16_scalar(<3 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s8, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s5, s4, 16
 ; SI-NEXT:    s_add_i32 s9, s6, 0x30000
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s8
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s5
@@ -1333,47 +1413,54 @@ define inreg <3 x bfloat> @bitcast_v3i16_to_v3bf16_scalar(<3 x i16> inreg %a, i3
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v2
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    ; implicit-def: $sgpr5
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v3i16_to_v3bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v3i16_to_v3bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_4
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_3:
-; GFX9-NEXT:    s_branch .LBB7_2
-; GFX9-NEXT:  .LBB7_4:
+; GFX9-NEXT:  .LBB7_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -1383,16 +1470,19 @@ define inreg <3 x bfloat> @bitcast_v3i16_to_v3bf16_scalar(<3 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_4
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_3:
-; GFX11-NEXT:    s_branch .LBB7_2
 ; GFX11-NEXT:  .LBB7_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -1513,10 +1603,18 @@ define inreg <3 x i16> @bitcast_v3f16_to_v3i16_scalar(<3 x half> inreg %a, i32 i
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_3
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_4
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s4
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s17
@@ -1529,14 +1627,12 @@ define inreg <3 x i16> @bitcast_v3f16_to_v3i16_scalar(<3 x half> inreg %a, i32 i
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[0:1], 16
 ; SI-NEXT:    v_or_b32_e32 v0, v4, v0
-; SI-NEXT:    s_branch .LBB9_5
-; SI-NEXT:  .LBB9_3:
-; SI-NEXT:    s_branch .LBB9_2
-; SI-NEXT:  .LBB9_4:
+; SI-NEXT:    s_branch .LBB9_6
+; SI-NEXT:  .LBB9_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
-; SI-NEXT:  .LBB9_5: ; %end
+; SI-NEXT:  .LBB9_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
@@ -1546,10 +1642,18 @@ define inreg <3 x i16> @bitcast_v3f16_to_v3i16_scalar(<3 x half> inreg %a, i32 i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_3
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_4
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v3, s4
@@ -1559,9 +1663,7 @@ define inreg <3 x i16> @bitcast_v3f16_to_v3i16_scalar(<3 x half> inreg %a, i32 i
 ; VI-NEXT:    v_or_b32_e32 v0, v2, v0
 ; VI-NEXT:    v_or_b32_e32 v1, 0x7e000000, v1
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_3:
-; VI-NEXT:    s_branch .LBB9_2
-; VI-NEXT:  .LBB9_4:
+; VI-NEXT:  .LBB9_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -1570,17 +1672,23 @@ define inreg <3 x i16> @bitcast_v3f16_to_v3i16_scalar(<3 x half> inreg %a, i32 i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_4
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_3:
-; GFX9-NEXT:    s_branch .LBB9_2
-; GFX9-NEXT:  .LBB9_4:
+; GFX9-NEXT:  .LBB9_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -1590,16 +1698,19 @@ define inreg <3 x i16> @bitcast_v3f16_to_v3i16_scalar(<3 x half> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_4
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_3:
-; GFX11-NEXT:    s_branch .LBB9_2
 ; GFX11-NEXT:  .LBB9_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -1726,7 +1837,7 @@ define inreg <3 x half> @bitcast_v3i16_to_v3f16_scalar(<3 x i16> inreg %a, i32 i
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_4
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s6, 16
@@ -1734,8 +1845,19 @@ define inreg <3 x half> @bitcast_v3i16_to_v3f16_scalar(<3 x i16> inreg %a, i32 i
 ; SI-NEXT:    s_or_b32 s4, s4, s8
 ; SI-NEXT:    s_and_b32 s7, s17, 0xffff
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[8:9], 16
-; SI-NEXT:    s_cbranch_execnz .LBB11_3
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s4, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
@@ -1744,54 +1866,61 @@ define inreg <3 x half> @bitcast_v3i16_to_v3f16_scalar(<3 x i16> inreg %a, i32 i
 ; SI-NEXT:    s_add_i32 s5, s17, 3
 ; SI-NEXT:    s_and_b32 s7, s5, 0xffff
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[4:5], 16
-; SI-NEXT:  .LBB11_3: ; %end
+; SI-NEXT:  .LBB11_5: ; %end
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s8, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s5
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB11_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB11_2
 ;
 ; VI-LABEL: bitcast_v3i16_to_v3f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_4
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_3
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB11_3: ; %end
+; VI-NEXT:  .LBB11_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB11_4:
-; VI-NEXT:    s_branch .LBB11_2
 ;
 ; GFX9-LABEL: bitcast_v3i16_to_v3f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -1801,16 +1930,19 @@ define inreg <3 x half> @bitcast_v3i16_to_v3f16_scalar(<3 x i16> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
index 092528a4feb1e..575d778195f84 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
@@ -148,10 +148,18 @@ define inreg <16 x float> @bitcast_v16i32_to_v16f32_scalar(<16 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s6, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s29, s29, 3
@@ -168,7 +176,7 @@ define inreg <16 x float> @bitcast_v16i32_to_v16f32_scalar(<16 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -186,8 +194,6 @@ define inreg <16 x float> @bitcast_v16i32_to_v16f32_scalar(<16 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v14, s7
 ; SI-NEXT:    v_mov_b32_e32 v15, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v16i32_to_v16f32_scalar:
 ; VI:       ; %bb.0:
@@ -196,10 +202,18 @@ define inreg <16 x float> @bitcast_v16i32_to_v16f32_scalar(<16 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s29, s29, 3
@@ -216,7 +230,7 @@ define inreg <16 x float> @bitcast_v16i32_to_v16f32_scalar(<16 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -234,8 +248,6 @@ define inreg <16 x float> @bitcast_v16i32_to_v16f32_scalar(<16 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v16i32_to_v16f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -244,10 +256,18 @@ define inreg <16 x float> @bitcast_v16i32_to_v16f32_scalar(<16 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
@@ -264,7 +284,7 @@ define inreg <16 x float> @bitcast_v16i32_to_v16f32_scalar(<16 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -282,19 +302,22 @@ define inreg <16 x float> @bitcast_v16i32_to_v16f32_scalar(<16 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v16i32_to_v16f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s27, s27, 3
 ; GFX11-NEXT:    s_add_i32 s26, s26, 3
 ; GFX11-NEXT:    s_add_i32 s25, s25, 3
@@ -311,7 +334,7 @@ define inreg <16 x float> @bitcast_v16i32_to_v16f32_scalar(<16 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -322,8 +345,6 @@ define inreg <16 x float> @bitcast_v16i32_to_v16f32_scalar(<16 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -481,10 +502,18 @@ define inreg <16 x i32> @bitcast_v16f32_to_v16i32_scalar(<16 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s31, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s30, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; SI-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; SI-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -501,10 +530,8 @@ define inreg <16 x i32> @bitcast_v16f32_to_v16i32_scalar(<16 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; SI-NEXT:    s_branch .LBB3_5
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:    s_branch .LBB3_6
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -521,7 +548,7 @@ define inreg <16 x i32> @bitcast_v16f32_to_v16i32_scalar(<16 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    v_mov_b32_e32 v14, s30
 ; SI-NEXT:    v_mov_b32_e32 v15, s31
-; SI-NEXT:  .LBB3_5: ; %end
+; SI-NEXT:  .LBB3_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s30, v16, 0
 ; SI-NEXT:    v_readlane_b32 s31, v16, 1
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -542,10 +569,18 @@ define inreg <16 x i32> @bitcast_v16f32_to_v16i32_scalar(<16 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; VI-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; VI-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -562,10 +597,8 @@ define inreg <16 x i32> @bitcast_v16f32_to_v16i32_scalar(<16 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; VI-NEXT:    s_branch .LBB3_5
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:    s_branch .LBB3_6
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -582,7 +615,7 @@ define inreg <16 x i32> @bitcast_v16f32_to_v16i32_scalar(<16 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB3_5: ; %end
+; VI-NEXT:  .LBB3_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v16, 0
 ; VI-NEXT:    v_readlane_b32 s31, v16, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -603,10 +636,18 @@ define inreg <16 x i32> @bitcast_v16f32_to_v16i32_scalar(<16 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -623,10 +664,8 @@ define inreg <16 x i32> @bitcast_v16f32_to_v16i32_scalar(<16 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; GFX9-NEXT:    s_branch .LBB3_5
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:    s_branch .LBB3_6
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -643,7 +682,7 @@ define inreg <16 x i32> @bitcast_v16f32_to_v16i32_scalar(<16 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB3_5: ; %end
+; GFX9-NEXT:  .LBB3_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -661,11 +700,16 @@ define inreg <16 x i32> @bitcast_v16f32_to_v16i32_scalar(<16 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v15, s27, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v14, s26, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v13, s25, 1.0
@@ -683,8 +727,6 @@ define inreg <16 x i32> @bitcast_v16f32_to_v16i32_scalar(<16 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -854,10 +896,18 @@ define inreg <8 x i64> @bitcast_v16i32_to_v8i64_scalar(<16 x i32> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s6, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s29, s29, 3
@@ -874,7 +924,7 @@ define inreg <8 x i64> @bitcast_v16i32_to_v8i64_scalar(<16 x i32> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -892,8 +942,6 @@ define inreg <8 x i64> @bitcast_v16i32_to_v8i64_scalar(<16 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v14, s7
 ; SI-NEXT:    v_mov_b32_e32 v15, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v16i32_to_v8i64_scalar:
 ; VI:       ; %bb.0:
@@ -902,10 +950,18 @@ define inreg <8 x i64> @bitcast_v16i32_to_v8i64_scalar(<16 x i32> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s29, s29, 3
@@ -922,7 +978,7 @@ define inreg <8 x i64> @bitcast_v16i32_to_v8i64_scalar(<16 x i32> inreg %a, i32
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -940,8 +996,6 @@ define inreg <8 x i64> @bitcast_v16i32_to_v8i64_scalar(<16 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v16i32_to_v8i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -950,10 +1004,18 @@ define inreg <8 x i64> @bitcast_v16i32_to_v8i64_scalar(<16 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
@@ -970,7 +1032,7 @@ define inreg <8 x i64> @bitcast_v16i32_to_v8i64_scalar(<16 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -988,19 +1050,22 @@ define inreg <8 x i64> @bitcast_v16i32_to_v8i64_scalar(<16 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v16i32_to_v8i64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s27, s27, 3
 ; GFX11-NEXT:    s_add_i32 s26, s26, 3
 ; GFX11-NEXT:    s_add_i32 s25, s25, 3
@@ -1017,7 +1082,7 @@ define inreg <8 x i64> @bitcast_v16i32_to_v8i64_scalar(<16 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1028,8 +1093,6 @@ define inreg <8 x i64> @bitcast_v16i32_to_v8i64_scalar(<16 x i32> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1193,10 +1256,18 @@ define inreg <16 x i32> @bitcast_v8i64_to_v16i32_scalar(<8 x i64> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s6, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s28, s28, 3
@@ -1213,7 +1284,7 @@ define inreg <16 x i32> @bitcast_v8i64_to_v16i32_scalar(<8 x i64> inreg %a, i32
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1231,8 +1302,6 @@ define inreg <16 x i32> @bitcast_v8i64_to_v16i32_scalar(<8 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v14, s7
 ; SI-NEXT:    v_mov_b32_e32 v15, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v8i64_to_v16i32_scalar:
 ; VI:       ; %bb.0:
@@ -1241,10 +1310,18 @@ define inreg <16 x i32> @bitcast_v8i64_to_v16i32_scalar(<8 x i64> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s28, s28, 3
@@ -1261,7 +1338,7 @@ define inreg <16 x i32> @bitcast_v8i64_to_v16i32_scalar(<8 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1279,8 +1356,6 @@ define inreg <16 x i32> @bitcast_v8i64_to_v16i32_scalar(<8 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v8i64_to_v16i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -1289,10 +1364,18 @@ define inreg <16 x i32> @bitcast_v8i64_to_v16i32_scalar(<8 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s28, s28, 3
@@ -1309,7 +1392,7 @@ define inreg <16 x i32> @bitcast_v8i64_to_v16i32_scalar(<8 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB7_3: ; %end
+; GFX9-NEXT:  .LBB7_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1327,19 +1410,22 @@ define inreg <16 x i32> @bitcast_v8i64_to_v16i32_scalar(<8 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_4:
-; GFX9-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-LABEL: bitcast_v8i64_to_v16i32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_3
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s26, s26, 3
 ; GFX11-NEXT:    s_addc_u32 s27, s27, 0
 ; GFX11-NEXT:    s_add_u32 s24, s24, 3
@@ -1356,7 +1442,7 @@ define inreg <16 x i32> @bitcast_v8i64_to_v16i32_scalar(<8 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB7_3: ; %end
+; GFX11-NEXT:  .LBB7_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1367,8 +1453,6 @@ define inreg <16 x i32> @bitcast_v8i64_to_v16i32_scalar(<8 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_4:
-; GFX11-NEXT:    s_branch .LBB7_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1528,10 +1612,18 @@ define inreg <8 x double> @bitcast_v16i32_to_v8f64_scalar(<16 x i32> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s6, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s29, s29, 3
@@ -1548,7 +1640,7 @@ define inreg <8 x double> @bitcast_v16i32_to_v8f64_scalar(<16 x i32> inreg %a, i
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1566,8 +1658,6 @@ define inreg <8 x double> @bitcast_v16i32_to_v8f64_scalar(<16 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v14, s7
 ; SI-NEXT:    v_mov_b32_e32 v15, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v16i32_to_v8f64_scalar:
 ; VI:       ; %bb.0:
@@ -1576,10 +1666,18 @@ define inreg <8 x double> @bitcast_v16i32_to_v8f64_scalar(<16 x i32> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s29, s29, 3
@@ -1596,7 +1694,7 @@ define inreg <8 x double> @bitcast_v16i32_to_v8f64_scalar(<16 x i32> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1614,8 +1712,6 @@ define inreg <8 x double> @bitcast_v16i32_to_v8f64_scalar(<16 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v16i32_to_v8f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -1624,10 +1720,18 @@ define inreg <8 x double> @bitcast_v16i32_to_v8f64_scalar(<16 x i32> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
@@ -1644,7 +1748,7 @@ define inreg <8 x double> @bitcast_v16i32_to_v8f64_scalar(<16 x i32> inreg %a, i
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1662,19 +1766,22 @@ define inreg <8 x double> @bitcast_v16i32_to_v8f64_scalar(<16 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v16i32_to_v8f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s27, s27, 3
 ; GFX11-NEXT:    s_add_i32 s26, s26, 3
 ; GFX11-NEXT:    s_add_i32 s25, s25, 3
@@ -1691,7 +1798,7 @@ define inreg <8 x double> @bitcast_v16i32_to_v8f64_scalar(<16 x i32> inreg %a, i
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1702,8 +1809,6 @@ define inreg <8 x double> @bitcast_v16i32_to_v8f64_scalar(<16 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1837,10 +1942,18 @@ define inreg <16 x i32> @bitcast_v8f64_to_v16i32_scalar(<8 x double> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s31, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s30, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; SI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -1849,10 +1962,8 @@ define inreg <16 x i32> @bitcast_v8f64_to_v16i32_scalar(<8 x double> inreg %a, i
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; SI-NEXT:    s_branch .LBB11_5
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:    s_branch .LBB11_6
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1869,7 +1980,7 @@ define inreg <16 x i32> @bitcast_v8f64_to_v16i32_scalar(<8 x double> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    v_mov_b32_e32 v14, s30
 ; SI-NEXT:    v_mov_b32_e32 v15, s31
-; SI-NEXT:  .LBB11_5: ; %end
+; SI-NEXT:  .LBB11_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s30, v16, 0
 ; SI-NEXT:    v_readlane_b32 s31, v16, 1
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -1890,10 +2001,18 @@ define inreg <16 x i32> @bitcast_v8f64_to_v16i32_scalar(<8 x double> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -1902,10 +2021,8 @@ define inreg <16 x i32> @bitcast_v8f64_to_v16i32_scalar(<8 x double> inreg %a, i
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; VI-NEXT:    s_branch .LBB11_5
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:    s_branch .LBB11_6
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1922,7 +2039,7 @@ define inreg <16 x i32> @bitcast_v8f64_to_v16i32_scalar(<8 x double> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB11_5: ; %end
+; VI-NEXT:  .LBB11_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v16, 0
 ; VI-NEXT:    v_readlane_b32 s31, v16, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -1943,10 +2060,18 @@ define inreg <16 x i32> @bitcast_v8f64_to_v16i32_scalar(<8 x double> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -1955,10 +2080,8 @@ define inreg <16 x i32> @bitcast_v8f64_to_v16i32_scalar(<8 x double> inreg %a, i
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; GFX9-NEXT:    s_branch .LBB11_5
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:    s_branch .LBB11_6
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1975,7 +2098,7 @@ define inreg <16 x i32> @bitcast_v8f64_to_v16i32_scalar(<8 x double> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB11_5: ; %end
+; GFX9-NEXT:  .LBB11_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -1993,11 +2116,16 @@ define inreg <16 x i32> @bitcast_v8f64_to_v16i32_scalar(<8 x double> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[14:15], s[26:27], 1.0
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
@@ -2007,8 +2135,6 @@ define inreg <16 x i32> @bitcast_v8f64_to_v16i32_scalar(<8 x double> inreg %a, i
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -2277,7 +2403,7 @@ define inreg <32 x i16> @bitcast_v16i32_to_v32i16_scalar(<16 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s56, s5, 16
 ; SI-NEXT:    s_lshr_b32 s57, s29, 16
@@ -2295,8 +2421,32 @@ define inreg <32 x i16> @bitcast_v16i32_to_v32i16_scalar(<16 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[46:47], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[46:47], -1
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -2329,7 +2479,7 @@ define inreg <32 x i16> @bitcast_v16i32_to_v32i16_scalar(<16 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s61, s21, 16
 ; SI-NEXT:    s_lshr_b32 s62, s19, 16
 ; SI-NEXT:    s_lshr_b32 s63, s17, 16
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_and_b32 s7, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s9, s44, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s9
@@ -2395,24 +2545,6 @@ define inreg <32 x i16> @bitcast_v16i32_to_v32i16_scalar(<16 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v14, s4
 ; SI-NEXT:    v_mov_b32_e32 v15, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_v16i32_to_v32i16_scalar:
 ; VI:       ; %bb.0:
@@ -2421,10 +2553,18 @@ define inreg <32 x i16> @bitcast_v16i32_to_v32i16_scalar(<16 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s29, s29, 3
@@ -2441,7 +2581,7 @@ define inreg <32 x i16> @bitcast_v16i32_to_v32i16_scalar(<16 x i32> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2459,8 +2599,6 @@ define inreg <32 x i16> @bitcast_v16i32_to_v32i16_scalar(<16 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v16i32_to_v32i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -2469,10 +2607,18 @@ define inreg <32 x i16> @bitcast_v16i32_to_v32i16_scalar(<16 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
@@ -2489,7 +2635,7 @@ define inreg <32 x i16> @bitcast_v16i32_to_v32i16_scalar(<16 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB13_3: ; %end
+; GFX9-NEXT:  .LBB13_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2507,19 +2653,22 @@ define inreg <32 x i16> @bitcast_v16i32_to_v32i16_scalar(<16 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_v16i32_to_v32i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB13_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s27, s27, 3
 ; GFX11-NEXT:    s_add_i32 s26, s26, 3
 ; GFX11-NEXT:    s_add_i32 s25, s25, 3
@@ -2536,7 +2685,7 @@ define inreg <32 x i16> @bitcast_v16i32_to_v32i16_scalar(<16 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2547,8 +2696,6 @@ define inreg <32 x i16> @bitcast_v16i32_to_v32i16_scalar(<16 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2938,7 +3085,7 @@ define inreg <16 x i32> @bitcast_v32i16_to_v16i32_scalar(<32 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s11, s12, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
@@ -2988,8 +3135,17 @@ define inreg <16 x i32> @bitcast_v32i16_to_v16i32_scalar(<32 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s9, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
@@ -3070,7 +3226,7 @@ define inreg <16 x i32> @bitcast_v32i16_to_v16i32_scalar(<32 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
+; SI-NEXT:  .LBB15_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -3100,9 +3256,6 @@ define inreg <16 x i32> @bitcast_v32i16_to_v16i32_scalar(<32 x i16> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v32i16_to_v16i32_scalar:
 ; VI:       ; %bb.0:
@@ -3111,10 +3264,18 @@ define inreg <16 x i32> @bitcast_v32i16_to_v16i32_scalar(<32 x i16> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s6, 3
 ; VI-NEXT:    s_and_b32 s4, s6, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -3195,7 +3356,7 @@ define inreg <16 x i32> @bitcast_v32i16_to_v16i32_scalar(<32 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
+; VI-NEXT:  .LBB15_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3213,8 +3374,6 @@ define inreg <16 x i32> @bitcast_v32i16_to_v16i32_scalar(<32 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v32i16_to_v16i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -3228,10 +3387,18 @@ define inreg <16 x i32> @bitcast_v32i16_to_v16i32_scalar(<32 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v15, s31, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v14, s30, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v13, s29, 3 op_sel_hi:[1,0]
@@ -3248,10 +3415,8 @@ define inreg <16 x i32> @bitcast_v32i16_to_v16i32_scalar(<32 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB15_5
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:    s_branch .LBB15_6
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3268,7 +3433,7 @@ define inreg <16 x i32> @bitcast_v32i16_to_v16i32_scalar(<32 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB15_5: ; %end
+; GFX9-NEXT:  .LBB15_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -3286,11 +3451,16 @@ define inreg <16 x i32> @bitcast_v32i16_to_v16i32_scalar(<32 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v15, s27, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v14, s26, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v13, s25, 3 op_sel_hi:[1,0]
@@ -3308,8 +3478,6 @@ define inreg <16 x i32> @bitcast_v32i16_to_v16i32_scalar(<32 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -3578,7 +3746,7 @@ define inreg <32 x half> @bitcast_v16i32_to_v32f16_scalar(<16 x i32> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s56, s5, 16
 ; SI-NEXT:    s_lshr_b32 s57, s29, 16
@@ -3596,8 +3764,32 @@ define inreg <32 x half> @bitcast_v16i32_to_v32f16_scalar(<16 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[46:47], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[46:47], -1
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -3630,7 +3822,7 @@ define inreg <32 x half> @bitcast_v16i32_to_v32f16_scalar(<16 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s61, s21, 16
 ; SI-NEXT:    s_lshr_b32 s62, s19, 16
 ; SI-NEXT:    s_lshr_b32 s63, s17, 16
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    s_and_b32 s7, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s9, s44, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s9
@@ -3696,24 +3888,6 @@ define inreg <32 x half> @bitcast_v16i32_to_v32f16_scalar(<16 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v14, s4
 ; SI-NEXT:    v_mov_b32_e32 v15, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_v16i32_to_v32f16_scalar:
 ; VI:       ; %bb.0:
@@ -3722,10 +3896,18 @@ define inreg <32 x half> @bitcast_v16i32_to_v32f16_scalar(<16 x i32> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s29, s29, 3
@@ -3742,7 +3924,7 @@ define inreg <32 x half> @bitcast_v16i32_to_v32f16_scalar(<16 x i32> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -3760,8 +3942,6 @@ define inreg <32 x half> @bitcast_v16i32_to_v32f16_scalar(<16 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v16i32_to_v32f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -3770,10 +3950,18 @@ define inreg <32 x half> @bitcast_v16i32_to_v32f16_scalar(<16 x i32> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
@@ -3790,7 +3978,7 @@ define inreg <32 x half> @bitcast_v16i32_to_v32f16_scalar(<16 x i32> inreg %a, i
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3808,19 +3996,22 @@ define inreg <32 x half> @bitcast_v16i32_to_v32f16_scalar(<16 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v16i32_to_v32f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB17_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s27, s27, 3
 ; GFX11-NEXT:    s_add_i32 s26, s26, 3
 ; GFX11-NEXT:    s_add_i32 s25, s25, 3
@@ -3837,7 +4028,7 @@ define inreg <32 x half> @bitcast_v16i32_to_v32f16_scalar(<16 x i32> inreg %a, i
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -3848,8 +4039,6 @@ define inreg <32 x half> @bitcast_v16i32_to_v32f16_scalar(<16 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -4303,7 +4492,7 @@ define inreg <16 x i32> @bitcast_v32f16_to_v16i32_scalar(<32 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s10, s8, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
@@ -4353,8 +4542,17 @@ define inreg <16 x i32> @bitcast_v32f16_to_v16i32_scalar(<32 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s63
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s62
@@ -4483,11 +4681,8 @@ define inreg <16 x i32> @bitcast_v32f16_to_v16i32_scalar(<32 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v14, v15, v14
 ; SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v16
 ; SI-NEXT:    v_or_b32_e32 v15, v17, v15
-; SI-NEXT:    s_branch .LBB19_5
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:    s_branch .LBB19_6
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -4504,7 +4699,7 @@ define inreg <16 x i32> @bitcast_v32f16_to_v16i32_scalar(<32 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v13, s49
 ; SI-NEXT:    v_mov_b32_e32 v14, s50
 ; SI-NEXT:    v_mov_b32_e32 v15, s51
-; SI-NEXT:  .LBB19_5: ; %end
+; SI-NEXT:  .LBB19_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s51, v18, 7
 ; SI-NEXT:    v_readlane_b32 s50, v18, 6
 ; SI-NEXT:    v_readlane_b32 s49, v18, 5
@@ -4531,10 +4726,18 @@ define inreg <16 x i32> @bitcast_v32f16_to_v16i32_scalar(<32 x half> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s31, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -4616,10 +4819,8 @@ define inreg <16 x i32> @bitcast_v32f16_to_v16i32_scalar(<32 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v16
-; VI-NEXT:    s_branch .LBB19_5
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:    s_branch .LBB19_6
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4636,7 +4837,7 @@ define inreg <16 x i32> @bitcast_v32f16_to_v16i32_scalar(<32 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB19_5: ; %end
+; VI-NEXT:  .LBB19_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v17, 0
 ; VI-NEXT:    v_readlane_b32 s31, v17, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -4657,10 +4858,18 @@ define inreg <16 x i32> @bitcast_v32f16_to_v16i32_scalar(<32 x half> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v15, s31, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v14, s30, v0 op_sel_hi:[1,0]
@@ -4678,10 +4887,8 @@ define inreg <16 x i32> @bitcast_v32f16_to_v16i32_scalar(<32 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB19_5
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:    s_branch .LBB19_6
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4698,7 +4905,7 @@ define inreg <16 x i32> @bitcast_v32f16_to_v16i32_scalar(<32 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB19_5: ; %end
+; GFX9-NEXT:  .LBB19_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -4716,11 +4923,16 @@ define inreg <16 x i32> @bitcast_v32f16_to_v16i32_scalar(<32 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v15, 0x200, s27 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v14, 0x200, s26 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s25 op_sel_hi:[0,1]
@@ -4738,8 +4950,6 @@ define inreg <16 x i32> @bitcast_v32f16_to_v16i32_scalar(<32 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -5088,7 +5298,7 @@ define inreg <32 x bfloat> @bitcast_v16i32_to_v32bf16_scalar(<16 x i32> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s78, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s79, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_4
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s7, s78, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s78, 16
@@ -5122,8 +5332,48 @@ define inreg <32 x bfloat> @bitcast_v16i32_to_v32bf16_scalar(<16 x i32> inreg %a
 ; SI-NEXT:    s_lshl_b32 s74, s17, 16
 ; SI-NEXT:    s_and_b32 s77, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s76, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB21_3
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
@@ -5172,7 +5422,7 @@ define inreg <32 x bfloat> @bitcast_v16i32_to_v32bf16_scalar(<16 x i32> inreg %a
 ; SI-NEXT:    s_lshl_b32 s74, s17, 16
 ; SI-NEXT:    s_and_b32 s77, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s76, s16, 16
-; SI-NEXT:  .LBB21_3: ; %end
+; SI-NEXT:  .LBB21_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s77
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s76
@@ -5238,40 +5488,6 @@ define inreg <32 x bfloat> @bitcast_v16i32_to_v32bf16_scalar(<16 x i32> inreg %a
 ; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[15:16], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB21_4:
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB21_2
 ;
 ; VI-LABEL: bitcast_v16i32_to_v32bf16_scalar:
 ; VI:       ; %bb.0:
@@ -5280,10 +5496,18 @@ define inreg <32 x bfloat> @bitcast_v16i32_to_v32bf16_scalar(<16 x i32> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_4
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_3
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s29, s29, 3
@@ -5300,7 +5524,7 @@ define inreg <32 x bfloat> @bitcast_v16i32_to_v32bf16_scalar(<16 x i32> inreg %a
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB21_3: ; %end
+; VI-NEXT:  .LBB21_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5318,8 +5542,6 @@ define inreg <32 x bfloat> @bitcast_v16i32_to_v32bf16_scalar(<16 x i32> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB21_4:
-; VI-NEXT:    s_branch .LBB21_2
 ;
 ; GFX9-LABEL: bitcast_v16i32_to_v32bf16_scalar:
 ; GFX9:       ; %bb.0:
@@ -5328,10 +5550,18 @@ define inreg <32 x bfloat> @bitcast_v16i32_to_v32bf16_scalar(<16 x i32> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_3
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
@@ -5348,7 +5578,7 @@ define inreg <32 x bfloat> @bitcast_v16i32_to_v32bf16_scalar(<16 x i32> inreg %a
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB21_3: ; %end
+; GFX9-NEXT:  .LBB21_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5366,19 +5596,22 @@ define inreg <32 x bfloat> @bitcast_v16i32_to_v32bf16_scalar(<16 x i32> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB21_4:
-; GFX9-NEXT:    s_branch .LBB21_2
 ;
 ; GFX11-LABEL: bitcast_v16i32_to_v32bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_3
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s27, s27, 3
 ; GFX11-NEXT:    s_add_i32 s26, s26, 3
 ; GFX11-NEXT:    s_add_i32 s25, s25, 3
@@ -5395,7 +5628,7 @@ define inreg <32 x bfloat> @bitcast_v16i32_to_v32bf16_scalar(<16 x i32> inreg %a
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB21_3: ; %end
+; GFX11-NEXT:  .LBB21_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -5406,8 +5639,6 @@ define inreg <32 x bfloat> @bitcast_v16i32_to_v32bf16_scalar(<16 x i32> inreg %a
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB21_4:
-; GFX11-NEXT:    s_branch .LBB21_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -6920,7 +7151,7 @@ define inreg <16 x i32> @bitcast_v32bf16_to_v16i32_scalar(<32 x bfloat> inreg %a
 ; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s5
 ; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s44
 ; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s42
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v53, 16, v41
 ; SI-NEXT:    v_lshrrev_b32_e32 v49, 16, v63
@@ -6956,8 +7187,17 @@ define inreg <16 x i32> @bitcast_v32bf16_to_v16i32_scalar(<32 x bfloat> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v20, v16
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[17:18], 16
 ; SI-NEXT:    v_mov_b32_e32 v16, v20
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v41
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v52
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -7054,7 +7294,7 @@ define inreg <16 x i32> @bitcast_v32bf16_to_v16i32_scalar(<32 x bfloat> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v15, 0x40c00000, v15
 ; SI-NEXT:    v_lshrrev_b32_e32 v16, 16, v16
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[15:16], 16
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    buffer_load_dword v63, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v62, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v61, off, s[0:3], s32 offset:8 ; 4-byte Folded Reload
@@ -7073,9 +7313,6 @@ define inreg <16 x i32> @bitcast_v32bf16_to_v16i32_scalar(<32 x bfloat> inreg %a
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:60 ; 4-byte Folded Reload
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v32bf16_to_v16i32_scalar:
 ; VI:       ; %bb.0:
@@ -7089,10 +7326,18 @@ define inreg <16 x i32> @bitcast_v32bf16_to_v16i32_scalar(<32 x bfloat> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_3
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_4
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v16, 0x40c00000
 ; VI-NEXT:    s_lshl_b32 s4, s30, 16
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v16
@@ -7390,10 +7635,8 @@ define inreg <16 x i32> @bitcast_v32bf16_to_v16i32_scalar(<32 x bfloat> inreg %a
 ; VI-NEXT:    v_lshrrev_b64 v[16:17], 16, v[17:18]
 ; VI-NEXT:    v_mov_b32_e32 v13, v15
 ; VI-NEXT:    v_mov_b32_e32 v15, v16
-; VI-NEXT:    s_branch .LBB23_5
-; VI-NEXT:  .LBB23_3:
-; VI-NEXT:    s_branch .LBB23_2
-; VI-NEXT:  .LBB23_4:
+; VI-NEXT:    s_branch .LBB23_6
+; VI-NEXT:  .LBB23_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -7410,7 +7653,7 @@ define inreg <16 x i32> @bitcast_v32bf16_to_v16i32_scalar(<32 x bfloat> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB23_5: ; %end
+; VI-NEXT:  .LBB23_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v20, 0
 ; VI-NEXT:    v_readlane_b32 s31, v20, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -7431,10 +7674,18 @@ define inreg <16 x i32> @bitcast_v32bf16_to_v16i32_scalar(<32 x bfloat> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_4
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s31, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -7741,10 +7992,8 @@ define inreg <16 x i32> @bitcast_v32bf16_to_v16i32_scalar(<32 x bfloat> inreg %a
 ; GFX9-NEXT:    v_cndmask_b32_e32 v17, v18, v19, vcc
 ; GFX9-NEXT:    v_and_b32_sdwa v16, v16, v17 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v0, 16, v16
-; GFX9-NEXT:    s_branch .LBB23_5
-; GFX9-NEXT:  .LBB23_3:
-; GFX9-NEXT:    s_branch .LBB23_2
-; GFX9-NEXT:  .LBB23_4:
+; GFX9-NEXT:    s_branch .LBB23_6
+; GFX9-NEXT:  .LBB23_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -7761,7 +8010,7 @@ define inreg <16 x i32> @bitcast_v32bf16_to_v16i32_scalar(<32 x bfloat> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB23_5: ; %end
+; GFX9-NEXT:  .LBB23_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v20, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v20, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -7779,11 +8028,16 @@ define inreg <16 x i32> @bitcast_v32bf16_to_v16i32_scalar(<32 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB23_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB23_4
-; GFX11-TRUE16-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:  .LBB23_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s0, s27, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s27, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -8093,8 +8347,6 @@ define inreg <16 x i32> @bitcast_v32bf16_to_v16i32_scalar(<32 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v18
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v17.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB23_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB23_2
 ; GFX11-TRUE16-NEXT:  .LBB23_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -8115,11 +8367,16 @@ define inreg <16 x i32> @bitcast_v32bf16_to_v16i32_scalar(<32 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB23_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB23_4
-; GFX11-FAKE16-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:  .LBB23_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_and_b32 s1, s27, 0xffff0000
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s27, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s1
@@ -8448,8 +8705,6 @@ define inreg <16 x i32> @bitcast_v32bf16_to_v16i32_scalar(<32 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v2, v16, 16, v21
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v20, 16, v17
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB23_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB23_2
 ; GFX11-FAKE16-NEXT:  .LBB23_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -9986,7 +10241,7 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s5, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v1
-; SI-NEXT:    s_cbranch_scc0 .LBB25_4
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s38, s5, 24
 ; SI-NEXT:    s_lshr_b32 s39, s5, 16
@@ -10033,11 +10288,67 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 24
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 8
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 24
-; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB25_3
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 24
+; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 8
+; SI-NEXT:    s_mov_b64 s[36:37], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[36:37], -1
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr85
+; SI-NEXT:    ; implicit-def: $sgpr84
+; SI-NEXT:    ; implicit-def: $sgpr83
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr82
+; SI-NEXT:    ; implicit-def: $sgpr81
+; SI-NEXT:    ; implicit-def: $sgpr80
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr71
+; SI-NEXT:    ; implicit-def: $sgpr70
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr65
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -10099,15 +10410,15 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 24
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 8
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 24
-; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 8
-; SI-NEXT:  .LBB25_3: ; %end
-; SI-NEXT:    s_lshl_b32 s7, s36, 8
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 24
+; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 8
+; SI-NEXT:  .LBB25_5: ; %end
+; SI-NEXT:    s_lshl_b32 s7, s34, 8
 ; SI-NEXT:    s_and_b32 s9, s16, 0xff
 ; SI-NEXT:    s_or_b32 s7, s9, s7
-; SI-NEXT:    s_and_b32 s9, s34, 0xff
-; SI-NEXT:    s_lshl_b32 s11, s30, 24
+; SI-NEXT:    s_and_b32 s9, s30, 0xff
+; SI-NEXT:    s_lshl_b32 s11, vcc_lo, 24
 ; SI-NEXT:    s_lshl_b32 s9, s9, 16
 ; SI-NEXT:    s_or_b32 s9, s11, s9
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
@@ -10342,56 +10653,6 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB25_4:
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr85
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    ; implicit-def: $sgpr83
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr82
-; SI-NEXT:    ; implicit-def: $sgpr81
-; SI-NEXT:    ; implicit-def: $sgpr80
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr71
-; SI-NEXT:    ; implicit-def: $sgpr70
-; SI-NEXT:    ; implicit-def: $sgpr69
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr67
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB25_2
 ;
 ; VI-LABEL: bitcast_v16i32_to_v64i8_scalar:
 ; VI:       ; %bb.0:
@@ -10415,15 +10676,13 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; VI-NEXT:    v_writelane_b32 v4, s55, 13
 ; VI-NEXT:    v_writelane_b32 v4, s64, 14
 ; VI-NEXT:    v_writelane_b32 v4, s65, 15
-; VI-NEXT:    v_writelane_b32 v4, s66, 16
-; VI-NEXT:    v_writelane_b32 v4, s67, 17
-; VI-NEXT:    v_writelane_b32 v4, s30, 18
-; VI-NEXT:    v_writelane_b32 v4, s31, 19
+; VI-NEXT:    v_writelane_b32 v4, s30, 16
+; VI-NEXT:    v_writelane_b32 v4, s31, 17
 ; VI-NEXT:    v_readfirstlane_b32 s4, v3
 ; VI-NEXT:    v_readfirstlane_b32 s5, v2
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v1
-; VI-NEXT:    s_cbranch_scc0 .LBB25_4
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s56, s5, 24
 ; VI-NEXT:    s_lshr_b32 s57, s5, 16
@@ -10460,11 +10719,11 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s52, s19, 8
 ; VI-NEXT:    s_lshr_b32 s53, s18, 16
 ; VI-NEXT:    s_lshr_b32 s54, s18, 8
-; VI-NEXT:    s_lshr_b32 s55, s17, 24
-; VI-NEXT:    s_lshr_b32 s64, s17, 16
-; VI-NEXT:    s_lshr_b32 s65, s17, 8
-; VI-NEXT:    s_lshr_b32 s66, s16, 16
-; VI-NEXT:    s_lshr_b32 s67, s16, 8
+; VI-NEXT:    s_lshr_b32 vcc_lo, s17, 24
+; VI-NEXT:    s_lshr_b32 vcc_hi, s17, 16
+; VI-NEXT:    s_lshr_b32 s55, s17, 8
+; VI-NEXT:    s_lshr_b32 s64, s16, 16
+; VI-NEXT:    s_lshr_b32 s65, s16, 8
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[4:5], 24
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[28:29], 24
 ; VI-NEXT:    s_lshr_b64 s[10:11], s[26:27], 24
@@ -10473,8 +10732,64 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; VI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[42:43], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB25_3
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[46:47], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[46:47], -1
+; VI-NEXT:    ; implicit-def: $sgpr65
+; VI-NEXT:    ; implicit-def: $sgpr64
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr55
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr54
+; VI-NEXT:    ; implicit-def: $sgpr53
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr52
+; VI-NEXT:    ; implicit-def: $sgpr51
+; VI-NEXT:    ; implicit-def: $sgpr50
+; VI-NEXT:    ; implicit-def: $sgpr49
+; VI-NEXT:    ; implicit-def: $sgpr48
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr39
+; VI-NEXT:    ; implicit-def: $sgpr38
+; VI-NEXT:    ; implicit-def: $sgpr37
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr35
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; VI-NEXT:    s_cselect_b32 s7, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s7, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_add_i32 s19, s19, 3
@@ -10534,23 +10849,23 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s52, s19, 8
 ; VI-NEXT:    s_lshr_b32 s53, s18, 16
 ; VI-NEXT:    s_lshr_b32 s54, s18, 8
-; VI-NEXT:    s_lshr_b32 s55, s17, 24
-; VI-NEXT:    s_lshr_b32 s64, s17, 16
-; VI-NEXT:    s_lshr_b32 s65, s17, 8
-; VI-NEXT:    s_lshr_b32 s66, s16, 16
-; VI-NEXT:    s_lshr_b32 s67, s16, 8
-; VI-NEXT:  .LBB25_3: ; %end
+; VI-NEXT:    s_lshr_b32 vcc_lo, s17, 24
+; VI-NEXT:    s_lshr_b32 vcc_hi, s17, 16
+; VI-NEXT:    s_lshr_b32 s55, s17, 8
+; VI-NEXT:    s_lshr_b32 s64, s16, 16
+; VI-NEXT:    s_lshr_b32 s65, s16, 8
+; VI-NEXT:  .LBB25_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v3, s44
-; VI-NEXT:    v_mov_b32_e32 v1, s67
-; VI-NEXT:    v_perm_b32 v3, s66, v3, v2
+; VI-NEXT:    v_mov_b32_e32 v1, s65
+; VI-NEXT:    v_perm_b32 v3, s64, v3, v2
 ; VI-NEXT:    v_perm_b32 v1, s16, v1, v2
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v3
-; VI-NEXT:    v_mov_b32_e32 v3, s55
+; VI-NEXT:    v_mov_b32_e32 v3, vcc_lo
 ; VI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v1, s65
-; VI-NEXT:    v_perm_b32 v3, s64, v3, v2
+; VI-NEXT:    v_mov_b32_e32 v1, s55
+; VI-NEXT:    v_perm_b32 v3, vcc_hi, v3, v2
 ; VI-NEXT:    v_perm_b32 v1, s17, v1, v2
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v3
@@ -10667,11 +10982,9 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v2
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 60, v0
-; VI-NEXT:    v_readlane_b32 s30, v4, 18
+; VI-NEXT:    v_readlane_b32 s30, v4, 16
 ; VI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
-; VI-NEXT:    v_readlane_b32 s31, v4, 19
-; VI-NEXT:    v_readlane_b32 s67, v4, 17
-; VI-NEXT:    v_readlane_b32 s66, v4, 16
+; VI-NEXT:    v_readlane_b32 s31, v4, 17
 ; VI-NEXT:    v_readlane_b32 s65, v4, 15
 ; VI-NEXT:    v_readlane_b32 s64, v4, 14
 ; VI-NEXT:    v_readlane_b32 s55, v4, 13
@@ -10693,56 +11006,6 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB25_4:
-; VI-NEXT:    ; implicit-def: $sgpr67
-; VI-NEXT:    ; implicit-def: $sgpr66
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr65
-; VI-NEXT:    ; implicit-def: $sgpr64
-; VI-NEXT:    ; implicit-def: $sgpr55
-; VI-NEXT:    ; implicit-def: $sgpr54
-; VI-NEXT:    ; implicit-def: $sgpr53
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr52
-; VI-NEXT:    ; implicit-def: $sgpr51
-; VI-NEXT:    ; implicit-def: $sgpr50
-; VI-NEXT:    ; implicit-def: $sgpr49
-; VI-NEXT:    ; implicit-def: $sgpr48
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr39
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr37
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    s_branch .LBB25_2
 ;
 ; GFX9-LABEL: bitcast_v16i32_to_v64i8_scalar:
 ; GFX9:       ; %bb.0:
@@ -10762,15 +11025,13 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_writelane_b32 v4, s51, 9
 ; GFX9-NEXT:    v_writelane_b32 v4, s52, 10
 ; GFX9-NEXT:    v_writelane_b32 v4, s53, 11
-; GFX9-NEXT:    v_writelane_b32 v4, s54, 12
-; GFX9-NEXT:    v_writelane_b32 v4, s55, 13
-; GFX9-NEXT:    v_writelane_b32 v4, s30, 14
-; GFX9-NEXT:    v_writelane_b32 v4, s31, 15
+; GFX9-NEXT:    v_writelane_b32 v4, s30, 12
+; GFX9-NEXT:    v_writelane_b32 v4, s31, 13
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v3
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v2
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v1
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s56, s5, 24
 ; GFX9-NEXT:    s_lshr_b32 s57, s5, 16
@@ -10796,22 +11057,22 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b32 s93, s23, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s23, 8
 ; GFX9-NEXT:    s_lshr_b32 s95, s22, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s22, 8
-; GFX9-NEXT:    s_lshr_b32 s31, s21, 24
-; GFX9-NEXT:    s_lshr_b32 s34, s21, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s21, 8
-; GFX9-NEXT:    s_lshr_b32 s36, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s37, s20, 8
-; GFX9-NEXT:    s_lshr_b32 s38, s19, 24
-; GFX9-NEXT:    s_lshr_b32 s39, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s48, s19, 8
-; GFX9-NEXT:    s_lshr_b32 s49, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s50, s18, 8
-; GFX9-NEXT:    s_lshr_b32 s51, s17, 24
-; GFX9-NEXT:    s_lshr_b32 s52, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s53, s17, 8
-; GFX9-NEXT:    s_lshr_b32 s54, s16, 16
-; GFX9-NEXT:    s_lshr_b32 s55, s16, 8
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s22, 8
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s21, 24
+; GFX9-NEXT:    s_lshr_b32 s30, s21, 16
+; GFX9-NEXT:    s_lshr_b32 s31, s21, 8
+; GFX9-NEXT:    s_lshr_b32 s34, s20, 16
+; GFX9-NEXT:    s_lshr_b32 s35, s20, 8
+; GFX9-NEXT:    s_lshr_b32 s36, s19, 24
+; GFX9-NEXT:    s_lshr_b32 s37, s19, 16
+; GFX9-NEXT:    s_lshr_b32 s38, s19, 8
+; GFX9-NEXT:    s_lshr_b32 s39, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s48, s18, 8
+; GFX9-NEXT:    s_lshr_b32 s49, s17, 24
+; GFX9-NEXT:    s_lshr_b32 s50, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s51, s17, 8
+; GFX9-NEXT:    s_lshr_b32 s52, s16, 16
+; GFX9-NEXT:    s_lshr_b32 s53, s16, 8
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[4:5], 24
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[28:29], 24
 ; GFX9-NEXT:    s_lshr_b64 s[10:11], s[26:27], 24
@@ -10820,8 +11081,64 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b64 s[40:41], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[42:43], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[44:45], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_3
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[46:47], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[46:47], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr53
+; GFX9-NEXT:    ; implicit-def: $sgpr52
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr51
+; GFX9-NEXT:    ; implicit-def: $sgpr50
+; GFX9-NEXT:    ; implicit-def: $sgpr49
+; GFX9-NEXT:    ; implicit-def: $sgpr48
+; GFX9-NEXT:    ; implicit-def: $sgpr39
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr38
+; GFX9-NEXT:    ; implicit-def: $sgpr37
+; GFX9-NEXT:    ; implicit-def: $sgpr36
+; GFX9-NEXT:    ; implicit-def: $sgpr35
+; GFX9-NEXT:    ; implicit-def: $sgpr34
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr31
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_hi
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; GFX9-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    s_add_i32 s19, s19, 3
@@ -10870,68 +11187,68 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b32 s93, s23, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s23, 8
 ; GFX9-NEXT:    s_lshr_b32 s95, s22, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s22, 8
-; GFX9-NEXT:    s_lshr_b32 s31, s21, 24
-; GFX9-NEXT:    s_lshr_b32 s34, s21, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s21, 8
-; GFX9-NEXT:    s_lshr_b32 s36, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s37, s20, 8
-; GFX9-NEXT:    s_lshr_b32 s38, s19, 24
-; GFX9-NEXT:    s_lshr_b32 s39, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s48, s19, 8
-; GFX9-NEXT:    s_lshr_b32 s49, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s50, s18, 8
-; GFX9-NEXT:    s_lshr_b32 s51, s17, 24
-; GFX9-NEXT:    s_lshr_b32 s52, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s53, s17, 8
-; GFX9-NEXT:    s_lshr_b32 s54, s16, 16
-; GFX9-NEXT:    s_lshr_b32 s55, s16, 8
-; GFX9-NEXT:  .LBB25_3: ; %end
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s22, 8
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s21, 24
+; GFX9-NEXT:    s_lshr_b32 s30, s21, 16
+; GFX9-NEXT:    s_lshr_b32 s31, s21, 8
+; GFX9-NEXT:    s_lshr_b32 s34, s20, 16
+; GFX9-NEXT:    s_lshr_b32 s35, s20, 8
+; GFX9-NEXT:    s_lshr_b32 s36, s19, 24
+; GFX9-NEXT:    s_lshr_b32 s37, s19, 16
+; GFX9-NEXT:    s_lshr_b32 s38, s19, 8
+; GFX9-NEXT:    s_lshr_b32 s39, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s48, s18, 8
+; GFX9-NEXT:    s_lshr_b32 s49, s17, 24
+; GFX9-NEXT:    s_lshr_b32 s50, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s51, s17, 8
+; GFX9-NEXT:    s_lshr_b32 s52, s16, 16
+; GFX9-NEXT:    s_lshr_b32 s53, s16, 8
+; GFX9-NEXT:  .LBB25_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s44
-; GFX9-NEXT:    v_mov_b32_e32 v1, s55
-; GFX9-NEXT:    v_perm_b32 v3, s54, v3, v2
+; GFX9-NEXT:    v_mov_b32_e32 v1, s53
+; GFX9-NEXT:    v_perm_b32 v3, s52, v3, v2
 ; GFX9-NEXT:    v_perm_b32 v1, s16, v1, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s51
+; GFX9-NEXT:    v_mov_b32_e32 v3, s49
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
-; GFX9-NEXT:    v_mov_b32_e32 v1, s53
-; GFX9-NEXT:    v_perm_b32 v3, s52, v3, v2
+; GFX9-NEXT:    v_mov_b32_e32 v1, s51
+; GFX9-NEXT:    v_perm_b32 v3, s50, v3, v2
 ; GFX9-NEXT:    v_perm_b32 v1, s17, v1, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s42
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:4
-; GFX9-NEXT:    v_mov_b32_e32 v1, s50
-; GFX9-NEXT:    v_perm_b32 v3, s49, v3, v2
+; GFX9-NEXT:    v_mov_b32_e32 v1, s48
+; GFX9-NEXT:    v_perm_b32 v3, s39, v3, v2
 ; GFX9-NEXT:    v_perm_b32 v1, s18, v1, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s38
+; GFX9-NEXT:    v_mov_b32_e32 v3, s36
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:8
-; GFX9-NEXT:    v_mov_b32_e32 v1, s48
-; GFX9-NEXT:    v_perm_b32 v3, s39, v3, v2
+; GFX9-NEXT:    v_mov_b32_e32 v1, s38
+; GFX9-NEXT:    v_perm_b32 v3, s37, v3, v2
 ; GFX9-NEXT:    v_perm_b32 v1, s19, v1, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s40
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:12
-; GFX9-NEXT:    v_mov_b32_e32 v1, s37
-; GFX9-NEXT:    v_perm_b32 v3, s36, v3, v2
+; GFX9-NEXT:    v_mov_b32_e32 v1, s35
+; GFX9-NEXT:    v_perm_b32 v3, s34, v3, v2
 ; GFX9-NEXT:    v_perm_b32 v1, s20, v1, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s31
+; GFX9-NEXT:    v_mov_b32_e32 v3, vcc_hi
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:16
-; GFX9-NEXT:    v_mov_b32_e32 v1, s35
-; GFX9-NEXT:    v_perm_b32 v3, s34, v3, v2
+; GFX9-NEXT:    v_mov_b32_e32 v1, s31
+; GFX9-NEXT:    v_perm_b32 v3, s30, v3, v2
 ; GFX9-NEXT:    v_perm_b32 v1, s21, v1, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s14
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:20
-; GFX9-NEXT:    v_mov_b32_e32 v1, s30
+; GFX9-NEXT:    v_mov_b32_e32 v1, vcc_lo
 ; GFX9-NEXT:    v_perm_b32 v3, s95, v3, v2
 ; GFX9-NEXT:    v_perm_b32 v1, s22, v1, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
@@ -10999,11 +11316,9 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_perm_b32 v2, s57, v3, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; GFX9-NEXT:    v_or_b32_e32 v1, v1, v2
-; GFX9-NEXT:    v_readlane_b32 s30, v4, 14
+; GFX9-NEXT:    v_readlane_b32 s30, v4, 12
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:60
-; GFX9-NEXT:    v_readlane_b32 s31, v4, 15
-; GFX9-NEXT:    v_readlane_b32 s55, v4, 13
-; GFX9-NEXT:    v_readlane_b32 s54, v4, 12
+; GFX9-NEXT:    v_readlane_b32 s31, v4, 13
 ; GFX9-NEXT:    v_readlane_b32 s53, v4, 11
 ; GFX9-NEXT:    v_readlane_b32 s52, v4, 10
 ; GFX9-NEXT:    v_readlane_b32 s51, v4, 9
@@ -11021,56 +11336,6 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB25_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr55
-; GFX9-NEXT:    ; implicit-def: $sgpr54
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr53
-; GFX9-NEXT:    ; implicit-def: $sgpr52
-; GFX9-NEXT:    ; implicit-def: $sgpr51
-; GFX9-NEXT:    ; implicit-def: $sgpr50
-; GFX9-NEXT:    ; implicit-def: $sgpr49
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr48
-; GFX9-NEXT:    ; implicit-def: $sgpr39
-; GFX9-NEXT:    ; implicit-def: $sgpr38
-; GFX9-NEXT:    ; implicit-def: $sgpr37
-; GFX9-NEXT:    ; implicit-def: $sgpr36
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr35
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr31
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    s_branch .LBB25_2
 ;
 ; GFX11-LABEL: bitcast_v16i32_to_v64i8_scalar:
 ; GFX11:       ; %bb.0:
@@ -11088,8 +11353,8 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; GFX11-NEXT:    v_writelane_b32 v23, s30, 7
 ; GFX11-NEXT:    v_writelane_b32 v23, s31, 8
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX11-NEXT:    s_mov_b32 vcc_lo, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_4
+; GFX11-NEXT:    s_mov_b32 s48, 0
+; GFX11-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s42, s27, 24
 ; GFX11-NEXT:    s_lshr_b32 s44, s27, 16
@@ -11121,16 +11386,16 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b32 s91, s17, 8
 ; GFX11-NEXT:    s_lshr_b32 s95, s16, 16
 ; GFX11-NEXT:    s_lshr_b32 s94, s16, 8
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s3, 24
-; GFX11-NEXT:    s_lshr_b32 s30, s3, 16
-; GFX11-NEXT:    s_lshr_b32 s31, s3, 8
-; GFX11-NEXT:    s_lshr_b32 s34, s2, 16
-; GFX11-NEXT:    s_lshr_b32 s35, s2, 8
-; GFX11-NEXT:    s_lshr_b32 s36, s1, 24
-; GFX11-NEXT:    s_lshr_b32 s37, s1, 16
-; GFX11-NEXT:    s_lshr_b32 s38, s1, 8
-; GFX11-NEXT:    s_lshr_b32 s39, s0, 16
-; GFX11-NEXT:    s_lshr_b32 s48, s0, 8
+; GFX11-NEXT:    s_lshr_b32 vcc_lo, s3, 24
+; GFX11-NEXT:    s_lshr_b32 vcc_hi, s3, 16
+; GFX11-NEXT:    s_lshr_b32 s30, s3, 8
+; GFX11-NEXT:    s_lshr_b32 s31, s2, 16
+; GFX11-NEXT:    s_lshr_b32 s34, s2, 8
+; GFX11-NEXT:    s_lshr_b32 s35, s1, 24
+; GFX11-NEXT:    s_lshr_b32 s36, s1, 16
+; GFX11-NEXT:    s_lshr_b32 s37, s1, 8
+; GFX11-NEXT:    s_lshr_b32 s38, s0, 16
+; GFX11-NEXT:    s_lshr_b32 s39, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[26:27], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[24:25], 24
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[22:23], 24
@@ -11139,172 +11404,21 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b64 s[14:15], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[28:29], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[40:41], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, vcc_lo
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_3
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
-; GFX11-NEXT:    s_add_i32 s1, s1, 3
-; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:    s_add_i32 s3, s3, 3
-; GFX11-NEXT:    s_add_i32 s2, s2, 3
-; GFX11-NEXT:    s_add_i32 s17, s17, 3
-; GFX11-NEXT:    s_add_i32 s16, s16, 3
-; GFX11-NEXT:    s_add_i32 s19, s19, 3
-; GFX11-NEXT:    s_add_i32 s18, s18, 3
-; GFX11-NEXT:    s_add_i32 s21, s21, 3
-; GFX11-NEXT:    s_add_i32 s20, s20, 3
-; GFX11-NEXT:    s_add_i32 s23, s23, 3
-; GFX11-NEXT:    s_add_i32 s22, s22, 3
-; GFX11-NEXT:    s_add_i32 s25, s25, 3
-; GFX11-NEXT:    s_add_i32 s27, s27, 3
-; GFX11-NEXT:    s_add_i32 s26, s26, 3
-; GFX11-NEXT:    s_add_i32 s24, s24, 3
-; GFX11-NEXT:    s_lshr_b64 s[4:5], s[26:27], 24
-; GFX11-NEXT:    s_lshr_b64 s[6:7], s[24:25], 24
-; GFX11-NEXT:    s_lshr_b64 s[8:9], s[22:23], 24
-; GFX11-NEXT:    s_lshr_b64 s[10:11], s[20:21], 24
-; GFX11-NEXT:    s_lshr_b64 s[12:13], s[18:19], 24
-; GFX11-NEXT:    s_lshr_b64 s[14:15], s[16:17], 24
-; GFX11-NEXT:    s_lshr_b64 s[28:29], s[2:3], 24
-; GFX11-NEXT:    s_lshr_b64 s[40:41], s[0:1], 24
-; GFX11-NEXT:    s_lshr_b32 s42, s27, 24
-; GFX11-NEXT:    s_lshr_b32 s44, s27, 16
-; GFX11-NEXT:    s_lshr_b32 s43, s27, 8
-; GFX11-NEXT:    s_lshr_b32 s46, s26, 16
-; GFX11-NEXT:    s_lshr_b32 s45, s26, 8
-; GFX11-NEXT:    s_lshr_b32 s56, s25, 24
-; GFX11-NEXT:    s_lshr_b32 s57, s25, 16
-; GFX11-NEXT:    s_lshr_b32 s47, s25, 8
-; GFX11-NEXT:    s_lshr_b32 s59, s24, 16
-; GFX11-NEXT:    s_lshr_b32 s58, s24, 8
-; GFX11-NEXT:    s_lshr_b32 s61, s23, 24
-; GFX11-NEXT:    s_lshr_b32 s62, s23, 16
-; GFX11-NEXT:    s_lshr_b32 s60, s23, 8
-; GFX11-NEXT:    s_lshr_b32 s72, s22, 16
-; GFX11-NEXT:    s_lshr_b32 s63, s22, 8
-; GFX11-NEXT:    s_lshr_b32 s74, s21, 24
-; GFX11-NEXT:    s_lshr_b32 s75, s21, 16
-; GFX11-NEXT:    s_lshr_b32 s73, s21, 8
-; GFX11-NEXT:    s_lshr_b32 s77, s20, 16
-; GFX11-NEXT:    s_lshr_b32 s76, s20, 8
-; GFX11-NEXT:    s_lshr_b32 s78, s19, 24
-; GFX11-NEXT:    s_lshr_b32 s88, s19, 16
-; GFX11-NEXT:    s_lshr_b32 s79, s19, 8
-; GFX11-NEXT:    s_lshr_b32 s90, s18, 16
-; GFX11-NEXT:    s_lshr_b32 s89, s18, 8
-; GFX11-NEXT:    s_lshr_b32 s92, s17, 24
-; GFX11-NEXT:    s_lshr_b32 s93, s17, 16
-; GFX11-NEXT:    s_lshr_b32 s91, s17, 8
-; GFX11-NEXT:    s_lshr_b32 s95, s16, 16
-; GFX11-NEXT:    s_lshr_b32 s94, s16, 8
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s3, 24
-; GFX11-NEXT:    s_lshr_b32 s30, s3, 16
-; GFX11-NEXT:    s_lshr_b32 s31, s3, 8
-; GFX11-NEXT:    s_lshr_b32 s34, s2, 16
-; GFX11-NEXT:    s_lshr_b32 s35, s2, 8
-; GFX11-NEXT:    s_lshr_b32 s36, s1, 24
-; GFX11-NEXT:    s_lshr_b32 s37, s1, 16
-; GFX11-NEXT:    s_lshr_b32 s38, s1, 8
-; GFX11-NEXT:    s_lshr_b32 s39, s0, 16
-; GFX11-NEXT:    s_lshr_b32 s48, s0, 8
-; GFX11-NEXT:  .LBB25_3: ; %end
-; GFX11-NEXT:    v_mov_b32_e32 v12, 0xc0c0004
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_perm_b32 v5, s34, s28, v12
-; GFX11-NEXT:    v_readlane_b32 s34, v23, 0
-; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
-; GFX11-NEXT:    v_perm_b32 v2, s39, s40, v12
-; GFX11-NEXT:    v_perm_b32 v4, s37, s36, v12
-; GFX11-NEXT:    v_perm_b32 v1, s0, s48, v12
-; GFX11-NEXT:    v_perm_b32 v3, s1, s38, v12
-; GFX11-NEXT:    v_perm_b32 v6, s2, s35, v12
-; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
-; GFX11-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
-; GFX11-NEXT:    v_perm_b32 v8, s30, vcc_hi, v12
-; GFX11-NEXT:    v_perm_b32 v9, s95, s14, v12
-; GFX11-NEXT:    v_perm_b32 v10, s17, s91, v12
-; GFX11-NEXT:    v_or_b32_e32 v1, v1, v2
-; GFX11-NEXT:    v_or_b32_e32 v2, v3, v4
-; GFX11-NEXT:    v_or_b32_e32 v3, v6, v5
-; GFX11-NEXT:    v_perm_b32 v5, s93, s92, v12
-; GFX11-NEXT:    v_lshlrev_b32_e32 v4, 16, v8
-; GFX11-NEXT:    v_perm_b32 v6, s16, s94, v12
-; GFX11-NEXT:    v_perm_b32 v8, s90, s12, v12
-; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
-; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v5
-; GFX11-NEXT:    v_perm_b32 v7, s3, s31, v12
-; GFX11-NEXT:    v_perm_b32 v13, s18, s89, v12
-; GFX11-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
-; GFX11-NEXT:    v_or_b32_e32 v5, v6, v9
-; GFX11-NEXT:    v_perm_b32 v9, s88, s78, v12
-; GFX11-NEXT:    v_or_b32_e32 v6, v10, v11
-; GFX11-NEXT:    v_perm_b32 v10, s77, s10, v12
-; GFX11-NEXT:    v_perm_b32 v11, s75, s74, v12
-; GFX11-NEXT:    v_perm_b32 v14, s72, s8, v12
-; GFX11-NEXT:    v_or_b32_e32 v4, v7, v4
-; GFX11-NEXT:    v_or_b32_e32 v7, v13, v8
-; GFX11-NEXT:    v_perm_b32 v8, s19, s79, v12
-; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
-; GFX11-NEXT:    v_perm_b32 v13, s20, s76, v12
-; GFX11-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
-; GFX11-NEXT:    v_perm_b32 v15, s21, s73, v12
-; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
-; GFX11-NEXT:    v_perm_b32 v16, s22, s63, v12
-; GFX11-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
-; GFX11-NEXT:    v_or_b32_e32 v8, v8, v9
-; GFX11-NEXT:    v_or_b32_e32 v9, v13, v10
-; GFX11-NEXT:    v_perm_b32 v13, s62, s61, v12
-; GFX11-NEXT:    v_or_b32_e32 v10, v15, v11
-; GFX11-NEXT:    v_or_b32_e32 v11, v16, v14
-; GFX11-NEXT:    v_perm_b32 v14, s59, s6, v12
-; GFX11-NEXT:    v_perm_b32 v17, s57, s56, v12
-; GFX11-NEXT:    v_perm_b32 v18, s46, s4, v12
-; GFX11-NEXT:    v_perm_b32 v20, s44, s42, v12
-; GFX11-NEXT:    v_perm_b32 v15, s23, s60, v12
-; GFX11-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
-; GFX11-NEXT:    v_perm_b32 v16, s24, s58, v12
-; GFX11-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
-; GFX11-NEXT:    v_perm_b32 v19, s25, s47, v12
-; GFX11-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
-; GFX11-NEXT:    v_perm_b32 v21, s26, s45, v12
-; GFX11-NEXT:    v_lshlrev_b32_e32 v18, 16, v18
-; GFX11-NEXT:    v_perm_b32 v22, s27, s43, v12
-; GFX11-NEXT:    v_lshlrev_b32_e32 v20, 16, v20
-; GFX11-NEXT:    v_or_b32_e32 v12, v15, v13
-; GFX11-NEXT:    v_or_b32_e32 v13, v16, v14
-; GFX11-NEXT:    v_or_b32_e32 v14, v19, v17
-; GFX11-NEXT:    v_or_b32_e32 v15, v21, v18
-; GFX11-NEXT:    v_or_b32_e32 v16, v22, v20
-; GFX11-NEXT:    v_readlane_b32 s30, v23, 7
-; GFX11-NEXT:    s_clause 0x3
-; GFX11-NEXT:    scratch_store_b128 v0, v[1:4], off
-; GFX11-NEXT:    scratch_store_b128 v0, v[5:8], off offset:16
-; GFX11-NEXT:    scratch_store_b128 v0, v[9:12], off offset:32
-; GFX11-NEXT:    scratch_store_b128 v0, v[13:16], off offset:48
-; GFX11-NEXT:    v_readlane_b32 s31, v23, 8
-; GFX11-NEXT:    v_readlane_b32 s48, v23, 6
-; GFX11-NEXT:    v_readlane_b32 s39, v23, 5
-; GFX11-NEXT:    v_readlane_b32 s38, v23, 4
-; GFX11-NEXT:    v_readlane_b32 s37, v23, 3
-; GFX11-NEXT:    v_readlane_b32 s36, v23, 2
-; GFX11-NEXT:    v_readlane_b32 s35, v23, 1
-; GFX11-NEXT:    s_xor_saveexec_b32 s0, -1
-; GFX11-NEXT:    scratch_load_b32 v23, off, s32 ; 4-byte Folded Reload
-; GFX11-NEXT:    s_mov_b32 exec_lo, s0
-; GFX11-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB25_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr48
+; GFX11-NEXT:    s_branch .LBB25_3
+; GFX11-NEXT:  .LBB25_2:
+; GFX11-NEXT:    s_mov_b32 s48, -1
 ; GFX11-NEXT:    ; implicit-def: $sgpr39
-; GFX11-NEXT:    ; implicit-def: $sgpr40
 ; GFX11-NEXT:    ; implicit-def: $sgpr38
+; GFX11-NEXT:    ; implicit-def: $sgpr40
 ; GFX11-NEXT:    ; implicit-def: $sgpr37
 ; GFX11-NEXT:    ; implicit-def: $sgpr36
 ; GFX11-NEXT:    ; implicit-def: $sgpr35
 ; GFX11-NEXT:    ; implicit-def: $sgpr34
-; GFX11-NEXT:    ; implicit-def: $sgpr28
 ; GFX11-NEXT:    ; implicit-def: $sgpr31
+; GFX11-NEXT:    ; implicit-def: $sgpr28
 ; GFX11-NEXT:    ; implicit-def: $sgpr30
 ; GFX11-NEXT:    ; implicit-def: $vcc_hi
+; GFX11-NEXT:    ; implicit-def: $vcc_lo
 ; GFX11-NEXT:    ; implicit-def: $sgpr94
 ; GFX11-NEXT:    ; implicit-def: $sgpr95
 ; GFX11-NEXT:    ; implicit-def: $sgpr14
@@ -11341,7 +11455,163 @@ define inreg <64 x i8> @bitcast_v16i32_to_v64i8_scalar(<16 x i32> inreg %a, i32
 ; GFX11-NEXT:    ; implicit-def: $sgpr43
 ; GFX11-NEXT:    ; implicit-def: $sgpr44
 ; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    s_branch .LBB25_2
+; GFX11-NEXT:  .LBB25_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s48, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
+; GFX11-NEXT:    s_add_i32 s1, s1, 3
+; GFX11-NEXT:    s_add_i32 s0, s0, 3
+; GFX11-NEXT:    s_add_i32 s3, s3, 3
+; GFX11-NEXT:    s_add_i32 s2, s2, 3
+; GFX11-NEXT:    s_add_i32 s17, s17, 3
+; GFX11-NEXT:    s_add_i32 s16, s16, 3
+; GFX11-NEXT:    s_add_i32 s19, s19, 3
+; GFX11-NEXT:    s_add_i32 s18, s18, 3
+; GFX11-NEXT:    s_add_i32 s21, s21, 3
+; GFX11-NEXT:    s_add_i32 s20, s20, 3
+; GFX11-NEXT:    s_add_i32 s23, s23, 3
+; GFX11-NEXT:    s_add_i32 s22, s22, 3
+; GFX11-NEXT:    s_add_i32 s25, s25, 3
+; GFX11-NEXT:    s_add_i32 s27, s27, 3
+; GFX11-NEXT:    s_add_i32 s26, s26, 3
+; GFX11-NEXT:    s_add_i32 s24, s24, 3
+; GFX11-NEXT:    s_lshr_b64 s[4:5], s[26:27], 24
+; GFX11-NEXT:    s_lshr_b64 s[6:7], s[24:25], 24
+; GFX11-NEXT:    s_lshr_b64 s[8:9], s[22:23], 24
+; GFX11-NEXT:    s_lshr_b64 s[10:11], s[20:21], 24
+; GFX11-NEXT:    s_lshr_b64 s[12:13], s[18:19], 24
+; GFX11-NEXT:    s_lshr_b64 s[14:15], s[16:17], 24
+; GFX11-NEXT:    s_lshr_b64 s[28:29], s[2:3], 24
+; GFX11-NEXT:    s_lshr_b64 s[40:41], s[0:1], 24
+; GFX11-NEXT:    s_lshr_b32 s42, s27, 24
+; GFX11-NEXT:    s_lshr_b32 s44, s27, 16
+; GFX11-NEXT:    s_lshr_b32 s43, s27, 8
+; GFX11-NEXT:    s_lshr_b32 s46, s26, 16
+; GFX11-NEXT:    s_lshr_b32 s45, s26, 8
+; GFX11-NEXT:    s_lshr_b32 s56, s25, 24
+; GFX11-NEXT:    s_lshr_b32 s57, s25, 16
+; GFX11-NEXT:    s_lshr_b32 s47, s25, 8
+; GFX11-NEXT:    s_lshr_b32 s59, s24, 16
+; GFX11-NEXT:    s_lshr_b32 s58, s24, 8
+; GFX11-NEXT:    s_lshr_b32 s61, s23, 24
+; GFX11-NEXT:    s_lshr_b32 s62, s23, 16
+; GFX11-NEXT:    s_lshr_b32 s60, s23, 8
+; GFX11-NEXT:    s_lshr_b32 s72, s22, 16
+; GFX11-NEXT:    s_lshr_b32 s63, s22, 8
+; GFX11-NEXT:    s_lshr_b32 s74, s21, 24
+; GFX11-NEXT:    s_lshr_b32 s75, s21, 16
+; GFX11-NEXT:    s_lshr_b32 s73, s21, 8
+; GFX11-NEXT:    s_lshr_b32 s77, s20, 16
+; GFX11-NEXT:    s_lshr_b32 s76, s20, 8
+; GFX11-NEXT:    s_lshr_b32 s78, s19, 24
+; GFX11-NEXT:    s_lshr_b32 s88, s19, 16
+; GFX11-NEXT:    s_lshr_b32 s79, s19, 8
+; GFX11-NEXT:    s_lshr_b32 s90, s18, 16
+; GFX11-NEXT:    s_lshr_b32 s89, s18, 8
+; GFX11-NEXT:    s_lshr_b32 s92, s17, 24
+; GFX11-NEXT:    s_lshr_b32 s93, s17, 16
+; GFX11-NEXT:    s_lshr_b32 s91, s17, 8
+; GFX11-NEXT:    s_lshr_b32 s95, s16, 16
+; GFX11-NEXT:    s_lshr_b32 s94, s16, 8
+; GFX11-NEXT:    s_lshr_b32 vcc_lo, s3, 24
+; GFX11-NEXT:    s_lshr_b32 vcc_hi, s3, 16
+; GFX11-NEXT:    s_lshr_b32 s30, s3, 8
+; GFX11-NEXT:    s_lshr_b32 s31, s2, 16
+; GFX11-NEXT:    s_lshr_b32 s34, s2, 8
+; GFX11-NEXT:    s_lshr_b32 s35, s1, 24
+; GFX11-NEXT:    s_lshr_b32 s36, s1, 16
+; GFX11-NEXT:    s_lshr_b32 s37, s1, 8
+; GFX11-NEXT:    s_lshr_b32 s38, s0, 16
+; GFX11-NEXT:    s_lshr_b32 s39, s0, 8
+; GFX11-NEXT:  .LBB25_5: ; %end
+; GFX11-NEXT:    v_mov_b32_e32 v12, 0xc0c0004
+; GFX11-NEXT:    v_readlane_b32 s48, v23, 6
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-NEXT:    v_perm_b32 v5, s31, s28, v12
+; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
+; GFX11-NEXT:    v_perm_b32 v2, s38, s40, v12
+; GFX11-NEXT:    v_perm_b32 v4, s36, s35, v12
+; GFX11-NEXT:    v_perm_b32 v1, s0, s39, v12
+; GFX11-NEXT:    v_perm_b32 v3, s1, s37, v12
+; GFX11-NEXT:    v_perm_b32 v6, s2, s34, v12
+; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
+; GFX11-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
+; GFX11-NEXT:    v_perm_b32 v8, vcc_hi, vcc_lo, v12
+; GFX11-NEXT:    v_perm_b32 v9, s95, s14, v12
+; GFX11-NEXT:    v_perm_b32 v10, s17, s91, v12
+; GFX11-NEXT:    v_or_b32_e32 v1, v1, v2
+; GFX11-NEXT:    v_or_b32_e32 v2, v3, v4
+; GFX11-NEXT:    v_or_b32_e32 v3, v6, v5
+; GFX11-NEXT:    v_perm_b32 v5, s93, s92, v12
+; GFX11-NEXT:    v_lshlrev_b32_e32 v4, 16, v8
+; GFX11-NEXT:    v_perm_b32 v6, s16, s94, v12
+; GFX11-NEXT:    v_perm_b32 v8, s90, s12, v12
+; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
+; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v5
+; GFX11-NEXT:    v_perm_b32 v7, s3, s30, v12
+; GFX11-NEXT:    v_perm_b32 v13, s18, s89, v12
+; GFX11-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
+; GFX11-NEXT:    v_or_b32_e32 v5, v6, v9
+; GFX11-NEXT:    v_perm_b32 v9, s88, s78, v12
+; GFX11-NEXT:    v_or_b32_e32 v6, v10, v11
+; GFX11-NEXT:    v_perm_b32 v10, s77, s10, v12
+; GFX11-NEXT:    v_perm_b32 v11, s75, s74, v12
+; GFX11-NEXT:    v_perm_b32 v14, s72, s8, v12
+; GFX11-NEXT:    v_or_b32_e32 v4, v7, v4
+; GFX11-NEXT:    v_or_b32_e32 v7, v13, v8
+; GFX11-NEXT:    v_perm_b32 v8, s19, s79, v12
+; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
+; GFX11-NEXT:    v_perm_b32 v13, s20, s76, v12
+; GFX11-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
+; GFX11-NEXT:    v_perm_b32 v15, s21, s73, v12
+; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
+; GFX11-NEXT:    v_perm_b32 v16, s22, s63, v12
+; GFX11-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
+; GFX11-NEXT:    v_or_b32_e32 v8, v8, v9
+; GFX11-NEXT:    v_or_b32_e32 v9, v13, v10
+; GFX11-NEXT:    v_perm_b32 v13, s62, s61, v12
+; GFX11-NEXT:    v_or_b32_e32 v10, v15, v11
+; GFX11-NEXT:    v_or_b32_e32 v11, v16, v14
+; GFX11-NEXT:    v_perm_b32 v14, s59, s6, v12
+; GFX11-NEXT:    v_perm_b32 v17, s57, s56, v12
+; GFX11-NEXT:    v_perm_b32 v18, s46, s4, v12
+; GFX11-NEXT:    v_perm_b32 v20, s44, s42, v12
+; GFX11-NEXT:    v_perm_b32 v15, s23, s60, v12
+; GFX11-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
+; GFX11-NEXT:    v_perm_b32 v16, s24, s58, v12
+; GFX11-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
+; GFX11-NEXT:    v_perm_b32 v19, s25, s47, v12
+; GFX11-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
+; GFX11-NEXT:    v_perm_b32 v21, s26, s45, v12
+; GFX11-NEXT:    v_lshlrev_b32_e32 v18, 16, v18
+; GFX11-NEXT:    v_perm_b32 v22, s27, s43, v12
+; GFX11-NEXT:    v_lshlrev_b32_e32 v20, 16, v20
+; GFX11-NEXT:    v_or_b32_e32 v12, v15, v13
+; GFX11-NEXT:    v_or_b32_e32 v13, v16, v14
+; GFX11-NEXT:    v_or_b32_e32 v14, v19, v17
+; GFX11-NEXT:    v_or_b32_e32 v15, v21, v18
+; GFX11-NEXT:    v_or_b32_e32 v16, v22, v20
+; GFX11-NEXT:    v_readlane_b32 s30, v23, 7
+; GFX11-NEXT:    s_clause 0x3
+; GFX11-NEXT:    scratch_store_b128 v0, v[1:4], off
+; GFX11-NEXT:    scratch_store_b128 v0, v[5:8], off offset:16
+; GFX11-NEXT:    scratch_store_b128 v0, v[9:12], off offset:32
+; GFX11-NEXT:    scratch_store_b128 v0, v[13:16], off offset:48
+; GFX11-NEXT:    v_readlane_b32 s31, v23, 8
+; GFX11-NEXT:    v_readlane_b32 s39, v23, 5
+; GFX11-NEXT:    v_readlane_b32 s38, v23, 4
+; GFX11-NEXT:    v_readlane_b32 s37, v23, 3
+; GFX11-NEXT:    v_readlane_b32 s36, v23, 2
+; GFX11-NEXT:    v_readlane_b32 s35, v23, 1
+; GFX11-NEXT:    v_readlane_b32 s34, v23, 0
+; GFX11-NEXT:    s_xor_saveexec_b32 s0, -1
+; GFX11-NEXT:    scratch_load_b32 v23, off, s32 ; 4-byte Folded Reload
+; GFX11-NEXT:    s_mov_b32 exec_lo, s0
+; GFX11-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-NEXT:    s_setpc_b64 s[30:31]
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -13709,7 +13979,7 @@ define inreg <16 x i32> @bitcast_v64i8_to_v16i32_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    v_lshlrev_b32_e32 v25, 24, v37
 ; SI-NEXT:    s_waitcnt vmcnt(5)
 ; SI-NEXT:    v_lshlrev_b32_e32 v27, 8, v27
-; SI-NEXT:    s_cbranch_scc0 .LBB27_4
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s6, 0xff
 ; SI-NEXT:    v_or_b32_e32 v0, s4, v34
@@ -13858,8 +14128,17 @@ define inreg <16 x i32> @bitcast_v64i8_to_v16i32_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v8, s91
 ; SI-NEXT:    v_mov_b32_e32 v9, s92
 ; SI-NEXT:    v_mov_b32_e32 v10, s93
-; SI-NEXT:    s_cbranch_execnz .LBB27_3
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -14070,12 +14349,9 @@ define inreg <16 x i32> @bitcast_v64i8_to_v16i32_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v8, s15
 ; SI-NEXT:    v_mov_b32_e32 v9, s11
 ; SI-NEXT:    v_mov_b32_e32 v10, s7
-; SI-NEXT:  .LBB27_3: ; %end
+; SI-NEXT:  .LBB27_5: ; %end
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB27_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; SI-NEXT:    s_branch .LBB27_2
 ;
 ; VI-LABEL: bitcast_v64i8_to_v16i32_scalar:
 ; VI:       ; %bb.0:
@@ -14134,7 +14410,7 @@ define inreg <16 x i32> @bitcast_v64i8_to_v16i32_scalar(<64 x i8> inreg %a, i32
 ; VI-NEXT:    s_waitcnt vmcnt(14)
 ; VI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v35
 ; VI-NEXT:    s_and_b64 s[4:5], vcc, exec
-; VI-NEXT:    s_cbranch_scc0 .LBB27_4
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -14226,8 +14502,17 @@ define inreg <16 x i32> @bitcast_v64i8_to_v16i32_scalar(<64 x i8> inreg %a, i32
 ; VI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; VI-NEXT:    v_perm_b32 v35, v19, v18, s4
 ; VI-NEXT:    v_or_b32_e32 v15, v35, v15
-; VI-NEXT:    s_cbranch_execnz .LBB27_3
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
@@ -14381,12 +14666,9 @@ define inreg <16 x i32> @bitcast_v64i8_to_v16i32_scalar(<64 x i8> inreg %a, i32
 ; VI-NEXT:    v_add_u32_e32 v13, vcc, 0x3000000, v13
 ; VI-NEXT:    v_add_u32_e32 v14, vcc, 0x3000000, v14
 ; VI-NEXT:    v_add_u32_e32 v15, vcc, 0x3000000, v15
-; VI-NEXT:  .LBB27_3: ; %end
+; VI-NEXT:  .LBB27_5: ; %end
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB27_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-NEXT:    s_branch .LBB27_2
 ;
 ; GFX9-LABEL: bitcast_v64i8_to_v16i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -14445,7 +14727,7 @@ define inreg <16 x i32> @bitcast_v64i8_to_v16i32_scalar(<64 x i8> inreg %a, i32
 ; GFX9-NEXT:    s_waitcnt vmcnt(19)
 ; GFX9-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v35
 ; GFX9-NEXT:    s_and_b64 s[4:5], vcc, exec
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -14539,8 +14821,17 @@ define inreg <16 x i32> @bitcast_v64i8_to_v16i32_scalar(<64 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; GFX9-NEXT:    v_perm_b32 v35, v19, v18, s4
 ; GFX9-NEXT:    v_or_b32_e32 v15, v35, v15
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_3
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
@@ -14681,12 +14972,9 @@ define inreg <16 x i32> @bitcast_v64i8_to_v16i32_scalar(<64 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_add_u32_e32 v15, 0x300, v15
 ; GFX9-NEXT:    v_add_u32_sdwa v16, v16, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v15, v15, v16 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB27_3: ; %end
+; GFX9-NEXT:  .LBB27_5: ; %end
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB27_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX9-NEXT:    s_branch .LBB27_2
 ;
 ; GFX11-TRUE16-LABEL: bitcast_v64i8_to_v16i32_scalar:
 ; GFX11-TRUE16:       ; %bb.0:
@@ -14743,7 +15031,7 @@ define inreg <16 x i32> @bitcast_v64i8_to_v16i32_scalar(<64 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v54
 ; GFX11-TRUE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB27_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    v_perm_b32 v16, v37, v34, 0xc0c0004
@@ -14815,9 +15103,17 @@ define inreg <16 x i32> @bitcast_v64i8_to_v16i32_scalar(<64 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v13, v17, v15
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v14, v19, v16
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v15, v20, v18
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB27_3
-; GFX11-TRUE16-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB27_3
+; GFX11-TRUE16-NEXT:  .LBB27_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-TRUE16-NEXT:  .LBB27_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 3
@@ -14965,12 +15261,9 @@ define inreg <16 x i32> @bitcast_v64i8_to_v16i32_scalar(<64 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v13, v14, v16
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v14, v17, v18
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v15, v19, v20
-; GFX11-TRUE16-NEXT:  .LBB27_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB27_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB27_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-TRUE16-NEXT:    s_branch .LBB27_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v64i8_to_v16i32_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -15027,7 +15320,7 @@ define inreg <16 x i32> @bitcast_v64i8_to_v16i32_scalar(<64 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v54
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB27_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v16, v37, v34, 0xc0c0004
@@ -15099,9 +15392,17 @@ define inreg <16 x i32> @bitcast_v64i8_to_v16i32_scalar(<64 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v13, v17, v15
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v14, v19, v16
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v15, v20, v18
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB27_3
-; GFX11-FAKE16-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB27_3
+; GFX11-FAKE16-NEXT:  .LBB27_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-FAKE16-NEXT:  .LBB27_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 3
@@ -15249,12 +15550,9 @@ define inreg <16 x i32> @bitcast_v64i8_to_v16i32_scalar(<64 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v13, v14, v16
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v14, v17, v18
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v15, v19, v20
-; GFX11-FAKE16-NEXT:  .LBB27_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB27_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB27_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-FAKE16-NEXT:    s_branch .LBB27_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -15412,10 +15710,18 @@ define inreg <8 x i64> @bitcast_v16f32_to_v8i64_scalar(<16 x float> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s31, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s30, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; SI-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; SI-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -15432,10 +15738,8 @@ define inreg <8 x i64> @bitcast_v16f32_to_v8i64_scalar(<16 x float> inreg %a, i3
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; SI-NEXT:    s_branch .LBB29_5
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:    s_branch .LBB29_6
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -15452,7 +15756,7 @@ define inreg <8 x i64> @bitcast_v16f32_to_v8i64_scalar(<16 x float> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    v_mov_b32_e32 v14, s30
 ; SI-NEXT:    v_mov_b32_e32 v15, s31
-; SI-NEXT:  .LBB29_5: ; %end
+; SI-NEXT:  .LBB29_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s30, v16, 0
 ; SI-NEXT:    v_readlane_b32 s31, v16, 1
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -15473,10 +15777,18 @@ define inreg <8 x i64> @bitcast_v16f32_to_v8i64_scalar(<16 x float> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; VI-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; VI-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -15493,10 +15805,8 @@ define inreg <8 x i64> @bitcast_v16f32_to_v8i64_scalar(<16 x float> inreg %a, i3
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; VI-NEXT:    s_branch .LBB29_5
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:    s_branch .LBB29_6
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -15513,7 +15823,7 @@ define inreg <8 x i64> @bitcast_v16f32_to_v8i64_scalar(<16 x float> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB29_5: ; %end
+; VI-NEXT:  .LBB29_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v16, 0
 ; VI-NEXT:    v_readlane_b32 s31, v16, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -15534,10 +15844,18 @@ define inreg <8 x i64> @bitcast_v16f32_to_v8i64_scalar(<16 x float> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -15554,10 +15872,8 @@ define inreg <8 x i64> @bitcast_v16f32_to_v8i64_scalar(<16 x float> inreg %a, i3
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; GFX9-NEXT:    s_branch .LBB29_5
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:    s_branch .LBB29_6
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -15574,7 +15890,7 @@ define inreg <8 x i64> @bitcast_v16f32_to_v8i64_scalar(<16 x float> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB29_5: ; %end
+; GFX9-NEXT:  .LBB29_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -15592,11 +15908,16 @@ define inreg <8 x i64> @bitcast_v16f32_to_v8i64_scalar(<16 x float> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB29_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB29_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v15, s27, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v14, s26, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v13, s25, 1.0
@@ -15614,8 +15935,6 @@ define inreg <8 x i64> @bitcast_v16f32_to_v8i64_scalar(<16 x float> inreg %a, i3
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB29_3:
-; GFX11-NEXT:    s_branch .LBB29_2
 ; GFX11-NEXT:  .LBB29_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -15789,10 +16108,18 @@ define inreg <16 x float> @bitcast_v8i64_to_v16f32_scalar(<8 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s6, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_4
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB31_3
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s28, s28, 3
@@ -15809,7 +16136,7 @@ define inreg <16 x float> @bitcast_v8i64_to_v16f32_scalar(<8 x i64> inreg %a, i3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB31_3: ; %end
+; SI-NEXT:  .LBB31_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -15827,8 +16154,6 @@ define inreg <16 x float> @bitcast_v8i64_to_v16f32_scalar(<8 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v14, s7
 ; SI-NEXT:    v_mov_b32_e32 v15, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_4:
-; SI-NEXT:    s_branch .LBB31_2
 ;
 ; VI-LABEL: bitcast_v8i64_to_v16f32_scalar:
 ; VI:       ; %bb.0:
@@ -15837,10 +16162,18 @@ define inreg <16 x float> @bitcast_v8i64_to_v16f32_scalar(<8 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_4
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB31_3
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s28, s28, 3
@@ -15857,7 +16190,7 @@ define inreg <16 x float> @bitcast_v8i64_to_v16f32_scalar(<8 x i64> inreg %a, i3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB31_3: ; %end
+; VI-NEXT:  .LBB31_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -15875,8 +16208,6 @@ define inreg <16 x float> @bitcast_v8i64_to_v16f32_scalar(<8 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_4:
-; VI-NEXT:    s_branch .LBB31_2
 ;
 ; GFX9-LABEL: bitcast_v8i64_to_v16f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -15885,10 +16216,18 @@ define inreg <16 x float> @bitcast_v8i64_to_v16f32_scalar(<8 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_3
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s28, s28, 3
@@ -15905,7 +16244,7 @@ define inreg <16 x float> @bitcast_v8i64_to_v16f32_scalar(<8 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB31_3: ; %end
+; GFX9-NEXT:  .LBB31_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -15923,19 +16262,22 @@ define inreg <16 x float> @bitcast_v8i64_to_v16f32_scalar(<8 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB31_4:
-; GFX9-NEXT:    s_branch .LBB31_2
 ;
 ; GFX11-LABEL: bitcast_v8i64_to_v16f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_3
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s26, s26, 3
 ; GFX11-NEXT:    s_addc_u32 s27, s27, 0
 ; GFX11-NEXT:    s_add_u32 s24, s24, 3
@@ -15952,7 +16294,7 @@ define inreg <16 x float> @bitcast_v8i64_to_v16f32_scalar(<8 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB31_3: ; %end
+; GFX11-NEXT:  .LBB31_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -15963,8 +16305,6 @@ define inreg <16 x float> @bitcast_v8i64_to_v16f32_scalar(<8 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_4:
-; GFX11-NEXT:    s_branch .LBB31_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -16122,10 +16462,18 @@ define inreg <8 x double> @bitcast_v16f32_to_v8f64_scalar(<16 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s31, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s30, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; SI-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; SI-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -16142,10 +16490,8 @@ define inreg <8 x double> @bitcast_v16f32_to_v8f64_scalar(<16 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; SI-NEXT:    s_branch .LBB33_5
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:    s_branch .LBB33_6
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -16162,7 +16508,7 @@ define inreg <8 x double> @bitcast_v16f32_to_v8f64_scalar(<16 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    v_mov_b32_e32 v14, s30
 ; SI-NEXT:    v_mov_b32_e32 v15, s31
-; SI-NEXT:  .LBB33_5: ; %end
+; SI-NEXT:  .LBB33_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s30, v16, 0
 ; SI-NEXT:    v_readlane_b32 s31, v16, 1
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -16183,10 +16529,18 @@ define inreg <8 x double> @bitcast_v16f32_to_v8f64_scalar(<16 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; VI-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; VI-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -16203,10 +16557,8 @@ define inreg <8 x double> @bitcast_v16f32_to_v8f64_scalar(<16 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; VI-NEXT:    s_branch .LBB33_5
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:    s_branch .LBB33_6
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -16223,7 +16575,7 @@ define inreg <8 x double> @bitcast_v16f32_to_v8f64_scalar(<16 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB33_5: ; %end
+; VI-NEXT:  .LBB33_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v16, 0
 ; VI-NEXT:    v_readlane_b32 s31, v16, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -16244,10 +16596,18 @@ define inreg <8 x double> @bitcast_v16f32_to_v8f64_scalar(<16 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -16264,10 +16624,8 @@ define inreg <8 x double> @bitcast_v16f32_to_v8f64_scalar(<16 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; GFX9-NEXT:    s_branch .LBB33_5
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:    s_branch .LBB33_6
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -16284,7 +16642,7 @@ define inreg <8 x double> @bitcast_v16f32_to_v8f64_scalar(<16 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB33_5: ; %end
+; GFX9-NEXT:  .LBB33_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -16302,11 +16660,16 @@ define inreg <8 x double> @bitcast_v16f32_to_v8f64_scalar(<16 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB33_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB33_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v15, s27, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v14, s26, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v13, s25, 1.0
@@ -16324,8 +16687,6 @@ define inreg <8 x double> @bitcast_v16f32_to_v8f64_scalar(<16 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB33_3:
-; GFX11-NEXT:    s_branch .LBB33_2
 ; GFX11-NEXT:  .LBB33_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -16469,10 +16830,18 @@ define inreg <16 x float> @bitcast_v8f64_to_v16f32_scalar(<8 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s31, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s30, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_3
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB35_4
-; SI-NEXT:  .LBB35_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; SI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -16481,10 +16850,8 @@ define inreg <16 x float> @bitcast_v8f64_to_v16f32_scalar(<8 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; SI-NEXT:    s_branch .LBB35_5
-; SI-NEXT:  .LBB35_3:
-; SI-NEXT:    s_branch .LBB35_2
-; SI-NEXT:  .LBB35_4:
+; SI-NEXT:    s_branch .LBB35_6
+; SI-NEXT:  .LBB35_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -16501,7 +16868,7 @@ define inreg <16 x float> @bitcast_v8f64_to_v16f32_scalar(<8 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    v_mov_b32_e32 v14, s30
 ; SI-NEXT:    v_mov_b32_e32 v15, s31
-; SI-NEXT:  .LBB35_5: ; %end
+; SI-NEXT:  .LBB35_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s30, v16, 0
 ; SI-NEXT:    v_readlane_b32 s31, v16, 1
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -16522,10 +16889,18 @@ define inreg <16 x float> @bitcast_v8f64_to_v16f32_scalar(<8 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -16534,10 +16909,8 @@ define inreg <16 x float> @bitcast_v8f64_to_v16f32_scalar(<8 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; VI-NEXT:    s_branch .LBB35_5
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:    s_branch .LBB35_6
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -16554,7 +16927,7 @@ define inreg <16 x float> @bitcast_v8f64_to_v16f32_scalar(<8 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB35_5: ; %end
+; VI-NEXT:  .LBB35_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v16, 0
 ; VI-NEXT:    v_readlane_b32 s31, v16, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -16575,10 +16948,18 @@ define inreg <16 x float> @bitcast_v8f64_to_v16f32_scalar(<8 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -16587,10 +16968,8 @@ define inreg <16 x float> @bitcast_v8f64_to_v16f32_scalar(<8 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; GFX9-NEXT:    s_branch .LBB35_5
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:    s_branch .LBB35_6
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -16607,7 +16986,7 @@ define inreg <16 x float> @bitcast_v8f64_to_v16f32_scalar(<8 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB35_5: ; %end
+; GFX9-NEXT:  .LBB35_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -16625,11 +17004,16 @@ define inreg <16 x float> @bitcast_v8f64_to_v16f32_scalar(<8 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[14:15], s[26:27], 1.0
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
@@ -16639,8 +17023,6 @@ define inreg <16 x float> @bitcast_v8f64_to_v16f32_scalar(<8 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -16901,7 +17283,7 @@ define inreg <32 x i16> @bitcast_v16f32_to_v32i16_scalar(<16 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_3
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s63, s5, 16
 ; SI-NEXT:    s_lshr_b32 s62, s29, 16
@@ -16919,8 +17301,32 @@ define inreg <32 x i16> @bitcast_v16f32_to_v32i16_scalar(<16 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB37_4
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[46:47], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[46:47], -1
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v15, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v14, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -16953,26 +17359,8 @@ define inreg <32 x i16> @bitcast_v16f32_to_v32i16_scalar(<16 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v30, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v31, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v32, 16, v1
-; SI-NEXT:    s_branch .LBB37_5
-; SI-NEXT:  .LBB37_3:
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    s_branch .LBB37_2
-; SI-NEXT:  .LBB37_4:
+; SI-NEXT:    s_branch .LBB37_6
+; SI-NEXT:  .LBB37_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -17005,7 +17393,7 @@ define inreg <32 x i16> @bitcast_v16f32_to_v32i16_scalar(<16 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v21, s40
 ; SI-NEXT:    v_mov_b32_e32 v22, s42
 ; SI-NEXT:    v_mov_b32_e32 v23, s44
-; SI-NEXT:  .LBB37_5: ; %end
+; SI-NEXT:  .LBB37_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v23, 16, v23
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v22, 16, v22
@@ -17068,10 +17456,18 @@ define inreg <32 x i16> @bitcast_v16f32_to_v32i16_scalar(<16 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_3
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_4
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; VI-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; VI-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -17088,10 +17484,8 @@ define inreg <32 x i16> @bitcast_v16f32_to_v32i16_scalar(<16 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; VI-NEXT:    s_branch .LBB37_5
-; VI-NEXT:  .LBB37_3:
-; VI-NEXT:    s_branch .LBB37_2
-; VI-NEXT:  .LBB37_4:
+; VI-NEXT:    s_branch .LBB37_6
+; VI-NEXT:  .LBB37_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -17108,7 +17502,7 @@ define inreg <32 x i16> @bitcast_v16f32_to_v32i16_scalar(<16 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB37_5: ; %end
+; VI-NEXT:  .LBB37_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v16, 0
 ; VI-NEXT:    v_readlane_b32 s31, v16, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -17129,10 +17523,18 @@ define inreg <32 x i16> @bitcast_v16f32_to_v32i16_scalar(<16 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_4
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -17149,10 +17551,8 @@ define inreg <32 x i16> @bitcast_v16f32_to_v32i16_scalar(<16 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; GFX9-NEXT:    s_branch .LBB37_5
-; GFX9-NEXT:  .LBB37_3:
-; GFX9-NEXT:    s_branch .LBB37_2
-; GFX9-NEXT:  .LBB37_4:
+; GFX9-NEXT:    s_branch .LBB37_6
+; GFX9-NEXT:  .LBB37_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -17169,7 +17569,7 @@ define inreg <32 x i16> @bitcast_v16f32_to_v32i16_scalar(<16 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB37_5: ; %end
+; GFX9-NEXT:  .LBB37_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -17187,11 +17587,16 @@ define inreg <32 x i16> @bitcast_v16f32_to_v32i16_scalar(<16 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_4
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v15, s27, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v14, s26, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v13, s25, 1.0
@@ -17209,8 +17614,6 @@ define inreg <32 x i16> @bitcast_v16f32_to_v32i16_scalar(<16 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_3:
-; GFX11-NEXT:    s_branch .LBB37_2
 ; GFX11-NEXT:  .LBB37_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -17610,7 +18013,7 @@ define inreg <16 x float> @bitcast_v32i16_to_v16f32_scalar(<32 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s11, s12, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_4
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
@@ -17660,8 +18063,17 @@ define inreg <16 x float> @bitcast_v32i16_to_v16f32_scalar(<32 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s9, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB39_3
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
@@ -17742,7 +18154,7 @@ define inreg <16 x float> @bitcast_v32i16_to_v16f32_scalar(<32 x i16> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:  .LBB39_3: ; %end
+; SI-NEXT:  .LBB39_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -17772,9 +18184,6 @@ define inreg <16 x float> @bitcast_v32i16_to_v16f32_scalar(<32 x i16> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB39_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB39_2
 ;
 ; VI-LABEL: bitcast_v32i16_to_v16f32_scalar:
 ; VI:       ; %bb.0:
@@ -17783,10 +18192,18 @@ define inreg <16 x float> @bitcast_v32i16_to_v16f32_scalar(<32 x i16> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_4
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_3
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s6, 3
 ; VI-NEXT:    s_and_b32 s4, s6, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -17867,7 +18284,7 @@ define inreg <16 x float> @bitcast_v32i16_to_v16f32_scalar(<32 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB39_3: ; %end
+; VI-NEXT:  .LBB39_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -17885,8 +18302,6 @@ define inreg <16 x float> @bitcast_v32i16_to_v16f32_scalar(<32 x i16> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB39_4:
-; VI-NEXT:    s_branch .LBB39_2
 ;
 ; GFX9-LABEL: bitcast_v32i16_to_v16f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -17900,10 +18315,18 @@ define inreg <16 x float> @bitcast_v32i16_to_v16f32_scalar(<32 x i16> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_4
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v15, s31, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v14, s30, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v13, s29, 3 op_sel_hi:[1,0]
@@ -17920,10 +18343,8 @@ define inreg <16 x float> @bitcast_v32i16_to_v16f32_scalar(<32 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB39_5
-; GFX9-NEXT:  .LBB39_3:
-; GFX9-NEXT:    s_branch .LBB39_2
-; GFX9-NEXT:  .LBB39_4:
+; GFX9-NEXT:    s_branch .LBB39_6
+; GFX9-NEXT:  .LBB39_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -17940,7 +18361,7 @@ define inreg <16 x float> @bitcast_v32i16_to_v16f32_scalar(<32 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB39_5: ; %end
+; GFX9-NEXT:  .LBB39_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -17958,11 +18379,16 @@ define inreg <16 x float> @bitcast_v32i16_to_v16f32_scalar(<32 x i16> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v15, s27, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v14, s26, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v13, s25, 3 op_sel_hi:[1,0]
@@ -17980,8 +18406,6 @@ define inreg <16 x float> @bitcast_v32i16_to_v16f32_scalar(<32 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB39_3:
-; GFX11-NEXT:    s_branch .LBB39_2
 ; GFX11-NEXT:  .LBB39_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -18242,7 +18666,7 @@ define inreg <32 x half> @bitcast_v16f32_to_v32f16_scalar(<16 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_3
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s63, s5, 16
 ; SI-NEXT:    s_lshr_b32 s62, s29, 16
@@ -18260,8 +18684,32 @@ define inreg <32 x half> @bitcast_v16f32_to_v32f16_scalar(<16 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB41_4
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[46:47], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[46:47], -1
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v15, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v14, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -18294,26 +18742,8 @@ define inreg <32 x half> @bitcast_v16f32_to_v32f16_scalar(<16 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v30, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v31, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v32, 16, v1
-; SI-NEXT:    s_branch .LBB41_5
-; SI-NEXT:  .LBB41_3:
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    s_branch .LBB41_2
-; SI-NEXT:  .LBB41_4:
+; SI-NEXT:    s_branch .LBB41_6
+; SI-NEXT:  .LBB41_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -18346,7 +18776,7 @@ define inreg <32 x half> @bitcast_v16f32_to_v32f16_scalar(<16 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v21, s40
 ; SI-NEXT:    v_mov_b32_e32 v22, s42
 ; SI-NEXT:    v_mov_b32_e32 v23, s44
-; SI-NEXT:  .LBB41_5: ; %end
+; SI-NEXT:  .LBB41_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v23, 16, v23
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v22, 16, v22
@@ -18409,10 +18839,18 @@ define inreg <32 x half> @bitcast_v16f32_to_v32f16_scalar(<16 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_3
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB41_4
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; VI-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; VI-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -18429,10 +18867,8 @@ define inreg <32 x half> @bitcast_v16f32_to_v32f16_scalar(<16 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; VI-NEXT:    s_branch .LBB41_5
-; VI-NEXT:  .LBB41_3:
-; VI-NEXT:    s_branch .LBB41_2
-; VI-NEXT:  .LBB41_4:
+; VI-NEXT:    s_branch .LBB41_6
+; VI-NEXT:  .LBB41_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -18449,7 +18885,7 @@ define inreg <32 x half> @bitcast_v16f32_to_v32f16_scalar(<16 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB41_5: ; %end
+; VI-NEXT:  .LBB41_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v16, 0
 ; VI-NEXT:    v_readlane_b32 s31, v16, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -18470,10 +18906,18 @@ define inreg <32 x half> @bitcast_v16f32_to_v32f16_scalar(<16 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_4
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -18490,10 +18934,8 @@ define inreg <32 x half> @bitcast_v16f32_to_v32f16_scalar(<16 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; GFX9-NEXT:    s_branch .LBB41_5
-; GFX9-NEXT:  .LBB41_3:
-; GFX9-NEXT:    s_branch .LBB41_2
-; GFX9-NEXT:  .LBB41_4:
+; GFX9-NEXT:    s_branch .LBB41_6
+; GFX9-NEXT:  .LBB41_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -18510,7 +18952,7 @@ define inreg <32 x half> @bitcast_v16f32_to_v32f16_scalar(<16 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB41_5: ; %end
+; GFX9-NEXT:  .LBB41_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -18528,11 +18970,16 @@ define inreg <32 x half> @bitcast_v16f32_to_v32f16_scalar(<16 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_4
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB41_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v15, s27, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v14, s26, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v13, s25, 1.0
@@ -18550,8 +18997,6 @@ define inreg <32 x half> @bitcast_v16f32_to_v32f16_scalar(<16 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_3:
-; GFX11-NEXT:    s_branch .LBB41_2
 ; GFX11-NEXT:  .LBB41_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -19015,7 +19460,7 @@ define inreg <16 x float> @bitcast_v32f16_to_v16f32_scalar(<32 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s10, s8, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_3
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
@@ -19065,8 +19510,17 @@ define inreg <16 x float> @bitcast_v32f16_to_v16f32_scalar(<32 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB43_4
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s63
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s62
@@ -19195,11 +19649,8 @@ define inreg <16 x float> @bitcast_v32f16_to_v16f32_scalar(<32 x half> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v14, v15, v14
 ; SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v16
 ; SI-NEXT:    v_or_b32_e32 v15, v17, v15
-; SI-NEXT:    s_branch .LBB43_5
-; SI-NEXT:  .LBB43_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB43_2
-; SI-NEXT:  .LBB43_4:
+; SI-NEXT:    s_branch .LBB43_6
+; SI-NEXT:  .LBB43_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -19216,7 +19667,7 @@ define inreg <16 x float> @bitcast_v32f16_to_v16f32_scalar(<32 x half> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v13, s49
 ; SI-NEXT:    v_mov_b32_e32 v14, s50
 ; SI-NEXT:    v_mov_b32_e32 v15, s51
-; SI-NEXT:  .LBB43_5: ; %end
+; SI-NEXT:  .LBB43_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s51, v18, 7
 ; SI-NEXT:    v_readlane_b32 s50, v18, 6
 ; SI-NEXT:    v_readlane_b32 s49, v18, 5
@@ -19243,10 +19694,18 @@ define inreg <16 x float> @bitcast_v32f16_to_v16f32_scalar(<32 x half> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_3
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB43_4
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s31, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -19328,10 +19787,8 @@ define inreg <16 x float> @bitcast_v32f16_to_v16f32_scalar(<32 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v16
-; VI-NEXT:    s_branch .LBB43_5
-; VI-NEXT:  .LBB43_3:
-; VI-NEXT:    s_branch .LBB43_2
-; VI-NEXT:  .LBB43_4:
+; VI-NEXT:    s_branch .LBB43_6
+; VI-NEXT:  .LBB43_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -19348,7 +19805,7 @@ define inreg <16 x float> @bitcast_v32f16_to_v16f32_scalar(<32 x half> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB43_5: ; %end
+; VI-NEXT:  .LBB43_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v17, 0
 ; VI-NEXT:    v_readlane_b32 s31, v17, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -19369,10 +19826,18 @@ define inreg <16 x float> @bitcast_v32f16_to_v16f32_scalar(<32 x half> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v15, s31, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v14, s30, v0 op_sel_hi:[1,0]
@@ -19390,10 +19855,8 @@ define inreg <16 x float> @bitcast_v32f16_to_v16f32_scalar(<32 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB43_5
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:    s_branch .LBB43_6
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -19410,7 +19873,7 @@ define inreg <16 x float> @bitcast_v32f16_to_v16f32_scalar(<32 x half> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB43_5: ; %end
+; GFX9-NEXT:  .LBB43_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -19428,11 +19891,16 @@ define inreg <16 x float> @bitcast_v32f16_to_v16f32_scalar(<32 x half> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB43_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v15, 0x200, s27 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v14, 0x200, s26 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s25 op_sel_hi:[0,1]
@@ -19450,8 +19918,6 @@ define inreg <16 x float> @bitcast_v32f16_to_v16f32_scalar(<32 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_3:
-; GFX11-NEXT:    s_branch .LBB43_2
 ; GFX11-NEXT:  .LBB43_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -19792,7 +20258,7 @@ define inreg <32 x bfloat> @bitcast_v16f32_to_v32bf16_scalar(<16 x float> inreg
 ; SI-NEXT:    v_readfirstlane_b32 s6, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_3
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s8, s6, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s9, s6, 16
@@ -19826,58 +20292,10 @@ define inreg <32 x bfloat> @bitcast_v16f32_to_v32bf16_scalar(<16 x float> inreg
 ; SI-NEXT:    s_lshl_b32 s77, s17, 16
 ; SI-NEXT:    s_and_b32 s78, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s79, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB45_4
-; SI-NEXT:  .LBB45_2: ; %cmp.true
-; SI-NEXT:    v_add_f32_e64 v20, s21, 1.0
-; SI-NEXT:    v_add_f32_e64 v18, s22, 1.0
-; SI-NEXT:    v_add_f32_e64 v16, s23, 1.0
-; SI-NEXT:    v_add_f32_e64 v14, s24, 1.0
-; SI-NEXT:    v_add_f32_e64 v12, s25, 1.0
-; SI-NEXT:    v_add_f32_e64 v10, s26, 1.0
-; SI-NEXT:    v_add_f32_e64 v8, s27, 1.0
-; SI-NEXT:    v_add_f32_e64 v6, s28, 1.0
-; SI-NEXT:    v_add_f32_e64 v4, s29, 1.0
-; SI-NEXT:    v_add_f32_e64 v2, s7, 1.0
-; SI-NEXT:    v_add_f32_e64 v0, s6, 1.0
-; SI-NEXT:    v_add_f32_e64 v22, s20, 1.0
-; SI-NEXT:    v_add_f32_e64 v24, s19, 1.0
-; SI-NEXT:    v_add_f32_e64 v26, s18, 1.0
-; SI-NEXT:    v_add_f32_e64 v28, s17, 1.0
-; SI-NEXT:    v_add_f32_e64 v30, s16, 1.0
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v0
-; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
-; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v2
-; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
-; SI-NEXT:    v_and_b32_e32 v5, 0xffff0000, v4
-; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
-; SI-NEXT:    v_and_b32_e32 v7, 0xffff0000, v6
-; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
-; SI-NEXT:    v_and_b32_e32 v9, 0xffff0000, v8
-; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
-; SI-NEXT:    v_and_b32_e32 v11, 0xffff0000, v10
-; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
-; SI-NEXT:    v_and_b32_e32 v13, 0xffff0000, v12
-; SI-NEXT:    v_lshlrev_b32_e32 v12, 16, v12
-; SI-NEXT:    v_and_b32_e32 v15, 0xffff0000, v14
-; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
-; SI-NEXT:    v_and_b32_e32 v17, 0xffff0000, v16
-; SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v16
-; SI-NEXT:    v_and_b32_e32 v19, 0xffff0000, v18
-; SI-NEXT:    v_lshlrev_b32_e32 v18, 16, v18
-; SI-NEXT:    v_and_b32_e32 v21, 0xffff0000, v20
-; SI-NEXT:    v_lshlrev_b32_e32 v20, 16, v20
-; SI-NEXT:    v_and_b32_e32 v23, 0xffff0000, v22
-; SI-NEXT:    v_lshlrev_b32_e32 v22, 16, v22
-; SI-NEXT:    v_and_b32_e32 v25, 0xffff0000, v24
-; SI-NEXT:    v_lshlrev_b32_e32 v24, 16, v24
-; SI-NEXT:    v_and_b32_e32 v27, 0xffff0000, v26
-; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v26
-; SI-NEXT:    v_and_b32_e32 v29, 0xffff0000, v28
-; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v28
-; SI-NEXT:    v_and_b32_e32 v31, 0xffff0000, v30
-; SI-NEXT:    v_lshlrev_b32_e32 v30, 16, v30
-; SI-NEXT:    s_branch .LBB45_5
-; SI-NEXT:  .LBB45_3:
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
 ; SI-NEXT:    ; implicit-def: $sgpr79
 ; SI-NEXT:    ; implicit-def: $sgpr78
 ; SI-NEXT:    ; implicit-def: $sgpr77
@@ -19910,8 +20328,62 @@ define inreg <32 x bfloat> @bitcast_v16f32_to_v32bf16_scalar(<16 x float> inreg
 ; SI-NEXT:    ; implicit-def: $sgpr10
 ; SI-NEXT:    ; implicit-def: $sgpr9
 ; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB45_2
-; SI-NEXT:  .LBB45_4:
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_add_f32_e64 v20, s21, 1.0
+; SI-NEXT:    v_add_f32_e64 v18, s22, 1.0
+; SI-NEXT:    v_add_f32_e64 v16, s23, 1.0
+; SI-NEXT:    v_add_f32_e64 v14, s24, 1.0
+; SI-NEXT:    v_add_f32_e64 v12, s25, 1.0
+; SI-NEXT:    v_add_f32_e64 v10, s26, 1.0
+; SI-NEXT:    v_add_f32_e64 v8, s27, 1.0
+; SI-NEXT:    v_add_f32_e64 v6, s28, 1.0
+; SI-NEXT:    v_add_f32_e64 v4, s29, 1.0
+; SI-NEXT:    v_add_f32_e64 v2, s7, 1.0
+; SI-NEXT:    v_add_f32_e64 v0, s6, 1.0
+; SI-NEXT:    v_add_f32_e64 v22, s20, 1.0
+; SI-NEXT:    v_add_f32_e64 v24, s19, 1.0
+; SI-NEXT:    v_add_f32_e64 v26, s18, 1.0
+; SI-NEXT:    v_add_f32_e64 v28, s17, 1.0
+; SI-NEXT:    v_add_f32_e64 v30, s16, 1.0
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v0
+; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
+; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v2
+; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
+; SI-NEXT:    v_and_b32_e32 v5, 0xffff0000, v4
+; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
+; SI-NEXT:    v_and_b32_e32 v7, 0xffff0000, v6
+; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
+; SI-NEXT:    v_and_b32_e32 v9, 0xffff0000, v8
+; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
+; SI-NEXT:    v_and_b32_e32 v11, 0xffff0000, v10
+; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
+; SI-NEXT:    v_and_b32_e32 v13, 0xffff0000, v12
+; SI-NEXT:    v_lshlrev_b32_e32 v12, 16, v12
+; SI-NEXT:    v_and_b32_e32 v15, 0xffff0000, v14
+; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v14
+; SI-NEXT:    v_and_b32_e32 v17, 0xffff0000, v16
+; SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v16
+; SI-NEXT:    v_and_b32_e32 v19, 0xffff0000, v18
+; SI-NEXT:    v_lshlrev_b32_e32 v18, 16, v18
+; SI-NEXT:    v_and_b32_e32 v21, 0xffff0000, v20
+; SI-NEXT:    v_lshlrev_b32_e32 v20, 16, v20
+; SI-NEXT:    v_and_b32_e32 v23, 0xffff0000, v22
+; SI-NEXT:    v_lshlrev_b32_e32 v22, 16, v22
+; SI-NEXT:    v_and_b32_e32 v25, 0xffff0000, v24
+; SI-NEXT:    v_lshlrev_b32_e32 v24, 16, v24
+; SI-NEXT:    v_and_b32_e32 v27, 0xffff0000, v26
+; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v26
+; SI-NEXT:    v_and_b32_e32 v29, 0xffff0000, v28
+; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v28
+; SI-NEXT:    v_and_b32_e32 v31, 0xffff0000, v30
+; SI-NEXT:    v_lshlrev_b32_e32 v30, 16, v30
+; SI-NEXT:    s_branch .LBB45_6
+; SI-NEXT:  .LBB45_5:
 ; SI-NEXT:    v_mov_b32_e32 v30, s79
 ; SI-NEXT:    v_mov_b32_e32 v31, s78
 ; SI-NEXT:    v_mov_b32_e32 v28, s77
@@ -19944,7 +20416,7 @@ define inreg <32 x bfloat> @bitcast_v16f32_to_v32bf16_scalar(<16 x float> inreg
 ; SI-NEXT:    v_mov_b32_e32 v3, s10
 ; SI-NEXT:    v_mov_b32_e32 v0, s9
 ; SI-NEXT:    v_mov_b32_e32 v1, s8
-; SI-NEXT:  .LBB45_5: ; %end
+; SI-NEXT:  .LBB45_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v31, 1.0, v31
 ; SI-NEXT:    v_lshrrev_b32_e32 v31, 16, v31
 ; SI-NEXT:    v_mul_f32_e32 v30, 1.0, v30
@@ -20023,10 +20495,18 @@ define inreg <32 x bfloat> @bitcast_v16f32_to_v32bf16_scalar(<16 x float> inreg
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_3
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB45_4
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; VI-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; VI-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -20043,10 +20523,8 @@ define inreg <32 x bfloat> @bitcast_v16f32_to_v32bf16_scalar(<16 x float> inreg
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; VI-NEXT:    s_branch .LBB45_5
-; VI-NEXT:  .LBB45_3:
-; VI-NEXT:    s_branch .LBB45_2
-; VI-NEXT:  .LBB45_4:
+; VI-NEXT:    s_branch .LBB45_6
+; VI-NEXT:  .LBB45_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -20063,7 +20541,7 @@ define inreg <32 x bfloat> @bitcast_v16f32_to_v32bf16_scalar(<16 x float> inreg
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB45_5: ; %end
+; VI-NEXT:  .LBB45_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v16, 0
 ; VI-NEXT:    v_readlane_b32 s31, v16, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -20084,10 +20562,18 @@ define inreg <32 x bfloat> @bitcast_v16f32_to_v32bf16_scalar(<16 x float> inreg
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_4
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v15, s31, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v14, s30, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v13, s29, 1.0
@@ -20104,10 +20590,8 @@ define inreg <32 x bfloat> @bitcast_v16f32_to_v32bf16_scalar(<16 x float> inreg
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
-; GFX9-NEXT:    s_branch .LBB45_5
-; GFX9-NEXT:  .LBB45_3:
-; GFX9-NEXT:    s_branch .LBB45_2
-; GFX9-NEXT:  .LBB45_4:
+; GFX9-NEXT:    s_branch .LBB45_6
+; GFX9-NEXT:  .LBB45_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -20124,7 +20608,7 @@ define inreg <32 x bfloat> @bitcast_v16f32_to_v32bf16_scalar(<16 x float> inreg
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB45_5: ; %end
+; GFX9-NEXT:  .LBB45_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -20142,11 +20626,16 @@ define inreg <32 x bfloat> @bitcast_v16f32_to_v32bf16_scalar(<16 x float> inreg
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_4
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB45_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v15, s27, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v14, s26, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v13, s25, 1.0
@@ -20164,8 +20653,6 @@ define inreg <32 x bfloat> @bitcast_v16f32_to_v32bf16_scalar(<16 x float> inreg
 ; GFX11-NEXT:    v_add_f32_e64 v1, s13, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s12, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_3:
-; GFX11-NEXT:    s_branch .LBB45_2
 ; GFX11-NEXT:  .LBB45_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -21688,7 +22175,7 @@ define inreg <16 x float> @bitcast_v32bf16_to_v16f32_scalar(<32 x bfloat> inreg
 ; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s5
 ; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s44
 ; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s42
-; SI-NEXT:    s_cbranch_scc0 .LBB47_4
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v53, 16, v41
 ; SI-NEXT:    v_lshrrev_b32_e32 v49, 16, v63
@@ -21724,8 +22211,17 @@ define inreg <16 x float> @bitcast_v32bf16_to_v16f32_scalar(<32 x bfloat> inreg
 ; SI-NEXT:    v_mov_b32_e32 v20, v16
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[17:18], 16
 ; SI-NEXT:    v_mov_b32_e32 v16, v20
-; SI-NEXT:    s_cbranch_execnz .LBB47_3
-; SI-NEXT:  .LBB47_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v41
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v52
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -21822,7 +22318,7 @@ define inreg <16 x float> @bitcast_v32bf16_to_v16f32_scalar(<32 x bfloat> inreg
 ; SI-NEXT:    v_add_f32_e32 v15, 0x40c00000, v15
 ; SI-NEXT:    v_lshrrev_b32_e32 v16, 16, v16
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[15:16], 16
-; SI-NEXT:  .LBB47_3: ; %end
+; SI-NEXT:  .LBB47_5: ; %end
 ; SI-NEXT:    buffer_load_dword v63, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v62, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v61, off, s[0:3], s32 offset:8 ; 4-byte Folded Reload
@@ -21841,9 +22337,6 @@ define inreg <16 x float> @bitcast_v32bf16_to_v16f32_scalar(<32 x bfloat> inreg
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:60 ; 4-byte Folded Reload
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB47_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; SI-NEXT:    s_branch .LBB47_2
 ;
 ; VI-LABEL: bitcast_v32bf16_to_v16f32_scalar:
 ; VI:       ; %bb.0:
@@ -21857,10 +22350,18 @@ define inreg <16 x float> @bitcast_v32bf16_to_v16f32_scalar(<32 x bfloat> inreg
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v16, 0x40c00000
 ; VI-NEXT:    s_lshl_b32 s4, s30, 16
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v16
@@ -22158,10 +22659,8 @@ define inreg <16 x float> @bitcast_v32bf16_to_v16f32_scalar(<32 x bfloat> inreg
 ; VI-NEXT:    v_lshrrev_b64 v[16:17], 16, v[17:18]
 ; VI-NEXT:    v_mov_b32_e32 v13, v15
 ; VI-NEXT:    v_mov_b32_e32 v15, v16
-; VI-NEXT:    s_branch .LBB47_5
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:    s_branch .LBB47_6
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -22178,7 +22677,7 @@ define inreg <16 x float> @bitcast_v32bf16_to_v16f32_scalar(<32 x bfloat> inreg
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB47_5: ; %end
+; VI-NEXT:  .LBB47_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v20, 0
 ; VI-NEXT:    v_readlane_b32 s31, v20, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -22199,10 +22698,18 @@ define inreg <16 x float> @bitcast_v32bf16_to_v16f32_scalar(<32 x bfloat> inreg
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s31, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -22509,10 +23016,8 @@ define inreg <16 x float> @bitcast_v32bf16_to_v16f32_scalar(<32 x bfloat> inreg
 ; GFX9-NEXT:    v_cndmask_b32_e32 v17, v18, v19, vcc
 ; GFX9-NEXT:    v_and_b32_sdwa v16, v16, v17 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v0, 16, v16
-; GFX9-NEXT:    s_branch .LBB47_5
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:    s_branch .LBB47_6
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -22529,7 +23034,7 @@ define inreg <16 x float> @bitcast_v32bf16_to_v16f32_scalar(<32 x bfloat> inreg
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB47_5: ; %end
+; GFX9-NEXT:  .LBB47_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v20, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v20, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -22547,11 +23052,16 @@ define inreg <16 x float> @bitcast_v32bf16_to_v16f32_scalar(<32 x bfloat> inreg
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-TRUE16-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:  .LBB47_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s0, s27, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s27, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -22861,8 +23371,6 @@ define inreg <16 x float> @bitcast_v32bf16_to_v16f32_scalar(<32 x bfloat> inreg
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v18
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v17.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB47_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB47_2
 ; GFX11-TRUE16-NEXT:  .LBB47_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -22883,11 +23391,16 @@ define inreg <16 x float> @bitcast_v32bf16_to_v16f32_scalar(<32 x bfloat> inreg
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-FAKE16-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:  .LBB47_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_and_b32 s1, s27, 0xffff0000
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s27, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s1
@@ -23216,8 +23729,6 @@ define inreg <16 x float> @bitcast_v32bf16_to_v16f32_scalar(<32 x bfloat> inreg
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v2, v16, 16, v21
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v20, 16, v17
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB47_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB47_2
 ; GFX11-FAKE16-NEXT:  .LBB47_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -24735,14 +25246,14 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v40, s30, 28
 ; SI-NEXT:    v_writelane_b32 v40, s31, 29
 ; SI-NEXT:    v_readfirstlane_b32 s4, v3
-; SI-NEXT:    v_readfirstlane_b32 s37, v2
+; SI-NEXT:    v_readfirstlane_b32 s35, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_readfirstlane_b32 s36, v1
-; SI-NEXT:    s_cbranch_scc0 .LBB49_3
+; SI-NEXT:    v_readfirstlane_b32 s34, v1
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s82, s37, 24
-; SI-NEXT:    s_lshr_b32 s84, s37, 16
-; SI-NEXT:    s_lshr_b32 s85, s37, 8
+; SI-NEXT:    s_lshr_b32 s82, s35, 24
+; SI-NEXT:    s_lshr_b32 s84, s35, 16
+; SI-NEXT:    s_lshr_b32 s85, s35, 8
 ; SI-NEXT:    s_lshr_b32 s71, s29, 24
 ; SI-NEXT:    s_lshr_b32 s81, s29, 16
 ; SI-NEXT:    s_lshr_b32 s83, s29, 8
@@ -24764,9 +25275,9 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s38, s17, 24
 ; SI-NEXT:    s_lshr_b32 s39, s17, 16
 ; SI-NEXT:    s_lshr_b32 s49, s17, 8
-; SI-NEXT:    s_lshr_b64 s[4:5], s[36:37], 24
-; SI-NEXT:    s_lshr_b64 s[6:7], s[36:37], 16
-; SI-NEXT:    s_lshr_b64 s[8:9], s[36:37], 8
+; SI-NEXT:    s_lshr_b64 s[4:5], s[34:35], 24
+; SI-NEXT:    s_lshr_b64 s[6:7], s[34:35], 16
+; SI-NEXT:    s_lshr_b64 s[8:9], s[34:35], 8
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[28:29], 24
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[28:29], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[28:29], 8
@@ -24786,10 +25297,66 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 8
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[16:17], 24
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB49_4
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 8
+; SI-NEXT:    s_mov_b64 s[36:37], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[36:37], -1
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:    ; implicit-def: $sgpr65
+; SI-NEXT:    ; implicit-def: $sgpr80
+; SI-NEXT:    ; implicit-def: $sgpr70
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $sgpr83
+; SI-NEXT:    ; implicit-def: $sgpr81
+; SI-NEXT:    ; implicit-def: $sgpr71
+; SI-NEXT:    ; implicit-def: $sgpr85
+; SI-NEXT:    ; implicit-def: $sgpr84
+; SI-NEXT:    ; implicit-def: $sgpr82
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v20, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v22, s16, 1.0
 ; SI-NEXT:    v_add_f32_e64 v16, s19, 1.0
@@ -24804,8 +25371,8 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; SI-NEXT:    v_add_f32_e64 v6, s26, 1.0
 ; SI-NEXT:    v_add_f32_e64 v3, s29, 1.0
 ; SI-NEXT:    v_add_f32_e64 v4, s28, 1.0
-; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
-; SI-NEXT:    v_add_f32_e64 v2, s36, 1.0
+; SI-NEXT:    v_add_f32_e64 v1, s35, 1.0
+; SI-NEXT:    v_add_f32_e64 v2, s34, 1.0
 ; SI-NEXT:    v_readfirstlane_b32 s16, v22
 ; SI-NEXT:    v_readfirstlane_b32 s17, v20
 ; SI-NEXT:    v_readfirstlane_b32 s18, v18
@@ -24844,8 +25411,8 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 8
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[16:17], 24
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 8
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 8
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 24, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v14, 8, v1
@@ -24870,58 +25437,8 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; SI-NEXT:    v_lshrrev_b32_e32 v38, 24, v20
 ; SI-NEXT:    v_lshrrev_b32_e32 v39, 16, v20
 ; SI-NEXT:    v_lshrrev_b32_e32 v48, 8, v20
-; SI-NEXT:    s_branch .LBB49_5
-; SI-NEXT:  .LBB49_3:
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr69
-; SI-NEXT:    ; implicit-def: $sgpr67
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr80
-; SI-NEXT:    ; implicit-def: $sgpr70
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr83
-; SI-NEXT:    ; implicit-def: $sgpr81
-; SI-NEXT:    ; implicit-def: $sgpr71
-; SI-NEXT:    ; implicit-def: $sgpr85
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    ; implicit-def: $sgpr82
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_branch .LBB49_2
-; SI-NEXT:  .LBB49_4:
+; SI-NEXT:    s_branch .LBB49_6
+; SI-NEXT:  .LBB49_5:
 ; SI-NEXT:    v_mov_b32_e32 v22, s16
 ; SI-NEXT:    v_mov_b32_e32 v20, s17
 ; SI-NEXT:    v_mov_b32_e32 v18, s18
@@ -24936,8 +25453,8 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v5, s27
 ; SI-NEXT:    v_mov_b32_e32 v4, s28
 ; SI-NEXT:    v_mov_b32_e32 v3, s29
-; SI-NEXT:    v_mov_b32_e32 v2, s36
-; SI-NEXT:    v_mov_b32_e32 v1, s37
+; SI-NEXT:    v_mov_b32_e32 v2, s34
+; SI-NEXT:    v_mov_b32_e32 v1, s35
 ; SI-NEXT:    v_mov_b32_e32 v48, s49
 ; SI-NEXT:    v_mov_b32_e32 v39, s39
 ; SI-NEXT:    v_mov_b32_e32 v38, s38
@@ -24962,11 +25479,11 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v14, s85
 ; SI-NEXT:    v_mov_b32_e32 v13, s84
 ; SI-NEXT:    v_mov_b32_e32 v12, s82
-; SI-NEXT:  .LBB49_5: ; %end
+; SI-NEXT:  .LBB49_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v22, 0xff, v22
-; SI-NEXT:    s_lshl_b32 s5, s34, 8
+; SI-NEXT:    s_lshl_b32 s5, s30, 8
 ; SI-NEXT:    v_or_b32_e32 v22, s5, v22
-; SI-NEXT:    s_and_b32 s5, s30, 0xff
+; SI-NEXT:    s_and_b32 s5, vcc_lo, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_lshl_b32 s7, s94, 24
 ; SI-NEXT:    v_and_b32_e32 v22, 0xffff, v22
@@ -25226,15 +25743,13 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; VI-NEXT:    v_writelane_b32 v63, s55, 13
 ; VI-NEXT:    v_writelane_b32 v63, s64, 14
 ; VI-NEXT:    v_writelane_b32 v63, s65, 15
-; VI-NEXT:    v_writelane_b32 v63, s66, 16
-; VI-NEXT:    v_writelane_b32 v63, s67, 17
-; VI-NEXT:    v_writelane_b32 v63, s30, 18
-; VI-NEXT:    v_writelane_b32 v63, s31, 19
+; VI-NEXT:    v_writelane_b32 v63, s30, 16
+; VI-NEXT:    v_writelane_b32 v63, s31, 17
 ; VI-NEXT:    v_readfirstlane_b32 s4, v3
 ; VI-NEXT:    v_readfirstlane_b32 s5, v2
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v1
-; VI-NEXT:    s_cbranch_scc0 .LBB49_3
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s56, s5, 24
 ; VI-NEXT:    s_lshr_b32 s57, s5, 16
@@ -25256,26 +25771,26 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s90, s25, 8
 ; VI-NEXT:    s_lshr_b32 s89, s24, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 8
-; VI-NEXT:    s_lshr_b32 s30, s23, 24
-; VI-NEXT:    s_lshr_b32 s31, s23, 16
-; VI-NEXT:    s_lshr_b32 s35, s23, 8
-; VI-NEXT:    s_lshr_b32 s34, s22, 16
-; VI-NEXT:    s_lshr_b32 s36, s22, 8
-; VI-NEXT:    s_lshr_b32 s37, s21, 24
-; VI-NEXT:    s_lshr_b32 s38, s21, 16
-; VI-NEXT:    s_lshr_b32 s48, s21, 8
-; VI-NEXT:    s_lshr_b32 s39, s20, 16
-; VI-NEXT:    s_lshr_b32 s49, s20, 8
-; VI-NEXT:    s_lshr_b32 s50, s19, 24
-; VI-NEXT:    s_lshr_b32 s51, s19, 16
-; VI-NEXT:    s_lshr_b32 s53, s19, 8
-; VI-NEXT:    s_lshr_b32 s52, s18, 16
-; VI-NEXT:    s_lshr_b32 s54, s18, 8
-; VI-NEXT:    s_lshr_b32 s55, s17, 24
-; VI-NEXT:    s_lshr_b32 s64, s17, 16
-; VI-NEXT:    s_lshr_b32 s66, s17, 8
-; VI-NEXT:    s_lshr_b32 s65, s16, 16
-; VI-NEXT:    s_lshr_b32 s67, s16, 8
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 24
+; VI-NEXT:    s_lshr_b32 vcc_hi, s23, 16
+; VI-NEXT:    s_lshr_b32 s31, s23, 8
+; VI-NEXT:    s_lshr_b32 s30, s22, 16
+; VI-NEXT:    s_lshr_b32 s34, s22, 8
+; VI-NEXT:    s_lshr_b32 s35, s21, 24
+; VI-NEXT:    s_lshr_b32 s36, s21, 16
+; VI-NEXT:    s_lshr_b32 s38, s21, 8
+; VI-NEXT:    s_lshr_b32 s37, s20, 16
+; VI-NEXT:    s_lshr_b32 s39, s20, 8
+; VI-NEXT:    s_lshr_b32 s48, s19, 24
+; VI-NEXT:    s_lshr_b32 s49, s19, 16
+; VI-NEXT:    s_lshr_b32 s51, s19, 8
+; VI-NEXT:    s_lshr_b32 s50, s18, 16
+; VI-NEXT:    s_lshr_b32 s52, s18, 8
+; VI-NEXT:    s_lshr_b32 s53, s17, 24
+; VI-NEXT:    s_lshr_b32 s54, s17, 16
+; VI-NEXT:    s_lshr_b32 s64, s17, 8
+; VI-NEXT:    s_lshr_b32 s55, s16, 16
+; VI-NEXT:    s_lshr_b32 s65, s16, 8
 ; VI-NEXT:    s_lshr_b64 s[44:45], s[4:5], 24
 ; VI-NEXT:    s_lshr_b64 s[42:43], s[28:29], 24
 ; VI-NEXT:    s_lshr_b64 s[40:41], s[26:27], 24
@@ -25284,8 +25799,64 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; VI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB49_4
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[46:47], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[46:47], -1
+; VI-NEXT:    ; implicit-def: $sgpr65
+; VI-NEXT:    ; implicit-def: $sgpr55
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr64
+; VI-NEXT:    ; implicit-def: $sgpr54
+; VI-NEXT:    ; implicit-def: $sgpr53
+; VI-NEXT:    ; implicit-def: $sgpr52
+; VI-NEXT:    ; implicit-def: $sgpr50
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr51
+; VI-NEXT:    ; implicit-def: $sgpr49
+; VI-NEXT:    ; implicit-def: $sgpr48
+; VI-NEXT:    ; implicit-def: $sgpr39
+; VI-NEXT:    ; implicit-def: $sgpr37
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr38
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr35
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; VI-NEXT:    s_cselect_b32 s7, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s7, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v6, s27, 1.0
 ; VI-NEXT:    v_add_f32_e64 v5, s26, 1.0
 ; VI-NEXT:    v_add_f32_e64 v2, s5, 1.0
@@ -25354,58 +25925,8 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; VI-NEXT:    v_lshrrev_b32_e32 v62, 8, v16
 ; VI-NEXT:    v_lshrrev_b32_e32 v18, 16, v15
 ; VI-NEXT:    v_lshrrev_b32_e32 v17, 8, v15
-; VI-NEXT:    s_branch .LBB49_5
-; VI-NEXT:  .LBB49_3:
-; VI-NEXT:    ; implicit-def: $sgpr67
-; VI-NEXT:    ; implicit-def: $sgpr65
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr66
-; VI-NEXT:    ; implicit-def: $sgpr64
-; VI-NEXT:    ; implicit-def: $sgpr55
-; VI-NEXT:    ; implicit-def: $sgpr54
-; VI-NEXT:    ; implicit-def: $sgpr52
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr53
-; VI-NEXT:    ; implicit-def: $sgpr51
-; VI-NEXT:    ; implicit-def: $sgpr50
-; VI-NEXT:    ; implicit-def: $sgpr49
-; VI-NEXT:    ; implicit-def: $sgpr39
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr48
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr37
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    s_branch .LBB49_2
-; VI-NEXT:  .LBB49_4:
+; VI-NEXT:    s_branch .LBB49_6
+; VI-NEXT:  .LBB49_5:
 ; VI-NEXT:    v_mov_b32_e32 v19, s44
 ; VI-NEXT:    buffer_store_dword v19, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v20, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
@@ -25426,26 +25947,26 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v4, s29
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    v_mov_b32_e32 v2, s5
-; VI-NEXT:    v_mov_b32_e32 v17, s67
-; VI-NEXT:    v_mov_b32_e32 v18, s65
-; VI-NEXT:    v_mov_b32_e32 v62, s66
-; VI-NEXT:    v_mov_b32_e32 v60, s64
-; VI-NEXT:    v_mov_b32_e32 v61, s55
-; VI-NEXT:    v_mov_b32_e32 v58, s54
-; VI-NEXT:    v_mov_b32_e32 v59, s52
-; VI-NEXT:    v_mov_b32_e32 v57, s53
-; VI-NEXT:    v_mov_b32_e32 v47, s51
-; VI-NEXT:    v_mov_b32_e32 v56, s50
-; VI-NEXT:    v_mov_b32_e32 v46, s49
-; VI-NEXT:    v_mov_b32_e32 v45, s39
-; VI-NEXT:    v_mov_b32_e32 v44, s48
-; VI-NEXT:    v_mov_b32_e32 v42, s38
-; VI-NEXT:    v_mov_b32_e32 v43, s37
-; VI-NEXT:    v_mov_b32_e32 v41, s36
-; VI-NEXT:    v_mov_b32_e32 v40, s34
-; VI-NEXT:    v_mov_b32_e32 v55, s35
-; VI-NEXT:    v_mov_b32_e32 v53, s31
-; VI-NEXT:    v_mov_b32_e32 v54, s30
+; VI-NEXT:    v_mov_b32_e32 v17, s65
+; VI-NEXT:    v_mov_b32_e32 v18, s55
+; VI-NEXT:    v_mov_b32_e32 v62, s64
+; VI-NEXT:    v_mov_b32_e32 v60, s54
+; VI-NEXT:    v_mov_b32_e32 v61, s53
+; VI-NEXT:    v_mov_b32_e32 v58, s52
+; VI-NEXT:    v_mov_b32_e32 v59, s50
+; VI-NEXT:    v_mov_b32_e32 v57, s51
+; VI-NEXT:    v_mov_b32_e32 v47, s49
+; VI-NEXT:    v_mov_b32_e32 v56, s48
+; VI-NEXT:    v_mov_b32_e32 v46, s39
+; VI-NEXT:    v_mov_b32_e32 v45, s37
+; VI-NEXT:    v_mov_b32_e32 v44, s38
+; VI-NEXT:    v_mov_b32_e32 v42, s36
+; VI-NEXT:    v_mov_b32_e32 v43, s35
+; VI-NEXT:    v_mov_b32_e32 v41, s34
+; VI-NEXT:    v_mov_b32_e32 v40, s30
+; VI-NEXT:    v_mov_b32_e32 v55, s31
+; VI-NEXT:    v_mov_b32_e32 v53, vcc_hi
+; VI-NEXT:    v_mov_b32_e32 v54, vcc_lo
 ; VI-NEXT:    v_mov_b32_e32 v52, s91
 ; VI-NEXT:    v_mov_b32_e32 v51, s89
 ; VI-NEXT:    v_mov_b32_e32 v50, s90
@@ -25474,7 +25995,7 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; VI-NEXT:    buffer_store_dword v20, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
 ; VI-NEXT:    v_mov_b32_e32 v19, s40
 ; VI-NEXT:    v_mov_b32_e32 v20, s14
-; VI-NEXT:  .LBB49_5: ; %end
+; VI-NEXT:  .LBB49_6: ; %end
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; VI-NEXT:    v_perm_b32 v18, v18, v24, s4
 ; VI-NEXT:    v_perm_b32 v15, v15, v17, s4
@@ -25551,10 +26072,8 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; VI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:72 ; 4-byte Folded Reload
 ; VI-NEXT:    v_perm_b32 v3, v3, v34, s4
 ; VI-NEXT:    v_perm_b32 v1, v1, v29, s4
-; VI-NEXT:    v_readlane_b32 s30, v63, 18
-; VI-NEXT:    v_readlane_b32 s31, v63, 19
-; VI-NEXT:    v_readlane_b32 s67, v63, 17
-; VI-NEXT:    v_readlane_b32 s66, v63, 16
+; VI-NEXT:    v_readlane_b32 s30, v63, 16
+; VI-NEXT:    v_readlane_b32 s31, v63, 17
 ; VI-NEXT:    v_readlane_b32 s65, v63, 15
 ; VI-NEXT:    v_readlane_b32 s64, v63, 14
 ; VI-NEXT:    v_readlane_b32 s55, v63, 13
@@ -25651,15 +26170,13 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; GFX9-NEXT:    v_writelane_b32 v63, s51, 9
 ; GFX9-NEXT:    v_writelane_b32 v63, s52, 10
 ; GFX9-NEXT:    v_writelane_b32 v63, s53, 11
-; GFX9-NEXT:    v_writelane_b32 v63, s54, 12
-; GFX9-NEXT:    v_writelane_b32 v63, s55, 13
-; GFX9-NEXT:    v_writelane_b32 v63, s30, 14
-; GFX9-NEXT:    v_writelane_b32 v63, s31, 15
+; GFX9-NEXT:    v_writelane_b32 v63, s30, 12
+; GFX9-NEXT:    v_writelane_b32 v63, s31, 13
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v3
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v2
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v1
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s56, s5, 24
 ; GFX9-NEXT:    s_lshr_b32 s57, s5, 16
@@ -25685,22 +26202,22 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s93, s23, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s23, 8
 ; GFX9-NEXT:    s_lshr_b32 s94, s22, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s22, 8
-; GFX9-NEXT:    s_lshr_b32 s31, s21, 24
-; GFX9-NEXT:    s_lshr_b32 s34, s21, 16
-; GFX9-NEXT:    s_lshr_b32 s36, s21, 8
-; GFX9-NEXT:    s_lshr_b32 s35, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s37, s20, 8
-; GFX9-NEXT:    s_lshr_b32 s38, s19, 24
-; GFX9-NEXT:    s_lshr_b32 s39, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s49, s19, 8
-; GFX9-NEXT:    s_lshr_b32 s48, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s50, s18, 8
-; GFX9-NEXT:    s_lshr_b32 s51, s17, 24
-; GFX9-NEXT:    s_lshr_b32 s52, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s54, s17, 8
-; GFX9-NEXT:    s_lshr_b32 s53, s16, 16
-; GFX9-NEXT:    s_lshr_b32 s55, s16, 8
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s22, 8
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s21, 24
+; GFX9-NEXT:    s_lshr_b32 s30, s21, 16
+; GFX9-NEXT:    s_lshr_b32 s34, s21, 8
+; GFX9-NEXT:    s_lshr_b32 s31, s20, 16
+; GFX9-NEXT:    s_lshr_b32 s35, s20, 8
+; GFX9-NEXT:    s_lshr_b32 s36, s19, 24
+; GFX9-NEXT:    s_lshr_b32 s37, s19, 16
+; GFX9-NEXT:    s_lshr_b32 s39, s19, 8
+; GFX9-NEXT:    s_lshr_b32 s38, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s48, s18, 8
+; GFX9-NEXT:    s_lshr_b32 s49, s17, 24
+; GFX9-NEXT:    s_lshr_b32 s50, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s52, s17, 8
+; GFX9-NEXT:    s_lshr_b32 s51, s16, 16
+; GFX9-NEXT:    s_lshr_b32 s53, s16, 8
 ; GFX9-NEXT:    s_lshr_b64 s[44:45], s[4:5], 24
 ; GFX9-NEXT:    s_lshr_b64 s[42:43], s[28:29], 24
 ; GFX9-NEXT:    s_lshr_b64 s[40:41], s[26:27], 24
@@ -25709,8 +26226,64 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b64 s[10:11], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[46:47], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[46:47], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr53
+; GFX9-NEXT:    ; implicit-def: $sgpr51
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr52
+; GFX9-NEXT:    ; implicit-def: $sgpr50
+; GFX9-NEXT:    ; implicit-def: $sgpr49
+; GFX9-NEXT:    ; implicit-def: $sgpr48
+; GFX9-NEXT:    ; implicit-def: $sgpr38
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr39
+; GFX9-NEXT:    ; implicit-def: $sgpr37
+; GFX9-NEXT:    ; implicit-def: $sgpr36
+; GFX9-NEXT:    ; implicit-def: $sgpr35
+; GFX9-NEXT:    ; implicit-def: $sgpr31
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr34
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_hi
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; GFX9-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v6, s27, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v5, s26, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v2, s5, 1.0
@@ -25781,58 +26354,8 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v62, 8, v19
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v16, 16, v18
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v15, 8, v18
-; GFX9-NEXT:    s_branch .LBB49_5
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr55
-; GFX9-NEXT:    ; implicit-def: $sgpr53
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr54
-; GFX9-NEXT:    ; implicit-def: $sgpr52
-; GFX9-NEXT:    ; implicit-def: $sgpr51
-; GFX9-NEXT:    ; implicit-def: $sgpr50
-; GFX9-NEXT:    ; implicit-def: $sgpr48
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr49
-; GFX9-NEXT:    ; implicit-def: $sgpr39
-; GFX9-NEXT:    ; implicit-def: $sgpr38
-; GFX9-NEXT:    ; implicit-def: $sgpr37
-; GFX9-NEXT:    ; implicit-def: $sgpr35
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr36
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr31
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:    s_branch .LBB49_6
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s44
 ; GFX9-NEXT:    buffer_store_dword v20, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
@@ -25854,22 +26377,22 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s4
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s5
-; GFX9-NEXT:    v_mov_b32_e32 v15, s55
-; GFX9-NEXT:    v_mov_b32_e32 v16, s53
-; GFX9-NEXT:    v_mov_b32_e32 v62, s54
-; GFX9-NEXT:    v_mov_b32_e32 v59, s52
-; GFX9-NEXT:    v_mov_b32_e32 v60, s51
-; GFX9-NEXT:    v_mov_b32_e32 v58, s50
-; GFX9-NEXT:    v_mov_b32_e32 v61, s48
-; GFX9-NEXT:    v_mov_b32_e32 v57, s49
-; GFX9-NEXT:    v_mov_b32_e32 v47, s39
-; GFX9-NEXT:    v_mov_b32_e32 v56, s38
-; GFX9-NEXT:    v_mov_b32_e32 v46, s37
-; GFX9-NEXT:    v_mov_b32_e32 v45, s35
-; GFX9-NEXT:    v_mov_b32_e32 v44, s36
-; GFX9-NEXT:    v_mov_b32_e32 v42, s34
-; GFX9-NEXT:    v_mov_b32_e32 v43, s31
-; GFX9-NEXT:    v_mov_b32_e32 v41, s30
+; GFX9-NEXT:    v_mov_b32_e32 v15, s53
+; GFX9-NEXT:    v_mov_b32_e32 v16, s51
+; GFX9-NEXT:    v_mov_b32_e32 v62, s52
+; GFX9-NEXT:    v_mov_b32_e32 v59, s50
+; GFX9-NEXT:    v_mov_b32_e32 v60, s49
+; GFX9-NEXT:    v_mov_b32_e32 v58, s48
+; GFX9-NEXT:    v_mov_b32_e32 v61, s38
+; GFX9-NEXT:    v_mov_b32_e32 v57, s39
+; GFX9-NEXT:    v_mov_b32_e32 v47, s37
+; GFX9-NEXT:    v_mov_b32_e32 v56, s36
+; GFX9-NEXT:    v_mov_b32_e32 v46, s35
+; GFX9-NEXT:    v_mov_b32_e32 v45, s31
+; GFX9-NEXT:    v_mov_b32_e32 v44, s34
+; GFX9-NEXT:    v_mov_b32_e32 v42, s30
+; GFX9-NEXT:    v_mov_b32_e32 v43, vcc_hi
+; GFX9-NEXT:    v_mov_b32_e32 v41, vcc_lo
 ; GFX9-NEXT:    v_mov_b32_e32 v40, s94
 ; GFX9-NEXT:    v_mov_b32_e32 v55, s95
 ; GFX9-NEXT:    v_mov_b32_e32 v53, s93
@@ -25903,7 +26426,7 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; GFX9-NEXT:    buffer_store_dword v21, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s40
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s14
-; GFX9-NEXT:  .LBB49_5: ; %end
+; GFX9-NEXT:  .LBB49_6: ; %end
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; GFX9-NEXT:    v_perm_b32 v16, v16, v25, s4
 ; GFX9-NEXT:    v_perm_b32 v15, v18, v15, s4
@@ -25970,10 +26493,8 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; GFX9-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:72 ; 4-byte Folded Reload
 ; GFX9-NEXT:    v_perm_b32 v3, v3, v34, s4
 ; GFX9-NEXT:    v_perm_b32 v1, v1, v29, s4
-; GFX9-NEXT:    v_readlane_b32 s30, v63, 14
-; GFX9-NEXT:    v_readlane_b32 s31, v63, 15
-; GFX9-NEXT:    v_readlane_b32 s55, v63, 13
-; GFX9-NEXT:    v_readlane_b32 s54, v63, 12
+; GFX9-NEXT:    v_readlane_b32 s30, v63, 12
+; GFX9-NEXT:    v_readlane_b32 s31, v63, 13
 ; GFX9-NEXT:    v_readlane_b32 s53, v63, 11
 ; GFX9-NEXT:    v_readlane_b32 s52, v63, 10
 ; GFX9-NEXT:    v_readlane_b32 s51, v63, 9
@@ -26043,12 +26564,11 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; GFX11-NEXT:    v_writelane_b32 v40, s38, 4
 ; GFX11-NEXT:    v_writelane_b32 v40, s39, 5
 ; GFX11-NEXT:    v_writelane_b32 v40, s48, 6
-; GFX11-NEXT:    v_writelane_b32 v40, s49, 7
-; GFX11-NEXT:    v_writelane_b32 v40, s30, 8
-; GFX11-NEXT:    v_writelane_b32 v40, s31, 9
+; GFX11-NEXT:    v_writelane_b32 v40, s30, 7
+; GFX11-NEXT:    v_writelane_b32 v40, s31, 8
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s43, s27, 24
 ; GFX11-NEXT:    s_lshr_b32 s44, s27, 16
@@ -26079,17 +26599,17 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s93, s17, 16
 ; GFX11-NEXT:    s_lshr_b32 s95, s17, 8
 ; GFX11-NEXT:    s_lshr_b32 s94, s16, 16
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s16, 8
-; GFX11-NEXT:    s_lshr_b32 s30, s3, 24
-; GFX11-NEXT:    s_lshr_b32 s31, s3, 16
-; GFX11-NEXT:    s_lshr_b32 s35, s3, 8
-; GFX11-NEXT:    s_lshr_b32 s34, s2, 16
-; GFX11-NEXT:    s_lshr_b32 s36, s2, 8
-; GFX11-NEXT:    s_lshr_b32 s37, s1, 24
-; GFX11-NEXT:    s_lshr_b32 s38, s1, 16
-; GFX11-NEXT:    s_lshr_b32 s48, s1, 8
-; GFX11-NEXT:    s_lshr_b32 s39, s0, 16
-; GFX11-NEXT:    s_lshr_b32 s49, s0, 8
+; GFX11-NEXT:    s_lshr_b32 vcc_lo, s16, 8
+; GFX11-NEXT:    s_lshr_b32 vcc_hi, s3, 24
+; GFX11-NEXT:    s_lshr_b32 s30, s3, 16
+; GFX11-NEXT:    s_lshr_b32 s34, s3, 8
+; GFX11-NEXT:    s_lshr_b32 s31, s2, 16
+; GFX11-NEXT:    s_lshr_b32 s35, s2, 8
+; GFX11-NEXT:    s_lshr_b32 s36, s1, 24
+; GFX11-NEXT:    s_lshr_b32 s37, s1, 16
+; GFX11-NEXT:    s_lshr_b32 s39, s1, 8
+; GFX11-NEXT:    s_lshr_b32 s38, s0, 16
+; GFX11-NEXT:    s_lshr_b32 s48, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[40:41], s[26:27], 24
 ; GFX11-NEXT:    s_lshr_b64 s[28:29], s[24:25], 24
 ; GFX11-NEXT:    s_lshr_b64 s[14:15], s[22:23], 24
@@ -26098,9 +26618,64 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB49_3
+; GFX11-NEXT:  .LBB49_2:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr48
+; GFX11-NEXT:    ; implicit-def: $sgpr38
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr39
+; GFX11-NEXT:    ; implicit-def: $sgpr37
+; GFX11-NEXT:    ; implicit-def: $sgpr36
+; GFX11-NEXT:    ; implicit-def: $sgpr35
+; GFX11-NEXT:    ; implicit-def: $sgpr31
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr34
+; GFX11-NEXT:    ; implicit-def: $sgpr30
+; GFX11-NEXT:    ; implicit-def: $vcc_hi
+; GFX11-NEXT:    ; implicit-def: $vcc_lo
+; GFX11-NEXT:    ; implicit-def: $sgpr94
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr95
+; GFX11-NEXT:    ; implicit-def: $sgpr93
+; GFX11-NEXT:    ; implicit-def: $sgpr92
+; GFX11-NEXT:    ; implicit-def: $sgpr91
+; GFX11-NEXT:    ; implicit-def: $sgpr89
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr90
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr79
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:  .LBB49_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v4, s25, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v3, s24, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v6, s23, 1.0
@@ -26165,58 +26740,8 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v83, 8, v18
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v96, 16, v17
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v85, 8, v17
-; GFX11-NEXT:    s_branch .LBB49_5
-; GFX11-NEXT:  .LBB49_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr49
-; GFX11-NEXT:    ; implicit-def: $sgpr39
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr48
-; GFX11-NEXT:    ; implicit-def: $sgpr38
-; GFX11-NEXT:    ; implicit-def: $sgpr37
-; GFX11-NEXT:    ; implicit-def: $sgpr36
-; GFX11-NEXT:    ; implicit-def: $sgpr34
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr35
-; GFX11-NEXT:    ; implicit-def: $sgpr31
-; GFX11-NEXT:    ; implicit-def: $sgpr30
-; GFX11-NEXT:    ; implicit-def: $vcc_hi
-; GFX11-NEXT:    ; implicit-def: $sgpr94
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr95
-; GFX11-NEXT:    ; implicit-def: $sgpr93
-; GFX11-NEXT:    ; implicit-def: $sgpr92
-; GFX11-NEXT:    ; implicit-def: $sgpr91
-; GFX11-NEXT:    ; implicit-def: $sgpr89
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr90
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr79
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    s_branch .LBB49_2
-; GFX11-NEXT:  .LBB49_4:
+; GFX11-NEXT:    s_branch .LBB49_6
+; GFX11-NEXT:  .LBB49_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v17, s0 :: v_dual_mov_b32 v18, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v13, s2 :: v_dual_mov_b32 v14, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v11, s16 :: v_dual_mov_b32 v12, s17
@@ -26225,12 +26750,12 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v5, s22 :: v_dual_mov_b32 v6, s23
 ; GFX11-NEXT:    v_dual_mov_b32 v3, s24 :: v_dual_mov_b32 v4, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v1, s26 :: v_dual_mov_b32 v2, s27
-; GFX11-NEXT:    v_dual_mov_b32 v85, s49 :: v_dual_mov_b32 v96, s39
-; GFX11-NEXT:    v_dual_mov_b32 v83, s48 :: v_dual_mov_b32 v86, s38
-; GFX11-NEXT:    v_dual_mov_b32 v87, s37 :: v_dual_mov_b32 v82, s36
-; GFX11-NEXT:    v_dual_mov_b32 v84, s34 :: v_dual_mov_b32 v71, s35
-; GFX11-NEXT:    v_dual_mov_b32 v80, s31 :: v_dual_mov_b32 v81, s30
-; GFX11-NEXT:    v_dual_mov_b32 v67, vcc_hi :: v_dual_mov_b32 v70, s94
+; GFX11-NEXT:    v_dual_mov_b32 v85, s48 :: v_dual_mov_b32 v96, s38
+; GFX11-NEXT:    v_dual_mov_b32 v83, s39 :: v_dual_mov_b32 v86, s37
+; GFX11-NEXT:    v_dual_mov_b32 v87, s36 :: v_dual_mov_b32 v82, s35
+; GFX11-NEXT:    v_dual_mov_b32 v84, s31 :: v_dual_mov_b32 v71, s34
+; GFX11-NEXT:    v_dual_mov_b32 v80, s30 :: v_dual_mov_b32 v81, vcc_hi
+; GFX11-NEXT:    v_dual_mov_b32 v67, vcc_lo :: v_dual_mov_b32 v70, s94
 ; GFX11-NEXT:    v_dual_mov_b32 v65, s95 :: v_dual_mov_b32 v68, s93
 ; GFX11-NEXT:    v_dual_mov_b32 v69, s92 :: v_dual_mov_b32 v64, s91
 ; GFX11-NEXT:    v_dual_mov_b32 v66, s89 :: v_dual_mov_b32 v53, s90
@@ -26249,7 +26774,7 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s14 :: v_dual_mov_b32 v21, s12
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s10 :: v_dual_mov_b32 v23, s8
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s6 :: v_dual_mov_b32 v25, s4
-; GFX11-NEXT:  .LBB49_5: ; %end
+; GFX11-NEXT:  .LBB49_6: ; %end
 ; GFX11-NEXT:    v_perm_b32 v86, v86, v87, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_perm_b32 v24, v84, v24, 0xc0c0004
@@ -26315,14 +26840,13 @@ define inreg <64 x i8> @bitcast_v16f32_to_v64i8_scalar(<16 x float> inreg %a, i3
 ; GFX11-NEXT:    v_or_b32_e32 v2, v4, v17
 ; GFX11-NEXT:    v_or_b32_e32 v3, v19, v15
 ; GFX11-NEXT:    v_or_b32_e32 v4, v16, v18
-; GFX11-NEXT:    v_readlane_b32 s30, v40, 8
+; GFX11-NEXT:    v_readlane_b32 s30, v40, 7
 ; GFX11-NEXT:    s_clause 0x3
 ; GFX11-NEXT:    scratch_store_b128 v0, v[80:83], off
 ; GFX11-NEXT:    scratch_store_b128 v0, v[11:14], off offset:16
 ; GFX11-NEXT:    scratch_store_b128 v0, v[7:10], off offset:32
 ; GFX11-NEXT:    scratch_store_b128 v0, v[1:4], off offset:48
-; GFX11-NEXT:    v_readlane_b32 s31, v40, 9
-; GFX11-NEXT:    v_readlane_b32 s49, v40, 7
+; GFX11-NEXT:    v_readlane_b32 s31, v40, 8
 ; GFX11-NEXT:    v_readlane_b32 s48, v40, 6
 ; GFX11-NEXT:    v_readlane_b32 s39, v40, 5
 ; GFX11-NEXT:    v_readlane_b32 s38, v40, 4
@@ -28702,7 +29226,7 @@ define inreg <16 x float> @bitcast_v64i8_to_v16f32_scalar(<64 x i8> inreg %a, i3
 ; SI-NEXT:    v_lshlrev_b32_e32 v25, 24, v37
 ; SI-NEXT:    s_waitcnt vmcnt(5)
 ; SI-NEXT:    v_lshlrev_b32_e32 v27, 8, v27
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s6, 0xff
 ; SI-NEXT:    v_or_b32_e32 v0, s4, v34
@@ -28851,8 +29375,17 @@ define inreg <16 x float> @bitcast_v64i8_to_v16f32_scalar(<64 x i8> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v8, s91
 ; SI-NEXT:    v_mov_b32_e32 v9, s92
 ; SI-NEXT:    v_mov_b32_e32 v10, s93
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -29063,12 +29596,9 @@ define inreg <16 x float> @bitcast_v64i8_to_v16f32_scalar(<64 x i8> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v8, s15
 ; SI-NEXT:    v_mov_b32_e32 v9, s11
 ; SI-NEXT:    v_mov_b32_e32 v10, s7
-; SI-NEXT:  .LBB51_3: ; %end
+; SI-NEXT:  .LBB51_5: ; %end
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v64i8_to_v16f32_scalar:
 ; VI:       ; %bb.0:
@@ -29127,7 +29657,7 @@ define inreg <16 x float> @bitcast_v64i8_to_v16f32_scalar(<64 x i8> inreg %a, i3
 ; VI-NEXT:    s_waitcnt vmcnt(14)
 ; VI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v35
 ; VI-NEXT:    s_and_b64 s[4:5], vcc, exec
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -29219,8 +29749,17 @@ define inreg <16 x float> @bitcast_v64i8_to_v16f32_scalar(<64 x i8> inreg %a, i3
 ; VI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; VI-NEXT:    v_perm_b32 v35, v19, v18, s4
 ; VI-NEXT:    v_or_b32_e32 v15, v35, v15
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
@@ -29374,12 +29913,9 @@ define inreg <16 x float> @bitcast_v64i8_to_v16f32_scalar(<64 x i8> inreg %a, i3
 ; VI-NEXT:    v_add_u32_e32 v13, vcc, 0x3000000, v13
 ; VI-NEXT:    v_add_u32_e32 v14, vcc, 0x3000000, v14
 ; VI-NEXT:    v_add_u32_e32 v15, vcc, 0x3000000, v15
-; VI-NEXT:  .LBB51_3: ; %end
+; VI-NEXT:  .LBB51_5: ; %end
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v64i8_to_v16f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -29438,7 +29974,7 @@ define inreg <16 x float> @bitcast_v64i8_to_v16f32_scalar(<64 x i8> inreg %a, i3
 ; GFX9-NEXT:    s_waitcnt vmcnt(19)
 ; GFX9-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v35
 ; GFX9-NEXT:    s_and_b64 s[4:5], vcc, exec
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -29532,8 +30068,17 @@ define inreg <16 x float> @bitcast_v64i8_to_v16f32_scalar(<64 x i8> inreg %a, i3
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; GFX9-NEXT:    v_perm_b32 v35, v19, v18, s4
 ; GFX9-NEXT:    v_or_b32_e32 v15, v35, v15
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_3
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
@@ -29674,12 +30219,9 @@ define inreg <16 x float> @bitcast_v64i8_to_v16f32_scalar(<64 x i8> inreg %a, i3
 ; GFX9-NEXT:    v_add_u32_e32 v15, 0x300, v15
 ; GFX9-NEXT:    v_add_u32_sdwa v16, v16, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v15, v15, v16 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB51_3: ; %end
+; GFX9-NEXT:  .LBB51_5: ; %end
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB51_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX9-NEXT:    s_branch .LBB51_2
 ;
 ; GFX11-TRUE16-LABEL: bitcast_v64i8_to_v16f32_scalar:
 ; GFX11-TRUE16:       ; %bb.0:
@@ -29736,7 +30278,7 @@ define inreg <16 x float> @bitcast_v64i8_to_v16f32_scalar(<64 x i8> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v54
 ; GFX11-TRUE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB51_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    v_perm_b32 v16, v37, v34, 0xc0c0004
@@ -29808,9 +30350,17 @@ define inreg <16 x float> @bitcast_v64i8_to_v16f32_scalar(<64 x i8> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v13, v17, v15
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v14, v19, v16
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v15, v20, v18
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB51_3
-; GFX11-TRUE16-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB51_3
+; GFX11-TRUE16-NEXT:  .LBB51_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-TRUE16-NEXT:  .LBB51_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 3
@@ -29958,12 +30508,9 @@ define inreg <16 x float> @bitcast_v64i8_to_v16f32_scalar(<64 x i8> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v13, v14, v16
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v14, v17, v18
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v15, v19, v20
-; GFX11-TRUE16-NEXT:  .LBB51_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB51_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB51_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-TRUE16-NEXT:    s_branch .LBB51_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v64i8_to_v16f32_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -30020,7 +30567,7 @@ define inreg <16 x float> @bitcast_v64i8_to_v16f32_scalar(<64 x i8> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v54
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB51_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v16, v37, v34, 0xc0c0004
@@ -30092,9 +30639,17 @@ define inreg <16 x float> @bitcast_v64i8_to_v16f32_scalar(<64 x i8> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v13, v17, v15
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v14, v19, v16
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v15, v20, v18
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB51_3
-; GFX11-FAKE16-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB51_3
+; GFX11-FAKE16-NEXT:  .LBB51_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-FAKE16-NEXT:  .LBB51_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 3
@@ -30242,12 +30797,9 @@ define inreg <16 x float> @bitcast_v64i8_to_v16f32_scalar(<64 x i8> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v13, v14, v16
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v14, v17, v18
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v15, v19, v20
-; GFX11-FAKE16-NEXT:  .LBB51_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB51_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB51_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-FAKE16-NEXT:    s_branch .LBB51_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -30411,10 +30963,18 @@ define inreg <8 x double> @bitcast_v8i64_to_v8f64_scalar(<8 x i64> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s6, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_4
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB53_3
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
@@ -30431,7 +30991,7 @@ define inreg <8 x double> @bitcast_v8i64_to_v8f64_scalar(<8 x i64> inreg %a, i32
 ; SI-NEXT:    s_addc_u32 s29, s29, 0
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
-; SI-NEXT:  .LBB53_3: ; %end
+; SI-NEXT:  .LBB53_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -30449,8 +31009,6 @@ define inreg <8 x double> @bitcast_v8i64_to_v8f64_scalar(<8 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v14, s7
 ; SI-NEXT:    v_mov_b32_e32 v15, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB53_4:
-; SI-NEXT:    s_branch .LBB53_2
 ;
 ; VI-LABEL: bitcast_v8i64_to_v8f64_scalar:
 ; VI:       ; %bb.0:
@@ -30459,10 +31017,18 @@ define inreg <8 x double> @bitcast_v8i64_to_v8f64_scalar(<8 x i64> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_4
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB53_3
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -30479,7 +31045,7 @@ define inreg <8 x double> @bitcast_v8i64_to_v8f64_scalar(<8 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s29, s29, 0
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
-; VI-NEXT:  .LBB53_3: ; %end
+; VI-NEXT:  .LBB53_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -30497,8 +31063,6 @@ define inreg <8 x double> @bitcast_v8i64_to_v8f64_scalar(<8 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB53_4:
-; VI-NEXT:    s_branch .LBB53_2
 ;
 ; GFX9-LABEL: bitcast_v8i64_to_v8f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -30507,10 +31071,18 @@ define inreg <8 x double> @bitcast_v8i64_to_v8f64_scalar(<8 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_3
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -30527,7 +31099,7 @@ define inreg <8 x double> @bitcast_v8i64_to_v8f64_scalar(<8 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s29, s29, 0
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
-; GFX9-NEXT:  .LBB53_3: ; %end
+; GFX9-NEXT:  .LBB53_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -30545,19 +31117,22 @@ define inreg <8 x double> @bitcast_v8i64_to_v8f64_scalar(<8 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB53_4:
-; GFX9-NEXT:    s_branch .LBB53_2
 ;
 ; GFX11-LABEL: bitcast_v8i64_to_v8f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB53_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB53_3
-; GFX11-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB53_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -30574,7 +31149,7 @@ define inreg <8 x double> @bitcast_v8i64_to_v8f64_scalar(<8 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s25, s25, 0
 ; GFX11-NEXT:    s_add_u32 s26, s26, 3
 ; GFX11-NEXT:    s_addc_u32 s27, s27, 0
-; GFX11-NEXT:  .LBB53_3: ; %end
+; GFX11-NEXT:  .LBB53_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -30584,8 +31159,6 @@ define inreg <8 x double> @bitcast_v8i64_to_v8f64_scalar(<8 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB53_4:
-; GFX11-NEXT:    s_branch .LBB53_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -30719,10 +31292,18 @@ define inreg <8 x i64> @bitcast_v8f64_to_v8i64_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s31, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s30, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
@@ -30731,10 +31312,8 @@ define inreg <8 x i64> @bitcast_v8f64_to_v8i64_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; SI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; SI-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
-; SI-NEXT:    s_branch .LBB55_5
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:    s_branch .LBB55_6
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -30751,7 +31330,7 @@ define inreg <8 x i64> @bitcast_v8f64_to_v8i64_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    v_mov_b32_e32 v14, s30
 ; SI-NEXT:    v_mov_b32_e32 v15, s31
-; SI-NEXT:  .LBB55_5: ; %end
+; SI-NEXT:  .LBB55_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s30, v16, 0
 ; SI-NEXT:    v_readlane_b32 s31, v16, 1
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -30772,10 +31351,18 @@ define inreg <8 x i64> @bitcast_v8f64_to_v8i64_scalar(<8 x double> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
@@ -30784,10 +31371,8 @@ define inreg <8 x i64> @bitcast_v8f64_to_v8i64_scalar(<8 x double> inreg %a, i32
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; VI-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
-; VI-NEXT:    s_branch .LBB55_5
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:    s_branch .LBB55_6
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -30804,7 +31389,7 @@ define inreg <8 x i64> @bitcast_v8f64_to_v8i64_scalar(<8 x double> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB55_5: ; %end
+; VI-NEXT:  .LBB55_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v16, 0
 ; VI-NEXT:    v_readlane_b32 s31, v16, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -30825,10 +31410,18 @@ define inreg <8 x i64> @bitcast_v8f64_to_v8i64_scalar(<8 x double> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
@@ -30837,10 +31430,8 @@ define inreg <8 x i64> @bitcast_v8f64_to_v8i64_scalar(<8 x double> inreg %a, i32
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
-; GFX9-NEXT:    s_branch .LBB55_5
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:    s_branch .LBB55_6
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -30857,7 +31448,7 @@ define inreg <8 x i64> @bitcast_v8f64_to_v8i64_scalar(<8 x double> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB55_5: ; %end
+; GFX9-NEXT:  .LBB55_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -30875,11 +31466,16 @@ define inreg <8 x i64> @bitcast_v8f64_to_v8i64_scalar(<8 x double> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[16:17], 1.0
@@ -30889,8 +31485,6 @@ define inreg <8 x i64> @bitcast_v8f64_to_v8i64_scalar(<8 x double> inreg %a, i32
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
 ; GFX11-NEXT:    v_add_f64 v[14:15], s[26:27], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -31163,7 +31757,7 @@ define inreg <32 x i16> @bitcast_v8i64_to_v32i16_scalar(<8 x i64> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s56, s5, 16
 ; SI-NEXT:    s_lshr_b32 s57, s29, 16
@@ -31181,8 +31775,32 @@ define inreg <32 x i16> @bitcast_v8i64_to_v32i16_scalar(<8 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[46:47], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[46:47], -1
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s28, s28, 3
@@ -31215,7 +31833,7 @@ define inreg <32 x i16> @bitcast_v8i64_to_v32i16_scalar(<8 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 16
-; SI-NEXT:  .LBB57_3: ; %end
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    s_and_b32 s7, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s9, s44, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s9
@@ -31281,24 +31899,6 @@ define inreg <32 x i16> @bitcast_v8i64_to_v32i16_scalar(<8 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v14, s4
 ; SI-NEXT:    v_mov_b32_e32 v15, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v8i64_to_v32i16_scalar:
 ; VI:       ; %bb.0:
@@ -31307,10 +31907,18 @@ define inreg <32 x i16> @bitcast_v8i64_to_v32i16_scalar(<8 x i64> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s28, s28, 3
@@ -31327,7 +31935,7 @@ define inreg <32 x i16> @bitcast_v8i64_to_v32i16_scalar(<8 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -31345,8 +31953,6 @@ define inreg <32 x i16> @bitcast_v8i64_to_v32i16_scalar(<8 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v8i64_to_v32i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -31355,10 +31961,18 @@ define inreg <32 x i16> @bitcast_v8i64_to_v32i16_scalar(<8 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_3
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s28, s28, 3
@@ -31375,7 +31989,7 @@ define inreg <32 x i16> @bitcast_v8i64_to_v32i16_scalar(<8 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB57_3: ; %end
+; GFX9-NEXT:  .LBB57_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -31393,19 +32007,22 @@ define inreg <32 x i16> @bitcast_v8i64_to_v32i16_scalar(<8 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB57_4:
-; GFX9-NEXT:    s_branch .LBB57_2
 ;
 ; GFX11-LABEL: bitcast_v8i64_to_v32i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB57_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB57_3
-; GFX11-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB57_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s26, s26, 3
 ; GFX11-NEXT:    s_addc_u32 s27, s27, 0
 ; GFX11-NEXT:    s_add_u32 s24, s24, 3
@@ -31422,7 +32039,7 @@ define inreg <32 x i16> @bitcast_v8i64_to_v32i16_scalar(<8 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB57_3: ; %end
+; GFX11-NEXT:  .LBB57_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -31433,8 +32050,6 @@ define inreg <32 x i16> @bitcast_v8i64_to_v32i16_scalar(<8 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB57_4:
-; GFX11-NEXT:    s_branch .LBB57_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -31824,7 +32439,7 @@ define inreg <8 x i64> @bitcast_v32i16_to_v8i64_scalar(<32 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s11, s12, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_4
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
@@ -31874,8 +32489,17 @@ define inreg <8 x i64> @bitcast_v32i16_to_v8i64_scalar(<32 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s4, s9, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB59_3
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
@@ -31956,7 +32580,7 @@ define inreg <8 x i64> @bitcast_v32i16_to_v8i64_scalar(<32 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:  .LBB59_3: ; %end
+; SI-NEXT:  .LBB59_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -31986,9 +32610,6 @@ define inreg <8 x i64> @bitcast_v32i16_to_v8i64_scalar(<32 x i16> inreg %a, i32
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB59_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB59_2
 ;
 ; VI-LABEL: bitcast_v32i16_to_v8i64_scalar:
 ; VI:       ; %bb.0:
@@ -31997,10 +32618,18 @@ define inreg <8 x i64> @bitcast_v32i16_to_v8i64_scalar(<32 x i16> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_4
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_3
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s6, 3
 ; VI-NEXT:    s_and_b32 s4, s6, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -32081,7 +32710,7 @@ define inreg <8 x i64> @bitcast_v32i16_to_v8i64_scalar(<32 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB59_3: ; %end
+; VI-NEXT:  .LBB59_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -32099,8 +32728,6 @@ define inreg <8 x i64> @bitcast_v32i16_to_v8i64_scalar(<32 x i16> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB59_4:
-; VI-NEXT:    s_branch .LBB59_2
 ;
 ; GFX9-LABEL: bitcast_v32i16_to_v8i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -32114,10 +32741,18 @@ define inreg <8 x i64> @bitcast_v32i16_to_v8i64_scalar(<32 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_4
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v15, s31, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v14, s30, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v13, s29, 3 op_sel_hi:[1,0]
@@ -32134,10 +32769,8 @@ define inreg <8 x i64> @bitcast_v32i16_to_v8i64_scalar(<32 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB59_5
-; GFX9-NEXT:  .LBB59_3:
-; GFX9-NEXT:    s_branch .LBB59_2
-; GFX9-NEXT:  .LBB59_4:
+; GFX9-NEXT:    s_branch .LBB59_6
+; GFX9-NEXT:  .LBB59_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -32154,7 +32787,7 @@ define inreg <8 x i64> @bitcast_v32i16_to_v8i64_scalar(<32 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB59_5: ; %end
+; GFX9-NEXT:  .LBB59_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -32172,11 +32805,16 @@ define inreg <8 x i64> @bitcast_v32i16_to_v8i64_scalar(<32 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB59_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v15, s27, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v14, s26, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v13, s25, 3 op_sel_hi:[1,0]
@@ -32194,8 +32832,6 @@ define inreg <8 x i64> @bitcast_v32i16_to_v8i64_scalar(<32 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB59_3:
-; GFX11-NEXT:    s_branch .LBB59_2
 ; GFX11-NEXT:  .LBB59_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -32468,7 +33104,7 @@ define inreg <32 x half> @bitcast_v8i64_to_v32f16_scalar(<8 x i64> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB61_4
+; SI-NEXT:    s_cbranch_scc0 .LBB61_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s56, s5, 16
 ; SI-NEXT:    s_lshr_b32 s57, s29, 16
@@ -32486,8 +33122,32 @@ define inreg <32 x half> @bitcast_v8i64_to_v32f16_scalar(<8 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB61_3
-; SI-NEXT:  .LBB61_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[46:47], 0
+; SI-NEXT:    s_branch .LBB61_3
+; SI-NEXT:  .LBB61_2:
+; SI-NEXT:    s_mov_b64 s[46:47], -1
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:  .LBB61_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB61_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s28, s28, 3
@@ -32520,7 +33180,7 @@ define inreg <32 x half> @bitcast_v8i64_to_v32f16_scalar(<8 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 16
-; SI-NEXT:  .LBB61_3: ; %end
+; SI-NEXT:  .LBB61_5: ; %end
 ; SI-NEXT:    s_and_b32 s7, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s9, s44, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s9
@@ -32586,24 +33246,6 @@ define inreg <32 x half> @bitcast_v8i64_to_v32f16_scalar(<8 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v14, s4
 ; SI-NEXT:    v_mov_b32_e32 v15, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB61_4:
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    s_branch .LBB61_2
 ;
 ; VI-LABEL: bitcast_v8i64_to_v32f16_scalar:
 ; VI:       ; %bb.0:
@@ -32612,10 +33254,18 @@ define inreg <32 x half> @bitcast_v8i64_to_v32f16_scalar(<8 x i64> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB61_4
+; VI-NEXT:    s_cbranch_scc0 .LBB61_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB61_3
-; VI-NEXT:  .LBB61_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB61_3
+; VI-NEXT:  .LBB61_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB61_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB61_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s28, s28, 3
@@ -32632,7 +33282,7 @@ define inreg <32 x half> @bitcast_v8i64_to_v32f16_scalar(<8 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB61_3: ; %end
+; VI-NEXT:  .LBB61_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -32650,8 +33300,6 @@ define inreg <32 x half> @bitcast_v8i64_to_v32f16_scalar(<8 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB61_4:
-; VI-NEXT:    s_branch .LBB61_2
 ;
 ; GFX9-LABEL: bitcast_v8i64_to_v32f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -32660,10 +33308,18 @@ define inreg <32 x half> @bitcast_v8i64_to_v32f16_scalar(<8 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB61_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB61_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB61_3
-; GFX9-NEXT:  .LBB61_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB61_3
+; GFX9-NEXT:  .LBB61_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB61_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB61_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s28, s28, 3
@@ -32680,7 +33336,7 @@ define inreg <32 x half> @bitcast_v8i64_to_v32f16_scalar(<8 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB61_3: ; %end
+; GFX9-NEXT:  .LBB61_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -32698,19 +33354,22 @@ define inreg <32 x half> @bitcast_v8i64_to_v32f16_scalar(<8 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB61_4:
-; GFX9-NEXT:    s_branch .LBB61_2
 ;
 ; GFX11-LABEL: bitcast_v8i64_to_v32f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB61_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB61_3
-; GFX11-NEXT:  .LBB61_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB61_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB61_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB61_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s26, s26, 3
 ; GFX11-NEXT:    s_addc_u32 s27, s27, 0
 ; GFX11-NEXT:    s_add_u32 s24, s24, 3
@@ -32727,7 +33386,7 @@ define inreg <32 x half> @bitcast_v8i64_to_v32f16_scalar(<8 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB61_3: ; %end
+; GFX11-NEXT:  .LBB61_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -32738,8 +33397,6 @@ define inreg <32 x half> @bitcast_v8i64_to_v32f16_scalar(<8 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB61_4:
-; GFX11-NEXT:    s_branch .LBB61_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -33193,7 +33850,7 @@ define inreg <8 x i64> @bitcast_v32f16_to_v8i64_scalar(<32 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s10, s8, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB63_3
+; SI-NEXT:    s_cbranch_scc0 .LBB63_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
@@ -33243,8 +33900,17 @@ define inreg <8 x i64> @bitcast_v32f16_to_v8i64_scalar(<32 x half> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB63_4
-; SI-NEXT:  .LBB63_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB63_3
+; SI-NEXT:  .LBB63_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB63_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB63_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s63
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s62
@@ -33373,11 +34039,8 @@ define inreg <8 x i64> @bitcast_v32f16_to_v8i64_scalar(<32 x half> inreg %a, i32
 ; SI-NEXT:    v_or_b32_e32 v14, v15, v14
 ; SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v16
 ; SI-NEXT:    v_or_b32_e32 v15, v17, v15
-; SI-NEXT:    s_branch .LBB63_5
-; SI-NEXT:  .LBB63_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB63_2
-; SI-NEXT:  .LBB63_4:
+; SI-NEXT:    s_branch .LBB63_6
+; SI-NEXT:  .LBB63_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -33394,7 +34057,7 @@ define inreg <8 x i64> @bitcast_v32f16_to_v8i64_scalar(<32 x half> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v13, s49
 ; SI-NEXT:    v_mov_b32_e32 v14, s50
 ; SI-NEXT:    v_mov_b32_e32 v15, s51
-; SI-NEXT:  .LBB63_5: ; %end
+; SI-NEXT:  .LBB63_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s51, v18, 7
 ; SI-NEXT:    v_readlane_b32 s50, v18, 6
 ; SI-NEXT:    v_readlane_b32 s49, v18, 5
@@ -33421,10 +34084,18 @@ define inreg <8 x i64> @bitcast_v32f16_to_v8i64_scalar(<32 x half> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB63_3
+; VI-NEXT:    s_cbranch_scc0 .LBB63_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB63_4
-; VI-NEXT:  .LBB63_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB63_3
+; VI-NEXT:  .LBB63_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB63_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB63_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s31, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -33506,10 +34177,8 @@ define inreg <8 x i64> @bitcast_v32f16_to_v8i64_scalar(<32 x half> inreg %a, i32
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v16
-; VI-NEXT:    s_branch .LBB63_5
-; VI-NEXT:  .LBB63_3:
-; VI-NEXT:    s_branch .LBB63_2
-; VI-NEXT:  .LBB63_4:
+; VI-NEXT:    s_branch .LBB63_6
+; VI-NEXT:  .LBB63_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -33526,7 +34195,7 @@ define inreg <8 x i64> @bitcast_v32f16_to_v8i64_scalar(<32 x half> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB63_5: ; %end
+; VI-NEXT:  .LBB63_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v17, 0
 ; VI-NEXT:    v_readlane_b32 s31, v17, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -33547,10 +34216,18 @@ define inreg <8 x i64> @bitcast_v32f16_to_v8i64_scalar(<32 x half> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB63_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB63_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB63_4
-; GFX9-NEXT:  .LBB63_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB63_3
+; GFX9-NEXT:  .LBB63_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB63_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB63_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v15, s31, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v14, s30, v0 op_sel_hi:[1,0]
@@ -33568,10 +34245,8 @@ define inreg <8 x i64> @bitcast_v32f16_to_v8i64_scalar(<32 x half> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB63_5
-; GFX9-NEXT:  .LBB63_3:
-; GFX9-NEXT:    s_branch .LBB63_2
-; GFX9-NEXT:  .LBB63_4:
+; GFX9-NEXT:    s_branch .LBB63_6
+; GFX9-NEXT:  .LBB63_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -33588,7 +34263,7 @@ define inreg <8 x i64> @bitcast_v32f16_to_v8i64_scalar(<32 x half> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB63_5: ; %end
+; GFX9-NEXT:  .LBB63_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -33606,11 +34281,16 @@ define inreg <8 x i64> @bitcast_v32f16_to_v8i64_scalar(<32 x half> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB63_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB63_4
-; GFX11-NEXT:  .LBB63_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB63_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB63_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB63_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v15, 0x200, s27 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v14, 0x200, s26 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s25 op_sel_hi:[0,1]
@@ -33628,8 +34308,6 @@ define inreg <8 x i64> @bitcast_v32f16_to_v8i64_scalar(<32 x half> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB63_3:
-; GFX11-NEXT:    s_branch .LBB63_2
 ; GFX11-NEXT:  .LBB63_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -33982,7 +34660,7 @@ define inreg <32 x bfloat> @bitcast_v8i64_to_v32bf16_scalar(<8 x i64> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s78, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s79, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB65_4
+; SI-NEXT:    s_cbranch_scc0 .LBB65_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s7, s78, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s78, 16
@@ -34016,8 +34694,48 @@ define inreg <32 x bfloat> @bitcast_v8i64_to_v32bf16_scalar(<8 x i64> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s74, s17, 16
 ; SI-NEXT:    s_and_b32 s77, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s76, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB65_3
-; SI-NEXT:  .LBB65_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB65_3
+; SI-NEXT:  .LBB65_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB65_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB65_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s16, 3
 ; SI-NEXT:    s_addc_u32 s5, s17, 0
 ; SI-NEXT:    s_add_u32 s16, s18, 3
@@ -34066,7 +34784,7 @@ define inreg <32 x bfloat> @bitcast_v8i64_to_v32bf16_scalar(<8 x i64> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s74, s5, 16
 ; SI-NEXT:    s_and_b32 s77, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s76, s4, 16
-; SI-NEXT:  .LBB65_3: ; %end
+; SI-NEXT:  .LBB65_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s77
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s76
@@ -34132,40 +34850,6 @@ define inreg <32 x bfloat> @bitcast_v8i64_to_v32bf16_scalar(<8 x i64> inreg %a,
 ; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[15:16], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB65_4:
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB65_2
 ;
 ; VI-LABEL: bitcast_v8i64_to_v32bf16_scalar:
 ; VI:       ; %bb.0:
@@ -34174,10 +34858,18 @@ define inreg <32 x bfloat> @bitcast_v8i64_to_v32bf16_scalar(<8 x i64> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB65_4
+; VI-NEXT:    s_cbranch_scc0 .LBB65_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB65_3
-; VI-NEXT:  .LBB65_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB65_3
+; VI-NEXT:  .LBB65_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB65_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB65_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s28, s28, 3
@@ -34194,7 +34886,7 @@ define inreg <32 x bfloat> @bitcast_v8i64_to_v32bf16_scalar(<8 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB65_3: ; %end
+; VI-NEXT:  .LBB65_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -34212,8 +34904,6 @@ define inreg <32 x bfloat> @bitcast_v8i64_to_v32bf16_scalar(<8 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB65_4:
-; VI-NEXT:    s_branch .LBB65_2
 ;
 ; GFX9-LABEL: bitcast_v8i64_to_v32bf16_scalar:
 ; GFX9:       ; %bb.0:
@@ -34222,10 +34912,18 @@ define inreg <32 x bfloat> @bitcast_v8i64_to_v32bf16_scalar(<8 x i64> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB65_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB65_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB65_3
-; GFX9-NEXT:  .LBB65_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB65_3
+; GFX9-NEXT:  .LBB65_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB65_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB65_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s28, s28, 3
@@ -34242,7 +34940,7 @@ define inreg <32 x bfloat> @bitcast_v8i64_to_v32bf16_scalar(<8 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB65_3: ; %end
+; GFX9-NEXT:  .LBB65_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -34260,19 +34958,22 @@ define inreg <32 x bfloat> @bitcast_v8i64_to_v32bf16_scalar(<8 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB65_4:
-; GFX9-NEXT:    s_branch .LBB65_2
 ;
 ; GFX11-LABEL: bitcast_v8i64_to_v32bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB65_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB65_3
-; GFX11-NEXT:  .LBB65_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB65_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB65_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB65_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s26, s26, 3
 ; GFX11-NEXT:    s_addc_u32 s27, s27, 0
 ; GFX11-NEXT:    s_add_u32 s24, s24, 3
@@ -34289,7 +34990,7 @@ define inreg <32 x bfloat> @bitcast_v8i64_to_v32bf16_scalar(<8 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB65_3: ; %end
+; GFX11-NEXT:  .LBB65_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -34300,8 +35001,6 @@ define inreg <32 x bfloat> @bitcast_v8i64_to_v32bf16_scalar(<8 x i64> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v12, s24 :: v_dual_mov_b32 v13, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB65_4:
-; GFX11-NEXT:    s_branch .LBB65_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -35814,7 +36513,7 @@ define inreg <8 x i64> @bitcast_v32bf16_to_v8i64_scalar(<32 x bfloat> inreg %a,
 ; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s5
 ; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s44
 ; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s42
-; SI-NEXT:    s_cbranch_scc0 .LBB67_4
+; SI-NEXT:    s_cbranch_scc0 .LBB67_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v53, 16, v41
 ; SI-NEXT:    v_lshrrev_b32_e32 v49, 16, v63
@@ -35850,8 +36549,17 @@ define inreg <8 x i64> @bitcast_v32bf16_to_v8i64_scalar(<32 x bfloat> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v20, v16
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[17:18], 16
 ; SI-NEXT:    v_mov_b32_e32 v16, v20
-; SI-NEXT:    s_cbranch_execnz .LBB67_3
-; SI-NEXT:  .LBB67_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB67_3
+; SI-NEXT:  .LBB67_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; SI-NEXT:  .LBB67_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB67_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v41
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v52
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -35948,7 +36656,7 @@ define inreg <8 x i64> @bitcast_v32bf16_to_v8i64_scalar(<32 x bfloat> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v15, 0x40c00000, v15
 ; SI-NEXT:    v_lshrrev_b32_e32 v16, 16, v16
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[15:16], 16
-; SI-NEXT:  .LBB67_3: ; %end
+; SI-NEXT:  .LBB67_5: ; %end
 ; SI-NEXT:    buffer_load_dword v63, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v62, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v61, off, s[0:3], s32 offset:8 ; 4-byte Folded Reload
@@ -35967,9 +36675,6 @@ define inreg <8 x i64> @bitcast_v32bf16_to_v8i64_scalar(<32 x bfloat> inreg %a,
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:60 ; 4-byte Folded Reload
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB67_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; SI-NEXT:    s_branch .LBB67_2
 ;
 ; VI-LABEL: bitcast_v32bf16_to_v8i64_scalar:
 ; VI:       ; %bb.0:
@@ -35983,10 +36688,18 @@ define inreg <8 x i64> @bitcast_v32bf16_to_v8i64_scalar(<32 x bfloat> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB67_3
+; VI-NEXT:    s_cbranch_scc0 .LBB67_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB67_4
-; VI-NEXT:  .LBB67_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB67_3
+; VI-NEXT:  .LBB67_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB67_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB67_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v16, 0x40c00000
 ; VI-NEXT:    s_lshl_b32 s4, s30, 16
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v16
@@ -36284,10 +36997,8 @@ define inreg <8 x i64> @bitcast_v32bf16_to_v8i64_scalar(<32 x bfloat> inreg %a,
 ; VI-NEXT:    v_lshrrev_b64 v[16:17], 16, v[17:18]
 ; VI-NEXT:    v_mov_b32_e32 v13, v15
 ; VI-NEXT:    v_mov_b32_e32 v15, v16
-; VI-NEXT:    s_branch .LBB67_5
-; VI-NEXT:  .LBB67_3:
-; VI-NEXT:    s_branch .LBB67_2
-; VI-NEXT:  .LBB67_4:
+; VI-NEXT:    s_branch .LBB67_6
+; VI-NEXT:  .LBB67_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -36304,7 +37015,7 @@ define inreg <8 x i64> @bitcast_v32bf16_to_v8i64_scalar(<32 x bfloat> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB67_5: ; %end
+; VI-NEXT:  .LBB67_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v20, 0
 ; VI-NEXT:    v_readlane_b32 s31, v20, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -36325,10 +37036,18 @@ define inreg <8 x i64> @bitcast_v32bf16_to_v8i64_scalar(<32 x bfloat> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB67_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB67_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB67_4
-; GFX9-NEXT:  .LBB67_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB67_3
+; GFX9-NEXT:  .LBB67_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB67_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB67_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s31, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -36635,10 +37354,8 @@ define inreg <8 x i64> @bitcast_v32bf16_to_v8i64_scalar(<32 x bfloat> inreg %a,
 ; GFX9-NEXT:    v_cndmask_b32_e32 v17, v18, v19, vcc
 ; GFX9-NEXT:    v_and_b32_sdwa v16, v16, v17 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v0, 16, v16
-; GFX9-NEXT:    s_branch .LBB67_5
-; GFX9-NEXT:  .LBB67_3:
-; GFX9-NEXT:    s_branch .LBB67_2
-; GFX9-NEXT:  .LBB67_4:
+; GFX9-NEXT:    s_branch .LBB67_6
+; GFX9-NEXT:  .LBB67_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -36655,7 +37372,7 @@ define inreg <8 x i64> @bitcast_v32bf16_to_v8i64_scalar(<32 x bfloat> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB67_5: ; %end
+; GFX9-NEXT:  .LBB67_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v20, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v20, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -36673,11 +37390,16 @@ define inreg <8 x i64> @bitcast_v32bf16_to_v8i64_scalar(<32 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB67_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB67_4
-; GFX11-TRUE16-NEXT:  .LBB67_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB67_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:  .LBB67_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB67_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s0, s27, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s27, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -36987,8 +37709,6 @@ define inreg <8 x i64> @bitcast_v32bf16_to_v8i64_scalar(<32 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v18
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v17.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB67_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB67_2
 ; GFX11-TRUE16-NEXT:  .LBB67_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -37009,11 +37729,16 @@ define inreg <8 x i64> @bitcast_v32bf16_to_v8i64_scalar(<32 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB67_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB67_4
-; GFX11-FAKE16-NEXT:  .LBB67_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB67_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:  .LBB67_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB67_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_and_b32 s1, s27, 0xffff0000
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s27, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s1
@@ -37342,8 +38067,6 @@ define inreg <8 x i64> @bitcast_v32bf16_to_v8i64_scalar(<32 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v2, v16, 16, v21
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v20, 16, v17
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB67_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB67_2
 ; GFX11-FAKE16-NEXT:  .LBB67_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -38890,7 +39613,7 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; SI-NEXT:    v_readfirstlane_b32 s5, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v1
-; SI-NEXT:    s_cbranch_scc0 .LBB69_4
+; SI-NEXT:    s_cbranch_scc0 .LBB69_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s38, s5, 24
 ; SI-NEXT:    s_lshr_b32 s39, s5, 16
@@ -38937,11 +39660,67 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 24
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 8
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 24
-; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB69_3
-; SI-NEXT:  .LBB69_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 24
+; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 8
+; SI-NEXT:    s_mov_b64 s[36:37], 0
+; SI-NEXT:    s_branch .LBB69_3
+; SI-NEXT:  .LBB69_2:
+; SI-NEXT:    s_mov_b64 s[36:37], -1
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr85
+; SI-NEXT:    ; implicit-def: $sgpr84
+; SI-NEXT:    ; implicit-def: $sgpr83
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr82
+; SI-NEXT:    ; implicit-def: $sgpr81
+; SI-NEXT:    ; implicit-def: $sgpr80
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr71
+; SI-NEXT:    ; implicit-def: $sgpr70
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr65
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB69_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB69_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s28, s28, 3
@@ -39003,15 +39782,15 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 24
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 8
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 24
-; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[16:17], 8
-; SI-NEXT:  .LBB69_3: ; %end
-; SI-NEXT:    s_lshl_b32 s7, s36, 8
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 24
+; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[16:17], 8
+; SI-NEXT:  .LBB69_5: ; %end
+; SI-NEXT:    s_lshl_b32 s7, s34, 8
 ; SI-NEXT:    s_and_b32 s9, s16, 0xff
 ; SI-NEXT:    s_or_b32 s7, s9, s7
-; SI-NEXT:    s_and_b32 s9, s34, 0xff
-; SI-NEXT:    s_lshl_b32 s11, s30, 24
+; SI-NEXT:    s_and_b32 s9, s30, 0xff
+; SI-NEXT:    s_lshl_b32 s11, vcc_lo, 24
 ; SI-NEXT:    s_lshl_b32 s9, s9, 16
 ; SI-NEXT:    s_or_b32 s9, s11, s9
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
@@ -39246,56 +40025,6 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB69_4:
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr85
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    ; implicit-def: $sgpr83
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr82
-; SI-NEXT:    ; implicit-def: $sgpr81
-; SI-NEXT:    ; implicit-def: $sgpr80
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr71
-; SI-NEXT:    ; implicit-def: $sgpr70
-; SI-NEXT:    ; implicit-def: $sgpr69
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr67
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB69_2
 ;
 ; VI-LABEL: bitcast_v8i64_to_v64i8_scalar:
 ; VI:       ; %bb.0:
@@ -39319,15 +40048,13 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; VI-NEXT:    v_writelane_b32 v4, s55, 13
 ; VI-NEXT:    v_writelane_b32 v4, s64, 14
 ; VI-NEXT:    v_writelane_b32 v4, s65, 15
-; VI-NEXT:    v_writelane_b32 v4, s66, 16
-; VI-NEXT:    v_writelane_b32 v4, s67, 17
-; VI-NEXT:    v_writelane_b32 v4, s30, 18
-; VI-NEXT:    v_writelane_b32 v4, s31, 19
+; VI-NEXT:    v_writelane_b32 v4, s30, 16
+; VI-NEXT:    v_writelane_b32 v4, s31, 17
 ; VI-NEXT:    v_readfirstlane_b32 s4, v3
 ; VI-NEXT:    v_readfirstlane_b32 s5, v2
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v1
-; VI-NEXT:    s_cbranch_scc0 .LBB69_4
+; VI-NEXT:    s_cbranch_scc0 .LBB69_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s56, s5, 24
 ; VI-NEXT:    s_lshr_b32 s57, s5, 16
@@ -39364,11 +40091,11 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s52, s19, 8
 ; VI-NEXT:    s_lshr_b32 s53, s18, 16
 ; VI-NEXT:    s_lshr_b32 s54, s18, 8
-; VI-NEXT:    s_lshr_b32 s55, s17, 24
-; VI-NEXT:    s_lshr_b32 s64, s17, 16
-; VI-NEXT:    s_lshr_b32 s65, s17, 8
-; VI-NEXT:    s_lshr_b32 s66, s16, 16
-; VI-NEXT:    s_lshr_b32 s67, s16, 8
+; VI-NEXT:    s_lshr_b32 vcc_lo, s17, 24
+; VI-NEXT:    s_lshr_b32 vcc_hi, s17, 16
+; VI-NEXT:    s_lshr_b32 s55, s17, 8
+; VI-NEXT:    s_lshr_b32 s64, s16, 16
+; VI-NEXT:    s_lshr_b32 s65, s16, 8
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[4:5], 24
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[28:29], 24
 ; VI-NEXT:    s_lshr_b64 s[10:11], s[26:27], 24
@@ -39377,8 +40104,64 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[42:43], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB69_3
-; VI-NEXT:  .LBB69_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[46:47], 0
+; VI-NEXT:    s_branch .LBB69_3
+; VI-NEXT:  .LBB69_2:
+; VI-NEXT:    s_mov_b64 s[46:47], -1
+; VI-NEXT:    ; implicit-def: $sgpr65
+; VI-NEXT:    ; implicit-def: $sgpr64
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr55
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr54
+; VI-NEXT:    ; implicit-def: $sgpr53
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr52
+; VI-NEXT:    ; implicit-def: $sgpr51
+; VI-NEXT:    ; implicit-def: $sgpr50
+; VI-NEXT:    ; implicit-def: $sgpr49
+; VI-NEXT:    ; implicit-def: $sgpr48
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr39
+; VI-NEXT:    ; implicit-def: $sgpr38
+; VI-NEXT:    ; implicit-def: $sgpr37
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr35
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:  .LBB69_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; VI-NEXT:    s_cselect_b32 s7, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s7, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB69_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -39438,23 +40221,23 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s52, s19, 8
 ; VI-NEXT:    s_lshr_b32 s53, s18, 16
 ; VI-NEXT:    s_lshr_b32 s54, s18, 8
-; VI-NEXT:    s_lshr_b32 s55, s17, 24
-; VI-NEXT:    s_lshr_b32 s64, s17, 16
-; VI-NEXT:    s_lshr_b32 s65, s17, 8
-; VI-NEXT:    s_lshr_b32 s66, s16, 16
-; VI-NEXT:    s_lshr_b32 s67, s16, 8
-; VI-NEXT:  .LBB69_3: ; %end
+; VI-NEXT:    s_lshr_b32 vcc_lo, s17, 24
+; VI-NEXT:    s_lshr_b32 vcc_hi, s17, 16
+; VI-NEXT:    s_lshr_b32 s55, s17, 8
+; VI-NEXT:    s_lshr_b32 s64, s16, 16
+; VI-NEXT:    s_lshr_b32 s65, s16, 8
+; VI-NEXT:  .LBB69_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v3, s44
-; VI-NEXT:    v_mov_b32_e32 v1, s67
-; VI-NEXT:    v_perm_b32 v3, s66, v3, v2
+; VI-NEXT:    v_mov_b32_e32 v1, s65
+; VI-NEXT:    v_perm_b32 v3, s64, v3, v2
 ; VI-NEXT:    v_perm_b32 v1, s16, v1, v2
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v3
-; VI-NEXT:    v_mov_b32_e32 v3, s55
+; VI-NEXT:    v_mov_b32_e32 v3, vcc_lo
 ; VI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v1, s65
-; VI-NEXT:    v_perm_b32 v3, s64, v3, v2
+; VI-NEXT:    v_mov_b32_e32 v1, s55
+; VI-NEXT:    v_perm_b32 v3, vcc_hi, v3, v2
 ; VI-NEXT:    v_perm_b32 v1, s17, v1, v2
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v3
@@ -39571,11 +40354,9 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v2
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 60, v0
-; VI-NEXT:    v_readlane_b32 s30, v4, 18
+; VI-NEXT:    v_readlane_b32 s30, v4, 16
 ; VI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
-; VI-NEXT:    v_readlane_b32 s31, v4, 19
-; VI-NEXT:    v_readlane_b32 s67, v4, 17
-; VI-NEXT:    v_readlane_b32 s66, v4, 16
+; VI-NEXT:    v_readlane_b32 s31, v4, 17
 ; VI-NEXT:    v_readlane_b32 s65, v4, 15
 ; VI-NEXT:    v_readlane_b32 s64, v4, 14
 ; VI-NEXT:    v_readlane_b32 s55, v4, 13
@@ -39597,56 +40378,6 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB69_4:
-; VI-NEXT:    ; implicit-def: $sgpr67
-; VI-NEXT:    ; implicit-def: $sgpr66
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr65
-; VI-NEXT:    ; implicit-def: $sgpr64
-; VI-NEXT:    ; implicit-def: $sgpr55
-; VI-NEXT:    ; implicit-def: $sgpr54
-; VI-NEXT:    ; implicit-def: $sgpr53
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr52
-; VI-NEXT:    ; implicit-def: $sgpr51
-; VI-NEXT:    ; implicit-def: $sgpr50
-; VI-NEXT:    ; implicit-def: $sgpr49
-; VI-NEXT:    ; implicit-def: $sgpr48
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr39
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr37
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    s_branch .LBB69_2
 ;
 ; GFX9-LABEL: bitcast_v8i64_to_v64i8_scalar:
 ; GFX9:       ; %bb.0:
@@ -39666,15 +40397,13 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    v_writelane_b32 v4, s51, 9
 ; GFX9-NEXT:    v_writelane_b32 v4, s52, 10
 ; GFX9-NEXT:    v_writelane_b32 v4, s53, 11
-; GFX9-NEXT:    v_writelane_b32 v4, s54, 12
-; GFX9-NEXT:    v_writelane_b32 v4, s55, 13
-; GFX9-NEXT:    v_writelane_b32 v4, s30, 14
-; GFX9-NEXT:    v_writelane_b32 v4, s31, 15
+; GFX9-NEXT:    v_writelane_b32 v4, s30, 12
+; GFX9-NEXT:    v_writelane_b32 v4, s31, 13
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v3
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v2
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v1
-; GFX9-NEXT:    s_cbranch_scc0 .LBB69_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB69_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s56, s5, 24
 ; GFX9-NEXT:    s_lshr_b32 s57, s5, 16
@@ -39700,22 +40429,22 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b32 s93, s23, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s23, 8
 ; GFX9-NEXT:    s_lshr_b32 s95, s22, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s22, 8
-; GFX9-NEXT:    s_lshr_b32 s31, s21, 24
-; GFX9-NEXT:    s_lshr_b32 s34, s21, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s21, 8
-; GFX9-NEXT:    s_lshr_b32 s36, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s37, s20, 8
-; GFX9-NEXT:    s_lshr_b32 s38, s19, 24
-; GFX9-NEXT:    s_lshr_b32 s39, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s48, s19, 8
-; GFX9-NEXT:    s_lshr_b32 s49, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s50, s18, 8
-; GFX9-NEXT:    s_lshr_b32 s51, s17, 24
-; GFX9-NEXT:    s_lshr_b32 s52, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s53, s17, 8
-; GFX9-NEXT:    s_lshr_b32 s54, s16, 16
-; GFX9-NEXT:    s_lshr_b32 s55, s16, 8
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s22, 8
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s21, 24
+; GFX9-NEXT:    s_lshr_b32 s30, s21, 16
+; GFX9-NEXT:    s_lshr_b32 s31, s21, 8
+; GFX9-NEXT:    s_lshr_b32 s34, s20, 16
+; GFX9-NEXT:    s_lshr_b32 s35, s20, 8
+; GFX9-NEXT:    s_lshr_b32 s36, s19, 24
+; GFX9-NEXT:    s_lshr_b32 s37, s19, 16
+; GFX9-NEXT:    s_lshr_b32 s38, s19, 8
+; GFX9-NEXT:    s_lshr_b32 s39, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s48, s18, 8
+; GFX9-NEXT:    s_lshr_b32 s49, s17, 24
+; GFX9-NEXT:    s_lshr_b32 s50, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s51, s17, 8
+; GFX9-NEXT:    s_lshr_b32 s52, s16, 16
+; GFX9-NEXT:    s_lshr_b32 s53, s16, 8
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[4:5], 24
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[28:29], 24
 ; GFX9-NEXT:    s_lshr_b64 s[10:11], s[26:27], 24
@@ -39724,8 +40453,64 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b64 s[40:41], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[42:43], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[44:45], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB69_3
-; GFX9-NEXT:  .LBB69_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[46:47], 0
+; GFX9-NEXT:    s_branch .LBB69_3
+; GFX9-NEXT:  .LBB69_2:
+; GFX9-NEXT:    s_mov_b64 s[46:47], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr53
+; GFX9-NEXT:    ; implicit-def: $sgpr52
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr51
+; GFX9-NEXT:    ; implicit-def: $sgpr50
+; GFX9-NEXT:    ; implicit-def: $sgpr49
+; GFX9-NEXT:    ; implicit-def: $sgpr48
+; GFX9-NEXT:    ; implicit-def: $sgpr39
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr38
+; GFX9-NEXT:    ; implicit-def: $sgpr37
+; GFX9-NEXT:    ; implicit-def: $sgpr36
+; GFX9-NEXT:    ; implicit-def: $sgpr35
+; GFX9-NEXT:    ; implicit-def: $sgpr34
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr31
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_hi
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:  .LBB69_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; GFX9-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB69_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -39774,68 +40559,68 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b32 s93, s23, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s23, 8
 ; GFX9-NEXT:    s_lshr_b32 s95, s22, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s22, 8
-; GFX9-NEXT:    s_lshr_b32 s31, s21, 24
-; GFX9-NEXT:    s_lshr_b32 s34, s21, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s21, 8
-; GFX9-NEXT:    s_lshr_b32 s36, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s37, s20, 8
-; GFX9-NEXT:    s_lshr_b32 s38, s19, 24
-; GFX9-NEXT:    s_lshr_b32 s39, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s48, s19, 8
-; GFX9-NEXT:    s_lshr_b32 s49, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s50, s18, 8
-; GFX9-NEXT:    s_lshr_b32 s51, s17, 24
-; GFX9-NEXT:    s_lshr_b32 s52, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s53, s17, 8
-; GFX9-NEXT:    s_lshr_b32 s54, s16, 16
-; GFX9-NEXT:    s_lshr_b32 s55, s16, 8
-; GFX9-NEXT:  .LBB69_3: ; %end
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s22, 8
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s21, 24
+; GFX9-NEXT:    s_lshr_b32 s30, s21, 16
+; GFX9-NEXT:    s_lshr_b32 s31, s21, 8
+; GFX9-NEXT:    s_lshr_b32 s34, s20, 16
+; GFX9-NEXT:    s_lshr_b32 s35, s20, 8
+; GFX9-NEXT:    s_lshr_b32 s36, s19, 24
+; GFX9-NEXT:    s_lshr_b32 s37, s19, 16
+; GFX9-NEXT:    s_lshr_b32 s38, s19, 8
+; GFX9-NEXT:    s_lshr_b32 s39, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s48, s18, 8
+; GFX9-NEXT:    s_lshr_b32 s49, s17, 24
+; GFX9-NEXT:    s_lshr_b32 s50, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s51, s17, 8
+; GFX9-NEXT:    s_lshr_b32 s52, s16, 16
+; GFX9-NEXT:    s_lshr_b32 s53, s16, 8
+; GFX9-NEXT:  .LBB69_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s44
-; GFX9-NEXT:    v_mov_b32_e32 v1, s55
-; GFX9-NEXT:    v_perm_b32 v3, s54, v3, v2
+; GFX9-NEXT:    v_mov_b32_e32 v1, s53
+; GFX9-NEXT:    v_perm_b32 v3, s52, v3, v2
 ; GFX9-NEXT:    v_perm_b32 v1, s16, v1, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s51
+; GFX9-NEXT:    v_mov_b32_e32 v3, s49
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
-; GFX9-NEXT:    v_mov_b32_e32 v1, s53
-; GFX9-NEXT:    v_perm_b32 v3, s52, v3, v2
+; GFX9-NEXT:    v_mov_b32_e32 v1, s51
+; GFX9-NEXT:    v_perm_b32 v3, s50, v3, v2
 ; GFX9-NEXT:    v_perm_b32 v1, s17, v1, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s42
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:4
-; GFX9-NEXT:    v_mov_b32_e32 v1, s50
-; GFX9-NEXT:    v_perm_b32 v3, s49, v3, v2
+; GFX9-NEXT:    v_mov_b32_e32 v1, s48
+; GFX9-NEXT:    v_perm_b32 v3, s39, v3, v2
 ; GFX9-NEXT:    v_perm_b32 v1, s18, v1, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s38
+; GFX9-NEXT:    v_mov_b32_e32 v3, s36
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:8
-; GFX9-NEXT:    v_mov_b32_e32 v1, s48
-; GFX9-NEXT:    v_perm_b32 v3, s39, v3, v2
+; GFX9-NEXT:    v_mov_b32_e32 v1, s38
+; GFX9-NEXT:    v_perm_b32 v3, s37, v3, v2
 ; GFX9-NEXT:    v_perm_b32 v1, s19, v1, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s40
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:12
-; GFX9-NEXT:    v_mov_b32_e32 v1, s37
-; GFX9-NEXT:    v_perm_b32 v3, s36, v3, v2
+; GFX9-NEXT:    v_mov_b32_e32 v1, s35
+; GFX9-NEXT:    v_perm_b32 v3, s34, v3, v2
 ; GFX9-NEXT:    v_perm_b32 v1, s20, v1, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
-; GFX9-NEXT:    v_mov_b32_e32 v3, s31
+; GFX9-NEXT:    v_mov_b32_e32 v3, vcc_hi
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:16
-; GFX9-NEXT:    v_mov_b32_e32 v1, s35
-; GFX9-NEXT:    v_perm_b32 v3, s34, v3, v2
+; GFX9-NEXT:    v_mov_b32_e32 v1, s31
+; GFX9-NEXT:    v_perm_b32 v3, s30, v3, v2
 ; GFX9-NEXT:    v_perm_b32 v1, s21, v1, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; GFX9-NEXT:    v_or_b32_e32 v1, v1, v3
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s14
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:20
-; GFX9-NEXT:    v_mov_b32_e32 v1, s30
+; GFX9-NEXT:    v_mov_b32_e32 v1, vcc_lo
 ; GFX9-NEXT:    v_perm_b32 v3, s95, v3, v2
 ; GFX9-NEXT:    v_perm_b32 v1, s22, v1, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
@@ -39903,11 +40688,9 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    v_perm_b32 v2, s57, v3, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; GFX9-NEXT:    v_or_b32_e32 v1, v1, v2
-; GFX9-NEXT:    v_readlane_b32 s30, v4, 14
+; GFX9-NEXT:    v_readlane_b32 s30, v4, 12
 ; GFX9-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:60
-; GFX9-NEXT:    v_readlane_b32 s31, v4, 15
-; GFX9-NEXT:    v_readlane_b32 s55, v4, 13
-; GFX9-NEXT:    v_readlane_b32 s54, v4, 12
+; GFX9-NEXT:    v_readlane_b32 s31, v4, 13
 ; GFX9-NEXT:    v_readlane_b32 s53, v4, 11
 ; GFX9-NEXT:    v_readlane_b32 s52, v4, 10
 ; GFX9-NEXT:    v_readlane_b32 s51, v4, 9
@@ -39925,56 +40708,6 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB69_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr55
-; GFX9-NEXT:    ; implicit-def: $sgpr54
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr53
-; GFX9-NEXT:    ; implicit-def: $sgpr52
-; GFX9-NEXT:    ; implicit-def: $sgpr51
-; GFX9-NEXT:    ; implicit-def: $sgpr50
-; GFX9-NEXT:    ; implicit-def: $sgpr49
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr48
-; GFX9-NEXT:    ; implicit-def: $sgpr39
-; GFX9-NEXT:    ; implicit-def: $sgpr38
-; GFX9-NEXT:    ; implicit-def: $sgpr37
-; GFX9-NEXT:    ; implicit-def: $sgpr36
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr35
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr31
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    s_branch .LBB69_2
 ;
 ; GFX11-LABEL: bitcast_v8i64_to_v64i8_scalar:
 ; GFX11:       ; %bb.0:
@@ -39992,8 +40725,8 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    v_writelane_b32 v23, s30, 7
 ; GFX11-NEXT:    v_writelane_b32 v23, s31, 8
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX11-NEXT:    s_mov_b32 vcc_lo, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB69_4
+; GFX11-NEXT:    s_mov_b32 s48, 0
+; GFX11-NEXT:    s_cbranch_scc0 .LBB69_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s42, s27, 24
 ; GFX11-NEXT:    s_lshr_b32 s44, s27, 16
@@ -40025,16 +40758,16 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b32 s91, s17, 8
 ; GFX11-NEXT:    s_lshr_b32 s95, s16, 16
 ; GFX11-NEXT:    s_lshr_b32 s94, s16, 8
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s3, 24
-; GFX11-NEXT:    s_lshr_b32 s30, s3, 16
-; GFX11-NEXT:    s_lshr_b32 s31, s3, 8
-; GFX11-NEXT:    s_lshr_b32 s34, s2, 16
-; GFX11-NEXT:    s_lshr_b32 s35, s2, 8
-; GFX11-NEXT:    s_lshr_b32 s36, s1, 24
-; GFX11-NEXT:    s_lshr_b32 s37, s1, 16
-; GFX11-NEXT:    s_lshr_b32 s38, s1, 8
-; GFX11-NEXT:    s_lshr_b32 s39, s0, 16
-; GFX11-NEXT:    s_lshr_b32 s48, s0, 8
+; GFX11-NEXT:    s_lshr_b32 vcc_lo, s3, 24
+; GFX11-NEXT:    s_lshr_b32 vcc_hi, s3, 16
+; GFX11-NEXT:    s_lshr_b32 s30, s3, 8
+; GFX11-NEXT:    s_lshr_b32 s31, s2, 16
+; GFX11-NEXT:    s_lshr_b32 s34, s2, 8
+; GFX11-NEXT:    s_lshr_b32 s35, s1, 24
+; GFX11-NEXT:    s_lshr_b32 s36, s1, 16
+; GFX11-NEXT:    s_lshr_b32 s37, s1, 8
+; GFX11-NEXT:    s_lshr_b32 s38, s0, 16
+; GFX11-NEXT:    s_lshr_b32 s39, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[26:27], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[24:25], 24
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[22:23], 24
@@ -40043,9 +40776,64 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b64 s[14:15], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[28:29], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[40:41], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, vcc_lo
-; GFX11-NEXT:    s_cbranch_vccnz .LBB69_3
-; GFX11-NEXT:  .LBB69_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB69_3
+; GFX11-NEXT:  .LBB69_2:
+; GFX11-NEXT:    s_mov_b32 s48, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr39
+; GFX11-NEXT:    ; implicit-def: $sgpr38
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr37
+; GFX11-NEXT:    ; implicit-def: $sgpr36
+; GFX11-NEXT:    ; implicit-def: $sgpr35
+; GFX11-NEXT:    ; implicit-def: $sgpr34
+; GFX11-NEXT:    ; implicit-def: $sgpr31
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:    ; implicit-def: $sgpr30
+; GFX11-NEXT:    ; implicit-def: $vcc_hi
+; GFX11-NEXT:    ; implicit-def: $vcc_lo
+; GFX11-NEXT:    ; implicit-def: $sgpr94
+; GFX11-NEXT:    ; implicit-def: $sgpr95
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr91
+; GFX11-NEXT:    ; implicit-def: $sgpr93
+; GFX11-NEXT:    ; implicit-def: $sgpr92
+; GFX11-NEXT:    ; implicit-def: $sgpr89
+; GFX11-NEXT:    ; implicit-def: $sgpr90
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr79
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:  .LBB69_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s48, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB69_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -40100,30 +40888,30 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b32 s91, s17, 8
 ; GFX11-NEXT:    s_lshr_b32 s95, s16, 16
 ; GFX11-NEXT:    s_lshr_b32 s94, s16, 8
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s3, 24
-; GFX11-NEXT:    s_lshr_b32 s30, s3, 16
-; GFX11-NEXT:    s_lshr_b32 s31, s3, 8
-; GFX11-NEXT:    s_lshr_b32 s34, s2, 16
-; GFX11-NEXT:    s_lshr_b32 s35, s2, 8
-; GFX11-NEXT:    s_lshr_b32 s36, s1, 24
-; GFX11-NEXT:    s_lshr_b32 s37, s1, 16
-; GFX11-NEXT:    s_lshr_b32 s38, s1, 8
-; GFX11-NEXT:    s_lshr_b32 s39, s0, 16
-; GFX11-NEXT:    s_lshr_b32 s48, s0, 8
-; GFX11-NEXT:  .LBB69_3: ; %end
+; GFX11-NEXT:    s_lshr_b32 vcc_lo, s3, 24
+; GFX11-NEXT:    s_lshr_b32 vcc_hi, s3, 16
+; GFX11-NEXT:    s_lshr_b32 s30, s3, 8
+; GFX11-NEXT:    s_lshr_b32 s31, s2, 16
+; GFX11-NEXT:    s_lshr_b32 s34, s2, 8
+; GFX11-NEXT:    s_lshr_b32 s35, s1, 24
+; GFX11-NEXT:    s_lshr_b32 s36, s1, 16
+; GFX11-NEXT:    s_lshr_b32 s37, s1, 8
+; GFX11-NEXT:    s_lshr_b32 s38, s0, 16
+; GFX11-NEXT:    s_lshr_b32 s39, s0, 8
+; GFX11-NEXT:  .LBB69_5: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v12, 0xc0c0004
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_perm_b32 v5, s34, s28, v12
-; GFX11-NEXT:    v_readlane_b32 s34, v23, 0
+; GFX11-NEXT:    v_readlane_b32 s48, v23, 6
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-NEXT:    v_perm_b32 v5, s31, s28, v12
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
-; GFX11-NEXT:    v_perm_b32 v2, s39, s40, v12
-; GFX11-NEXT:    v_perm_b32 v4, s37, s36, v12
-; GFX11-NEXT:    v_perm_b32 v1, s0, s48, v12
-; GFX11-NEXT:    v_perm_b32 v3, s1, s38, v12
-; GFX11-NEXT:    v_perm_b32 v6, s2, s35, v12
+; GFX11-NEXT:    v_perm_b32 v2, s38, s40, v12
+; GFX11-NEXT:    v_perm_b32 v4, s36, s35, v12
+; GFX11-NEXT:    v_perm_b32 v1, s0, s39, v12
+; GFX11-NEXT:    v_perm_b32 v3, s1, s37, v12
+; GFX11-NEXT:    v_perm_b32 v6, s2, s34, v12
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
-; GFX11-NEXT:    v_perm_b32 v8, s30, vcc_hi, v12
+; GFX11-NEXT:    v_perm_b32 v8, vcc_hi, vcc_lo, v12
 ; GFX11-NEXT:    v_perm_b32 v9, s95, s14, v12
 ; GFX11-NEXT:    v_perm_b32 v10, s17, s91, v12
 ; GFX11-NEXT:    v_or_b32_e32 v1, v1, v2
@@ -40135,7 +40923,7 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    v_perm_b32 v8, s90, s12, v12
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v11, 16, v5
-; GFX11-NEXT:    v_perm_b32 v7, s3, s31, v12
+; GFX11-NEXT:    v_perm_b32 v7, s3, s30, v12
 ; GFX11-NEXT:    v_perm_b32 v13, s18, s89, v12
 ; GFX11-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
 ; GFX11-NEXT:    v_or_b32_e32 v5, v6, v9
@@ -40185,67 +40973,17 @@ define inreg <64 x i8> @bitcast_v8i64_to_v64i8_scalar(<8 x i64> inreg %a, i32 in
 ; GFX11-NEXT:    scratch_store_b128 v0, v[9:12], off offset:32
 ; GFX11-NEXT:    scratch_store_b128 v0, v[13:16], off offset:48
 ; GFX11-NEXT:    v_readlane_b32 s31, v23, 8
-; GFX11-NEXT:    v_readlane_b32 s48, v23, 6
 ; GFX11-NEXT:    v_readlane_b32 s39, v23, 5
 ; GFX11-NEXT:    v_readlane_b32 s38, v23, 4
 ; GFX11-NEXT:    v_readlane_b32 s37, v23, 3
 ; GFX11-NEXT:    v_readlane_b32 s36, v23, 2
 ; GFX11-NEXT:    v_readlane_b32 s35, v23, 1
+; GFX11-NEXT:    v_readlane_b32 s34, v23, 0
 ; GFX11-NEXT:    s_xor_saveexec_b32 s0, -1
 ; GFX11-NEXT:    scratch_load_b32 v23, off, s32 ; 4-byte Folded Reload
 ; GFX11-NEXT:    s_mov_b32 exec_lo, s0
 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB69_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr48
-; GFX11-NEXT:    ; implicit-def: $sgpr39
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr38
-; GFX11-NEXT:    ; implicit-def: $sgpr37
-; GFX11-NEXT:    ; implicit-def: $sgpr36
-; GFX11-NEXT:    ; implicit-def: $sgpr35
-; GFX11-NEXT:    ; implicit-def: $sgpr34
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    ; implicit-def: $sgpr31
-; GFX11-NEXT:    ; implicit-def: $sgpr30
-; GFX11-NEXT:    ; implicit-def: $vcc_hi
-; GFX11-NEXT:    ; implicit-def: $sgpr94
-; GFX11-NEXT:    ; implicit-def: $sgpr95
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr91
-; GFX11-NEXT:    ; implicit-def: $sgpr93
-; GFX11-NEXT:    ; implicit-def: $sgpr92
-; GFX11-NEXT:    ; implicit-def: $sgpr89
-; GFX11-NEXT:    ; implicit-def: $sgpr90
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr79
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    s_branch .LBB69_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -42613,7 +43351,7 @@ define inreg <8 x i64> @bitcast_v64i8_to_v8i64_scalar(<64 x i8> inreg %a, i32 in
 ; SI-NEXT:    v_lshlrev_b32_e32 v25, 24, v37
 ; SI-NEXT:    s_waitcnt vmcnt(5)
 ; SI-NEXT:    v_lshlrev_b32_e32 v27, 8, v27
-; SI-NEXT:    s_cbranch_scc0 .LBB71_4
+; SI-NEXT:    s_cbranch_scc0 .LBB71_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s6, 0xff
 ; SI-NEXT:    v_or_b32_e32 v0, s4, v34
@@ -42762,8 +43500,17 @@ define inreg <8 x i64> @bitcast_v64i8_to_v8i64_scalar(<64 x i8> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v8, s91
 ; SI-NEXT:    v_mov_b32_e32 v9, s92
 ; SI-NEXT:    v_mov_b32_e32 v10, s93
-; SI-NEXT:    s_cbranch_execnz .LBB71_3
-; SI-NEXT:  .LBB71_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB71_3
+; SI-NEXT:  .LBB71_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; SI-NEXT:  .LBB71_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB71_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -42974,12 +43721,9 @@ define inreg <8 x i64> @bitcast_v64i8_to_v8i64_scalar(<64 x i8> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v8, s15
 ; SI-NEXT:    v_mov_b32_e32 v9, s11
 ; SI-NEXT:    v_mov_b32_e32 v10, s7
-; SI-NEXT:  .LBB71_3: ; %end
+; SI-NEXT:  .LBB71_5: ; %end
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB71_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; SI-NEXT:    s_branch .LBB71_2
 ;
 ; VI-LABEL: bitcast_v64i8_to_v8i64_scalar:
 ; VI:       ; %bb.0:
@@ -43038,7 +43782,7 @@ define inreg <8 x i64> @bitcast_v64i8_to_v8i64_scalar(<64 x i8> inreg %a, i32 in
 ; VI-NEXT:    s_waitcnt vmcnt(14)
 ; VI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v35
 ; VI-NEXT:    s_and_b64 s[4:5], vcc, exec
-; VI-NEXT:    s_cbranch_scc0 .LBB71_4
+; VI-NEXT:    s_cbranch_scc0 .LBB71_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -43130,8 +43874,17 @@ define inreg <8 x i64> @bitcast_v64i8_to_v8i64_scalar(<64 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; VI-NEXT:    v_perm_b32 v35, v19, v18, s4
 ; VI-NEXT:    v_or_b32_e32 v15, v35, v15
-; VI-NEXT:    s_cbranch_execnz .LBB71_3
-; VI-NEXT:  .LBB71_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB71_3
+; VI-NEXT:  .LBB71_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; VI-NEXT:  .LBB71_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB71_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
@@ -43285,12 +44038,9 @@ define inreg <8 x i64> @bitcast_v64i8_to_v8i64_scalar(<64 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_add_u32_e32 v13, vcc, 0x3000000, v13
 ; VI-NEXT:    v_add_u32_e32 v14, vcc, 0x3000000, v14
 ; VI-NEXT:    v_add_u32_e32 v15, vcc, 0x3000000, v15
-; VI-NEXT:  .LBB71_3: ; %end
+; VI-NEXT:  .LBB71_5: ; %end
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB71_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-NEXT:    s_branch .LBB71_2
 ;
 ; GFX9-LABEL: bitcast_v64i8_to_v8i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -43349,7 +44099,7 @@ define inreg <8 x i64> @bitcast_v64i8_to_v8i64_scalar(<64 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    s_waitcnt vmcnt(19)
 ; GFX9-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v35
 ; GFX9-NEXT:    s_and_b64 s[4:5], vcc, exec
-; GFX9-NEXT:    s_cbranch_scc0 .LBB71_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -43443,8 +44193,17 @@ define inreg <8 x i64> @bitcast_v64i8_to_v8i64_scalar(<64 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; GFX9-NEXT:    v_perm_b32 v35, v19, v18, s4
 ; GFX9-NEXT:    v_or_b32_e32 v15, v35, v15
-; GFX9-NEXT:    s_cbranch_execnz .LBB71_3
-; GFX9-NEXT:  .LBB71_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB71_3
+; GFX9-NEXT:  .LBB71_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX9-NEXT:  .LBB71_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB71_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
@@ -43585,12 +44344,9 @@ define inreg <8 x i64> @bitcast_v64i8_to_v8i64_scalar(<64 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_add_u32_e32 v15, 0x300, v15
 ; GFX9-NEXT:    v_add_u32_sdwa v16, v16, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v15, v15, v16 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB71_3: ; %end
+; GFX9-NEXT:  .LBB71_5: ; %end
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB71_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX9-NEXT:    s_branch .LBB71_2
 ;
 ; GFX11-TRUE16-LABEL: bitcast_v64i8_to_v8i64_scalar:
 ; GFX11-TRUE16:       ; %bb.0:
@@ -43647,7 +44403,7 @@ define inreg <8 x i64> @bitcast_v64i8_to_v8i64_scalar(<64 x i8> inreg %a, i32 in
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v54
 ; GFX11-TRUE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB71_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    v_perm_b32 v16, v37, v34, 0xc0c0004
@@ -43719,9 +44475,17 @@ define inreg <8 x i64> @bitcast_v64i8_to_v8i64_scalar(<64 x i8> inreg %a, i32 in
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v13, v17, v15
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v14, v19, v16
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v15, v20, v18
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB71_3
-; GFX11-TRUE16-NEXT:  .LBB71_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB71_3
+; GFX11-TRUE16-NEXT:  .LBB71_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-TRUE16-NEXT:  .LBB71_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB71_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 3
@@ -43869,12 +44633,9 @@ define inreg <8 x i64> @bitcast_v64i8_to_v8i64_scalar(<64 x i8> inreg %a, i32 in
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v13, v14, v16
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v14, v17, v18
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v15, v19, v20
-; GFX11-TRUE16-NEXT:  .LBB71_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB71_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB71_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-TRUE16-NEXT:    s_branch .LBB71_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v64i8_to_v8i64_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -43931,7 +44692,7 @@ define inreg <8 x i64> @bitcast_v64i8_to_v8i64_scalar(<64 x i8> inreg %a, i32 in
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v54
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB71_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v16, v37, v34, 0xc0c0004
@@ -44003,9 +44764,17 @@ define inreg <8 x i64> @bitcast_v64i8_to_v8i64_scalar(<64 x i8> inreg %a, i32 in
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v13, v17, v15
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v14, v19, v16
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v15, v20, v18
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB71_3
-; GFX11-FAKE16-NEXT:  .LBB71_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB71_3
+; GFX11-FAKE16-NEXT:  .LBB71_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-FAKE16-NEXT:  .LBB71_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB71_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 3
@@ -44153,12 +44922,9 @@ define inreg <8 x i64> @bitcast_v64i8_to_v8i64_scalar(<64 x i8> inreg %a, i32 in
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v13, v14, v16
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v14, v17, v18
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v15, v19, v20
-; GFX11-FAKE16-NEXT:  .LBB71_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB71_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB71_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-FAKE16-NEXT:    s_branch .LBB71_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -44385,7 +45151,7 @@ define inreg <32 x i16> @bitcast_v8f64_to_v32i16_scalar(<8 x double> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB73_3
+; SI-NEXT:    s_cbranch_scc0 .LBB73_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s63, s5, 16
 ; SI-NEXT:    s_lshr_b32 s62, s29, 16
@@ -44403,8 +45169,32 @@ define inreg <32 x i16> @bitcast_v8f64_to_v32i16_scalar(<8 x double> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB73_4
-; SI-NEXT:  .LBB73_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[46:47], 0
+; SI-NEXT:    s_branch .LBB73_3
+; SI-NEXT:  .LBB73_2:
+; SI-NEXT:    s_mov_b64 s[46:47], -1
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:  .LBB73_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB73_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
 ; SI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -44429,26 +45219,8 @@ define inreg <32 x i16> @bitcast_v8f64_to_v32i16_scalar(<8 x double> inreg %a, i
 ; SI-NEXT:    v_lshrrev_b32_e32 v30, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v31, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v32, 16, v1
-; SI-NEXT:    s_branch .LBB73_5
-; SI-NEXT:  .LBB73_3:
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    s_branch .LBB73_2
-; SI-NEXT:  .LBB73_4:
+; SI-NEXT:    s_branch .LBB73_6
+; SI-NEXT:  .LBB73_5:
 ; SI-NEXT:    v_mov_b32_e32 v15, s5
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    v_mov_b32_e32 v11, s27
@@ -44481,7 +45253,7 @@ define inreg <32 x i16> @bitcast_v8f64_to_v32i16_scalar(<8 x double> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v18, s10
 ; SI-NEXT:    v_mov_b32_e32 v17, s8
 ; SI-NEXT:    v_mov_b32_e32 v16, s6
-; SI-NEXT:  .LBB73_5: ; %end
+; SI-NEXT:  .LBB73_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v23, 16, v23
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v22, 16, v22
@@ -44544,10 +45316,18 @@ define inreg <32 x i16> @bitcast_v8f64_to_v32i16_scalar(<8 x double> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB73_3
+; VI-NEXT:    s_cbranch_scc0 .LBB73_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB73_4
-; VI-NEXT:  .LBB73_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB73_3
+; VI-NEXT:  .LBB73_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB73_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB73_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -44556,10 +45336,8 @@ define inreg <32 x i16> @bitcast_v8f64_to_v32i16_scalar(<8 x double> inreg %a, i
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; VI-NEXT:    s_branch .LBB73_5
-; VI-NEXT:  .LBB73_3:
-; VI-NEXT:    s_branch .LBB73_2
-; VI-NEXT:  .LBB73_4:
+; VI-NEXT:    s_branch .LBB73_6
+; VI-NEXT:  .LBB73_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -44576,7 +45354,7 @@ define inreg <32 x i16> @bitcast_v8f64_to_v32i16_scalar(<8 x double> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB73_5: ; %end
+; VI-NEXT:  .LBB73_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v16, 0
 ; VI-NEXT:    v_readlane_b32 s31, v16, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -44597,10 +45375,18 @@ define inreg <32 x i16> @bitcast_v8f64_to_v32i16_scalar(<8 x double> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB73_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB73_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB73_4
-; GFX9-NEXT:  .LBB73_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB73_3
+; GFX9-NEXT:  .LBB73_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB73_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB73_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -44609,10 +45395,8 @@ define inreg <32 x i16> @bitcast_v8f64_to_v32i16_scalar(<8 x double> inreg %a, i
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; GFX9-NEXT:    s_branch .LBB73_5
-; GFX9-NEXT:  .LBB73_3:
-; GFX9-NEXT:    s_branch .LBB73_2
-; GFX9-NEXT:  .LBB73_4:
+; GFX9-NEXT:    s_branch .LBB73_6
+; GFX9-NEXT:  .LBB73_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -44629,7 +45413,7 @@ define inreg <32 x i16> @bitcast_v8f64_to_v32i16_scalar(<8 x double> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB73_5: ; %end
+; GFX9-NEXT:  .LBB73_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -44647,11 +45431,16 @@ define inreg <32 x i16> @bitcast_v8f64_to_v32i16_scalar(<8 x double> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB73_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB73_4
-; GFX11-NEXT:  .LBB73_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB73_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB73_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB73_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[14:15], s[26:27], 1.0
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
@@ -44661,8 +45450,6 @@ define inreg <32 x i16> @bitcast_v8f64_to_v32i16_scalar(<8 x double> inreg %a, i
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB73_3:
-; GFX11-NEXT:    s_branch .LBB73_2
 ; GFX11-NEXT:  .LBB73_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -45062,7 +45849,7 @@ define inreg <8 x double> @bitcast_v32i16_to_v8f64_scalar(<32 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s11, s12, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB75_4
+; SI-NEXT:    s_cbranch_scc0 .LBB75_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
@@ -45112,8 +45899,17 @@ define inreg <8 x double> @bitcast_v32i16_to_v8f64_scalar(<32 x i16> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s9, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB75_3
-; SI-NEXT:  .LBB75_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB75_3
+; SI-NEXT:  .LBB75_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB75_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB75_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
@@ -45194,7 +45990,7 @@ define inreg <8 x double> @bitcast_v32i16_to_v8f64_scalar(<32 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:  .LBB75_3: ; %end
+; SI-NEXT:  .LBB75_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -45224,9 +46020,6 @@ define inreg <8 x double> @bitcast_v32i16_to_v8f64_scalar(<32 x i16> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB75_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB75_2
 ;
 ; VI-LABEL: bitcast_v32i16_to_v8f64_scalar:
 ; VI:       ; %bb.0:
@@ -45235,10 +46028,18 @@ define inreg <8 x double> @bitcast_v32i16_to_v8f64_scalar(<32 x i16> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB75_4
+; VI-NEXT:    s_cbranch_scc0 .LBB75_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB75_3
-; VI-NEXT:  .LBB75_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB75_3
+; VI-NEXT:  .LBB75_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB75_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB75_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s6, 3
 ; VI-NEXT:    s_and_b32 s4, s6, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -45319,7 +46120,7 @@ define inreg <8 x double> @bitcast_v32i16_to_v8f64_scalar(<32 x i16> inreg %a, i
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB75_3: ; %end
+; VI-NEXT:  .LBB75_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -45337,8 +46138,6 @@ define inreg <8 x double> @bitcast_v32i16_to_v8f64_scalar(<32 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB75_4:
-; VI-NEXT:    s_branch .LBB75_2
 ;
 ; GFX9-LABEL: bitcast_v32i16_to_v8f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -45352,10 +46151,18 @@ define inreg <8 x double> @bitcast_v32i16_to_v8f64_scalar(<32 x i16> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB75_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB75_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB75_4
-; GFX9-NEXT:  .LBB75_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB75_3
+; GFX9-NEXT:  .LBB75_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB75_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB75_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v15, s31, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v14, s30, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v13, s29, 3 op_sel_hi:[1,0]
@@ -45372,10 +46179,8 @@ define inreg <8 x double> @bitcast_v32i16_to_v8f64_scalar(<32 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB75_5
-; GFX9-NEXT:  .LBB75_3:
-; GFX9-NEXT:    s_branch .LBB75_2
-; GFX9-NEXT:  .LBB75_4:
+; GFX9-NEXT:    s_branch .LBB75_6
+; GFX9-NEXT:  .LBB75_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -45392,7 +46197,7 @@ define inreg <8 x double> @bitcast_v32i16_to_v8f64_scalar(<32 x i16> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB75_5: ; %end
+; GFX9-NEXT:  .LBB75_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -45410,11 +46215,16 @@ define inreg <8 x double> @bitcast_v32i16_to_v8f64_scalar(<32 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB75_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB75_4
-; GFX11-NEXT:  .LBB75_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB75_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB75_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB75_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v15, s27, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v14, s26, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v13, s25, 3 op_sel_hi:[1,0]
@@ -45432,8 +46242,6 @@ define inreg <8 x double> @bitcast_v32i16_to_v8f64_scalar(<32 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB75_3:
-; GFX11-NEXT:    s_branch .LBB75_2
 ; GFX11-NEXT:  .LBB75_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -45670,7 +46478,7 @@ define inreg <32 x half> @bitcast_v8f64_to_v32f16_scalar(<8 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB77_3
+; SI-NEXT:    s_cbranch_scc0 .LBB77_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s63, s5, 16
 ; SI-NEXT:    s_lshr_b32 s62, s29, 16
@@ -45688,8 +46496,32 @@ define inreg <32 x half> @bitcast_v8f64_to_v32f16_scalar(<8 x double> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB77_4
-; SI-NEXT:  .LBB77_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[46:47], 0
+; SI-NEXT:    s_branch .LBB77_3
+; SI-NEXT:  .LBB77_2:
+; SI-NEXT:    s_mov_b64 s[46:47], -1
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:  .LBB77_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB77_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
 ; SI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -45714,26 +46546,8 @@ define inreg <32 x half> @bitcast_v8f64_to_v32f16_scalar(<8 x double> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v30, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v31, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v32, 16, v1
-; SI-NEXT:    s_branch .LBB77_5
-; SI-NEXT:  .LBB77_3:
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    s_branch .LBB77_2
-; SI-NEXT:  .LBB77_4:
+; SI-NEXT:    s_branch .LBB77_6
+; SI-NEXT:  .LBB77_5:
 ; SI-NEXT:    v_mov_b32_e32 v15, s5
 ; SI-NEXT:    v_mov_b32_e32 v13, s29
 ; SI-NEXT:    v_mov_b32_e32 v11, s27
@@ -45766,7 +46580,7 @@ define inreg <32 x half> @bitcast_v8f64_to_v32f16_scalar(<8 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v18, s10
 ; SI-NEXT:    v_mov_b32_e32 v17, s8
 ; SI-NEXT:    v_mov_b32_e32 v16, s6
-; SI-NEXT:  .LBB77_5: ; %end
+; SI-NEXT:  .LBB77_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v23, 16, v23
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v22, 16, v22
@@ -45829,10 +46643,18 @@ define inreg <32 x half> @bitcast_v8f64_to_v32f16_scalar(<8 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB77_3
+; VI-NEXT:    s_cbranch_scc0 .LBB77_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB77_4
-; VI-NEXT:  .LBB77_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB77_3
+; VI-NEXT:  .LBB77_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB77_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB77_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -45841,10 +46663,8 @@ define inreg <32 x half> @bitcast_v8f64_to_v32f16_scalar(<8 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; VI-NEXT:    s_branch .LBB77_5
-; VI-NEXT:  .LBB77_3:
-; VI-NEXT:    s_branch .LBB77_2
-; VI-NEXT:  .LBB77_4:
+; VI-NEXT:    s_branch .LBB77_6
+; VI-NEXT:  .LBB77_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -45861,7 +46681,7 @@ define inreg <32 x half> @bitcast_v8f64_to_v32f16_scalar(<8 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB77_5: ; %end
+; VI-NEXT:  .LBB77_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v16, 0
 ; VI-NEXT:    v_readlane_b32 s31, v16, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -45882,10 +46702,18 @@ define inreg <32 x half> @bitcast_v8f64_to_v32f16_scalar(<8 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB77_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB77_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB77_4
-; GFX9-NEXT:  .LBB77_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB77_3
+; GFX9-NEXT:  .LBB77_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB77_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB77_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -45894,10 +46722,8 @@ define inreg <32 x half> @bitcast_v8f64_to_v32f16_scalar(<8 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; GFX9-NEXT:    s_branch .LBB77_5
-; GFX9-NEXT:  .LBB77_3:
-; GFX9-NEXT:    s_branch .LBB77_2
-; GFX9-NEXT:  .LBB77_4:
+; GFX9-NEXT:    s_branch .LBB77_6
+; GFX9-NEXT:  .LBB77_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -45914,7 +46740,7 @@ define inreg <32 x half> @bitcast_v8f64_to_v32f16_scalar(<8 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB77_5: ; %end
+; GFX9-NEXT:  .LBB77_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -45932,11 +46758,16 @@ define inreg <32 x half> @bitcast_v8f64_to_v32f16_scalar(<8 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB77_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB77_4
-; GFX11-NEXT:  .LBB77_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB77_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB77_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB77_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[14:15], s[26:27], 1.0
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
@@ -45946,8 +46777,6 @@ define inreg <32 x half> @bitcast_v8f64_to_v32f16_scalar(<8 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB77_3:
-; GFX11-NEXT:    s_branch .LBB77_2
 ; GFX11-NEXT:  .LBB77_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -46411,7 +47240,7 @@ define inreg <8 x double> @bitcast_v32f16_to_v8f64_scalar(<32 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s10, s8, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB79_3
+; SI-NEXT:    s_cbranch_scc0 .LBB79_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s63, 16
@@ -46461,8 +47290,17 @@ define inreg <8 x double> @bitcast_v32f16_to_v8f64_scalar(<32 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB79_4
-; SI-NEXT:  .LBB79_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB79_3
+; SI-NEXT:  .LBB79_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
+; SI-NEXT:  .LBB79_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB79_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s63
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s62
@@ -46591,11 +47429,8 @@ define inreg <8 x double> @bitcast_v32f16_to_v8f64_scalar(<32 x half> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v14, v15, v14
 ; SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v16
 ; SI-NEXT:    v_or_b32_e32 v15, v17, v15
-; SI-NEXT:    s_branch .LBB79_5
-; SI-NEXT:  .LBB79_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51
-; SI-NEXT:    s_branch .LBB79_2
-; SI-NEXT:  .LBB79_4:
+; SI-NEXT:    s_branch .LBB79_6
+; SI-NEXT:  .LBB79_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -46612,7 +47447,7 @@ define inreg <8 x double> @bitcast_v32f16_to_v8f64_scalar(<32 x half> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v13, s49
 ; SI-NEXT:    v_mov_b32_e32 v14, s50
 ; SI-NEXT:    v_mov_b32_e32 v15, s51
-; SI-NEXT:  .LBB79_5: ; %end
+; SI-NEXT:  .LBB79_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s51, v18, 7
 ; SI-NEXT:    v_readlane_b32 s50, v18, 6
 ; SI-NEXT:    v_readlane_b32 s49, v18, 5
@@ -46639,10 +47474,18 @@ define inreg <8 x double> @bitcast_v32f16_to_v8f64_scalar(<32 x half> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB79_3
+; VI-NEXT:    s_cbranch_scc0 .LBB79_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB79_4
-; VI-NEXT:  .LBB79_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB79_3
+; VI-NEXT:  .LBB79_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB79_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB79_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s31, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -46724,10 +47567,8 @@ define inreg <8 x double> @bitcast_v32f16_to_v8f64_scalar(<32 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v16
-; VI-NEXT:    s_branch .LBB79_5
-; VI-NEXT:  .LBB79_3:
-; VI-NEXT:    s_branch .LBB79_2
-; VI-NEXT:  .LBB79_4:
+; VI-NEXT:    s_branch .LBB79_6
+; VI-NEXT:  .LBB79_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -46744,7 +47585,7 @@ define inreg <8 x double> @bitcast_v32f16_to_v8f64_scalar(<32 x half> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB79_5: ; %end
+; VI-NEXT:  .LBB79_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v17, 0
 ; VI-NEXT:    v_readlane_b32 s31, v17, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -46765,10 +47606,18 @@ define inreg <8 x double> @bitcast_v32f16_to_v8f64_scalar(<32 x half> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB79_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB79_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB79_4
-; GFX9-NEXT:  .LBB79_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB79_3
+; GFX9-NEXT:  .LBB79_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB79_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB79_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v15, s31, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v14, s30, v0 op_sel_hi:[1,0]
@@ -46786,10 +47635,8 @@ define inreg <8 x double> @bitcast_v32f16_to_v8f64_scalar(<32 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB79_5
-; GFX9-NEXT:  .LBB79_3:
-; GFX9-NEXT:    s_branch .LBB79_2
-; GFX9-NEXT:  .LBB79_4:
+; GFX9-NEXT:    s_branch .LBB79_6
+; GFX9-NEXT:  .LBB79_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -46806,7 +47653,7 @@ define inreg <8 x double> @bitcast_v32f16_to_v8f64_scalar(<32 x half> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB79_5: ; %end
+; GFX9-NEXT:  .LBB79_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -46824,11 +47671,16 @@ define inreg <8 x double> @bitcast_v32f16_to_v8f64_scalar(<32 x half> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB79_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB79_4
-; GFX11-NEXT:  .LBB79_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB79_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB79_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB79_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v15, 0x200, s27 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v14, 0x200, s26 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s25 op_sel_hi:[0,1]
@@ -46846,8 +47698,6 @@ define inreg <8 x double> @bitcast_v32f16_to_v8f64_scalar(<32 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB79_3:
-; GFX11-NEXT:    s_branch .LBB79_2
 ; GFX11-NEXT:  .LBB79_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -47156,7 +48006,7 @@ define inreg <32 x bfloat> @bitcast_v8f64_to_v32bf16_scalar(<8 x double> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB81_3
+; SI-NEXT:    s_cbranch_scc0 .LBB81_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s79, s5, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s78, s5, 16
@@ -47190,8 +48040,48 @@ define inreg <32 x bfloat> @bitcast_v8f64_to_v32bf16_scalar(<8 x double> inreg %
 ; SI-NEXT:    s_lshl_b32 s10, s17, 16
 ; SI-NEXT:    s_and_b32 s9, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s8, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB81_4
-; SI-NEXT:  .LBB81_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB81_3
+; SI-NEXT:  .LBB81_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:  .LBB81_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB81_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[19:20], s[22:23], 1.0
 ; SI-NEXT:    v_add_f64 v[14:15], s[24:25], 1.0
 ; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -47232,42 +48122,8 @@ define inreg <32 x bfloat> @bitcast_v8f64_to_v32bf16_scalar(<8 x double> inreg %
 ; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v31
 ; SI-NEXT:    v_and_b32_e32 v31, 0xffff0000, v30
 ; SI-NEXT:    v_lshlrev_b32_e32 v30, 16, v30
-; SI-NEXT:    s_branch .LBB81_5
-; SI-NEXT:  .LBB81_3:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    s_branch .LBB81_2
-; SI-NEXT:  .LBB81_4:
+; SI-NEXT:    s_branch .LBB81_6
+; SI-NEXT:  .LBB81_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s79
 ; SI-NEXT:    v_mov_b32_e32 v0, s78
 ; SI-NEXT:    v_mov_b32_e32 v3, s77
@@ -47300,7 +48156,7 @@ define inreg <32 x bfloat> @bitcast_v8f64_to_v32bf16_scalar(<8 x double> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v28, s10
 ; SI-NEXT:    v_mov_b32_e32 v31, s9
 ; SI-NEXT:    v_mov_b32_e32 v30, s8
-; SI-NEXT:  .LBB81_5: ; %end
+; SI-NEXT:  .LBB81_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v31, 1.0, v31
 ; SI-NEXT:    v_lshrrev_b32_e32 v31, 16, v31
 ; SI-NEXT:    v_mul_f32_e32 v30, 1.0, v30
@@ -47379,10 +48235,18 @@ define inreg <32 x bfloat> @bitcast_v8f64_to_v32bf16_scalar(<8 x double> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB81_3
+; VI-NEXT:    s_cbranch_scc0 .LBB81_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB81_4
-; VI-NEXT:  .LBB81_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB81_3
+; VI-NEXT:  .LBB81_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB81_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB81_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -47391,10 +48255,8 @@ define inreg <32 x bfloat> @bitcast_v8f64_to_v32bf16_scalar(<8 x double> inreg %
 ; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; VI-NEXT:    s_branch .LBB81_5
-; VI-NEXT:  .LBB81_3:
-; VI-NEXT:    s_branch .LBB81_2
-; VI-NEXT:  .LBB81_4:
+; VI-NEXT:    s_branch .LBB81_6
+; VI-NEXT:  .LBB81_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -47411,7 +48273,7 @@ define inreg <32 x bfloat> @bitcast_v8f64_to_v32bf16_scalar(<8 x double> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB81_5: ; %end
+; VI-NEXT:  .LBB81_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v16, 0
 ; VI-NEXT:    v_readlane_b32 s31, v16, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -47432,10 +48294,18 @@ define inreg <32 x bfloat> @bitcast_v8f64_to_v32bf16_scalar(<8 x double> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB81_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB81_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB81_4
-; GFX9-NEXT:  .LBB81_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB81_3
+; GFX9-NEXT:  .LBB81_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB81_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB81_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[30:31], 1.0
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
 ; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
@@ -47444,10 +48314,8 @@ define inreg <32 x bfloat> @bitcast_v8f64_to_v32bf16_scalar(<8 x double> inreg %
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; GFX9-NEXT:    s_branch .LBB81_5
-; GFX9-NEXT:  .LBB81_3:
-; GFX9-NEXT:    s_branch .LBB81_2
-; GFX9-NEXT:  .LBB81_4:
+; GFX9-NEXT:    s_branch .LBB81_6
+; GFX9-NEXT:  .LBB81_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -47464,7 +48332,7 @@ define inreg <32 x bfloat> @bitcast_v8f64_to_v32bf16_scalar(<8 x double> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB81_5: ; %end
+; GFX9-NEXT:  .LBB81_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -47482,11 +48350,16 @@ define inreg <32 x bfloat> @bitcast_v8f64_to_v32bf16_scalar(<8 x double> inreg %
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB81_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB81_4
-; GFX11-NEXT:  .LBB81_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB81_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB81_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB81_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[14:15], s[26:27], 1.0
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
 ; GFX11-NEXT:    v_add_f64 v[10:11], s[22:23], 1.0
@@ -47496,8 +48369,6 @@ define inreg <32 x bfloat> @bitcast_v8f64_to_v32bf16_scalar(<8 x double> inreg %
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[14:15], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[12:13], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB81_3:
-; GFX11-NEXT:    s_branch .LBB81_2
 ; GFX11-NEXT:  .LBB81_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -49020,7 +49891,7 @@ define inreg <8 x double> @bitcast_v32bf16_to_v8f64_scalar(<32 x bfloat> inreg %
 ; SI-NEXT:    v_mul_f32_e64 v21, 1.0, s5
 ; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s44
 ; SI-NEXT:    v_mul_f32_e64 v17, 1.0, s42
-; SI-NEXT:    s_cbranch_scc0 .LBB83_4
+; SI-NEXT:    s_cbranch_scc0 .LBB83_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v53, 16, v41
 ; SI-NEXT:    v_lshrrev_b32_e32 v49, 16, v63
@@ -49056,8 +49927,17 @@ define inreg <8 x double> @bitcast_v32bf16_to_v8f64_scalar(<32 x bfloat> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v20, v16
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[17:18], 16
 ; SI-NEXT:    v_mov_b32_e32 v16, v20
-; SI-NEXT:    s_cbranch_execnz .LBB83_3
-; SI-NEXT:  .LBB83_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB83_3
+; SI-NEXT:  .LBB83_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; SI-NEXT:  .LBB83_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB83_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v41
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v52
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -49154,7 +50034,7 @@ define inreg <8 x double> @bitcast_v32bf16_to_v8f64_scalar(<32 x bfloat> inreg %
 ; SI-NEXT:    v_add_f32_e32 v15, 0x40c00000, v15
 ; SI-NEXT:    v_lshrrev_b32_e32 v16, 16, v16
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[15:16], 16
-; SI-NEXT:  .LBB83_3: ; %end
+; SI-NEXT:  .LBB83_5: ; %end
 ; SI-NEXT:    buffer_load_dword v63, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v62, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v61, off, s[0:3], s32 offset:8 ; 4-byte Folded Reload
@@ -49173,9 +50053,6 @@ define inreg <8 x double> @bitcast_v32bf16_to_v8f64_scalar(<32 x bfloat> inreg %
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:60 ; 4-byte Folded Reload
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB83_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; SI-NEXT:    s_branch .LBB83_2
 ;
 ; VI-LABEL: bitcast_v32bf16_to_v8f64_scalar:
 ; VI:       ; %bb.0:
@@ -49189,10 +50066,18 @@ define inreg <8 x double> @bitcast_v32bf16_to_v8f64_scalar(<32 x bfloat> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB83_3
+; VI-NEXT:    s_cbranch_scc0 .LBB83_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB83_4
-; VI-NEXT:  .LBB83_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB83_3
+; VI-NEXT:  .LBB83_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB83_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB83_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v16, 0x40c00000
 ; VI-NEXT:    s_lshl_b32 s4, s30, 16
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v16
@@ -49490,10 +50375,8 @@ define inreg <8 x double> @bitcast_v32bf16_to_v8f64_scalar(<32 x bfloat> inreg %
 ; VI-NEXT:    v_lshrrev_b64 v[16:17], 16, v[17:18]
 ; VI-NEXT:    v_mov_b32_e32 v13, v15
 ; VI-NEXT:    v_mov_b32_e32 v15, v16
-; VI-NEXT:    s_branch .LBB83_5
-; VI-NEXT:  .LBB83_3:
-; VI-NEXT:    s_branch .LBB83_2
-; VI-NEXT:  .LBB83_4:
+; VI-NEXT:    s_branch .LBB83_6
+; VI-NEXT:  .LBB83_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -49510,7 +50393,7 @@ define inreg <8 x double> @bitcast_v32bf16_to_v8f64_scalar(<32 x bfloat> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB83_5: ; %end
+; VI-NEXT:  .LBB83_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v20, 0
 ; VI-NEXT:    v_readlane_b32 s31, v20, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -49531,10 +50414,18 @@ define inreg <8 x double> @bitcast_v32bf16_to_v8f64_scalar(<32 x bfloat> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB83_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB83_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB83_4
-; GFX9-NEXT:  .LBB83_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB83_3
+; GFX9-NEXT:  .LBB83_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB83_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB83_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s4, s31, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -49841,10 +50732,8 @@ define inreg <8 x double> @bitcast_v32bf16_to_v8f64_scalar(<32 x bfloat> inreg %
 ; GFX9-NEXT:    v_cndmask_b32_e32 v17, v18, v19, vcc
 ; GFX9-NEXT:    v_and_b32_sdwa v16, v16, v17 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v0, 16, v16
-; GFX9-NEXT:    s_branch .LBB83_5
-; GFX9-NEXT:  .LBB83_3:
-; GFX9-NEXT:    s_branch .LBB83_2
-; GFX9-NEXT:  .LBB83_4:
+; GFX9-NEXT:    s_branch .LBB83_6
+; GFX9-NEXT:  .LBB83_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -49861,7 +50750,7 @@ define inreg <8 x double> @bitcast_v32bf16_to_v8f64_scalar(<32 x bfloat> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB83_5: ; %end
+; GFX9-NEXT:  .LBB83_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v20, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v20, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -49879,11 +50768,16 @@ define inreg <8 x double> @bitcast_v32bf16_to_v8f64_scalar(<32 x bfloat> inreg %
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB83_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB83_4
-; GFX11-TRUE16-NEXT:  .LBB83_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB83_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:  .LBB83_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB83_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s0, s27, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s27, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -50193,8 +51087,6 @@ define inreg <8 x double> @bitcast_v32bf16_to_v8f64_scalar(<32 x bfloat> inreg %
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v18
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v17.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB83_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB83_2
 ; GFX11-TRUE16-NEXT:  .LBB83_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -50215,11 +51107,16 @@ define inreg <8 x double> @bitcast_v32bf16_to_v8f64_scalar(<32 x bfloat> inreg %
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB83_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB83_4
-; GFX11-FAKE16-NEXT:  .LBB83_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB83_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:  .LBB83_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB83_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_and_b32 s1, s27, 0xffff0000
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s27, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s1
@@ -50548,8 +51445,6 @@ define inreg <8 x double> @bitcast_v32bf16_to_v8f64_scalar(<32 x bfloat> inreg %
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v2, v16, 16, v21
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v20, 16, v17
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB83_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB83_2
 ; GFX11-FAKE16-NEXT:  .LBB83_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -52040,40 +52935,38 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    v_writelane_b32 v40, s83, 25
 ; SI-NEXT:    v_writelane_b32 v40, s84, 26
 ; SI-NEXT:    v_writelane_b32 v40, s85, 27
-; SI-NEXT:    v_writelane_b32 v40, s86, 28
-; SI-NEXT:    v_writelane_b32 v40, s87, 29
-; SI-NEXT:    v_writelane_b32 v40, s30, 30
-; SI-NEXT:    v_writelane_b32 v40, s31, 31
+; SI-NEXT:    v_writelane_b32 v40, s30, 28
+; SI-NEXT:    v_writelane_b32 v40, s31, 29
 ; SI-NEXT:    v_readfirstlane_b32 s4, v3
 ; SI-NEXT:    v_readfirstlane_b32 s5, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v1
-; SI-NEXT:    s_cbranch_scc0 .LBB85_3
+; SI-NEXT:    s_cbranch_scc0 .LBB85_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s48, s5, 24
-; SI-NEXT:    s_lshr_b32 s49, s5, 16
-; SI-NEXT:    s_lshr_b32 s50, s5, 8
-; SI-NEXT:    s_lshr_b32 s51, s29, 24
-; SI-NEXT:    s_lshr_b32 s52, s29, 16
-; SI-NEXT:    s_lshr_b32 s53, s29, 8
-; SI-NEXT:    s_lshr_b32 s54, s27, 24
-; SI-NEXT:    s_lshr_b32 s55, s27, 16
-; SI-NEXT:    s_lshr_b32 s64, s27, 8
-; SI-NEXT:    s_lshr_b32 s65, s25, 24
-; SI-NEXT:    s_lshr_b32 s66, s25, 16
-; SI-NEXT:    s_lshr_b32 s67, s25, 8
-; SI-NEXT:    s_lshr_b32 s68, s23, 24
-; SI-NEXT:    s_lshr_b32 s69, s23, 16
-; SI-NEXT:    s_lshr_b32 s70, s23, 8
-; SI-NEXT:    s_lshr_b32 s71, s21, 24
-; SI-NEXT:    s_lshr_b32 s80, s21, 16
-; SI-NEXT:    s_lshr_b32 s81, s21, 8
-; SI-NEXT:    s_lshr_b32 s82, s19, 24
-; SI-NEXT:    s_lshr_b32 s83, s19, 16
-; SI-NEXT:    s_lshr_b32 s84, s19, 8
-; SI-NEXT:    s_lshr_b32 s85, s17, 24
-; SI-NEXT:    s_lshr_b32 s86, s17, 16
-; SI-NEXT:    s_lshr_b32 s87, s17, 8
+; SI-NEXT:    s_lshr_b32 s38, s5, 24
+; SI-NEXT:    s_lshr_b32 s39, s5, 16
+; SI-NEXT:    s_lshr_b32 s48, s5, 8
+; SI-NEXT:    s_lshr_b32 s49, s29, 24
+; SI-NEXT:    s_lshr_b32 s50, s29, 16
+; SI-NEXT:    s_lshr_b32 s51, s29, 8
+; SI-NEXT:    s_lshr_b32 s52, s27, 24
+; SI-NEXT:    s_lshr_b32 s53, s27, 16
+; SI-NEXT:    s_lshr_b32 s54, s27, 8
+; SI-NEXT:    s_lshr_b32 s55, s25, 24
+; SI-NEXT:    s_lshr_b32 s64, s25, 16
+; SI-NEXT:    s_lshr_b32 s65, s25, 8
+; SI-NEXT:    s_lshr_b32 s66, s23, 24
+; SI-NEXT:    s_lshr_b32 s67, s23, 16
+; SI-NEXT:    s_lshr_b32 s68, s23, 8
+; SI-NEXT:    s_lshr_b32 s69, s21, 24
+; SI-NEXT:    s_lshr_b32 s70, s21, 16
+; SI-NEXT:    s_lshr_b32 s71, s21, 8
+; SI-NEXT:    s_lshr_b32 s80, s19, 24
+; SI-NEXT:    s_lshr_b32 s81, s19, 16
+; SI-NEXT:    s_lshr_b32 s82, s19, 8
+; SI-NEXT:    s_lshr_b32 s83, s17, 24
+; SI-NEXT:    s_lshr_b32 s84, s17, 16
+; SI-NEXT:    s_lshr_b32 s85, s17, 8
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[4:5], 24
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[4:5], 8
@@ -52085,10 +52978,10 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[26:27], 8
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[24:25], 24
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[24:25], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[24:25], 8
-; SI-NEXT:    s_lshr_b64 s[34:35], s[22:23], 24
-; SI-NEXT:    s_lshr_b64 s[36:37], s[22:23], 16
-; SI-NEXT:    s_lshr_b64 s[38:39], s[22:23], 8
+; SI-NEXT:    s_lshr_b64 vcc, s[24:25], 8
+; SI-NEXT:    s_lshr_b64 s[30:31], s[22:23], 24
+; SI-NEXT:    s_lshr_b64 s[34:35], s[22:23], 16
+; SI-NEXT:    s_lshr_b64 s[36:37], s[22:23], 8
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[20:21], 24
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 8
@@ -52098,91 +52991,25 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB85_4
-; SI-NEXT:  .LBB85_2: ; %cmp.true
-; SI-NEXT:    v_add_f64 v[28:29], s[18:19], 1.0
-; SI-NEXT:    v_add_f64 v[5:6], s[26:27], 1.0
-; SI-NEXT:    v_add_f64 v[13:14], s[22:23], 1.0
-; SI-NEXT:    v_add_f64 v[3:4], s[28:29], 1.0
-; SI-NEXT:    v_lshr_b64 v[48:49], v[28:29], 24
-; SI-NEXT:    v_add_f64 v[1:2], s[4:5], 1.0
-; SI-NEXT:    v_add_f64 v[7:8], s[24:25], 1.0
-; SI-NEXT:    v_add_f64 v[20:21], s[20:21], 1.0
-; SI-NEXT:    v_add_f64 v[32:33], s[16:17], 1.0
-; SI-NEXT:    v_lshr_b64 v[22:23], v[5:6], 16
-; SI-NEXT:    v_lshr_b64 v[34:35], v[13:14], 16
-; SI-NEXT:    v_lshr_b64 v[49:50], v[28:29], 16
-; SI-NEXT:    v_lshr_b64 v[15:16], v[3:4], 24
-; SI-NEXT:    v_lshr_b64 v[23:24], v[5:6], 8
-; SI-NEXT:    v_lshr_b64 v[35:36], v[13:14], 8
-; SI-NEXT:    v_lshr_b64 v[50:51], v[28:29], 8
-; SI-NEXT:    v_lshr_b64 v[9:10], v[1:2], 24
-; SI-NEXT:    v_lshr_b64 v[16:17], v[3:4], 16
-; SI-NEXT:    v_lshr_b64 v[24:25], v[7:8], 24
-; SI-NEXT:    v_lshr_b64 v[36:37], v[20:21], 24
-; SI-NEXT:    v_lshr_b64 v[51:52], v[32:33], 24
-; SI-NEXT:    v_lshr_b64 v[10:11], v[1:2], 16
-; SI-NEXT:    v_lshr_b64 v[17:18], v[3:4], 8
-; SI-NEXT:    v_lshr_b64 v[25:26], v[7:8], 16
-; SI-NEXT:    v_lshr_b64 v[37:38], v[20:21], 16
-; SI-NEXT:    v_lshr_b64 v[52:53], v[32:33], 16
-; SI-NEXT:    v_readfirstlane_b32 s17, v33
-; SI-NEXT:    v_readfirstlane_b32 s19, v29
-; SI-NEXT:    v_readfirstlane_b32 s21, v21
-; SI-NEXT:    v_readfirstlane_b32 s23, v14
-; SI-NEXT:    v_readfirstlane_b32 s25, v8
-; SI-NEXT:    v_readfirstlane_b32 s27, v6
-; SI-NEXT:    v_readfirstlane_b32 s29, v4
-; SI-NEXT:    v_readfirstlane_b32 s5, v2
-; SI-NEXT:    v_lshr_b64 v[11:12], v[1:2], 8
-; SI-NEXT:    v_lshr_b64 v[18:19], v[5:6], 24
-; SI-NEXT:    v_lshr_b64 v[26:27], v[7:8], 8
-; SI-NEXT:    v_lshr_b64 v[30:31], v[13:14], 24
-; SI-NEXT:    v_lshr_b64 v[38:39], v[20:21], 8
-; SI-NEXT:    v_lshr_b64 v[53:54], v[32:33], 8
-; SI-NEXT:    s_lshr_b32 s48, s5, 24
-; SI-NEXT:    s_lshr_b32 s49, s5, 16
-; SI-NEXT:    s_lshr_b32 s50, s5, 8
-; SI-NEXT:    s_lshr_b32 s51, s29, 24
-; SI-NEXT:    s_lshr_b32 s52, s29, 16
-; SI-NEXT:    s_lshr_b32 s53, s29, 8
-; SI-NEXT:    s_lshr_b32 s54, s27, 24
-; SI-NEXT:    s_lshr_b32 s55, s27, 16
-; SI-NEXT:    s_lshr_b32 s64, s27, 8
-; SI-NEXT:    s_lshr_b32 s65, s25, 24
-; SI-NEXT:    s_lshr_b32 s66, s25, 16
-; SI-NEXT:    s_lshr_b32 s67, s25, 8
-; SI-NEXT:    s_lshr_b32 s68, s23, 24
-; SI-NEXT:    s_lshr_b32 s69, s23, 16
-; SI-NEXT:    s_lshr_b32 s70, s23, 8
-; SI-NEXT:    s_lshr_b32 s71, s21, 24
-; SI-NEXT:    s_lshr_b32 s80, s21, 16
-; SI-NEXT:    s_lshr_b32 s81, s21, 8
-; SI-NEXT:    s_lshr_b32 s82, s19, 24
-; SI-NEXT:    s_lshr_b32 s83, s19, 16
-; SI-NEXT:    s_lshr_b32 s84, s19, 8
-; SI-NEXT:    s_lshr_b32 s85, s17, 24
-; SI-NEXT:    s_lshr_b32 s86, s17, 16
-; SI-NEXT:    s_lshr_b32 s87, s17, 8
-; SI-NEXT:    s_branch .LBB85_5
-; SI-NEXT:  .LBB85_3:
+; SI-NEXT:    s_mov_b64 s[90:91], 0
+; SI-NEXT:    s_branch .LBB85_3
+; SI-NEXT:  .LBB85_2:
+; SI-NEXT:    s_mov_b64 s[90:91], -1
 ; SI-NEXT:    ; implicit-def: $sgpr74
 ; SI-NEXT:    ; implicit-def: $sgpr62
 ; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr87
-; SI-NEXT:    ; implicit-def: $sgpr86
 ; SI-NEXT:    ; implicit-def: $sgpr85
+; SI-NEXT:    ; implicit-def: $sgpr84
+; SI-NEXT:    ; implicit-def: $sgpr83
 ; SI-NEXT:    ; implicit-def: $sgpr56
 ; SI-NEXT:    ; implicit-def: $sgpr44
 ; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    ; implicit-def: $sgpr83
 ; SI-NEXT:    ; implicit-def: $sgpr82
+; SI-NEXT:    ; implicit-def: $sgpr81
+; SI-NEXT:    ; implicit-def: $sgpr80
 ; SI-NEXT:    ; implicit-def: $sgpr40
 ; SI-NEXT:    ; implicit-def: $sgpr12
 ; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr81
-; SI-NEXT:    ; implicit-def: $sgpr80
 ; SI-NEXT:    ; implicit-def: $sgpr71
 ; SI-NEXT:    ; implicit-def: $sgpr70
 ; SI-NEXT:    ; implicit-def: $sgpr69
@@ -52199,10 +53026,12 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    ; implicit-def: $sgpr50
 ; SI-NEXT:    ; implicit-def: $sgpr49
 ; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr39
 ; SI-NEXT:    ; implicit-def: $sgpr38
 ; SI-NEXT:    ; implicit-def: $sgpr36
 ; SI-NEXT:    ; implicit-def: $sgpr34
 ; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $vcc_lo
 ; SI-NEXT:    ; implicit-def: $sgpr94
 ; SI-NEXT:    ; implicit-def: $sgpr92
 ; SI-NEXT:    ; implicit-def: $sgpr88
@@ -52214,8 +53043,78 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    ; implicit-def: $sgpr14
 ; SI-NEXT:    ; implicit-def: $sgpr10
 ; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB85_2
-; SI-NEXT:  .LBB85_4:
+; SI-NEXT:  .LBB85_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[90:91], s[90:91], exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB85_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_add_f64 v[28:29], s[18:19], 1.0
+; SI-NEXT:    v_add_f64 v[5:6], s[26:27], 1.0
+; SI-NEXT:    v_add_f64 v[13:14], s[22:23], 1.0
+; SI-NEXT:    v_add_f64 v[3:4], s[28:29], 1.0
+; SI-NEXT:    v_lshr_b64 v[48:49], v[28:29], 24
+; SI-NEXT:    v_add_f64 v[1:2], s[4:5], 1.0
+; SI-NEXT:    v_add_f64 v[7:8], s[24:25], 1.0
+; SI-NEXT:    v_add_f64 v[20:21], s[20:21], 1.0
+; SI-NEXT:    v_add_f64 v[32:33], s[16:17], 1.0
+; SI-NEXT:    v_lshr_b64 v[22:23], v[5:6], 16
+; SI-NEXT:    v_lshr_b64 v[34:35], v[13:14], 16
+; SI-NEXT:    v_lshr_b64 v[49:50], v[28:29], 16
+; SI-NEXT:    v_lshr_b64 v[15:16], v[3:4], 24
+; SI-NEXT:    v_lshr_b64 v[23:24], v[5:6], 8
+; SI-NEXT:    v_lshr_b64 v[35:36], v[13:14], 8
+; SI-NEXT:    v_lshr_b64 v[50:51], v[28:29], 8
+; SI-NEXT:    v_lshr_b64 v[9:10], v[1:2], 24
+; SI-NEXT:    v_lshr_b64 v[16:17], v[3:4], 16
+; SI-NEXT:    v_lshr_b64 v[24:25], v[7:8], 24
+; SI-NEXT:    v_lshr_b64 v[36:37], v[20:21], 24
+; SI-NEXT:    v_lshr_b64 v[51:52], v[32:33], 24
+; SI-NEXT:    v_lshr_b64 v[10:11], v[1:2], 16
+; SI-NEXT:    v_lshr_b64 v[17:18], v[3:4], 8
+; SI-NEXT:    v_lshr_b64 v[25:26], v[7:8], 16
+; SI-NEXT:    v_lshr_b64 v[37:38], v[20:21], 16
+; SI-NEXT:    v_lshr_b64 v[52:53], v[32:33], 16
+; SI-NEXT:    v_readfirstlane_b32 s17, v33
+; SI-NEXT:    v_readfirstlane_b32 s19, v29
+; SI-NEXT:    v_readfirstlane_b32 s21, v21
+; SI-NEXT:    v_readfirstlane_b32 s23, v14
+; SI-NEXT:    v_readfirstlane_b32 s25, v8
+; SI-NEXT:    v_readfirstlane_b32 s27, v6
+; SI-NEXT:    v_readfirstlane_b32 s29, v4
+; SI-NEXT:    v_readfirstlane_b32 s5, v2
+; SI-NEXT:    v_lshr_b64 v[11:12], v[1:2], 8
+; SI-NEXT:    v_lshr_b64 v[18:19], v[5:6], 24
+; SI-NEXT:    v_lshr_b64 v[26:27], v[7:8], 8
+; SI-NEXT:    v_lshr_b64 v[30:31], v[13:14], 24
+; SI-NEXT:    v_lshr_b64 v[38:39], v[20:21], 8
+; SI-NEXT:    v_lshr_b64 v[53:54], v[32:33], 8
+; SI-NEXT:    s_lshr_b32 s38, s5, 24
+; SI-NEXT:    s_lshr_b32 s39, s5, 16
+; SI-NEXT:    s_lshr_b32 s48, s5, 8
+; SI-NEXT:    s_lshr_b32 s49, s29, 24
+; SI-NEXT:    s_lshr_b32 s50, s29, 16
+; SI-NEXT:    s_lshr_b32 s51, s29, 8
+; SI-NEXT:    s_lshr_b32 s52, s27, 24
+; SI-NEXT:    s_lshr_b32 s53, s27, 16
+; SI-NEXT:    s_lshr_b32 s54, s27, 8
+; SI-NEXT:    s_lshr_b32 s55, s25, 24
+; SI-NEXT:    s_lshr_b32 s64, s25, 16
+; SI-NEXT:    s_lshr_b32 s65, s25, 8
+; SI-NEXT:    s_lshr_b32 s66, s23, 24
+; SI-NEXT:    s_lshr_b32 s67, s23, 16
+; SI-NEXT:    s_lshr_b32 s68, s23, 8
+; SI-NEXT:    s_lshr_b32 s69, s21, 24
+; SI-NEXT:    s_lshr_b32 s70, s21, 16
+; SI-NEXT:    s_lshr_b32 s71, s21, 8
+; SI-NEXT:    s_lshr_b32 s80, s19, 24
+; SI-NEXT:    s_lshr_b32 s81, s19, 16
+; SI-NEXT:    s_lshr_b32 s82, s19, 8
+; SI-NEXT:    s_lshr_b32 s83, s17, 24
+; SI-NEXT:    s_lshr_b32 s84, s17, 16
+; SI-NEXT:    s_lshr_b32 s85, s17, 8
+; SI-NEXT:    s_branch .LBB85_6
+; SI-NEXT:  .LBB85_5:
 ; SI-NEXT:    v_mov_b32_e32 v32, s16
 ; SI-NEXT:    v_mov_b32_e32 v28, s18
 ; SI-NEXT:    v_mov_b32_e32 v20, s20
@@ -52233,10 +53132,10 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v38, s40
 ; SI-NEXT:    v_mov_b32_e32 v37, s12
 ; SI-NEXT:    v_mov_b32_e32 v36, s8
-; SI-NEXT:    v_mov_b32_e32 v35, s38
-; SI-NEXT:    v_mov_b32_e32 v34, s36
-; SI-NEXT:    v_mov_b32_e32 v30, s34
-; SI-NEXT:    v_mov_b32_e32 v26, s30
+; SI-NEXT:    v_mov_b32_e32 v35, s36
+; SI-NEXT:    v_mov_b32_e32 v34, s34
+; SI-NEXT:    v_mov_b32_e32 v30, s30
+; SI-NEXT:    v_mov_b32_e32 v26, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v25, s94
 ; SI-NEXT:    v_mov_b32_e32 v24, s92
 ; SI-NEXT:    v_mov_b32_e32 v23, s88
@@ -52248,19 +53147,19 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v11, s14
 ; SI-NEXT:    v_mov_b32_e32 v10, s10
 ; SI-NEXT:    v_mov_b32_e32 v9, s6
-; SI-NEXT:  .LBB85_5: ; %end
+; SI-NEXT:  .LBB85_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v32
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 8, v53
 ; SI-NEXT:    s_and_b32 s4, s17, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s87, 8
+; SI-NEXT:    s_lshl_b32 s6, s85, 8
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v4
 ; SI-NEXT:    v_and_b32_e32 v4, 0xff, v52
 ; SI-NEXT:    s_or_b32 s4, s4, s6
-; SI-NEXT:    s_and_b32 s6, s86, 0xff
+; SI-NEXT:    s_and_b32 s6, s84, 0xff
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 24, v51
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_lshl_b32 s7, s85, 24
+; SI-NEXT:    s_lshl_b32 s7, s83, 24
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
@@ -52276,15 +53175,15 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 8, v50
 ; SI-NEXT:    s_and_b32 s4, s19, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s84, 8
+; SI-NEXT:    s_lshl_b32 s6, s82, 8
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v4
 ; SI-NEXT:    v_and_b32_e32 v4, 0xff, v49
 ; SI-NEXT:    s_or_b32 s4, s4, s6
-; SI-NEXT:    s_and_b32 s6, s83, 0xff
+; SI-NEXT:    s_and_b32 s6, s81, 0xff
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 24, v48
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_lshl_b32 s7, s82, 24
+; SI-NEXT:    s_lshl_b32 s7, s80, 24
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
@@ -52301,15 +53200,15 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 8, v38
 ; SI-NEXT:    s_and_b32 s4, s21, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s81, 8
+; SI-NEXT:    s_lshl_b32 s6, s71, 8
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v4
 ; SI-NEXT:    v_and_b32_e32 v4, 0xff, v37
 ; SI-NEXT:    s_or_b32 s4, s4, s6
-; SI-NEXT:    s_and_b32 s6, s80, 0xff
+; SI-NEXT:    s_and_b32 s6, s70, 0xff
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 24, v36
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_lshl_b32 s7, s71, 24
+; SI-NEXT:    s_lshl_b32 s7, s69, 24
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
@@ -52326,15 +53225,15 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 8, v35
 ; SI-NEXT:    s_and_b32 s4, s23, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s70, 8
+; SI-NEXT:    s_lshl_b32 s6, s68, 8
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v4
 ; SI-NEXT:    v_and_b32_e32 v4, 0xff, v34
 ; SI-NEXT:    s_or_b32 s4, s4, s6
-; SI-NEXT:    s_and_b32 s6, s69, 0xff
+; SI-NEXT:    s_and_b32 s6, s67, 0xff
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 24, v30
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_lshl_b32 s7, s68, 24
+; SI-NEXT:    s_lshl_b32 s7, s66, 24
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
@@ -52351,15 +53250,15 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 8, v26
 ; SI-NEXT:    s_and_b32 s4, s25, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s67, 8
+; SI-NEXT:    s_lshl_b32 s6, s65, 8
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v4
 ; SI-NEXT:    v_and_b32_e32 v4, 0xff, v25
 ; SI-NEXT:    s_or_b32 s4, s4, s6
-; SI-NEXT:    s_and_b32 s6, s66, 0xff
+; SI-NEXT:    s_and_b32 s6, s64, 0xff
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 24, v24
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_lshl_b32 s7, s65, 24
+; SI-NEXT:    s_lshl_b32 s7, s55, 24
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
@@ -52376,15 +53275,15 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 8, v23
 ; SI-NEXT:    s_and_b32 s4, s27, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s64, 8
+; SI-NEXT:    s_lshl_b32 s6, s54, 8
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v4
 ; SI-NEXT:    v_and_b32_e32 v4, 0xff, v22
 ; SI-NEXT:    s_or_b32 s4, s4, s6
-; SI-NEXT:    s_and_b32 s6, s55, 0xff
+; SI-NEXT:    s_and_b32 s6, s53, 0xff
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 24, v18
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_lshl_b32 s7, s54, 24
+; SI-NEXT:    s_lshl_b32 s7, s52, 24
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    v_or_b32_e32 v4, v5, v4
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
@@ -52400,16 +53299,16 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 8, v17
 ; SI-NEXT:    s_and_b32 s4, s29, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s53, 8
+; SI-NEXT:    s_lshl_b32 s6, s51, 8
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; SI-NEXT:    v_and_b32_e32 v3, 0xff, v16
 ; SI-NEXT:    s_or_b32 s4, s4, s6
-; SI-NEXT:    s_and_b32 s6, s52, 0xff
+; SI-NEXT:    s_and_b32 s6, s50, 0xff
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 24, v15
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_lshl_b32 s7, s51, 24
+; SI-NEXT:    s_lshl_b32 s7, s49, 24
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    v_or_b32_e32 v3, v4, v3
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
@@ -52425,16 +53324,16 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    v_and_b32_e32 v1, 0xff, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 8, v11
 ; SI-NEXT:    s_and_b32 s4, s5, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s50, 8
+; SI-NEXT:    s_lshl_b32 s5, s48, 8
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v2
 ; SI-NEXT:    v_and_b32_e32 v2, 0xff, v10
 ; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    s_and_b32 s5, s49, 0xff
+; SI-NEXT:    s_and_b32 s5, s39, 0xff
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 24, v9
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
-; SI-NEXT:    s_lshl_b32 s6, s48, 24
+; SI-NEXT:    s_lshl_b32 s6, s38, 24
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; SI-NEXT:    v_or_b32_e32 v2, v3, v2
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
@@ -52446,11 +53345,9 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; SI-NEXT:    v_add_i32_e32 v0, vcc, 60, v0
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v1, s4
-; SI-NEXT:    v_readlane_b32 s30, v40, 30
+; SI-NEXT:    v_readlane_b32 s30, v40, 28
 ; SI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
-; SI-NEXT:    v_readlane_b32 s31, v40, 31
-; SI-NEXT:    v_readlane_b32 s87, v40, 29
-; SI-NEXT:    v_readlane_b32 s86, v40, 28
+; SI-NEXT:    v_readlane_b32 s31, v40, 29
 ; SI-NEXT:    v_readlane_b32 s85, v40, 27
 ; SI-NEXT:    v_readlane_b32 s84, v40, 26
 ; SI-NEXT:    v_readlane_b32 s83, v40, 25
@@ -52522,56 +53419,54 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; VI-NEXT:    v_writelane_b32 v63, s55, 13
 ; VI-NEXT:    v_writelane_b32 v63, s64, 14
 ; VI-NEXT:    v_writelane_b32 v63, s65, 15
-; VI-NEXT:    v_writelane_b32 v63, s66, 16
-; VI-NEXT:    v_writelane_b32 v63, s67, 17
-; VI-NEXT:    v_writelane_b32 v63, s30, 18
-; VI-NEXT:    v_writelane_b32 v63, s31, 19
+; VI-NEXT:    v_writelane_b32 v63, s30, 16
+; VI-NEXT:    v_writelane_b32 v63, s31, 17
 ; VI-NEXT:    v_readfirstlane_b32 s4, v3
 ; VI-NEXT:    v_readfirstlane_b32 s5, v2
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v1
-; VI-NEXT:    s_cbranch_scc0 .LBB85_3
+; VI-NEXT:    s_cbranch_scc0 .LBB85_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_lshr_b32 s35, s5, 24
-; VI-NEXT:    s_lshr_b32 s34, s5, 16
-; VI-NEXT:    s_lshr_b32 s31, s5, 8
-; VI-NEXT:    s_lshr_b32 s37, s4, 16
-; VI-NEXT:    s_lshr_b32 s36, s4, 8
-; VI-NEXT:    s_lshr_b32 s30, s29, 24
+; VI-NEXT:    s_lshr_b32 s31, s5, 24
+; VI-NEXT:    s_lshr_b32 s30, s5, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s5, 8
+; VI-NEXT:    s_lshr_b32 s35, s4, 16
+; VI-NEXT:    s_lshr_b32 s34, s4, 8
+; VI-NEXT:    s_lshr_b32 vcc_lo, s29, 24
 ; VI-NEXT:    s_lshr_b32 s91, s29, 16
 ; VI-NEXT:    s_lshr_b32 s90, s29, 8
-; VI-NEXT:    s_lshr_b32 s39, s28, 16
-; VI-NEXT:    s_lshr_b32 s38, s28, 8
+; VI-NEXT:    s_lshr_b32 s37, s28, 16
+; VI-NEXT:    s_lshr_b32 s36, s28, 8
 ; VI-NEXT:    s_lshr_b32 s89, s27, 24
 ; VI-NEXT:    s_lshr_b32 s88, s27, 16
 ; VI-NEXT:    s_lshr_b32 s79, s27, 8
-; VI-NEXT:    s_lshr_b32 s49, s26, 16
-; VI-NEXT:    s_lshr_b32 s48, s26, 8
+; VI-NEXT:    s_lshr_b32 s39, s26, 16
+; VI-NEXT:    s_lshr_b32 s38, s26, 8
 ; VI-NEXT:    s_lshr_b32 s78, s25, 24
 ; VI-NEXT:    s_lshr_b32 s77, s25, 16
 ; VI-NEXT:    s_lshr_b32 s76, s25, 8
-; VI-NEXT:    s_lshr_b32 s51, s24, 16
-; VI-NEXT:    s_lshr_b32 s50, s24, 8
+; VI-NEXT:    s_lshr_b32 s49, s24, 16
+; VI-NEXT:    s_lshr_b32 s48, s24, 8
 ; VI-NEXT:    s_lshr_b32 s75, s23, 24
 ; VI-NEXT:    s_lshr_b32 s74, s23, 16
 ; VI-NEXT:    s_lshr_b32 s73, s23, 8
-; VI-NEXT:    s_lshr_b32 s53, s22, 16
-; VI-NEXT:    s_lshr_b32 s52, s22, 8
+; VI-NEXT:    s_lshr_b32 s51, s22, 16
+; VI-NEXT:    s_lshr_b32 s50, s22, 8
 ; VI-NEXT:    s_lshr_b32 s72, s21, 24
 ; VI-NEXT:    s_lshr_b32 s63, s21, 16
 ; VI-NEXT:    s_lshr_b32 s62, s21, 8
-; VI-NEXT:    s_lshr_b32 s55, s20, 16
-; VI-NEXT:    s_lshr_b32 s54, s20, 8
+; VI-NEXT:    s_lshr_b32 s53, s20, 16
+; VI-NEXT:    s_lshr_b32 s52, s20, 8
 ; VI-NEXT:    s_lshr_b32 s61, s19, 24
 ; VI-NEXT:    s_lshr_b32 s60, s19, 16
 ; VI-NEXT:    s_lshr_b32 s59, s19, 8
-; VI-NEXT:    s_lshr_b32 s65, s18, 16
-; VI-NEXT:    s_lshr_b32 s64, s18, 8
+; VI-NEXT:    s_lshr_b32 s55, s18, 16
+; VI-NEXT:    s_lshr_b32 s54, s18, 8
 ; VI-NEXT:    s_lshr_b32 s58, s17, 24
 ; VI-NEXT:    s_lshr_b32 s57, s17, 16
 ; VI-NEXT:    s_lshr_b32 s56, s17, 8
-; VI-NEXT:    s_lshr_b32 s67, s16, 16
-; VI-NEXT:    s_lshr_b32 s66, s16, 8
+; VI-NEXT:    s_lshr_b32 s65, s16, 16
+; VI-NEXT:    s_lshr_b32 s64, s16, 8
 ; VI-NEXT:    s_lshr_b64 s[44:45], s[4:5], 24
 ; VI-NEXT:    s_lshr_b64 s[42:43], s[28:29], 24
 ; VI-NEXT:    s_lshr_b64 s[40:41], s[26:27], 24
@@ -52580,8 +53475,64 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; VI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB85_4
-; VI-NEXT:  .LBB85_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[46:47], 0
+; VI-NEXT:    s_branch .LBB85_3
+; VI-NEXT:  .LBB85_2:
+; VI-NEXT:    s_mov_b64 s[46:47], -1
+; VI-NEXT:    ; implicit-def: $sgpr64
+; VI-NEXT:    ; implicit-def: $sgpr65
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr54
+; VI-NEXT:    ; implicit-def: $sgpr55
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr52
+; VI-NEXT:    ; implicit-def: $sgpr53
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr50
+; VI-NEXT:    ; implicit-def: $sgpr51
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr48
+; VI-NEXT:    ; implicit-def: $sgpr49
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr38
+; VI-NEXT:    ; implicit-def: $sgpr39
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr37
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr35
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:  .LBB85_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; VI-NEXT:    s_cselect_b32 s7, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s7, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB85_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[9:10], s[4:5], 1.0
 ; VI-NEXT:    v_add_f64 v[1:2], s[28:29], 1.0
 ; VI-NEXT:    v_add_f64 v[5:6], s[24:25], 1.0
@@ -52644,59 +53595,9 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; VI-NEXT:    v_lshrrev_b32_e32 v18, 8, v16
 ; VI-NEXT:    v_lshrrev_b32_e32 v57, 16, v15
 ; VI-NEXT:    v_lshrrev_b32_e32 v58, 8, v15
-; VI-NEXT:    s_branch .LBB85_5
-; VI-NEXT:  .LBB85_3:
-; VI-NEXT:    ; implicit-def: $sgpr66
-; VI-NEXT:    ; implicit-def: $sgpr67
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr64
-; VI-NEXT:    ; implicit-def: $sgpr65
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr54
-; VI-NEXT:    ; implicit-def: $sgpr55
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr52
-; VI-NEXT:    ; implicit-def: $sgpr53
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr50
-; VI-NEXT:    ; implicit-def: $sgpr51
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr48
-; VI-NEXT:    ; implicit-def: $sgpr49
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr39
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr37
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    s_branch .LBB85_2
-; VI-NEXT:  .LBB85_4:
-; VI-NEXT:    v_mov_b32_e32 v26, s35
+; VI-NEXT:    s_branch .LBB85_6
+; VI-NEXT:  .LBB85_5:
+; VI-NEXT:    v_mov_b32_e32 v26, s31
 ; VI-NEXT:    v_mov_b32_e32 v25, s40
 ; VI-NEXT:    buffer_store_dword v25, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v26, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
@@ -52717,25 +53618,25 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v12, s21
 ; VI-NEXT:    v_mov_b32_e32 v14, s19
 ; VI-NEXT:    v_mov_b32_e32 v16, s17
-; VI-NEXT:    v_mov_b32_e32 v57, s67
-; VI-NEXT:    v_mov_b32_e32 v58, s66
-; VI-NEXT:    v_mov_b32_e32 v44, s65
-; VI-NEXT:    v_mov_b32_e32 v45, s64
-; VI-NEXT:    v_mov_b32_e32 v55, s55
-; VI-NEXT:    v_mov_b32_e32 v40, s54
-; VI-NEXT:    v_mov_b32_e32 v50, s53
-; VI-NEXT:    v_mov_b32_e32 v52, s52
-; VI-NEXT:    v_mov_b32_e32 v39, s51
-; VI-NEXT:    v_mov_b32_e32 v49, s50
-; VI-NEXT:    v_mov_b32_e32 v35, s49
-; VI-NEXT:    v_mov_b32_e32 v36, s48
-; VI-NEXT:    v_mov_b32_e32 v30, s39
-; VI-NEXT:    v_mov_b32_e32 v31, s38
-; VI-NEXT:    v_mov_b32_e32 v19, s37
-; VI-NEXT:    v_mov_b32_e32 v28, s36
-; VI-NEXT:    v_mov_b32_e32 v27, s34
-; VI-NEXT:    v_mov_b32_e32 v29, s31
-; VI-NEXT:    v_mov_b32_e32 v32, s30
+; VI-NEXT:    v_mov_b32_e32 v57, s65
+; VI-NEXT:    v_mov_b32_e32 v58, s64
+; VI-NEXT:    v_mov_b32_e32 v44, s55
+; VI-NEXT:    v_mov_b32_e32 v45, s54
+; VI-NEXT:    v_mov_b32_e32 v55, s53
+; VI-NEXT:    v_mov_b32_e32 v40, s52
+; VI-NEXT:    v_mov_b32_e32 v50, s51
+; VI-NEXT:    v_mov_b32_e32 v52, s50
+; VI-NEXT:    v_mov_b32_e32 v39, s49
+; VI-NEXT:    v_mov_b32_e32 v49, s48
+; VI-NEXT:    v_mov_b32_e32 v35, s39
+; VI-NEXT:    v_mov_b32_e32 v36, s38
+; VI-NEXT:    v_mov_b32_e32 v30, s37
+; VI-NEXT:    v_mov_b32_e32 v31, s36
+; VI-NEXT:    v_mov_b32_e32 v19, s35
+; VI-NEXT:    v_mov_b32_e32 v28, s34
+; VI-NEXT:    v_mov_b32_e32 v27, s30
+; VI-NEXT:    v_mov_b32_e32 v29, vcc_hi
+; VI-NEXT:    v_mov_b32_e32 v32, vcc_lo
 ; VI-NEXT:    v_mov_b32_e32 v33, s91
 ; VI-NEXT:    v_mov_b32_e32 v34, s90
 ; VI-NEXT:    v_mov_b32_e32 v37, s89
@@ -52766,8 +53667,8 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v25, s44
 ; VI-NEXT:    buffer_store_dword v25, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v26, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
-; VI-NEXT:    v_mov_b32_e32 v25, s35
-; VI-NEXT:  .LBB85_5: ; %end
+; VI-NEXT:    v_mov_b32_e32 v25, s31
+; VI-NEXT:  .LBB85_6: ; %end
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; VI-NEXT:    v_perm_b32 v24, v57, v24, s4
 ; VI-NEXT:    v_perm_b32 v15, v15, v58, s4
@@ -52832,10 +53733,8 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; VI-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
 ; VI-NEXT:    v_perm_b32 v3, v3, v36, s4
 ; VI-NEXT:    v_perm_b32 v1, v1, v31, s4
-; VI-NEXT:    v_readlane_b32 s30, v63, 18
-; VI-NEXT:    v_readlane_b32 s31, v63, 19
-; VI-NEXT:    v_readlane_b32 s67, v63, 17
-; VI-NEXT:    v_readlane_b32 s66, v63, 16
+; VI-NEXT:    v_readlane_b32 s30, v63, 16
+; VI-NEXT:    v_readlane_b32 s31, v63, 17
 ; VI-NEXT:    v_readlane_b32 s65, v63, 15
 ; VI-NEXT:    v_readlane_b32 s64, v63, 14
 ; VI-NEXT:    v_readlane_b32 s55, v63, 13
@@ -52947,56 +53846,54 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; GFX9-NEXT:    v_writelane_b32 v63, s51, 9
 ; GFX9-NEXT:    v_writelane_b32 v63, s52, 10
 ; GFX9-NEXT:    v_writelane_b32 v63, s53, 11
-; GFX9-NEXT:    v_writelane_b32 v63, s54, 12
-; GFX9-NEXT:    v_writelane_b32 v63, s55, 13
-; GFX9-NEXT:    v_writelane_b32 v63, s30, 14
-; GFX9-NEXT:    v_writelane_b32 v63, s31, 15
+; GFX9-NEXT:    v_writelane_b32 v63, s30, 12
+; GFX9-NEXT:    v_writelane_b32 v63, s31, 13
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v3
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v2
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v1
-; GFX9-NEXT:    s_cbranch_scc0 .LBB85_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB85_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s95, s5, 24
 ; GFX9-NEXT:    s_lshr_b32 s94, s5, 16
 ; GFX9-NEXT:    s_lshr_b32 s93, s5, 8
-; GFX9-NEXT:    s_lshr_b32 s31, s4, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s4, 8
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s4, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s4, 8
 ; GFX9-NEXT:    s_lshr_b32 s92, s29, 24
 ; GFX9-NEXT:    s_lshr_b32 s91, s29, 16
 ; GFX9-NEXT:    s_lshr_b32 s90, s29, 8
-; GFX9-NEXT:    s_lshr_b32 s35, s28, 16
-; GFX9-NEXT:    s_lshr_b32 s34, s28, 8
+; GFX9-NEXT:    s_lshr_b32 s31, s28, 16
+; GFX9-NEXT:    s_lshr_b32 s30, s28, 8
 ; GFX9-NEXT:    s_lshr_b32 s89, s27, 24
 ; GFX9-NEXT:    s_lshr_b32 s88, s27, 16
 ; GFX9-NEXT:    s_lshr_b32 s79, s27, 8
-; GFX9-NEXT:    s_lshr_b32 s37, s26, 16
-; GFX9-NEXT:    s_lshr_b32 s36, s26, 8
+; GFX9-NEXT:    s_lshr_b32 s35, s26, 16
+; GFX9-NEXT:    s_lshr_b32 s34, s26, 8
 ; GFX9-NEXT:    s_lshr_b32 s78, s25, 24
 ; GFX9-NEXT:    s_lshr_b32 s77, s25, 16
 ; GFX9-NEXT:    s_lshr_b32 s76, s25, 8
-; GFX9-NEXT:    s_lshr_b32 s39, s24, 16
-; GFX9-NEXT:    s_lshr_b32 s38, s24, 8
+; GFX9-NEXT:    s_lshr_b32 s37, s24, 16
+; GFX9-NEXT:    s_lshr_b32 s36, s24, 8
 ; GFX9-NEXT:    s_lshr_b32 s75, s23, 24
 ; GFX9-NEXT:    s_lshr_b32 s74, s23, 16
 ; GFX9-NEXT:    s_lshr_b32 s73, s23, 8
-; GFX9-NEXT:    s_lshr_b32 s49, s22, 16
-; GFX9-NEXT:    s_lshr_b32 s48, s22, 8
+; GFX9-NEXT:    s_lshr_b32 s39, s22, 16
+; GFX9-NEXT:    s_lshr_b32 s38, s22, 8
 ; GFX9-NEXT:    s_lshr_b32 s72, s21, 24
 ; GFX9-NEXT:    s_lshr_b32 s63, s21, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s21, 8
-; GFX9-NEXT:    s_lshr_b32 s51, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s50, s20, 8
+; GFX9-NEXT:    s_lshr_b32 s49, s20, 16
+; GFX9-NEXT:    s_lshr_b32 s48, s20, 8
 ; GFX9-NEXT:    s_lshr_b32 s61, s19, 24
 ; GFX9-NEXT:    s_lshr_b32 s60, s19, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s19, 8
-; GFX9-NEXT:    s_lshr_b32 s53, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s52, s18, 8
+; GFX9-NEXT:    s_lshr_b32 s51, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s50, s18, 8
 ; GFX9-NEXT:    s_lshr_b32 s58, s17, 24
 ; GFX9-NEXT:    s_lshr_b32 s57, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s56, s17, 8
-; GFX9-NEXT:    s_lshr_b32 s55, s16, 16
-; GFX9-NEXT:    s_lshr_b32 s54, s16, 8
+; GFX9-NEXT:    s_lshr_b32 s53, s16, 16
+; GFX9-NEXT:    s_lshr_b32 s52, s16, 8
 ; GFX9-NEXT:    s_lshr_b64 s[44:45], s[4:5], 24
 ; GFX9-NEXT:    s_lshr_b64 s[42:43], s[28:29], 24
 ; GFX9-NEXT:    s_lshr_b64 s[40:41], s[26:27], 24
@@ -53005,8 +53902,64 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b64 s[10:11], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB85_4
-; GFX9-NEXT:  .LBB85_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[46:47], 0
+; GFX9-NEXT:    s_branch .LBB85_3
+; GFX9-NEXT:  .LBB85_2:
+; GFX9-NEXT:    s_mov_b64 s[46:47], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr52
+; GFX9-NEXT:    ; implicit-def: $sgpr53
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr50
+; GFX9-NEXT:    ; implicit-def: $sgpr51
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr48
+; GFX9-NEXT:    ; implicit-def: $sgpr49
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr38
+; GFX9-NEXT:    ; implicit-def: $sgpr39
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr36
+; GFX9-NEXT:    ; implicit-def: $sgpr37
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr34
+; GFX9-NEXT:    ; implicit-def: $sgpr35
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $sgpr31
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $vcc_hi
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:  .LBB85_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; GFX9-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB85_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[11:12], s[4:5], 1.0
 ; GFX9-NEXT:    v_add_f64 v[1:2], s[28:29], 1.0
 ; GFX9-NEXT:    v_add_f64 v[5:6], s[24:25], 1.0
@@ -53072,59 +54025,9 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v18, 8, v16
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v57, 16, v15
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v59, 8, v15
-; GFX9-NEXT:    s_branch .LBB85_5
-; GFX9-NEXT:  .LBB85_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr54
-; GFX9-NEXT:    ; implicit-def: $sgpr55
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr52
-; GFX9-NEXT:    ; implicit-def: $sgpr53
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr50
-; GFX9-NEXT:    ; implicit-def: $sgpr51
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr48
-; GFX9-NEXT:    ; implicit-def: $sgpr49
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr38
-; GFX9-NEXT:    ; implicit-def: $sgpr39
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr36
-; GFX9-NEXT:    ; implicit-def: $sgpr37
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr35
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr31
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    s_branch .LBB85_2
-; GFX9-NEXT:  .LBB85_4:
-; GFX9-NEXT:    v_mov_b32_e32 v26, s31
+; GFX9-NEXT:    s_branch .LBB85_6
+; GFX9-NEXT:  .LBB85_5:
+; GFX9-NEXT:    v_mov_b32_e32 v26, vcc_hi
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s40
 ; GFX9-NEXT:    buffer_store_dword v25, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
@@ -53146,21 +54049,21 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s21
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s19
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s17
-; GFX9-NEXT:    v_mov_b32_e32 v57, s55
-; GFX9-NEXT:    v_mov_b32_e32 v59, s54
-; GFX9-NEXT:    v_mov_b32_e32 v56, s53
-; GFX9-NEXT:    v_mov_b32_e32 v47, s52
-; GFX9-NEXT:    v_mov_b32_e32 v42, s51
-; GFX9-NEXT:    v_mov_b32_e32 v43, s50
-; GFX9-NEXT:    v_mov_b32_e32 v50, s49
-; GFX9-NEXT:    v_mov_b32_e32 v51, s48
-; GFX9-NEXT:    v_mov_b32_e32 v38, s39
-; GFX9-NEXT:    v_mov_b32_e32 v48, s38
-; GFX9-NEXT:    v_mov_b32_e32 v35, s37
-; GFX9-NEXT:    v_mov_b32_e32 v36, s36
-; GFX9-NEXT:    v_mov_b32_e32 v30, s35
-; GFX9-NEXT:    v_mov_b32_e32 v31, s34
-; GFX9-NEXT:    v_mov_b32_e32 v27, s30
+; GFX9-NEXT:    v_mov_b32_e32 v57, s53
+; GFX9-NEXT:    v_mov_b32_e32 v59, s52
+; GFX9-NEXT:    v_mov_b32_e32 v56, s51
+; GFX9-NEXT:    v_mov_b32_e32 v47, s50
+; GFX9-NEXT:    v_mov_b32_e32 v42, s49
+; GFX9-NEXT:    v_mov_b32_e32 v43, s48
+; GFX9-NEXT:    v_mov_b32_e32 v50, s39
+; GFX9-NEXT:    v_mov_b32_e32 v51, s38
+; GFX9-NEXT:    v_mov_b32_e32 v38, s37
+; GFX9-NEXT:    v_mov_b32_e32 v48, s36
+; GFX9-NEXT:    v_mov_b32_e32 v35, s35
+; GFX9-NEXT:    v_mov_b32_e32 v36, s34
+; GFX9-NEXT:    v_mov_b32_e32 v30, s31
+; GFX9-NEXT:    v_mov_b32_e32 v31, s30
+; GFX9-NEXT:    v_mov_b32_e32 v27, vcc_lo
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s95
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s94
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s93
@@ -53197,7 +54100,7 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; GFX9-NEXT:    buffer_store_dword v25, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
 ; GFX9-NEXT:    buffer_store_dword v26, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
-; GFX9-NEXT:  .LBB85_5: ; %end
+; GFX9-NEXT:  .LBB85_6: ; %end
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; GFX9-NEXT:    v_perm_b32 v24, v57, v24, s4
 ; GFX9-NEXT:    v_perm_b32 v15, v15, v59, s4
@@ -53254,10 +54157,8 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; GFX9-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
 ; GFX9-NEXT:    v_perm_b32 v3, v3, v36, s4
 ; GFX9-NEXT:    v_perm_b32 v1, v1, v31, s4
-; GFX9-NEXT:    v_readlane_b32 s30, v63, 14
-; GFX9-NEXT:    v_readlane_b32 s31, v63, 15
-; GFX9-NEXT:    v_readlane_b32 s55, v63, 13
-; GFX9-NEXT:    v_readlane_b32 s54, v63, 12
+; GFX9-NEXT:    v_readlane_b32 s30, v63, 12
+; GFX9-NEXT:    v_readlane_b32 s31, v63, 13
 ; GFX9-NEXT:    v_readlane_b32 s53, v63, 11
 ; GFX9-NEXT:    v_readlane_b32 s52, v63, 10
 ; GFX9-NEXT:    v_readlane_b32 s51, v63, 9
@@ -53340,12 +54241,11 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; GFX11-NEXT:    v_writelane_b32 v40, s38, 4
 ; GFX11-NEXT:    v_writelane_b32 v40, s39, 5
 ; GFX11-NEXT:    v_writelane_b32 v40, s48, 6
-; GFX11-NEXT:    v_writelane_b32 v40, s49, 7
-; GFX11-NEXT:    v_writelane_b32 v40, s30, 8
-; GFX11-NEXT:    v_writelane_b32 v40, s31, 9
+; GFX11-NEXT:    v_writelane_b32 v40, s30, 7
+; GFX11-NEXT:    v_writelane_b32 v40, s31, 8
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB85_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB85_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s90, s27, 24
 ; GFX11-NEXT:    s_lshr_b32 s89, s27, 16
@@ -53360,33 +54260,33 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b32 s76, s23, 24
 ; GFX11-NEXT:    s_lshr_b32 s75, s23, 16
 ; GFX11-NEXT:    s_lshr_b32 s74, s23, 8
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; GFX11-NEXT:    s_lshr_b32 vcc_lo, s22, 16
 ; GFX11-NEXT:    s_lshr_b32 s95, s22, 8
 ; GFX11-NEXT:    s_lshr_b32 s73, s21, 24
 ; GFX11-NEXT:    s_lshr_b32 s72, s21, 16
 ; GFX11-NEXT:    s_lshr_b32 s63, s21, 8
-; GFX11-NEXT:    s_lshr_b32 s31, s20, 16
-; GFX11-NEXT:    s_lshr_b32 s30, s20, 8
+; GFX11-NEXT:    s_lshr_b32 s30, s20, 16
+; GFX11-NEXT:    s_lshr_b32 vcc_hi, s20, 8
 ; GFX11-NEXT:    s_lshr_b32 s62, s19, 24
 ; GFX11-NEXT:    s_lshr_b32 s61, s19, 16
 ; GFX11-NEXT:    s_lshr_b32 s60, s19, 8
-; GFX11-NEXT:    s_lshr_b32 s35, s18, 16
-; GFX11-NEXT:    s_lshr_b32 s34, s18, 8
+; GFX11-NEXT:    s_lshr_b32 s34, s18, 16
+; GFX11-NEXT:    s_lshr_b32 s31, s18, 8
 ; GFX11-NEXT:    s_lshr_b32 s59, s17, 24
 ; GFX11-NEXT:    s_lshr_b32 s58, s17, 16
 ; GFX11-NEXT:    s_lshr_b32 s57, s17, 8
-; GFX11-NEXT:    s_lshr_b32 s37, s16, 16
-; GFX11-NEXT:    s_lshr_b32 s36, s16, 8
+; GFX11-NEXT:    s_lshr_b32 s36, s16, 16
+; GFX11-NEXT:    s_lshr_b32 s35, s16, 8
 ; GFX11-NEXT:    s_lshr_b32 s56, s3, 24
 ; GFX11-NEXT:    s_lshr_b32 s47, s3, 16
 ; GFX11-NEXT:    s_lshr_b32 s46, s3, 8
-; GFX11-NEXT:    s_lshr_b32 s39, s2, 16
-; GFX11-NEXT:    s_lshr_b32 s38, s2, 8
+; GFX11-NEXT:    s_lshr_b32 s38, s2, 16
+; GFX11-NEXT:    s_lshr_b32 s37, s2, 8
 ; GFX11-NEXT:    s_lshr_b32 s45, s1, 24
 ; GFX11-NEXT:    s_lshr_b32 s44, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s43, s1, 8
-; GFX11-NEXT:    s_lshr_b32 s49, s0, 16
-; GFX11-NEXT:    s_lshr_b32 s48, s0, 8
+; GFX11-NEXT:    s_lshr_b32 s48, s0, 16
+; GFX11-NEXT:    s_lshr_b32 s39, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[40:41], s[26:27], 24
 ; GFX11-NEXT:    s_lshr_b64 s[28:29], s[24:25], 24
 ; GFX11-NEXT:    s_lshr_b64 s[14:15], s[22:23], 24
@@ -53395,9 +54295,64 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB85_4
-; GFX11-NEXT:  .LBB85_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB85_3
+; GFX11-NEXT:  .LBB85_2:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr39
+; GFX11-NEXT:    ; implicit-def: $sgpr48
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr37
+; GFX11-NEXT:    ; implicit-def: $sgpr38
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr35
+; GFX11-NEXT:    ; implicit-def: $sgpr36
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr31
+; GFX11-NEXT:    ; implicit-def: $sgpr34
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $vcc_hi
+; GFX11-NEXT:    ; implicit-def: $sgpr30
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr95
+; GFX11-NEXT:    ; implicit-def: $vcc_lo
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr93
+; GFX11-NEXT:    ; implicit-def: $sgpr94
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr79
+; GFX11-NEXT:    ; implicit-def: $sgpr91
+; GFX11-NEXT:    ; implicit-def: $sgpr92
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr89
+; GFX11-NEXT:    ; implicit-def: $sgpr90
+; GFX11-NEXT:  .LBB85_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB85_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[7:8], s[20:21], 1.0
 ; GFX11-NEXT:    v_add_f64 v[11:12], s[18:19], 1.0
 ; GFX11-NEXT:    v_add_f64 v[15:16], s[16:17], 1.0
@@ -53454,58 +54409,8 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v86, 8, v22
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v82, 16, v21
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v81, 8, v21
-; GFX11-NEXT:    s_branch .LBB85_5
-; GFX11-NEXT:  .LBB85_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr48
-; GFX11-NEXT:    ; implicit-def: $sgpr49
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr38
-; GFX11-NEXT:    ; implicit-def: $sgpr39
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr36
-; GFX11-NEXT:    ; implicit-def: $sgpr37
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr34
-; GFX11-NEXT:    ; implicit-def: $sgpr35
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr30
-; GFX11-NEXT:    ; implicit-def: $sgpr31
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr95
-; GFX11-NEXT:    ; implicit-def: $vcc_hi
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr93
-; GFX11-NEXT:    ; implicit-def: $sgpr94
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr79
-; GFX11-NEXT:    ; implicit-def: $sgpr91
-; GFX11-NEXT:    ; implicit-def: $sgpr92
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr89
-; GFX11-NEXT:    ; implicit-def: $sgpr90
-; GFX11-NEXT:    s_branch .LBB85_2
-; GFX11-NEXT:  .LBB85_4:
+; GFX11-NEXT:    s_branch .LBB85_6
+; GFX11-NEXT:  .LBB85_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v21, s0 :: v_dual_mov_b32 v2, s27
 ; GFX11-NEXT:    v_dual_mov_b32 v17, s2 :: v_dual_mov_b32 v4, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v15, s16 :: v_dual_mov_b32 v6, s23
@@ -53514,13 +54419,13 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v5, s22 :: v_dual_mov_b32 v16, s17
 ; GFX11-NEXT:    v_dual_mov_b32 v3, s24 :: v_dual_mov_b32 v18, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v1, s26 :: v_dual_mov_b32 v22, s1
-; GFX11-NEXT:    v_dual_mov_b32 v82, s49 :: v_dual_mov_b32 v81, s48
-; GFX11-NEXT:    v_dual_mov_b32 v69, s39 :: v_dual_mov_b32 v68, s38
-; GFX11-NEXT:    v_dual_mov_b32 v64, s37 :: v_dual_mov_b32 v55, s36
-; GFX11-NEXT:    v_dual_mov_b32 v54, s35 :: v_dual_mov_b32 v53, s34
-; GFX11-NEXT:    v_dual_mov_b32 v49, s31 :: v_dual_mov_b32 v30, s93
-; GFX11-NEXT:    v_dual_mov_b32 v39, s30 :: v_dual_mov_b32 v14, s92
-; GFX11-NEXT:    v_dual_mov_b32 v37, vcc_hi :: v_dual_mov_b32 v10, s91
+; GFX11-NEXT:    v_dual_mov_b32 v82, s48 :: v_dual_mov_b32 v81, s39
+; GFX11-NEXT:    v_dual_mov_b32 v69, s38 :: v_dual_mov_b32 v68, s37
+; GFX11-NEXT:    v_dual_mov_b32 v64, s36 :: v_dual_mov_b32 v55, s35
+; GFX11-NEXT:    v_dual_mov_b32 v54, s34 :: v_dual_mov_b32 v53, s31
+; GFX11-NEXT:    v_dual_mov_b32 v49, s30 :: v_dual_mov_b32 v30, s93
+; GFX11-NEXT:    v_dual_mov_b32 v39, vcc_hi :: v_dual_mov_b32 v14, s92
+; GFX11-NEXT:    v_dual_mov_b32 v37, vcc_lo :: v_dual_mov_b32 v10, s91
 ; GFX11-NEXT:    v_dual_mov_b32 v35, s95 :: v_dual_mov_b32 v26, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v31, s94 :: v_dual_mov_b32 v24, s10
 ; GFX11-NEXT:    v_dual_mov_b32 v27, s4 :: v_dual_mov_b32 v28, s90
@@ -53538,7 +54443,7 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v84, s56 :: v_dual_mov_b32 v85, s47
 ; GFX11-NEXT:    v_dual_mov_b32 v83, s46 :: v_dual_mov_b32 v96, s44
 ; GFX11-NEXT:    v_dual_mov_b32 v87, s45 :: v_dual_mov_b32 v86, s43
-; GFX11-NEXT:  .LBB85_5: ; %end
+; GFX11-NEXT:  .LBB85_6: ; %end
 ; GFX11-NEXT:    v_perm_b32 v26, v69, v26, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_perm_b32 v27, v82, v27, 0xc0c0004
@@ -53604,14 +54509,13 @@ define inreg <64 x i8> @bitcast_v8f64_to_v64i8_scalar(<8 x double> inreg %a, i32
 ; GFX11-NEXT:    v_or_b32_e32 v2, v4, v8
 ; GFX11-NEXT:    v_or_b32_e32 v3, v10, v9
 ; GFX11-NEXT:    v_or_b32_e32 v4, v12, v11
-; GFX11-NEXT:    v_readlane_b32 s30, v40, 8
+; GFX11-NEXT:    v_readlane_b32 s30, v40, 7
 ; GFX11-NEXT:    s_clause 0x3
 ; GFX11-NEXT:    scratch_store_b128 v0, v[84:87], off
 ; GFX11-NEXT:    scratch_store_b128 v0, v[15:18], off offset:16
 ; GFX11-NEXT:    scratch_store_b128 v0, v[21:24], off offset:32
 ; GFX11-NEXT:    scratch_store_b128 v0, v[1:4], off offset:48
-; GFX11-NEXT:    v_readlane_b32 s31, v40, 9
-; GFX11-NEXT:    v_readlane_b32 s49, v40, 7
+; GFX11-NEXT:    v_readlane_b32 s31, v40, 8
 ; GFX11-NEXT:    v_readlane_b32 s48, v40, 6
 ; GFX11-NEXT:    v_readlane_b32 s39, v40, 5
 ; GFX11-NEXT:    v_readlane_b32 s38, v40, 4
@@ -55991,7 +56895,7 @@ define inreg <8 x double> @bitcast_v64i8_to_v8f64_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    v_lshlrev_b32_e32 v25, 24, v37
 ; SI-NEXT:    s_waitcnt vmcnt(5)
 ; SI-NEXT:    v_lshlrev_b32_e32 v27, 8, v27
-; SI-NEXT:    s_cbranch_scc0 .LBB87_4
+; SI-NEXT:    s_cbranch_scc0 .LBB87_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s6, 0xff
 ; SI-NEXT:    v_or_b32_e32 v0, s4, v34
@@ -56140,8 +57044,17 @@ define inreg <8 x double> @bitcast_v64i8_to_v8f64_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v8, s91
 ; SI-NEXT:    v_mov_b32_e32 v9, s92
 ; SI-NEXT:    v_mov_b32_e32 v10, s93
-; SI-NEXT:    s_cbranch_execnz .LBB87_3
-; SI-NEXT:  .LBB87_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB87_3
+; SI-NEXT:  .LBB87_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; SI-NEXT:  .LBB87_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB87_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -56352,12 +57265,9 @@ define inreg <8 x double> @bitcast_v64i8_to_v8f64_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v8, s15
 ; SI-NEXT:    v_mov_b32_e32 v9, s11
 ; SI-NEXT:    v_mov_b32_e32 v10, s7
-; SI-NEXT:  .LBB87_3: ; %end
+; SI-NEXT:  .LBB87_5: ; %end
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB87_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; SI-NEXT:    s_branch .LBB87_2
 ;
 ; VI-LABEL: bitcast_v64i8_to_v8f64_scalar:
 ; VI:       ; %bb.0:
@@ -56416,7 +57326,7 @@ define inreg <8 x double> @bitcast_v64i8_to_v8f64_scalar(<64 x i8> inreg %a, i32
 ; VI-NEXT:    s_waitcnt vmcnt(14)
 ; VI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v35
 ; VI-NEXT:    s_and_b64 s[4:5], vcc, exec
-; VI-NEXT:    s_cbranch_scc0 .LBB87_4
+; VI-NEXT:    s_cbranch_scc0 .LBB87_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -56508,8 +57418,17 @@ define inreg <8 x double> @bitcast_v64i8_to_v8f64_scalar(<64 x i8> inreg %a, i32
 ; VI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; VI-NEXT:    v_perm_b32 v35, v19, v18, s4
 ; VI-NEXT:    v_or_b32_e32 v15, v35, v15
-; VI-NEXT:    s_cbranch_execnz .LBB87_3
-; VI-NEXT:  .LBB87_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB87_3
+; VI-NEXT:  .LBB87_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; VI-NEXT:  .LBB87_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB87_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
@@ -56663,12 +57582,9 @@ define inreg <8 x double> @bitcast_v64i8_to_v8f64_scalar(<64 x i8> inreg %a, i32
 ; VI-NEXT:    v_add_u32_e32 v13, vcc, 0x3000000, v13
 ; VI-NEXT:    v_add_u32_e32 v14, vcc, 0x3000000, v14
 ; VI-NEXT:    v_add_u32_e32 v15, vcc, 0x3000000, v15
-; VI-NEXT:  .LBB87_3: ; %end
+; VI-NEXT:  .LBB87_5: ; %end
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB87_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-NEXT:    s_branch .LBB87_2
 ;
 ; GFX9-LABEL: bitcast_v64i8_to_v8f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -56727,7 +57643,7 @@ define inreg <8 x double> @bitcast_v64i8_to_v8f64_scalar(<64 x i8> inreg %a, i32
 ; GFX9-NEXT:    s_waitcnt vmcnt(19)
 ; GFX9-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v35
 ; GFX9-NEXT:    s_and_b64 s[4:5], vcc, exec
-; GFX9-NEXT:    s_cbranch_scc0 .LBB87_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB87_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -56821,8 +57737,17 @@ define inreg <8 x double> @bitcast_v64i8_to_v8f64_scalar(<64 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; GFX9-NEXT:    v_perm_b32 v35, v19, v18, s4
 ; GFX9-NEXT:    v_or_b32_e32 v15, v35, v15
-; GFX9-NEXT:    s_cbranch_execnz .LBB87_3
-; GFX9-NEXT:  .LBB87_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB87_3
+; GFX9-NEXT:  .LBB87_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX9-NEXT:  .LBB87_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB87_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
@@ -56963,12 +57888,9 @@ define inreg <8 x double> @bitcast_v64i8_to_v8f64_scalar(<64 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_add_u32_e32 v15, 0x300, v15
 ; GFX9-NEXT:    v_add_u32_sdwa v16, v16, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v15, v15, v16 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB87_3: ; %end
+; GFX9-NEXT:  .LBB87_5: ; %end
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB87_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX9-NEXT:    s_branch .LBB87_2
 ;
 ; GFX11-TRUE16-LABEL: bitcast_v64i8_to_v8f64_scalar:
 ; GFX11-TRUE16:       ; %bb.0:
@@ -57025,7 +57947,7 @@ define inreg <8 x double> @bitcast_v64i8_to_v8f64_scalar(<64 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v54
 ; GFX11-TRUE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB87_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB87_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    v_perm_b32 v16, v37, v34, 0xc0c0004
@@ -57097,9 +58019,17 @@ define inreg <8 x double> @bitcast_v64i8_to_v8f64_scalar(<64 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v13, v17, v15
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v14, v19, v16
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v15, v20, v18
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB87_3
-; GFX11-TRUE16-NEXT:  .LBB87_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB87_3
+; GFX11-TRUE16-NEXT:  .LBB87_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-TRUE16-NEXT:  .LBB87_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB87_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 3
@@ -57247,12 +58177,9 @@ define inreg <8 x double> @bitcast_v64i8_to_v8f64_scalar(<64 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v13, v14, v16
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v14, v17, v18
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v15, v19, v20
-; GFX11-TRUE16-NEXT:  .LBB87_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB87_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB87_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-TRUE16-NEXT:    s_branch .LBB87_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v64i8_to_v8f64_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -57309,7 +58236,7 @@ define inreg <8 x double> @bitcast_v64i8_to_v8f64_scalar(<64 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v54
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB87_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB87_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v16, v37, v34, 0xc0c0004
@@ -57381,9 +58308,17 @@ define inreg <8 x double> @bitcast_v64i8_to_v8f64_scalar(<64 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v13, v17, v15
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v14, v19, v16
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v15, v20, v18
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB87_3
-; GFX11-FAKE16-NEXT:  .LBB87_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB87_3
+; GFX11-FAKE16-NEXT:  .LBB87_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-FAKE16-NEXT:  .LBB87_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB87_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 3
@@ -57531,12 +58466,9 @@ define inreg <8 x double> @bitcast_v64i8_to_v8f64_scalar(<64 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v13, v14, v16
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v14, v17, v18
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v15, v19, v20
-; GFX11-FAKE16-NEXT:  .LBB87_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB87_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB87_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-FAKE16-NEXT:    s_branch .LBB87_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -58014,31 +58946,29 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v16, s35, 1
 ; SI-NEXT:    v_writelane_b32 v16, s36, 2
 ; SI-NEXT:    v_writelane_b32 v16, s37, 3
-; SI-NEXT:    v_writelane_b32 v16, s38, 4
-; SI-NEXT:    v_writelane_b32 v16, s39, 5
-; SI-NEXT:    v_writelane_b32 v16, s30, 6
-; SI-NEXT:    v_writelane_b32 v16, s31, 7
-; SI-NEXT:    v_readfirstlane_b32 s37, v1
-; SI-NEXT:    v_readfirstlane_b32 s39, v0
+; SI-NEXT:    v_writelane_b32 v16, s30, 4
+; SI-NEXT:    v_writelane_b32 v16, s31, 5
+; SI-NEXT:    v_readfirstlane_b32 s35, v1
+; SI-NEXT:    v_readfirstlane_b32 s37, v0
 ; SI-NEXT:    s_lshr_b32 s92, s29, 16
-; SI-NEXT:    s_lshr_b32 s36, s28, 16
+; SI-NEXT:    s_lshr_b32 s34, s28, 16
 ; SI-NEXT:    s_lshr_b32 s91, s27, 16
-; SI-NEXT:    s_lshr_b32 s35, s26, 16
+; SI-NEXT:    s_lshr_b32 s31, s26, 16
 ; SI-NEXT:    s_lshr_b32 s90, s25, 16
-; SI-NEXT:    s_lshr_b32 s34, s24, 16
+; SI-NEXT:    s_lshr_b32 s30, s24, 16
 ; SI-NEXT:    s_lshr_b32 s89, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s22, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
 ; SI-NEXT:    s_lshr_b32 s88, s21, 16
-; SI-NEXT:    s_lshr_b32 s30, s20, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s20, 16
 ; SI-NEXT:    s_lshr_b32 s79, s19, 16
 ; SI-NEXT:    s_lshr_b32 s95, s18, 16
 ; SI-NEXT:    s_lshr_b32 s78, s17, 16
 ; SI-NEXT:    s_lshr_b32 s94, s16, 16
-; SI-NEXT:    s_lshr_b32 s93, s37, 16
-; SI-NEXT:    s_lshr_b32 s38, s39, 16
+; SI-NEXT:    s_lshr_b32 s93, s35, 16
+; SI-NEXT:    s_lshr_b32 s36, s37, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB89_4
+; SI-NEXT:    s_cbranch_scc0 .LBB89_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s78, 16
@@ -58055,40 +58985,40 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s7, s88, 16
 ; SI-NEXT:    s_or_b32 s12, s4, s46
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s56, s30, 16
+; SI-NEXT:    s_lshl_b32 s56, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s57, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s89, 16
 ; SI-NEXT:    s_or_b32 s10, s4, s56
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s58, s31, 16
+; SI-NEXT:    s_lshl_b32 s58, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s59, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s90, 16
 ; SI-NEXT:    s_or_b32 s8, s4, s58
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s60, s34, 16
+; SI-NEXT:    s_lshl_b32 s60, s30, 16
 ; SI-NEXT:    s_or_b32 s61, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s91, 16
 ; SI-NEXT:    s_or_b32 s6, s4, s60
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s42, s35, 16
+; SI-NEXT:    s_lshl_b32 s42, s31, 16
 ; SI-NEXT:    s_or_b32 s43, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s92, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s42
-; SI-NEXT:    s_lshl_b32 s40, s36, 16
+; SI-NEXT:    s_lshl_b32 s40, s34, 16
 ; SI-NEXT:    s_or_b32 s41, s5, s7
-; SI-NEXT:    s_and_b32 s5, s37, 0xffff
+; SI-NEXT:    s_and_b32 s5, s35, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s93, 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[42:43], 16
 ; SI-NEXT:    s_and_b32 s42, s28, 0xffff
 ; SI-NEXT:    s_or_b32 s75, s5, s7
-; SI-NEXT:    s_lshl_b32 s74, s38, 16
+; SI-NEXT:    s_lshl_b32 s74, s36, 16
 ; SI-NEXT:    s_or_b32 s42, s42, s40
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[40:41], 16
-; SI-NEXT:    s_and_b32 s40, s39, 0xffff
+; SI-NEXT:    s_and_b32 s40, s37, 0xffff
 ; SI-NEXT:    s_mov_b32 s15, s45
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[44:45], 16
 ; SI-NEXT:    s_mov_b32 s13, s47
@@ -58104,21 +59034,45 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; SI-NEXT:    s_or_b32 s40, s40, s74
 ; SI-NEXT:    s_mov_b32 s41, s75
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[74:75], 16
-; SI-NEXT:    s_cbranch_execnz .LBB89_3
-; SI-NEXT:  .LBB89_2: ; %cmp.true
-; SI-NEXT:    s_add_i32 s39, s39, 3
-; SI-NEXT:    s_and_b32 s4, s39, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s38, 16
-; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_mov_b64 s[76:77], 0
+; SI-NEXT:    s_branch .LBB89_3
+; SI-NEXT:  .LBB89_2:
+; SI-NEXT:    s_mov_b64 s[76:77], -1
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:  .LBB89_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[76:77], s[76:77], exec
+; SI-NEXT:    s_cselect_b32 s45, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s45, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB89_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s37, s37, 3
-; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s37, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s36, 16
+; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_add_i32 s35, s35, 3
+; SI-NEXT:    s_add_i32 s40, s4, 0x30000
+; SI-NEXT:    s_and_b32 s4, s35, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s28, s28, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s36, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s29, s29, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
@@ -58128,7 +59082,7 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_and_b32 s5, s27, 0xffff
@@ -58136,7 +59090,7 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_and_b32 s6, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s34, 16
+; SI-NEXT:    s_lshl_b32 s7, s30, 16
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_and_b32 s7, s25, 0xffff
@@ -58144,7 +59098,7 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_or_b32 s7, s8, s7
 ; SI-NEXT:    s_and_b32 s8, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s9, s31, 16
+; SI-NEXT:    s_lshl_b32 s9, vcc_hi, 16
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_and_b32 s9, s23, 0xffff
@@ -58152,7 +59106,7 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_or_b32 s9, s10, s9
 ; SI-NEXT:    s_and_b32 s10, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s11, s30, 16
+; SI-NEXT:    s_lshl_b32 s11, vcc_lo, 16
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_or_b32 s10, s11, s10
 ; SI-NEXT:    s_and_b32 s11, s21, 0xffff
@@ -58202,7 +59156,7 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s91, s5, 16
 ; SI-NEXT:    s_lshr_b32 s92, s43, 16
 ; SI-NEXT:    s_lshr_b32 s93, s41, 16
-; SI-NEXT:  .LBB89_3: ; %end
+; SI-NEXT:  .LBB89_5: ; %end
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_lshl_b32 s16, s44, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s16
@@ -58251,7 +59205,7 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; SI-NEXT:    s_and_b32 s19, s41, 0xffff
 ; SI-NEXT:    s_lshl_b32 s20, s93, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s20
-; SI-NEXT:    v_readlane_b32 s30, v16, 6
+; SI-NEXT:    v_readlane_b32 s30, v16, 4
 ; SI-NEXT:    v_mov_b32_e32 v0, s14
 ; SI-NEXT:    v_mov_b32_e32 v1, s15
 ; SI-NEXT:    v_mov_b32_e32 v2, s12
@@ -58268,9 +59222,7 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v13, s17
 ; SI-NEXT:    v_mov_b32_e32 v14, s18
 ; SI-NEXT:    v_mov_b32_e32 v15, s19
-; SI-NEXT:    v_readlane_b32 s31, v16, 7
-; SI-NEXT:    v_readlane_b32 s39, v16, 5
-; SI-NEXT:    v_readlane_b32 s38, v16, 4
+; SI-NEXT:    v_readlane_b32 s31, v16, 5
 ; SI-NEXT:    v_readlane_b32 s37, v16, 3
 ; SI-NEXT:    v_readlane_b32 s36, v16, 2
 ; SI-NEXT:    v_readlane_b32 s35, v16, 1
@@ -58280,24 +59232,6 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB89_4:
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    s_branch .LBB89_2
 ;
 ; VI-LABEL: bitcast_v32i16_to_v32f16_scalar:
 ; VI:       ; %bb.0:
@@ -58306,10 +59240,18 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB89_4
+; VI-NEXT:    s_cbranch_scc0 .LBB89_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB89_3
-; VI-NEXT:  .LBB89_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB89_3
+; VI-NEXT:  .LBB89_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB89_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB89_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s8, s17, 0xffff0000
@@ -58390,7 +59332,7 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s10, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB89_3: ; %end
+; VI-NEXT:  .LBB89_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -58408,8 +59350,6 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB89_4:
-; VI-NEXT:    s_branch .LBB89_2
 ;
 ; GFX9-LABEL: bitcast_v32i16_to_v32f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -58423,10 +59363,18 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB89_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB89_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB89_4
-; GFX9-NEXT:  .LBB89_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB89_3
+; GFX9-NEXT:  .LBB89_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB89_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB89_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v15, s31, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v14, s30, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v13, s29, 3 op_sel_hi:[1,0]
@@ -58443,10 +59391,8 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB89_5
-; GFX9-NEXT:  .LBB89_3:
-; GFX9-NEXT:    s_branch .LBB89_2
-; GFX9-NEXT:  .LBB89_4:
+; GFX9-NEXT:    s_branch .LBB89_6
+; GFX9-NEXT:  .LBB89_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -58463,7 +59409,7 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB89_5: ; %end
+; GFX9-NEXT:  .LBB89_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -58481,11 +59427,16 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB89_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB89_4
-; GFX11-NEXT:  .LBB89_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB89_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB89_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB89_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v15, s27, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v14, s26, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v13, s25, 3 op_sel_hi:[1,0]
@@ -58503,8 +59454,6 @@ define inreg <32 x half> @bitcast_v32i16_to_v32f16_scalar(<32 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB89_3:
-; GFX11-NEXT:    s_branch .LBB89_2
 ; GFX11-NEXT:  .LBB89_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -58908,10 +59857,18 @@ define inreg <32 x i16> @bitcast_v32f16_to_v32i16_scalar(<32 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s15, s6, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB91_3
+; SI-NEXT:    s_cbranch_scc0 .LBB91_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB91_4
-; SI-NEXT:  .LBB91_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB91_3
+; SI-NEXT:  .LBB91_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB91_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB91_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s46
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s45
@@ -59048,10 +60005,8 @@ define inreg <32 x i16> @bitcast_v32f16_to_v32i16_scalar(<32 x half> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[20:21], v[10:11], 16
 ; SI-NEXT:    v_lshr_b64 v[18:19], v[12:13], 16
 ; SI-NEXT:    v_lshr_b64 v[16:17], v[14:15], 16
-; SI-NEXT:    s_branch .LBB91_5
-; SI-NEXT:  .LBB91_3:
-; SI-NEXT:    s_branch .LBB91_2
-; SI-NEXT:  .LBB91_4:
+; SI-NEXT:    s_branch .LBB91_6
+; SI-NEXT:  .LBB91_5:
 ; SI-NEXT:    v_mov_b32_e32 v32, s44
 ; SI-NEXT:    v_mov_b32_e32 v38, s41
 ; SI-NEXT:    v_mov_b32_e32 v33, s42
@@ -59084,7 +60039,7 @@ define inreg <32 x i16> @bitcast_v32f16_to_v32i16_scalar(<32 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v20, s14
 ; SI-NEXT:    v_mov_b32_e32 v18, s13
 ; SI-NEXT:    v_mov_b32_e32 v16, s15
-; SI-NEXT:  .LBB91_5: ; %end
+; SI-NEXT:  .LBB91_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v30
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v55
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
@@ -59147,10 +60102,18 @@ define inreg <32 x i16> @bitcast_v32f16_to_v32i16_scalar(<32 x half> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB91_3
+; VI-NEXT:    s_cbranch_scc0 .LBB91_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB91_4
-; VI-NEXT:  .LBB91_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB91_3
+; VI-NEXT:  .LBB91_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB91_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB91_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s5, s30, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v3, s5
@@ -59232,10 +60195,8 @@ define inreg <32 x i16> @bitcast_v32f16_to_v32i16_scalar(<32 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v1, s17, v1
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v17
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v16
-; VI-NEXT:    s_branch .LBB91_5
-; VI-NEXT:  .LBB91_3:
-; VI-NEXT:    s_branch .LBB91_2
-; VI-NEXT:  .LBB91_4:
+; VI-NEXT:    s_branch .LBB91_6
+; VI-NEXT:  .LBB91_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -59252,7 +60213,7 @@ define inreg <32 x i16> @bitcast_v32f16_to_v32i16_scalar(<32 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB91_5: ; %end
+; VI-NEXT:  .LBB91_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v18, 0
 ; VI-NEXT:    v_readlane_b32 s31, v18, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -59273,10 +60234,18 @@ define inreg <32 x i16> @bitcast_v32f16_to_v32i16_scalar(<32 x half> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB91_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB91_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB91_4
-; GFX9-NEXT:  .LBB91_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB91_3
+; GFX9-NEXT:  .LBB91_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB91_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB91_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v15, s31, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v14, s30, v0 op_sel_hi:[1,0]
@@ -59294,10 +60263,8 @@ define inreg <32 x i16> @bitcast_v32f16_to_v32i16_scalar(<32 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB91_5
-; GFX9-NEXT:  .LBB91_3:
-; GFX9-NEXT:    s_branch .LBB91_2
-; GFX9-NEXT:  .LBB91_4:
+; GFX9-NEXT:    s_branch .LBB91_6
+; GFX9-NEXT:  .LBB91_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -59314,7 +60281,7 @@ define inreg <32 x i16> @bitcast_v32f16_to_v32i16_scalar(<32 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB91_5: ; %end
+; GFX9-NEXT:  .LBB91_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -59332,11 +60299,16 @@ define inreg <32 x i16> @bitcast_v32f16_to_v32i16_scalar(<32 x half> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB91_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB91_4
-; GFX11-NEXT:  .LBB91_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB91_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB91_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB91_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v15, 0x200, s27 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v14, 0x200, s26 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s25 op_sel_hi:[0,1]
@@ -59354,8 +60326,6 @@ define inreg <32 x i16> @bitcast_v32f16_to_v32i16_scalar(<32 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB91_3:
-; GFX11-NEXT:    s_branch .LBB91_2
 ; GFX11-NEXT:  .LBB91_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -59790,16 +60760,14 @@ define inreg <32 x bfloat> @bitcast_v32i16_to_v32bf16_scalar(<32 x i16> inreg %a
 ; SI-NEXT:    v_writelane_b32 v17, s35, 1
 ; SI-NEXT:    v_writelane_b32 v17, s36, 2
 ; SI-NEXT:    v_writelane_b32 v17, s37, 3
-; SI-NEXT:    v_writelane_b32 v17, s38, 4
-; SI-NEXT:    v_writelane_b32 v17, s39, 5
-; SI-NEXT:    v_writelane_b32 v17, s30, 6
-; SI-NEXT:    v_writelane_b32 v17, s31, 7
-; SI-NEXT:    v_readfirstlane_b32 s39, v1
-; SI-NEXT:    v_readfirstlane_b32 s37, v0
-; SI-NEXT:    s_lshr_b32 s35, s29, 16
-; SI-NEXT:    s_lshr_b32 s34, s28, 16
-; SI-NEXT:    s_lshr_b32 s31, s27, 16
-; SI-NEXT:    s_lshr_b32 s30, s26, 16
+; SI-NEXT:    v_writelane_b32 v17, s30, 4
+; SI-NEXT:    v_writelane_b32 v17, s31, 5
+; SI-NEXT:    v_readfirstlane_b32 s37, v1
+; SI-NEXT:    v_readfirstlane_b32 s35, v0
+; SI-NEXT:    s_lshr_b32 s31, s29, 16
+; SI-NEXT:    s_lshr_b32 s30, s28, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s27, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s26, 16
 ; SI-NEXT:    s_lshr_b32 s95, s25, 16
 ; SI-NEXT:    s_lshr_b32 s94, s24, 16
 ; SI-NEXT:    s_lshr_b32 s93, s23, 16
@@ -59810,11 +60778,11 @@ define inreg <32 x bfloat> @bitcast_v32i16_to_v32bf16_scalar(<32 x i16> inreg %a
 ; SI-NEXT:    s_lshr_b32 s88, s18, 16
 ; SI-NEXT:    s_lshr_b32 s79, s17, 16
 ; SI-NEXT:    s_lshr_b32 s78, s16, 16
-; SI-NEXT:    s_lshr_b32 s38, s39, 16
 ; SI-NEXT:    s_lshr_b32 s36, s37, 16
+; SI-NEXT:    s_lshr_b32 s34, s35, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB93_4
+; SI-NEXT:    s_cbranch_scc0 .LBB93_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s73, s16, 16
 ; SI-NEXT:    s_lshl_b32 s77, s78, 16
@@ -59837,42 +60805,82 @@ define inreg <32 x bfloat> @bitcast_v32i16_to_v32bf16_scalar(<32 x i16> inreg %a
 ; SI-NEXT:    s_lshl_b32 s15, s25, 16
 ; SI-NEXT:    s_lshl_b32 s46, s95, 16
 ; SI-NEXT:    s_lshl_b32 s13, s26, 16
-; SI-NEXT:    s_lshl_b32 s44, s30, 16
+; SI-NEXT:    s_lshl_b32 s44, vcc_lo, 16
 ; SI-NEXT:    s_lshl_b32 s11, s27, 16
-; SI-NEXT:    s_lshl_b32 s42, s31, 16
+; SI-NEXT:    s_lshl_b32 s42, vcc_hi, 16
 ; SI-NEXT:    s_lshl_b32 s10, s28, 16
-; SI-NEXT:    s_lshl_b32 s40, s34, 16
+; SI-NEXT:    s_lshl_b32 s40, s30, 16
 ; SI-NEXT:    s_lshl_b32 s8, s29, 16
-; SI-NEXT:    s_lshl_b32 s14, s35, 16
-; SI-NEXT:    s_lshl_b32 s7, s37, 16
-; SI-NEXT:    s_lshl_b32 s12, s36, 16
-; SI-NEXT:    s_lshl_b32 s6, s39, 16
-; SI-NEXT:    s_lshl_b32 s9, s38, 16
-; SI-NEXT:    s_cbranch_execnz .LBB93_3
-; SI-NEXT:  .LBB93_2: ; %cmp.true
-; SI-NEXT:    s_add_i32 s39, s39, 3
-; SI-NEXT:    s_and_b32 s4, s39, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s38, 16
+; SI-NEXT:    s_lshl_b32 s14, s31, 16
+; SI-NEXT:    s_lshl_b32 s7, s35, 16
+; SI-NEXT:    s_lshl_b32 s12, s34, 16
+; SI-NEXT:    s_lshl_b32 s6, s37, 16
+; SI-NEXT:    s_lshl_b32 s9, s36, 16
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB93_3
+; SI-NEXT:  .LBB93_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr43
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:  .LBB93_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB93_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s37, s37, 3
+; SI-NEXT:    s_and_b32 s4, s37, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s36, 16
+; SI-NEXT:    s_add_i32 s35, s35, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s5, s37, 0xffff
-; SI-NEXT:    s_lshl_b32 s6, s36, 16
+; SI-NEXT:    s_and_b32 s5, s35, 0xffff
+; SI-NEXT:    s_lshl_b32 s6, s34, 16
 ; SI-NEXT:    s_add_i32 s29, s29, 3
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_and_b32 s6, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s35, 16
+; SI-NEXT:    s_lshl_b32 s7, s31, 16
 ; SI-NEXT:    s_add_i32 s28, s28, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_and_b32 s7, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s8, s34, 16
+; SI-NEXT:    s_lshl_b32 s8, s30, 16
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_or_b32 s7, s8, s7
 ; SI-NEXT:    s_and_b32 s8, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s9, s31, 16
+; SI-NEXT:    s_lshl_b32 s9, vcc_hi, 16
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_and_b32 s9, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s10, s30, 16
+; SI-NEXT:    s_lshl_b32 s10, vcc_lo, 16
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_or_b32 s9, s10, s9
 ; SI-NEXT:    s_and_b32 s10, s25, 0xffff
@@ -59962,7 +60970,7 @@ define inreg <32 x bfloat> @bitcast_v32i16_to_v32bf16_scalar(<32 x i16> inreg %a
 ; SI-NEXT:    s_lshl_b32 s7, s5, 16
 ; SI-NEXT:    s_and_b32 s9, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s4, 16
-; SI-NEXT:  .LBB93_3: ; %end
+; SI-NEXT:  .LBB93_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s77
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s73
@@ -60026,11 +61034,9 @@ define inreg <32 x bfloat> @bitcast_v32i16_to_v32bf16_scalar(<32 x i16> inreg %a
 ; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s9
 ; SI-NEXT:    v_lshrrev_b32_e32 v16, 16, v15
 ; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s6
-; SI-NEXT:    v_readlane_b32 s30, v17, 6
+; SI-NEXT:    v_readlane_b32 s30, v17, 4
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[15:16], 16
-; SI-NEXT:    v_readlane_b32 s31, v17, 7
-; SI-NEXT:    v_readlane_b32 s39, v17, 5
-; SI-NEXT:    v_readlane_b32 s38, v17, 4
+; SI-NEXT:    v_readlane_b32 s31, v17, 5
 ; SI-NEXT:    v_readlane_b32 s37, v17, 3
 ; SI-NEXT:    v_readlane_b32 s36, v17, 2
 ; SI-NEXT:    v_readlane_b32 s35, v17, 1
@@ -60040,40 +61046,6 @@ define inreg <32 x bfloat> @bitcast_v32i16_to_v32bf16_scalar(<32 x i16> inreg %a
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB93_4:
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr43
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    s_branch .LBB93_2
 ;
 ; VI-LABEL: bitcast_v32i16_to_v32bf16_scalar:
 ; VI:       ; %bb.0:
@@ -60082,10 +61054,18 @@ define inreg <32 x bfloat> @bitcast_v32i16_to_v32bf16_scalar(<32 x i16> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s6, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB93_4
+; VI-NEXT:    s_cbranch_scc0 .LBB93_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB93_3
-; VI-NEXT:  .LBB93_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB93_3
+; VI-NEXT:  .LBB93_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB93_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB93_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff0000
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_and_b32 s8, s17, 0xffff0000
@@ -60166,7 +61146,7 @@ define inreg <32 x bfloat> @bitcast_v32i16_to_v32bf16_scalar(<32 x i16> inreg %a
 ; VI-NEXT:    s_add_i32 s18, s10, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB93_3: ; %end
+; VI-NEXT:  .LBB93_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -60184,8 +61164,6 @@ define inreg <32 x bfloat> @bitcast_v32i16_to_v32bf16_scalar(<32 x i16> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_mov_b32_e32 v15, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB93_4:
-; VI-NEXT:    s_branch .LBB93_2
 ;
 ; GFX9-LABEL: bitcast_v32i16_to_v32bf16_scalar:
 ; GFX9:       ; %bb.0:
@@ -60199,10 +61177,18 @@ define inreg <32 x bfloat> @bitcast_v32i16_to_v32bf16_scalar(<32 x i16> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB93_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB93_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB93_4
-; GFX9-NEXT:  .LBB93_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB93_3
+; GFX9-NEXT:  .LBB93_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB93_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB93_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v15, s31, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v14, s30, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v13, s29, 3 op_sel_hi:[1,0]
@@ -60219,10 +61205,8 @@ define inreg <32 x bfloat> @bitcast_v32i16_to_v32bf16_scalar(<32 x i16> inreg %a
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB93_5
-; GFX9-NEXT:  .LBB93_3:
-; GFX9-NEXT:    s_branch .LBB93_2
-; GFX9-NEXT:  .LBB93_4:
+; GFX9-NEXT:    s_branch .LBB93_6
+; GFX9-NEXT:  .LBB93_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -60239,7 +61223,7 @@ define inreg <32 x bfloat> @bitcast_v32i16_to_v32bf16_scalar(<32 x i16> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB93_5: ; %end
+; GFX9-NEXT:  .LBB93_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -60257,11 +61241,16 @@ define inreg <32 x bfloat> @bitcast_v32i16_to_v32bf16_scalar(<32 x i16> inreg %a
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB93_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB93_4
-; GFX11-NEXT:  .LBB93_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB93_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB93_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB93_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v15, s27, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v14, s26, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v13, s25, 3 op_sel_hi:[1,0]
@@ -60279,8 +61268,6 @@ define inreg <32 x bfloat> @bitcast_v32i16_to_v32bf16_scalar(<32 x i16> inreg %a
 ; GFX11-NEXT:    v_pk_add_u16 v1, s13, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s12, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB93_3:
-; GFX11-NEXT:    s_branch .LBB93_2
 ; GFX11-NEXT:  .LBB93_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -61871,7 +62858,7 @@ define inreg <32 x i16> @bitcast_v32bf16_to_v32i16_scalar(<32 x bfloat> inreg %a
 ; SI-NEXT:    v_mul_f32_e64 v28, 1.0, s45
 ; SI-NEXT:    v_mul_f32_e64 v55, 1.0, s42
 ; SI-NEXT:    v_mul_f32_e64 v16, 1.0, s43
-; SI-NEXT:    s_cbranch_scc0 .LBB95_4
+; SI-NEXT:    s_cbranch_scc0 .LBB95_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v63
 ; SI-NEXT:    v_lshrrev_b32_e32 v52, 16, v6
@@ -61887,6 +62874,7 @@ define inreg <32 x i16> @bitcast_v32bf16_to_v32i16_scalar(<32 x bfloat> inreg %a
 ; SI-NEXT:    v_lshrrev_b32_e32 v35, 16, v8
 ; SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v58
 ; SI-NEXT:    v_lshrrev_b32_e32 v40, 16, v57
+; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    v_lshrrev_b32_e32 v36, 16, v20
 ; SI-NEXT:    v_lshrrev_b32_e32 v25, 16, v56
 ; SI-NEXT:    v_lshrrev_b32_e32 v41, 16, v47
@@ -61905,8 +62893,47 @@ define inreg <32 x i16> @bitcast_v32bf16_to_v32i16_scalar(<32 x bfloat> inreg %a
 ; SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v32
 ; SI-NEXT:    v_lshrrev_b32_e32 v17, 16, v30
 ; SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v55
-; SI-NEXT:    s_cbranch_execnz .LBB95_3
-; SI-NEXT:  .LBB95_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB95_3
+; SI-NEXT:  .LBB95_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr5
+; SI-NEXT:    ; implicit-def: $vgpr52
+; SI-NEXT:    ; implicit-def: $vgpr51
+; SI-NEXT:    ; implicit-def: $vgpr9
+; SI-NEXT:    ; implicit-def: $vgpr53
+; SI-NEXT:    ; implicit-def: $vgpr49
+; SI-NEXT:    ; implicit-def: $vgpr13
+; SI-NEXT:    ; implicit-def: $vgpr54
+; SI-NEXT:    ; implicit-def: $vgpr38
+; SI-NEXT:    ; implicit-def: $vgpr23
+; SI-NEXT:    ; implicit-def: $vgpr39
+; SI-NEXT:    ; implicit-def: $vgpr35
+; SI-NEXT:    ; implicit-def: $vgpr24
+; SI-NEXT:    ; implicit-def: $vgpr40
+; SI-NEXT:    ; implicit-def: $vgpr36
+; SI-NEXT:    ; implicit-def: $vgpr25
+; SI-NEXT:    ; implicit-def: $vgpr41
+; SI-NEXT:    ; implicit-def: $vgpr33
+; SI-NEXT:    ; implicit-def: $vgpr26
+; SI-NEXT:    ; implicit-def: $vgpr42
+; SI-NEXT:    ; implicit-def: $vgpr31
+; SI-NEXT:    ; implicit-def: $vgpr27
+; SI-NEXT:    ; implicit-def: $vgpr43
+; SI-NEXT:    ; implicit-def: $vgpr29
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:    ; implicit-def: $vgpr21
+; SI-NEXT:    ; implicit-def: $vgpr7
+; SI-NEXT:    ; implicit-def: $vgpr19
+; SI-NEXT:    ; implicit-def: $vgpr11
+; SI-NEXT:    ; implicit-def: $vgpr17
+; SI-NEXT:    ; implicit-def: $vgpr15
+; SI-NEXT:  .LBB95_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB95_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v63
 ; SI-NEXT:    v_add_f32_e32 v5, 0x40c00000, v1
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v6
@@ -62019,7 +63046,7 @@ define inreg <32 x i16> @bitcast_v32bf16_to_v32i16_scalar(<32 x bfloat> inreg %a
 ; SI-NEXT:    v_lshr_b64 v[42:43], v[16:17], 16
 ; SI-NEXT:    v_lshr_b64 v[54:55], v[20:21], 16
 ; SI-NEXT:    v_lshr_b64 v[43:44], v[14:15], 16
-; SI-NEXT:  .LBB95_3: ; %end
+; SI-NEXT:  .LBB95_5: ; %end
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v3
 ; SI-NEXT:    v_and_b32_e32 v3, 0xffff, v1
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v5
@@ -62086,40 +63113,6 @@ define inreg <32 x i16> @bitcast_v32bf16_to_v32i16_scalar(<32 x bfloat> inreg %a
 ; SI-NEXT:    v_or_b32_e32 v15, v15, v16
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB95_4:
-; SI-NEXT:    ; implicit-def: $vgpr5
-; SI-NEXT:    ; implicit-def: $vgpr52
-; SI-NEXT:    ; implicit-def: $vgpr51
-; SI-NEXT:    ; implicit-def: $vgpr9
-; SI-NEXT:    ; implicit-def: $vgpr53
-; SI-NEXT:    ; implicit-def: $vgpr49
-; SI-NEXT:    ; implicit-def: $vgpr13
-; SI-NEXT:    ; implicit-def: $vgpr54
-; SI-NEXT:    ; implicit-def: $vgpr38
-; SI-NEXT:    ; implicit-def: $vgpr23
-; SI-NEXT:    ; implicit-def: $vgpr39
-; SI-NEXT:    ; implicit-def: $vgpr35
-; SI-NEXT:    ; implicit-def: $vgpr24
-; SI-NEXT:    ; implicit-def: $vgpr40
-; SI-NEXT:    ; implicit-def: $vgpr36
-; SI-NEXT:    ; implicit-def: $vgpr25
-; SI-NEXT:    ; implicit-def: $vgpr41
-; SI-NEXT:    ; implicit-def: $vgpr33
-; SI-NEXT:    ; implicit-def: $vgpr26
-; SI-NEXT:    ; implicit-def: $vgpr42
-; SI-NEXT:    ; implicit-def: $vgpr31
-; SI-NEXT:    ; implicit-def: $vgpr27
-; SI-NEXT:    ; implicit-def: $vgpr43
-; SI-NEXT:    ; implicit-def: $vgpr29
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    ; implicit-def: $vgpr21
-; SI-NEXT:    ; implicit-def: $vgpr7
-; SI-NEXT:    ; implicit-def: $vgpr19
-; SI-NEXT:    ; implicit-def: $vgpr11
-; SI-NEXT:    ; implicit-def: $vgpr17
-; SI-NEXT:    ; implicit-def: $vgpr15
-; SI-NEXT:    s_branch .LBB95_2
 ;
 ; VI-LABEL: bitcast_v32bf16_to_v32i16_scalar:
 ; VI:       ; %bb.0:
@@ -62133,10 +63126,18 @@ define inreg <32 x i16> @bitcast_v32bf16_to_v32i16_scalar(<32 x bfloat> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB95_3
+; VI-NEXT:    s_cbranch_scc0 .LBB95_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB95_4
-; VI-NEXT:  .LBB95_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB95_3
+; VI-NEXT:  .LBB95_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB95_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB95_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v16, 0x40c00000
 ; VI-NEXT:    s_lshl_b32 s4, s26, 16
 ; VI-NEXT:    v_add_f32_e32 v4, s4, v16
@@ -62433,10 +63434,8 @@ define inreg <32 x i16> @bitcast_v32bf16_to_v32i16_scalar(<32 x bfloat> inreg %a
 ; VI-NEXT:    v_lshrrev_b64 v[17:18], 16, v[17:18]
 ; VI-NEXT:    v_lshrrev_b64 v[15:16], 16, v[15:16]
 ; VI-NEXT:    v_mov_b32_e32 v13, v17
-; VI-NEXT:    s_branch .LBB95_5
-; VI-NEXT:  .LBB95_3:
-; VI-NEXT:    s_branch .LBB95_2
-; VI-NEXT:  .LBB95_4:
+; VI-NEXT:    s_branch .LBB95_6
+; VI-NEXT:  .LBB95_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -62453,7 +63452,7 @@ define inreg <32 x i16> @bitcast_v32bf16_to_v32i16_scalar(<32 x bfloat> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB95_5: ; %end
+; VI-NEXT:  .LBB95_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v20, 0
 ; VI-NEXT:    v_readlane_b32 s31, v20, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -62474,10 +63473,18 @@ define inreg <32 x i16> @bitcast_v32bf16_to_v32i16_scalar(<32 x bfloat> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB95_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB95_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB95_4
-; GFX9-NEXT:  .LBB95_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB95_3
+; GFX9-NEXT:  .LBB95_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB95_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB95_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    s_and_b32 s5, s30, 0xffff0000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s5, v0
@@ -62768,10 +63775,8 @@ define inreg <32 x i16> @bitcast_v32bf16_to_v32i16_scalar(<32 x bfloat> inreg %a
 ; GFX9-NEXT:    v_cndmask_b32_e32 v0, v18, v19, vcc
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
 ; GFX9-NEXT:    v_and_or_b32 v0, v17, v16, v0
-; GFX9-NEXT:    s_branch .LBB95_5
-; GFX9-NEXT:  .LBB95_3:
-; GFX9-NEXT:    s_branch .LBB95_2
-; GFX9-NEXT:  .LBB95_4:
+; GFX9-NEXT:    s_branch .LBB95_6
+; GFX9-NEXT:  .LBB95_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -62788,7 +63793,7 @@ define inreg <32 x i16> @bitcast_v32bf16_to_v32i16_scalar(<32 x bfloat> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB95_5: ; %end
+; GFX9-NEXT:  .LBB95_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v20, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v20, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -62806,11 +63811,16 @@ define inreg <32 x i16> @bitcast_v32bf16_to_v32i16_scalar(<32 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB95_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB95_4
-; GFX11-TRUE16-NEXT:  .LBB95_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB95_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:  .LBB95_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB95_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s0, s12, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s12, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -63079,8 +64089,6 @@ define inreg <32 x i16> @bitcast_v32bf16_to_v32i16_scalar(<32 x bfloat> inreg %a
 ; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v15, v32, v37, vcc_lo
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v15.l, v33.h
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB95_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB95_2
 ; GFX11-TRUE16-NEXT:  .LBB95_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -63101,11 +64109,16 @@ define inreg <32 x i16> @bitcast_v32bf16_to_v32i16_scalar(<32 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB95_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB95_4
-; GFX11-FAKE16-NEXT:  .LBB95_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB95_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:  .LBB95_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB95_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_and_b32 s0, s12, 0xffff0000
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s1, s12, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -63399,8 +64412,6 @@ define inreg <32 x i16> @bitcast_v32bf16_to_v32i16_scalar(<32 x bfloat> inreg %a
 ; GFX11-FAKE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v16, v23
 ; GFX11-FAKE16-NEXT:    v_and_or_b32 v0, 0xffff0000, v0, v24
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB95_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB95_2
 ; GFX11-FAKE16-NEXT:  .LBB95_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -65458,7 +66469,7 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s4, v3
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    ; implicit-def: $vgpr5 : SGPR spill to VGPR lane
-; SI-NEXT:    s_cbranch_scc0 .LBB97_4
+; SI-NEXT:    s_cbranch_scc0 .LBB97_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s84, 16
@@ -65557,8 +66568,75 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[30:31], s[4:5], 24
 ; SI-NEXT:    s_lshr_b64 s[34:35], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[36:37], s[4:5], 8
-; SI-NEXT:    s_cbranch_execnz .LBB97_3
-; SI-NEXT:  .LBB97_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 vcc, 0
+; SI-NEXT:    s_branch .LBB97_3
+; SI-NEXT:  .LBB97_2:
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    s_mov_b64 vcc, -1
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v5, s4, 0
+; SI-NEXT:    v_writelane_b32 v5, s5, 1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    ; implicit-def: $sgpr99
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    v_writelane_b32 v5, s4, 2
+; SI-NEXT:    v_writelane_b32 v5, s5, 3
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v5, s4, 4
+; SI-NEXT:    v_writelane_b32 v5, s5, 5
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v5, s4, 6
+; SI-NEXT:    v_writelane_b32 v5, s5, 7
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:  .LBB97_3: ; %Flow
+; SI-NEXT:    s_and_b64 vcc, vcc, exec
+; SI-NEXT:    s_cselect_b32 vcc_lo, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 vcc_lo, 1
+; SI-NEXT:    v_readlane_b32 vcc_lo, v5, 2
+; SI-NEXT:    v_readlane_b32 vcc_hi, v5, 3
+; SI-NEXT:    s_cbranch_scc1 .LBB97_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s58, s58, 3
 ; SI-NEXT:    s_and_b32 s4, s58, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s56, 16
@@ -65631,9 +66709,6 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s17, s83, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s43, s16, 0x30000
-; SI-NEXT:    s_lshr_b64 s[16:17], s[42:43], 24
-; SI-NEXT:    v_writelane_b32 v5, s16, 2
-; SI-NEXT:    v_writelane_b32 v5, s17, 3
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[42:43], 16
 ; SI-NEXT:    v_writelane_b32 v5, s16, 0
 ; SI-NEXT:    v_writelane_b32 v5, s17, 1
@@ -65659,6 +66734,7 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[8:9], 8
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[14:15], 24
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[14:15], 16
+; SI-NEXT:    s_lshr_b64 vcc, s[42:43], 24
 ; SI-NEXT:    v_writelane_b32 v5, s16, 6
 ; SI-NEXT:    s_lshr_b64 s[66:67], s[14:15], 8
 ; SI-NEXT:    s_lshr_b64 s[52:53], s[10:11], 24
@@ -65695,16 +66771,14 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s69, s5, 16
 ; SI-NEXT:    s_lshr_b32 s45, s5, 8
 ; SI-NEXT:    v_writelane_b32 v5, s17, 7
-; SI-NEXT:  .LBB97_3: ; %end
-; SI-NEXT:    v_readlane_b32 s18, v5, 0
+; SI-NEXT:  .LBB97_5: ; %end
 ; SI-NEXT:    s_and_b32 s16, s42, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s62, 8
-; SI-NEXT:    v_readlane_b32 s19, v5, 1
+; SI-NEXT:    v_readlane_b32 s18, v5, 0
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s18, 0xff
-; SI-NEXT:    v_readlane_b32 s18, v5, 2
 ; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_lshl_b32 s18, s18, 24
+; SI-NEXT:    s_lshl_b32 s18, vcc_lo, 24
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    s_or_b32 s16, s16, s17
@@ -65718,7 +66792,7 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    v_readlane_b32 s19, v5, 3
+; SI-NEXT:    v_readlane_b32 s19, v5, 1
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
 ; SI-NEXT:    s_and_b32 s16, s40, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s74, 8
@@ -65951,65 +67025,6 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB97_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v5, s4, 0
-; SI-NEXT:    v_writelane_b32 v5, s5, 1
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr98
-; SI-NEXT:    ; implicit-def: $sgpr99
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    v_writelane_b32 v5, s4, 2
-; SI-NEXT:    v_writelane_b32 v5, s5, 3
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v5, s4, 4
-; SI-NEXT:    v_writelane_b32 v5, s5, 5
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v5, s4, 6
-; SI-NEXT:    v_writelane_b32 v5, s5, 7
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_branch .LBB97_2
 ;
 ; VI-LABEL: bitcast_v32i16_to_v64i8_scalar:
 ; VI:       ; %bb.0:
@@ -66033,15 +67048,13 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; VI-NEXT:    v_writelane_b32 v4, s55, 13
 ; VI-NEXT:    v_writelane_b32 v4, s64, 14
 ; VI-NEXT:    v_writelane_b32 v4, s65, 15
-; VI-NEXT:    v_writelane_b32 v4, s66, 16
-; VI-NEXT:    v_writelane_b32 v4, s67, 17
-; VI-NEXT:    v_writelane_b32 v4, s30, 18
-; VI-NEXT:    v_writelane_b32 v4, s31, 19
+; VI-NEXT:    v_writelane_b32 v4, s30, 16
+; VI-NEXT:    v_writelane_b32 v4, s31, 17
 ; VI-NEXT:    v_readfirstlane_b32 s4, v3
 ; VI-NEXT:    v_readfirstlane_b32 s5, v2
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v1
-; VI-NEXT:    s_cbranch_scc0 .LBB97_4
+; VI-NEXT:    s_cbranch_scc0 .LBB97_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s56, s5, 24
 ; VI-NEXT:    s_lshr_b32 s57, s5, 16
@@ -66078,11 +67091,11 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s52, s19, 8
 ; VI-NEXT:    s_lshr_b32 s53, s18, 16
 ; VI-NEXT:    s_lshr_b32 s54, s18, 8
-; VI-NEXT:    s_lshr_b32 s55, s17, 24
-; VI-NEXT:    s_lshr_b32 s64, s17, 16
-; VI-NEXT:    s_lshr_b32 s65, s17, 8
-; VI-NEXT:    s_lshr_b32 s66, s16, 16
-; VI-NEXT:    s_lshr_b32 s67, s16, 8
+; VI-NEXT:    s_lshr_b32 vcc_lo, s17, 24
+; VI-NEXT:    s_lshr_b32 vcc_hi, s17, 16
+; VI-NEXT:    s_lshr_b32 s55, s17, 8
+; VI-NEXT:    s_lshr_b32 s64, s16, 16
+; VI-NEXT:    s_lshr_b32 s65, s16, 8
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[4:5], 24
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[28:29], 24
 ; VI-NEXT:    s_lshr_b64 s[10:11], s[26:27], 24
@@ -66091,8 +67104,64 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; VI-NEXT:    s_lshr_b64 s[40:41], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[42:43], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[44:45], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB97_3
-; VI-NEXT:  .LBB97_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[46:47], 0
+; VI-NEXT:    s_branch .LBB97_3
+; VI-NEXT:  .LBB97_2:
+; VI-NEXT:    s_mov_b64 s[46:47], -1
+; VI-NEXT:    ; implicit-def: $sgpr65
+; VI-NEXT:    ; implicit-def: $sgpr64
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr55
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr54
+; VI-NEXT:    ; implicit-def: $sgpr53
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr52
+; VI-NEXT:    ; implicit-def: $sgpr51
+; VI-NEXT:    ; implicit-def: $sgpr50
+; VI-NEXT:    ; implicit-def: $sgpr49
+; VI-NEXT:    ; implicit-def: $sgpr48
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr39
+; VI-NEXT:    ; implicit-def: $sgpr38
+; VI-NEXT:    ; implicit-def: $sgpr37
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr35
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:  .LBB97_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; VI-NEXT:    s_cselect_b32 s7, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s7, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB97_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s7, s17, 3
 ; VI-NEXT:    s_and_b32 s6, s17, 0xffff0000
 ; VI-NEXT:    s_and_b32 s7, s7, 0xffff
@@ -66216,23 +67285,23 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s52, s19, 8
 ; VI-NEXT:    s_lshr_b32 s53, s18, 16
 ; VI-NEXT:    s_lshr_b32 s54, s18, 8
-; VI-NEXT:    s_lshr_b32 s55, s17, 24
-; VI-NEXT:    s_lshr_b32 s64, s17, 16
-; VI-NEXT:    s_lshr_b32 s65, s17, 8
-; VI-NEXT:    s_lshr_b32 s66, s16, 16
-; VI-NEXT:    s_lshr_b32 s67, s16, 8
-; VI-NEXT:  .LBB97_3: ; %end
+; VI-NEXT:    s_lshr_b32 vcc_lo, s17, 24
+; VI-NEXT:    s_lshr_b32 vcc_hi, s17, 16
+; VI-NEXT:    s_lshr_b32 s55, s17, 8
+; VI-NEXT:    s_lshr_b32 s64, s16, 16
+; VI-NEXT:    s_lshr_b32 s65, s16, 8
+; VI-NEXT:  .LBB97_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v3, s44
-; VI-NEXT:    v_mov_b32_e32 v1, s67
-; VI-NEXT:    v_perm_b32 v3, s66, v3, v2
+; VI-NEXT:    v_mov_b32_e32 v1, s65
+; VI-NEXT:    v_perm_b32 v3, s64, v3, v2
 ; VI-NEXT:    v_perm_b32 v1, s16, v1, v2
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v3
-; VI-NEXT:    v_mov_b32_e32 v3, s55
+; VI-NEXT:    v_mov_b32_e32 v3, vcc_lo
 ; VI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
-; VI-NEXT:    v_mov_b32_e32 v1, s65
-; VI-NEXT:    v_perm_b32 v3, s64, v3, v2
+; VI-NEXT:    v_mov_b32_e32 v1, s55
+; VI-NEXT:    v_perm_b32 v3, vcc_hi, v3, v2
 ; VI-NEXT:    v_perm_b32 v1, s17, v1, v2
 ; VI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v3
@@ -66349,11 +67418,9 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v2
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 60, v0
-; VI-NEXT:    v_readlane_b32 s30, v4, 18
+; VI-NEXT:    v_readlane_b32 s30, v4, 16
 ; VI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
-; VI-NEXT:    v_readlane_b32 s31, v4, 19
-; VI-NEXT:    v_readlane_b32 s67, v4, 17
-; VI-NEXT:    v_readlane_b32 s66, v4, 16
+; VI-NEXT:    v_readlane_b32 s31, v4, 17
 ; VI-NEXT:    v_readlane_b32 s65, v4, 15
 ; VI-NEXT:    v_readlane_b32 s64, v4, 14
 ; VI-NEXT:    v_readlane_b32 s55, v4, 13
@@ -66375,56 +67442,6 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB97_4:
-; VI-NEXT:    ; implicit-def: $sgpr67
-; VI-NEXT:    ; implicit-def: $sgpr66
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr65
-; VI-NEXT:    ; implicit-def: $sgpr64
-; VI-NEXT:    ; implicit-def: $sgpr55
-; VI-NEXT:    ; implicit-def: $sgpr54
-; VI-NEXT:    ; implicit-def: $sgpr53
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr52
-; VI-NEXT:    ; implicit-def: $sgpr51
-; VI-NEXT:    ; implicit-def: $sgpr50
-; VI-NEXT:    ; implicit-def: $sgpr49
-; VI-NEXT:    ; implicit-def: $sgpr48
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr39
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr37
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    s_branch .LBB97_2
 ;
 ; GFX9-LABEL: bitcast_v32i16_to_v64i8_scalar:
 ; GFX9:       ; %bb.0:
@@ -66459,15 +67476,13 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_writelane_b32 v63, s51, 9
 ; GFX9-NEXT:    v_writelane_b32 v63, s52, 10
 ; GFX9-NEXT:    v_writelane_b32 v63, s53, 11
-; GFX9-NEXT:    v_writelane_b32 v63, s54, 12
-; GFX9-NEXT:    v_writelane_b32 v63, s55, 13
-; GFX9-NEXT:    v_writelane_b32 v63, s30, 14
-; GFX9-NEXT:    v_writelane_b32 v63, s31, 15
+; GFX9-NEXT:    v_writelane_b32 v63, s30, 12
+; GFX9-NEXT:    v_writelane_b32 v63, s31, 13
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v3
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v2
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v1
-; GFX9-NEXT:    s_cbranch_scc0 .LBB97_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB97_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s56, s5, 24
 ; GFX9-NEXT:    s_lshr_b32 s57, s5, 16
@@ -66493,22 +67508,22 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b32 s93, s23, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s23, 8
 ; GFX9-NEXT:    s_lshr_b32 s94, s22, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s22, 8
-; GFX9-NEXT:    s_lshr_b32 s31, s21, 24
-; GFX9-NEXT:    s_lshr_b32 s34, s21, 16
-; GFX9-NEXT:    s_lshr_b32 s36, s21, 8
-; GFX9-NEXT:    s_lshr_b32 s35, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s37, s20, 8
-; GFX9-NEXT:    s_lshr_b32 s38, s19, 24
-; GFX9-NEXT:    s_lshr_b32 s39, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s49, s19, 8
-; GFX9-NEXT:    s_lshr_b32 s48, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s50, s18, 8
-; GFX9-NEXT:    s_lshr_b32 s51, s17, 24
-; GFX9-NEXT:    s_lshr_b32 s52, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s54, s17, 8
-; GFX9-NEXT:    s_lshr_b32 s53, s16, 16
-; GFX9-NEXT:    s_lshr_b32 s55, s16, 8
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s22, 8
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s21, 24
+; GFX9-NEXT:    s_lshr_b32 s30, s21, 16
+; GFX9-NEXT:    s_lshr_b32 s34, s21, 8
+; GFX9-NEXT:    s_lshr_b32 s31, s20, 16
+; GFX9-NEXT:    s_lshr_b32 s35, s20, 8
+; GFX9-NEXT:    s_lshr_b32 s36, s19, 24
+; GFX9-NEXT:    s_lshr_b32 s37, s19, 16
+; GFX9-NEXT:    s_lshr_b32 s39, s19, 8
+; GFX9-NEXT:    s_lshr_b32 s38, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s48, s18, 8
+; GFX9-NEXT:    s_lshr_b32 s49, s17, 24
+; GFX9-NEXT:    s_lshr_b32 s50, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s52, s17, 8
+; GFX9-NEXT:    s_lshr_b32 s51, s16, 16
+; GFX9-NEXT:    s_lshr_b32 s53, s16, 8
 ; GFX9-NEXT:    s_lshr_b64 s[44:45], s[4:5], 24
 ; GFX9-NEXT:    s_lshr_b64 s[42:43], s[28:29], 24
 ; GFX9-NEXT:    s_lshr_b64 s[40:41], s[26:27], 24
@@ -66517,8 +67532,64 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b64 s[10:11], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB97_4
-; GFX9-NEXT:  .LBB97_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[46:47], 0
+; GFX9-NEXT:    s_branch .LBB97_3
+; GFX9-NEXT:  .LBB97_2:
+; GFX9-NEXT:    s_mov_b64 s[46:47], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr53
+; GFX9-NEXT:    ; implicit-def: $sgpr51
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr52
+; GFX9-NEXT:    ; implicit-def: $sgpr50
+; GFX9-NEXT:    ; implicit-def: $sgpr49
+; GFX9-NEXT:    ; implicit-def: $sgpr48
+; GFX9-NEXT:    ; implicit-def: $sgpr38
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr39
+; GFX9-NEXT:    ; implicit-def: $sgpr37
+; GFX9-NEXT:    ; implicit-def: $sgpr36
+; GFX9-NEXT:    ; implicit-def: $sgpr35
+; GFX9-NEXT:    ; implicit-def: $sgpr31
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr34
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_hi
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:  .LBB97_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; GFX9-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB97_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v6, s27, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v5, s26, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s5, 3 op_sel_hi:[1,0]
@@ -66589,58 +67660,8 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v62, 8, v19
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v16, 16, v18
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v15, 8, v18
-; GFX9-NEXT:    s_branch .LBB97_5
-; GFX9-NEXT:  .LBB97_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr55
-; GFX9-NEXT:    ; implicit-def: $sgpr53
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr54
-; GFX9-NEXT:    ; implicit-def: $sgpr52
-; GFX9-NEXT:    ; implicit-def: $sgpr51
-; GFX9-NEXT:    ; implicit-def: $sgpr50
-; GFX9-NEXT:    ; implicit-def: $sgpr48
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr49
-; GFX9-NEXT:    ; implicit-def: $sgpr39
-; GFX9-NEXT:    ; implicit-def: $sgpr38
-; GFX9-NEXT:    ; implicit-def: $sgpr37
-; GFX9-NEXT:    ; implicit-def: $sgpr35
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr36
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr31
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    s_branch .LBB97_2
-; GFX9-NEXT:  .LBB97_4:
+; GFX9-NEXT:    s_branch .LBB97_6
+; GFX9-NEXT:  .LBB97_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s44
 ; GFX9-NEXT:    buffer_store_dword v20, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
@@ -66662,22 +67683,22 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s4
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s5
-; GFX9-NEXT:    v_mov_b32_e32 v15, s55
-; GFX9-NEXT:    v_mov_b32_e32 v16, s53
-; GFX9-NEXT:    v_mov_b32_e32 v62, s54
-; GFX9-NEXT:    v_mov_b32_e32 v59, s52
-; GFX9-NEXT:    v_mov_b32_e32 v60, s51
-; GFX9-NEXT:    v_mov_b32_e32 v58, s50
-; GFX9-NEXT:    v_mov_b32_e32 v61, s48
-; GFX9-NEXT:    v_mov_b32_e32 v57, s49
-; GFX9-NEXT:    v_mov_b32_e32 v47, s39
-; GFX9-NEXT:    v_mov_b32_e32 v56, s38
-; GFX9-NEXT:    v_mov_b32_e32 v46, s37
-; GFX9-NEXT:    v_mov_b32_e32 v45, s35
-; GFX9-NEXT:    v_mov_b32_e32 v44, s36
-; GFX9-NEXT:    v_mov_b32_e32 v42, s34
-; GFX9-NEXT:    v_mov_b32_e32 v43, s31
-; GFX9-NEXT:    v_mov_b32_e32 v41, s30
+; GFX9-NEXT:    v_mov_b32_e32 v15, s53
+; GFX9-NEXT:    v_mov_b32_e32 v16, s51
+; GFX9-NEXT:    v_mov_b32_e32 v62, s52
+; GFX9-NEXT:    v_mov_b32_e32 v59, s50
+; GFX9-NEXT:    v_mov_b32_e32 v60, s49
+; GFX9-NEXT:    v_mov_b32_e32 v58, s48
+; GFX9-NEXT:    v_mov_b32_e32 v61, s38
+; GFX9-NEXT:    v_mov_b32_e32 v57, s39
+; GFX9-NEXT:    v_mov_b32_e32 v47, s37
+; GFX9-NEXT:    v_mov_b32_e32 v56, s36
+; GFX9-NEXT:    v_mov_b32_e32 v46, s35
+; GFX9-NEXT:    v_mov_b32_e32 v45, s31
+; GFX9-NEXT:    v_mov_b32_e32 v44, s34
+; GFX9-NEXT:    v_mov_b32_e32 v42, s30
+; GFX9-NEXT:    v_mov_b32_e32 v43, vcc_hi
+; GFX9-NEXT:    v_mov_b32_e32 v41, vcc_lo
 ; GFX9-NEXT:    v_mov_b32_e32 v40, s94
 ; GFX9-NEXT:    v_mov_b32_e32 v55, s95
 ; GFX9-NEXT:    v_mov_b32_e32 v53, s93
@@ -66711,7 +67732,7 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; GFX9-NEXT:    buffer_store_dword v21, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s40
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s14
-; GFX9-NEXT:  .LBB97_5: ; %end
+; GFX9-NEXT:  .LBB97_6: ; %end
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; GFX9-NEXT:    v_perm_b32 v16, v16, v25, s4
 ; GFX9-NEXT:    v_perm_b32 v15, v18, v15, s4
@@ -66778,10 +67799,8 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; GFX9-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:72 ; 4-byte Folded Reload
 ; GFX9-NEXT:    v_perm_b32 v3, v3, v34, s4
 ; GFX9-NEXT:    v_perm_b32 v1, v1, v29, s4
-; GFX9-NEXT:    v_readlane_b32 s30, v63, 14
-; GFX9-NEXT:    v_readlane_b32 s31, v63, 15
-; GFX9-NEXT:    v_readlane_b32 s55, v63, 13
-; GFX9-NEXT:    v_readlane_b32 s54, v63, 12
+; GFX9-NEXT:    v_readlane_b32 s30, v63, 12
+; GFX9-NEXT:    v_readlane_b32 s31, v63, 13
 ; GFX9-NEXT:    v_readlane_b32 s53, v63, 11
 ; GFX9-NEXT:    v_readlane_b32 s52, v63, 10
 ; GFX9-NEXT:    v_readlane_b32 s51, v63, 9
@@ -66851,12 +67870,11 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_writelane_b32 v40, s38, 4
 ; GFX11-NEXT:    v_writelane_b32 v40, s39, 5
 ; GFX11-NEXT:    v_writelane_b32 v40, s48, 6
-; GFX11-NEXT:    v_writelane_b32 v40, s49, 7
-; GFX11-NEXT:    v_writelane_b32 v40, s30, 8
-; GFX11-NEXT:    v_writelane_b32 v40, s31, 9
+; GFX11-NEXT:    v_writelane_b32 v40, s30, 7
+; GFX11-NEXT:    v_writelane_b32 v40, s31, 8
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB97_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB97_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s43, s27, 24
 ; GFX11-NEXT:    s_lshr_b32 s44, s27, 16
@@ -66887,17 +67905,17 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b32 s93, s17, 16
 ; GFX11-NEXT:    s_lshr_b32 s95, s17, 8
 ; GFX11-NEXT:    s_lshr_b32 s94, s16, 16
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s16, 8
-; GFX11-NEXT:    s_lshr_b32 s30, s3, 24
-; GFX11-NEXT:    s_lshr_b32 s31, s3, 16
-; GFX11-NEXT:    s_lshr_b32 s35, s3, 8
-; GFX11-NEXT:    s_lshr_b32 s34, s2, 16
-; GFX11-NEXT:    s_lshr_b32 s36, s2, 8
-; GFX11-NEXT:    s_lshr_b32 s37, s1, 24
-; GFX11-NEXT:    s_lshr_b32 s38, s1, 16
-; GFX11-NEXT:    s_lshr_b32 s48, s1, 8
-; GFX11-NEXT:    s_lshr_b32 s39, s0, 16
-; GFX11-NEXT:    s_lshr_b32 s49, s0, 8
+; GFX11-NEXT:    s_lshr_b32 vcc_lo, s16, 8
+; GFX11-NEXT:    s_lshr_b32 vcc_hi, s3, 24
+; GFX11-NEXT:    s_lshr_b32 s30, s3, 16
+; GFX11-NEXT:    s_lshr_b32 s34, s3, 8
+; GFX11-NEXT:    s_lshr_b32 s31, s2, 16
+; GFX11-NEXT:    s_lshr_b32 s35, s2, 8
+; GFX11-NEXT:    s_lshr_b32 s36, s1, 24
+; GFX11-NEXT:    s_lshr_b32 s37, s1, 16
+; GFX11-NEXT:    s_lshr_b32 s39, s1, 8
+; GFX11-NEXT:    s_lshr_b32 s38, s0, 16
+; GFX11-NEXT:    s_lshr_b32 s48, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[40:41], s[26:27], 24
 ; GFX11-NEXT:    s_lshr_b64 s[28:29], s[24:25], 24
 ; GFX11-NEXT:    s_lshr_b64 s[14:15], s[22:23], 24
@@ -66906,9 +67924,64 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB97_4
-; GFX11-NEXT:  .LBB97_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB97_3
+; GFX11-NEXT:  .LBB97_2:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr48
+; GFX11-NEXT:    ; implicit-def: $sgpr38
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr39
+; GFX11-NEXT:    ; implicit-def: $sgpr37
+; GFX11-NEXT:    ; implicit-def: $sgpr36
+; GFX11-NEXT:    ; implicit-def: $sgpr35
+; GFX11-NEXT:    ; implicit-def: $sgpr31
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr34
+; GFX11-NEXT:    ; implicit-def: $sgpr30
+; GFX11-NEXT:    ; implicit-def: $vcc_hi
+; GFX11-NEXT:    ; implicit-def: $vcc_lo
+; GFX11-NEXT:    ; implicit-def: $sgpr94
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr95
+; GFX11-NEXT:    ; implicit-def: $sgpr93
+; GFX11-NEXT:    ; implicit-def: $sgpr92
+; GFX11-NEXT:    ; implicit-def: $sgpr91
+; GFX11-NEXT:    ; implicit-def: $sgpr89
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr90
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr79
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:  .LBB97_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB97_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v4, s25, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v3, s24, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v6, s23, 3 op_sel_hi:[1,0]
@@ -66973,58 +68046,8 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v83, 8, v18
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v96, 16, v17
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v85, 8, v17
-; GFX11-NEXT:    s_branch .LBB97_5
-; GFX11-NEXT:  .LBB97_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr49
-; GFX11-NEXT:    ; implicit-def: $sgpr39
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr48
-; GFX11-NEXT:    ; implicit-def: $sgpr38
-; GFX11-NEXT:    ; implicit-def: $sgpr37
-; GFX11-NEXT:    ; implicit-def: $sgpr36
-; GFX11-NEXT:    ; implicit-def: $sgpr34
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr35
-; GFX11-NEXT:    ; implicit-def: $sgpr31
-; GFX11-NEXT:    ; implicit-def: $sgpr30
-; GFX11-NEXT:    ; implicit-def: $vcc_hi
-; GFX11-NEXT:    ; implicit-def: $sgpr94
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr95
-; GFX11-NEXT:    ; implicit-def: $sgpr93
-; GFX11-NEXT:    ; implicit-def: $sgpr92
-; GFX11-NEXT:    ; implicit-def: $sgpr91
-; GFX11-NEXT:    ; implicit-def: $sgpr89
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr90
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr79
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    s_branch .LBB97_2
-; GFX11-NEXT:  .LBB97_4:
+; GFX11-NEXT:    s_branch .LBB97_6
+; GFX11-NEXT:  .LBB97_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v17, s0 :: v_dual_mov_b32 v18, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v13, s2 :: v_dual_mov_b32 v14, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v11, s16 :: v_dual_mov_b32 v12, s17
@@ -67033,12 +68056,12 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v5, s22 :: v_dual_mov_b32 v6, s23
 ; GFX11-NEXT:    v_dual_mov_b32 v3, s24 :: v_dual_mov_b32 v4, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v1, s26 :: v_dual_mov_b32 v2, s27
-; GFX11-NEXT:    v_dual_mov_b32 v85, s49 :: v_dual_mov_b32 v96, s39
-; GFX11-NEXT:    v_dual_mov_b32 v83, s48 :: v_dual_mov_b32 v86, s38
-; GFX11-NEXT:    v_dual_mov_b32 v87, s37 :: v_dual_mov_b32 v82, s36
-; GFX11-NEXT:    v_dual_mov_b32 v84, s34 :: v_dual_mov_b32 v71, s35
-; GFX11-NEXT:    v_dual_mov_b32 v80, s31 :: v_dual_mov_b32 v81, s30
-; GFX11-NEXT:    v_dual_mov_b32 v67, vcc_hi :: v_dual_mov_b32 v70, s94
+; GFX11-NEXT:    v_dual_mov_b32 v85, s48 :: v_dual_mov_b32 v96, s38
+; GFX11-NEXT:    v_dual_mov_b32 v83, s39 :: v_dual_mov_b32 v86, s37
+; GFX11-NEXT:    v_dual_mov_b32 v87, s36 :: v_dual_mov_b32 v82, s35
+; GFX11-NEXT:    v_dual_mov_b32 v84, s31 :: v_dual_mov_b32 v71, s34
+; GFX11-NEXT:    v_dual_mov_b32 v80, s30 :: v_dual_mov_b32 v81, vcc_hi
+; GFX11-NEXT:    v_dual_mov_b32 v67, vcc_lo :: v_dual_mov_b32 v70, s94
 ; GFX11-NEXT:    v_dual_mov_b32 v65, s95 :: v_dual_mov_b32 v68, s93
 ; GFX11-NEXT:    v_dual_mov_b32 v69, s92 :: v_dual_mov_b32 v64, s91
 ; GFX11-NEXT:    v_dual_mov_b32 v66, s89 :: v_dual_mov_b32 v53, s90
@@ -67057,7 +68080,7 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s14 :: v_dual_mov_b32 v21, s12
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s10 :: v_dual_mov_b32 v23, s8
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s6 :: v_dual_mov_b32 v25, s4
-; GFX11-NEXT:  .LBB97_5: ; %end
+; GFX11-NEXT:  .LBB97_6: ; %end
 ; GFX11-NEXT:    v_perm_b32 v86, v86, v87, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_perm_b32 v24, v84, v24, 0xc0c0004
@@ -67123,14 +68146,13 @@ define inreg <64 x i8> @bitcast_v32i16_to_v64i8_scalar(<32 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_or_b32_e32 v2, v4, v17
 ; GFX11-NEXT:    v_or_b32_e32 v3, v19, v15
 ; GFX11-NEXT:    v_or_b32_e32 v4, v16, v18
-; GFX11-NEXT:    v_readlane_b32 s30, v40, 8
+; GFX11-NEXT:    v_readlane_b32 s30, v40, 7
 ; GFX11-NEXT:    s_clause 0x3
 ; GFX11-NEXT:    scratch_store_b128 v0, v[80:83], off
 ; GFX11-NEXT:    scratch_store_b128 v0, v[11:14], off offset:16
 ; GFX11-NEXT:    scratch_store_b128 v0, v[7:10], off offset:32
 ; GFX11-NEXT:    scratch_store_b128 v0, v[1:4], off offset:48
-; GFX11-NEXT:    v_readlane_b32 s31, v40, 9
-; GFX11-NEXT:    v_readlane_b32 s49, v40, 7
+; GFX11-NEXT:    v_readlane_b32 s31, v40, 8
 ; GFX11-NEXT:    v_readlane_b32 s48, v40, 6
 ; GFX11-NEXT:    v_readlane_b32 s39, v40, 5
 ; GFX11-NEXT:    v_readlane_b32 s38, v40, 4
@@ -69711,276 +70733,274 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32
 ; SI-NEXT:    ; implicit-def: $vgpr44 : SGPR spill to VGPR lane
-; SI-NEXT:    v_readfirstlane_b32 s4, v16
-; SI-NEXT:    v_writelane_b32 v44, s23, 0
-; SI-NEXT:    v_writelane_b32 v44, s22, 1
-; SI-NEXT:    v_writelane_b32 v44, s21, 2
-; SI-NEXT:    v_writelane_b32 v44, s20, 3
-; SI-NEXT:    v_writelane_b32 v44, s4, 4
-; SI-NEXT:    s_mov_b32 s82, s29
-; SI-NEXT:    s_mov_b32 s85, s25
-; SI-NEXT:    s_mov_b32 s29, s24
-; SI-NEXT:    s_mov_b32 s44, s16
-; SI-NEXT:    v_readfirstlane_b32 s64, v30
+; SI-NEXT:    s_mov_b32 s96, s27
+; SI-NEXT:    v_writelane_b32 v44, s28, 0
+; SI-NEXT:    v_writelane_b32 v44, s26, 1
+; SI-NEXT:    v_writelane_b32 v44, s23, 2
+; SI-NEXT:    v_writelane_b32 v44, s22, 3
+; SI-NEXT:    v_writelane_b32 v44, s16, 4
+; SI-NEXT:    s_mov_b32 s27, s25
+; SI-NEXT:    s_mov_b32 s85, s24
+; SI-NEXT:    v_readfirstlane_b32 s69, v30
 ; SI-NEXT:    v_readfirstlane_b32 s55, v29
-; SI-NEXT:    v_readfirstlane_b32 s66, v28
-; SI-NEXT:    v_readfirstlane_b32 s69, v27
-; SI-NEXT:    v_readfirstlane_b32 s68, v26
-; SI-NEXT:    v_readfirstlane_b32 s39, v25
-; SI-NEXT:    v_readfirstlane_b32 s50, v24
-; SI-NEXT:    v_readfirstlane_b32 s65, v23
-; SI-NEXT:    v_readfirstlane_b32 s51, v22
-; SI-NEXT:    v_readfirstlane_b32 s37, v21
-; SI-NEXT:    v_readfirstlane_b32 s53, v20
-; SI-NEXT:    v_readfirstlane_b32 s88, v19
-; SI-NEXT:    v_readfirstlane_b32 s31, v18
-; SI-NEXT:    v_readfirstlane_b32 s95, v17
-; SI-NEXT:    v_readfirstlane_b32 s48, v15
-; SI-NEXT:    v_readfirstlane_b32 s35, v14
+; SI-NEXT:    v_readfirstlane_b32 s65, v28
+; SI-NEXT:    v_readfirstlane_b32 s71, v27
+; SI-NEXT:    v_readfirstlane_b32 s67, v26
+; SI-NEXT:    v_readfirstlane_b32 s38, v25
+; SI-NEXT:    v_readfirstlane_b32 s68, v24
+; SI-NEXT:    v_readfirstlane_b32 s49, v23
+; SI-NEXT:    v_readfirstlane_b32 s94, v22
+; SI-NEXT:    v_readfirstlane_b32 s50, v21
+; SI-NEXT:    v_readfirstlane_b32 s88, v20
+; SI-NEXT:    v_readfirstlane_b32 s66, v19
+; SI-NEXT:    v_readfirstlane_b32 s54, v18
+; SI-NEXT:    v_readfirstlane_b32 s86, v17
+; SI-NEXT:    v_readfirstlane_b32 s31, v16
+; SI-NEXT:    v_readfirstlane_b32 s37, v15
+; SI-NEXT:    v_readfirstlane_b32 s39, v14
 ; SI-NEXT:    v_readfirstlane_b32 s34, v13
-; SI-NEXT:    v_readfirstlane_b32 s52, v12
-; SI-NEXT:    v_readfirstlane_b32 s16, v11
-; SI-NEXT:    v_readfirstlane_b32 s96, v10
-; SI-NEXT:    v_readfirstlane_b32 s20, v9
-; SI-NEXT:    v_readfirstlane_b32 s89, v8
-; SI-NEXT:    v_readfirstlane_b32 s92, v7
+; SI-NEXT:    v_readfirstlane_b32 s36, v12
+; SI-NEXT:    v_readfirstlane_b32 s53, v11
+; SI-NEXT:    v_readfirstlane_b32 s64, v10
+; SI-NEXT:    v_readfirstlane_b32 s89, v9
+; SI-NEXT:    v_readfirstlane_b32 s90, v8
+; SI-NEXT:    v_readfirstlane_b32 s16, v7
 ; SI-NEXT:    v_readfirstlane_b32 s91, v6
-; SI-NEXT:    v_readfirstlane_b32 s93, v5
-; SI-NEXT:    v_readfirstlane_b32 s30, v4
-; SI-NEXT:    v_readfirstlane_b32 s38, v3
-; SI-NEXT:    v_readfirstlane_b32 s49, v2
-; SI-NEXT:    v_readfirstlane_b32 s54, v1
-; SI-NEXT:    v_readfirstlane_b32 s90, v0
+; SI-NEXT:    v_readfirstlane_b32 s28, v5
+; SI-NEXT:    v_readfirstlane_b32 s93, v4
+; SI-NEXT:    v_readfirstlane_b32 s35, v3
+; SI-NEXT:    v_readfirstlane_b32 s51, v2
+; SI-NEXT:    v_readfirstlane_b32 s23, v1
+; SI-NEXT:    v_readfirstlane_b32 s79, v0
 ; SI-NEXT:    s_waitcnt vmcnt(14)
 ; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v31
+; SI-NEXT:    v_readfirstlane_b32 s58, v32
 ; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
-; SI-NEXT:    v_readfirstlane_b32 s56, v32
-; SI-NEXT:    v_readfirstlane_b32 s86, v33
-; SI-NEXT:    v_readfirstlane_b32 s58, v34
-; SI-NEXT:    v_readfirstlane_b32 s99, v35
-; SI-NEXT:    v_readfirstlane_b32 s24, v36
+; SI-NEXT:    v_readfirstlane_b32 s84, v33
+; SI-NEXT:    v_readfirstlane_b32 s47, v34
+; SI-NEXT:    v_readfirstlane_b32 s30, v35
+; SI-NEXT:    v_readfirstlane_b32 s25, v36
 ; SI-NEXT:    s_waitcnt vmcnt(13)
-; SI-NEXT:    v_readfirstlane_b32 s78, v37
+; SI-NEXT:    v_readfirstlane_b32 s98, v37
 ; SI-NEXT:    s_waitcnt vmcnt(12)
-; SI-NEXT:    v_readfirstlane_b32 s25, v38
+; SI-NEXT:    v_readfirstlane_b32 s26, v38
 ; SI-NEXT:    s_waitcnt vmcnt(11)
-; SI-NEXT:    v_readfirstlane_b32 s21, v39
+; SI-NEXT:    v_readfirstlane_b32 s22, v39
 ; SI-NEXT:    s_waitcnt vmcnt(10)
-; SI-NEXT:    v_readfirstlane_b32 s22, v48
+; SI-NEXT:    v_readfirstlane_b32 s99, v48
 ; SI-NEXT:    s_waitcnt vmcnt(9)
-; SI-NEXT:    v_readfirstlane_b32 s23, v49
-; SI-NEXT:    s_waitcnt vmcnt(8)
-; SI-NEXT:    v_readfirstlane_b32 s87, v50
-; SI-NEXT:    s_waitcnt vmcnt(6)
-; SI-NEXT:    v_readfirstlane_b32 s47, v52
-; SI-NEXT:    v_readfirstlane_b32 s83, v51
+; SI-NEXT:    v_readfirstlane_b32 s70, v49
+; SI-NEXT:    s_waitcnt vmcnt(7)
+; SI-NEXT:    v_readfirstlane_b32 s56, v51
+; SI-NEXT:    v_writelane_b32 v44, s56, 5
 ; SI-NEXT:    s_waitcnt vmcnt(5)
-; SI-NEXT:    v_readfirstlane_b32 s84, v53
+; SI-NEXT:    v_readfirstlane_b32 s57, v53
+; SI-NEXT:    v_writelane_b32 v44, s57, 6
+; SI-NEXT:    v_readfirstlane_b32 s59, v52
+; SI-NEXT:    v_writelane_b32 v44, s58, 7
+; SI-NEXT:    v_readfirstlane_b32 s78, v50
 ; SI-NEXT:    s_waitcnt vmcnt(4)
-; SI-NEXT:    v_readfirstlane_b32 s36, v54
+; SI-NEXT:    v_readfirstlane_b32 s44, v54
 ; SI-NEXT:    s_waitcnt vmcnt(3)
-; SI-NEXT:    v_readfirstlane_b32 s79, v55
+; SI-NEXT:    v_readfirstlane_b32 s87, v55
 ; SI-NEXT:    s_waitcnt vmcnt(2)
-; SI-NEXT:    v_readfirstlane_b32 s71, v40
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v40
 ; SI-NEXT:    s_waitcnt vmcnt(1)
-; SI-NEXT:    v_readfirstlane_b32 s98, v41
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v41
 ; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_readfirstlane_b32 s81, v42
-; SI-NEXT:    v_writelane_b32 v44, s47, 5
-; SI-NEXT:    v_writelane_b32 v44, s58, 6
+; SI-NEXT:    v_readfirstlane_b32 s83, v42
+; SI-NEXT:    v_writelane_b32 v44, s59, 8
+; SI-NEXT:    v_writelane_b32 v44, s47, 9
 ; SI-NEXT:    s_cbranch_scc0 .LBB99_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_and_b32 s4, s44, 0xff
+; SI-NEXT:    v_readlane_b32 s4, v44, 4
+; SI-NEXT:    s_and_b32 s4, s4, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
 ; SI-NEXT:    s_or_b32 s12, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_lshl_b32 s5, s19, 24
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s5, s29, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s85, 8
+; SI-NEXT:    s_and_b32 s5, s85, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s27, 8
 ; SI-NEXT:    s_or_b32 s13, s5, s6
-; SI-NEXT:    s_and_b32 s5, s26, 0xff
+; SI-NEXT:    v_readlane_b32 s5, v44, 1
+; SI-NEXT:    s_and_b32 s5, s5, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
-; SI-NEXT:    s_lshl_b32 s6, s27, 24
+; SI-NEXT:    s_lshl_b32 s6, s96, 24
 ; SI-NEXT:    s_or_b32 s6, s6, s5
-; SI-NEXT:    s_and_b32 s5, s49, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s38, 8
+; SI-NEXT:    s_and_b32 s5, s51, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s35, 8
 ; SI-NEXT:    s_or_b32 s14, s5, s7
-; SI-NEXT:    s_and_b32 s5, s30, 0xff
+; SI-NEXT:    s_and_b32 s5, s93, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
-; SI-NEXT:    s_lshl_b32 s7, s93, 24
+; SI-NEXT:    s_lshl_b32 s7, s28, 24
 ; SI-NEXT:    s_or_b32 s8, s7, s5
-; SI-NEXT:    s_and_b32 s5, s96, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s16, 8
+; SI-NEXT:    s_and_b32 s5, s64, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s53, 8
 ; SI-NEXT:    s_or_b32 s15, s5, s7
-; SI-NEXT:    s_and_b32 s5, s52, 0xff
+; SI-NEXT:    s_and_b32 s5, s36, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_lshl_b32 s7, s34, 24
 ; SI-NEXT:    s_or_b32 s10, s7, s5
-; SI-NEXT:    s_and_b32 s5, s31, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s88, 8
+; SI-NEXT:    s_and_b32 s5, s54, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s66, 8
 ; SI-NEXT:    s_or_b32 s40, s5, s7
-; SI-NEXT:    s_and_b32 s5, s53, 0xff
+; SI-NEXT:    s_and_b32 s5, s88, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
-; SI-NEXT:    s_lshl_b32 s7, s37, 24
+; SI-NEXT:    s_lshl_b32 s7, s50, 24
 ; SI-NEXT:    s_or_b32 s60, s7, s5
-; SI-NEXT:    s_and_b32 s5, s68, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s69, 8
+; SI-NEXT:    s_and_b32 s5, s67, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s71, 8
 ; SI-NEXT:    s_or_b32 s41, s5, s7
-; SI-NEXT:    s_and_b32 s5, s66, 0xff
+; SI-NEXT:    s_and_b32 s5, s65, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_lshl_b32 s7, s55, 24
 ; SI-NEXT:    s_or_b32 s62, s7, s5
-; SI-NEXT:    s_and_b32 s5, s79, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s36, 8
+; SI-NEXT:    s_and_b32 s5, s87, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s44, 8
 ; SI-NEXT:    s_or_b32 s42, s5, s7
-; SI-NEXT:    s_and_b32 s5, s21, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s25, 8
+; SI-NEXT:    s_and_b32 s5, s22, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s26, 8
 ; SI-NEXT:    s_or_b32 s43, s5, s7
-; SI-NEXT:    v_readlane_b32 s5, v44, 3
-; SI-NEXT:    v_readlane_b32 s7, v44, 2
-; SI-NEXT:    s_and_b32 s5, s5, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 8
+; SI-NEXT:    s_and_b32 s5, s20, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s21, 8
 ; SI-NEXT:    s_or_b32 s5, s5, s7
-; SI-NEXT:    v_readlane_b32 s7, v44, 1
+; SI-NEXT:    v_readlane_b32 s7, v44, 3
 ; SI-NEXT:    s_and_b32 s7, s7, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v44, 0
+; SI-NEXT:    v_readlane_b32 s9, v44, 2
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
 ; SI-NEXT:    s_lshl_b32 s9, s9, 24
-; SI-NEXT:    s_or_b32 s57, s9, s7
-; SI-NEXT:    s_and_b32 s7, s28, 0xff
-; SI-NEXT:    s_lshl_b32 s9, s82, 8
+; SI-NEXT:    s_or_b32 s76, s9, s7
+; SI-NEXT:    v_readlane_b32 s7, v44, 0
+; SI-NEXT:    s_and_b32 s7, s7, 0xff
+; SI-NEXT:    s_lshl_b32 s9, s29, 8
 ; SI-NEXT:    s_or_b32 s7, s7, s9
-; SI-NEXT:    s_and_b32 s9, s90, 0xff
+; SI-NEXT:    s_and_b32 s9, s79, 0xff
 ; SI-NEXT:    s_lshl_b32 s9, s9, 16
-; SI-NEXT:    s_lshl_b32 s11, s54, 24
+; SI-NEXT:    s_lshl_b32 s11, s23, 24
 ; SI-NEXT:    s_or_b32 s77, s11, s9
 ; SI-NEXT:    s_and_b32 s9, s91, 0xff
-; SI-NEXT:    s_lshl_b32 s11, s92, 8
+; SI-NEXT:    s_lshl_b32 s11, s16, 8
 ; SI-NEXT:    s_or_b32 s9, s9, s11
-; SI-NEXT:    s_and_b32 s11, s89, 0xff
-; SI-NEXT:    s_mov_b32 s72, s44
+; SI-NEXT:    s_and_b32 s11, s90, 0xff
+; SI-NEXT:    s_mov_b32 s24, s85
 ; SI-NEXT:    s_lshl_b32 s11, s11, 16
-; SI-NEXT:    s_lshl_b32 s44, s20, 24
-; SI-NEXT:    s_mov_b32 s59, s16
-; SI-NEXT:    s_or_b32 vcc_lo, s44, s11
-; SI-NEXT:    s_and_b32 s11, s35, 0xff
-; SI-NEXT:    s_lshl_b32 s44, s48, 8
-; SI-NEXT:    v_readlane_b32 s16, v44, 4
+; SI-NEXT:    s_mov_b32 s85, s26
+; SI-NEXT:    s_mov_b32 s26, s44
+; SI-NEXT:    s_lshl_b32 s44, s89, 24
+; SI-NEXT:    v_writelane_b32 v44, s55, 10
+; SI-NEXT:    s_mov_b32 s55, s34
+; SI-NEXT:    s_mov_b32 s34, s23
+; SI-NEXT:    s_or_b32 s23, s44, s11
+; SI-NEXT:    s_and_b32 s11, s39, 0xff
+; SI-NEXT:    s_lshl_b32 s44, s37, 8
 ; SI-NEXT:    s_or_b32 s11, s11, s44
-; SI-NEXT:    s_and_b32 s44, s16, 0xff
+; SI-NEXT:    s_and_b32 s44, s31, 0xff
 ; SI-NEXT:    s_lshl_b32 s44, s44, 16
-; SI-NEXT:    s_lshl_b32 s45, s95, 24
-; SI-NEXT:    s_or_b32 vcc_hi, s45, s44
-; SI-NEXT:    s_and_b32 s44, s51, 0xff
-; SI-NEXT:    s_lshl_b32 s45, s65, 8
+; SI-NEXT:    s_lshl_b32 s45, s86, 24
+; SI-NEXT:    v_writelane_b32 v44, s67, 11
+; SI-NEXT:    v_writelane_b32 v44, s50, 12
+; SI-NEXT:    s_mov_b32 s50, s21
+; SI-NEXT:    s_or_b32 s21, s45, s44
+; SI-NEXT:    s_and_b32 s44, s94, 0xff
+; SI-NEXT:    s_lshl_b32 s45, s49, 8
 ; SI-NEXT:    s_or_b32 s44, s44, s45
-; SI-NEXT:    s_and_b32 s45, s50, 0xff
+; SI-NEXT:    s_and_b32 s45, s68, 0xff
 ; SI-NEXT:    s_lshl_b32 s45, s45, 16
-; SI-NEXT:    s_lshl_b32 s46, s39, 24
+; SI-NEXT:    s_lshl_b32 s46, s38, 24
 ; SI-NEXT:    s_and_b32 s44, s44, 0xffff
-; SI-NEXT:    s_mov_b32 s67, s20
+; SI-NEXT:    s_mov_b32 s95, s20
 ; SI-NEXT:    s_or_b32 s20, s46, s45
 ; SI-NEXT:    s_or_b32 s61, s44, s20
-; SI-NEXT:    s_and_b32 s44, s64, 0xff
-; SI-NEXT:    s_lshl_b32 s45, s81, 8
+; SI-NEXT:    s_and_b32 s44, s69, 0xff
+; SI-NEXT:    s_lshl_b32 s45, s83, 8
 ; SI-NEXT:    s_or_b32 s44, s44, s45
-; SI-NEXT:    s_and_b32 s45, s98, 0xff
+; SI-NEXT:    s_and_b32 s45, vcc_hi, 0xff
 ; SI-NEXT:    s_lshl_b32 s45, s45, 16
-; SI-NEXT:    s_lshl_b32 s46, s71, 24
+; SI-NEXT:    s_lshl_b32 s46, vcc_lo, 24
+; SI-NEXT:    s_mov_b32 s52, s35
+; SI-NEXT:    s_mov_b32 s35, s24
 ; SI-NEXT:    s_and_b32 s44, s44, 0xffff
-; SI-NEXT:    s_mov_b32 s70, s39
-; SI-NEXT:    s_mov_b32 s39, s91
-; SI-NEXT:    s_mov_b32 s91, s82
-; SI-NEXT:    s_mov_b32 s82, s88
-; SI-NEXT:    s_mov_b32 s88, s18
+; SI-NEXT:    s_mov_b32 s24, s69
+; SI-NEXT:    s_mov_b32 s69, s53
+; SI-NEXT:    s_mov_b32 s53, s31
+; SI-NEXT:    s_mov_b32 s31, s96
+; SI-NEXT:    s_mov_b32 s96, s18
 ; SI-NEXT:    s_or_b32 s18, s46, s45
 ; SI-NEXT:    s_or_b32 s63, s44, s18
-; SI-NEXT:    s_and_b32 s44, s83, 0xff
-; SI-NEXT:    s_lshl_b32 s45, s87, 8
+; SI-NEXT:    s_and_b32 s44, s56, 0xff
+; SI-NEXT:    s_lshl_b32 s45, s78, 8
 ; SI-NEXT:    s_or_b32 s44, s44, s45
-; SI-NEXT:    s_and_b32 s45, s23, 0xff
+; SI-NEXT:    s_and_b32 s45, s70, 0xff
 ; SI-NEXT:    s_lshl_b32 s45, s45, 16
-; SI-NEXT:    s_lshl_b32 s46, s22, 24
-; SI-NEXT:    s_mov_b32 s80, s31
-; SI-NEXT:    s_mov_b32 s31, s53
-; SI-NEXT:    s_mov_b32 s53, s38
-; SI-NEXT:    s_mov_b32 s38, s90
+; SI-NEXT:    s_lshl_b32 s46, s99, 24
+; SI-NEXT:    s_mov_b32 s56, s22
+; SI-NEXT:    s_mov_b32 s22, s87
+; SI-NEXT:    s_mov_b32 s87, s83
+; SI-NEXT:    s_mov_b32 s83, s54
+; SI-NEXT:    s_mov_b32 s54, s39
+; SI-NEXT:    s_mov_b32 s39, s90
 ; SI-NEXT:    s_mov_b32 s90, s19
 ; SI-NEXT:    s_or_b32 s19, s46, s45
-; SI-NEXT:    s_and_b32 s45, s84, 0xff
+; SI-NEXT:    s_and_b32 s45, s57, 0xff
 ; SI-NEXT:    s_lshl_b32 s45, s45, 16
-; SI-NEXT:    s_lshl_b32 s46, s47, 24
+; SI-NEXT:    s_lshl_b32 s46, s59, 24
 ; SI-NEXT:    s_and_b32 s44, s44, 0xffff
-; SI-NEXT:    s_mov_b32 s97, s22
-; SI-NEXT:    s_mov_b32 s22, s55
-; SI-NEXT:    s_mov_b32 s55, s49
-; SI-NEXT:    s_mov_b32 s49, s92
-; SI-NEXT:    s_mov_b32 s92, s72
 ; SI-NEXT:    s_or_b32 s72, s46, s45
 ; SI-NEXT:    s_or_b32 s73, s44, s19
-; SI-NEXT:    s_and_b32 s44, s99, 0xff
-; SI-NEXT:    s_lshl_b32 s45, s58, 8
+; SI-NEXT:    s_and_b32 s44, s30, 0xff
+; SI-NEXT:    s_lshl_b32 s45, s47, 8
 ; SI-NEXT:    s_or_b32 s44, s44, s45
-; SI-NEXT:    s_and_b32 s45, s86, 0xff
-; SI-NEXT:    s_and_b32 s5, s5, 0xffff
+; SI-NEXT:    s_and_b32 s45, s84, 0xff
 ; SI-NEXT:    s_lshl_b32 s45, s45, 16
-; SI-NEXT:    s_lshl_b32 s46, s56, 24
-; SI-NEXT:    s_or_b32 s5, s5, s57
-; SI-NEXT:    s_mov_b32 s76, s56
-; SI-NEXT:    s_mov_b32 s56, s86
-; SI-NEXT:    s_mov_b32 s86, s81
-; SI-NEXT:    s_mov_b32 s81, s65
-; SI-NEXT:    s_mov_b32 s65, s48
-; SI-NEXT:    s_mov_b32 s48, s89
+; SI-NEXT:    s_lshl_b32 s46, s58, 24
+; SI-NEXT:    s_mov_b32 s97, s70
+; SI-NEXT:    s_mov_b32 s70, s66
+; SI-NEXT:    s_mov_b32 s66, s36
+; SI-NEXT:    s_mov_b32 s36, s89
 ; SI-NEXT:    s_mov_b32 s89, s17
 ; SI-NEXT:    s_or_b32 s17, s46, s45
-; SI-NEXT:    s_and_b32 s44, s44, 0xffff
-; SI-NEXT:    s_and_b32 s12, s12, 0xffff
-; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    v_writelane_b32 v44, s68, 11
-; SI-NEXT:    s_mov_b32 s94, s51
-; SI-NEXT:    s_mov_b32 s51, s95
-; SI-NEXT:    s_mov_b32 s95, s27
-; SI-NEXT:    s_or_b32 s75, s44, s17
-; SI-NEXT:    s_mov_b32 s44, s93
-; SI-NEXT:    s_mov_b32 s93, s28
-; SI-NEXT:    s_and_b32 s28, s42, 0xffff
-; SI-NEXT:    s_and_b32 s27, s43, 0xffff
-; SI-NEXT:    s_or_b32 s42, s12, s4
-; SI-NEXT:    s_mov_b32 s43, s5
-; SI-NEXT:    s_lshr_b64 s[4:5], s[4:5], 16
-; SI-NEXT:    s_or_b32 s9, s9, vcc_lo
-; SI-NEXT:    s_and_b32 s45, s78, 0xff
-; SI-NEXT:    v_writelane_b32 v44, s4, 7
+; SI-NEXT:    s_and_b32 s45, s98, 0xff
+; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
+; SI-NEXT:    s_and_b32 s9, s9, 0xffff
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
 ; SI-NEXT:    s_lshl_b32 s45, s45, 16
-; SI-NEXT:    s_lshl_b32 s46, s24, 24
-; SI-NEXT:    v_writelane_b32 v44, s5, 8
-; SI-NEXT:    s_lshr_b64 s[4:5], s[8:9], 16
+; SI-NEXT:    s_lshl_b32 s46, s25, 24
+; SI-NEXT:    s_and_b32 s44, s44, 0xffff
+; SI-NEXT:    s_or_b32 s5, s5, s76
 ; SI-NEXT:    s_or_b32 s7, s7, s77
-; SI-NEXT:    s_or_b32 s11, s11, vcc_hi
-; SI-NEXT:    s_mov_b32 s68, s34
+; SI-NEXT:    s_or_b32 s9, s9, s23
+; SI-NEXT:    s_mov_b32 s67, s27
+; SI-NEXT:    s_or_b32 s11, s11, s21
+; SI-NEXT:    s_mov_b32 s82, s65
+; SI-NEXT:    s_mov_b32 s65, s38
+; SI-NEXT:    s_mov_b32 s38, s91
+; SI-NEXT:    s_mov_b32 s91, s29
 ; SI-NEXT:    s_or_b32 s74, s46, s45
+; SI-NEXT:    s_or_b32 s75, s44, s17
+; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_and_b32 s58, s15, 0xffff
+; SI-NEXT:    s_mov_b32 s48, s16
 ; SI-NEXT:    s_and_b32 s16, s40, 0xffff
-; SI-NEXT:    s_mov_b32 s34, s29
 ; SI-NEXT:    s_and_b32 s29, s41, 0xffff
-; SI-NEXT:    v_writelane_b32 v44, s4, 9
-; SI-NEXT:    s_mov_b32 s45, s78
-; SI-NEXT:    s_mov_b32 s78, s84
-; SI-NEXT:    s_mov_b32 s84, s69
-; SI-NEXT:    s_mov_b32 s69, s59
+; SI-NEXT:    s_mov_b32 s45, s98
+; SI-NEXT:    s_mov_b32 s98, s28
+; SI-NEXT:    s_and_b32 s28, s42, 0xffff
+; SI-NEXT:    s_and_b32 s27, s43, 0xffff
+; SI-NEXT:    s_mov_b32 s44, s93
+; SI-NEXT:    s_or_b32 s42, s12, s4
+; SI-NEXT:    s_mov_b32 s43, s5
+; SI-NEXT:    s_lshr_b64 s[80:81], s[4:5], 16
 ; SI-NEXT:    s_or_b32 s40, s13, s6
 ; SI-NEXT:    s_mov_b32 s41, s7
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[6:7], 16
 ; SI-NEXT:    s_or_b32 s14, s14, s8
 ; SI-NEXT:    s_mov_b32 s15, s9
-; SI-NEXT:    v_writelane_b32 v44, s5, 10
+; SI-NEXT:    s_lshr_b64 s[92:93], s[8:9], 16
 ; SI-NEXT:    s_or_b32 s12, s58, s10
 ; SI-NEXT:    s_mov_b32 s13, s11
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[10:11], 16
@@ -69996,63 +71016,63 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    s_or_b32 s4, s27, s74
 ; SI-NEXT:    s_mov_b32 s5, s75
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[74:75], 16
-; SI-NEXT:    s_mov_b32 s29, s34
-; SI-NEXT:    s_mov_b32 s16, s69
-; SI-NEXT:    s_mov_b32 s69, s84
-; SI-NEXT:    s_mov_b32 s84, s78
-; SI-NEXT:    s_mov_b32 s78, s45
-; SI-NEXT:    s_mov_b32 s28, s93
+; SI-NEXT:    s_mov_b32 s16, s48
 ; SI-NEXT:    s_mov_b32 s93, s44
-; SI-NEXT:    s_lshr_b32 s47, s57, 16
+; SI-NEXT:    s_mov_b32 s44, s26
+; SI-NEXT:    s_mov_b32 s26, s85
+; SI-NEXT:    s_mov_b32 s28, s98
+; SI-NEXT:    s_mov_b32 s98, s45
+; SI-NEXT:    s_lshr_b32 s47, s76, 16
 ; SI-NEXT:    s_lshr_b32 s57, s77, 16
-; SI-NEXT:    s_lshr_b32 s59, vcc_lo, 16
-; SI-NEXT:    s_lshr_b32 s61, vcc_hi, 16
+; SI-NEXT:    s_lshr_b32 s59, s23, 16
+; SI-NEXT:    s_mov_b32 s23, s34
+; SI-NEXT:    s_mov_b32 s34, s55
+; SI-NEXT:    v_readlane_b32 s55, v44, 10
+; SI-NEXT:    s_lshr_b32 s61, s21, 16
+; SI-NEXT:    s_mov_b32 s21, s50
+; SI-NEXT:    s_mov_b32 s27, s67
+; SI-NEXT:    v_readlane_b32 s50, v44, 12
+; SI-NEXT:    v_readlane_b32 s67, v44, 11
 ; SI-NEXT:    s_lshr_b32 s63, s20, 16
-; SI-NEXT:    s_mov_b32 s20, s67
-; SI-NEXT:    s_mov_b32 s34, s68
-; SI-NEXT:    v_readlane_b32 s68, v44, 11
+; SI-NEXT:    s_mov_b32 s20, s95
+; SI-NEXT:    s_mov_b32 s85, s35
+; SI-NEXT:    s_mov_b32 s35, s52
 ; SI-NEXT:    s_lshr_b32 s73, s18, 16
-; SI-NEXT:    s_mov_b32 s18, s88
-; SI-NEXT:    s_mov_b32 s27, s95
-; SI-NEXT:    s_mov_b32 s95, s51
-; SI-NEXT:    s_mov_b32 s51, s94
-; SI-NEXT:    s_mov_b32 s88, s82
-; SI-NEXT:    s_mov_b32 s82, s91
-; SI-NEXT:    s_mov_b32 s91, s39
-; SI-NEXT:    s_mov_b32 s39, s70
+; SI-NEXT:    s_mov_b32 s18, s96
+; SI-NEXT:    s_mov_b32 s96, s31
+; SI-NEXT:    s_mov_b32 s31, s53
+; SI-NEXT:    s_mov_b32 s53, s69
+; SI-NEXT:    s_mov_b32 s69, s24
+; SI-NEXT:    s_mov_b32 s29, s91
+; SI-NEXT:    s_mov_b32 s91, s38
+; SI-NEXT:    s_mov_b32 s38, s65
+; SI-NEXT:    s_mov_b32 s65, s82
 ; SI-NEXT:    s_lshr_b32 s75, s19, 16
 ; SI-NEXT:    s_mov_b32 s19, s90
-; SI-NEXT:    s_mov_b32 s90, s38
-; SI-NEXT:    s_mov_b32 s38, s53
-; SI-NEXT:    s_mov_b32 s53, s31
-; SI-NEXT:    s_mov_b32 s44, s92
-; SI-NEXT:    s_mov_b32 s92, s49
-; SI-NEXT:    s_mov_b32 s49, s55
-; SI-NEXT:    s_mov_b32 s55, s22
-; SI-NEXT:    s_mov_b32 s31, s80
-; SI-NEXT:    s_mov_b32 s22, s97
+; SI-NEXT:    s_mov_b32 s90, s39
+; SI-NEXT:    s_mov_b32 s39, s54
+; SI-NEXT:    s_mov_b32 s54, s83
+; SI-NEXT:    s_mov_b32 s83, s87
+; SI-NEXT:    s_mov_b32 s87, s22
+; SI-NEXT:    s_mov_b32 s22, s56
 ; SI-NEXT:    s_lshr_b32 s45, s17, 16
 ; SI-NEXT:    s_mov_b32 s17, s89
-; SI-NEXT:    s_mov_b32 s89, s48
-; SI-NEXT:    s_mov_b32 s48, s65
-; SI-NEXT:    s_mov_b32 s65, s81
-; SI-NEXT:    s_mov_b32 s81, s86
-; SI-NEXT:    s_mov_b32 s86, s56
-; SI-NEXT:    s_mov_b32 s56, s76
+; SI-NEXT:    s_mov_b32 s89, s36
+; SI-NEXT:    s_mov_b32 s36, s66
+; SI-NEXT:    s_mov_b32 s66, s70
+; SI-NEXT:    s_mov_b32 s70, s97
 ; SI-NEXT:    s_mov_b64 s[76:77], 0
 ; SI-NEXT:    s_branch .LBB99_3
 ; SI-NEXT:  .LBB99_2:
-; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    s_mov_b64 s[76:77], -1
-; SI-NEXT:    v_writelane_b32 v44, s4, 7
-; SI-NEXT:    v_writelane_b32 v44, s5, 8
-; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr80
 ; SI-NEXT:    ; implicit-def: $sgpr47
 ; SI-NEXT:    ; implicit-def: $sgpr40
 ; SI-NEXT:    ; implicit-def: $sgpr46
 ; SI-NEXT:    ; implicit-def: $sgpr57
 ; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr92
 ; SI-NEXT:    ; implicit-def: $sgpr59
 ; SI-NEXT:    ; implicit-def: $sgpr12
 ; SI-NEXT:    ; implicit-def: $sgpr58
@@ -70066,215 +71086,216 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    ; implicit-def: $sgpr6
 ; SI-NEXT:    ; implicit-def: $sgpr72
 ; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    ; implicit-def: $sgpr74
 ; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    v_writelane_b32 v44, s4, 9
-; SI-NEXT:    v_writelane_b32 v44, s5, 10
-; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:  .LBB99_3: ; %Flow
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[76:77]
-; SI-NEXT:    v_readlane_b32 s76, v44, 7
-; SI-NEXT:    v_readlane_b32 s77, v44, 8
-; SI-NEXT:    s_cbranch_vccnz .LBB99_5
+; SI-NEXT:    s_and_b64 s[76:77], s[76:77], exec
+; SI-NEXT:    s_cselect_b32 s76, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s76, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB99_5
 ; SI-NEXT:  ; %bb.4: ; %cmp.true
-; SI-NEXT:    s_add_i32 s21, s21, 3
-; SI-NEXT:    s_and_b32 s4, s21, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s25, 8
-; SI-NEXT:    s_add_i32 s78, s78, 3
+; SI-NEXT:    s_add_i32 s22, s22, 3
+; SI-NEXT:    s_and_b32 s4, s22, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s26, 8
+; SI-NEXT:    s_add_i32 s98, s98, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s6, s78, 0xff
+; SI-NEXT:    s_and_b32 s6, s98, 0xff
 ; SI-NEXT:    s_addk_i32 s4, 0x300
-; SI-NEXT:    s_lshl_b32 s5, s24, 24
+; SI-NEXT:    s_lshl_b32 s5, s25, 24
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_add_i32 s99, s99, 3
-; SI-NEXT:    v_readlane_b32 s6, v44, 6
+; SI-NEXT:    s_add_i32 s97, s30, 3
+; SI-NEXT:    v_readlane_b32 s6, v44, 9
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s5, s99, 0xff
+; SI-NEXT:    s_and_b32 s5, s97, 0xff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 8
-; SI-NEXT:    s_add_i32 s86, s86, 3
+; SI-NEXT:    s_add_i32 s84, s84, 3
 ; SI-NEXT:    s_or_b32 s5, s6, s5
-; SI-NEXT:    s_and_b32 s7, s86, 0xff
+; SI-NEXT:    v_readlane_b32 s6, v44, 7
+; SI-NEXT:    s_and_b32 s7, s84, 0xff
 ; SI-NEXT:    s_addk_i32 s5, 0x300
-; SI-NEXT:    s_lshl_b32 s6, s56, 24
+; SI-NEXT:    s_lshl_b32 s6, s6, 24
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_or_b32 s6, s6, s7
-; SI-NEXT:    s_add_i32 s97, s79, 3
+; SI-NEXT:    s_add_i32 s87, s87, 3
+; SI-NEXT:    v_readlane_b32 s8, v44, 6
 ; SI-NEXT:    s_or_b32 s5, s6, s5
-; SI-NEXT:    s_and_b32 s6, s97, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s36, 8
-; SI-NEXT:    s_add_i32 s84, s84, 3
+; SI-NEXT:    s_and_b32 s6, s87, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s44, 8
+; SI-NEXT:    s_add_i32 s82, s8, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    v_readlane_b32 s7, v44, 5
-; SI-NEXT:    s_and_b32 s8, s84, 0xff
+; SI-NEXT:    v_readlane_b32 s7, v44, 8
+; SI-NEXT:    s_and_b32 s8, s82, 0xff
 ; SI-NEXT:    s_addk_i32 s6, 0x300
 ; SI-NEXT:    s_lshl_b32 s7, s7, 24
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_or_b32 s7, s7, s8
-; SI-NEXT:    s_add_i32 s83, s83, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_and_b32 s7, s83, 0xff
-; SI-NEXT:    s_lshl_b32 s8, s87, 8
-; SI-NEXT:    s_add_i32 s80, s23, 3
+; SI-NEXT:    v_readlane_b32 s7, v44, 5
+; SI-NEXT:    s_add_i32 s81, s7, 3
+; SI-NEXT:    s_and_b32 s7, s81, 0xff
+; SI-NEXT:    s_lshl_b32 s8, s78, 8
+; SI-NEXT:    s_add_i32 s70, s70, 3
 ; SI-NEXT:    s_or_b32 s7, s8, s7
-; SI-NEXT:    s_and_b32 s9, s80, 0xff
+; SI-NEXT:    s_and_b32 s9, s70, 0xff
 ; SI-NEXT:    s_addk_i32 s7, 0x300
-; SI-NEXT:    s_lshl_b32 s8, s22, 24
+; SI-NEXT:    s_lshl_b32 s8, s99, 24
 ; SI-NEXT:    s_lshl_b32 s9, s9, 16
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
 ; SI-NEXT:    s_or_b32 s8, s8, s9
-; SI-NEXT:    s_add_i32 s68, s68, 3
+; SI-NEXT:    s_add_i32 s67, s67, 3
 ; SI-NEXT:    s_or_b32 s7, s8, s7
-; SI-NEXT:    s_and_b32 s8, s68, 0xff
-; SI-NEXT:    s_lshl_b32 s9, s69, 8
-; SI-NEXT:    s_add_i32 s66, s66, 3
+; SI-NEXT:    s_and_b32 s8, s67, 0xff
+; SI-NEXT:    s_lshl_b32 s9, s71, 8
+; SI-NEXT:    s_add_i32 s65, s65, 3
 ; SI-NEXT:    s_or_b32 s8, s9, s8
-; SI-NEXT:    s_and_b32 s10, s66, 0xff
+; SI-NEXT:    s_and_b32 s10, s65, 0xff
 ; SI-NEXT:    s_addk_i32 s8, 0x300
 ; SI-NEXT:    s_lshl_b32 s9, s55, 24
 ; SI-NEXT:    s_lshl_b32 s10, s10, 16
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
 ; SI-NEXT:    s_or_b32 s9, s9, s10
-; SI-NEXT:    s_add_i32 s64, s64, 3
+; SI-NEXT:    s_add_i32 s55, s69, 3
 ; SI-NEXT:    s_or_b32 s8, s9, s8
-; SI-NEXT:    s_and_b32 s9, s64, 0xff
-; SI-NEXT:    s_lshl_b32 s10, s81, 8
-; SI-NEXT:    s_add_i32 s69, s98, 3
+; SI-NEXT:    s_and_b32 s9, s55, 0xff
+; SI-NEXT:    s_lshl_b32 s10, s83, 8
+; SI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; SI-NEXT:    s_or_b32 s9, s10, s9
-; SI-NEXT:    s_and_b32 s11, s69, 0xff
+; SI-NEXT:    s_and_b32 s11, vcc_hi, 0xff
 ; SI-NEXT:    s_addk_i32 s9, 0x300
-; SI-NEXT:    s_lshl_b32 s10, s71, 24
+; SI-NEXT:    s_lshl_b32 s10, vcc_lo, 24
 ; SI-NEXT:    s_lshl_b32 s11, s11, 16
 ; SI-NEXT:    s_and_b32 s9, s9, 0xffff
 ; SI-NEXT:    s_or_b32 s10, s10, s11
-; SI-NEXT:    s_add_i32 s55, s31, 3
+; SI-NEXT:    s_add_i32 s54, s54, 3
 ; SI-NEXT:    s_or_b32 s9, s10, s9
-; SI-NEXT:    s_and_b32 s10, s55, 0xff
-; SI-NEXT:    s_lshl_b32 s11, s88, 8
-; SI-NEXT:    s_add_i32 s53, s53, 3
+; SI-NEXT:    s_and_b32 s10, s54, 0xff
+; SI-NEXT:    s_lshl_b32 s11, s66, 8
+; SI-NEXT:    s_add_i32 s52, s88, 3
 ; SI-NEXT:    s_or_b32 s10, s11, s10
-; SI-NEXT:    s_and_b32 s12, s53, 0xff
+; SI-NEXT:    s_and_b32 s12, s52, 0xff
 ; SI-NEXT:    s_addk_i32 s10, 0x300
-; SI-NEXT:    s_lshl_b32 s11, s37, 24
+; SI-NEXT:    s_lshl_b32 s11, s50, 24
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_or_b32 s11, s11, s12
-; SI-NEXT:    s_add_i32 s51, s51, 3
+; SI-NEXT:    s_add_i32 s50, s94, 3
 ; SI-NEXT:    s_or_b32 s10, s11, s10
-; SI-NEXT:    s_and_b32 s11, s51, 0xff
-; SI-NEXT:    s_lshl_b32 s12, s65, 8
+; SI-NEXT:    s_and_b32 s11, s50, 0xff
+; SI-NEXT:    s_lshl_b32 s12, s49, 8
 ; SI-NEXT:    s_or_b32 s11, s12, s11
-; SI-NEXT:    s_lshl_b32 s12, s39, 24
-; SI-NEXT:    s_add_i32 s39, s50, 3
-; SI-NEXT:    s_and_b32 s13, s39, 0xff
+; SI-NEXT:    s_lshl_b32 s12, s38, 24
+; SI-NEXT:    s_add_i32 s38, s68, 3
+; SI-NEXT:    s_and_b32 s13, s38, 0xff
 ; SI-NEXT:    s_addk_i32 s11, 0x300
 ; SI-NEXT:    s_lshl_b32 s13, s13, 16
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
 ; SI-NEXT:    s_or_b32 s12, s12, s13
-; SI-NEXT:    s_add_i32 s50, s96, 3
+; SI-NEXT:    s_add_i32 s49, s64, 3
 ; SI-NEXT:    s_or_b32 s11, s12, s11
-; SI-NEXT:    s_and_b32 s12, s50, 0xff
-; SI-NEXT:    s_lshl_b32 s13, s16, 8
-; SI-NEXT:    s_add_i32 s37, s52, 3
+; SI-NEXT:    s_and_b32 s12, s49, 0xff
+; SI-NEXT:    s_lshl_b32 s13, s53, 8
+; SI-NEXT:    s_add_i32 s36, s36, 3
 ; SI-NEXT:    s_or_b32 s12, s13, s12
-; SI-NEXT:    s_and_b32 s14, s37, 0xff
+; SI-NEXT:    s_and_b32 s14, s36, 0xff
 ; SI-NEXT:    s_addk_i32 s12, 0x300
 ; SI-NEXT:    s_lshl_b32 s13, s34, 24
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_or_b32 s13, s13, s14
-; SI-NEXT:    s_add_i32 s35, s35, 3
+; SI-NEXT:    s_add_i32 s34, s39, 3
 ; SI-NEXT:    s_or_b32 s12, s13, s12
-; SI-NEXT:    s_and_b32 s13, s35, 0xff
-; SI-NEXT:    s_lshl_b32 s14, s48, 8
-; SI-NEXT:    v_readlane_b32 s15, v44, 4
+; SI-NEXT:    s_and_b32 s13, s34, 0xff
+; SI-NEXT:    s_lshl_b32 s14, s37, 8
+; SI-NEXT:    s_add_i32 s95, s31, 3
 ; SI-NEXT:    s_or_b32 s13, s14, s13
-; SI-NEXT:    s_lshl_b32 s14, s95, 24
-; SI-NEXT:    s_add_i32 s95, s15, 3
 ; SI-NEXT:    s_and_b32 s15, s95, 0xff
 ; SI-NEXT:    s_addk_i32 s13, 0x300
+; SI-NEXT:    s_lshl_b32 s14, s86, 24
 ; SI-NEXT:    s_lshl_b32 s15, s15, 16
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
 ; SI-NEXT:    s_or_b32 s14, s14, s15
-; SI-NEXT:    s_add_i32 s34, s49, 3
+; SI-NEXT:    s_add_i32 vcc_lo, s51, 3
 ; SI-NEXT:    s_or_b32 s13, s14, s13
-; SI-NEXT:    s_and_b32 s14, s34, 0xff
-; SI-NEXT:    s_lshl_b32 s15, s38, 8
+; SI-NEXT:    s_and_b32 s14, vcc_lo, 0xff
+; SI-NEXT:    s_lshl_b32 s15, s35, 8
+; SI-NEXT:    s_add_i32 s93, s93, 3
 ; SI-NEXT:    s_or_b32 s14, s15, s14
-; SI-NEXT:    s_lshl_b32 s15, s93, 24
-; SI-NEXT:    s_add_i32 s93, s30, 3
-; SI-NEXT:    s_and_b32 s21, s93, 0xff
+; SI-NEXT:    s_and_b32 s22, s93, 0xff
 ; SI-NEXT:    s_addk_i32 s14, 0x300
-; SI-NEXT:    s_lshl_b32 s21, s21, 16
+; SI-NEXT:    s_lshl_b32 s15, s28, 24
+; SI-NEXT:    s_lshl_b32 s22, s22, 16
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
-; SI-NEXT:    s_or_b32 s15, s15, s21
+; SI-NEXT:    s_or_b32 s15, s15, s22
 ; SI-NEXT:    s_add_i32 s91, s91, 3
 ; SI-NEXT:    s_or_b32 s14, s15, s14
 ; SI-NEXT:    s_and_b32 s15, s91, 0xff
-; SI-NEXT:    s_lshl_b32 s21, s92, 8
-; SI-NEXT:    s_add_i32 s89, s89, 3
-; SI-NEXT:    s_or_b32 s15, s21, s15
-; SI-NEXT:    s_and_b32 s22, s89, 0xff
+; SI-NEXT:    s_lshl_b32 s22, s16, 8
+; SI-NEXT:    s_or_b32 s15, s22, s15
+; SI-NEXT:    s_lshl_b32 s22, s89, 24
+; SI-NEXT:    s_add_i32 s89, s90, 3
+; SI-NEXT:    s_and_b32 s40, s89, 0xff
 ; SI-NEXT:    s_addk_i32 s15, 0x300
-; SI-NEXT:    s_lshl_b32 s21, s20, 24
-; SI-NEXT:    s_lshl_b32 s22, s22, 16
-; SI-NEXT:    s_add_i32 s16, s44, 3
+; SI-NEXT:    s_lshl_b32 s40, s40, 16
+; SI-NEXT:    v_readlane_b32 s16, v44, 0
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_or_b32 s21, s21, s22
-; SI-NEXT:    s_add_i32 s24, s29, 3
+; SI-NEXT:    s_or_b32 s22, s22, s40
+; SI-NEXT:    s_add_i32 s24, s85, 3
+; SI-NEXT:    v_readlane_b32 s25, v44, 1
+; SI-NEXT:    s_add_i32 s28, s16, 3
+; SI-NEXT:    v_readlane_b32 s16, v44, 4
+; SI-NEXT:    s_or_b32 s15, s22, s15
+; SI-NEXT:    s_and_b32 s22, s24, 0xff
+; SI-NEXT:    s_lshl_b32 s24, s27, 8
+; SI-NEXT:    s_add_i32 s26, s25, 3
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    s_or_b32 s22, s24, s22
+; SI-NEXT:    s_and_b32 s25, s26, 0xff
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
-; SI-NEXT:    s_or_b32 s15, s21, s15
-; SI-NEXT:    s_and_b32 s21, s24, 0xff
-; SI-NEXT:    s_lshl_b32 s22, s85, 8
-; SI-NEXT:    s_add_i32 s26, s26, 3
+; SI-NEXT:    s_addk_i32 s22, 0x300
+; SI-NEXT:    s_lshl_b32 s24, s96, 24
+; SI-NEXT:    s_lshl_b32 s25, s25, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
-; SI-NEXT:    s_or_b32 s21, s22, s21
-; SI-NEXT:    s_and_b32 s20, s26, 0xff
+; SI-NEXT:    s_and_b32 s22, s22, 0xffff
+; SI-NEXT:    s_or_b32 s24, s24, s25
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s19, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
-; SI-NEXT:    s_addk_i32 s21, 0x300
-; SI-NEXT:    s_lshl_b32 s22, s27, 24
-; SI-NEXT:    s_lshl_b32 s20, s20, 16
+; SI-NEXT:    s_or_b32 s22, s24, s22
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
-; SI-NEXT:    s_and_b32 s21, s21, 0xffff
-; SI-NEXT:    s_or_b32 s22, s22, s20
+; SI-NEXT:    s_add_i32 s40, s22, 0x3000000
+; SI-NEXT:    s_and_b32 s22, s28, 0xff
+; SI-NEXT:    s_lshl_b32 s24, s29, 8
+; SI-NEXT:    s_add_i32 s79, s79, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    s_or_b32 s21, s22, s21
-; SI-NEXT:    s_add_i32 s28, s28, 3
+; SI-NEXT:    s_add_i32 s20, s20, 3
+; SI-NEXT:    v_readlane_b32 s18, v44, 3
+; SI-NEXT:    s_or_b32 s22, s24, s22
+; SI-NEXT:    s_and_b32 s24, s79, 0xff
 ; SI-NEXT:    s_add_i32 s42, s16, 0x3000000
-; SI-NEXT:    v_readlane_b32 s16, v44, 3
-; SI-NEXT:    s_add_i32 s40, s21, 0x3000000
-; SI-NEXT:    s_and_b32 s21, s28, 0xff
-; SI-NEXT:    s_lshl_b32 s22, s82, 8
-; SI-NEXT:    s_add_i32 s79, s90, 3
-; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s17, v44, 2
-; SI-NEXT:    v_readlane_b32 s18, v44, 1
-; SI-NEXT:    s_or_b32 s21, s22, s21
-; SI-NEXT:    s_and_b32 s22, s79, 0xff
-; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_and_b32 s16, s20, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s21, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
-; SI-NEXT:    s_addk_i32 s21, 0x300
-; SI-NEXT:    s_lshl_b32 s20, s54, 24
-; SI-NEXT:    s_lshl_b32 s22, s22, 16
+; SI-NEXT:    s_addk_i32 s22, 0x300
+; SI-NEXT:    s_lshl_b32 s23, s23, 24
+; SI-NEXT:    s_lshl_b32 s24, s24, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v44, 0
+; SI-NEXT:    v_readlane_b32 s17, v44, 2
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
-; SI-NEXT:    s_and_b32 s21, s21, 0xffff
-; SI-NEXT:    s_or_b32 s20, s20, s22
+; SI-NEXT:    s_and_b32 s22, s22, 0xffff
+; SI-NEXT:    s_or_b32 s23, s23, s24
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
-; SI-NEXT:    s_or_b32 s20, s20, s21
+; SI-NEXT:    s_or_b32 s22, s23, s22
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_add_i32 s4, s4, 0x3000000
@@ -70287,20 +71308,19 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s11, s11, 0x3000000
 ; SI-NEXT:    s_add_i32 s12, s12, 0x3000000
 ; SI-NEXT:    s_add_i32 s13, s13, 0x3000000
+; SI-NEXT:    s_add_i32 s41, s22, 0x3000000
+; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s14, s14, 0x3000000
 ; SI-NEXT:    s_add_i32 s15, s15, 0x3000000
-; SI-NEXT:    s_add_i32 s41, s20, 0x3000000
-; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s43, s16, 0x3000000
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[40:41], 16
-; SI-NEXT:    s_lshr_b64 s[16:17], s[14:15], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[12:13], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[10:11], 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[8:9], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[4:5], 16
-; SI-NEXT:    s_lshr_b64 s[76:77], s[42:43], 16
-; SI-NEXT:    v_writelane_b32 v44, s16, 9
+; SI-NEXT:    s_lshr_b64 s[80:81], s[42:43], 16
+; SI-NEXT:    s_lshr_b64 s[92:93], s[14:15], 16
 ; SI-NEXT:    s_lshr_b32 s47, s43, 16
 ; SI-NEXT:    s_lshr_b32 s57, s41, 16
 ; SI-NEXT:    s_lshr_b32 s59, s15, 16
@@ -70309,13 +71329,12 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s73, s9, 16
 ; SI-NEXT:    s_lshr_b32 s75, s7, 16
 ; SI-NEXT:    s_lshr_b32 s45, s5, 16
-; SI-NEXT:    v_writelane_b32 v44, s17, 10
 ; SI-NEXT:  .LBB99_5: ; %end
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:84 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:88 ; 4-byte Folded Reload
 ; SI-NEXT:    s_and_b32 s16, s42, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s76, 16
+; SI-NEXT:    s_lshl_b32 s17, s80, 16
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s43, 0xffff
 ; SI-NEXT:    s_lshl_b32 s18, s47, 16
@@ -70326,9 +71345,8 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s19, s41, 0xffff
 ; SI-NEXT:    s_lshl_b32 s20, s57, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s20
-; SI-NEXT:    v_readlane_b32 s20, v44, 9
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
-; SI-NEXT:    s_lshl_b32 s20, s20, 16
+; SI-NEXT:    s_lshl_b32 s20, s92, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s20
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
 ; SI-NEXT:    s_lshl_b32 s20, s59, 16
@@ -70364,7 +71382,6 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s20, s45, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s20
 ; SI-NEXT:    v_readlane_b32 s30, v43, 34
-; SI-NEXT:    v_readlane_b32 s21, v44, 10
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -70480,7 +71497,7 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; VI-NEXT:    s_waitcnt vmcnt(14)
 ; VI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v35
 ; VI-NEXT:    s_and_b64 s[4:5], vcc, exec
-; VI-NEXT:    s_cbranch_scc0 .LBB99_4
+; VI-NEXT:    s_cbranch_scc0 .LBB99_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -70572,8 +71589,17 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; VI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; VI-NEXT:    v_perm_b32 v35, v33, v28, s4
 ; VI-NEXT:    v_or_b32_e32 v15, v35, v15
-; VI-NEXT:    s_cbranch_execnz .LBB99_3
-; VI-NEXT:  .LBB99_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB99_3
+; VI-NEXT:  .LBB99_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; VI-NEXT:  .LBB99_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB99_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 3, v34
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; VI-NEXT:    v_perm_b32 v8, v0, v31, s4
@@ -70733,12 +71759,9 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; VI-NEXT:    v_add_u32_e32 v13, vcc, 0x3000000, v13
 ; VI-NEXT:    v_add_u32_e32 v14, vcc, 0x3000000, v14
 ; VI-NEXT:    v_add_u32_e32 v15, vcc, 0x3000000, v15
-; VI-NEXT:  .LBB99_3: ; %end
+; VI-NEXT:  .LBB99_5: ; %end
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB99_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-NEXT:    s_branch .LBB99_2
 ;
 ; GFX9-LABEL: bitcast_v64i8_to_v32i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -70797,7 +71820,7 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; GFX9-NEXT:    s_waitcnt vmcnt(19)
 ; GFX9-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v12
 ; GFX9-NEXT:    s_and_b64 s[4:5], vcc, exec
-; GFX9-NEXT:    s_cbranch_scc0 .LBB99_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB99_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v8, 0xc0c0004
@@ -70903,8 +71926,17 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s5, s77
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s4
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s5
-; GFX9-NEXT:    s_cbranch_execnz .LBB99_3
-; GFX9-NEXT:  .LBB99_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB99_3
+; GFX9-NEXT:  .LBB99_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX9-NEXT:  .LBB99_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB99_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_waitcnt vmcnt(12)
 ; GFX9-NEXT:    v_add_u32_e32 v0, 3, v34
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
@@ -71061,12 +72093,9 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_lshl_or_b32 v10, v16, 16, v10
 ; GFX9-NEXT:    v_lshl_or_b32 v14, v27, 16, v14
 ; GFX9-NEXT:    v_lshl_or_b32 v15, v25, 16, v15
-; GFX9-NEXT:  .LBB99_3: ; %end
+; GFX9-NEXT:  .LBB99_5: ; %end
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB99_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX9-NEXT:    s_branch .LBB99_2
 ;
 ; GFX11-TRUE16-LABEL: bitcast_v64i8_to_v32i16_scalar:
 ; GFX11-TRUE16:       ; %bb.0:
@@ -71123,7 +72152,7 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v54
 ; GFX11-TRUE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB99_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB99_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v8, 0xc0c0004 :: v_dual_lshlrev_b32 v13, 8, v50
@@ -71202,9 +72231,17 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v14.h, v10.l
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, s77
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v15.h, v18.l
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB99_3
-; GFX11-TRUE16-NEXT:  .LBB99_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB99_3
+; GFX11-TRUE16-NEXT:  .LBB99_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-TRUE16-NEXT:  .LBB99_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB99_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 3, v36
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(3)
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, 3, v53
@@ -71321,12 +72358,9 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v13.h, v18.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v14.h, v17.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v15.h, v16.l
-; GFX11-TRUE16-NEXT:  .LBB99_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB99_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB99_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-TRUE16-NEXT:    s_branch .LBB99_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v64i8_to_v32i16_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -71383,7 +72417,7 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v54
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB99_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB99_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, s58, 0xff
@@ -71476,9 +72510,17 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v15, v16, 16, v17
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, s76
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, s77
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB99_3
-; GFX11-FAKE16-NEXT:  .LBB99_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB99_3
+; GFX11-FAKE16-NEXT:  .LBB99_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-FAKE16-NEXT:  .LBB99_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB99_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v0, 3, v52
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(3)
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v4, 3, v53
@@ -71611,12 +72653,9 @@ define inreg <32 x i16> @bitcast_v64i8_to_v32i16_scalar(<64 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v13, v16, 16, v13
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v14, v14, 16, v21
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v15, v15, 16, v22
-; GFX11-FAKE16-NEXT:  .LBB99_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB99_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB99_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-FAKE16-NEXT:    s_branch .LBB99_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -72139,10 +73178,8 @@ define inreg <32 x bfloat> @bitcast_v32f16_to_v32bf16_scalar(<32 x half> inreg %
 ; SI-NEXT:    v_writelane_b32 v40, s35, 1
 ; SI-NEXT:    v_writelane_b32 v40, s36, 2
 ; SI-NEXT:    v_writelane_b32 v40, s37, 3
-; SI-NEXT:    v_writelane_b32 v40, s38, 4
-; SI-NEXT:    v_writelane_b32 v40, s39, 5
-; SI-NEXT:    v_writelane_b32 v40, s30, 6
-; SI-NEXT:    v_writelane_b32 v40, s31, 7
+; SI-NEXT:    v_writelane_b32 v40, s30, 4
+; SI-NEXT:    v_writelane_b32 v40, s31, 5
 ; SI-NEXT:    v_readfirstlane_b32 s60, v1
 ; SI-NEXT:    v_readfirstlane_b32 s56, v0
 ; SI-NEXT:    s_lshr_b32 s43, s29, 16
@@ -72163,7 +73200,7 @@ define inreg <32 x bfloat> @bitcast_v32f16_to_v32bf16_scalar(<32 x half> inreg %
 ; SI-NEXT:    s_lshr_b32 s59, s56, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB101_3
+; SI-NEXT:    s_cbranch_scc0 .LBB101_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s44, s16, 16
 ; SI-NEXT:    s_lshl_b32 s45, s6, 16
@@ -72189,16 +73226,56 @@ define inreg <32 x bfloat> @bitcast_v32f16_to_v32bf16_scalar(<32 x half> inreg %
 ; SI-NEXT:    s_lshl_b32 s93, s40, 16
 ; SI-NEXT:    s_lshl_b32 s94, s27, 16
 ; SI-NEXT:    s_lshl_b32 s95, s41, 16
-; SI-NEXT:    s_lshl_b32 s30, s28, 16
-; SI-NEXT:    s_lshl_b32 s31, s42, 16
-; SI-NEXT:    s_lshl_b32 s34, s29, 16
-; SI-NEXT:    s_lshl_b32 s35, s43, 16
-; SI-NEXT:    s_lshl_b32 s36, s56, 16
-; SI-NEXT:    s_lshl_b32 s37, s59, 16
-; SI-NEXT:    s_lshl_b32 s38, s60, 16
-; SI-NEXT:    s_lshl_b32 s39, s63, 16
-; SI-NEXT:    s_cbranch_execnz .LBB101_4
-; SI-NEXT:  .LBB101_2: ; %cmp.true
+; SI-NEXT:    s_lshl_b32 vcc_lo, s28, 16
+; SI-NEXT:    s_lshl_b32 vcc_hi, s42, 16
+; SI-NEXT:    s_lshl_b32 s30, s29, 16
+; SI-NEXT:    s_lshl_b32 s31, s43, 16
+; SI-NEXT:    s_lshl_b32 s34, s56, 16
+; SI-NEXT:    s_lshl_b32 s35, s59, 16
+; SI-NEXT:    s_lshl_b32 s36, s60, 16
+; SI-NEXT:    s_lshl_b32 s37, s63, 16
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB101_3
+; SI-NEXT:  .LBB101_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:  .LBB101_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB101_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s63
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s60
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s59
@@ -72327,50 +73404,16 @@ define inreg <32 x bfloat> @bitcast_v32f16_to_v32bf16_scalar(<32 x half> inreg %
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
-; SI-NEXT:    s_branch .LBB101_5
-; SI-NEXT:  .LBB101_3:
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    s_branch .LBB101_2
-; SI-NEXT:  .LBB101_4:
-; SI-NEXT:    v_mov_b32_e32 v1, s39
-; SI-NEXT:    v_mov_b32_e32 v0, s38
-; SI-NEXT:    v_mov_b32_e32 v3, s37
-; SI-NEXT:    v_mov_b32_e32 v2, s36
-; SI-NEXT:    v_mov_b32_e32 v5, s35
-; SI-NEXT:    v_mov_b32_e32 v4, s34
-; SI-NEXT:    v_mov_b32_e32 v7, s31
-; SI-NEXT:    v_mov_b32_e32 v6, s30
+; SI-NEXT:    s_branch .LBB101_6
+; SI-NEXT:  .LBB101_5:
+; SI-NEXT:    v_mov_b32_e32 v1, s37
+; SI-NEXT:    v_mov_b32_e32 v0, s36
+; SI-NEXT:    v_mov_b32_e32 v3, s35
+; SI-NEXT:    v_mov_b32_e32 v2, s34
+; SI-NEXT:    v_mov_b32_e32 v5, s31
+; SI-NEXT:    v_mov_b32_e32 v4, s30
+; SI-NEXT:    v_mov_b32_e32 v7, vcc_hi
+; SI-NEXT:    v_mov_b32_e32 v6, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v9, s95
 ; SI-NEXT:    v_mov_b32_e32 v8, s94
 ; SI-NEXT:    v_mov_b32_e32 v11, s93
@@ -72395,7 +73438,7 @@ define inreg <32 x bfloat> @bitcast_v32f16_to_v32bf16_scalar(<32 x half> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v28, s46
 ; SI-NEXT:    v_mov_b32_e32 v31, s45
 ; SI-NEXT:    v_mov_b32_e32 v30, s44
-; SI-NEXT:  .LBB101_5: ; %end
+; SI-NEXT:  .LBB101_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v31, 1.0, v31
 ; SI-NEXT:    v_lshrrev_b32_e32 v31, 16, v31
 ; SI-NEXT:    v_mul_f32_e32 v30, 1.0, v30
@@ -72459,11 +73502,9 @@ define inreg <32 x bfloat> @bitcast_v32f16_to_v32bf16_scalar(<32 x half> inreg %
 ; SI-NEXT:    v_lshr_b64 v[12:13], v[36:37], 16
 ; SI-NEXT:    v_lshr_b64 v[13:14], v[38:39], 16
 ; SI-NEXT:    v_lshr_b64 v[14:15], v[48:49], 16
-; SI-NEXT:    v_readlane_b32 s30, v40, 6
+; SI-NEXT:    v_readlane_b32 s30, v40, 4
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[50:51], 16
-; SI-NEXT:    v_readlane_b32 s31, v40, 7
-; SI-NEXT:    v_readlane_b32 s39, v40, 5
-; SI-NEXT:    v_readlane_b32 s38, v40, 4
+; SI-NEXT:    v_readlane_b32 s31, v40, 5
 ; SI-NEXT:    v_readlane_b32 s37, v40, 3
 ; SI-NEXT:    v_readlane_b32 s36, v40, 2
 ; SI-NEXT:    v_readlane_b32 s35, v40, 1
@@ -72486,10 +73527,18 @@ define inreg <32 x bfloat> @bitcast_v32f16_to_v32bf16_scalar(<32 x half> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB101_3
+; VI-NEXT:    s_cbranch_scc0 .LBB101_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB101_4
-; VI-NEXT:  .LBB101_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB101_3
+; VI-NEXT:  .LBB101_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB101_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB101_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s5, s30, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v3, s5
@@ -72571,10 +73620,8 @@ define inreg <32 x bfloat> @bitcast_v32f16_to_v32bf16_scalar(<32 x half> inreg %
 ; VI-NEXT:    v_add_f16_e32 v1, s17, v1
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v17
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v16
-; VI-NEXT:    s_branch .LBB101_5
-; VI-NEXT:  .LBB101_3:
-; VI-NEXT:    s_branch .LBB101_2
-; VI-NEXT:  .LBB101_4:
+; VI-NEXT:    s_branch .LBB101_6
+; VI-NEXT:  .LBB101_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -72591,7 +73638,7 @@ define inreg <32 x bfloat> @bitcast_v32f16_to_v32bf16_scalar(<32 x half> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB101_5: ; %end
+; VI-NEXT:  .LBB101_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v18, 0
 ; VI-NEXT:    v_readlane_b32 s31, v18, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -72612,10 +73659,18 @@ define inreg <32 x bfloat> @bitcast_v32f16_to_v32bf16_scalar(<32 x half> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB101_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB101_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB101_4
-; GFX9-NEXT:  .LBB101_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB101_3
+; GFX9-NEXT:  .LBB101_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB101_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB101_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v15, s31, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v14, s30, v0 op_sel_hi:[1,0]
@@ -72633,10 +73688,8 @@ define inreg <32 x bfloat> @bitcast_v32f16_to_v32bf16_scalar(<32 x half> inreg %
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB101_5
-; GFX9-NEXT:  .LBB101_3:
-; GFX9-NEXT:    s_branch .LBB101_2
-; GFX9-NEXT:  .LBB101_4:
+; GFX9-NEXT:    s_branch .LBB101_6
+; GFX9-NEXT:  .LBB101_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -72653,7 +73706,7 @@ define inreg <32 x bfloat> @bitcast_v32f16_to_v32bf16_scalar(<32 x half> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB101_5: ; %end
+; GFX9-NEXT:  .LBB101_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v16, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v16, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -72671,11 +73724,16 @@ define inreg <32 x bfloat> @bitcast_v32f16_to_v32bf16_scalar(<32 x half> inreg %
 ; GFX11-NEXT:    s_mov_b32 s12, s0
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB101_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB101_4
-; GFX11-NEXT:  .LBB101_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB101_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB101_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB101_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v15, 0x200, s27 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v14, 0x200, s26 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v13, 0x200, s25 op_sel_hi:[0,1]
@@ -72693,8 +73751,6 @@ define inreg <32 x bfloat> @bitcast_v32f16_to_v32bf16_scalar(<32 x half> inreg %
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s13 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s12 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB101_3:
-; GFX11-NEXT:    s_branch .LBB101_2
 ; GFX11-NEXT:  .LBB101_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -74333,7 +75389,7 @@ define inreg <32 x half> @bitcast_v32bf16_to_v32f16_scalar(<32 x bfloat> inreg %
 ; SI-NEXT:    v_mul_f32_e64 v53, 1.0, s44
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
-; SI-NEXT:    s_cbranch_scc0 .LBB103_4
+; SI-NEXT:    s_cbranch_scc0 .LBB103_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_waitcnt expcnt(1)
 ; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:156 ; 4-byte Folded Reload
@@ -74371,6 +75427,7 @@ define inreg <32 x half> @bitcast_v32bf16_to_v32f16_scalar(<32 x bfloat> inreg %
 ; SI-NEXT:    v_lshrrev_b32_e32 v33, 16, v40
 ; SI-NEXT:    v_lshrrev_b32_e32 v22, 16, v47
 ; SI-NEXT:    v_lshrrev_b32_e32 v46, 16, v17
+; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    buffer_store_dword v5, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v6, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
 ; SI-NEXT:    v_lshrrev_b32_e32 v35, 16, v0
@@ -74491,272 +75548,15 @@ define inreg <32 x half> @bitcast_v32bf16_to_v32f16_scalar(<32 x bfloat> inreg %
 ; SI-NEXT:    buffer_load_dword v61, off, s[0:3], s32 offset:172 ; 4-byte Folded Reload
 ; SI-NEXT:    v_mov_b32_e32 v43, v6
 ; SI-NEXT:    v_mov_b32_e32 v8, v23
-; SI-NEXT:    s_cbranch_execnz .LBB103_3
-; SI-NEXT:  .LBB103_2: ; %cmp.true
-; SI-NEXT:    s_waitcnt expcnt(6)
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v43
-; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v2
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v1
-; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
-; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v3
-; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:88 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v5
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v0
-; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v40
-; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
-; SI-NEXT:    v_lshr_b64 v[52:53], v[1:2], 16
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v47
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v21
-; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v2
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v4
-; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:96 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:100 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v17
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v45
-; SI-NEXT:    v_add_f32_e32 v5, 0x40c00000, v2
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v5
-; SI-NEXT:    v_lshr_b64 v[17:18], v[1:2], 16
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v28
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v42
-; SI-NEXT:    v_add_f32_e32 v6, 0x40c00000, v2
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v6
-; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:104 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:108 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v12
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v7
-; SI-NEXT:    v_add_f32_e32 v7, 0x40c00000, v2
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v7
-; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:112 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:116 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v41
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v8
-; SI-NEXT:    v_add_f32_e32 v8, 0x40c00000, v2
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v8
-; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:120 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:124 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:164 ; 4-byte Folded Reload
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v16
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_and_b32_e32 v26, 0xffff0000, v8
-; SI-NEXT:    v_and_b32_e32 v18, 0xffff0000, v6
-; SI-NEXT:    v_and_b32_e32 v6, 0xffff0000, v5
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v2
-; SI-NEXT:    v_add_f32_e32 v9, 0x40c00000, v2
-; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v9
-; SI-NEXT:    v_lshr_b64 v[55:56], v[1:2], 16
-; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload
-; SI-NEXT:    v_and_b32_e32 v56, 0xffff0000, v4
-; SI-NEXT:    s_waitcnt vmcnt(1)
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v1
-; SI-NEXT:    v_add_f32_e32 v11, 0x40c00000, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v14
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v1
-; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:84 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_store_dword v11, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v12, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
-; SI-NEXT:    v_and_b32_e32 v14, 0xffff0000, v9
-; SI-NEXT:    s_waitcnt vmcnt(3)
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v1
-; SI-NEXT:    v_lshr_b64 v[15:16], v[11:12], 16
-; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_add_f32_e32 v11, 0x40c00000, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v10
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v1
-; SI-NEXT:    v_mov_b32_e32 v1, v12
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v62
-; SI-NEXT:    v_add_f32_e32 v62, 0x40c00000, v1
-; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:160 ; 4-byte Folded Reload
-; SI-NEXT:    v_lshr_b64 v[27:28], v[11:12], 16
-; SI-NEXT:    v_and_b32_e32 v28, 0xffff0000, v7
-; SI-NEXT:    v_lshr_b64 v[53:54], v[14:15], 16
-; SI-NEXT:    v_mov_b32_e32 v54, v17
-; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v0
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v1
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v63, 16, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v36
-; SI-NEXT:    v_add_f32_e32 v36, 0x40c00000, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v20
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v37, 16, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v38
-; SI-NEXT:    v_add_f32_e32 v38, 0x40c00000, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v44
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v39, 16, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v48
-; SI-NEXT:    v_add_f32_e32 v48, 0x40c00000, v1
-; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:152 ; 4-byte Folded Reload
-; SI-NEXT:    v_lshr_b64 v[7:8], v[38:39], 16
-; SI-NEXT:    v_lshr_b64 v[29:30], v[62:63], 16
-; SI-NEXT:    v_and_b32_e32 v30, 0xffff0000, v3
-; SI-NEXT:    v_lshr_b64 v[19:20], v[36:37], 16
-; SI-NEXT:    v_lshr_b64 v[22:23], v[6:7], 16
-; SI-NEXT:    v_lshr_b64 v[50:51], v[28:29], 16
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v1
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v49, 16, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v60
-; SI-NEXT:    v_add_f32_e32 v60, 0x40c00000, v1
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v13
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_lshrrev_b32_e32 v61, 16, v1
-; SI-NEXT:    v_lshr_b64 v[1:2], v[60:61], 16
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v34
-; SI-NEXT:    v_add_f32_e32 v34, 0x40c00000, v2
-; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:156 ; 4-byte Folded Reload
-; SI-NEXT:    v_lshr_b64 v[9:10], v[0:1], 16
-; SI-NEXT:    v_lshr_b64 v[57:58], v[48:49], 16
-; SI-NEXT:    v_lshr_b64 v[11:12], v[56:57], 16
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v2
-; SI-NEXT:    v_add_f32_e32 v2, 0x40c00000, v2
-; SI-NEXT:    v_lshrrev_b32_e32 v35, 16, v2
-; SI-NEXT:    v_mov_b32_e32 v2, v7
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:128 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:132 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v3, off, s[0:3], s32 offset:136 ; 4-byte Folded Spill
-; SI-NEXT:    v_lshr_b64 v[31:32], v[34:35], 16
-; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_mov_b32_e32 v2, v19
-; SI-NEXT:    v_lshr_b64 v[24:25], v[30:31], 16
-; SI-NEXT:    v_lshr_b64 v[18:19], v[18:19], 16
-; SI-NEXT:    v_lshr_b64 v[25:26], v[26:27], 16
-; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:140 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:144 ; 4-byte Folded Spill
-; SI-NEXT:    buffer_store_dword v3, off, s[0:3], s32 offset:148 ; 4-byte Folded Spill
-; SI-NEXT:  .LBB103_3: ; %end
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_and_b32_e32 v4, 0xffff, v1
-; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:88 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:92 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v24
-; SI-NEXT:    v_and_b32_e32 v3, 0xffff, v31
-; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v52
-; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v49
-; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v22
-; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:112 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:116 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:84 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(1)
-; SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v53
-; SI-NEXT:    v_and_b32_e32 v15, 0xffff, v15
-; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
-; SI-NEXT:    v_or_b32_e32 v0, v0, v1
-; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v35
-; SI-NEXT:    v_or_b32_e32 v1, v3, v1
-; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v9
-; SI-NEXT:    v_or_b32_e32 v2, v2, v3
-; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v61
-; SI-NEXT:    v_or_b32_e32 v3, v4, v3
-; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:96 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:100 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v11
-; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v17
-; SI-NEXT:    v_and_b32_e32 v4, 0xffff, v4
-; SI-NEXT:    v_or_b32_e32 v4, v4, v5
-; SI-NEXT:    v_and_b32_e32 v5, 0xffff, v57
-; SI-NEXT:    v_or_b32_e32 v5, v5, v6
-; SI-NEXT:    v_and_b32_e32 v6, 0xffff, v54
-; SI-NEXT:    v_or_b32_e32 v6, v6, v8
-; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:128 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:132 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:136 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(1)
-; SI-NEXT:    v_and_b32_e32 v7, 0xffff, v8
-; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v39
-; SI-NEXT:    v_or_b32_e32 v7, v7, v8
-; SI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:104 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:108 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v18
-; SI-NEXT:    v_and_b32_e32 v8, 0xffff, v8
-; SI-NEXT:    v_or_b32_e32 v8, v8, v9
-; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:140 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:144 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:148 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_and_b32_e32 v11, 0xffff, v29
-; SI-NEXT:    v_and_b32_e32 v9, 0xffff, v10
-; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v37
-; SI-NEXT:    v_or_b32_e32 v9, v9, v10
-; SI-NEXT:    v_and_b32_e32 v10, 0xffff, v12
-; SI-NEXT:    v_lshlrev_b32_e32 v12, 16, v50
-; SI-NEXT:    v_or_b32_e32 v10, v10, v12
-; SI-NEXT:    v_lshlrev_b32_e32 v12, 16, v63
-; SI-NEXT:    v_or_b32_e32 v11, v11, v12
-; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:120 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:124 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v63, off, s[0:3], s32 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v62, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v61, off, s[0:3], s32 offset:8 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v60, off, s[0:3], s32 offset:12 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v59, off, s[0:3], s32 offset:16 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v58, off, s[0:3], s32 offset:20 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v57, off, s[0:3], s32 offset:24 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:28 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v47, off, s[0:3], s32 offset:32 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v46, off, s[0:3], s32 offset:36 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v45, off, s[0:3], s32 offset:40 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v44, off, s[0:3], s32 offset:44 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v43, off, s[0:3], s32 offset:48 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:52 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:56 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:60 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(14)
-; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v25
-; SI-NEXT:    v_and_b32_e32 v12, 0xffff, v12
-; SI-NEXT:    v_or_b32_e32 v12, v12, v13
-; SI-NEXT:    v_and_b32_e32 v13, 0xffff, v27
-; SI-NEXT:    v_or_b32_e32 v13, v13, v14
-; SI-NEXT:    v_and_b32_e32 v14, 0xffff, v55
-; SI-NEXT:    v_or_b32_e32 v14, v14, v16
-; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload
-; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload
-; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v17
-; SI-NEXT:    v_or_b32_e32 v15, v15, v16
-; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB103_4:
+; SI-NEXT:    s_branch .LBB103_3
+; SI-NEXT:  .LBB103_2:
 ; SI-NEXT:    buffer_store_dword v15, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v16, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
 ; SI-NEXT:    v_mov_b32_e32 v5, v32
 ; SI-NEXT:    v_mov_b32_e32 v8, v18
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v16, v53
+; SI-NEXT:    s_mov_b64 s[4:5], -1
 ; SI-NEXT:    ; implicit-def: $vgpr0
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:88 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill
@@ -74797,7 +75597,269 @@ define inreg <32 x half> @bitcast_v32bf16_to_v32f16_scalar(<32 x bfloat> inreg %
 ; SI-NEXT:    ; implicit-def: $vgpr29
 ; SI-NEXT:    ; implicit-def: $vgpr27
 ; SI-NEXT:    ; implicit-def: $vgpr15
-; SI-NEXT:    s_branch .LBB103_2
+; SI-NEXT:  .LBB103_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB103_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    s_waitcnt expcnt(6)
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v43
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v2
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v1
+; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
+; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v3
+; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:88 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(1)
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v5
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v0
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v40
+; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
+; SI-NEXT:    v_lshr_b64 v[52:53], v[1:2], 16
+; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v47
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v21
+; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v2
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v4
+; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:96 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:100 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v17
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v45
+; SI-NEXT:    v_add_f32_e32 v5, 0x40c00000, v2
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v5
+; SI-NEXT:    v_lshr_b64 v[17:18], v[1:2], 16
+; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v28
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v42
+; SI-NEXT:    v_add_f32_e32 v6, 0x40c00000, v2
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v6
+; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:104 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:108 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v12
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v7
+; SI-NEXT:    v_add_f32_e32 v7, 0x40c00000, v2
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v7
+; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:112 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:116 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v41
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v8
+; SI-NEXT:    v_add_f32_e32 v8, 0x40c00000, v2
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v8
+; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:120 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:124 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:164 ; 4-byte Folded Reload
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v16
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_and_b32_e32 v26, 0xffff0000, v8
+; SI-NEXT:    v_and_b32_e32 v18, 0xffff0000, v6
+; SI-NEXT:    v_and_b32_e32 v6, 0xffff0000, v5
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v2
+; SI-NEXT:    v_add_f32_e32 v9, 0x40c00000, v2
+; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v9
+; SI-NEXT:    v_lshr_b64 v[55:56], v[1:2], 16
+; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload
+; SI-NEXT:    v_and_b32_e32 v56, 0xffff0000, v4
+; SI-NEXT:    s_waitcnt vmcnt(1)
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v1
+; SI-NEXT:    v_add_f32_e32 v11, 0x40c00000, v1
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v14
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v1
+; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:84 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_store_dword v11, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v12, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
+; SI-NEXT:    v_and_b32_e32 v14, 0xffff0000, v9
+; SI-NEXT:    s_waitcnt vmcnt(3)
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v1
+; SI-NEXT:    v_lshr_b64 v[15:16], v[11:12], 16
+; SI-NEXT:    s_waitcnt expcnt(1)
+; SI-NEXT:    v_add_f32_e32 v11, 0x40c00000, v1
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v10
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v1
+; SI-NEXT:    v_mov_b32_e32 v1, v12
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v62
+; SI-NEXT:    v_add_f32_e32 v62, 0x40c00000, v1
+; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:160 ; 4-byte Folded Reload
+; SI-NEXT:    v_lshr_b64 v[27:28], v[11:12], 16
+; SI-NEXT:    v_and_b32_e32 v28, 0xffff0000, v7
+; SI-NEXT:    v_lshr_b64 v[53:54], v[14:15], 16
+; SI-NEXT:    v_mov_b32_e32 v54, v17
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v0
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v1
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v63, 16, v1
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v36
+; SI-NEXT:    v_add_f32_e32 v36, 0x40c00000, v1
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v20
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v37, 16, v1
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v38
+; SI-NEXT:    v_add_f32_e32 v38, 0x40c00000, v1
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v44
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v39, 16, v1
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v48
+; SI-NEXT:    v_add_f32_e32 v48, 0x40c00000, v1
+; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:152 ; 4-byte Folded Reload
+; SI-NEXT:    v_lshr_b64 v[7:8], v[38:39], 16
+; SI-NEXT:    v_lshr_b64 v[29:30], v[62:63], 16
+; SI-NEXT:    v_and_b32_e32 v30, 0xffff0000, v3
+; SI-NEXT:    v_lshr_b64 v[19:20], v[36:37], 16
+; SI-NEXT:    v_lshr_b64 v[22:23], v[6:7], 16
+; SI-NEXT:    v_lshr_b64 v[50:51], v[28:29], 16
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v1
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v49, 16, v1
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v60
+; SI-NEXT:    v_add_f32_e32 v60, 0x40c00000, v1
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v13
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v61, 16, v1
+; SI-NEXT:    v_lshr_b64 v[1:2], v[60:61], 16
+; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v34
+; SI-NEXT:    v_add_f32_e32 v34, 0x40c00000, v2
+; SI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:156 ; 4-byte Folded Reload
+; SI-NEXT:    v_lshr_b64 v[9:10], v[0:1], 16
+; SI-NEXT:    v_lshr_b64 v[57:58], v[48:49], 16
+; SI-NEXT:    v_lshr_b64 v[11:12], v[56:57], 16
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v2
+; SI-NEXT:    v_add_f32_e32 v2, 0x40c00000, v2
+; SI-NEXT:    v_lshrrev_b32_e32 v35, 16, v2
+; SI-NEXT:    v_mov_b32_e32 v2, v7
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:128 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:132 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v3, off, s[0:3], s32 offset:136 ; 4-byte Folded Spill
+; SI-NEXT:    v_lshr_b64 v[31:32], v[34:35], 16
+; SI-NEXT:    s_waitcnt expcnt(1)
+; SI-NEXT:    v_mov_b32_e32 v2, v19
+; SI-NEXT:    v_lshr_b64 v[24:25], v[30:31], 16
+; SI-NEXT:    v_lshr_b64 v[18:19], v[18:19], 16
+; SI-NEXT:    v_lshr_b64 v[25:26], v[26:27], 16
+; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:140 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:144 ; 4-byte Folded Spill
+; SI-NEXT:    buffer_store_dword v3, off, s[0:3], s32 offset:148 ; 4-byte Folded Spill
+; SI-NEXT:  .LBB103_5: ; %end
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_and_b32_e32 v4, 0xffff, v1
+; SI-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:88 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:92 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v24
+; SI-NEXT:    v_and_b32_e32 v3, 0xffff, v31
+; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v52
+; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v49
+; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v22
+; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:112 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:116 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:84 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(1)
+; SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v53
+; SI-NEXT:    v_and_b32_e32 v15, 0xffff, v15
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
+; SI-NEXT:    v_or_b32_e32 v0, v0, v1
+; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v35
+; SI-NEXT:    v_or_b32_e32 v1, v3, v1
+; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v9
+; SI-NEXT:    v_or_b32_e32 v2, v2, v3
+; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v61
+; SI-NEXT:    v_or_b32_e32 v3, v4, v3
+; SI-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:96 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:100 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v11
+; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v17
+; SI-NEXT:    v_and_b32_e32 v4, 0xffff, v4
+; SI-NEXT:    v_or_b32_e32 v4, v4, v5
+; SI-NEXT:    v_and_b32_e32 v5, 0xffff, v57
+; SI-NEXT:    v_or_b32_e32 v5, v5, v6
+; SI-NEXT:    v_and_b32_e32 v6, 0xffff, v54
+; SI-NEXT:    v_or_b32_e32 v6, v6, v8
+; SI-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:128 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:132 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:136 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(1)
+; SI-NEXT:    v_and_b32_e32 v7, 0xffff, v8
+; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v39
+; SI-NEXT:    v_or_b32_e32 v7, v7, v8
+; SI-NEXT:    buffer_load_dword v8, off, s[0:3], s32 offset:104 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:108 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v18
+; SI-NEXT:    v_and_b32_e32 v8, 0xffff, v8
+; SI-NEXT:    v_or_b32_e32 v8, v8, v9
+; SI-NEXT:    buffer_load_dword v9, off, s[0:3], s32 offset:140 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v10, off, s[0:3], s32 offset:144 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v11, off, s[0:3], s32 offset:148 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_and_b32_e32 v11, 0xffff, v29
+; SI-NEXT:    v_and_b32_e32 v9, 0xffff, v10
+; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v37
+; SI-NEXT:    v_or_b32_e32 v9, v9, v10
+; SI-NEXT:    v_and_b32_e32 v10, 0xffff, v12
+; SI-NEXT:    v_lshlrev_b32_e32 v12, 16, v50
+; SI-NEXT:    v_or_b32_e32 v10, v10, v12
+; SI-NEXT:    v_lshlrev_b32_e32 v12, 16, v63
+; SI-NEXT:    v_or_b32_e32 v11, v11, v12
+; SI-NEXT:    buffer_load_dword v12, off, s[0:3], s32 offset:120 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v13, off, s[0:3], s32 offset:124 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v63, off, s[0:3], s32 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v62, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v61, off, s[0:3], s32 offset:8 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v60, off, s[0:3], s32 offset:12 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v59, off, s[0:3], s32 offset:16 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v58, off, s[0:3], s32 offset:20 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v57, off, s[0:3], s32 offset:24 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:28 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v47, off, s[0:3], s32 offset:32 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v46, off, s[0:3], s32 offset:36 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v45, off, s[0:3], s32 offset:40 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v44, off, s[0:3], s32 offset:44 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v43, off, s[0:3], s32 offset:48 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:52 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:56 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:60 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(14)
+; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v25
+; SI-NEXT:    v_and_b32_e32 v12, 0xffff, v12
+; SI-NEXT:    v_or_b32_e32 v12, v12, v13
+; SI-NEXT:    v_and_b32_e32 v13, 0xffff, v27
+; SI-NEXT:    v_or_b32_e32 v13, v13, v14
+; SI-NEXT:    v_and_b32_e32 v14, 0xffff, v55
+; SI-NEXT:    v_or_b32_e32 v14, v14, v16
+; SI-NEXT:    buffer_load_dword v16, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload
+; SI-NEXT:    buffer_load_dword v17, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v17
+; SI-NEXT:    v_or_b32_e32 v15, v15, v16
+; SI-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; VI-LABEL: bitcast_v32bf16_to_v32f16_scalar:
 ; VI:       ; %bb.0:
@@ -74811,10 +75873,18 @@ define inreg <32 x half> @bitcast_v32bf16_to_v32f16_scalar(<32 x bfloat> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s31, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s30, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB103_3
+; VI-NEXT:    s_cbranch_scc0 .LBB103_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB103_4
-; VI-NEXT:  .LBB103_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB103_3
+; VI-NEXT:  .LBB103_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB103_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB103_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v16, 0x40c00000
 ; VI-NEXT:    s_lshl_b32 s4, s26, 16
 ; VI-NEXT:    v_add_f32_e32 v4, s4, v16
@@ -75111,10 +76181,8 @@ define inreg <32 x half> @bitcast_v32bf16_to_v32f16_scalar(<32 x bfloat> inreg %
 ; VI-NEXT:    v_lshrrev_b64 v[17:18], 16, v[17:18]
 ; VI-NEXT:    v_lshrrev_b64 v[15:16], 16, v[15:16]
 ; VI-NEXT:    v_mov_b32_e32 v13, v17
-; VI-NEXT:    s_branch .LBB103_5
-; VI-NEXT:  .LBB103_3:
-; VI-NEXT:    s_branch .LBB103_2
-; VI-NEXT:  .LBB103_4:
+; VI-NEXT:    s_branch .LBB103_6
+; VI-NEXT:  .LBB103_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -75131,7 +76199,7 @@ define inreg <32 x half> @bitcast_v32bf16_to_v32f16_scalar(<32 x bfloat> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v15, s31
-; VI-NEXT:  .LBB103_5: ; %end
+; VI-NEXT:  .LBB103_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v20, 0
 ; VI-NEXT:    v_readlane_b32 s31, v20, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -75152,10 +76220,18 @@ define inreg <32 x half> @bitcast_v32bf16_to_v32f16_scalar(<32 x bfloat> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s31, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s30, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB103_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB103_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB103_4
-; GFX9-NEXT:  .LBB103_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB103_3
+; GFX9-NEXT:  .LBB103_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB103_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB103_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    s_and_b32 s5, s30, 0xffff0000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s5, v0
@@ -75462,10 +76538,8 @@ define inreg <32 x half> @bitcast_v32bf16_to_v32f16_scalar(<32 x bfloat> inreg %
 ; GFX9-NEXT:    v_cndmask_b32_e32 v17, v18, v19, vcc
 ; GFX9-NEXT:    v_and_b32_sdwa v16, v16, v17 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v0, 16, v16
-; GFX9-NEXT:    s_branch .LBB103_5
-; GFX9-NEXT:  .LBB103_3:
-; GFX9-NEXT:    s_branch .LBB103_2
-; GFX9-NEXT:  .LBB103_4:
+; GFX9-NEXT:    s_branch .LBB103_6
+; GFX9-NEXT:  .LBB103_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -75482,7 +76556,7 @@ define inreg <32 x half> @bitcast_v32bf16_to_v32f16_scalar(<32 x bfloat> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s31
-; GFX9-NEXT:  .LBB103_5: ; %end
+; GFX9-NEXT:  .LBB103_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s30, v20, 0
 ; GFX9-NEXT:    v_readlane_b32 s31, v20, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
@@ -75500,11 +76574,16 @@ define inreg <32 x half> @bitcast_v32bf16_to_v32f16_scalar(<32 x bfloat> inreg %
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB103_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB103_4
-; GFX11-TRUE16-NEXT:  .LBB103_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB103_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:  .LBB103_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB103_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_and_b32 s0, s12, 0xffff0000
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s12, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -75807,8 +76886,6 @@ define inreg <32 x half> @bitcast_v32bf16_to_v32f16_scalar(<32 x bfloat> inreg %
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v15, 16, v28
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v15.h, v31.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB103_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB103_2
 ; GFX11-TRUE16-NEXT:  .LBB103_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -75829,11 +76906,16 @@ define inreg <32 x half> @bitcast_v32bf16_to_v32f16_scalar(<32 x bfloat> inreg %
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB103_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB103_4
-; GFX11-FAKE16-NEXT:  .LBB103_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB103_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:  .LBB103_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB103_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_and_b32 s0, s12, 0xffff0000
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s1, s12, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s0
@@ -76160,8 +77242,6 @@ define inreg <32 x half> @bitcast_v32bf16_to_v32f16_scalar(<32 x bfloat> inreg %
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4)
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v0, 16, v23
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB103_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB103_2
 ; GFX11-FAKE16-NEXT:  .LBB103_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v3, s15
@@ -78087,7 +79167,7 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s4, v3
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    ; implicit-def: $vgpr19 : SGPR spill to VGPR lane
-; SI-NEXT:    s_cbranch_scc0 .LBB105_3
+; SI-NEXT:    s_cbranch_scc0 .LBB105_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s69, 16
@@ -78186,8 +79266,73 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[30:31], s[4:5], 24
 ; SI-NEXT:    s_lshr_b64 s[34:35], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[36:37], s[4:5], 8
-; SI-NEXT:    s_cbranch_execnz .LBB105_4
-; SI-NEXT:  .LBB105_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 vcc, 0
+; SI-NEXT:    s_branch .LBB105_3
+; SI-NEXT:  .LBB105_2:
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    s_mov_b64 vcc, -1
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v19, s4, 0
+; SI-NEXT:    v_writelane_b32 v19, s5, 1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr57
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr47
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    v_writelane_b32 v19, s4, 2
+; SI-NEXT:    v_writelane_b32 v19, s5, 3
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v19, s4, 4
+; SI-NEXT:    v_writelane_b32 v19, s5, 5
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    v_writelane_b32 v19, s4, 6
+; SI-NEXT:    v_writelane_b32 v19, s5, 7
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:  .LBB105_3: ; %Flow
+; SI-NEXT:    s_and_b64 vcc, vcc, exec
+; SI-NEXT:    s_cselect_b32 vcc_lo, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 vcc_lo, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB105_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s44
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s46
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s99
@@ -78388,67 +79533,8 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; SI-NEXT:    v_bfe_u32 v10, v3, 8, 8
 ; SI-NEXT:    v_bfe_u32 v8, v2, 8, 8
 ; SI-NEXT:    v_bfe_u32 v7, v1, 8, 8
-; SI-NEXT:    s_branch .LBB105_5
-; SI-NEXT:  .LBB105_3:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v19, s4, 0
-; SI-NEXT:    v_writelane_b32 v19, s5, 1
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr57
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr47
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    v_writelane_b32 v19, s4, 2
-; SI-NEXT:    v_writelane_b32 v19, s5, 3
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v19, s4, 4
-; SI-NEXT:    v_writelane_b32 v19, s5, 5
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    v_writelane_b32 v19, s4, 6
-; SI-NEXT:    v_writelane_b32 v19, s5, 7
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_branch .LBB105_2
-; SI-NEXT:  .LBB105_4:
+; SI-NEXT:    s_branch .LBB105_6
+; SI-NEXT:  .LBB105_5:
 ; SI-NEXT:    v_readlane_b32 s18, v19, 4
 ; SI-NEXT:    v_readlane_b32 s20, v19, 2
 ; SI-NEXT:    v_readlane_b32 s22, v19, 6
@@ -78473,7 +79559,7 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; SI-NEXT:    v_readlane_b32 s21, v19, 3
 ; SI-NEXT:    v_readlane_b32 s23, v19, 7
 ; SI-NEXT:    v_readlane_b32 s25, v19, 1
-; SI-NEXT:  .LBB105_5: ; %end
+; SI-NEXT:  .LBB105_6: ; %end
 ; SI-NEXT:    s_and_b32 s16, s42, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s24, 8
 ; SI-NEXT:    s_or_b32 s16, s16, s17
@@ -78744,55 +79830,53 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; VI-NEXT:    v_writelane_b32 v63, s55, 13
 ; VI-NEXT:    v_writelane_b32 v63, s64, 14
 ; VI-NEXT:    v_writelane_b32 v63, s65, 15
-; VI-NEXT:    v_writelane_b32 v63, s66, 16
-; VI-NEXT:    v_writelane_b32 v63, s67, 17
-; VI-NEXT:    v_writelane_b32 v63, s30, 18
-; VI-NEXT:    v_writelane_b32 v63, s31, 19
+; VI-NEXT:    v_writelane_b32 v63, s30, 16
+; VI-NEXT:    v_writelane_b32 v63, s31, 17
 ; VI-NEXT:    v_readfirstlane_b32 s4, v3
 ; VI-NEXT:    v_readfirstlane_b32 s5, v2
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v1
-; VI-NEXT:    s_cbranch_scc0 .LBB105_3
+; VI-NEXT:    s_cbranch_scc0 .LBB105_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s88, s5, 24
-; VI-NEXT:    s_lshr_b32 s36, s5, 16
+; VI-NEXT:    s_lshr_b32 s34, s5, 16
 ; VI-NEXT:    s_lshr_b32 s63, s5, 8
-; VI-NEXT:    s_lshr_b32 s37, s4, 16
+; VI-NEXT:    s_lshr_b32 s35, s4, 16
 ; VI-NEXT:    s_lshr_b32 s79, s4, 8
 ; VI-NEXT:    s_lshr_b32 s89, s29, 24
-; VI-NEXT:    s_lshr_b32 s38, s29, 16
+; VI-NEXT:    s_lshr_b32 s36, s29, 16
 ; VI-NEXT:    s_lshr_b32 s62, s29, 8
-; VI-NEXT:    s_lshr_b32 s39, s28, 16
+; VI-NEXT:    s_lshr_b32 s37, s28, 16
 ; VI-NEXT:    s_lshr_b32 s78, s28, 8
 ; VI-NEXT:    s_lshr_b32 s90, s27, 24
-; VI-NEXT:    s_lshr_b32 s48, s27, 16
+; VI-NEXT:    s_lshr_b32 s38, s27, 16
 ; VI-NEXT:    s_lshr_b32 s61, s27, 8
-; VI-NEXT:    s_lshr_b32 s49, s26, 16
+; VI-NEXT:    s_lshr_b32 s39, s26, 16
 ; VI-NEXT:    s_lshr_b32 s77, s26, 8
 ; VI-NEXT:    s_lshr_b32 s91, s25, 24
-; VI-NEXT:    s_lshr_b32 s50, s25, 16
+; VI-NEXT:    s_lshr_b32 s48, s25, 16
 ; VI-NEXT:    s_lshr_b32 s60, s25, 8
-; VI-NEXT:    s_lshr_b32 s51, s24, 16
+; VI-NEXT:    s_lshr_b32 s49, s24, 16
 ; VI-NEXT:    s_lshr_b32 s76, s24, 8
-; VI-NEXT:    s_lshr_b32 s30, s23, 24
-; VI-NEXT:    s_lshr_b32 s52, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 24
+; VI-NEXT:    s_lshr_b32 s50, s23, 16
 ; VI-NEXT:    s_lshr_b32 s59, s23, 8
-; VI-NEXT:    s_lshr_b32 s53, s22, 16
+; VI-NEXT:    s_lshr_b32 s51, s22, 16
 ; VI-NEXT:    s_lshr_b32 s75, s22, 8
-; VI-NEXT:    s_lshr_b32 s31, s21, 24
-; VI-NEXT:    s_lshr_b32 s54, s21, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s21, 24
+; VI-NEXT:    s_lshr_b32 s52, s21, 16
 ; VI-NEXT:    s_lshr_b32 s58, s21, 8
-; VI-NEXT:    s_lshr_b32 s55, s20, 16
+; VI-NEXT:    s_lshr_b32 s53, s20, 16
 ; VI-NEXT:    s_lshr_b32 s74, s20, 8
-; VI-NEXT:    s_lshr_b32 s34, s19, 24
-; VI-NEXT:    s_lshr_b32 s64, s19, 16
+; VI-NEXT:    s_lshr_b32 s30, s19, 24
+; VI-NEXT:    s_lshr_b32 s54, s19, 16
 ; VI-NEXT:    s_lshr_b32 s57, s19, 8
-; VI-NEXT:    s_lshr_b32 s65, s18, 16
+; VI-NEXT:    s_lshr_b32 s55, s18, 16
 ; VI-NEXT:    s_lshr_b32 s73, s18, 8
-; VI-NEXT:    s_lshr_b32 s35, s17, 24
-; VI-NEXT:    s_lshr_b32 s66, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s17, 24
+; VI-NEXT:    s_lshr_b32 s64, s17, 16
 ; VI-NEXT:    s_lshr_b32 s56, s17, 8
-; VI-NEXT:    s_lshr_b32 s67, s16, 16
+; VI-NEXT:    s_lshr_b32 s65, s16, 16
 ; VI-NEXT:    s_lshr_b32 s72, s16, 8
 ; VI-NEXT:    s_lshr_b64 s[44:45], s[4:5], 24
 ; VI-NEXT:    s_lshr_b64 s[42:43], s[28:29], 24
@@ -78802,8 +79886,64 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; VI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB105_4
-; VI-NEXT:  .LBB105_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[46:47], 0
+; VI-NEXT:    s_branch .LBB105_3
+; VI-NEXT:  .LBB105_2:
+; VI-NEXT:    s_mov_b64 s[46:47], -1
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr65
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr64
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr55
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr54
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr53
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr52
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr51
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr50
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr49
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr48
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr39
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr38
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr37
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr35
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:  .LBB105_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; VI-NEXT:    s_cselect_b32 s7, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s7, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB105_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s6, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x200
 ; VI-NEXT:    v_add_f16_e32 v11, s6, v1
@@ -78921,78 +80061,28 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; VI-NEXT:    v_bfe_u32 v56, v13, 8, 8
 ; VI-NEXT:    v_bfe_u32 v59, v12, 8, 8
 ; VI-NEXT:    v_bfe_u32 v62, v11, 8, 8
-; VI-NEXT:    s_branch .LBB105_5
-; VI-NEXT:  .LBB105_3:
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr67
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr66
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr65
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr64
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr55
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr54
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr53
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr52
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr51
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr50
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr49
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr48
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr39
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr37
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    s_branch .LBB105_2
-; VI-NEXT:  .LBB105_4:
+; VI-NEXT:    s_branch .LBB105_6
+; VI-NEXT:  .LBB105_5:
 ; VI-NEXT:    v_mov_b32_e32 v2, s44
 ; VI-NEXT:    v_mov_b32_e32 v1, s79
 ; VI-NEXT:    buffer_store_dword v2, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v3, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
-; VI-NEXT:    v_mov_b32_e32 v18, s67
-; VI-NEXT:    v_mov_b32_e32 v11, s66
-; VI-NEXT:    v_mov_b32_e32 v20, s65
-; VI-NEXT:    v_mov_b32_e32 v12, s64
-; VI-NEXT:    v_mov_b32_e32 v21, s55
-; VI-NEXT:    v_mov_b32_e32 v13, s54
-; VI-NEXT:    v_mov_b32_e32 v22, s53
-; VI-NEXT:    v_mov_b32_e32 v14, s52
-; VI-NEXT:    v_mov_b32_e32 v23, s51
-; VI-NEXT:    v_mov_b32_e32 v15, s50
-; VI-NEXT:    v_mov_b32_e32 v24, s49
-; VI-NEXT:    v_mov_b32_e32 v16, s48
-; VI-NEXT:    v_mov_b32_e32 v26, s39
-; VI-NEXT:    v_mov_b32_e32 v17, s38
-; VI-NEXT:    v_mov_b32_e32 v29, s37
-; VI-NEXT:    v_mov_b32_e32 v19, s36
+; VI-NEXT:    v_mov_b32_e32 v18, s65
+; VI-NEXT:    v_mov_b32_e32 v11, s64
+; VI-NEXT:    v_mov_b32_e32 v20, s55
+; VI-NEXT:    v_mov_b32_e32 v12, s54
+; VI-NEXT:    v_mov_b32_e32 v21, s53
+; VI-NEXT:    v_mov_b32_e32 v13, s52
+; VI-NEXT:    v_mov_b32_e32 v22, s51
+; VI-NEXT:    v_mov_b32_e32 v14, s50
+; VI-NEXT:    v_mov_b32_e32 v23, s49
+; VI-NEXT:    v_mov_b32_e32 v15, s48
+; VI-NEXT:    v_mov_b32_e32 v24, s39
+; VI-NEXT:    v_mov_b32_e32 v16, s38
+; VI-NEXT:    v_mov_b32_e32 v26, s37
+; VI-NEXT:    v_mov_b32_e32 v17, s36
+; VI-NEXT:    v_mov_b32_e32 v29, s35
+; VI-NEXT:    v_mov_b32_e32 v19, s34
 ; VI-NEXT:    v_mov_b32_e32 v33, s16
 ; VI-NEXT:    v_mov_b32_e32 v25, s17
 ; VI-NEXT:    v_mov_b32_e32 v35, s18
@@ -79013,10 +80103,10 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v10, s89
 ; VI-NEXT:    v_mov_b32_e32 v41, s90
 ; VI-NEXT:    v_mov_b32_e32 v43, s91
-; VI-NEXT:    v_mov_b32_e32 v46, s30
-; VI-NEXT:    v_mov_b32_e32 v56, s31
-; VI-NEXT:    v_mov_b32_e32 v59, s34
-; VI-NEXT:    v_mov_b32_e32 v62, s35
+; VI-NEXT:    v_mov_b32_e32 v46, vcc_lo
+; VI-NEXT:    v_mov_b32_e32 v56, vcc_hi
+; VI-NEXT:    v_mov_b32_e32 v59, s30
+; VI-NEXT:    v_mov_b32_e32 v62, s31
 ; VI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
 ; VI-NEXT:    v_mov_b32_e32 v52, s63
 ; VI-NEXT:    v_mov_b32_e32 v54, s78
@@ -79040,7 +80130,7 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v6, s10
 ; VI-NEXT:    v_mov_b32_e32 v7, s8
 ; VI-NEXT:    v_mov_b32_e32 v8, s6
-; VI-NEXT:  .LBB105_5: ; %end
+; VI-NEXT:  .LBB105_6: ; %end
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; VI-NEXT:    v_perm_b32 v8, v18, v8, s4
 ; VI-NEXT:    v_perm_b32 v1, v33, v1, s4
@@ -79128,10 +80218,8 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; VI-NEXT:    buffer_load_dword v1, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:60 ; 4-byte Folded Reload
 ; VI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload
-; VI-NEXT:    v_readlane_b32 s30, v63, 18
-; VI-NEXT:    v_readlane_b32 s31, v63, 19
-; VI-NEXT:    v_readlane_b32 s67, v63, 17
-; VI-NEXT:    v_readlane_b32 s66, v63, 16
+; VI-NEXT:    v_readlane_b32 s30, v63, 16
+; VI-NEXT:    v_readlane_b32 s31, v63, 17
 ; VI-NEXT:    v_readlane_b32 s65, v63, 15
 ; VI-NEXT:    v_readlane_b32 s64, v63, 14
 ; VI-NEXT:    v_readlane_b32 s55, v63, 13
@@ -79215,15 +80303,13 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; GFX9-NEXT:    v_writelane_b32 v63, s51, 9
 ; GFX9-NEXT:    v_writelane_b32 v63, s52, 10
 ; GFX9-NEXT:    v_writelane_b32 v63, s53, 11
-; GFX9-NEXT:    v_writelane_b32 v63, s54, 12
-; GFX9-NEXT:    v_writelane_b32 v63, s55, 13
-; GFX9-NEXT:    v_writelane_b32 v63, s30, 14
-; GFX9-NEXT:    v_writelane_b32 v63, s31, 15
+; GFX9-NEXT:    v_writelane_b32 v63, s30, 12
+; GFX9-NEXT:    v_writelane_b32 v63, s31, 13
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v3
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v2
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v1
-; GFX9-NEXT:    s_cbranch_scc0 .LBB105_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB105_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s56, s5, 24
 ; GFX9-NEXT:    s_lshr_b32 s57, s5, 16
@@ -79249,22 +80335,22 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b32 s93, s23, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s23, 8
 ; GFX9-NEXT:    s_lshr_b32 s94, s22, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s22, 8
-; GFX9-NEXT:    s_lshr_b32 s31, s21, 24
-; GFX9-NEXT:    s_lshr_b32 s34, s21, 16
-; GFX9-NEXT:    s_lshr_b32 s36, s21, 8
-; GFX9-NEXT:    s_lshr_b32 s35, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s37, s20, 8
-; GFX9-NEXT:    s_lshr_b32 s38, s19, 24
-; GFX9-NEXT:    s_lshr_b32 s39, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s49, s19, 8
-; GFX9-NEXT:    s_lshr_b32 s48, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s50, s18, 8
-; GFX9-NEXT:    s_lshr_b32 s51, s17, 24
-; GFX9-NEXT:    s_lshr_b32 s52, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s54, s17, 8
-; GFX9-NEXT:    s_lshr_b32 s53, s16, 16
-; GFX9-NEXT:    s_lshr_b32 s55, s16, 8
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s22, 8
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s21, 24
+; GFX9-NEXT:    s_lshr_b32 s30, s21, 16
+; GFX9-NEXT:    s_lshr_b32 s34, s21, 8
+; GFX9-NEXT:    s_lshr_b32 s31, s20, 16
+; GFX9-NEXT:    s_lshr_b32 s35, s20, 8
+; GFX9-NEXT:    s_lshr_b32 s36, s19, 24
+; GFX9-NEXT:    s_lshr_b32 s37, s19, 16
+; GFX9-NEXT:    s_lshr_b32 s39, s19, 8
+; GFX9-NEXT:    s_lshr_b32 s38, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s48, s18, 8
+; GFX9-NEXT:    s_lshr_b32 s49, s17, 24
+; GFX9-NEXT:    s_lshr_b32 s50, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s52, s17, 8
+; GFX9-NEXT:    s_lshr_b32 s51, s16, 16
+; GFX9-NEXT:    s_lshr_b32 s53, s16, 8
 ; GFX9-NEXT:    s_lshr_b64 s[44:45], s[4:5], 24
 ; GFX9-NEXT:    s_lshr_b64 s[42:43], s[28:29], 24
 ; GFX9-NEXT:    s_lshr_b64 s[40:41], s[26:27], 24
@@ -79273,8 +80359,64 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b64 s[10:11], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB105_4
-; GFX9-NEXT:  .LBB105_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[46:47], 0
+; GFX9-NEXT:    s_branch .LBB105_3
+; GFX9-NEXT:  .LBB105_2:
+; GFX9-NEXT:    s_mov_b64 s[46:47], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr53
+; GFX9-NEXT:    ; implicit-def: $sgpr51
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr52
+; GFX9-NEXT:    ; implicit-def: $sgpr50
+; GFX9-NEXT:    ; implicit-def: $sgpr49
+; GFX9-NEXT:    ; implicit-def: $sgpr48
+; GFX9-NEXT:    ; implicit-def: $sgpr38
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr39
+; GFX9-NEXT:    ; implicit-def: $sgpr37
+; GFX9-NEXT:    ; implicit-def: $sgpr36
+; GFX9-NEXT:    ; implicit-def: $sgpr35
+; GFX9-NEXT:    ; implicit-def: $sgpr31
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr34
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_hi
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:  .LBB105_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; GFX9-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB105_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v19, s17, v1 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v18, s16, v1 op_sel_hi:[1,0]
@@ -79346,58 +80488,8 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v62, 8, v19
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v16, 16, v18
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v15, 8, v18
-; GFX9-NEXT:    s_branch .LBB105_5
-; GFX9-NEXT:  .LBB105_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr55
-; GFX9-NEXT:    ; implicit-def: $sgpr53
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr54
-; GFX9-NEXT:    ; implicit-def: $sgpr52
-; GFX9-NEXT:    ; implicit-def: $sgpr51
-; GFX9-NEXT:    ; implicit-def: $sgpr50
-; GFX9-NEXT:    ; implicit-def: $sgpr48
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr49
-; GFX9-NEXT:    ; implicit-def: $sgpr39
-; GFX9-NEXT:    ; implicit-def: $sgpr38
-; GFX9-NEXT:    ; implicit-def: $sgpr37
-; GFX9-NEXT:    ; implicit-def: $sgpr35
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr36
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr31
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    s_branch .LBB105_2
-; GFX9-NEXT:  .LBB105_4:
+; GFX9-NEXT:    s_branch .LBB105_6
+; GFX9-NEXT:  .LBB105_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s44
 ; GFX9-NEXT:    buffer_store_dword v20, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_nop 0
@@ -79419,22 +80511,22 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s29
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s4
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s5
-; GFX9-NEXT:    v_mov_b32_e32 v15, s55
-; GFX9-NEXT:    v_mov_b32_e32 v16, s53
-; GFX9-NEXT:    v_mov_b32_e32 v62, s54
-; GFX9-NEXT:    v_mov_b32_e32 v59, s52
-; GFX9-NEXT:    v_mov_b32_e32 v60, s51
-; GFX9-NEXT:    v_mov_b32_e32 v58, s50
-; GFX9-NEXT:    v_mov_b32_e32 v61, s48
-; GFX9-NEXT:    v_mov_b32_e32 v57, s49
-; GFX9-NEXT:    v_mov_b32_e32 v47, s39
-; GFX9-NEXT:    v_mov_b32_e32 v56, s38
-; GFX9-NEXT:    v_mov_b32_e32 v46, s37
-; GFX9-NEXT:    v_mov_b32_e32 v45, s35
-; GFX9-NEXT:    v_mov_b32_e32 v44, s36
-; GFX9-NEXT:    v_mov_b32_e32 v42, s34
-; GFX9-NEXT:    v_mov_b32_e32 v43, s31
-; GFX9-NEXT:    v_mov_b32_e32 v41, s30
+; GFX9-NEXT:    v_mov_b32_e32 v15, s53
+; GFX9-NEXT:    v_mov_b32_e32 v16, s51
+; GFX9-NEXT:    v_mov_b32_e32 v62, s52
+; GFX9-NEXT:    v_mov_b32_e32 v59, s50
+; GFX9-NEXT:    v_mov_b32_e32 v60, s49
+; GFX9-NEXT:    v_mov_b32_e32 v58, s48
+; GFX9-NEXT:    v_mov_b32_e32 v61, s38
+; GFX9-NEXT:    v_mov_b32_e32 v57, s39
+; GFX9-NEXT:    v_mov_b32_e32 v47, s37
+; GFX9-NEXT:    v_mov_b32_e32 v56, s36
+; GFX9-NEXT:    v_mov_b32_e32 v46, s35
+; GFX9-NEXT:    v_mov_b32_e32 v45, s31
+; GFX9-NEXT:    v_mov_b32_e32 v44, s34
+; GFX9-NEXT:    v_mov_b32_e32 v42, s30
+; GFX9-NEXT:    v_mov_b32_e32 v43, vcc_hi
+; GFX9-NEXT:    v_mov_b32_e32 v41, vcc_lo
 ; GFX9-NEXT:    v_mov_b32_e32 v40, s94
 ; GFX9-NEXT:    v_mov_b32_e32 v55, s95
 ; GFX9-NEXT:    v_mov_b32_e32 v53, s93
@@ -79468,7 +80560,7 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; GFX9-NEXT:    buffer_store_dword v21, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s40
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s14
-; GFX9-NEXT:  .LBB105_5: ; %end
+; GFX9-NEXT:  .LBB105_6: ; %end
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; GFX9-NEXT:    v_perm_b32 v16, v16, v25, s4
 ; GFX9-NEXT:    v_perm_b32 v15, v18, v15, s4
@@ -79535,10 +80627,8 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; GFX9-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:72 ; 4-byte Folded Reload
 ; GFX9-NEXT:    v_perm_b32 v3, v3, v34, s4
 ; GFX9-NEXT:    v_perm_b32 v1, v1, v29, s4
-; GFX9-NEXT:    v_readlane_b32 s30, v63, 14
-; GFX9-NEXT:    v_readlane_b32 s31, v63, 15
-; GFX9-NEXT:    v_readlane_b32 s55, v63, 13
-; GFX9-NEXT:    v_readlane_b32 s54, v63, 12
+; GFX9-NEXT:    v_readlane_b32 s30, v63, 12
+; GFX9-NEXT:    v_readlane_b32 s31, v63, 13
 ; GFX9-NEXT:    v_readlane_b32 s53, v63, 11
 ; GFX9-NEXT:    v_readlane_b32 s52, v63, 10
 ; GFX9-NEXT:    v_readlane_b32 s51, v63, 9
@@ -79608,12 +80698,11 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; GFX11-NEXT:    v_writelane_b32 v40, s38, 4
 ; GFX11-NEXT:    v_writelane_b32 v40, s39, 5
 ; GFX11-NEXT:    v_writelane_b32 v40, s48, 6
-; GFX11-NEXT:    v_writelane_b32 v40, s49, 7
-; GFX11-NEXT:    v_writelane_b32 v40, s30, 8
-; GFX11-NEXT:    v_writelane_b32 v40, s31, 9
+; GFX11-NEXT:    v_writelane_b32 v40, s30, 7
+; GFX11-NEXT:    v_writelane_b32 v40, s31, 8
 ; GFX11-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-NEXT:    s_mov_b32 s42, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB105_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB105_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s43, s27, 24
 ; GFX11-NEXT:    s_lshr_b32 s44, s27, 16
@@ -79644,17 +80733,17 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b32 s93, s17, 16
 ; GFX11-NEXT:    s_lshr_b32 s95, s17, 8
 ; GFX11-NEXT:    s_lshr_b32 s94, s16, 16
-; GFX11-NEXT:    s_lshr_b32 vcc_hi, s16, 8
-; GFX11-NEXT:    s_lshr_b32 s30, s3, 24
-; GFX11-NEXT:    s_lshr_b32 s31, s3, 16
-; GFX11-NEXT:    s_lshr_b32 s35, s3, 8
-; GFX11-NEXT:    s_lshr_b32 s34, s2, 16
-; GFX11-NEXT:    s_lshr_b32 s36, s2, 8
-; GFX11-NEXT:    s_lshr_b32 s37, s1, 24
-; GFX11-NEXT:    s_lshr_b32 s38, s1, 16
-; GFX11-NEXT:    s_lshr_b32 s48, s1, 8
-; GFX11-NEXT:    s_lshr_b32 s39, s0, 16
-; GFX11-NEXT:    s_lshr_b32 s49, s0, 8
+; GFX11-NEXT:    s_lshr_b32 vcc_lo, s16, 8
+; GFX11-NEXT:    s_lshr_b32 vcc_hi, s3, 24
+; GFX11-NEXT:    s_lshr_b32 s30, s3, 16
+; GFX11-NEXT:    s_lshr_b32 s34, s3, 8
+; GFX11-NEXT:    s_lshr_b32 s31, s2, 16
+; GFX11-NEXT:    s_lshr_b32 s35, s2, 8
+; GFX11-NEXT:    s_lshr_b32 s36, s1, 24
+; GFX11-NEXT:    s_lshr_b32 s37, s1, 16
+; GFX11-NEXT:    s_lshr_b32 s39, s1, 8
+; GFX11-NEXT:    s_lshr_b32 s38, s0, 16
+; GFX11-NEXT:    s_lshr_b32 s48, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[40:41], s[26:27], 24
 ; GFX11-NEXT:    s_lshr_b64 s[28:29], s[24:25], 24
 ; GFX11-NEXT:    s_lshr_b64 s[14:15], s[22:23], 24
@@ -79663,9 +80752,64 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-NEXT:    s_cbranch_vccnz .LBB105_4
-; GFX11-NEXT:  .LBB105_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB105_3
+; GFX11-NEXT:  .LBB105_2:
+; GFX11-NEXT:    s_mov_b32 s42, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr48
+; GFX11-NEXT:    ; implicit-def: $sgpr38
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr39
+; GFX11-NEXT:    ; implicit-def: $sgpr37
+; GFX11-NEXT:    ; implicit-def: $sgpr36
+; GFX11-NEXT:    ; implicit-def: $sgpr35
+; GFX11-NEXT:    ; implicit-def: $sgpr31
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr34
+; GFX11-NEXT:    ; implicit-def: $sgpr30
+; GFX11-NEXT:    ; implicit-def: $vcc_hi
+; GFX11-NEXT:    ; implicit-def: $vcc_lo
+; GFX11-NEXT:    ; implicit-def: $sgpr94
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr95
+; GFX11-NEXT:    ; implicit-def: $sgpr93
+; GFX11-NEXT:    ; implicit-def: $sgpr92
+; GFX11-NEXT:    ; implicit-def: $sgpr91
+; GFX11-NEXT:    ; implicit-def: $sgpr89
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr90
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr79
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr28
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:  .LBB105_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s42, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB105_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v4, 0x200, s25 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v3, 0x200, s24 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v6, 0x200, s23 op_sel_hi:[0,1]
@@ -79730,58 +80874,8 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v83, 8, v18
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v96, 16, v17
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v85, 8, v17
-; GFX11-NEXT:    s_branch .LBB105_5
-; GFX11-NEXT:  .LBB105_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr49
-; GFX11-NEXT:    ; implicit-def: $sgpr39
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr48
-; GFX11-NEXT:    ; implicit-def: $sgpr38
-; GFX11-NEXT:    ; implicit-def: $sgpr37
-; GFX11-NEXT:    ; implicit-def: $sgpr36
-; GFX11-NEXT:    ; implicit-def: $sgpr34
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr35
-; GFX11-NEXT:    ; implicit-def: $sgpr31
-; GFX11-NEXT:    ; implicit-def: $sgpr30
-; GFX11-NEXT:    ; implicit-def: $vcc_hi
-; GFX11-NEXT:    ; implicit-def: $sgpr94
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr95
-; GFX11-NEXT:    ; implicit-def: $sgpr93
-; GFX11-NEXT:    ; implicit-def: $sgpr92
-; GFX11-NEXT:    ; implicit-def: $sgpr91
-; GFX11-NEXT:    ; implicit-def: $sgpr89
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr90
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr79
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr28
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    s_branch .LBB105_2
-; GFX11-NEXT:  .LBB105_4:
+; GFX11-NEXT:    s_branch .LBB105_6
+; GFX11-NEXT:  .LBB105_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v17, s0 :: v_dual_mov_b32 v18, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v13, s2 :: v_dual_mov_b32 v14, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v11, s16 :: v_dual_mov_b32 v12, s17
@@ -79790,12 +80884,12 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v5, s22 :: v_dual_mov_b32 v6, s23
 ; GFX11-NEXT:    v_dual_mov_b32 v3, s24 :: v_dual_mov_b32 v4, s25
 ; GFX11-NEXT:    v_dual_mov_b32 v1, s26 :: v_dual_mov_b32 v2, s27
-; GFX11-NEXT:    v_dual_mov_b32 v85, s49 :: v_dual_mov_b32 v96, s39
-; GFX11-NEXT:    v_dual_mov_b32 v83, s48 :: v_dual_mov_b32 v86, s38
-; GFX11-NEXT:    v_dual_mov_b32 v87, s37 :: v_dual_mov_b32 v82, s36
-; GFX11-NEXT:    v_dual_mov_b32 v84, s34 :: v_dual_mov_b32 v71, s35
-; GFX11-NEXT:    v_dual_mov_b32 v80, s31 :: v_dual_mov_b32 v81, s30
-; GFX11-NEXT:    v_dual_mov_b32 v67, vcc_hi :: v_dual_mov_b32 v70, s94
+; GFX11-NEXT:    v_dual_mov_b32 v85, s48 :: v_dual_mov_b32 v96, s38
+; GFX11-NEXT:    v_dual_mov_b32 v83, s39 :: v_dual_mov_b32 v86, s37
+; GFX11-NEXT:    v_dual_mov_b32 v87, s36 :: v_dual_mov_b32 v82, s35
+; GFX11-NEXT:    v_dual_mov_b32 v84, s31 :: v_dual_mov_b32 v71, s34
+; GFX11-NEXT:    v_dual_mov_b32 v80, s30 :: v_dual_mov_b32 v81, vcc_hi
+; GFX11-NEXT:    v_dual_mov_b32 v67, vcc_lo :: v_dual_mov_b32 v70, s94
 ; GFX11-NEXT:    v_dual_mov_b32 v65, s95 :: v_dual_mov_b32 v68, s93
 ; GFX11-NEXT:    v_dual_mov_b32 v69, s92 :: v_dual_mov_b32 v64, s91
 ; GFX11-NEXT:    v_dual_mov_b32 v66, s89 :: v_dual_mov_b32 v53, s90
@@ -79814,7 +80908,7 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s14 :: v_dual_mov_b32 v21, s12
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s10 :: v_dual_mov_b32 v23, s8
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s6 :: v_dual_mov_b32 v25, s4
-; GFX11-NEXT:  .LBB105_5: ; %end
+; GFX11-NEXT:  .LBB105_6: ; %end
 ; GFX11-NEXT:    v_perm_b32 v86, v86, v87, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_perm_b32 v24, v84, v24, 0xc0c0004
@@ -79880,14 +80974,13 @@ define inreg <64 x i8> @bitcast_v32f16_to_v64i8_scalar(<32 x half> inreg %a, i32
 ; GFX11-NEXT:    v_or_b32_e32 v2, v4, v17
 ; GFX11-NEXT:    v_or_b32_e32 v3, v19, v15
 ; GFX11-NEXT:    v_or_b32_e32 v4, v16, v18
-; GFX11-NEXT:    v_readlane_b32 s30, v40, 8
+; GFX11-NEXT:    v_readlane_b32 s30, v40, 7
 ; GFX11-NEXT:    s_clause 0x3
 ; GFX11-NEXT:    scratch_store_b128 v0, v[80:83], off
 ; GFX11-NEXT:    scratch_store_b128 v0, v[11:14], off offset:16
 ; GFX11-NEXT:    scratch_store_b128 v0, v[7:10], off offset:32
 ; GFX11-NEXT:    scratch_store_b128 v0, v[1:4], off offset:48
-; GFX11-NEXT:    v_readlane_b32 s31, v40, 9
-; GFX11-NEXT:    v_readlane_b32 s49, v40, 7
+; GFX11-NEXT:    v_readlane_b32 s31, v40, 8
 ; GFX11-NEXT:    v_readlane_b32 s48, v40, 6
 ; GFX11-NEXT:    v_readlane_b32 s39, v40, 5
 ; GFX11-NEXT:    v_readlane_b32 s38, v40, 4
@@ -82468,276 +83561,274 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32
 ; SI-NEXT:    ; implicit-def: $vgpr44 : SGPR spill to VGPR lane
-; SI-NEXT:    v_readfirstlane_b32 s4, v16
-; SI-NEXT:    v_writelane_b32 v44, s23, 0
-; SI-NEXT:    v_writelane_b32 v44, s22, 1
-; SI-NEXT:    v_writelane_b32 v44, s21, 2
-; SI-NEXT:    v_writelane_b32 v44, s20, 3
-; SI-NEXT:    v_writelane_b32 v44, s4, 4
-; SI-NEXT:    s_mov_b32 s82, s29
-; SI-NEXT:    s_mov_b32 s85, s25
-; SI-NEXT:    s_mov_b32 s29, s24
-; SI-NEXT:    s_mov_b32 s44, s16
-; SI-NEXT:    v_readfirstlane_b32 s64, v30
+; SI-NEXT:    s_mov_b32 s96, s27
+; SI-NEXT:    v_writelane_b32 v44, s28, 0
+; SI-NEXT:    v_writelane_b32 v44, s26, 1
+; SI-NEXT:    v_writelane_b32 v44, s23, 2
+; SI-NEXT:    v_writelane_b32 v44, s22, 3
+; SI-NEXT:    v_writelane_b32 v44, s16, 4
+; SI-NEXT:    s_mov_b32 s27, s25
+; SI-NEXT:    s_mov_b32 s85, s24
+; SI-NEXT:    v_readfirstlane_b32 s69, v30
 ; SI-NEXT:    v_readfirstlane_b32 s55, v29
-; SI-NEXT:    v_readfirstlane_b32 s66, v28
-; SI-NEXT:    v_readfirstlane_b32 s69, v27
-; SI-NEXT:    v_readfirstlane_b32 s68, v26
-; SI-NEXT:    v_readfirstlane_b32 s39, v25
-; SI-NEXT:    v_readfirstlane_b32 s50, v24
-; SI-NEXT:    v_readfirstlane_b32 s65, v23
-; SI-NEXT:    v_readfirstlane_b32 s51, v22
-; SI-NEXT:    v_readfirstlane_b32 s37, v21
-; SI-NEXT:    v_readfirstlane_b32 s53, v20
-; SI-NEXT:    v_readfirstlane_b32 s88, v19
-; SI-NEXT:    v_readfirstlane_b32 s31, v18
-; SI-NEXT:    v_readfirstlane_b32 s95, v17
-; SI-NEXT:    v_readfirstlane_b32 s48, v15
-; SI-NEXT:    v_readfirstlane_b32 s35, v14
+; SI-NEXT:    v_readfirstlane_b32 s65, v28
+; SI-NEXT:    v_readfirstlane_b32 s71, v27
+; SI-NEXT:    v_readfirstlane_b32 s67, v26
+; SI-NEXT:    v_readfirstlane_b32 s38, v25
+; SI-NEXT:    v_readfirstlane_b32 s68, v24
+; SI-NEXT:    v_readfirstlane_b32 s49, v23
+; SI-NEXT:    v_readfirstlane_b32 s94, v22
+; SI-NEXT:    v_readfirstlane_b32 s50, v21
+; SI-NEXT:    v_readfirstlane_b32 s88, v20
+; SI-NEXT:    v_readfirstlane_b32 s66, v19
+; SI-NEXT:    v_readfirstlane_b32 s54, v18
+; SI-NEXT:    v_readfirstlane_b32 s86, v17
+; SI-NEXT:    v_readfirstlane_b32 s31, v16
+; SI-NEXT:    v_readfirstlane_b32 s37, v15
+; SI-NEXT:    v_readfirstlane_b32 s39, v14
 ; SI-NEXT:    v_readfirstlane_b32 s34, v13
-; SI-NEXT:    v_readfirstlane_b32 s52, v12
-; SI-NEXT:    v_readfirstlane_b32 s16, v11
-; SI-NEXT:    v_readfirstlane_b32 s96, v10
-; SI-NEXT:    v_readfirstlane_b32 s20, v9
-; SI-NEXT:    v_readfirstlane_b32 s89, v8
-; SI-NEXT:    v_readfirstlane_b32 s92, v7
+; SI-NEXT:    v_readfirstlane_b32 s36, v12
+; SI-NEXT:    v_readfirstlane_b32 s53, v11
+; SI-NEXT:    v_readfirstlane_b32 s64, v10
+; SI-NEXT:    v_readfirstlane_b32 s89, v9
+; SI-NEXT:    v_readfirstlane_b32 s90, v8
+; SI-NEXT:    v_readfirstlane_b32 s16, v7
 ; SI-NEXT:    v_readfirstlane_b32 s91, v6
-; SI-NEXT:    v_readfirstlane_b32 s93, v5
-; SI-NEXT:    v_readfirstlane_b32 s30, v4
-; SI-NEXT:    v_readfirstlane_b32 s38, v3
-; SI-NEXT:    v_readfirstlane_b32 s49, v2
-; SI-NEXT:    v_readfirstlane_b32 s54, v1
-; SI-NEXT:    v_readfirstlane_b32 s90, v0
+; SI-NEXT:    v_readfirstlane_b32 s28, v5
+; SI-NEXT:    v_readfirstlane_b32 s93, v4
+; SI-NEXT:    v_readfirstlane_b32 s35, v3
+; SI-NEXT:    v_readfirstlane_b32 s51, v2
+; SI-NEXT:    v_readfirstlane_b32 s23, v1
+; SI-NEXT:    v_readfirstlane_b32 s79, v0
 ; SI-NEXT:    s_waitcnt vmcnt(14)
 ; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v31
+; SI-NEXT:    v_readfirstlane_b32 s58, v32
 ; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
-; SI-NEXT:    v_readfirstlane_b32 s56, v32
-; SI-NEXT:    v_readfirstlane_b32 s86, v33
-; SI-NEXT:    v_readfirstlane_b32 s58, v34
-; SI-NEXT:    v_readfirstlane_b32 s99, v35
-; SI-NEXT:    v_readfirstlane_b32 s24, v36
+; SI-NEXT:    v_readfirstlane_b32 s84, v33
+; SI-NEXT:    v_readfirstlane_b32 s47, v34
+; SI-NEXT:    v_readfirstlane_b32 s30, v35
+; SI-NEXT:    v_readfirstlane_b32 s25, v36
 ; SI-NEXT:    s_waitcnt vmcnt(13)
-; SI-NEXT:    v_readfirstlane_b32 s78, v37
+; SI-NEXT:    v_readfirstlane_b32 s98, v37
 ; SI-NEXT:    s_waitcnt vmcnt(12)
-; SI-NEXT:    v_readfirstlane_b32 s25, v38
+; SI-NEXT:    v_readfirstlane_b32 s26, v38
 ; SI-NEXT:    s_waitcnt vmcnt(11)
-; SI-NEXT:    v_readfirstlane_b32 s21, v39
+; SI-NEXT:    v_readfirstlane_b32 s22, v39
 ; SI-NEXT:    s_waitcnt vmcnt(10)
-; SI-NEXT:    v_readfirstlane_b32 s22, v48
+; SI-NEXT:    v_readfirstlane_b32 s99, v48
 ; SI-NEXT:    s_waitcnt vmcnt(9)
-; SI-NEXT:    v_readfirstlane_b32 s23, v49
-; SI-NEXT:    s_waitcnt vmcnt(8)
-; SI-NEXT:    v_readfirstlane_b32 s87, v50
-; SI-NEXT:    s_waitcnt vmcnt(6)
-; SI-NEXT:    v_readfirstlane_b32 s47, v52
-; SI-NEXT:    v_readfirstlane_b32 s83, v51
+; SI-NEXT:    v_readfirstlane_b32 s70, v49
+; SI-NEXT:    s_waitcnt vmcnt(7)
+; SI-NEXT:    v_readfirstlane_b32 s56, v51
+; SI-NEXT:    v_writelane_b32 v44, s56, 5
 ; SI-NEXT:    s_waitcnt vmcnt(5)
-; SI-NEXT:    v_readfirstlane_b32 s84, v53
+; SI-NEXT:    v_readfirstlane_b32 s57, v53
+; SI-NEXT:    v_writelane_b32 v44, s57, 6
+; SI-NEXT:    v_readfirstlane_b32 s59, v52
+; SI-NEXT:    v_writelane_b32 v44, s58, 7
+; SI-NEXT:    v_readfirstlane_b32 s78, v50
 ; SI-NEXT:    s_waitcnt vmcnt(4)
-; SI-NEXT:    v_readfirstlane_b32 s36, v54
+; SI-NEXT:    v_readfirstlane_b32 s44, v54
 ; SI-NEXT:    s_waitcnt vmcnt(3)
-; SI-NEXT:    v_readfirstlane_b32 s79, v55
+; SI-NEXT:    v_readfirstlane_b32 s87, v55
 ; SI-NEXT:    s_waitcnt vmcnt(2)
-; SI-NEXT:    v_readfirstlane_b32 s71, v40
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v40
 ; SI-NEXT:    s_waitcnt vmcnt(1)
-; SI-NEXT:    v_readfirstlane_b32 s98, v41
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v41
 ; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_readfirstlane_b32 s81, v42
-; SI-NEXT:    v_writelane_b32 v44, s47, 5
-; SI-NEXT:    v_writelane_b32 v44, s58, 6
+; SI-NEXT:    v_readfirstlane_b32 s83, v42
+; SI-NEXT:    v_writelane_b32 v44, s59, 8
+; SI-NEXT:    v_writelane_b32 v44, s47, 9
 ; SI-NEXT:    s_cbranch_scc0 .LBB107_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_and_b32 s4, s44, 0xff
+; SI-NEXT:    v_readlane_b32 s4, v44, 4
+; SI-NEXT:    s_and_b32 s4, s4, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
 ; SI-NEXT:    s_or_b32 s12, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_lshl_b32 s5, s19, 24
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s5, s29, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s85, 8
+; SI-NEXT:    s_and_b32 s5, s85, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s27, 8
 ; SI-NEXT:    s_or_b32 s13, s5, s6
-; SI-NEXT:    s_and_b32 s5, s26, 0xff
+; SI-NEXT:    v_readlane_b32 s5, v44, 1
+; SI-NEXT:    s_and_b32 s5, s5, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
-; SI-NEXT:    s_lshl_b32 s6, s27, 24
+; SI-NEXT:    s_lshl_b32 s6, s96, 24
 ; SI-NEXT:    s_or_b32 s6, s6, s5
-; SI-NEXT:    s_and_b32 s5, s49, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s38, 8
+; SI-NEXT:    s_and_b32 s5, s51, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s35, 8
 ; SI-NEXT:    s_or_b32 s14, s5, s7
-; SI-NEXT:    s_and_b32 s5, s30, 0xff
+; SI-NEXT:    s_and_b32 s5, s93, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
-; SI-NEXT:    s_lshl_b32 s7, s93, 24
+; SI-NEXT:    s_lshl_b32 s7, s28, 24
 ; SI-NEXT:    s_or_b32 s8, s7, s5
-; SI-NEXT:    s_and_b32 s5, s96, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s16, 8
+; SI-NEXT:    s_and_b32 s5, s64, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s53, 8
 ; SI-NEXT:    s_or_b32 s15, s5, s7
-; SI-NEXT:    s_and_b32 s5, s52, 0xff
+; SI-NEXT:    s_and_b32 s5, s36, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_lshl_b32 s7, s34, 24
 ; SI-NEXT:    s_or_b32 s10, s7, s5
-; SI-NEXT:    s_and_b32 s5, s31, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s88, 8
+; SI-NEXT:    s_and_b32 s5, s54, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s66, 8
 ; SI-NEXT:    s_or_b32 s40, s5, s7
-; SI-NEXT:    s_and_b32 s5, s53, 0xff
+; SI-NEXT:    s_and_b32 s5, s88, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
-; SI-NEXT:    s_lshl_b32 s7, s37, 24
+; SI-NEXT:    s_lshl_b32 s7, s50, 24
 ; SI-NEXT:    s_or_b32 s60, s7, s5
-; SI-NEXT:    s_and_b32 s5, s68, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s69, 8
+; SI-NEXT:    s_and_b32 s5, s67, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s71, 8
 ; SI-NEXT:    s_or_b32 s41, s5, s7
-; SI-NEXT:    s_and_b32 s5, s66, 0xff
+; SI-NEXT:    s_and_b32 s5, s65, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_lshl_b32 s7, s55, 24
 ; SI-NEXT:    s_or_b32 s62, s7, s5
-; SI-NEXT:    s_and_b32 s5, s79, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s36, 8
+; SI-NEXT:    s_and_b32 s5, s87, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s44, 8
 ; SI-NEXT:    s_or_b32 s42, s5, s7
-; SI-NEXT:    s_and_b32 s5, s21, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s25, 8
+; SI-NEXT:    s_and_b32 s5, s22, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s26, 8
 ; SI-NEXT:    s_or_b32 s43, s5, s7
-; SI-NEXT:    v_readlane_b32 s5, v44, 3
-; SI-NEXT:    v_readlane_b32 s7, v44, 2
-; SI-NEXT:    s_and_b32 s5, s5, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 8
+; SI-NEXT:    s_and_b32 s5, s20, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s21, 8
 ; SI-NEXT:    s_or_b32 s5, s5, s7
-; SI-NEXT:    v_readlane_b32 s7, v44, 1
+; SI-NEXT:    v_readlane_b32 s7, v44, 3
 ; SI-NEXT:    s_and_b32 s7, s7, 0xff
-; SI-NEXT:    v_readlane_b32 s9, v44, 0
+; SI-NEXT:    v_readlane_b32 s9, v44, 2
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
 ; SI-NEXT:    s_lshl_b32 s9, s9, 24
-; SI-NEXT:    s_or_b32 s57, s9, s7
-; SI-NEXT:    s_and_b32 s7, s28, 0xff
-; SI-NEXT:    s_lshl_b32 s9, s82, 8
+; SI-NEXT:    s_or_b32 s76, s9, s7
+; SI-NEXT:    v_readlane_b32 s7, v44, 0
+; SI-NEXT:    s_and_b32 s7, s7, 0xff
+; SI-NEXT:    s_lshl_b32 s9, s29, 8
 ; SI-NEXT:    s_or_b32 s7, s7, s9
-; SI-NEXT:    s_and_b32 s9, s90, 0xff
+; SI-NEXT:    s_and_b32 s9, s79, 0xff
 ; SI-NEXT:    s_lshl_b32 s9, s9, 16
-; SI-NEXT:    s_lshl_b32 s11, s54, 24
+; SI-NEXT:    s_lshl_b32 s11, s23, 24
 ; SI-NEXT:    s_or_b32 s77, s11, s9
 ; SI-NEXT:    s_and_b32 s9, s91, 0xff
-; SI-NEXT:    s_lshl_b32 s11, s92, 8
+; SI-NEXT:    s_lshl_b32 s11, s16, 8
 ; SI-NEXT:    s_or_b32 s9, s9, s11
-; SI-NEXT:    s_and_b32 s11, s89, 0xff
-; SI-NEXT:    s_mov_b32 s72, s44
+; SI-NEXT:    s_and_b32 s11, s90, 0xff
+; SI-NEXT:    s_mov_b32 s24, s85
 ; SI-NEXT:    s_lshl_b32 s11, s11, 16
-; SI-NEXT:    s_lshl_b32 s44, s20, 24
-; SI-NEXT:    s_mov_b32 s59, s16
-; SI-NEXT:    s_or_b32 vcc_lo, s44, s11
-; SI-NEXT:    s_and_b32 s11, s35, 0xff
-; SI-NEXT:    s_lshl_b32 s44, s48, 8
-; SI-NEXT:    v_readlane_b32 s16, v44, 4
+; SI-NEXT:    s_mov_b32 s85, s26
+; SI-NEXT:    s_mov_b32 s26, s44
+; SI-NEXT:    s_lshl_b32 s44, s89, 24
+; SI-NEXT:    v_writelane_b32 v44, s55, 10
+; SI-NEXT:    s_mov_b32 s55, s34
+; SI-NEXT:    s_mov_b32 s34, s23
+; SI-NEXT:    s_or_b32 s23, s44, s11
+; SI-NEXT:    s_and_b32 s11, s39, 0xff
+; SI-NEXT:    s_lshl_b32 s44, s37, 8
 ; SI-NEXT:    s_or_b32 s11, s11, s44
-; SI-NEXT:    s_and_b32 s44, s16, 0xff
+; SI-NEXT:    s_and_b32 s44, s31, 0xff
 ; SI-NEXT:    s_lshl_b32 s44, s44, 16
-; SI-NEXT:    s_lshl_b32 s45, s95, 24
-; SI-NEXT:    s_or_b32 vcc_hi, s45, s44
-; SI-NEXT:    s_and_b32 s44, s51, 0xff
-; SI-NEXT:    s_lshl_b32 s45, s65, 8
+; SI-NEXT:    s_lshl_b32 s45, s86, 24
+; SI-NEXT:    v_writelane_b32 v44, s67, 11
+; SI-NEXT:    v_writelane_b32 v44, s50, 12
+; SI-NEXT:    s_mov_b32 s50, s21
+; SI-NEXT:    s_or_b32 s21, s45, s44
+; SI-NEXT:    s_and_b32 s44, s94, 0xff
+; SI-NEXT:    s_lshl_b32 s45, s49, 8
 ; SI-NEXT:    s_or_b32 s44, s44, s45
-; SI-NEXT:    s_and_b32 s45, s50, 0xff
+; SI-NEXT:    s_and_b32 s45, s68, 0xff
 ; SI-NEXT:    s_lshl_b32 s45, s45, 16
-; SI-NEXT:    s_lshl_b32 s46, s39, 24
+; SI-NEXT:    s_lshl_b32 s46, s38, 24
 ; SI-NEXT:    s_and_b32 s44, s44, 0xffff
-; SI-NEXT:    s_mov_b32 s67, s20
+; SI-NEXT:    s_mov_b32 s95, s20
 ; SI-NEXT:    s_or_b32 s20, s46, s45
 ; SI-NEXT:    s_or_b32 s61, s44, s20
-; SI-NEXT:    s_and_b32 s44, s64, 0xff
-; SI-NEXT:    s_lshl_b32 s45, s81, 8
+; SI-NEXT:    s_and_b32 s44, s69, 0xff
+; SI-NEXT:    s_lshl_b32 s45, s83, 8
 ; SI-NEXT:    s_or_b32 s44, s44, s45
-; SI-NEXT:    s_and_b32 s45, s98, 0xff
+; SI-NEXT:    s_and_b32 s45, vcc_hi, 0xff
 ; SI-NEXT:    s_lshl_b32 s45, s45, 16
-; SI-NEXT:    s_lshl_b32 s46, s71, 24
+; SI-NEXT:    s_lshl_b32 s46, vcc_lo, 24
+; SI-NEXT:    s_mov_b32 s52, s35
+; SI-NEXT:    s_mov_b32 s35, s24
 ; SI-NEXT:    s_and_b32 s44, s44, 0xffff
-; SI-NEXT:    s_mov_b32 s70, s39
-; SI-NEXT:    s_mov_b32 s39, s91
-; SI-NEXT:    s_mov_b32 s91, s82
-; SI-NEXT:    s_mov_b32 s82, s88
-; SI-NEXT:    s_mov_b32 s88, s18
+; SI-NEXT:    s_mov_b32 s24, s69
+; SI-NEXT:    s_mov_b32 s69, s53
+; SI-NEXT:    s_mov_b32 s53, s31
+; SI-NEXT:    s_mov_b32 s31, s96
+; SI-NEXT:    s_mov_b32 s96, s18
 ; SI-NEXT:    s_or_b32 s18, s46, s45
 ; SI-NEXT:    s_or_b32 s63, s44, s18
-; SI-NEXT:    s_and_b32 s44, s83, 0xff
-; SI-NEXT:    s_lshl_b32 s45, s87, 8
+; SI-NEXT:    s_and_b32 s44, s56, 0xff
+; SI-NEXT:    s_lshl_b32 s45, s78, 8
 ; SI-NEXT:    s_or_b32 s44, s44, s45
-; SI-NEXT:    s_and_b32 s45, s23, 0xff
+; SI-NEXT:    s_and_b32 s45, s70, 0xff
 ; SI-NEXT:    s_lshl_b32 s45, s45, 16
-; SI-NEXT:    s_lshl_b32 s46, s22, 24
-; SI-NEXT:    s_mov_b32 s80, s31
-; SI-NEXT:    s_mov_b32 s31, s53
-; SI-NEXT:    s_mov_b32 s53, s38
-; SI-NEXT:    s_mov_b32 s38, s90
+; SI-NEXT:    s_lshl_b32 s46, s99, 24
+; SI-NEXT:    s_mov_b32 s56, s22
+; SI-NEXT:    s_mov_b32 s22, s87
+; SI-NEXT:    s_mov_b32 s87, s83
+; SI-NEXT:    s_mov_b32 s83, s54
+; SI-NEXT:    s_mov_b32 s54, s39
+; SI-NEXT:    s_mov_b32 s39, s90
 ; SI-NEXT:    s_mov_b32 s90, s19
 ; SI-NEXT:    s_or_b32 s19, s46, s45
-; SI-NEXT:    s_and_b32 s45, s84, 0xff
+; SI-NEXT:    s_and_b32 s45, s57, 0xff
 ; SI-NEXT:    s_lshl_b32 s45, s45, 16
-; SI-NEXT:    s_lshl_b32 s46, s47, 24
+; SI-NEXT:    s_lshl_b32 s46, s59, 24
 ; SI-NEXT:    s_and_b32 s44, s44, 0xffff
-; SI-NEXT:    s_mov_b32 s97, s22
-; SI-NEXT:    s_mov_b32 s22, s55
-; SI-NEXT:    s_mov_b32 s55, s49
-; SI-NEXT:    s_mov_b32 s49, s92
-; SI-NEXT:    s_mov_b32 s92, s72
 ; SI-NEXT:    s_or_b32 s72, s46, s45
 ; SI-NEXT:    s_or_b32 s73, s44, s19
-; SI-NEXT:    s_and_b32 s44, s99, 0xff
-; SI-NEXT:    s_lshl_b32 s45, s58, 8
+; SI-NEXT:    s_and_b32 s44, s30, 0xff
+; SI-NEXT:    s_lshl_b32 s45, s47, 8
 ; SI-NEXT:    s_or_b32 s44, s44, s45
-; SI-NEXT:    s_and_b32 s45, s86, 0xff
-; SI-NEXT:    s_and_b32 s5, s5, 0xffff
+; SI-NEXT:    s_and_b32 s45, s84, 0xff
 ; SI-NEXT:    s_lshl_b32 s45, s45, 16
-; SI-NEXT:    s_lshl_b32 s46, s56, 24
-; SI-NEXT:    s_or_b32 s5, s5, s57
-; SI-NEXT:    s_mov_b32 s76, s56
-; SI-NEXT:    s_mov_b32 s56, s86
-; SI-NEXT:    s_mov_b32 s86, s81
-; SI-NEXT:    s_mov_b32 s81, s65
-; SI-NEXT:    s_mov_b32 s65, s48
-; SI-NEXT:    s_mov_b32 s48, s89
+; SI-NEXT:    s_lshl_b32 s46, s58, 24
+; SI-NEXT:    s_mov_b32 s97, s70
+; SI-NEXT:    s_mov_b32 s70, s66
+; SI-NEXT:    s_mov_b32 s66, s36
+; SI-NEXT:    s_mov_b32 s36, s89
 ; SI-NEXT:    s_mov_b32 s89, s17
 ; SI-NEXT:    s_or_b32 s17, s46, s45
-; SI-NEXT:    s_and_b32 s44, s44, 0xffff
-; SI-NEXT:    s_and_b32 s12, s12, 0xffff
-; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    v_writelane_b32 v44, s68, 11
-; SI-NEXT:    s_mov_b32 s94, s51
-; SI-NEXT:    s_mov_b32 s51, s95
-; SI-NEXT:    s_mov_b32 s95, s27
-; SI-NEXT:    s_or_b32 s75, s44, s17
-; SI-NEXT:    s_mov_b32 s44, s93
-; SI-NEXT:    s_mov_b32 s93, s28
-; SI-NEXT:    s_and_b32 s28, s42, 0xffff
-; SI-NEXT:    s_and_b32 s27, s43, 0xffff
-; SI-NEXT:    s_or_b32 s42, s12, s4
-; SI-NEXT:    s_mov_b32 s43, s5
-; SI-NEXT:    s_lshr_b64 s[4:5], s[4:5], 16
-; SI-NEXT:    s_or_b32 s9, s9, vcc_lo
-; SI-NEXT:    s_and_b32 s45, s78, 0xff
-; SI-NEXT:    v_writelane_b32 v44, s4, 7
+; SI-NEXT:    s_and_b32 s45, s98, 0xff
+; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
+; SI-NEXT:    s_and_b32 s9, s9, 0xffff
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
 ; SI-NEXT:    s_lshl_b32 s45, s45, 16
-; SI-NEXT:    s_lshl_b32 s46, s24, 24
-; SI-NEXT:    v_writelane_b32 v44, s5, 8
-; SI-NEXT:    s_lshr_b64 s[4:5], s[8:9], 16
+; SI-NEXT:    s_lshl_b32 s46, s25, 24
+; SI-NEXT:    s_and_b32 s44, s44, 0xffff
+; SI-NEXT:    s_or_b32 s5, s5, s76
 ; SI-NEXT:    s_or_b32 s7, s7, s77
-; SI-NEXT:    s_or_b32 s11, s11, vcc_hi
-; SI-NEXT:    s_mov_b32 s68, s34
+; SI-NEXT:    s_or_b32 s9, s9, s23
+; SI-NEXT:    s_mov_b32 s67, s27
+; SI-NEXT:    s_or_b32 s11, s11, s21
+; SI-NEXT:    s_mov_b32 s82, s65
+; SI-NEXT:    s_mov_b32 s65, s38
+; SI-NEXT:    s_mov_b32 s38, s91
+; SI-NEXT:    s_mov_b32 s91, s29
 ; SI-NEXT:    s_or_b32 s74, s46, s45
+; SI-NEXT:    s_or_b32 s75, s44, s17
+; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_and_b32 s58, s15, 0xffff
+; SI-NEXT:    s_mov_b32 s48, s16
 ; SI-NEXT:    s_and_b32 s16, s40, 0xffff
-; SI-NEXT:    s_mov_b32 s34, s29
 ; SI-NEXT:    s_and_b32 s29, s41, 0xffff
-; SI-NEXT:    v_writelane_b32 v44, s4, 9
-; SI-NEXT:    s_mov_b32 s45, s78
-; SI-NEXT:    s_mov_b32 s78, s84
-; SI-NEXT:    s_mov_b32 s84, s69
-; SI-NEXT:    s_mov_b32 s69, s59
+; SI-NEXT:    s_mov_b32 s45, s98
+; SI-NEXT:    s_mov_b32 s98, s28
+; SI-NEXT:    s_and_b32 s28, s42, 0xffff
+; SI-NEXT:    s_and_b32 s27, s43, 0xffff
+; SI-NEXT:    s_mov_b32 s44, s93
+; SI-NEXT:    s_or_b32 s42, s12, s4
+; SI-NEXT:    s_mov_b32 s43, s5
+; SI-NEXT:    s_lshr_b64 s[80:81], s[4:5], 16
 ; SI-NEXT:    s_or_b32 s40, s13, s6
 ; SI-NEXT:    s_mov_b32 s41, s7
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[6:7], 16
 ; SI-NEXT:    s_or_b32 s14, s14, s8
 ; SI-NEXT:    s_mov_b32 s15, s9
-; SI-NEXT:    v_writelane_b32 v44, s5, 10
+; SI-NEXT:    s_lshr_b64 s[92:93], s[8:9], 16
 ; SI-NEXT:    s_or_b32 s12, s58, s10
 ; SI-NEXT:    s_mov_b32 s13, s11
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[10:11], 16
@@ -82753,63 +83844,63 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    s_or_b32 s4, s27, s74
 ; SI-NEXT:    s_mov_b32 s5, s75
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[74:75], 16
-; SI-NEXT:    s_mov_b32 s29, s34
-; SI-NEXT:    s_mov_b32 s16, s69
-; SI-NEXT:    s_mov_b32 s69, s84
-; SI-NEXT:    s_mov_b32 s84, s78
-; SI-NEXT:    s_mov_b32 s78, s45
-; SI-NEXT:    s_mov_b32 s28, s93
+; SI-NEXT:    s_mov_b32 s16, s48
 ; SI-NEXT:    s_mov_b32 s93, s44
-; SI-NEXT:    s_lshr_b32 s47, s57, 16
+; SI-NEXT:    s_mov_b32 s44, s26
+; SI-NEXT:    s_mov_b32 s26, s85
+; SI-NEXT:    s_mov_b32 s28, s98
+; SI-NEXT:    s_mov_b32 s98, s45
+; SI-NEXT:    s_lshr_b32 s47, s76, 16
 ; SI-NEXT:    s_lshr_b32 s57, s77, 16
-; SI-NEXT:    s_lshr_b32 s59, vcc_lo, 16
-; SI-NEXT:    s_lshr_b32 s61, vcc_hi, 16
+; SI-NEXT:    s_lshr_b32 s59, s23, 16
+; SI-NEXT:    s_mov_b32 s23, s34
+; SI-NEXT:    s_mov_b32 s34, s55
+; SI-NEXT:    v_readlane_b32 s55, v44, 10
+; SI-NEXT:    s_lshr_b32 s61, s21, 16
+; SI-NEXT:    s_mov_b32 s21, s50
+; SI-NEXT:    s_mov_b32 s27, s67
+; SI-NEXT:    v_readlane_b32 s50, v44, 12
+; SI-NEXT:    v_readlane_b32 s67, v44, 11
 ; SI-NEXT:    s_lshr_b32 s63, s20, 16
-; SI-NEXT:    s_mov_b32 s20, s67
-; SI-NEXT:    s_mov_b32 s34, s68
-; SI-NEXT:    v_readlane_b32 s68, v44, 11
+; SI-NEXT:    s_mov_b32 s20, s95
+; SI-NEXT:    s_mov_b32 s85, s35
+; SI-NEXT:    s_mov_b32 s35, s52
 ; SI-NEXT:    s_lshr_b32 s73, s18, 16
-; SI-NEXT:    s_mov_b32 s18, s88
-; SI-NEXT:    s_mov_b32 s27, s95
-; SI-NEXT:    s_mov_b32 s95, s51
-; SI-NEXT:    s_mov_b32 s51, s94
-; SI-NEXT:    s_mov_b32 s88, s82
-; SI-NEXT:    s_mov_b32 s82, s91
-; SI-NEXT:    s_mov_b32 s91, s39
-; SI-NEXT:    s_mov_b32 s39, s70
+; SI-NEXT:    s_mov_b32 s18, s96
+; SI-NEXT:    s_mov_b32 s96, s31
+; SI-NEXT:    s_mov_b32 s31, s53
+; SI-NEXT:    s_mov_b32 s53, s69
+; SI-NEXT:    s_mov_b32 s69, s24
+; SI-NEXT:    s_mov_b32 s29, s91
+; SI-NEXT:    s_mov_b32 s91, s38
+; SI-NEXT:    s_mov_b32 s38, s65
+; SI-NEXT:    s_mov_b32 s65, s82
 ; SI-NEXT:    s_lshr_b32 s75, s19, 16
 ; SI-NEXT:    s_mov_b32 s19, s90
-; SI-NEXT:    s_mov_b32 s90, s38
-; SI-NEXT:    s_mov_b32 s38, s53
-; SI-NEXT:    s_mov_b32 s53, s31
-; SI-NEXT:    s_mov_b32 s44, s92
-; SI-NEXT:    s_mov_b32 s92, s49
-; SI-NEXT:    s_mov_b32 s49, s55
-; SI-NEXT:    s_mov_b32 s55, s22
-; SI-NEXT:    s_mov_b32 s31, s80
-; SI-NEXT:    s_mov_b32 s22, s97
+; SI-NEXT:    s_mov_b32 s90, s39
+; SI-NEXT:    s_mov_b32 s39, s54
+; SI-NEXT:    s_mov_b32 s54, s83
+; SI-NEXT:    s_mov_b32 s83, s87
+; SI-NEXT:    s_mov_b32 s87, s22
+; SI-NEXT:    s_mov_b32 s22, s56
 ; SI-NEXT:    s_lshr_b32 s45, s17, 16
 ; SI-NEXT:    s_mov_b32 s17, s89
-; SI-NEXT:    s_mov_b32 s89, s48
-; SI-NEXT:    s_mov_b32 s48, s65
-; SI-NEXT:    s_mov_b32 s65, s81
-; SI-NEXT:    s_mov_b32 s81, s86
-; SI-NEXT:    s_mov_b32 s86, s56
-; SI-NEXT:    s_mov_b32 s56, s76
+; SI-NEXT:    s_mov_b32 s89, s36
+; SI-NEXT:    s_mov_b32 s36, s66
+; SI-NEXT:    s_mov_b32 s66, s70
+; SI-NEXT:    s_mov_b32 s70, s97
 ; SI-NEXT:    s_mov_b64 s[76:77], 0
 ; SI-NEXT:    s_branch .LBB107_3
 ; SI-NEXT:  .LBB107_2:
-; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    s_mov_b64 s[76:77], -1
-; SI-NEXT:    v_writelane_b32 v44, s4, 7
-; SI-NEXT:    v_writelane_b32 v44, s5, 8
-; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr80
 ; SI-NEXT:    ; implicit-def: $sgpr47
 ; SI-NEXT:    ; implicit-def: $sgpr40
 ; SI-NEXT:    ; implicit-def: $sgpr46
 ; SI-NEXT:    ; implicit-def: $sgpr57
 ; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr92
 ; SI-NEXT:    ; implicit-def: $sgpr59
 ; SI-NEXT:    ; implicit-def: $sgpr12
 ; SI-NEXT:    ; implicit-def: $sgpr58
@@ -82823,215 +83914,216 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    ; implicit-def: $sgpr6
 ; SI-NEXT:    ; implicit-def: $sgpr72
 ; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:    ; implicit-def: $sgpr74
 ; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    v_writelane_b32 v44, s4, 9
-; SI-NEXT:    v_writelane_b32 v44, s5, 10
-; SI-NEXT:    ; implicit-def: $sgpr4
 ; SI-NEXT:  .LBB107_3: ; %Flow
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[76:77]
-; SI-NEXT:    v_readlane_b32 s76, v44, 7
-; SI-NEXT:    v_readlane_b32 s77, v44, 8
-; SI-NEXT:    s_cbranch_vccnz .LBB107_5
+; SI-NEXT:    s_and_b64 s[76:77], s[76:77], exec
+; SI-NEXT:    s_cselect_b32 s76, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s76, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB107_5
 ; SI-NEXT:  ; %bb.4: ; %cmp.true
-; SI-NEXT:    s_add_i32 s21, s21, 3
-; SI-NEXT:    s_and_b32 s4, s21, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s25, 8
-; SI-NEXT:    s_add_i32 s78, s78, 3
+; SI-NEXT:    s_add_i32 s22, s22, 3
+; SI-NEXT:    s_and_b32 s4, s22, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s26, 8
+; SI-NEXT:    s_add_i32 s98, s98, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s6, s78, 0xff
+; SI-NEXT:    s_and_b32 s6, s98, 0xff
 ; SI-NEXT:    s_addk_i32 s4, 0x300
-; SI-NEXT:    s_lshl_b32 s5, s24, 24
+; SI-NEXT:    s_lshl_b32 s5, s25, 24
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_add_i32 s99, s99, 3
-; SI-NEXT:    v_readlane_b32 s6, v44, 6
+; SI-NEXT:    s_add_i32 s97, s30, 3
+; SI-NEXT:    v_readlane_b32 s6, v44, 9
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s5, s99, 0xff
+; SI-NEXT:    s_and_b32 s5, s97, 0xff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 8
-; SI-NEXT:    s_add_i32 s86, s86, 3
+; SI-NEXT:    s_add_i32 s84, s84, 3
 ; SI-NEXT:    s_or_b32 s5, s6, s5
-; SI-NEXT:    s_and_b32 s7, s86, 0xff
+; SI-NEXT:    v_readlane_b32 s6, v44, 7
+; SI-NEXT:    s_and_b32 s7, s84, 0xff
 ; SI-NEXT:    s_addk_i32 s5, 0x300
-; SI-NEXT:    s_lshl_b32 s6, s56, 24
+; SI-NEXT:    s_lshl_b32 s6, s6, 24
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_or_b32 s6, s6, s7
-; SI-NEXT:    s_add_i32 s97, s79, 3
+; SI-NEXT:    s_add_i32 s87, s87, 3
+; SI-NEXT:    v_readlane_b32 s8, v44, 6
 ; SI-NEXT:    s_or_b32 s5, s6, s5
-; SI-NEXT:    s_and_b32 s6, s97, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s36, 8
-; SI-NEXT:    s_add_i32 s84, s84, 3
+; SI-NEXT:    s_and_b32 s6, s87, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s44, 8
+; SI-NEXT:    s_add_i32 s82, s8, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    v_readlane_b32 s7, v44, 5
-; SI-NEXT:    s_and_b32 s8, s84, 0xff
+; SI-NEXT:    v_readlane_b32 s7, v44, 8
+; SI-NEXT:    s_and_b32 s8, s82, 0xff
 ; SI-NEXT:    s_addk_i32 s6, 0x300
 ; SI-NEXT:    s_lshl_b32 s7, s7, 24
 ; SI-NEXT:    s_lshl_b32 s8, s8, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_or_b32 s7, s7, s8
-; SI-NEXT:    s_add_i32 s83, s83, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_and_b32 s7, s83, 0xff
-; SI-NEXT:    s_lshl_b32 s8, s87, 8
-; SI-NEXT:    s_add_i32 s80, s23, 3
+; SI-NEXT:    v_readlane_b32 s7, v44, 5
+; SI-NEXT:    s_add_i32 s81, s7, 3
+; SI-NEXT:    s_and_b32 s7, s81, 0xff
+; SI-NEXT:    s_lshl_b32 s8, s78, 8
+; SI-NEXT:    s_add_i32 s70, s70, 3
 ; SI-NEXT:    s_or_b32 s7, s8, s7
-; SI-NEXT:    s_and_b32 s9, s80, 0xff
+; SI-NEXT:    s_and_b32 s9, s70, 0xff
 ; SI-NEXT:    s_addk_i32 s7, 0x300
-; SI-NEXT:    s_lshl_b32 s8, s22, 24
+; SI-NEXT:    s_lshl_b32 s8, s99, 24
 ; SI-NEXT:    s_lshl_b32 s9, s9, 16
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
 ; SI-NEXT:    s_or_b32 s8, s8, s9
-; SI-NEXT:    s_add_i32 s68, s68, 3
+; SI-NEXT:    s_add_i32 s67, s67, 3
 ; SI-NEXT:    s_or_b32 s7, s8, s7
-; SI-NEXT:    s_and_b32 s8, s68, 0xff
-; SI-NEXT:    s_lshl_b32 s9, s69, 8
-; SI-NEXT:    s_add_i32 s66, s66, 3
+; SI-NEXT:    s_and_b32 s8, s67, 0xff
+; SI-NEXT:    s_lshl_b32 s9, s71, 8
+; SI-NEXT:    s_add_i32 s65, s65, 3
 ; SI-NEXT:    s_or_b32 s8, s9, s8
-; SI-NEXT:    s_and_b32 s10, s66, 0xff
+; SI-NEXT:    s_and_b32 s10, s65, 0xff
 ; SI-NEXT:    s_addk_i32 s8, 0x300
 ; SI-NEXT:    s_lshl_b32 s9, s55, 24
 ; SI-NEXT:    s_lshl_b32 s10, s10, 16
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
 ; SI-NEXT:    s_or_b32 s9, s9, s10
-; SI-NEXT:    s_add_i32 s64, s64, 3
+; SI-NEXT:    s_add_i32 s55, s69, 3
 ; SI-NEXT:    s_or_b32 s8, s9, s8
-; SI-NEXT:    s_and_b32 s9, s64, 0xff
-; SI-NEXT:    s_lshl_b32 s10, s81, 8
-; SI-NEXT:    s_add_i32 s69, s98, 3
+; SI-NEXT:    s_and_b32 s9, s55, 0xff
+; SI-NEXT:    s_lshl_b32 s10, s83, 8
+; SI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; SI-NEXT:    s_or_b32 s9, s10, s9
-; SI-NEXT:    s_and_b32 s11, s69, 0xff
+; SI-NEXT:    s_and_b32 s11, vcc_hi, 0xff
 ; SI-NEXT:    s_addk_i32 s9, 0x300
-; SI-NEXT:    s_lshl_b32 s10, s71, 24
+; SI-NEXT:    s_lshl_b32 s10, vcc_lo, 24
 ; SI-NEXT:    s_lshl_b32 s11, s11, 16
 ; SI-NEXT:    s_and_b32 s9, s9, 0xffff
 ; SI-NEXT:    s_or_b32 s10, s10, s11
-; SI-NEXT:    s_add_i32 s55, s31, 3
+; SI-NEXT:    s_add_i32 s54, s54, 3
 ; SI-NEXT:    s_or_b32 s9, s10, s9
-; SI-NEXT:    s_and_b32 s10, s55, 0xff
-; SI-NEXT:    s_lshl_b32 s11, s88, 8
-; SI-NEXT:    s_add_i32 s53, s53, 3
+; SI-NEXT:    s_and_b32 s10, s54, 0xff
+; SI-NEXT:    s_lshl_b32 s11, s66, 8
+; SI-NEXT:    s_add_i32 s52, s88, 3
 ; SI-NEXT:    s_or_b32 s10, s11, s10
-; SI-NEXT:    s_and_b32 s12, s53, 0xff
+; SI-NEXT:    s_and_b32 s12, s52, 0xff
 ; SI-NEXT:    s_addk_i32 s10, 0x300
-; SI-NEXT:    s_lshl_b32 s11, s37, 24
+; SI-NEXT:    s_lshl_b32 s11, s50, 24
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_or_b32 s11, s11, s12
-; SI-NEXT:    s_add_i32 s51, s51, 3
+; SI-NEXT:    s_add_i32 s50, s94, 3
 ; SI-NEXT:    s_or_b32 s10, s11, s10
-; SI-NEXT:    s_and_b32 s11, s51, 0xff
-; SI-NEXT:    s_lshl_b32 s12, s65, 8
+; SI-NEXT:    s_and_b32 s11, s50, 0xff
+; SI-NEXT:    s_lshl_b32 s12, s49, 8
 ; SI-NEXT:    s_or_b32 s11, s12, s11
-; SI-NEXT:    s_lshl_b32 s12, s39, 24
-; SI-NEXT:    s_add_i32 s39, s50, 3
-; SI-NEXT:    s_and_b32 s13, s39, 0xff
+; SI-NEXT:    s_lshl_b32 s12, s38, 24
+; SI-NEXT:    s_add_i32 s38, s68, 3
+; SI-NEXT:    s_and_b32 s13, s38, 0xff
 ; SI-NEXT:    s_addk_i32 s11, 0x300
 ; SI-NEXT:    s_lshl_b32 s13, s13, 16
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
 ; SI-NEXT:    s_or_b32 s12, s12, s13
-; SI-NEXT:    s_add_i32 s50, s96, 3
+; SI-NEXT:    s_add_i32 s49, s64, 3
 ; SI-NEXT:    s_or_b32 s11, s12, s11
-; SI-NEXT:    s_and_b32 s12, s50, 0xff
-; SI-NEXT:    s_lshl_b32 s13, s16, 8
-; SI-NEXT:    s_add_i32 s37, s52, 3
+; SI-NEXT:    s_and_b32 s12, s49, 0xff
+; SI-NEXT:    s_lshl_b32 s13, s53, 8
+; SI-NEXT:    s_add_i32 s36, s36, 3
 ; SI-NEXT:    s_or_b32 s12, s13, s12
-; SI-NEXT:    s_and_b32 s14, s37, 0xff
+; SI-NEXT:    s_and_b32 s14, s36, 0xff
 ; SI-NEXT:    s_addk_i32 s12, 0x300
 ; SI-NEXT:    s_lshl_b32 s13, s34, 24
 ; SI-NEXT:    s_lshl_b32 s14, s14, 16
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_or_b32 s13, s13, s14
-; SI-NEXT:    s_add_i32 s35, s35, 3
+; SI-NEXT:    s_add_i32 s34, s39, 3
 ; SI-NEXT:    s_or_b32 s12, s13, s12
-; SI-NEXT:    s_and_b32 s13, s35, 0xff
-; SI-NEXT:    s_lshl_b32 s14, s48, 8
-; SI-NEXT:    v_readlane_b32 s15, v44, 4
+; SI-NEXT:    s_and_b32 s13, s34, 0xff
+; SI-NEXT:    s_lshl_b32 s14, s37, 8
+; SI-NEXT:    s_add_i32 s95, s31, 3
 ; SI-NEXT:    s_or_b32 s13, s14, s13
-; SI-NEXT:    s_lshl_b32 s14, s95, 24
-; SI-NEXT:    s_add_i32 s95, s15, 3
 ; SI-NEXT:    s_and_b32 s15, s95, 0xff
 ; SI-NEXT:    s_addk_i32 s13, 0x300
+; SI-NEXT:    s_lshl_b32 s14, s86, 24
 ; SI-NEXT:    s_lshl_b32 s15, s15, 16
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
 ; SI-NEXT:    s_or_b32 s14, s14, s15
-; SI-NEXT:    s_add_i32 s34, s49, 3
+; SI-NEXT:    s_add_i32 vcc_lo, s51, 3
 ; SI-NEXT:    s_or_b32 s13, s14, s13
-; SI-NEXT:    s_and_b32 s14, s34, 0xff
-; SI-NEXT:    s_lshl_b32 s15, s38, 8
+; SI-NEXT:    s_and_b32 s14, vcc_lo, 0xff
+; SI-NEXT:    s_lshl_b32 s15, s35, 8
+; SI-NEXT:    s_add_i32 s93, s93, 3
 ; SI-NEXT:    s_or_b32 s14, s15, s14
-; SI-NEXT:    s_lshl_b32 s15, s93, 24
-; SI-NEXT:    s_add_i32 s93, s30, 3
-; SI-NEXT:    s_and_b32 s21, s93, 0xff
+; SI-NEXT:    s_and_b32 s22, s93, 0xff
 ; SI-NEXT:    s_addk_i32 s14, 0x300
-; SI-NEXT:    s_lshl_b32 s21, s21, 16
+; SI-NEXT:    s_lshl_b32 s15, s28, 24
+; SI-NEXT:    s_lshl_b32 s22, s22, 16
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
-; SI-NEXT:    s_or_b32 s15, s15, s21
+; SI-NEXT:    s_or_b32 s15, s15, s22
 ; SI-NEXT:    s_add_i32 s91, s91, 3
 ; SI-NEXT:    s_or_b32 s14, s15, s14
 ; SI-NEXT:    s_and_b32 s15, s91, 0xff
-; SI-NEXT:    s_lshl_b32 s21, s92, 8
-; SI-NEXT:    s_add_i32 s89, s89, 3
-; SI-NEXT:    s_or_b32 s15, s21, s15
-; SI-NEXT:    s_and_b32 s22, s89, 0xff
+; SI-NEXT:    s_lshl_b32 s22, s16, 8
+; SI-NEXT:    s_or_b32 s15, s22, s15
+; SI-NEXT:    s_lshl_b32 s22, s89, 24
+; SI-NEXT:    s_add_i32 s89, s90, 3
+; SI-NEXT:    s_and_b32 s40, s89, 0xff
 ; SI-NEXT:    s_addk_i32 s15, 0x300
-; SI-NEXT:    s_lshl_b32 s21, s20, 24
-; SI-NEXT:    s_lshl_b32 s22, s22, 16
-; SI-NEXT:    s_add_i32 s16, s44, 3
+; SI-NEXT:    s_lshl_b32 s40, s40, 16
+; SI-NEXT:    v_readlane_b32 s16, v44, 0
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_or_b32 s21, s21, s22
-; SI-NEXT:    s_add_i32 s24, s29, 3
+; SI-NEXT:    s_or_b32 s22, s22, s40
+; SI-NEXT:    s_add_i32 s24, s85, 3
+; SI-NEXT:    v_readlane_b32 s25, v44, 1
+; SI-NEXT:    s_add_i32 s28, s16, 3
+; SI-NEXT:    v_readlane_b32 s16, v44, 4
+; SI-NEXT:    s_or_b32 s15, s22, s15
+; SI-NEXT:    s_and_b32 s22, s24, 0xff
+; SI-NEXT:    s_lshl_b32 s24, s27, 8
+; SI-NEXT:    s_add_i32 s26, s25, 3
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    s_or_b32 s22, s24, s22
+; SI-NEXT:    s_and_b32 s25, s26, 0xff
 ; SI-NEXT:    s_and_b32 s16, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s17, s17, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
-; SI-NEXT:    s_or_b32 s15, s21, s15
-; SI-NEXT:    s_and_b32 s21, s24, 0xff
-; SI-NEXT:    s_lshl_b32 s22, s85, 8
-; SI-NEXT:    s_add_i32 s26, s26, 3
+; SI-NEXT:    s_addk_i32 s22, 0x300
+; SI-NEXT:    s_lshl_b32 s24, s96, 24
+; SI-NEXT:    s_lshl_b32 s25, s25, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
-; SI-NEXT:    s_or_b32 s21, s22, s21
-; SI-NEXT:    s_and_b32 s20, s26, 0xff
+; SI-NEXT:    s_and_b32 s22, s22, 0xffff
+; SI-NEXT:    s_or_b32 s24, s24, s25
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s19, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
-; SI-NEXT:    s_addk_i32 s21, 0x300
-; SI-NEXT:    s_lshl_b32 s22, s27, 24
-; SI-NEXT:    s_lshl_b32 s20, s20, 16
+; SI-NEXT:    s_or_b32 s22, s24, s22
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
-; SI-NEXT:    s_and_b32 s21, s21, 0xffff
-; SI-NEXT:    s_or_b32 s22, s22, s20
+; SI-NEXT:    s_add_i32 s40, s22, 0x3000000
+; SI-NEXT:    s_and_b32 s22, s28, 0xff
+; SI-NEXT:    s_lshl_b32 s24, s29, 8
+; SI-NEXT:    s_add_i32 s79, s79, 3
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    s_or_b32 s21, s22, s21
-; SI-NEXT:    s_add_i32 s28, s28, 3
+; SI-NEXT:    s_add_i32 s20, s20, 3
+; SI-NEXT:    v_readlane_b32 s18, v44, 3
+; SI-NEXT:    s_or_b32 s22, s24, s22
+; SI-NEXT:    s_and_b32 s24, s79, 0xff
 ; SI-NEXT:    s_add_i32 s42, s16, 0x3000000
-; SI-NEXT:    v_readlane_b32 s16, v44, 3
-; SI-NEXT:    s_add_i32 s40, s21, 0x3000000
-; SI-NEXT:    s_and_b32 s21, s28, 0xff
-; SI-NEXT:    s_lshl_b32 s22, s82, 8
-; SI-NEXT:    s_add_i32 s79, s90, 3
-; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    v_readlane_b32 s17, v44, 2
-; SI-NEXT:    v_readlane_b32 s18, v44, 1
-; SI-NEXT:    s_or_b32 s21, s22, s21
-; SI-NEXT:    s_and_b32 s22, s79, 0xff
-; SI-NEXT:    s_and_b32 s16, s16, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s17, 8
+; SI-NEXT:    s_and_b32 s16, s20, 0xff
+; SI-NEXT:    s_lshl_b32 s17, s21, 8
 ; SI-NEXT:    s_add_i32 s18, s18, 3
-; SI-NEXT:    s_addk_i32 s21, 0x300
-; SI-NEXT:    s_lshl_b32 s20, s54, 24
-; SI-NEXT:    s_lshl_b32 s22, s22, 16
+; SI-NEXT:    s_addk_i32 s22, 0x300
+; SI-NEXT:    s_lshl_b32 s23, s23, 24
+; SI-NEXT:    s_lshl_b32 s24, s24, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
-; SI-NEXT:    v_readlane_b32 s17, v44, 0
+; SI-NEXT:    v_readlane_b32 s17, v44, 2
 ; SI-NEXT:    s_and_b32 s18, s18, 0xff
-; SI-NEXT:    s_and_b32 s21, s21, 0xffff
-; SI-NEXT:    s_or_b32 s20, s20, s22
+; SI-NEXT:    s_and_b32 s22, s22, 0xffff
+; SI-NEXT:    s_or_b32 s23, s23, s24
 ; SI-NEXT:    s_addk_i32 s16, 0x300
 ; SI-NEXT:    s_lshl_b32 s17, s17, 24
 ; SI-NEXT:    s_lshl_b32 s18, s18, 16
-; SI-NEXT:    s_or_b32 s20, s20, s21
+; SI-NEXT:    s_or_b32 s22, s23, s22
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_add_i32 s4, s4, 0x3000000
@@ -83044,20 +84136,19 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s11, s11, 0x3000000
 ; SI-NEXT:    s_add_i32 s12, s12, 0x3000000
 ; SI-NEXT:    s_add_i32 s13, s13, 0x3000000
+; SI-NEXT:    s_add_i32 s41, s22, 0x3000000
+; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s14, s14, 0x3000000
 ; SI-NEXT:    s_add_i32 s15, s15, 0x3000000
-; SI-NEXT:    s_add_i32 s41, s20, 0x3000000
-; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s43, s16, 0x3000000
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[40:41], 16
-; SI-NEXT:    s_lshr_b64 s[16:17], s[14:15], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[12:13], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[10:11], 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[8:9], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[4:5], 16
-; SI-NEXT:    s_lshr_b64 s[76:77], s[42:43], 16
-; SI-NEXT:    v_writelane_b32 v44, s16, 9
+; SI-NEXT:    s_lshr_b64 s[80:81], s[42:43], 16
+; SI-NEXT:    s_lshr_b64 s[92:93], s[14:15], 16
 ; SI-NEXT:    s_lshr_b32 s47, s43, 16
 ; SI-NEXT:    s_lshr_b32 s57, s41, 16
 ; SI-NEXT:    s_lshr_b32 s59, s15, 16
@@ -83066,13 +84157,12 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s73, s9, 16
 ; SI-NEXT:    s_lshr_b32 s75, s7, 16
 ; SI-NEXT:    s_lshr_b32 s45, s5, 16
-; SI-NEXT:    v_writelane_b32 v44, s17, 10
 ; SI-NEXT:  .LBB107_5: ; %end
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:84 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:88 ; 4-byte Folded Reload
 ; SI-NEXT:    s_and_b32 s16, s42, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s76, 16
+; SI-NEXT:    s_lshl_b32 s17, s80, 16
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s43, 0xffff
 ; SI-NEXT:    s_lshl_b32 s18, s47, 16
@@ -83083,9 +84173,8 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s19, s41, 0xffff
 ; SI-NEXT:    s_lshl_b32 s20, s57, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s20
-; SI-NEXT:    v_readlane_b32 s20, v44, 9
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
-; SI-NEXT:    s_lshl_b32 s20, s20, 16
+; SI-NEXT:    s_lshl_b32 s20, s92, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s20
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
 ; SI-NEXT:    s_lshl_b32 s20, s59, 16
@@ -83121,7 +84210,6 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s20, s45, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s20
 ; SI-NEXT:    v_readlane_b32 s30, v43, 34
-; SI-NEXT:    v_readlane_b32 s21, v44, 10
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -83237,7 +84325,7 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; VI-NEXT:    s_waitcnt vmcnt(14)
 ; VI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v35
 ; VI-NEXT:    s_and_b64 s[4:5], vcc, exec
-; VI-NEXT:    s_cbranch_scc0 .LBB107_4
+; VI-NEXT:    s_cbranch_scc0 .LBB107_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -83329,8 +84417,17 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; VI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; VI-NEXT:    v_perm_b32 v35, v33, v28, s4
 ; VI-NEXT:    v_or_b32_e32 v15, v35, v15
-; VI-NEXT:    s_cbranch_execnz .LBB107_3
-; VI-NEXT:  .LBB107_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB107_3
+; VI-NEXT:  .LBB107_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; VI-NEXT:  .LBB107_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB107_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 3, v34
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; VI-NEXT:    v_perm_b32 v8, v0, v31, s4
@@ -83490,12 +84587,9 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; VI-NEXT:    v_add_u32_e32 v13, vcc, 0x3000000, v13
 ; VI-NEXT:    v_add_u32_e32 v14, vcc, 0x3000000, v14
 ; VI-NEXT:    v_add_u32_e32 v15, vcc, 0x3000000, v15
-; VI-NEXT:  .LBB107_3: ; %end
+; VI-NEXT:  .LBB107_5: ; %end
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB107_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-NEXT:    s_branch .LBB107_2
 ;
 ; GFX9-LABEL: bitcast_v64i8_to_v32f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -83554,7 +84648,7 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; GFX9-NEXT:    s_waitcnt vmcnt(19)
 ; GFX9-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v12
 ; GFX9-NEXT:    s_and_b64 s[4:5], vcc, exec
-; GFX9-NEXT:    s_cbranch_scc0 .LBB107_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB107_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v8, 0xc0c0004
@@ -83660,8 +84754,17 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s5, s77
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s4
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s5
-; GFX9-NEXT:    s_cbranch_execnz .LBB107_3
-; GFX9-NEXT:  .LBB107_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB107_3
+; GFX9-NEXT:  .LBB107_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX9-NEXT:  .LBB107_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB107_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_waitcnt vmcnt(12)
 ; GFX9-NEXT:    v_add_u32_e32 v0, 3, v34
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
@@ -83818,12 +84921,9 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_lshl_or_b32 v10, v16, 16, v10
 ; GFX9-NEXT:    v_lshl_or_b32 v14, v27, 16, v14
 ; GFX9-NEXT:    v_lshl_or_b32 v15, v25, 16, v15
-; GFX9-NEXT:  .LBB107_3: ; %end
+; GFX9-NEXT:  .LBB107_5: ; %end
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB107_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX9-NEXT:    s_branch .LBB107_2
 ;
 ; GFX11-TRUE16-LABEL: bitcast_v64i8_to_v32f16_scalar:
 ; GFX11-TRUE16:       ; %bb.0:
@@ -83880,7 +84980,7 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v54
 ; GFX11-TRUE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB107_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB107_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v8, 0xc0c0004 :: v_dual_lshlrev_b32 v13, 8, v50
@@ -83959,9 +85059,17 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v14.h, v10.l
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, s77
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v15.h, v18.l
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB107_3
-; GFX11-TRUE16-NEXT:  .LBB107_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB107_3
+; GFX11-TRUE16-NEXT:  .LBB107_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-TRUE16-NEXT:  .LBB107_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB107_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 3, v36
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(3)
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, 3, v53
@@ -84078,12 +85186,9 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v13.h, v18.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v14.h, v17.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v15.h, v16.l
-; GFX11-TRUE16-NEXT:  .LBB107_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB107_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB107_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-TRUE16-NEXT:    s_branch .LBB107_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v64i8_to_v32f16_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -84140,7 +85245,7 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v54
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB107_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB107_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, s58, 0xff
@@ -84233,9 +85338,17 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v15, v16, 16, v17
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, s76
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, s77
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB107_3
-; GFX11-FAKE16-NEXT:  .LBB107_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB107_3
+; GFX11-FAKE16-NEXT:  .LBB107_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-FAKE16-NEXT:  .LBB107_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB107_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v0, 3, v52
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(3)
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v4, 3, v53
@@ -84368,12 +85481,9 @@ define inreg <32 x half> @bitcast_v64i8_to_v32f16_scalar(<64 x i8> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v13, v16, 16, v13
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v14, v14, 16, v21
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v15, v15, 16, v22
-; GFX11-FAKE16-NEXT:  .LBB107_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB107_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB107_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-FAKE16-NEXT:    s_branch .LBB107_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -87490,7 +88600,7 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; SI-NEXT:    v_mul_f32_e64 v33, 1.0, s43
 ; SI-NEXT:    v_mul_f32_e64 v34, 1.0, s42
 ; SI-NEXT:    ; implicit-def: $vgpr41 : SGPR spill to VGPR lane
-; SI-NEXT:    s_cbranch_scc0 .LBB109_4
+; SI-NEXT:    s_cbranch_scc0 .LBB109_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_readfirstlane_b32 s4, v3
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
@@ -87498,19 +88608,19 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[4:5], 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v1
 ; SI-NEXT:    s_lshr_b32 s73, s4, 16
-; SI-NEXT:    v_readfirstlane_b32 s72, v2
-; SI-NEXT:    s_lshr_b64 s[76:77], s[72:73], 16
-; SI-NEXT:    s_mov_b32 s75, s76
-; SI-NEXT:    s_lshr_b64 s[4:5], s[74:75], 24
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v41, s4, 0
-; SI-NEXT:    v_writelane_b32 v41, s5, 1
 ; SI-NEXT:    v_readfirstlane_b32 s4, v7
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[4:5], 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v5
 ; SI-NEXT:    s_lshr_b32 s59, s4, 16
+; SI-NEXT:    v_readfirstlane_b32 s58, v6
+; SI-NEXT:    s_lshr_b64 s[62:63], s[58:59], 16
+; SI-NEXT:    s_mov_b32 s61, s62
+; SI-NEXT:    s_lshr_b64 s[4:5], s[60:61], 24
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v41, s4, 0
+; SI-NEXT:    v_writelane_b32 v41, s5, 1
 ; SI-NEXT:    v_readfirstlane_b32 s4, v11
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
@@ -87546,7 +88656,7 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s4, v37
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[4:5], 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v33
-; SI-NEXT:    v_readfirstlane_b32 s58, v6
+; SI-NEXT:    v_readfirstlane_b32 s72, v2
 ; SI-NEXT:    v_readfirstlane_b32 s44, v10
 ; SI-NEXT:    v_readfirstlane_b32 s24, v14
 ; SI-NEXT:    v_readfirstlane_b32 s40, v18
@@ -87554,23 +88664,23 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s10, v28
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v34
-; SI-NEXT:    s_lshr_b64 s[62:63], s[58:59], 16
+; SI-NEXT:    s_lshr_b64 s[76:77], s[72:73], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[44:45], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[22:23], s[40:41], 16
 ; SI-NEXT:    s_lshr_b64 s[28:29], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[10:11], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[4:5], 16
-; SI-NEXT:    s_mov_b32 s61, s62
+; SI-NEXT:    s_mov_b32 s75, s76
 ; SI-NEXT:    s_mov_b32 s47, s56
 ; SI-NEXT:    s_mov_b32 s27, s42
 ; SI-NEXT:    s_mov_b32 s17, s22
 ; SI-NEXT:    s_mov_b32 s21, s28
 ; SI-NEXT:    s_mov_b32 s13, s14
 ; SI-NEXT:    s_mov_b32 s7, s8
-; SI-NEXT:    s_lshr_b64 s[88:89], s[74:75], 16
+; SI-NEXT:    s_lshr_b64 s[88:89], s[74:75], 24
+; SI-NEXT:    s_lshr_b64 s[90:91], s[74:75], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[74:75], 8
-; SI-NEXT:    s_lshr_b64 s[90:91], s[60:61], 24
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[60:61], 16
 ; SI-NEXT:    s_lshr_b64 s[30:31], s[60:61], 8
 ; SI-NEXT:    s_lshr_b64 s[34:35], s[46:47], 24
@@ -87607,8 +88717,83 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[82:83], s[6:7], 24
 ; SI-NEXT:    s_lshr_b64 s[84:85], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[86:87], s[6:7], 8
-; SI-NEXT:    s_cbranch_execnz .LBB109_3
-; SI-NEXT:  .LBB109_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 vcc, 0
+; SI-NEXT:    s_branch .LBB109_3
+; SI-NEXT:  .LBB109_2:
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    s_mov_b64 vcc, -1
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v41, s4, 0
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr23
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $vgpr48
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    v_writelane_b32 v41, s5, 1
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr21
+; SI-NEXT:    ; implicit-def: $sgpr59
+; SI-NEXT:    ; implicit-def: $vgpr39
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr18
+; SI-NEXT:    ; implicit-def: $sgpr45
+; SI-NEXT:    ; implicit-def: $vgpr38
+; SI-NEXT:    ; implicit-def: $sgpr26
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr17
+; SI-NEXT:    ; implicit-def: $sgpr25
+; SI-NEXT:    ; implicit-def: $vgpr35
+; SI-NEXT:    ; implicit-def: $sgpr16
+; SI-NEXT:    ; implicit-def: $sgpr66
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr22
+; SI-NEXT:    ; implicit-def: $sgpr15
+; SI-NEXT:    ; implicit-def: $vgpr32
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $vgpr30
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $vgpr26
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $vgpr25
+; SI-NEXT:    ; implicit-def: $sgpr41
+; SI-NEXT:    ; implicit-def: $sgpr20
+; SI-NEXT:    ; implicit-def: $sgpr80
+; SI-NEXT:    ; implicit-def: $sgpr70
+; SI-NEXT:    ; implicit-def: $sgpr68
+; SI-NEXT:    ; implicit-def: $sgpr28
+; SI-NEXT:    ; implicit-def: $sgpr19
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    ; implicit-def: $sgpr96
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr86
+; SI-NEXT:    ; implicit-def: $sgpr84
+; SI-NEXT:    ; implicit-def: $sgpr82
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr5
+; SI-NEXT:  .LBB109_3: ; %Flow
+; SI-NEXT:    s_and_b64 vcc, vcc, exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB109_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v26, 0xffff0000, v36
 ; SI-NEXT:    v_and_b32_e32 v25, 0xffff0000, v37
 ; SI-NEXT:    v_add_f32_e32 v26, 0x40c00000, v26
@@ -87689,68 +88874,68 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s45, s4, 16
 ; SI-NEXT:    v_add_f32_e32 v8, 0x40c00000, v8
 ; SI-NEXT:    v_readfirstlane_b32 s4, v7
+; SI-NEXT:    v_and_b32_e32 v6, 0xffff0000, v6
 ; SI-NEXT:    v_add_f32_e32 v5, 0x40c00000, v5
 ; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v3
 ; SI-NEXT:    s_lshr_b32 s59, s4, 16
 ; SI-NEXT:    v_readfirstlane_b32 s58, v8
+; SI-NEXT:    v_add_f32_e32 v6, 0x40c00000, v6
 ; SI-NEXT:    v_readfirstlane_b32 s4, v5
 ; SI-NEXT:    v_and_b32_e32 v4, 0xffff0000, v4
 ; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v3
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v1
+; SI-NEXT:    v_and_b32_e32 v22, 0xffff0000, v22
+; SI-NEXT:    v_and_b32_e32 v20, 0xffff0000, v20
+; SI-NEXT:    v_and_b32_e32 v18, 0xffff0000, v18
+; SI-NEXT:    v_and_b32_e32 v14, 0xffff0000, v14
+; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v10
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[58:59], 16
 ; SI-NEXT:    s_lshr_b32 s59, s4, 16
+; SI-NEXT:    v_readfirstlane_b32 s58, v6
 ; SI-NEXT:    v_add_f32_e32 v4, 0x40c00000, v4
 ; SI-NEXT:    v_readfirstlane_b32 s4, v3
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff0000, v2
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    s_lshr_b32 s73, s4, 16
-; SI-NEXT:    v_readfirstlane_b32 s72, v4
-; SI-NEXT:    v_add_f32_e32 v2, 0x40c00000, v2
-; SI-NEXT:    v_readfirstlane_b32 s4, v1
-; SI-NEXT:    v_and_b32_e32 v22, 0xffff0000, v22
-; SI-NEXT:    v_and_b32_e32 v20, 0xffff0000, v20
-; SI-NEXT:    v_and_b32_e32 v18, 0xffff0000, v18
-; SI-NEXT:    v_and_b32_e32 v14, 0xffff0000, v14
-; SI-NEXT:    v_and_b32_e32 v10, 0xffff0000, v10
-; SI-NEXT:    v_and_b32_e32 v6, 0xffff0000, v6
-; SI-NEXT:    s_lshr_b64 s[74:75], s[72:73], 16
-; SI-NEXT:    s_lshr_b32 s73, s4, 16
-; SI-NEXT:    v_readfirstlane_b32 s72, v2
 ; SI-NEXT:    v_add_f32_e32 v22, 0x40c00000, v22
 ; SI-NEXT:    v_add_f32_e32 v20, 0x40c00000, v20
 ; SI-NEXT:    v_add_f32_e32 v18, 0x40c00000, v18
 ; SI-NEXT:    v_add_f32_e32 v14, 0x40c00000, v14
 ; SI-NEXT:    v_add_f32_e32 v10, 0x40c00000, v10
-; SI-NEXT:    v_add_f32_e32 v6, 0x40c00000, v6
-; SI-NEXT:    s_lshr_b64 s[76:77], s[72:73], 16
+; SI-NEXT:    s_lshr_b64 s[62:63], s[58:59], 16
+; SI-NEXT:    s_lshr_b32 s73, s4, 16
+; SI-NEXT:    v_readfirstlane_b32 s72, v4
+; SI-NEXT:    v_add_f32_e32 v2, 0x40c00000, v2
+; SI-NEXT:    v_readfirstlane_b32 s4, v1
 ; SI-NEXT:    v_readfirstlane_b32 s10, v28
 ; SI-NEXT:    v_readfirstlane_b32 s18, v22
 ; SI-NEXT:    v_readfirstlane_b32 s16, v20
 ; SI-NEXT:    v_readfirstlane_b32 s40, v18
 ; SI-NEXT:    v_readfirstlane_b32 s24, v14
 ; SI-NEXT:    v_readfirstlane_b32 s44, v10
-; SI-NEXT:    v_readfirstlane_b32 s58, v6
-; SI-NEXT:    s_mov_b32 s75, s76
+; SI-NEXT:    s_mov_b32 s61, s62
+; SI-NEXT:    s_lshr_b64 s[74:75], s[72:73], 16
+; SI-NEXT:    s_lshr_b32 s73, s4, 16
+; SI-NEXT:    v_readfirstlane_b32 s72, v2
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[10:11], 16
 ; SI-NEXT:    s_lshr_b64 s[28:29], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[16:17], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[22:23], s[40:41], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[44:45], 16
-; SI-NEXT:    s_lshr_b64 s[62:63], s[58:59], 16
-; SI-NEXT:    s_lshr_b64 s[78:79], s[74:75], 24
+; SI-NEXT:    s_lshr_b64 s[76:77], s[72:73], 16
+; SI-NEXT:    s_lshr_b64 s[78:79], s[60:61], 24
 ; SI-NEXT:    s_mov_b32 s7, s8
 ; SI-NEXT:    s_mov_b32 s13, s14
 ; SI-NEXT:    s_mov_b32 s21, s28
 ; SI-NEXT:    s_mov_b32 s17, s22
 ; SI-NEXT:    s_mov_b32 s27, s42
 ; SI-NEXT:    s_mov_b32 s47, s56
-; SI-NEXT:    s_mov_b32 s61, s62
+; SI-NEXT:    s_mov_b32 s75, s76
 ; SI-NEXT:    v_writelane_b32 v41, s78, 0
-; SI-NEXT:    v_writelane_b32 v41, s79, 1
-; SI-NEXT:    s_lshr_b64 s[88:89], s[74:75], 16
+; SI-NEXT:    s_lshr_b64 s[88:89], s[74:75], 24
+; SI-NEXT:    s_lshr_b64 s[90:91], s[74:75], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[74:75], 8
-; SI-NEXT:    s_lshr_b64 s[90:91], s[60:61], 24
+; SI-NEXT:    v_writelane_b32 v41, s79, 1
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[60:61], 16
 ; SI-NEXT:    s_lshr_b64 s[30:31], s[60:61], 8
 ; SI-NEXT:    s_lshr_b64 s[34:35], s[46:47], 24
@@ -87787,13 +88972,12 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[82:83], s[6:7], 24
 ; SI-NEXT:    s_lshr_b64 s[84:85], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[86:87], s[6:7], 8
-; SI-NEXT:  .LBB109_3: ; %end
+; SI-NEXT:  .LBB109_5: ; %end
 ; SI-NEXT:    s_and_b32 s7, s74, 0xff
 ; SI-NEXT:    s_lshl_b32 s13, s92, 8
 ; SI-NEXT:    s_or_b32 s7, s7, s13
-; SI-NEXT:    s_and_b32 s13, s88, 0xff
-; SI-NEXT:    v_readlane_b32 s74, v41, 0
-; SI-NEXT:    s_lshl_b32 s24, s74, 24
+; SI-NEXT:    s_and_b32 s13, s90, 0xff
+; SI-NEXT:    s_lshl_b32 s24, s88, 24
 ; SI-NEXT:    s_lshl_b32 s13, s13, 16
 ; SI-NEXT:    s_or_b32 s13, s24, s13
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
@@ -87814,8 +88998,9 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s13, s30, 8
 ; SI-NEXT:    s_or_b32 s7, s7, s13
 ; SI-NEXT:    s_and_b32 s13, s94, 0xff
+; SI-NEXT:    v_readlane_b32 s60, v41, 0
 ; SI-NEXT:    s_lshl_b32 s13, s13, 16
-; SI-NEXT:    s_lshl_b32 s23, s90, 24
+; SI-NEXT:    s_lshl_b32 s23, s60, 24
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
 ; SI-NEXT:    s_or_b32 s13, s23, s13
 ; SI-NEXT:    v_add_i32_e32 v2, vcc, 4, v0
@@ -87986,7 +89171,7 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v1, s4, v1
 ; SI-NEXT:    v_add_i32_e32 v0, vcc, 60, v0
 ; SI-NEXT:    v_readlane_b32 s30, v40, 34
-; SI-NEXT:    v_readlane_b32 s75, v41, 1
+; SI-NEXT:    v_readlane_b32 s61, v41, 1
 ; SI-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; SI-NEXT:    v_readlane_b32 s31, v40, 35
 ; SI-NEXT:    v_readlane_b32 s99, v40, 33
@@ -88029,75 +89214,6 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB109_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v41, s4, 0
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    v_writelane_b32 v41, s5, 1
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr23
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $vgpr48
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr21
-; SI-NEXT:    ; implicit-def: $sgpr59
-; SI-NEXT:    ; implicit-def: $vgpr39
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr18
-; SI-NEXT:    ; implicit-def: $sgpr45
-; SI-NEXT:    ; implicit-def: $vgpr38
-; SI-NEXT:    ; implicit-def: $sgpr26
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr17
-; SI-NEXT:    ; implicit-def: $sgpr25
-; SI-NEXT:    ; implicit-def: $vgpr35
-; SI-NEXT:    ; implicit-def: $sgpr16
-; SI-NEXT:    ; implicit-def: $sgpr66
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr22
-; SI-NEXT:    ; implicit-def: $sgpr15
-; SI-NEXT:    ; implicit-def: $vgpr32
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $vgpr30
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $vgpr26
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $vgpr25
-; SI-NEXT:    ; implicit-def: $sgpr41
-; SI-NEXT:    ; implicit-def: $sgpr20
-; SI-NEXT:    ; implicit-def: $sgpr80
-; SI-NEXT:    ; implicit-def: $sgpr70
-; SI-NEXT:    ; implicit-def: $sgpr68
-; SI-NEXT:    ; implicit-def: $sgpr28
-; SI-NEXT:    ; implicit-def: $sgpr19
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr98
-; SI-NEXT:    ; implicit-def: $sgpr96
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr86
-; SI-NEXT:    ; implicit-def: $sgpr84
-; SI-NEXT:    ; implicit-def: $sgpr82
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr5
-; SI-NEXT:    s_branch .LBB109_2
 ;
 ; VI-LABEL: bitcast_v32bf16_to_v64i8_scalar:
 ; VI:       ; %bb.0:
@@ -88136,36 +89252,34 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v63, s55, 13
 ; VI-NEXT:    v_writelane_b32 v63, s64, 14
 ; VI-NEXT:    v_writelane_b32 v63, s65, 15
-; VI-NEXT:    v_writelane_b32 v63, s66, 16
-; VI-NEXT:    v_writelane_b32 v63, s67, 17
-; VI-NEXT:    v_writelane_b32 v63, s30, 18
-; VI-NEXT:    v_writelane_b32 v63, s31, 19
+; VI-NEXT:    v_writelane_b32 v63, s30, 16
+; VI-NEXT:    v_writelane_b32 v63, s31, 17
 ; VI-NEXT:    v_readfirstlane_b32 s4, v3
 ; VI-NEXT:    v_readfirstlane_b32 s5, v2
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v1
-; VI-NEXT:    s_cbranch_scc0 .LBB109_3
+; VI-NEXT:    s_cbranch_scc0 .LBB109_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_lshr_b32 s65, s5, 24
-; VI-NEXT:    s_lshr_b32 s64, s5, 16
-; VI-NEXT:    s_lshr_b32 s55, s5, 8
-; VI-NEXT:    s_lshr_b32 s67, s4, 16
-; VI-NEXT:    s_lshr_b32 s66, s4, 8
-; VI-NEXT:    s_lshr_b32 s52, s29, 24
-; VI-NEXT:    s_lshr_b32 s51, s29, 16
-; VI-NEXT:    s_lshr_b32 s50, s29, 8
-; VI-NEXT:    s_lshr_b32 s54, s28, 16
-; VI-NEXT:    s_lshr_b32 s53, s28, 8
-; VI-NEXT:    s_lshr_b32 s39, s27, 24
-; VI-NEXT:    s_lshr_b32 s38, s27, 16
-; VI-NEXT:    s_lshr_b32 s37, s27, 8
-; VI-NEXT:    s_lshr_b32 s49, s26, 16
-; VI-NEXT:    s_lshr_b32 s48, s26, 8
-; VI-NEXT:    s_lshr_b32 s34, s25, 24
-; VI-NEXT:    s_lshr_b32 s31, s25, 16
-; VI-NEXT:    s_lshr_b32 s30, s25, 8
-; VI-NEXT:    s_lshr_b32 s36, s24, 16
-; VI-NEXT:    s_lshr_b32 s35, s24, 8
+; VI-NEXT:    s_lshr_b32 s55, s5, 24
+; VI-NEXT:    s_lshr_b32 s54, s5, 16
+; VI-NEXT:    s_lshr_b32 s53, s5, 8
+; VI-NEXT:    s_lshr_b32 s65, s4, 16
+; VI-NEXT:    s_lshr_b32 s64, s4, 8
+; VI-NEXT:    s_lshr_b32 s50, s29, 24
+; VI-NEXT:    s_lshr_b32 s49, s29, 16
+; VI-NEXT:    s_lshr_b32 s48, s29, 8
+; VI-NEXT:    s_lshr_b32 s52, s28, 16
+; VI-NEXT:    s_lshr_b32 s51, s28, 8
+; VI-NEXT:    s_lshr_b32 s37, s27, 24
+; VI-NEXT:    s_lshr_b32 s36, s27, 16
+; VI-NEXT:    s_lshr_b32 s35, s27, 8
+; VI-NEXT:    s_lshr_b32 s39, s26, 16
+; VI-NEXT:    s_lshr_b32 s38, s26, 8
+; VI-NEXT:    s_lshr_b32 s30, s25, 24
+; VI-NEXT:    s_lshr_b32 vcc_hi, s25, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s25, 8
+; VI-NEXT:    s_lshr_b32 s34, s24, 16
+; VI-NEXT:    s_lshr_b32 s31, s24, 8
 ; VI-NEXT:    s_lshr_b32 s89, s23, 24
 ; VI-NEXT:    s_lshr_b32 s88, s23, 16
 ; VI-NEXT:    s_lshr_b32 s79, s23, 8
@@ -88194,8 +89308,64 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; VI-NEXT:    s_lshr_b64 s[10:11], s[20:21], 24
 ; VI-NEXT:    s_lshr_b64 s[8:9], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB109_4
-; VI-NEXT:  .LBB109_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[46:47], 0
+; VI-NEXT:    s_branch .LBB109_3
+; VI-NEXT:  .LBB109_2:
+; VI-NEXT:    s_mov_b64 s[46:47], -1
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $sgpr38
+; VI-NEXT:    ; implicit-def: $sgpr39
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr35
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr37
+; VI-NEXT:    ; implicit-def: $sgpr51
+; VI-NEXT:    ; implicit-def: $sgpr52
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr48
+; VI-NEXT:    ; implicit-def: $sgpr49
+; VI-NEXT:    ; implicit-def: $sgpr50
+; VI-NEXT:    ; implicit-def: $sgpr64
+; VI-NEXT:    ; implicit-def: $sgpr65
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr53
+; VI-NEXT:    ; implicit-def: $sgpr54
+; VI-NEXT:    ; implicit-def: $sgpr55
+; VI-NEXT:  .LBB109_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; VI-NEXT:    s_cselect_b32 s7, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s7, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB109_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s6, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v24, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v1, s6, v24
@@ -88543,80 +89713,30 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v62, 8, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v6, 8, v2
-; VI-NEXT:    s_branch .LBB109_5
-; VI-NEXT:  .LBB109_3:
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr48
-; VI-NEXT:    ; implicit-def: $sgpr49
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr37
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr39
-; VI-NEXT:    ; implicit-def: $sgpr53
-; VI-NEXT:    ; implicit-def: $sgpr54
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr50
-; VI-NEXT:    ; implicit-def: $sgpr51
-; VI-NEXT:    ; implicit-def: $sgpr52
-; VI-NEXT:    ; implicit-def: $sgpr66
-; VI-NEXT:    ; implicit-def: $sgpr67
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr55
-; VI-NEXT:    ; implicit-def: $sgpr64
-; VI-NEXT:    ; implicit-def: $sgpr65
-; VI-NEXT:    s_branch .LBB109_2
-; VI-NEXT:  .LBB109_4:
-; VI-NEXT:    v_mov_b32_e32 v1, s65
+; VI-NEXT:    s_branch .LBB109_6
+; VI-NEXT:  .LBB109_5:
+; VI-NEXT:    v_mov_b32_e32 v1, s55
 ; VI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
-; VI-NEXT:    v_mov_b32_e32 v1, s64
-; VI-NEXT:    v_mov_b32_e32 v12, s67
-; VI-NEXT:    v_mov_b32_e32 v15, s66
+; VI-NEXT:    v_mov_b32_e32 v1, s54
+; VI-NEXT:    v_mov_b32_e32 v12, s65
+; VI-NEXT:    v_mov_b32_e32 v15, s64
 ; VI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
-; VI-NEXT:    v_mov_b32_e32 v9, s55
-; VI-NEXT:    v_mov_b32_e32 v33, s54
-; VI-NEXT:    v_mov_b32_e32 v34, s53
-; VI-NEXT:    v_mov_b32_e32 v18, s52
-; VI-NEXT:    v_mov_b32_e32 v21, s51
-; VI-NEXT:    v_mov_b32_e32 v32, s50
-; VI-NEXT:    v_mov_b32_e32 v38, s49
-; VI-NEXT:    v_mov_b32_e32 v39, s48
-; VI-NEXT:    v_mov_b32_e32 v35, s39
-; VI-NEXT:    v_mov_b32_e32 v36, s38
-; VI-NEXT:    v_mov_b32_e32 v37, s37
-; VI-NEXT:    v_mov_b32_e32 v51, s36
-; VI-NEXT:    v_mov_b32_e32 v52, s35
-; VI-NEXT:    v_mov_b32_e32 v48, s34
-; VI-NEXT:    v_mov_b32_e32 v49, s31
-; VI-NEXT:    v_mov_b32_e32 v50, s30
+; VI-NEXT:    v_mov_b32_e32 v9, s53
+; VI-NEXT:    v_mov_b32_e32 v33, s52
+; VI-NEXT:    v_mov_b32_e32 v34, s51
+; VI-NEXT:    v_mov_b32_e32 v18, s50
+; VI-NEXT:    v_mov_b32_e32 v21, s49
+; VI-NEXT:    v_mov_b32_e32 v32, s48
+; VI-NEXT:    v_mov_b32_e32 v38, s39
+; VI-NEXT:    v_mov_b32_e32 v39, s38
+; VI-NEXT:    v_mov_b32_e32 v35, s37
+; VI-NEXT:    v_mov_b32_e32 v36, s36
+; VI-NEXT:    v_mov_b32_e32 v37, s35
+; VI-NEXT:    v_mov_b32_e32 v51, s34
+; VI-NEXT:    v_mov_b32_e32 v52, s31
+; VI-NEXT:    v_mov_b32_e32 v48, s30
+; VI-NEXT:    v_mov_b32_e32 v49, vcc_hi
+; VI-NEXT:    v_mov_b32_e32 v50, vcc_lo
 ; VI-NEXT:    v_mov_b32_e32 v40, s91
 ; VI-NEXT:    v_mov_b32_e32 v41, s90
 ; VI-NEXT:    v_mov_b32_e32 v53, s89
@@ -88661,7 +89781,7 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s10
 ; VI-NEXT:    v_mov_b32_e32 v30, s8
 ; VI-NEXT:    v_mov_b32_e32 v31, s6
-; VI-NEXT:  .LBB109_5: ; %end
+; VI-NEXT:  .LBB109_6: ; %end
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; VI-NEXT:    v_perm_b32 v3, v3, v31, s4
 ; VI-NEXT:    v_perm_b32 v2, v2, v6, s4
@@ -88756,10 +89876,8 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; VI-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload
 ; VI-NEXT:    v_perm_b32 v1, v22, v9, s4
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 60, v0
-; VI-NEXT:    v_readlane_b32 s30, v63, 18
-; VI-NEXT:    v_readlane_b32 s31, v63, 19
-; VI-NEXT:    v_readlane_b32 s67, v63, 17
-; VI-NEXT:    v_readlane_b32 s66, v63, 16
+; VI-NEXT:    v_readlane_b32 s30, v63, 16
+; VI-NEXT:    v_readlane_b32 s31, v63, 17
 ; VI-NEXT:    v_readlane_b32 s65, v63, 15
 ; VI-NEXT:    v_readlane_b32 s64, v63, 14
 ; VI-NEXT:    v_readlane_b32 s55, v63, 13
@@ -88835,55 +89953,53 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; GFX9-NEXT:    v_writelane_b32 v63, s51, 9
 ; GFX9-NEXT:    v_writelane_b32 v63, s52, 10
 ; GFX9-NEXT:    v_writelane_b32 v63, s53, 11
-; GFX9-NEXT:    v_writelane_b32 v63, s54, 12
-; GFX9-NEXT:    v_writelane_b32 v63, s55, 13
-; GFX9-NEXT:    v_writelane_b32 v63, s30, 14
-; GFX9-NEXT:    v_writelane_b32 v63, s31, 15
+; GFX9-NEXT:    v_writelane_b32 v63, s30, 12
+; GFX9-NEXT:    v_writelane_b32 v63, s31, 13
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v3
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v2
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v1
-; GFX9-NEXT:    s_cbranch_scc0 .LBB109_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB109_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s91, s5, 24
-; GFX9-NEXT:    s_lshr_b32 s54, s5, 16
+; GFX9-NEXT:    s_lshr_b32 s52, s5, 16
 ; GFX9-NEXT:    s_lshr_b32 s93, s5, 8
-; GFX9-NEXT:    s_lshr_b32 s55, s4, 16
+; GFX9-NEXT:    s_lshr_b32 s53, s4, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s4, 8
 ; GFX9-NEXT:    s_lshr_b32 s88, s29, 24
-; GFX9-NEXT:    s_lshr_b32 s52, s29, 16
+; GFX9-NEXT:    s_lshr_b32 s50, s29, 16
 ; GFX9-NEXT:    s_lshr_b32 s90, s29, 8
-; GFX9-NEXT:    s_lshr_b32 s53, s28, 16
+; GFX9-NEXT:    s_lshr_b32 s51, s28, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s28, 8
 ; GFX9-NEXT:    s_lshr_b32 s77, s27, 24
-; GFX9-NEXT:    s_lshr_b32 s50, s27, 16
+; GFX9-NEXT:    s_lshr_b32 s48, s27, 16
 ; GFX9-NEXT:    s_lshr_b32 s79, s27, 8
-; GFX9-NEXT:    s_lshr_b32 s51, s26, 16
+; GFX9-NEXT:    s_lshr_b32 s49, s26, 16
 ; GFX9-NEXT:    s_lshr_b32 s92, s26, 8
 ; GFX9-NEXT:    s_lshr_b32 s74, s25, 24
-; GFX9-NEXT:    s_lshr_b32 s48, s25, 16
+; GFX9-NEXT:    s_lshr_b32 s38, s25, 16
 ; GFX9-NEXT:    s_lshr_b32 s76, s25, 8
-; GFX9-NEXT:    s_lshr_b32 s49, s24, 16
+; GFX9-NEXT:    s_lshr_b32 s39, s24, 16
 ; GFX9-NEXT:    s_lshr_b32 s89, s24, 8
 ; GFX9-NEXT:    s_lshr_b32 s63, s23, 24
-; GFX9-NEXT:    s_lshr_b32 s38, s23, 16
+; GFX9-NEXT:    s_lshr_b32 s36, s23, 16
 ; GFX9-NEXT:    s_lshr_b32 s73, s23, 8
-; GFX9-NEXT:    s_lshr_b32 s39, s22, 16
+; GFX9-NEXT:    s_lshr_b32 s37, s22, 16
 ; GFX9-NEXT:    s_lshr_b32 s78, s22, 8
 ; GFX9-NEXT:    s_lshr_b32 s60, s21, 24
-; GFX9-NEXT:    s_lshr_b32 s36, s21, 16
+; GFX9-NEXT:    s_lshr_b32 s34, s21, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s21, 8
-; GFX9-NEXT:    s_lshr_b32 s37, s20, 16
+; GFX9-NEXT:    s_lshr_b32 s35, s20, 16
 ; GFX9-NEXT:    s_lshr_b32 s75, s20, 8
 ; GFX9-NEXT:    s_lshr_b32 s58, s19, 24
-; GFX9-NEXT:    s_lshr_b32 s34, s19, 16
+; GFX9-NEXT:    s_lshr_b32 s30, s19, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s19, 8
-; GFX9-NEXT:    s_lshr_b32 s35, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s31, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s72, s18, 8
 ; GFX9-NEXT:    s_lshr_b32 s56, s17, 24
-; GFX9-NEXT:    s_lshr_b32 s30, s17, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s57, s17, 8
-; GFX9-NEXT:    s_lshr_b32 s31, s16, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s61, s16, 8
 ; GFX9-NEXT:    s_lshr_b64 s[44:45], s[4:5], 24
 ; GFX9-NEXT:    s_lshr_b64 s[42:43], s[28:29], 24
@@ -88893,8 +90009,64 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; GFX9-NEXT:    s_lshr_b64 s[10:11], s[20:21], 24
 ; GFX9-NEXT:    s_lshr_b64 s[8:9], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB109_4
-; GFX9-NEXT:  .LBB109_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[46:47], 0
+; GFX9-NEXT:    s_branch .LBB109_3
+; GFX9-NEXT:  .LBB109_2:
+; GFX9-NEXT:    s_mov_b64 s[46:47], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $vcc_hi
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr31
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr35
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr34
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr37
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr36
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr39
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr38
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr49
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr48
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr51
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr50
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr53
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr52
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:  .LBB109_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[46:47], s[46:47], exec
+; GFX9-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB109_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_and_b32 s6, s17, 0xffff0000
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v2, s6, v1
@@ -89250,91 +90422,41 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v26, 24, v4
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v4, 8, v4
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v3, 8, v3
-; GFX9-NEXT:    s_branch .LBB109_5
-; GFX9-NEXT:  .LBB109_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr31
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr35
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr37
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr36
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr39
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr38
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr49
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr48
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr51
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr50
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr53
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr52
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr55
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr54
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    s_branch .LBB109_2
-; GFX9-NEXT:  .LBB109_4:
+; GFX9-NEXT:    s_branch .LBB109_6
+; GFX9-NEXT:  .LBB109_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
-; GFX9-NEXT:    v_mov_b32_e32 v1, s30
+; GFX9-NEXT:    v_mov_b32_e32 v1, vcc_lo
 ; GFX9-NEXT:    v_mov_b32_e32 v56, s4
-; GFX9-NEXT:    v_mov_b32_e32 v47, s55
+; GFX9-NEXT:    v_mov_b32_e32 v47, s53
 ; GFX9-NEXT:    v_mov_b32_e32 v46, s5
-; GFX9-NEXT:    v_mov_b32_e32 v44, s54
+; GFX9-NEXT:    v_mov_b32_e32 v44, s52
 ; GFX9-NEXT:    v_mov_b32_e32 v45, s28
-; GFX9-NEXT:    v_mov_b32_e32 v43, s53
+; GFX9-NEXT:    v_mov_b32_e32 v43, s51
 ; GFX9-NEXT:    v_mov_b32_e32 v42, s29
-; GFX9-NEXT:    v_mov_b32_e32 v40, s52
+; GFX9-NEXT:    v_mov_b32_e32 v40, s50
 ; GFX9-NEXT:    v_mov_b32_e32 v41, s26
-; GFX9-NEXT:    v_mov_b32_e32 v55, s51
+; GFX9-NEXT:    v_mov_b32_e32 v55, s49
 ; GFX9-NEXT:    v_mov_b32_e32 v54, s27
-; GFX9-NEXT:    v_mov_b32_e32 v52, s50
+; GFX9-NEXT:    v_mov_b32_e32 v52, s48
 ; GFX9-NEXT:    v_mov_b32_e32 v53, s24
-; GFX9-NEXT:    v_mov_b32_e32 v51, s49
+; GFX9-NEXT:    v_mov_b32_e32 v51, s39
 ; GFX9-NEXT:    v_mov_b32_e32 v49, s25
-; GFX9-NEXT:    v_mov_b32_e32 v39, s48
+; GFX9-NEXT:    v_mov_b32_e32 v39, s38
 ; GFX9-NEXT:    v_mov_b32_e32 v48, s22
-; GFX9-NEXT:    v_mov_b32_e32 v38, s39
+; GFX9-NEXT:    v_mov_b32_e32 v38, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v34, s23
-; GFX9-NEXT:    v_mov_b32_e32 v33, s38
+; GFX9-NEXT:    v_mov_b32_e32 v33, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v50, s20
-; GFX9-NEXT:    v_mov_b32_e32 v36, s37
+; GFX9-NEXT:    v_mov_b32_e32 v36, s35
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s21
-; GFX9-NEXT:    v_mov_b32_e32 v27, s36
+; GFX9-NEXT:    v_mov_b32_e32 v27, s34
 ; GFX9-NEXT:    v_mov_b32_e32 v35, s18
-; GFX9-NEXT:    v_mov_b32_e32 v37, s35
+; GFX9-NEXT:    v_mov_b32_e32 v37, s31
 ; GFX9-NEXT:    v_mov_b32_e32 v32, s19
-; GFX9-NEXT:    v_mov_b32_e32 v29, s34
+; GFX9-NEXT:    v_mov_b32_e32 v29, s30
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s16
-; GFX9-NEXT:    v_mov_b32_e32 v31, s31
+; GFX9-NEXT:    v_mov_b32_e32 v31, vcc_hi
 ; GFX9-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s95
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s91
@@ -89368,7 +90490,7 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v12, s10
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s6
-; GFX9-NEXT:  .LBB109_5: ; %end
+; GFX9-NEXT:  .LBB109_6: ; %end
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; GFX9-NEXT:    v_perm_b32 v17, v31, v17, s4
 ; GFX9-NEXT:    v_perm_b32 v3, v30, v3, s4
@@ -89381,10 +90503,8 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_perm_b32 v2, v44, v2, s4
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
-; GFX9-NEXT:    v_readlane_b32 s30, v63, 14
-; GFX9-NEXT:    v_readlane_b32 s31, v63, 15
-; GFX9-NEXT:    v_readlane_b32 s55, v63, 13
-; GFX9-NEXT:    v_readlane_b32 s54, v63, 12
+; GFX9-NEXT:    v_readlane_b32 s30, v63, 12
+; GFX9-NEXT:    v_readlane_b32 s31, v63, 13
 ; GFX9-NEXT:    v_readlane_b32 s53, v63, 11
 ; GFX9-NEXT:    v_readlane_b32 s52, v63, 10
 ; GFX9-NEXT:    v_readlane_b32 s51, v63, 9
@@ -89504,42 +90624,41 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v40, s38, 4
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v40, s39, 5
 ; GFX11-TRUE16-NEXT:    v_writelane_b32 v40, s48, 6
-; GFX11-TRUE16-NEXT:    v_writelane_b32 v40, s49, 7
-; GFX11-TRUE16-NEXT:    v_writelane_b32 v40, s30, 8
-; GFX11-TRUE16-NEXT:    v_writelane_b32 v40, s31, 9
+; GFX11-TRUE16-NEXT:    v_writelane_b32 v40, s30, 7
+; GFX11-TRUE16-NEXT:    v_writelane_b32 v40, s31, 8
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s42, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB109_3
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB109_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s78, s27, 24
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s48, s27, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s39, s27, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s88, s27, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s49, s26, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s48, s26, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s90, s26, 8
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s75, s25, 24
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s38, s25, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s37, s25, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s77, s25, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s39, s24, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s38, s24, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s89, s24, 8
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s72, s23, 24
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s36, s23, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s35, s23, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s74, s23, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s37, s22, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s36, s22, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s79, s22, 8
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s61, s21, 24
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s34, s21, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s31, s21, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s63, s21, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s35, s20, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s34, s20, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s76, s20, 8
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s58, s19, 24
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s30, s19, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 vcc_hi, s19, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s60, s19, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s31, s18, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s30, s18, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s73, s18, 8
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s47, s17, 24
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s95, s17, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s57, s17, 8
-; GFX11-TRUE16-NEXT:    s_lshr_b32 vcc_hi, s16, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 vcc_lo, s16, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s62, s16, 8
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s45, s3, 24
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s93, s3, 16
@@ -89559,9 +90678,64 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-TRUE16-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-TRUE16-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB109_4
-; GFX11-TRUE16-NEXT:  .LBB109_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB109_3
+; GFX11-TRUE16-NEXT:  .LBB109_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s42, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr92
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr91
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr94
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr93
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vcc_lo
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr95
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr30
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vcc_hi
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr34
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr31
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr36
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr35
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr38
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr28
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr37
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr48
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr39
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-TRUE16-NEXT:  .LBB109_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s5, s42, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB109_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s4, s1, 16
 ; GFX11-TRUE16-NEXT:    s_and_b32 s1, s1, 0xffff0000
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s4
@@ -89913,69 +91087,19 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 8, v3
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 8, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1
-; GFX11-TRUE16-NEXT:    s_branch .LBB109_5
-; GFX11-TRUE16-NEXT:  .LBB109_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr92
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr4
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr91
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr94
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr93
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vcc_hi
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr95
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr31
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr30
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr35
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr34
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr37
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr36
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr39
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr28
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr38
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr49
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr48
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-TRUE16-NEXT:    s_branch .LBB109_2
-; GFX11-TRUE16-NEXT:  .LBB109_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB109_6
+; GFX11-TRUE16-NEXT:  .LBB109_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v52, s26 :: v_dual_mov_b32 v51, s27
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v54, s49 :: v_dual_mov_b32 v53, s48
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v55, s24 :: v_dual_mov_b32 v50, s39
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v54, s48 :: v_dual_mov_b32 v53, s39
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v55, s24 :: v_dual_mov_b32 v50, s38
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v49, s25 :: v_dual_mov_b32 v48, s22
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v39, s38 :: v_dual_mov_b32 v38, s37
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v34, s23 :: v_dual_mov_b32 v37, s36
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v35, s20 :: v_dual_mov_b32 v36, s35
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v30, s21 :: v_dual_mov_b32 v33, s34
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s18 :: v_dual_mov_b32 v32, s31
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v28, s19 :: v_dual_mov_b32 v29, s30
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v26, s16 :: v_dual_mov_b32 v27, vcc_hi
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v39, s37 :: v_dual_mov_b32 v38, s36
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v34, s23 :: v_dual_mov_b32 v37, s35
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v35, s20 :: v_dual_mov_b32 v36, s34
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v30, s21 :: v_dual_mov_b32 v33, s31
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s18 :: v_dual_mov_b32 v32, s30
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v28, s19 :: v_dual_mov_b32 v29, vcc_hi
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v26, s16 :: v_dual_mov_b32 v27, vcc_lo
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s17 :: v_dual_mov_b32 v22, s2
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s95 :: v_dual_mov_b32 v24, s94
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v20, s3 :: v_dual_mov_b32 v21, s93
@@ -89997,7 +91121,7 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v9, s14 :: v_dual_mov_b32 v10, s12
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v11, s10 :: v_dual_mov_b32 v12, s8
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v13, s6 :: v_dual_mov_b32 v14, s4
-; GFX11-TRUE16-NEXT:  .LBB109_5: ; %end
+; GFX11-TRUE16-NEXT:  .LBB109_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_perm_b32 v14, v19, v14, 0xc0c0004
 ; GFX11-TRUE16-NEXT:    v_perm_b32 v1, v18, v1, 0xc0c0004
@@ -90064,14 +91188,13 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v6, v20, v10
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v7, v21, v7
 ; GFX11-TRUE16-NEXT:    v_or_b32_e32 v8, v15, v22
-; GFX11-TRUE16-NEXT:    v_readlane_b32 s30, v40, 8
+; GFX11-TRUE16-NEXT:    v_readlane_b32 s30, v40, 7
 ; GFX11-TRUE16-NEXT:    s_clause 0x3
 ; GFX11-TRUE16-NEXT:    scratch_store_b128 v0, v[1:4], off
 ; GFX11-TRUE16-NEXT:    scratch_store_b128 v0, v[11:14], off offset:16
 ; GFX11-TRUE16-NEXT:    scratch_store_b128 v0, v[16:19], off offset:32
 ; GFX11-TRUE16-NEXT:    scratch_store_b128 v0, v[5:8], off offset:48
-; GFX11-TRUE16-NEXT:    v_readlane_b32 s31, v40, 9
-; GFX11-TRUE16-NEXT:    v_readlane_b32 s49, v40, 7
+; GFX11-TRUE16-NEXT:    v_readlane_b32 s31, v40, 8
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s48, v40, 6
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s39, v40, 5
 ; GFX11-TRUE16-NEXT:    v_readlane_b32 s38, v40, 4
@@ -90098,42 +91221,41 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v40, s38, 4
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v40, s39, 5
 ; GFX11-FAKE16-NEXT:    v_writelane_b32 v40, s48, 6
-; GFX11-FAKE16-NEXT:    v_writelane_b32 v40, s49, 7
-; GFX11-FAKE16-NEXT:    v_writelane_b32 v40, s30, 8
-; GFX11-FAKE16-NEXT:    v_writelane_b32 v40, s31, 9
+; GFX11-FAKE16-NEXT:    v_writelane_b32 v40, s30, 7
+; GFX11-FAKE16-NEXT:    v_writelane_b32 v40, s31, 8
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s28, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s42, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB109_3
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB109_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s78, s27, 24
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s48, s27, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s39, s27, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s88, s27, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s49, s26, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s48, s26, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s90, s26, 8
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s75, s25, 24
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s38, s25, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s37, s25, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s77, s25, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s39, s24, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s38, s24, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s89, s24, 8
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s72, s23, 24
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s36, s23, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s35, s23, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s74, s23, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s37, s22, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s36, s22, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s79, s22, 8
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s61, s21, 24
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s34, s21, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s31, s21, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s63, s21, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s35, s20, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s34, s20, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s76, s20, 8
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s58, s19, 24
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s30, s19, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 vcc_hi, s19, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s60, s19, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s31, s18, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s30, s18, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s73, s18, 8
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s47, s17, 24
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s95, s17, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s57, s17, 8
-; GFX11-FAKE16-NEXT:    s_lshr_b32 vcc_hi, s16, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 vcc_lo, s16, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s62, s16, 8
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s45, s3, 24
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s93, s3, 16
@@ -90153,9 +91275,64 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b64 s[8:9], s[16:17], 24
 ; GFX11-FAKE16-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-FAKE16-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s42
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB109_4
-; GFX11-FAKE16-NEXT:  .LBB109_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB109_3
+; GFX11-FAKE16-NEXT:  .LBB109_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s42, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr92
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr91
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr94
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr93
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vcc_lo
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr95
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr30
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vcc_hi
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr34
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr31
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr36
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr35
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr38
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr28
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr37
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr48
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr39
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-FAKE16-NEXT:  .LBB109_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s5, s42, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB109_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s4, s1, 16
 ; GFX11-FAKE16-NEXT:    s_and_b32 s1, s1, 0xffff0000
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v1, 0x40c00000, s4
@@ -90512,69 +91689,19 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v96, 24, v2
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 8, v2
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1
-; GFX11-FAKE16-NEXT:    s_branch .LBB109_5
-; GFX11-FAKE16-NEXT:  .LBB109_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr92
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr4
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr91
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr94
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr93
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vcc_hi
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr95
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr31
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr30
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr35
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr34
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr37
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr36
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr39
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr28
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr38
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr49
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr48
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-FAKE16-NEXT:    s_branch .LBB109_2
-; GFX11-FAKE16-NEXT:  .LBB109_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB109_6
+; GFX11-FAKE16-NEXT:  .LBB109_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v50, s26 :: v_dual_mov_b32 v49, s27
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v52, s49 :: v_dual_mov_b32 v51, s48
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v53, s24 :: v_dual_mov_b32 v48, s39
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v36, s25 :: v_dual_mov_b32 v39, s38
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v37, s22 :: v_dual_mov_b32 v38, s37
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v52, s48 :: v_dual_mov_b32 v51, s39
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v53, s24 :: v_dual_mov_b32 v48, s38
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v36, s25 :: v_dual_mov_b32 v39, s37
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v37, s22 :: v_dual_mov_b32 v38, s36
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v31, s23 :: v_dual_mov_b32 v34, s20
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v33, s36 :: v_dual_mov_b32 v28, s21
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v35, s35 :: v_dual_mov_b32 v30, s18
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v29, s34 :: v_dual_mov_b32 v32, s31
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v33, s35 :: v_dual_mov_b32 v28, s21
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v35, s34 :: v_dual_mov_b32 v30, s18
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v29, s31 :: v_dual_mov_b32 v32, s30
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v24, s19 :: v_dual_mov_b32 v25, s16
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v26, s30 :: v_dual_mov_b32 v27, vcc_hi
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v26, vcc_hi :: v_dual_mov_b32 v27, vcc_lo
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v21, s17 :: v_dual_mov_b32 v20, s2
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v23, s95 :: v_dual_mov_b32 v22, s94
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v18, s3 :: v_dual_mov_b32 v19, s93
@@ -90596,7 +91723,7 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v7, s14 :: v_dual_mov_b32 v8, s12
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v9, s10 :: v_dual_mov_b32 v10, s8
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v11, s6 :: v_dual_mov_b32 v12, s4
-; GFX11-FAKE16-NEXT:  .LBB109_5: ; %end
+; GFX11-FAKE16-NEXT:  .LBB109_6: ; %end
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v12, v17, v12, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v15, v15, v96, 0xc0c0004
@@ -90663,14 +91790,13 @@ define inreg <64 x i8> @bitcast_v32bf16_to_v64i8_scalar(<32 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, v19, v21
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v7, v22, v23
 ; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, v13, v20
-; GFX11-FAKE16-NEXT:    v_readlane_b32 s30, v40, 8
+; GFX11-FAKE16-NEXT:    v_readlane_b32 s30, v40, 7
 ; GFX11-FAKE16-NEXT:    s_clause 0x3
 ; GFX11-FAKE16-NEXT:    scratch_store_b128 v0, v[1:4], off
 ; GFX11-FAKE16-NEXT:    scratch_store_b128 v0, v[9:12], off offset:16
 ; GFX11-FAKE16-NEXT:    scratch_store_b128 v0, v[14:17], off offset:32
 ; GFX11-FAKE16-NEXT:    scratch_store_b128 v0, v[5:8], off offset:48
-; GFX11-FAKE16-NEXT:    v_readlane_b32 s31, v40, 9
-; GFX11-FAKE16-NEXT:    v_readlane_b32 s49, v40, 7
+; GFX11-FAKE16-NEXT:    v_readlane_b32 s31, v40, 8
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s48, v40, 6
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s39, v40, 5
 ; GFX11-FAKE16-NEXT:    v_readlane_b32 s38, v40, 4
@@ -93263,545 +94389,638 @@ define inreg <32 x bfloat> @bitcast_v64i8_to_v32bf16_scalar(<64 x i8> inreg %a,
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32
 ; SI-NEXT:    ; implicit-def: $vgpr44 : SGPR spill to VGPR lane
-; SI-NEXT:    v_readfirstlane_b32 s7, v1
-; SI-NEXT:    v_writelane_b32 v44, s18, 0
-; SI-NEXT:    v_writelane_b32 v44, s17, 1
-; SI-NEXT:    v_writelane_b32 v44, s16, 2
-; SI-NEXT:    v_writelane_b32 v44, s22, 3
-; SI-NEXT:    v_writelane_b32 v44, s23, 4
-; SI-NEXT:    v_writelane_b32 v44, s21, 5
-; SI-NEXT:    v_writelane_b32 v44, s20, 6
-; SI-NEXT:    v_writelane_b32 v44, s26, 7
-; SI-NEXT:    v_writelane_b32 v44, s27, 8
-; SI-NEXT:    v_writelane_b32 v44, s25, 9
-; SI-NEXT:    v_writelane_b32 v44, s24, 10
-; SI-NEXT:    v_writelane_b32 v44, s29, 11
-; SI-NEXT:    v_writelane_b32 v44, s28, 12
 ; SI-NEXT:    s_mov_b32 s6, s19
-; SI-NEXT:    v_readfirstlane_b32 s89, v30
-; SI-NEXT:    v_readfirstlane_b32 s63, v29
-; SI-NEXT:    v_readfirstlane_b32 s72, v28
-; SI-NEXT:    v_readfirstlane_b32 s75, v27
-; SI-NEXT:    v_readfirstlane_b32 s77, v26
+; SI-NEXT:    v_writelane_b32 v44, s18, 0
+; SI-NEXT:    v_readfirstlane_b32 s34, v30
+; SI-NEXT:    v_readfirstlane_b32 s72, v29
+; SI-NEXT:    v_readfirstlane_b32 s73, v28
+; SI-NEXT:    v_readfirstlane_b32 s76, v27
+; SI-NEXT:    v_readfirstlane_b32 s78, v26
 ; SI-NEXT:    v_readfirstlane_b32 s59, v25
 ; SI-NEXT:    v_readfirstlane_b32 s60, v24
-; SI-NEXT:    v_readfirstlane_b32 s62, v23
-; SI-NEXT:    v_readfirstlane_b32 s73, v22
+; SI-NEXT:    v_readfirstlane_b32 s63, v23
+; SI-NEXT:    v_readfirstlane_b32 s75, v22
 ; SI-NEXT:    v_readfirstlane_b32 s47, v21
 ; SI-NEXT:    v_readfirstlane_b32 s56, v20
-; SI-NEXT:    v_readfirstlane_b32 s58, v19
+; SI-NEXT:    v_readfirstlane_b32 s62, v19
 ; SI-NEXT:    v_readfirstlane_b32 s61, v18
 ; SI-NEXT:    v_readfirstlane_b32 s43, v17
 ; SI-NEXT:    v_readfirstlane_b32 s44, v16
-; SI-NEXT:    v_readfirstlane_b32 s46, v15
+; SI-NEXT:    v_readfirstlane_b32 s58, v15
 ; SI-NEXT:    v_readfirstlane_b32 s57, v14
 ; SI-NEXT:    v_readfirstlane_b32 s15, v13
 ; SI-NEXT:    v_readfirstlane_b32 s40, v12
-; SI-NEXT:    v_readfirstlane_b32 s42, v11
+; SI-NEXT:    v_readfirstlane_b32 s46, v11
 ; SI-NEXT:    v_readfirstlane_b32 s45, v10
 ; SI-NEXT:    v_readfirstlane_b32 s11, v9
 ; SI-NEXT:    v_readfirstlane_b32 s12, v8
-; SI-NEXT:    v_readfirstlane_b32 s14, v7
+; SI-NEXT:    v_readfirstlane_b32 s42, v7
 ; SI-NEXT:    v_readfirstlane_b32 s41, v6
-; SI-NEXT:    v_readfirstlane_b32 s19, v5
+; SI-NEXT:    v_readfirstlane_b32 s8, v5
 ; SI-NEXT:    v_readfirstlane_b32 s9, v4
-; SI-NEXT:    v_readfirstlane_b32 s10, v3
+; SI-NEXT:    v_readfirstlane_b32 s14, v3
 ; SI-NEXT:    v_readfirstlane_b32 s13, v2
-; SI-NEXT:    v_readfirstlane_b32 s90, v0
-; SI-NEXT:    v_writelane_b32 v44, s7, 13
-; SI-NEXT:    v_writelane_b32 v44, s90, 14
+; SI-NEXT:    v_readfirstlane_b32 s10, v1
+; SI-NEXT:    v_readfirstlane_b32 s19, v0
+; SI-NEXT:    v_writelane_b32 v44, s6, 1
+; SI-NEXT:    v_writelane_b32 v44, s63, 2
 ; SI-NEXT:    s_waitcnt vmcnt(14)
 ; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v31
 ; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
-; SI-NEXT:    v_readfirstlane_b32 s87, v32
-; SI-NEXT:    v_readfirstlane_b32 s86, v33
-; SI-NEXT:    v_readfirstlane_b32 s98, v34
-; SI-NEXT:    v_readfirstlane_b32 s99, v35
-; SI-NEXT:    v_readfirstlane_b32 s82, v36
+; SI-NEXT:    v_readfirstlane_b32 s84, v32
+; SI-NEXT:    v_readfirstlane_b32 s83, v33
+; SI-NEXT:    v_readfirstlane_b32 s96, v34
+; SI-NEXT:    v_readfirstlane_b32 s97, v35
+; SI-NEXT:    v_readfirstlane_b32 s80, v36
 ; SI-NEXT:    s_waitcnt vmcnt(13)
-; SI-NEXT:    v_readfirstlane_b32 s81, v37
+; SI-NEXT:    v_readfirstlane_b32 s71, v37
 ; SI-NEXT:    s_waitcnt vmcnt(12)
-; SI-NEXT:    v_readfirstlane_b32 s84, v38
+; SI-NEXT:    v_readfirstlane_b32 s82, v38
 ; SI-NEXT:    s_waitcnt vmcnt(11)
-; SI-NEXT:    v_readfirstlane_b32 s85, v39
+; SI-NEXT:    v_readfirstlane_b32 s87, v39
 ; SI-NEXT:    s_waitcnt vmcnt(10)
-; SI-NEXT:    v_readfirstlane_b32 s68, v48
+; SI-NEXT:    v_readfirstlane_b32 s66, v48
 ; SI-NEXT:    s_waitcnt vmcnt(9)
-; SI-NEXT:    v_readfirstlane_b32 s67, v49
+; SI-NEXT:    v_readfirstlane_b32 s65, v49
 ; SI-NEXT:    s_waitcnt vmcnt(8)
-; SI-NEXT:    v_readfirstlane_b32 s70, v50
+; SI-NEXT:    v_readfirstlane_b32 s68, v50
 ; SI-NEXT:    s_waitcnt vmcnt(7)
-; SI-NEXT:    v_readfirstlane_b32 s80, v51
+; SI-NEXT:    v_readfirstlane_b32 s70, v51
 ; SI-NEXT:    s_waitcnt vmcnt(6)
-; SI-NEXT:    v_readfirstlane_b32 s53, v52
+; SI-NEXT:    v_readfirstlane_b32 s36, v52
 ; SI-NEXT:    s_waitcnt vmcnt(5)
-; SI-NEXT:    v_readfirstlane_b32 s52, v53
+; SI-NEXT:    v_readfirstlane_b32 s50, v53
 ; SI-NEXT:    s_waitcnt vmcnt(4)
-; SI-NEXT:    v_readfirstlane_b32 s64, v54
+; SI-NEXT:    v_readfirstlane_b32 s54, v54
 ; SI-NEXT:    s_waitcnt vmcnt(3)
-; SI-NEXT:    v_readfirstlane_b32 s66, v55
+; SI-NEXT:    v_readfirstlane_b32 s64, v55
 ; SI-NEXT:    s_waitcnt vmcnt(2)
-; SI-NEXT:    v_readfirstlane_b32 s48, v40
+; SI-NEXT:    v_readfirstlane_b32 s37, v40
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_readfirstlane_b32 s39, v41
 ; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_readfirstlane_b32 s51, v42
-; SI-NEXT:    s_cbranch_scc0 .LBB111_4
+; SI-NEXT:    v_readfirstlane_b32 s49, v42
+; SI-NEXT:    s_cbranch_scc0 .LBB111_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_lshl_b32 s5, s17, 24
-; SI-NEXT:    s_or_b32 s74, s5, s4
-; SI-NEXT:    s_and_b32 s4, s18, 0xff
+; SI-NEXT:    s_or_b32 s98, s5, s4
+; SI-NEXT:    v_readlane_b32 s4, v44, 0
+; SI-NEXT:    s_and_b32 s4, s4, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_lshl_b32 s5, s6, 24
-; SI-NEXT:    s_or_b32 s76, s5, s4
+; SI-NEXT:    s_or_b32 s85, s5, s4
 ; SI-NEXT:    s_and_b32 s4, s20, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s21, 8
 ; SI-NEXT:    s_or_b32 s4, s4, s5
 ; SI-NEXT:    s_and_b32 s5, s22, 0xff
-; SI-NEXT:    s_mov_b32 s8, s6
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_lshl_b32 s6, s23, 24
-; SI-NEXT:    s_or_b32 s79, s6, s5
+; SI-NEXT:    s_or_b32 s88, s6, s5
 ; SI-NEXT:    s_and_b32 s5, s24, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_lshl_b32 s6, s25, 24
-; SI-NEXT:    s_or_b32 s78, s6, s5
+; SI-NEXT:    s_or_b32 s79, s6, s5
 ; SI-NEXT:    s_and_b32 s5, s26, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_lshl_b32 s6, s27, 24
-; SI-NEXT:    s_or_b32 s88, s6, s5
+; SI-NEXT:    s_or_b32 s90, s6, s5
 ; SI-NEXT:    s_and_b32 s5, s28, 0xff
 ; SI-NEXT:    s_lshl_b32 s6, s29, 8
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_and_b32 s6, s90, 0xff
+; SI-NEXT:    s_and_b32 s6, s19, 0xff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_lshl_b32 s7, s7, 24
-; SI-NEXT:    s_or_b32 s91, s7, s6
+; SI-NEXT:    s_lshl_b32 s7, s10, 24
+; SI-NEXT:    s_or_b32 s92, s7, s6
 ; SI-NEXT:    s_and_b32 s6, s13, 0xff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_lshl_b32 s7, s10, 24
-; SI-NEXT:    s_or_b32 s90, s7, s6
+; SI-NEXT:    s_lshl_b32 s7, s14, 24
+; SI-NEXT:    s_or_b32 s91, s7, s6
 ; SI-NEXT:    s_and_b32 s6, s9, 0xff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_lshl_b32 s7, s19, 24
-; SI-NEXT:    s_or_b32 s92, s7, s6
+; SI-NEXT:    s_lshl_b32 s7, s8, 24
+; SI-NEXT:    s_or_b32 s93, s7, s6
 ; SI-NEXT:    s_and_b32 s6, s41, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s14, 8
-; SI-NEXT:    s_or_b32 s6, s6, s7
-; SI-NEXT:    s_and_b32 s7, s12, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s11, 24
-; SI-NEXT:    s_or_b32 s94, s17, s7
-; SI-NEXT:    s_and_b32 s7, s45, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s42, 24
-; SI-NEXT:    s_or_b32 s93, s17, s7
-; SI-NEXT:    s_and_b32 s7, s40, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s15, 24
-; SI-NEXT:    s_or_b32 s95, s17, s7
-; SI-NEXT:    s_and_b32 s7, s57, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s46, 8
-; SI-NEXT:    s_or_b32 vcc_lo, s7, s17
-; SI-NEXT:    s_and_b32 s7, s44, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s43, 24
-; SI-NEXT:    s_or_b32 s31, s17, s7
-; SI-NEXT:    s_and_b32 s7, s61, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s58, 24
-; SI-NEXT:    s_or_b32 s30, s17, s7
-; SI-NEXT:    s_and_b32 s7, s56, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s47, 24
-; SI-NEXT:    s_or_b32 s34, s17, s7
-; SI-NEXT:    s_and_b32 s7, s73, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s62, 8
-; SI-NEXT:    s_or_b32 vcc_hi, s7, s17
-; SI-NEXT:    s_and_b32 s7, s60, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s59, 24
-; SI-NEXT:    s_or_b32 s36, s17, s7
-; SI-NEXT:    s_and_b32 s7, s77, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s75, 24
-; SI-NEXT:    s_or_b32 s35, s17, s7
-; SI-NEXT:    s_and_b32 s7, s72, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s63, 24
-; SI-NEXT:    s_or_b32 s37, s17, s7
-; SI-NEXT:    s_and_b32 s7, s89, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s51, 8
-; SI-NEXT:    s_or_b32 s71, s7, s17
-; SI-NEXT:    s_and_b32 s7, s39, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s48, 24
-; SI-NEXT:    s_or_b32 s49, s17, s7
-; SI-NEXT:    s_and_b32 s7, s66, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s64, 24
-; SI-NEXT:    s_or_b32 s38, s17, s7
-; SI-NEXT:    s_and_b32 s7, s52, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s53, 24
-; SI-NEXT:    s_or_b32 s50, s17, s7
-; SI-NEXT:    s_and_b32 s7, s80, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s70, 8
-; SI-NEXT:    s_or_b32 s83, s7, s17
-; SI-NEXT:    s_and_b32 s7, s67, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s68, 24
-; SI-NEXT:    s_or_b32 s55, s17, s7
-; SI-NEXT:    s_and_b32 s7, s85, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s84, 24
-; SI-NEXT:    s_or_b32 s54, s17, s7
-; SI-NEXT:    s_and_b32 s7, s81, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s82, 24
-; SI-NEXT:    s_or_b32 s65, s17, s7
-; SI-NEXT:    s_and_b32 s7, s99, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s98, 8
-; SI-NEXT:    s_or_b32 s16, s7, s17
-; SI-NEXT:    s_and_b32 s7, s86, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_lshl_b32 s17, s87, 24
-; SI-NEXT:    s_or_b32 s69, s17, s7
-; SI-NEXT:    s_lshl_b32 s17, s4, 16
-; SI-NEXT:    s_lshl_b32 s18, s5, 16
-; SI-NEXT:    s_lshl_b32 s7, s6, 16
-; SI-NEXT:    s_lshl_b32 s6, vcc_lo, 16
-; SI-NEXT:    s_lshl_b32 s97, vcc_hi, 16
-; SI-NEXT:    s_lshl_b32 s96, s71, 16
-; SI-NEXT:    s_lshl_b32 s83, s83, 16
-; SI-NEXT:    s_lshl_b32 s71, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB111_3
-; SI-NEXT:  .LBB111_2: ; %cmp.true
-; SI-NEXT:    s_add_i32 s99, s99, 3
-; SI-NEXT:    s_and_b32 s4, s99, 0xff
-; SI-NEXT:    s_lshl_b32 s5, s98, 8
-; SI-NEXT:    s_add_i32 s86, s86, 3
+; SI-NEXT:    s_lshl_b32 s7, s42, 8
+; SI-NEXT:    s_or_b32 s69, s6, s7
+; SI-NEXT:    s_and_b32 s6, s12, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s11, 24
+; SI-NEXT:    s_or_b32 s95, s7, s6
+; SI-NEXT:    s_and_b32 s6, s45, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s46, 24
+; SI-NEXT:    s_or_b32 s94, s7, s6
+; SI-NEXT:    s_and_b32 s6, s40, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s15, 24
+; SI-NEXT:    s_or_b32 vcc_lo, s7, s6
+; SI-NEXT:    s_and_b32 s6, s57, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s58, 8
+; SI-NEXT:    s_or_b32 s81, s6, s7
+; SI-NEXT:    s_and_b32 s6, s44, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s43, 24
+; SI-NEXT:    s_or_b32 s30, s7, s6
+; SI-NEXT:    s_and_b32 s6, s61, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s62, 24
+; SI-NEXT:    s_or_b32 vcc_hi, s7, s6
+; SI-NEXT:    s_and_b32 s6, s56, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s47, 24
+; SI-NEXT:    s_or_b32 s31, s7, s6
+; SI-NEXT:    s_and_b32 s6, s75, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s63, 8
+; SI-NEXT:    s_or_b32 s86, s6, s7
+; SI-NEXT:    s_and_b32 s6, s60, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s59, 24
+; SI-NEXT:    s_or_b32 s35, s7, s6
+; SI-NEXT:    s_and_b32 s6, s78, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s76, 24
+; SI-NEXT:    s_or_b32 s99, s7, s6
+; SI-NEXT:    s_and_b32 s6, s73, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s72, 24
+; SI-NEXT:    s_or_b32 s38, s7, s6
+; SI-NEXT:    s_and_b32 s6, s34, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s49, 8
+; SI-NEXT:    s_or_b32 s18, s6, s7
+; SI-NEXT:    s_and_b32 s6, s39, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s37, 24
+; SI-NEXT:    s_or_b32 s48, s7, s6
+; SI-NEXT:    s_and_b32 s6, s64, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s54, 24
+; SI-NEXT:    s_or_b32 s89, s7, s6
+; SI-NEXT:    s_and_b32 s6, s50, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s36, 24
+; SI-NEXT:    s_or_b32 s51, s7, s6
+; SI-NEXT:    s_and_b32 s6, s70, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s68, 8
+; SI-NEXT:    s_mov_b32 s74, s60
+; SI-NEXT:    s_mov_b32 s60, s57
+; SI-NEXT:    s_mov_b32 s57, s58
+; SI-NEXT:    s_mov_b32 s58, s44
+; SI-NEXT:    s_mov_b32 s44, s41
+; SI-NEXT:    s_mov_b32 s41, s42
+; SI-NEXT:    s_mov_b32 s42, s12
+; SI-NEXT:    s_mov_b32 s12, s9
+; SI-NEXT:    s_mov_b32 s9, s10
+; SI-NEXT:    s_mov_b32 s10, s28
+; SI-NEXT:    s_mov_b32 s28, s24
+; SI-NEXT:    s_mov_b32 s24, s26
+; SI-NEXT:    s_mov_b32 s26, s23
+; SI-NEXT:    s_mov_b32 s23, s17
+; SI-NEXT:    s_or_b32 s17, s6, s7
+; SI-NEXT:    s_and_b32 s6, s65, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s66, 24
+; SI-NEXT:    s_or_b32 s53, s7, s6
+; SI-NEXT:    s_and_b32 s6, s87, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s82, 24
+; SI-NEXT:    s_or_b32 s52, s7, s6
+; SI-NEXT:    s_and_b32 s6, s71, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s80, 24
+; SI-NEXT:    s_or_b32 s55, s7, s6
+; SI-NEXT:    s_and_b32 s6, s97, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s96, 8
+; SI-NEXT:    s_mov_b32 s63, s59
+; SI-NEXT:    s_mov_b32 s59, s47
+; SI-NEXT:    s_mov_b32 s47, s43
+; SI-NEXT:    s_mov_b32 s43, s15
+; SI-NEXT:    s_mov_b32 s15, s11
+; SI-NEXT:    s_mov_b32 s11, s19
+; SI-NEXT:    s_mov_b32 s19, s29
+; SI-NEXT:    s_mov_b32 s29, s27
+; SI-NEXT:    s_mov_b32 s27, s21
+; SI-NEXT:    s_mov_b32 s21, s16
+; SI-NEXT:    s_or_b32 s16, s6, s7
+; SI-NEXT:    s_and_b32 s6, s83, 0xff
+; SI-NEXT:    s_mov_b32 s77, s76
+; SI-NEXT:    s_mov_b32 s76, s75
+; SI-NEXT:    s_mov_b32 s75, s73
+; SI-NEXT:    s_mov_b32 s73, s72
+; SI-NEXT:    s_mov_b32 s72, s61
+; SI-NEXT:    s_mov_b32 s61, s62
+; SI-NEXT:    s_mov_b32 s62, s56
+; SI-NEXT:    s_mov_b32 s56, s45
+; SI-NEXT:    s_mov_b32 s45, s46
+; SI-NEXT:    s_mov_b32 s46, s40
+; SI-NEXT:    s_mov_b32 s40, s13
+; SI-NEXT:    s_mov_b32 s13, s14
+; SI-NEXT:    s_mov_b32 s14, s8
+; SI-NEXT:    s_mov_b32 s8, s25
+; SI-NEXT:    s_lshl_b32 s6, s6, 16
+; SI-NEXT:    s_lshl_b32 s7, s84, 24
+; SI-NEXT:    s_or_b32 s67, s7, s6
+; SI-NEXT:    s_lshl_b32 s7, s4, 16
+; SI-NEXT:    s_lshl_b32 s6, s5, 16
+; SI-NEXT:    s_lshl_b32 s69, s69, 16
+; SI-NEXT:    s_lshl_b32 s81, s81, 16
+; SI-NEXT:    s_lshl_b32 s86, s86, 16
+; SI-NEXT:    s_lshl_b32 s18, s18, 16
+; SI-NEXT:    s_mov_b32 s25, s8
+; SI-NEXT:    s_mov_b32 s8, s14
+; SI-NEXT:    s_mov_b32 s14, s13
+; SI-NEXT:    s_mov_b32 s13, s40
+; SI-NEXT:    s_mov_b32 s40, s46
+; SI-NEXT:    s_mov_b32 s46, s45
+; SI-NEXT:    s_mov_b32 s45, s56
+; SI-NEXT:    s_mov_b32 s56, s62
+; SI-NEXT:    s_mov_b32 s62, s61
+; SI-NEXT:    s_mov_b32 s61, s72
+; SI-NEXT:    s_mov_b32 s72, s73
+; SI-NEXT:    s_mov_b32 s73, s75
+; SI-NEXT:    s_mov_b32 s75, s76
+; SI-NEXT:    s_mov_b32 s76, s77
+; SI-NEXT:    s_mov_b32 s77, s85
+; SI-NEXT:    s_lshl_b32 s85, s17, 16
+; SI-NEXT:    s_mov_b32 s17, s23
+; SI-NEXT:    s_mov_b32 s23, s26
+; SI-NEXT:    s_mov_b32 s26, s24
+; SI-NEXT:    s_mov_b32 s24, s28
+; SI-NEXT:    s_mov_b32 s28, s10
+; SI-NEXT:    s_mov_b32 s10, s9
+; SI-NEXT:    s_mov_b32 s9, s12
+; SI-NEXT:    s_mov_b32 s12, s42
+; SI-NEXT:    s_mov_b32 s42, s41
+; SI-NEXT:    s_mov_b32 s41, s44
+; SI-NEXT:    s_mov_b32 s44, s58
+; SI-NEXT:    s_mov_b32 s58, s57
+; SI-NEXT:    s_mov_b32 s57, s60
+; SI-NEXT:    s_mov_b32 s60, s74
+; SI-NEXT:    s_mov_b32 s74, s98
+; SI-NEXT:    s_lshl_b32 s98, s16, 16
+; SI-NEXT:    s_mov_b32 s16, s21
+; SI-NEXT:    s_mov_b32 s21, s27
+; SI-NEXT:    s_mov_b32 s27, s29
+; SI-NEXT:    s_mov_b32 s29, s19
+; SI-NEXT:    s_mov_b32 s19, s11
+; SI-NEXT:    s_mov_b32 s11, s15
+; SI-NEXT:    s_mov_b32 s15, s43
+; SI-NEXT:    s_mov_b32 s43, s47
+; SI-NEXT:    s_mov_b32 s47, s59
+; SI-NEXT:    s_mov_b32 s59, s63
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB111_3
+; SI-NEXT:  .LBB111_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr69
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr81
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr86
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr99
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr18
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr85
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr98
+; SI-NEXT:    ; implicit-def: $sgpr67
+; SI-NEXT:  .LBB111_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB111_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    s_add_i32 s97, s97, 3
+; SI-NEXT:    s_and_b32 s4, s97, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s96, 8
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s6, s86, 0xff
+; SI-NEXT:    s_lshl_b32 s5, s84, 24
+; SI-NEXT:    s_add_i32 s84, s83, 3
+; SI-NEXT:    s_and_b32 s6, s84, 0xff
 ; SI-NEXT:    s_addk_i32 s4, 0x300
-; SI-NEXT:    s_lshl_b32 s5, s87, 24
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_add_i32 s85, s85, 3
+; SI-NEXT:    s_add_i32 s83, s87, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s5, s85, 0xff
-; SI-NEXT:    s_lshl_b32 s6, s84, 8
-; SI-NEXT:    s_add_i32 s81, s81, 3
+; SI-NEXT:    s_and_b32 s5, s83, 0xff
+; SI-NEXT:    s_lshl_b32 s6, s82, 8
+; SI-NEXT:    s_add_i32 s71, s71, 3
 ; SI-NEXT:    s_or_b32 s5, s6, s5
-; SI-NEXT:    s_and_b32 s7, s81, 0xff
+; SI-NEXT:    s_and_b32 s7, s71, 0xff
 ; SI-NEXT:    s_addk_i32 s5, 0x300
-; SI-NEXT:    s_lshl_b32 s6, s82, 24
+; SI-NEXT:    s_lshl_b32 s6, s80, 24
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_or_b32 s6, s6, s7
-; SI-NEXT:    s_add_i32 s80, s80, 3
+; SI-NEXT:    s_add_i32 s70, s70, 3
 ; SI-NEXT:    s_or_b32 s5, s6, s5
-; SI-NEXT:    s_and_b32 s6, s80, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s70, 8
-; SI-NEXT:    s_add_i32 s67, s67, 3
+; SI-NEXT:    s_and_b32 s6, s70, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s68, 8
+; SI-NEXT:    s_add_i32 s65, s65, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_and_b32 s17, s67, 0xff
+; SI-NEXT:    s_and_b32 s74, s65, 0xff
 ; SI-NEXT:    s_addk_i32 s6, 0x300
-; SI-NEXT:    s_lshl_b32 s7, s68, 24
-; SI-NEXT:    s_lshl_b32 s17, s17, 16
+; SI-NEXT:    s_lshl_b32 s7, s66, 24
+; SI-NEXT:    s_lshl_b32 s74, s74, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_or_b32 s7, s7, s17
-; SI-NEXT:    s_add_i32 s66, s66, 3
-; SI-NEXT:    s_or_b32 vcc_lo, s7, s6
-; SI-NEXT:    s_and_b32 s6, s66, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s64, 8
-; SI-NEXT:    s_add_i32 s52, s52, 3
+; SI-NEXT:    s_or_b32 s7, s7, s74
+; SI-NEXT:    s_add_i32 s64, s64, 3
+; SI-NEXT:    s_or_b32 s52, s7, s6
+; SI-NEXT:    s_and_b32 s6, s64, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s54, 8
+; SI-NEXT:    s_add_i32 s50, s50, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_and_b32 s17, s52, 0xff
+; SI-NEXT:    s_and_b32 s74, s50, 0xff
 ; SI-NEXT:    s_addk_i32 s6, 0x300
-; SI-NEXT:    s_lshl_b32 s7, s53, 24
-; SI-NEXT:    s_lshl_b32 s17, s17, 16
+; SI-NEXT:    s_lshl_b32 s7, s36, 24
+; SI-NEXT:    s_lshl_b32 s74, s74, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_or_b32 s7, s7, s17
+; SI-NEXT:    s_or_b32 s7, s7, s74
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_add_i32 s89, s89, 3
-; SI-NEXT:    s_add_i32 vcc_hi, s6, 0x3000000
+; SI-NEXT:    s_add_i32 s89, s34, 3
+; SI-NEXT:    s_add_i32 s36, s6, 0x3000000
 ; SI-NEXT:    s_and_b32 s6, s89, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s51, 8
-; SI-NEXT:    s_add_i32 s39, s39, 3
+; SI-NEXT:    s_lshl_b32 s7, s49, 8
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_and_b32 s17, s39, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s37, 24
+; SI-NEXT:    s_add_i32 s37, s39, 3
+; SI-NEXT:    s_and_b32 s74, s37, 0xff
 ; SI-NEXT:    s_addk_i32 s6, 0x300
-; SI-NEXT:    s_lshl_b32 s7, s48, 24
-; SI-NEXT:    s_lshl_b32 s17, s17, 16
+; SI-NEXT:    s_lshl_b32 s74, s74, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_or_b32 s7, s7, s17
+; SI-NEXT:    s_or_b32 s7, s7, s74
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_add_i32 s77, s77, 3
+; SI-NEXT:    s_add_i32 s77, s78, 3
 ; SI-NEXT:    s_add_i32 s89, s6, 0x3000000
 ; SI-NEXT:    s_and_b32 s6, s77, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s75, 8
-; SI-NEXT:    s_add_i32 s72, s72, 3
+; SI-NEXT:    s_lshl_b32 s7, s76, 8
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_and_b32 s17, s72, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s72, 24
+; SI-NEXT:    s_add_i32 s72, s73, 3
+; SI-NEXT:    s_and_b32 s63, s72, 0xff
 ; SI-NEXT:    s_addk_i32 s6, 0x300
-; SI-NEXT:    s_lshl_b32 s7, s63, 24
-; SI-NEXT:    s_lshl_b32 s17, s17, 16
+; SI-NEXT:    s_lshl_b32 s63, s63, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_or_b32 s7, s7, s17
+; SI-NEXT:    s_or_b32 s7, s7, s63
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_add_i32 s73, s73, 3
+; SI-NEXT:    s_add_i32 s73, s75, 3
+; SI-NEXT:    v_readlane_b32 s7, v44, 2
 ; SI-NEXT:    s_add_i32 s63, s6, 0x3000000
 ; SI-NEXT:    s_and_b32 s6, s73, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s62, 8
+; SI-NEXT:    s_lshl_b32 s7, s7, 8
 ; SI-NEXT:    s_add_i32 s60, s60, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_and_b32 s17, s60, 0xff
-; SI-NEXT:    s_addk_i32 s6, 0x300
 ; SI-NEXT:    s_lshl_b32 s7, s59, 24
-; SI-NEXT:    s_lshl_b32 s17, s17, 16
+; SI-NEXT:    s_and_b32 s59, s60, 0xff
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_lshl_b32 s59, s59, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_or_b32 s7, s7, s17
+; SI-NEXT:    s_or_b32 s7, s7, s59
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_add_i32 s61, s61, 3
 ; SI-NEXT:    s_add_i32 s59, s6, 0x3000000
 ; SI-NEXT:    s_and_b32 s6, s61, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s58, 8
+; SI-NEXT:    s_lshl_b32 s7, s62, 8
 ; SI-NEXT:    s_add_i32 s56, s56, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_and_b32 s17, s56, 0xff
-; SI-NEXT:    s_addk_i32 s6, 0x300
 ; SI-NEXT:    s_lshl_b32 s7, s47, 24
-; SI-NEXT:    s_lshl_b32 s17, s17, 16
+; SI-NEXT:    s_and_b32 s47, s56, 0xff
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_lshl_b32 s47, s47, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_or_b32 s7, s7, s17
+; SI-NEXT:    s_or_b32 s7, s7, s47
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_add_i32 s57, s57, 3
 ; SI-NEXT:    s_add_i32 s47, s6, 0x3000000
 ; SI-NEXT:    s_and_b32 s6, s57, 0xff
-; SI-NEXT:    s_lshl_b32 s7, s46, 8
+; SI-NEXT:    s_lshl_b32 s7, s58, 8
 ; SI-NEXT:    s_add_i32 s44, s44, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_and_b32 s17, s44, 0xff
-; SI-NEXT:    s_addk_i32 s6, 0x300
 ; SI-NEXT:    s_lshl_b32 s7, s43, 24
-; SI-NEXT:    s_lshl_b32 s17, s17, 16
+; SI-NEXT:    s_and_b32 s43, s44, 0xff
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_lshl_b32 s43, s43, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_or_b32 s7, s7, s17
-; SI-NEXT:    s_add_i32 s45, s45, 3
+; SI-NEXT:    s_or_b32 s7, s7, s43
 ; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_and_b32 s7, s45, 0xff
-; SI-NEXT:    s_lshl_b32 s17, s42, 8
+; SI-NEXT:    s_add_i32 s45, s45, 3
+; SI-NEXT:    s_add_i32 s43, s6, 0x3000000
+; SI-NEXT:    s_and_b32 s6, s45, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s46, 8
 ; SI-NEXT:    s_add_i32 s40, s40, 3
-; SI-NEXT:    s_or_b32 s7, s17, s7
-; SI-NEXT:    s_and_b32 s17, s40, 0xff
-; SI-NEXT:    s_addk_i32 s7, 0x300
-; SI-NEXT:    s_lshl_b32 s15, s15, 24
-; SI-NEXT:    s_lshl_b32 s17, s17, 16
-; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_or_b32 s15, s15, s17
-; SI-NEXT:    s_or_b32 s7, s15, s7
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    s_lshl_b32 s7, s15, 24
+; SI-NEXT:    s_and_b32 s15, s40, 0xff
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_lshl_b32 s15, s15, 16
+; SI-NEXT:    s_and_b32 s6, s6, 0xffff
+; SI-NEXT:    s_or_b32 s7, s7, s15
+; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_add_i32 s41, s41, 3
-; SI-NEXT:    s_add_i32 s15, s7, 0x3000000
-; SI-NEXT:    s_and_b32 s7, s41, 0xff
-; SI-NEXT:    s_lshl_b32 s14, s14, 8
+; SI-NEXT:    s_add_i32 s15, s6, 0x3000000
+; SI-NEXT:    s_and_b32 s6, s41, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s42, 8
 ; SI-NEXT:    s_add_i32 s12, s12, 3
-; SI-NEXT:    s_or_b32 s7, s14, s7
-; SI-NEXT:    s_and_b32 s12, s12, 0xff
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    s_lshl_b32 s7, s11, 24
+; SI-NEXT:    s_and_b32 s11, s12, 0xff
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_lshl_b32 s11, s11, 16
+; SI-NEXT:    s_and_b32 s6, s6, 0xffff
+; SI-NEXT:    s_or_b32 s7, s7, s11
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    s_add_i32 s13, s13, 3
+; SI-NEXT:    s_add_i32 s11, s6, 0x3000000
+; SI-NEXT:    s_and_b32 s6, s13, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s14, 8
+; SI-NEXT:    s_add_i32 s9, s9, 3
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    s_lshl_b32 s7, s8, 24
+; SI-NEXT:    s_and_b32 s8, s9, 0xff
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_lshl_b32 s8, s8, 16
+; SI-NEXT:    s_and_b32 s6, s6, 0xffff
+; SI-NEXT:    s_or_b32 s7, s7, s8
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    s_add_i32 s28, s28, 3
+; SI-NEXT:    s_add_i32 s8, s6, 0x3000000
+; SI-NEXT:    s_and_b32 s6, s28, 0xff
+; SI-NEXT:    s_lshl_b32 s7, s29, 8
+; SI-NEXT:    s_add_i32 s19, s19, 3
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    s_and_b32 s9, s19, 0xff
+; SI-NEXT:    s_addk_i32 s6, 0x300
+; SI-NEXT:    s_lshl_b32 s7, s10, 24
+; SI-NEXT:    s_lshl_b32 s9, s9, 16
+; SI-NEXT:    s_and_b32 s6, s6, 0xffff
+; SI-NEXT:    s_or_b32 s7, s7, s9
+; SI-NEXT:    s_add_i32 s24, s24, 3
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    s_and_b32 s7, s24, 0xff
+; SI-NEXT:    s_lshl_b32 s9, s25, 8
+; SI-NEXT:    s_add_i32 s26, s26, 3
+; SI-NEXT:    s_or_b32 s7, s9, s7
+; SI-NEXT:    s_and_b32 s10, s26, 0xff
 ; SI-NEXT:    s_addk_i32 s7, 0x300
-; SI-NEXT:    s_lshl_b32 s11, s11, 24
+; SI-NEXT:    s_lshl_b32 s9, s27, 24
+; SI-NEXT:    s_lshl_b32 s10, s10, 16
+; SI-NEXT:    s_and_b32 s7, s7, 0xffff
+; SI-NEXT:    s_or_b32 s9, s9, s10
+; SI-NEXT:    s_or_b32 s7, s9, s7
+; SI-NEXT:    s_add_i32 s20, s20, 3
+; SI-NEXT:    s_add_i32 s9, s7, 0x3000000
+; SI-NEXT:    s_and_b32 s7, s20, 0xff
+; SI-NEXT:    s_lshl_b32 s10, s21, 8
+; SI-NEXT:    s_add_i32 s22, s22, 3
+; SI-NEXT:    s_or_b32 s7, s10, s7
+; SI-NEXT:    s_and_b32 s12, s22, 0xff
+; SI-NEXT:    s_addk_i32 s7, 0x300
+; SI-NEXT:    s_lshl_b32 s10, s23, 24
 ; SI-NEXT:    s_lshl_b32 s12, s12, 16
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_or_b32 s11, s11, s12
+; SI-NEXT:    s_or_b32 s10, s10, s12
+; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s13, v44, 0
+; SI-NEXT:    s_or_b32 s7, s10, s7
+; SI-NEXT:    s_and_b32 s10, s16, 0xff
+; SI-NEXT:    s_lshl_b32 s12, s17, 8
 ; SI-NEXT:    s_add_i32 s13, s13, 3
-; SI-NEXT:    s_or_b32 s7, s11, s7
-; SI-NEXT:    s_and_b32 s11, s13, 0xff
-; SI-NEXT:    s_lshl_b32 s10, s10, 8
-; SI-NEXT:    s_add_i32 s9, s9, 3
-; SI-NEXT:    s_or_b32 s10, s10, s11
-; SI-NEXT:    s_and_b32 s9, s9, 0xff
-; SI-NEXT:    s_mov_b32 s16, s8
-; SI-NEXT:    s_addk_i32 s10, 0x300
-; SI-NEXT:    s_lshl_b32 s8, s19, 24
-; SI-NEXT:    s_lshl_b32 s9, s9, 16
-; SI-NEXT:    s_and_b32 s10, s10, 0xffff
-; SI-NEXT:    s_or_b32 s8, s8, s9
-; SI-NEXT:    v_readlane_b32 s9, v44, 12
-; SI-NEXT:    s_or_b32 s8, s8, s10
-; SI-NEXT:    s_add_i32 s28, s9, 3
-; SI-NEXT:    v_readlane_b32 s10, v44, 11
-; SI-NEXT:    v_readlane_b32 s11, v44, 14
-; SI-NEXT:    s_and_b32 s9, s28, 0xff
-; SI-NEXT:    s_lshl_b32 s10, s10, 8
-; SI-NEXT:    s_add_i32 s19, s11, 3
-; SI-NEXT:    s_or_b32 s9, s10, s9
-; SI-NEXT:    v_readlane_b32 s10, v44, 13
-; SI-NEXT:    s_and_b32 s11, s19, 0xff
-; SI-NEXT:    s_addk_i32 s9, 0x300
-; SI-NEXT:    s_lshl_b32 s10, s10, 24
-; SI-NEXT:    s_lshl_b32 s11, s11, 16
-; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    s_or_b32 s10, s10, s11
-; SI-NEXT:    s_or_b32 s9, s10, s9
-; SI-NEXT:    v_readlane_b32 s10, v44, 10
-; SI-NEXT:    s_add_i32 s24, s10, 3
-; SI-NEXT:    v_readlane_b32 s11, v44, 9
-; SI-NEXT:    v_readlane_b32 s12, v44, 7
-; SI-NEXT:    s_and_b32 s10, s24, 0xff
-; SI-NEXT:    s_lshl_b32 s11, s11, 8
-; SI-NEXT:    s_add_i32 s26, s12, 3
-; SI-NEXT:    s_or_b32 s10, s11, s10
-; SI-NEXT:    v_readlane_b32 s11, v44, 8
-; SI-NEXT:    s_and_b32 s12, s26, 0xff
+; SI-NEXT:    s_or_b32 s10, s12, s10
+; SI-NEXT:    v_readlane_b32 s12, v44, 1
+; SI-NEXT:    s_and_b32 s13, s13, 0xff
 ; SI-NEXT:    s_addk_i32 s10, 0x300
-; SI-NEXT:    s_lshl_b32 s11, s11, 24
-; SI-NEXT:    s_lshl_b32 s12, s12, 16
-; SI-NEXT:    s_and_b32 s10, s10, 0xffff
-; SI-NEXT:    s_or_b32 s11, s11, s12
-; SI-NEXT:    s_or_b32 s10, s11, s10
-; SI-NEXT:    v_readlane_b32 s11, v44, 6
-; SI-NEXT:    s_add_i32 s20, s11, 3
-; SI-NEXT:    v_readlane_b32 s12, v44, 5
-; SI-NEXT:    v_readlane_b32 s13, v44, 3
-; SI-NEXT:    s_and_b32 s11, s20, 0xff
-; SI-NEXT:    s_lshl_b32 s12, s12, 8
-; SI-NEXT:    s_add_i32 s22, s13, 3
-; SI-NEXT:    s_or_b32 s11, s12, s11
-; SI-NEXT:    v_readlane_b32 s12, v44, 4
-; SI-NEXT:    s_and_b32 s13, s22, 0xff
-; SI-NEXT:    s_addk_i32 s11, 0x300
 ; SI-NEXT:    s_lshl_b32 s12, s12, 24
 ; SI-NEXT:    s_lshl_b32 s13, s13, 16
-; SI-NEXT:    s_and_b32 s11, s11, 0xffff
+; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_or_b32 s12, s12, s13
-; SI-NEXT:    s_or_b32 s11, s12, s11
-; SI-NEXT:    v_readlane_b32 s12, v44, 2
-; SI-NEXT:    s_add_i32 s12, s12, 3
-; SI-NEXT:    v_readlane_b32 s13, v44, 1
-; SI-NEXT:    v_readlane_b32 s14, v44, 0
-; SI-NEXT:    s_and_b32 s12, s12, 0xff
-; SI-NEXT:    s_lshl_b32 s13, s13, 8
-; SI-NEXT:    s_add_i32 s14, s14, 3
-; SI-NEXT:    s_or_b32 s12, s13, s12
-; SI-NEXT:    s_and_b32 s14, s14, 0xff
-; SI-NEXT:    s_addk_i32 s12, 0x300
-; SI-NEXT:    s_lshl_b32 s13, s16, 24
-; SI-NEXT:    s_lshl_b32 s14, s14, 16
-; SI-NEXT:    s_and_b32 s12, s12, 0xffff
-; SI-NEXT:    s_or_b32 s13, s13, s14
-; SI-NEXT:    s_or_b32 s12, s13, s12
+; SI-NEXT:    s_or_b32 s10, s12, s10
 ; SI-NEXT:    s_add_i32 s4, s4, 0x3000000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
-; SI-NEXT:    s_add_i32 vcc_lo, vcc_lo, 0x3000000
+; SI-NEXT:    s_add_i32 s52, s52, 0x3000000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x3000000
 ; SI-NEXT:    s_add_i32 s7, s7, 0x3000000
-; SI-NEXT:    s_add_i32 s8, s8, 0x3000000
-; SI-NEXT:    s_add_i32 s9, s9, 0x3000000
 ; SI-NEXT:    s_add_i32 s10, s10, 0x3000000
-; SI-NEXT:    s_add_i32 s11, s11, 0x3000000
-; SI-NEXT:    s_add_i32 s12, s12, 0x3000000
-; SI-NEXT:    s_and_b32 s76, s12, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s74, s12, 16
-; SI-NEXT:    s_and_b32 s79, s11, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s17, s11, 16
-; SI-NEXT:    s_and_b32 s88, s10, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s78, s10, 16
-; SI-NEXT:    s_and_b32 s91, s9, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s18, s9, 16
-; SI-NEXT:    s_and_b32 s92, s8, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s90, s8, 16
-; SI-NEXT:    s_and_b32 s94, s7, 0xffff0000
+; SI-NEXT:    s_and_b32 s77, s10, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s74, s10, 16
+; SI-NEXT:    s_and_b32 s88, s7, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s7, s7, 16
-; SI-NEXT:    s_and_b32 s95, s15, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s93, s15, 16
-; SI-NEXT:    s_and_b32 s31, s6, 0xffff0000
+; SI-NEXT:    s_and_b32 s90, s9, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s79, s9, 16
+; SI-NEXT:    s_and_b32 s92, s6, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
-; SI-NEXT:    s_and_b32 s34, s47, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s30, s47, 16
-; SI-NEXT:    s_and_b32 s36, s59, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s97, s59, 16
-; SI-NEXT:    s_and_b32 s37, s63, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s35, s63, 16
-; SI-NEXT:    s_and_b32 s49, s89, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s96, s89, 16
-; SI-NEXT:    s_and_b32 s50, vcc_hi, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s38, vcc_hi, 16
-; SI-NEXT:    s_and_b32 s55, vcc_lo, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s83, vcc_lo, 16
-; SI-NEXT:    s_and_b32 s65, s5, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s54, s5, 16
-; SI-NEXT:    s_and_b32 s69, s4, 0xffff0000
-; SI-NEXT:    s_lshl_b32 s71, s4, 16
-; SI-NEXT:  .LBB111_3: ; %end
+; SI-NEXT:    s_and_b32 s93, s8, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s91, s8, 16
+; SI-NEXT:    s_and_b32 s95, s11, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s69, s11, 16
+; SI-NEXT:    s_and_b32 vcc_lo, s15, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s94, s15, 16
+; SI-NEXT:    s_and_b32 s30, s43, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s81, s43, 16
+; SI-NEXT:    s_and_b32 s31, s47, 0xffff0000
+; SI-NEXT:    s_lshl_b32 vcc_hi, s47, 16
+; SI-NEXT:    s_and_b32 s35, s59, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s86, s59, 16
+; SI-NEXT:    s_and_b32 s38, s63, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s99, s63, 16
+; SI-NEXT:    s_and_b32 s48, s89, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s18, s89, 16
+; SI-NEXT:    s_and_b32 s51, s36, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s89, s36, 16
+; SI-NEXT:    s_and_b32 s53, s52, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s85, s52, 16
+; SI-NEXT:    s_and_b32 s55, s5, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s52, s5, 16
+; SI-NEXT:    s_and_b32 s67, s4, 0xffff0000
+; SI-NEXT:    s_lshl_b32 s98, s4, 16
+; SI-NEXT:  .LBB111_5: ; %end
 ; SI-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:84 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:88 ; 4-byte Folded Reload
-; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s76
+; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s77
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s74
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[0:1], 16
-; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s79
+; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s88
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v1
-; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s17
+; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s7
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
-; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s88
+; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s90
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
-; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s78
+; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s79
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[2:3], 16
-; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s91
+; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s92
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v3
-; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s18
+; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[3:4], 16
-; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s92
+; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s93
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v4
-; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s90
+; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s91
 ; SI-NEXT:    v_lshr_b64 v[4:5], v[4:5], 16
-; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s94
+; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s95
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v5
-; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s7
+; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s69
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[5:6], 16
-; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s95
+; SI-NEXT:    v_mul_f32_e64 v6, 1.0, vcc_lo
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v6
-; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s93
+; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s94
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[6:7], 16
-; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s31
+; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s30
 ; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v7
-; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s6
+; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s81
 ; SI-NEXT:    v_lshr_b64 v[7:8], v[7:8], 16
-; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s34
+; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s31
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v8
-; SI-NEXT:    v_mul_f32_e64 v8, 1.0, s30
+; SI-NEXT:    v_mul_f32_e64 v8, 1.0, vcc_hi
 ; SI-NEXT:    v_lshr_b64 v[8:9], v[8:9], 16
-; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s36
+; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s35
 ; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v9
-; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s97
+; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s86
 ; SI-NEXT:    v_lshr_b64 v[9:10], v[9:10], 16
-; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s37
+; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s38
 ; SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v10
-; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s35
+; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s99
 ; SI-NEXT:    v_lshr_b64 v[10:11], v[10:11], 16
-; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s49
+; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s48
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 16, v11
-; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s96
+; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s18
 ; SI-NEXT:    v_lshr_b64 v[11:12], v[11:12], 16
-; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s50
+; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s51
 ; SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v12
-; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s38
+; SI-NEXT:    v_mul_f32_e64 v12, 1.0, s89
 ; SI-NEXT:    v_lshr_b64 v[12:13], v[12:13], 16
-; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s55
+; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s53
 ; SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v13
-; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s83
+; SI-NEXT:    v_mul_f32_e64 v13, 1.0, s85
 ; SI-NEXT:    v_lshr_b64 v[13:14], v[13:14], 16
-; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s65
+; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s55
 ; SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v14
-; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s54
+; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s52
 ; SI-NEXT:    v_lshr_b64 v[14:15], v[14:15], 16
-; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s69
+; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s67
 ; SI-NEXT:    v_lshrrev_b32_e32 v16, 16, v15
-; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s71
+; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s98
 ; SI-NEXT:    v_readlane_b32 s30, v43, 34
 ; SI-NEXT:    v_lshr_b64 v[15:16], v[15:16], 16
 ; SI-NEXT:    v_readlane_b32 s31, v43, 35
@@ -93845,41 +95064,6 @@ define inreg <32 x bfloat> @bitcast_v64i8_to_v32bf16_scalar(<64 x i8> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB111_4:
-; SI-NEXT:    s_mov_b32 s8, s6
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr17
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr18
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr97
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr96
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr83
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr65
-; SI-NEXT:    ; implicit-def: $sgpr71
-; SI-NEXT:    ; implicit-def: $sgpr69
-; SI-NEXT:    s_branch .LBB111_2
 ;
 ; VI-LABEL: bitcast_v64i8_to_v32bf16_scalar:
 ; VI:       ; %bb.0:
@@ -93938,7 +95122,7 @@ define inreg <32 x bfloat> @bitcast_v64i8_to_v32bf16_scalar(<64 x i8> inreg %a,
 ; VI-NEXT:    s_waitcnt vmcnt(14)
 ; VI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v35
 ; VI-NEXT:    s_and_b64 s[4:5], vcc, exec
-; VI-NEXT:    s_cbranch_scc0 .LBB111_4
+; VI-NEXT:    s_cbranch_scc0 .LBB111_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v11, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -94030,8 +95214,17 @@ define inreg <32 x bfloat> @bitcast_v64i8_to_v32bf16_scalar(<64 x i8> inreg %a,
 ; VI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; VI-NEXT:    v_perm_b32 v35, v33, v28, s4
 ; VI-NEXT:    v_or_b32_e32 v15, v35, v15
-; VI-NEXT:    s_cbranch_execnz .LBB111_3
-; VI-NEXT:  .LBB111_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB111_3
+; VI-NEXT:  .LBB111_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; VI-NEXT:  .LBB111_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB111_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 3, v34
 ; VI-NEXT:    s_mov_b32 s4, 0xc0c0004
 ; VI-NEXT:    v_perm_b32 v8, v0, v31, s4
@@ -94191,12 +95384,9 @@ define inreg <32 x bfloat> @bitcast_v64i8_to_v32bf16_scalar(<64 x i8> inreg %a,
 ; VI-NEXT:    v_add_u32_e32 v13, vcc, 0x3000000, v13
 ; VI-NEXT:    v_add_u32_e32 v14, vcc, 0x3000000, v14
 ; VI-NEXT:    v_add_u32_e32 v15, vcc, 0x3000000, v15
-; VI-NEXT:  .LBB111_3: ; %end
+; VI-NEXT:  .LBB111_5: ; %end
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB111_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-NEXT:    s_branch .LBB111_2
 ;
 ; GFX9-LABEL: bitcast_v64i8_to_v32bf16_scalar:
 ; GFX9:       ; %bb.0:
@@ -94255,7 +95445,7 @@ define inreg <32 x bfloat> @bitcast_v64i8_to_v32bf16_scalar(<64 x i8> inreg %a,
 ; GFX9-NEXT:    s_waitcnt vmcnt(19)
 ; GFX9-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v12
 ; GFX9-NEXT:    s_and_b64 s[4:5], vcc, exec
-; GFX9-NEXT:    s_cbranch_scc0 .LBB111_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB111_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v8, 0xc0c0004
@@ -94361,8 +95551,17 @@ define inreg <32 x bfloat> @bitcast_v64i8_to_v32bf16_scalar(<64 x i8> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s5, s77
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s4
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s5
-; GFX9-NEXT:    s_cbranch_execnz .LBB111_3
-; GFX9-NEXT:  .LBB111_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB111_3
+; GFX9-NEXT:  .LBB111_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX9-NEXT:  .LBB111_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB111_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_waitcnt vmcnt(12)
 ; GFX9-NEXT:    v_add_u32_e32 v0, 3, v34
 ; GFX9-NEXT:    s_mov_b32 s4, 0xc0c0004
@@ -94519,12 +95718,9 @@ define inreg <32 x bfloat> @bitcast_v64i8_to_v32bf16_scalar(<64 x i8> inreg %a,
 ; GFX9-NEXT:    v_lshl_or_b32 v10, v16, 16, v10
 ; GFX9-NEXT:    v_lshl_or_b32 v14, v27, 16, v14
 ; GFX9-NEXT:    v_lshl_or_b32 v15, v25, 16, v15
-; GFX9-NEXT:  .LBB111_3: ; %end
+; GFX9-NEXT:  .LBB111_5: ; %end
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB111_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX9-NEXT:    s_branch .LBB111_2
 ;
 ; GFX11-TRUE16-LABEL: bitcast_v64i8_to_v32bf16_scalar:
 ; GFX11-TRUE16:       ; %bb.0:
@@ -94581,7 +95777,7 @@ define inreg <32 x bfloat> @bitcast_v64i8_to_v32bf16_scalar(<64 x i8> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v54
 ; GFX11-TRUE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB111_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB111_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v8, 0xc0c0004 :: v_dual_lshlrev_b32 v13, 8, v50
@@ -94660,9 +95856,17 @@ define inreg <32 x bfloat> @bitcast_v64i8_to_v32bf16_scalar(<64 x i8> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v14.h, v10.l
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, s77
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v15.h, v18.l
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB111_3
-; GFX11-TRUE16-NEXT:  .LBB111_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB111_3
+; GFX11-TRUE16-NEXT:  .LBB111_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-TRUE16-NEXT:  .LBB111_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB111_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 3, v36
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(3)
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, 3, v53
@@ -94779,12 +95983,9 @@ define inreg <32 x bfloat> @bitcast_v64i8_to_v32bf16_scalar(<64 x i8> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v13.h, v18.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v14.h, v17.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v15.h, v16.l
-; GFX11-TRUE16-NEXT:  .LBB111_3: ; %end
+; GFX11-TRUE16-NEXT:  .LBB111_5: ; %end
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB111_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-TRUE16-NEXT:    s_branch .LBB111_2
 ;
 ; GFX11-FAKE16-LABEL: bitcast_v64i8_to_v32bf16_scalar:
 ; GFX11-FAKE16:       ; %bb.0:
@@ -94841,7 +96042,7 @@ define inreg <32 x bfloat> @bitcast_v64i8_to_v32bf16_scalar(<64 x i8> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(7)
 ; GFX11-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v54
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, vcc_lo, exec_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB111_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB111_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, 0xc0c0004
 ; GFX11-FAKE16-NEXT:    s_and_b32 s76, s58, 0xff
@@ -94934,9 +96135,17 @@ define inreg <32 x bfloat> @bitcast_v64i8_to_v32bf16_scalar(<64 x i8> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v15, v16, 16, v17
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, s76
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, s77
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s75
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB111_3
-; GFX11-FAKE16-NEXT:  .LBB111_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB111_3
+; GFX11-FAKE16-NEXT:  .LBB111_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s75, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
+; GFX11-FAKE16-NEXT:  .LBB111_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s75, s75, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s75, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s75, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB111_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v0, 3, v52
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(3)
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v4, 3, v53
@@ -95069,12 +96278,9 @@ define inreg <32 x bfloat> @bitcast_v64i8_to_v32bf16_scalar(<64 x i8> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v13, v16, 16, v13
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v14, v14, 16, v21
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v15, v15, 16, v22
-; GFX11-FAKE16-NEXT:  .LBB111_3: ; %end
+; GFX11-FAKE16-NEXT:  .LBB111_5: ; %end
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB111_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX11-FAKE16-NEXT:    s_branch .LBB111_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.576bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.576bit.ll
index 9a74ac7e2b943..37072b082797b 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.576bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.576bit.ll
@@ -158,10 +158,18 @@ define inreg <18 x float> @bitcast_v18i32_to_v18f32_scalar(<18 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s8, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s9, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -180,7 +188,7 @@ define inreg <18 x float> @bitcast_v18i32_to_v18f32_scalar(<18 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -200,8 +208,6 @@ define inreg <18 x float> @bitcast_v18i32_to_v18f32_scalar(<18 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v16, s7
 ; SI-NEXT:    v_mov_b32_e32 v17, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v18i32_to_v18f32_scalar:
 ; VI:       ; %bb.0:
@@ -212,10 +218,18 @@ define inreg <18 x float> @bitcast_v18i32_to_v18f32_scalar(<18 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s8, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s9, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -234,7 +248,7 @@ define inreg <18 x float> @bitcast_v18i32_to_v18f32_scalar(<18 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -254,8 +268,6 @@ define inreg <18 x float> @bitcast_v18i32_to_v18f32_scalar(<18 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v16, s7
 ; VI-NEXT:    v_mov_b32_e32 v17, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v18i32_to_v18f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -266,10 +278,18 @@ define inreg <18 x float> @bitcast_v18i32_to_v18f32_scalar(<18 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -288,7 +308,7 @@ define inreg <18 x float> @bitcast_v18i32_to_v18f32_scalar(<18 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -308,8 +328,6 @@ define inreg <18 x float> @bitcast_v18i32_to_v18f32_scalar(<18 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v18i32_to_v18f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -317,11 +335,16 @@ define inreg <18 x float> @bitcast_v18i32_to_v18f32_scalar(<18 x i32> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s29, s29, 3
 ; GFX11-NEXT:    s_add_i32 s28, s28, 3
 ; GFX11-NEXT:    s_add_i32 s27, s27, 3
@@ -340,7 +363,7 @@ define inreg <18 x float> @bitcast_v18i32_to_v18f32_scalar(<18 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -352,8 +375,6 @@ define inreg <18 x float> @bitcast_v18i32_to_v18f32_scalar(<18 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s28 :: v_dual_mov_b32 v17, s29
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -542,10 +563,18 @@ define inreg <18 x i32> @bitcast_v18f32_to_v18i32_scalar(<18 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v17, s53, 1.0
 ; SI-NEXT:    v_add_f32_e64 v16, s52, 1.0
 ; SI-NEXT:    v_add_f32_e64 v15, s51, 1.0
@@ -564,10 +593,8 @@ define inreg <18 x i32> @bitcast_v18f32_to_v18i32_scalar(<18 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB3_5
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:    s_branch .LBB3_6
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -600,7 +627,7 @@ define inreg <18 x i32> @bitcast_v18f32_to_v18i32_scalar(<18 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB3_5: ; %end
+; SI-NEXT:  .LBB3_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
 ; SI-NEXT:    v_readlane_b32 s52, v32, 8
 ; SI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -653,10 +680,18 @@ define inreg <18 x i32> @bitcast_v18f32_to_v18i32_scalar(<18 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v17, s53, 1.0
 ; VI-NEXT:    v_add_f32_e64 v16, s52, 1.0
 ; VI-NEXT:    v_add_f32_e64 v15, s51, 1.0
@@ -675,10 +710,8 @@ define inreg <18 x i32> @bitcast_v18f32_to_v18i32_scalar(<18 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB3_5
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:    s_branch .LBB3_6
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -711,7 +744,7 @@ define inreg <18 x i32> @bitcast_v18f32_to_v18i32_scalar(<18 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB3_5: ; %end
+; VI-NEXT:  .LBB3_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
 ; VI-NEXT:    v_readlane_b32 s52, v32, 8
 ; VI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -764,10 +797,18 @@ define inreg <18 x i32> @bitcast_v18f32_to_v18i32_scalar(<18 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v17, s53, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v16, s52, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v15, s51, 1.0
@@ -786,10 +827,8 @@ define inreg <18 x i32> @bitcast_v18f32_to_v18i32_scalar(<18 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB3_5
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:    s_branch .LBB3_6
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -822,7 +861,7 @@ define inreg <18 x i32> @bitcast_v18f32_to_v18i32_scalar(<18 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB3_5: ; %end
+; GFX9-NEXT:  .LBB3_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s52, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -876,11 +915,16 @@ define inreg <18 x i32> @bitcast_v18f32_to_v18i32_scalar(<18 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v17, s53, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v16, s52, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v15, s51, 1.0
@@ -900,8 +944,6 @@ define inreg <18 x i32> @bitcast_v18f32_to_v18i32_scalar(<18 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB3_5
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -1104,10 +1146,18 @@ define inreg <9 x i64> @bitcast_v18i32_to_v9i64_scalar(<18 x i32> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s8, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s9, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -1126,7 +1176,7 @@ define inreg <9 x i64> @bitcast_v18i32_to_v9i64_scalar(<18 x i32> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1146,8 +1196,6 @@ define inreg <9 x i64> @bitcast_v18i32_to_v9i64_scalar(<18 x i32> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v16, s7
 ; SI-NEXT:    v_mov_b32_e32 v17, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v18i32_to_v9i64_scalar:
 ; VI:       ; %bb.0:
@@ -1158,10 +1206,18 @@ define inreg <9 x i64> @bitcast_v18i32_to_v9i64_scalar(<18 x i32> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s8, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s9, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -1180,7 +1236,7 @@ define inreg <9 x i64> @bitcast_v18i32_to_v9i64_scalar(<18 x i32> inreg %a, i32
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1200,8 +1256,6 @@ define inreg <9 x i64> @bitcast_v18i32_to_v9i64_scalar(<18 x i32> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v16, s7
 ; VI-NEXT:    v_mov_b32_e32 v17, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v18i32_to_v9i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -1212,10 +1266,18 @@ define inreg <9 x i64> @bitcast_v18i32_to_v9i64_scalar(<18 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -1234,7 +1296,7 @@ define inreg <9 x i64> @bitcast_v18i32_to_v9i64_scalar(<18 x i32> inreg %a, i32
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1254,8 +1316,6 @@ define inreg <9 x i64> @bitcast_v18i32_to_v9i64_scalar(<18 x i32> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v18i32_to_v9i64_scalar:
 ; GFX11:       ; %bb.0:
@@ -1263,11 +1323,16 @@ define inreg <9 x i64> @bitcast_v18i32_to_v9i64_scalar(<18 x i32> inreg %a, i32
 ; GFX11-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s29, s29, 3
 ; GFX11-NEXT:    s_add_i32 s28, s28, 3
 ; GFX11-NEXT:    s_add_i32 s27, s27, 3
@@ -1286,7 +1351,7 @@ define inreg <9 x i64> @bitcast_v18i32_to_v9i64_scalar(<18 x i32> inreg %a, i32
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1298,8 +1363,6 @@ define inreg <9 x i64> @bitcast_v18i32_to_v9i64_scalar(<18 x i32> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s28 :: v_dual_mov_b32 v17, s29
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1474,10 +1537,18 @@ define inreg <18 x i32> @bitcast_v9i64_to_v18i32_scalar(<9 x i64> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s8, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s9, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -1496,7 +1567,7 @@ define inreg <18 x i32> @bitcast_v9i64_to_v18i32_scalar(<9 x i64> inreg %a, i32
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1516,8 +1587,6 @@ define inreg <18 x i32> @bitcast_v9i64_to_v18i32_scalar(<9 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v16, s7
 ; SI-NEXT:    v_mov_b32_e32 v17, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v9i64_to_v18i32_scalar:
 ; VI:       ; %bb.0:
@@ -1528,10 +1597,18 @@ define inreg <18 x i32> @bitcast_v9i64_to_v18i32_scalar(<9 x i64> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s8, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s9, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -1550,7 +1627,7 @@ define inreg <18 x i32> @bitcast_v9i64_to_v18i32_scalar(<9 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1570,8 +1647,6 @@ define inreg <18 x i32> @bitcast_v9i64_to_v18i32_scalar(<9 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v16, s7
 ; VI-NEXT:    v_mov_b32_e32 v17, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v9i64_to_v18i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -1582,10 +1657,18 @@ define inreg <18 x i32> @bitcast_v9i64_to_v18i32_scalar(<9 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -1604,7 +1687,7 @@ define inreg <18 x i32> @bitcast_v9i64_to_v18i32_scalar(<9 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB7_3: ; %end
+; GFX9-NEXT:  .LBB7_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1624,8 +1707,6 @@ define inreg <18 x i32> @bitcast_v9i64_to_v18i32_scalar(<9 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_4:
-; GFX9-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-LABEL: bitcast_v9i64_to_v18i32_scalar:
 ; GFX11:       ; %bb.0:
@@ -1633,11 +1714,16 @@ define inreg <18 x i32> @bitcast_v9i64_to_v18i32_scalar(<9 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_3
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s28, s28, 3
 ; GFX11-NEXT:    s_addc_u32 s29, s29, 0
 ; GFX11-NEXT:    s_add_u32 s26, s26, 3
@@ -1656,7 +1742,7 @@ define inreg <18 x i32> @bitcast_v9i64_to_v18i32_scalar(<9 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB7_3: ; %end
+; GFX11-NEXT:  .LBB7_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1668,8 +1754,6 @@ define inreg <18 x i32> @bitcast_v9i64_to_v18i32_scalar(<9 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s28 :: v_dual_mov_b32 v17, s29
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_4:
-; GFX11-NEXT:    s_branch .LBB7_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1839,10 +1923,18 @@ define inreg <9 x double> @bitcast_v18i32_to_v9f64_scalar(<18 x i32> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s8, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s9, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -1861,7 +1953,7 @@ define inreg <9 x double> @bitcast_v18i32_to_v9f64_scalar(<18 x i32> inreg %a, i
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1881,8 +1973,6 @@ define inreg <9 x double> @bitcast_v18i32_to_v9f64_scalar(<18 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v16, s7
 ; SI-NEXT:    v_mov_b32_e32 v17, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v18i32_to_v9f64_scalar:
 ; VI:       ; %bb.0:
@@ -1893,10 +1983,18 @@ define inreg <9 x double> @bitcast_v18i32_to_v9f64_scalar(<18 x i32> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s8, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s9, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -1915,7 +2013,7 @@ define inreg <9 x double> @bitcast_v18i32_to_v9f64_scalar(<18 x i32> inreg %a, i
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1935,8 +2033,6 @@ define inreg <9 x double> @bitcast_v18i32_to_v9f64_scalar(<18 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v16, s7
 ; VI-NEXT:    v_mov_b32_e32 v17, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v18i32_to_v9f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -1947,10 +2043,18 @@ define inreg <9 x double> @bitcast_v18i32_to_v9f64_scalar(<18 x i32> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -1969,7 +2073,7 @@ define inreg <9 x double> @bitcast_v18i32_to_v9f64_scalar(<18 x i32> inreg %a, i
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1989,8 +2093,6 @@ define inreg <9 x double> @bitcast_v18i32_to_v9f64_scalar(<18 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v18i32_to_v9f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -1998,11 +2100,16 @@ define inreg <9 x double> @bitcast_v18i32_to_v9f64_scalar(<18 x i32> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s29, s29, 3
 ; GFX11-NEXT:    s_add_i32 s28, s28, 3
 ; GFX11-NEXT:    s_add_i32 s27, s27, 3
@@ -2021,7 +2128,7 @@ define inreg <9 x double> @bitcast_v18i32_to_v9f64_scalar(<18 x i32> inreg %a, i
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2033,8 +2140,6 @@ define inreg <9 x double> @bitcast_v18i32_to_v9f64_scalar(<18 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s28 :: v_dual_mov_b32 v17, s29
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2196,10 +2301,18 @@ define inreg <18 x i32> @bitcast_v9f64_to_v18i32_scalar(<9 x double> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; SI-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
 ; SI-NEXT:    v_add_f64 v[12:13], s[48:49], 1.0
@@ -2209,10 +2322,8 @@ define inreg <18 x i32> @bitcast_v9f64_to_v18i32_scalar(<9 x double> inreg %a, i
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB11_5
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:    s_branch .LBB11_6
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -2245,7 +2356,7 @@ define inreg <18 x i32> @bitcast_v9f64_to_v18i32_scalar(<9 x double> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB11_5: ; %end
+; SI-NEXT:  .LBB11_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
 ; SI-NEXT:    v_readlane_b32 s52, v32, 8
 ; SI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -2298,10 +2409,18 @@ define inreg <18 x i32> @bitcast_v9f64_to_v18i32_scalar(<9 x double> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; VI-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
 ; VI-NEXT:    v_add_f64 v[12:13], s[48:49], 1.0
@@ -2311,10 +2430,8 @@ define inreg <18 x i32> @bitcast_v9f64_to_v18i32_scalar(<9 x double> inreg %a, i
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB11_5
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:    s_branch .LBB11_6
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -2347,7 +2464,7 @@ define inreg <18 x i32> @bitcast_v9f64_to_v18i32_scalar(<9 x double> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB11_5: ; %end
+; VI-NEXT:  .LBB11_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
 ; VI-NEXT:    v_readlane_b32 s52, v32, 8
 ; VI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -2400,10 +2517,18 @@ define inreg <18 x i32> @bitcast_v9f64_to_v18i32_scalar(<9 x double> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[48:49], 1.0
@@ -2413,10 +2538,8 @@ define inreg <18 x i32> @bitcast_v9f64_to_v18i32_scalar(<9 x double> inreg %a, i
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB11_5
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:    s_branch .LBB11_6
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -2449,7 +2572,7 @@ define inreg <18 x i32> @bitcast_v9f64_to_v18i32_scalar(<9 x double> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB11_5: ; %end
+; GFX9-NEXT:  .LBB11_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s52, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -2503,11 +2626,16 @@ define inreg <18 x i32> @bitcast_v9f64_to_v18i32_scalar(<9 x double> inreg %a, i
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; GFX11-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[48:49], 1.0
@@ -2518,8 +2646,6 @@ define inreg <18 x i32> @bitcast_v9f64_to_v18i32_scalar(<9 x double> inreg %a, i
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB11_5
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -3110,7 +3236,7 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s7, v1
 ; SI-NEXT:    s_cmp_lg_u32 s6, 0
 ; SI-NEXT:    v_readfirstlane_b32 s6, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s60, s5, 16
 ; SI-NEXT:    s_lshr_b32 s61, s7, 16
@@ -3130,8 +3256,34 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[58:59], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[58:59], -1
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[58:59], s[58:59], exec
+; SI-NEXT:    s_cselect_b32 s9, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s9, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -3168,7 +3320,7 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s74, s21, 16
 ; SI-NEXT:    s_lshr_b32 s75, s19, 16
 ; SI-NEXT:    s_lshr_b32 s76, s17, 16
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s9, s56, 16
 ; SI-NEXT:    s_and_b32 s11, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s9, s11, s9
@@ -3242,26 +3394,6 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v16, s4
 ; SI-NEXT:    v_mov_b32_e32 v17, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_v18i32_to_v36i16_scalar:
 ; VI:       ; %bb.0:
@@ -3272,7 +3404,7 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s8, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s9, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s10, s6, 16
 ; VI-NEXT:    s_lshr_b32 s11, s7, 16
@@ -3292,8 +3424,34 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s57, s18, 16
 ; VI-NEXT:    s_lshr_b32 s58, s17, 16
 ; VI-NEXT:    s_lshr_b32 s59, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -3330,7 +3488,7 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s57, s18, 16
 ; VI-NEXT:    s_lshr_b32 s58, s17, 16
 ; VI-NEXT:    s_lshr_b32 s59, s16, 16
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s59, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -3404,26 +3562,6 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v16, s7
 ; VI-NEXT:    v_mov_b32_e32 v17, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v18i32_to_v36i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -3434,7 +3572,7 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s10, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s11, s7, 16
@@ -3454,8 +3592,34 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s57, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s58, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -3492,7 +3656,7 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s57, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s58, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s16, 16
-; GFX9-NEXT:  .LBB13_3: ; %end
+; GFX9-NEXT:  .LBB13_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s58
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s57
@@ -3530,26 +3694,6 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_v18i32_to_v36i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -3557,7 +3701,7 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX11-NEXT:    s_mov_b32 s46, 0
 ; GFX11-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s4, s29, 16
 ; GFX11-NEXT:    s_lshr_b32 s5, s28, 16
@@ -3577,9 +3721,34 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s43, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s44, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s45, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s46
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB13_3
+; GFX11-NEXT:  .LBB13_2:
+; GFX11-NEXT:    s_mov_b32 s46, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr7
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr5
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:  .LBB13_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s46, s46, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s46, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s46, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s29, s29, 3
 ; GFX11-NEXT:    s_add_i32 s28, s28, 3
 ; GFX11-NEXT:    s_add_i32 s27, s27, 3
@@ -3616,7 +3785,7 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s43, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s44, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s45, s0, 16
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s45
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s44
@@ -3646,26 +3815,6 @@ define inreg <36 x i16> @bitcast_v18i32_to_v36i16_scalar(<18 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s7 :: v_dual_mov_b32 v15, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s5 :: v_dual_mov_b32 v17, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr7
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr5
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -4472,7 +4621,7 @@ define inreg <18 x i32> @bitcast_v36i16_to_v18i32_scalar(<36 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s15, s72, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v4
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -4528,8 +4677,17 @@ define inreg <18 x i32> @bitcast_v36i16_to_v18i32_scalar(<36 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -4620,7 +4778,7 @@ define inreg <18 x i32> @bitcast_v36i16_to_v18i32_scalar(<36 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s53, s4, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
+; SI-NEXT:  .LBB15_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -4660,9 +4818,6 @@ define inreg <18 x i32> @bitcast_v36i16_to_v18i32_scalar(<36 x i16> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v36i16_to_v18i32_scalar:
 ; VI:       ; %bb.0:
@@ -4710,7 +4865,7 @@ define inreg <18 x i32> @bitcast_v36i16_to_v18i32_scalar(<36 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s15, s72, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v4
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -4766,8 +4921,17 @@ define inreg <18 x i32> @bitcast_v36i16_to_v18i32_scalar(<36 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -4858,7 +5022,7 @@ define inreg <18 x i32> @bitcast_v36i16_to_v18i32_scalar(<36 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s53, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
+; VI-NEXT:  .LBB15_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -4898,9 +5062,6 @@ define inreg <18 x i32> @bitcast_v36i16_to_v18i32_scalar(<36 x i16> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v36i16_to_v18i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -4960,10 +5121,18 @@ define inreg <18 x i32> @bitcast_v36i16_to_v18i32_scalar(<36 x i16> inreg %a, i3
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s51, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s52, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -4982,10 +5151,8 @@ define inreg <18 x i32> @bitcast_v36i16_to_v18i32_scalar(<36 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v15, s51, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v16, s52, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB15_5
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:    s_branch .LBB15_6
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -5018,7 +5185,7 @@ define inreg <18 x i32> @bitcast_v36i16_to_v18i32_scalar(<36 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB15_5: ; %end
+; GFX9-NEXT:  .LBB15_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s52, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -5077,11 +5244,16 @@ define inreg <18 x i32> @bitcast_v36i16_to_v18i32_scalar(<36 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s15, s27, s15
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s16, s28, s42
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -5101,8 +5273,6 @@ define inreg <18 x i32> @bitcast_v36i16_to_v18i32_scalar(<36 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v16, s16, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v17, s17, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -5678,7 +5848,7 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s7, v1
 ; SI-NEXT:    s_cmp_lg_u32 s6, 0
 ; SI-NEXT:    v_readfirstlane_b32 s6, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s60, s5, 16
 ; SI-NEXT:    s_lshr_b32 s61, s7, 16
@@ -5698,8 +5868,34 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[58:59], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[58:59], -1
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[58:59], s[58:59], exec
+; SI-NEXT:    s_cselect_b32 s9, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s9, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -5736,7 +5932,7 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s74, s21, 16
 ; SI-NEXT:    s_lshr_b32 s75, s19, 16
 ; SI-NEXT:    s_lshr_b32 s76, s17, 16
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s9, s56, 16
 ; SI-NEXT:    s_and_b32 s11, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s9, s11, s9
@@ -5810,26 +6006,6 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v16, s4
 ; SI-NEXT:    v_mov_b32_e32 v17, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_v18i32_to_v36f16_scalar:
 ; VI:       ; %bb.0:
@@ -5840,7 +6016,7 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s8, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s9, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s10, s6, 16
 ; VI-NEXT:    s_lshr_b32 s11, s7, 16
@@ -5860,8 +6036,34 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s57, s18, 16
 ; VI-NEXT:    s_lshr_b32 s58, s17, 16
 ; VI-NEXT:    s_lshr_b32 s59, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -5898,7 +6100,7 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s57, s18, 16
 ; VI-NEXT:    s_lshr_b32 s58, s17, 16
 ; VI-NEXT:    s_lshr_b32 s59, s16, 16
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s59, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -5972,26 +6174,6 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v16, s7
 ; VI-NEXT:    v_mov_b32_e32 v17, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v18i32_to_v36f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -6002,7 +6184,7 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s10, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s11, s7, 16
@@ -6022,8 +6204,34 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s57, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s58, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -6060,7 +6268,7 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s57, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s58, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s16, 16
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s58
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s57
@@ -6098,26 +6306,6 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v18i32_to_v36f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -6125,7 +6313,7 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX11-NEXT:    s_mov_b32 s46, 0
 ; GFX11-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s4, s29, 16
 ; GFX11-NEXT:    s_lshr_b32 s5, s28, 16
@@ -6145,9 +6333,34 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s43, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s44, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s45, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s46
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB17_3
+; GFX11-NEXT:  .LBB17_2:
+; GFX11-NEXT:    s_mov_b32 s46, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr7
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr5
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:  .LBB17_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s46, s46, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s46, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s46, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s29, s29, 3
 ; GFX11-NEXT:    s_add_i32 s28, s28, 3
 ; GFX11-NEXT:    s_add_i32 s27, s27, 3
@@ -6184,7 +6397,7 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s43, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s44, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s45, s0, 16
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s45
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s44
@@ -6214,26 +6427,6 @@ define inreg <36 x half> @bitcast_v18i32_to_v36f16_scalar(<18 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s7 :: v_dual_mov_b32 v15, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s5 :: v_dual_mov_b32 v17, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr7
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr5
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -7114,7 +7307,7 @@ define inreg <18 x i32> @bitcast_v36f16_to_v18i32_scalar(<36 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s15, s13, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v4
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -7170,8 +7363,17 @@ define inreg <18 x i32> @bitcast_v36f16_to_v18i32_scalar(<36 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s91
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s90
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
@@ -7316,11 +7518,8 @@ define inreg <18 x i32> @bitcast_v36f16_to_v18i32_scalar(<36 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v17, v17
 ; SI-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
 ; SI-NEXT:    v_or_b32_e32 v17, v18, v17
-; SI-NEXT:    s_branch .LBB19_5
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:    s_branch .LBB19_6
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -7353,7 +7552,7 @@ define inreg <18 x i32> @bitcast_v36f16_to_v18i32_scalar(<36 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB19_5: ; %end
+; SI-NEXT:  .LBB19_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s67, v32, 15
 ; SI-NEXT:    v_readlane_b32 s66, v32, 14
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -7422,7 +7621,7 @@ define inreg <18 x i32> @bitcast_v36f16_to_v18i32_scalar(<36 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s73, s15, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v4
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -7478,8 +7677,17 @@ define inreg <18 x i32> @bitcast_v36f16_to_v18i32_scalar(<36 x half> inreg %a, i
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v17, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v0, s91
 ; VI-NEXT:    v_mov_b32_e32 v2, s90
@@ -7553,11 +7761,8 @@ define inreg <18 x i32> @bitcast_v36f16_to_v18i32_scalar(<36 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v18, v18, v17 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v17, s6, v17
 ; VI-NEXT:    v_or_b32_e32 v17, v17, v18
-; VI-NEXT:    s_branch .LBB19_5
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:    s_branch .LBB19_6
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -7590,7 +7795,7 @@ define inreg <18 x i32> @bitcast_v36f16_to_v18i32_scalar(<36 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB19_5: ; %end
+; VI-NEXT:  .LBB19_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v32, 15
 ; VI-NEXT:    v_readlane_b32 s66, v32, 14
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -7671,10 +7876,18 @@ define inreg <18 x i32> @bitcast_v36f16_to_v18i32_scalar(<36 x half> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s51, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s52, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v17, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v17 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v17 op_sel_hi:[1,0]
@@ -7694,10 +7907,8 @@ define inreg <18 x i32> @bitcast_v36f16_to_v18i32_scalar(<36 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v15, s51, v17 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v16, s52, v17 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v17, s53, v17 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB19_5
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:    s_branch .LBB19_6
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -7730,7 +7941,7 @@ define inreg <18 x i32> @bitcast_v36f16_to_v18i32_scalar(<36 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB19_5: ; %end
+; GFX9-NEXT:  .LBB19_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s52, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -7789,11 +8000,16 @@ define inreg <18 x i32> @bitcast_v36f16_to_v18i32_scalar(<36 x half> inreg %a, i
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s15, s27, s15
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s16, s28, s42
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -7813,8 +8029,6 @@ define inreg <18 x i32> @bitcast_v36f16_to_v18i32_scalar(<36 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v16, 0x200, s16 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v17, 0x200, s17 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -8021,10 +8235,18 @@ define inreg <9 x i64> @bitcast_v18f32_to_v9i64_scalar(<18 x float> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_3
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB21_4
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v17, s53, 1.0
 ; SI-NEXT:    v_add_f32_e64 v16, s52, 1.0
 ; SI-NEXT:    v_add_f32_e64 v15, s51, 1.0
@@ -8043,10 +8265,8 @@ define inreg <9 x i64> @bitcast_v18f32_to_v9i64_scalar(<18 x float> inreg %a, i3
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB21_5
-; SI-NEXT:  .LBB21_3:
-; SI-NEXT:    s_branch .LBB21_2
-; SI-NEXT:  .LBB21_4:
+; SI-NEXT:    s_branch .LBB21_6
+; SI-NEXT:  .LBB21_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -8079,7 +8299,7 @@ define inreg <9 x i64> @bitcast_v18f32_to_v9i64_scalar(<18 x float> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB21_5: ; %end
+; SI-NEXT:  .LBB21_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
 ; SI-NEXT:    v_readlane_b32 s52, v32, 8
 ; SI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -8132,10 +8352,18 @@ define inreg <9 x i64> @bitcast_v18f32_to_v9i64_scalar(<18 x float> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_3
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_4
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v17, s53, 1.0
 ; VI-NEXT:    v_add_f32_e64 v16, s52, 1.0
 ; VI-NEXT:    v_add_f32_e64 v15, s51, 1.0
@@ -8154,10 +8382,8 @@ define inreg <9 x i64> @bitcast_v18f32_to_v9i64_scalar(<18 x float> inreg %a, i3
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB21_5
-; VI-NEXT:  .LBB21_3:
-; VI-NEXT:    s_branch .LBB21_2
-; VI-NEXT:  .LBB21_4:
+; VI-NEXT:    s_branch .LBB21_6
+; VI-NEXT:  .LBB21_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -8190,7 +8416,7 @@ define inreg <9 x i64> @bitcast_v18f32_to_v9i64_scalar(<18 x float> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB21_5: ; %end
+; VI-NEXT:  .LBB21_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
 ; VI-NEXT:    v_readlane_b32 s52, v32, 8
 ; VI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -8243,10 +8469,18 @@ define inreg <9 x i64> @bitcast_v18f32_to_v9i64_scalar(<18 x float> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_4
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v17, s53, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v16, s52, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v15, s51, 1.0
@@ -8265,10 +8499,8 @@ define inreg <9 x i64> @bitcast_v18f32_to_v9i64_scalar(<18 x float> inreg %a, i3
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB21_5
-; GFX9-NEXT:  .LBB21_3:
-; GFX9-NEXT:    s_branch .LBB21_2
-; GFX9-NEXT:  .LBB21_4:
+; GFX9-NEXT:    s_branch .LBB21_6
+; GFX9-NEXT:  .LBB21_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -8301,7 +8533,7 @@ define inreg <9 x i64> @bitcast_v18f32_to_v9i64_scalar(<18 x float> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB21_5: ; %end
+; GFX9-NEXT:  .LBB21_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s52, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -8355,11 +8587,16 @@ define inreg <9 x i64> @bitcast_v18f32_to_v9i64_scalar(<18 x float> inreg %a, i3
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_4
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v17, s53, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v16, s52, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v15, s51, 1.0
@@ -8379,8 +8616,6 @@ define inreg <9 x i64> @bitcast_v18f32_to_v9i64_scalar(<18 x float> inreg %a, i3
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB21_5
-; GFX11-NEXT:  .LBB21_3:
-; GFX11-NEXT:    s_branch .LBB21_2
 ; GFX11-NEXT:  .LBB21_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -8588,10 +8823,18 @@ define inreg <18 x float> @bitcast_v9i64_to_v18f32_scalar(<9 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s8, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s9, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -8610,7 +8853,7 @@ define inreg <18 x float> @bitcast_v9i64_to_v18f32_scalar(<9 x i64> inreg %a, i3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8630,8 +8873,6 @@ define inreg <18 x float> @bitcast_v9i64_to_v18f32_scalar(<9 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v16, s7
 ; SI-NEXT:    v_mov_b32_e32 v17, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v9i64_to_v18f32_scalar:
 ; VI:       ; %bb.0:
@@ -8642,10 +8883,18 @@ define inreg <18 x float> @bitcast_v9i64_to_v18f32_scalar(<9 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s8, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s9, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_4
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_3
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -8664,7 +8913,7 @@ define inreg <18 x float> @bitcast_v9i64_to_v18f32_scalar(<9 x i64> inreg %a, i3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB23_3: ; %end
+; VI-NEXT:  .LBB23_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8684,8 +8933,6 @@ define inreg <18 x float> @bitcast_v9i64_to_v18f32_scalar(<9 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v16, s7
 ; VI-NEXT:    v_mov_b32_e32 v17, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_4:
-; VI-NEXT:    s_branch .LBB23_2
 ;
 ; GFX9-LABEL: bitcast_v9i64_to_v18f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -8696,10 +8943,18 @@ define inreg <18 x float> @bitcast_v9i64_to_v18f32_scalar(<9 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_3
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -8718,7 +8973,7 @@ define inreg <18 x float> @bitcast_v9i64_to_v18f32_scalar(<9 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB23_3: ; %end
+; GFX9-NEXT:  .LBB23_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -8738,8 +8993,6 @@ define inreg <18 x float> @bitcast_v9i64_to_v18f32_scalar(<9 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_4:
-; GFX9-NEXT:    s_branch .LBB23_2
 ;
 ; GFX11-LABEL: bitcast_v9i64_to_v18f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -8747,11 +9000,16 @@ define inreg <18 x float> @bitcast_v9i64_to_v18f32_scalar(<9 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_3
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s28, s28, 3
 ; GFX11-NEXT:    s_addc_u32 s29, s29, 0
 ; GFX11-NEXT:    s_add_u32 s26, s26, 3
@@ -8770,7 +9028,7 @@ define inreg <18 x float> @bitcast_v9i64_to_v18f32_scalar(<9 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB23_3: ; %end
+; GFX11-NEXT:  .LBB23_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -8782,8 +9040,6 @@ define inreg <18 x float> @bitcast_v9i64_to_v18f32_scalar(<9 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s28 :: v_dual_mov_b32 v17, s29
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_4:
-; GFX11-NEXT:    s_branch .LBB23_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -8972,10 +9228,18 @@ define inreg <9 x double> @bitcast_v18f32_to_v9f64_scalar(<18 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_3
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB25_4
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v17, s53, 1.0
 ; SI-NEXT:    v_add_f32_e64 v16, s52, 1.0
 ; SI-NEXT:    v_add_f32_e64 v15, s51, 1.0
@@ -8994,10 +9258,8 @@ define inreg <9 x double> @bitcast_v18f32_to_v9f64_scalar(<18 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB25_5
-; SI-NEXT:  .LBB25_3:
-; SI-NEXT:    s_branch .LBB25_2
-; SI-NEXT:  .LBB25_4:
+; SI-NEXT:    s_branch .LBB25_6
+; SI-NEXT:  .LBB25_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -9030,7 +9292,7 @@ define inreg <9 x double> @bitcast_v18f32_to_v9f64_scalar(<18 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB25_5: ; %end
+; SI-NEXT:  .LBB25_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
 ; SI-NEXT:    v_readlane_b32 s52, v32, 8
 ; SI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -9083,10 +9345,18 @@ define inreg <9 x double> @bitcast_v18f32_to_v9f64_scalar(<18 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_3
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB25_4
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v17, s53, 1.0
 ; VI-NEXT:    v_add_f32_e64 v16, s52, 1.0
 ; VI-NEXT:    v_add_f32_e64 v15, s51, 1.0
@@ -9105,10 +9375,8 @@ define inreg <9 x double> @bitcast_v18f32_to_v9f64_scalar(<18 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB25_5
-; VI-NEXT:  .LBB25_3:
-; VI-NEXT:    s_branch .LBB25_2
-; VI-NEXT:  .LBB25_4:
+; VI-NEXT:    s_branch .LBB25_6
+; VI-NEXT:  .LBB25_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -9141,7 +9409,7 @@ define inreg <9 x double> @bitcast_v18f32_to_v9f64_scalar(<18 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB25_5: ; %end
+; VI-NEXT:  .LBB25_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
 ; VI-NEXT:    v_readlane_b32 s52, v32, 8
 ; VI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -9194,10 +9462,18 @@ define inreg <9 x double> @bitcast_v18f32_to_v9f64_scalar(<18 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_4
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v17, s53, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v16, s52, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v15, s51, 1.0
@@ -9216,10 +9492,8 @@ define inreg <9 x double> @bitcast_v18f32_to_v9f64_scalar(<18 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB25_5
-; GFX9-NEXT:  .LBB25_3:
-; GFX9-NEXT:    s_branch .LBB25_2
-; GFX9-NEXT:  .LBB25_4:
+; GFX9-NEXT:    s_branch .LBB25_6
+; GFX9-NEXT:  .LBB25_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -9252,7 +9526,7 @@ define inreg <9 x double> @bitcast_v18f32_to_v9f64_scalar(<18 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB25_5: ; %end
+; GFX9-NEXT:  .LBB25_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s52, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -9306,11 +9580,16 @@ define inreg <9 x double> @bitcast_v18f32_to_v9f64_scalar(<18 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_4
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB25_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v17, s53, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v16, s52, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v15, s51, 1.0
@@ -9330,8 +9609,6 @@ define inreg <9 x double> @bitcast_v18f32_to_v9f64_scalar(<18 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB25_5
-; GFX11-NEXT:  .LBB25_3:
-; GFX11-NEXT:    s_branch .LBB25_2
 ; GFX11-NEXT:  .LBB25_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -9526,10 +9803,18 @@ define inreg <18 x float> @bitcast_v9f64_to_v18f32_scalar(<9 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB27_3
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB27_4
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; SI-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
 ; SI-NEXT:    v_add_f64 v[12:13], s[48:49], 1.0
@@ -9539,10 +9824,8 @@ define inreg <18 x float> @bitcast_v9f64_to_v18f32_scalar(<9 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB27_5
-; SI-NEXT:  .LBB27_3:
-; SI-NEXT:    s_branch .LBB27_2
-; SI-NEXT:  .LBB27_4:
+; SI-NEXT:    s_branch .LBB27_6
+; SI-NEXT:  .LBB27_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -9575,7 +9858,7 @@ define inreg <18 x float> @bitcast_v9f64_to_v18f32_scalar(<9 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB27_5: ; %end
+; SI-NEXT:  .LBB27_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
 ; SI-NEXT:    v_readlane_b32 s52, v32, 8
 ; SI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -9628,10 +9911,18 @@ define inreg <18 x float> @bitcast_v9f64_to_v18f32_scalar(<9 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_3
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB27_4
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; VI-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
 ; VI-NEXT:    v_add_f64 v[12:13], s[48:49], 1.0
@@ -9641,10 +9932,8 @@ define inreg <18 x float> @bitcast_v9f64_to_v18f32_scalar(<9 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB27_5
-; VI-NEXT:  .LBB27_3:
-; VI-NEXT:    s_branch .LBB27_2
-; VI-NEXT:  .LBB27_4:
+; VI-NEXT:    s_branch .LBB27_6
+; VI-NEXT:  .LBB27_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -9677,7 +9966,7 @@ define inreg <18 x float> @bitcast_v9f64_to_v18f32_scalar(<9 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB27_5: ; %end
+; VI-NEXT:  .LBB27_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
 ; VI-NEXT:    v_readlane_b32 s52, v32, 8
 ; VI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -9730,10 +10019,18 @@ define inreg <18 x float> @bitcast_v9f64_to_v18f32_scalar(<9 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_4
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[48:49], 1.0
@@ -9743,10 +10040,8 @@ define inreg <18 x float> @bitcast_v9f64_to_v18f32_scalar(<9 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB27_5
-; GFX9-NEXT:  .LBB27_3:
-; GFX9-NEXT:    s_branch .LBB27_2
-; GFX9-NEXT:  .LBB27_4:
+; GFX9-NEXT:    s_branch .LBB27_6
+; GFX9-NEXT:  .LBB27_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -9779,7 +10074,7 @@ define inreg <18 x float> @bitcast_v9f64_to_v18f32_scalar(<9 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB27_5: ; %end
+; GFX9-NEXT:  .LBB27_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s52, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -9833,11 +10128,16 @@ define inreg <18 x float> @bitcast_v9f64_to_v18f32_scalar(<9 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_4
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB27_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; GFX11-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
 ; GFX11-NEXT:    v_add_f64 v[12:13], s[48:49], 1.0
@@ -9848,8 +10148,6 @@ define inreg <18 x float> @bitcast_v9f64_to_v18f32_scalar(<9 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB27_5
-; GFX11-NEXT:  .LBB27_3:
-; GFX11-NEXT:    s_branch .LBB27_2
 ; GFX11-NEXT:  .LBB27_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -10422,7 +10720,7 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s7, v1
 ; SI-NEXT:    s_cmp_lg_u32 s6, 0
 ; SI-NEXT:    v_readfirstlane_b32 s6, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s76, s5, 16
 ; SI-NEXT:    s_lshr_b32 s75, s7, 16
@@ -10442,8 +10740,34 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[58:59], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[58:59], -1
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[58:59], s[58:59], exec
+; SI-NEXT:    s_cselect_b32 s9, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s9, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v17, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v16, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v15, s7, 1.0
@@ -10480,28 +10804,8 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v34, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v35, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v36, 16, v1
-; SI-NEXT:    s_branch .LBB29_5
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:    s_branch .LBB29_6
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -10538,7 +10842,7 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v24, s44
 ; SI-NEXT:    v_mov_b32_e32 v25, s46
 ; SI-NEXT:    v_mov_b32_e32 v26, s56
-; SI-NEXT:  .LBB29_5: ; %end
+; SI-NEXT:  .LBB29_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v26
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v25, 16, v25
@@ -10604,7 +10908,7 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s8, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s9, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s10, s6, 16
 ; VI-NEXT:    s_lshr_b32 s11, s7, 16
@@ -10624,8 +10928,34 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s57, s18, 16
 ; VI-NEXT:    s_lshr_b32 s58, s17, 16
 ; VI-NEXT:    s_lshr_b32 s59, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v17, s6, 1.0
 ; VI-NEXT:    v_add_f32_e64 v16, s7, 1.0
 ; VI-NEXT:    v_add_f32_e64 v15, s8, 1.0
@@ -10662,28 +10992,8 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v33, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v34, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v35, 16, v0
-; VI-NEXT:    s_branch .LBB29_5
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:    s_branch .LBB29_6
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -10720,7 +11030,7 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v20, s12
 ; VI-NEXT:    v_mov_b32_e32 v19, s11
 ; VI-NEXT:    v_mov_b32_e32 v18, s10
-; VI-NEXT:  .LBB29_5: ; %end
+; VI-NEXT:  .LBB29_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v35, 16, v35
 ; VI-NEXT:    v_lshlrev_b32_e32 v34, 16, v34
 ; VI-NEXT:    v_lshlrev_b32_e32 v33, 16, v33
@@ -10768,7 +11078,7 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s10, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s11, s7, 16
@@ -10788,8 +11098,34 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s57, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s58, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v17, s6, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v16, s7, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v15, s8, 1.0
@@ -10826,28 +11162,8 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v33, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v34, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v35, 16, v0
-; GFX9-NEXT:    s_branch .LBB29_5
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:    s_branch .LBB29_6
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -10884,7 +11200,7 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s12
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s11
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s10
-; GFX9-NEXT:  .LBB29_5: ; %end
+; GFX9-NEXT:  .LBB29_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -10927,12 +11243,12 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; GFX11-TRUE16:       ; %bb.0:
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, 0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s5, s29, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s6, s28, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s4, s29, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s5, s28, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s7, s27, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s8, s26, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s9, s25, 16
@@ -10949,9 +11265,34 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s44, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s45, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-TRUE16-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB29_3
+; GFX11-TRUE16-NEXT:  .LBB29_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr5
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-TRUE16-NEXT:  .LBB29_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v17, s29, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v16, s28, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v15, s27, 1.0
@@ -10988,28 +11329,8 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v33, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v34, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB29_5
-; GFX11-TRUE16-NEXT:  .LBB29_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr5
-; GFX11-TRUE16-NEXT:    s_branch .LBB29_2
-; GFX11-TRUE16-NEXT:  .LBB29_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB29_6
+; GFX11-TRUE16-NEXT:  .LBB29_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -11027,8 +11348,8 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s10 :: v_dual_mov_b32 v22, s9
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s8 :: v_dual_mov_b32 v20, s7
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v19, s6 :: v_dual_mov_b32 v18, s5
-; GFX11-TRUE16-NEXT:  .LBB29_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v19, s5 :: v_dual_mov_b32 v18, s4
+; GFX11-TRUE16-NEXT:  .LBB29_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v35.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v34.l
@@ -11054,12 +11375,12 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; GFX11-FAKE16:       ; %bb.0:
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, 0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s5, s29, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s6, s28, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s4, s29, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s5, s28, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s7, s27, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s8, s26, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s9, s25, 16
@@ -11076,9 +11397,34 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s44, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s45, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-FAKE16-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB29_3
+; GFX11-FAKE16-NEXT:  .LBB29_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr5
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-FAKE16-NEXT:  .LBB29_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v14, s28, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v15, s27, 1.0
@@ -11115,28 +11461,8 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v33, 16, v0
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v34, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v2
-; GFX11-FAKE16-NEXT:    s_branch .LBB29_5
-; GFX11-FAKE16-NEXT:  .LBB29_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr5
-; GFX11-FAKE16-NEXT:    s_branch .LBB29_2
-; GFX11-FAKE16-NEXT:  .LBB29_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB29_6
+; GFX11-FAKE16-NEXT:  .LBB29_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v7, s3
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v6, s16 :: v_dual_mov_b32 v5, s17
@@ -11154,8 +11480,8 @@ define inreg <36 x i16> @bitcast_v18f32_to_v36i16_scalar(<18 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v23, s10 :: v_dual_mov_b32 v22, s9
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v21, s8 :: v_dual_mov_b32 v20, s7
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v19, s6 :: v_dual_mov_b32 v18, s5
-; GFX11-FAKE16-NEXT:  .LBB29_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v19, s5 :: v_dual_mov_b32 v18, s4
+; GFX11-FAKE16-NEXT:  .LBB29_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v36, 0xffff, v0
@@ -11999,7 +12325,7 @@ define inreg <18 x float> @bitcast_v36i16_to_v18f32_scalar(<36 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s15, s72, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v4
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_4
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -12055,8 +12381,17 @@ define inreg <18 x float> @bitcast_v36i16_to_v18f32_scalar(<36 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB31_3
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -12147,7 +12482,7 @@ define inreg <18 x float> @bitcast_v36i16_to_v18f32_scalar(<36 x i16> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s53, s4, 0x30000
-; SI-NEXT:  .LBB31_3: ; %end
+; SI-NEXT:  .LBB31_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -12187,9 +12522,6 @@ define inreg <18 x float> @bitcast_v36i16_to_v18f32_scalar(<36 x i16> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB31_2
 ;
 ; VI-LABEL: bitcast_v36i16_to_v18f32_scalar:
 ; VI:       ; %bb.0:
@@ -12237,7 +12569,7 @@ define inreg <18 x float> @bitcast_v36i16_to_v18f32_scalar(<36 x i16> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s15, s72, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v4
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_4
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -12293,8 +12625,17 @@ define inreg <18 x float> @bitcast_v36i16_to_v18f32_scalar(<36 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB31_3
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -12385,7 +12726,7 @@ define inreg <18 x float> @bitcast_v36i16_to_v18f32_scalar(<36 x i16> inreg %a,
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s53, s4, 0x30000
-; VI-NEXT:  .LBB31_3: ; %end
+; VI-NEXT:  .LBB31_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -12425,9 +12766,6 @@ define inreg <18 x float> @bitcast_v36i16_to_v18f32_scalar(<36 x i16> inreg %a,
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB31_2
 ;
 ; GFX9-LABEL: bitcast_v36i16_to_v18f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -12487,10 +12825,18 @@ define inreg <18 x float> @bitcast_v36i16_to_v18f32_scalar(<36 x i16> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s51, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s52, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_4
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -12509,10 +12855,8 @@ define inreg <18 x float> @bitcast_v36i16_to_v18f32_scalar(<36 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v15, s51, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v16, s52, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB31_5
-; GFX9-NEXT:  .LBB31_3:
-; GFX9-NEXT:    s_branch .LBB31_2
-; GFX9-NEXT:  .LBB31_4:
+; GFX9-NEXT:    s_branch .LBB31_6
+; GFX9-NEXT:  .LBB31_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -12545,7 +12889,7 @@ define inreg <18 x float> @bitcast_v36i16_to_v18f32_scalar(<36 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB31_5: ; %end
+; GFX9-NEXT:  .LBB31_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s52, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -12604,11 +12948,16 @@ define inreg <18 x float> @bitcast_v36i16_to_v18f32_scalar(<36 x i16> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s15, s27, s15
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s16, s28, s42
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_4
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -12628,8 +12977,6 @@ define inreg <18 x float> @bitcast_v36i16_to_v18f32_scalar(<36 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v16, s16, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v17, s17, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_3:
-; GFX11-NEXT:    s_branch .LBB31_2
 ; GFX11-NEXT:  .LBB31_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -13187,7 +13534,7 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s7, v1
 ; SI-NEXT:    s_cmp_lg_u32 s6, 0
 ; SI-NEXT:    v_readfirstlane_b32 s6, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s76, s5, 16
 ; SI-NEXT:    s_lshr_b32 s75, s7, 16
@@ -13207,8 +13554,34 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[58:59], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[58:59], -1
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[58:59], s[58:59], exec
+; SI-NEXT:    s_cselect_b32 s9, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s9, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v17, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v16, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v15, s7, 1.0
@@ -13245,28 +13618,8 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v34, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v35, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v36, 16, v1
-; SI-NEXT:    s_branch .LBB33_5
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:    s_branch .LBB33_6
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13303,7 +13656,7 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v24, s44
 ; SI-NEXT:    v_mov_b32_e32 v25, s46
 ; SI-NEXT:    v_mov_b32_e32 v26, s56
-; SI-NEXT:  .LBB33_5: ; %end
+; SI-NEXT:  .LBB33_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v26
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v25, 16, v25
@@ -13369,7 +13722,7 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s8, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s9, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s10, s6, 16
 ; VI-NEXT:    s_lshr_b32 s11, s7, 16
@@ -13389,8 +13742,34 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s57, s18, 16
 ; VI-NEXT:    s_lshr_b32 s58, s17, 16
 ; VI-NEXT:    s_lshr_b32 s59, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v17, s6, 1.0
 ; VI-NEXT:    v_add_f32_e64 v16, s7, 1.0
 ; VI-NEXT:    v_add_f32_e64 v15, s8, 1.0
@@ -13427,28 +13806,8 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v33, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v34, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v35, 16, v0
-; VI-NEXT:    s_branch .LBB33_5
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:    s_branch .LBB33_6
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13485,7 +13844,7 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v20, s12
 ; VI-NEXT:    v_mov_b32_e32 v19, s11
 ; VI-NEXT:    v_mov_b32_e32 v18, s10
-; VI-NEXT:  .LBB33_5: ; %end
+; VI-NEXT:  .LBB33_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v35, 16, v35
 ; VI-NEXT:    v_lshlrev_b32_e32 v34, 16, v34
 ; VI-NEXT:    v_lshlrev_b32_e32 v33, 16, v33
@@ -13533,7 +13892,7 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s10, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s11, s7, 16
@@ -13553,8 +13912,34 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s57, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s58, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v17, s6, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v16, s7, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v15, s8, 1.0
@@ -13591,28 +13976,8 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v33, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v34, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v35, 16, v0
-; GFX9-NEXT:    s_branch .LBB33_5
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:    s_branch .LBB33_6
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -13649,7 +14014,7 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s12
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s11
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s10
-; GFX9-NEXT:  .LBB33_5: ; %end
+; GFX9-NEXT:  .LBB33_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -13692,12 +14057,12 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; GFX11-TRUE16:       ; %bb.0:
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, 0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s5, s29, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s6, s28, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s4, s29, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s5, s28, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s7, s27, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s8, s26, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s9, s25, 16
@@ -13714,9 +14079,34 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s44, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s45, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-TRUE16-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB33_3
+; GFX11-TRUE16-NEXT:  .LBB33_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr5
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-TRUE16-NEXT:  .LBB33_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v17, s29, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v16, s28, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v15, s27, 1.0
@@ -13753,28 +14143,8 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v33, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v34, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB33_5
-; GFX11-TRUE16-NEXT:  .LBB33_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr5
-; GFX11-TRUE16-NEXT:    s_branch .LBB33_2
-; GFX11-TRUE16-NEXT:  .LBB33_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB33_6
+; GFX11-TRUE16-NEXT:  .LBB33_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -13792,8 +14162,8 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s10 :: v_dual_mov_b32 v22, s9
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s8 :: v_dual_mov_b32 v20, s7
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v19, s6 :: v_dual_mov_b32 v18, s5
-; GFX11-TRUE16-NEXT:  .LBB33_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v19, s5 :: v_dual_mov_b32 v18, s4
+; GFX11-TRUE16-NEXT:  .LBB33_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v35.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v34.l
@@ -13819,12 +14189,12 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; GFX11-FAKE16:       ; %bb.0:
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, 0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s5, s29, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s6, s28, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s4, s29, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s5, s28, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s7, s27, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s8, s26, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s9, s25, 16
@@ -13841,9 +14211,34 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s44, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s45, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-FAKE16-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB33_3
+; GFX11-FAKE16-NEXT:  .LBB33_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr5
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-FAKE16-NEXT:  .LBB33_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v13, s29, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v14, s28, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v15, s27, 1.0
@@ -13880,28 +14275,8 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v33, 16, v0
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v34, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v2
-; GFX11-FAKE16-NEXT:    s_branch .LBB33_5
-; GFX11-FAKE16-NEXT:  .LBB33_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr5
-; GFX11-FAKE16-NEXT:    s_branch .LBB33_2
-; GFX11-FAKE16-NEXT:  .LBB33_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB33_6
+; GFX11-FAKE16-NEXT:  .LBB33_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v7, s3
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v6, s16 :: v_dual_mov_b32 v5, s17
@@ -13919,8 +14294,8 @@ define inreg <36 x half> @bitcast_v18f32_to_v36f16_scalar(<18 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v23, s10 :: v_dual_mov_b32 v22, s9
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v21, s8 :: v_dual_mov_b32 v20, s7
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v19, s6 :: v_dual_mov_b32 v18, s5
-; GFX11-FAKE16-NEXT:  .LBB33_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v19, s5 :: v_dual_mov_b32 v18, s4
+; GFX11-FAKE16-NEXT:  .LBB33_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v36, 0xffff, v0
@@ -14838,7 +15213,7 @@ define inreg <18 x float> @bitcast_v36f16_to_v18f32_scalar(<36 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s15, s13, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v4
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_3
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -14894,8 +15269,17 @@ define inreg <18 x float> @bitcast_v36f16_to_v18f32_scalar(<36 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB35_4
-; SI-NEXT:  .LBB35_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s91
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s90
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
@@ -15040,11 +15424,8 @@ define inreg <18 x float> @bitcast_v36f16_to_v18f32_scalar(<36 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f16_f32_e32 v17, v17
 ; SI-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
 ; SI-NEXT:    v_or_b32_e32 v17, v18, v17
-; SI-NEXT:    s_branch .LBB35_5
-; SI-NEXT:  .LBB35_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB35_2
-; SI-NEXT:  .LBB35_4:
+; SI-NEXT:    s_branch .LBB35_6
+; SI-NEXT:  .LBB35_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -15077,7 +15458,7 @@ define inreg <18 x float> @bitcast_v36f16_to_v18f32_scalar(<36 x half> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB35_5: ; %end
+; SI-NEXT:  .LBB35_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s67, v32, 15
 ; SI-NEXT:    v_readlane_b32 s66, v32, 14
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -15146,7 +15527,7 @@ define inreg <18 x float> @bitcast_v36f16_to_v18f32_scalar(<36 x half> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s73, s15, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v4
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -15202,8 +15583,17 @@ define inreg <18 x float> @bitcast_v36f16_to_v18f32_scalar(<36 x half> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v17, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v0, s91
 ; VI-NEXT:    v_mov_b32_e32 v2, s90
@@ -15277,11 +15667,8 @@ define inreg <18 x float> @bitcast_v36f16_to_v18f32_scalar(<36 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_sdwa v18, v18, v17 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v17, s6, v17
 ; VI-NEXT:    v_or_b32_e32 v17, v17, v18
-; VI-NEXT:    s_branch .LBB35_5
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:    s_branch .LBB35_6
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -15314,7 +15701,7 @@ define inreg <18 x float> @bitcast_v36f16_to_v18f32_scalar(<36 x half> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB35_5: ; %end
+; VI-NEXT:  .LBB35_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v32, 15
 ; VI-NEXT:    v_readlane_b32 s66, v32, 14
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -15395,10 +15782,18 @@ define inreg <18 x float> @bitcast_v36f16_to_v18f32_scalar(<36 x half> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s51, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s52, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v17, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v17 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v17 op_sel_hi:[1,0]
@@ -15418,10 +15813,8 @@ define inreg <18 x float> @bitcast_v36f16_to_v18f32_scalar(<36 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v15, s51, v17 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v16, s52, v17 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v17, s53, v17 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB35_5
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:    s_branch .LBB35_6
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -15454,7 +15847,7 @@ define inreg <18 x float> @bitcast_v36f16_to_v18f32_scalar(<36 x half> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB35_5: ; %end
+; GFX9-NEXT:  .LBB35_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s52, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -15513,11 +15906,16 @@ define inreg <18 x float> @bitcast_v36f16_to_v18f32_scalar(<36 x half> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s15, s27, s15
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s16, s28, s42
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -15537,8 +15935,6 @@ define inreg <18 x float> @bitcast_v36f16_to_v18f32_scalar(<36 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v16, 0x200, s16 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v17, 0x200, s17 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -15731,10 +16127,18 @@ define inreg <9 x double> @bitcast_v9i64_to_v9f64_scalar(<9 x i64> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s8, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s9, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_4
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB37_3
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
@@ -15753,7 +16157,7 @@ define inreg <9 x double> @bitcast_v9i64_to_v9f64_scalar(<9 x i64> inreg %a, i32
 ; SI-NEXT:    s_addc_u32 s8, s8, 0
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
-; SI-NEXT:  .LBB37_3: ; %end
+; SI-NEXT:  .LBB37_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -15773,8 +16177,6 @@ define inreg <9 x double> @bitcast_v9i64_to_v9f64_scalar(<9 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v16, s7
 ; SI-NEXT:    v_mov_b32_e32 v17, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB37_4:
-; SI-NEXT:    s_branch .LBB37_2
 ;
 ; VI-LABEL: bitcast_v9i64_to_v9f64_scalar:
 ; VI:       ; %bb.0:
@@ -15785,10 +16187,18 @@ define inreg <9 x double> @bitcast_v9i64_to_v9f64_scalar(<9 x i64> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s8, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s9, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_4
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_3
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -15807,7 +16217,7 @@ define inreg <9 x double> @bitcast_v9i64_to_v9f64_scalar(<9 x i64> inreg %a, i32
 ; VI-NEXT:    s_addc_u32 s8, s8, 0
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
-; VI-NEXT:  .LBB37_3: ; %end
+; VI-NEXT:  .LBB37_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -15827,8 +16237,6 @@ define inreg <9 x double> @bitcast_v9i64_to_v9f64_scalar(<9 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v16, s7
 ; VI-NEXT:    v_mov_b32_e32 v17, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_4:
-; VI-NEXT:    s_branch .LBB37_2
 ;
 ; GFX9-LABEL: bitcast_v9i64_to_v9f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -15839,10 +16247,18 @@ define inreg <9 x double> @bitcast_v9i64_to_v9f64_scalar(<9 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_3
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -15861,7 +16277,7 @@ define inreg <9 x double> @bitcast_v9i64_to_v9f64_scalar(<9 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_addc_u32 s8, s8, 0
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
-; GFX9-NEXT:  .LBB37_3: ; %end
+; GFX9-NEXT:  .LBB37_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -15881,8 +16297,6 @@ define inreg <9 x double> @bitcast_v9i64_to_v9f64_scalar(<9 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_4:
-; GFX9-NEXT:    s_branch .LBB37_2
 ;
 ; GFX11-LABEL: bitcast_v9i64_to_v9f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -15890,11 +16304,16 @@ define inreg <9 x double> @bitcast_v9i64_to_v9f64_scalar(<9 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_3
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -15913,7 +16332,7 @@ define inreg <9 x double> @bitcast_v9i64_to_v9f64_scalar(<9 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_addc_u32 s27, s27, 0
 ; GFX11-NEXT:    s_add_u32 s28, s28, 3
 ; GFX11-NEXT:    s_addc_u32 s29, s29, 0
-; GFX11-NEXT:  .LBB37_3: ; %end
+; GFX11-NEXT:  .LBB37_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -15924,8 +16343,6 @@ define inreg <9 x double> @bitcast_v9i64_to_v9f64_scalar(<9 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s26 :: v_dual_mov_b32 v15, s27
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s28 :: v_dual_mov_b32 v17, s29
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_4:
-; GFX11-NEXT:    s_branch .LBB37_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -16087,10 +16504,18 @@ define inreg <9 x i64> @bitcast_v9f64_to_v9i64_scalar(<9 x double> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_3
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB39_4
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -16100,10 +16525,8 @@ define inreg <9 x i64> @bitcast_v9f64_to_v9i64_scalar(<9 x double> inreg %a, i32
 ; SI-NEXT:    v_add_f64 v[12:13], s[48:49], 1.0
 ; SI-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
 ; SI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
-; SI-NEXT:    s_branch .LBB39_5
-; SI-NEXT:  .LBB39_3:
-; SI-NEXT:    s_branch .LBB39_2
-; SI-NEXT:  .LBB39_4:
+; SI-NEXT:    s_branch .LBB39_6
+; SI-NEXT:  .LBB39_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -16136,7 +16559,7 @@ define inreg <9 x i64> @bitcast_v9f64_to_v9i64_scalar(<9 x double> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB39_5: ; %end
+; SI-NEXT:  .LBB39_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
 ; SI-NEXT:    v_readlane_b32 s52, v32, 8
 ; SI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -16189,10 +16612,18 @@ define inreg <9 x i64> @bitcast_v9f64_to_v9i64_scalar(<9 x double> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_3
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_4
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -16202,10 +16633,8 @@ define inreg <9 x i64> @bitcast_v9f64_to_v9i64_scalar(<9 x double> inreg %a, i32
 ; VI-NEXT:    v_add_f64 v[12:13], s[48:49], 1.0
 ; VI-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
 ; VI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
-; VI-NEXT:    s_branch .LBB39_5
-; VI-NEXT:  .LBB39_3:
-; VI-NEXT:    s_branch .LBB39_2
-; VI-NEXT:  .LBB39_4:
+; VI-NEXT:    s_branch .LBB39_6
+; VI-NEXT:  .LBB39_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -16238,7 +16667,7 @@ define inreg <9 x i64> @bitcast_v9f64_to_v9i64_scalar(<9 x double> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB39_5: ; %end
+; VI-NEXT:  .LBB39_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
 ; VI-NEXT:    v_readlane_b32 s52, v32, 8
 ; VI-NEXT:    v_readlane_b32 s51, v32, 7
@@ -16291,10 +16720,18 @@ define inreg <9 x i64> @bitcast_v9f64_to_v9i64_scalar(<9 x double> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_4
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -16304,10 +16741,8 @@ define inreg <9 x i64> @bitcast_v9f64_to_v9i64_scalar(<9 x double> inreg %a, i32
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[48:49], 1.0
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
-; GFX9-NEXT:    s_branch .LBB39_5
-; GFX9-NEXT:  .LBB39_3:
-; GFX9-NEXT:    s_branch .LBB39_2
-; GFX9-NEXT:  .LBB39_4:
+; GFX9-NEXT:    s_branch .LBB39_6
+; GFX9-NEXT:  .LBB39_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -16340,7 +16775,7 @@ define inreg <9 x i64> @bitcast_v9f64_to_v9i64_scalar(<9 x double> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB39_5: ; %end
+; GFX9-NEXT:  .LBB39_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s52, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -16394,11 +16829,16 @@ define inreg <9 x i64> @bitcast_v9f64_to_v9i64_scalar(<9 x double> inreg %a, i32
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -16409,8 +16849,6 @@ define inreg <9 x i64> @bitcast_v9f64_to_v9i64_scalar(<9 x double> inreg %a, i32
 ; GFX11-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
 ; GFX11-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; GFX11-NEXT:    s_branch .LBB39_5
-; GFX11-NEXT:  .LBB39_3:
-; GFX11-NEXT:    s_branch .LBB39_2
 ; GFX11-NEXT:  .LBB39_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -17011,7 +17449,7 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s7, v1
 ; SI-NEXT:    s_cmp_lg_u32 s6, 0
 ; SI-NEXT:    v_readfirstlane_b32 s6, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_4
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s60, s5, 16
 ; SI-NEXT:    s_lshr_b32 s61, s7, 16
@@ -17031,8 +17469,34 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB41_3
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[58:59], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[58:59], -1
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[58:59], s[58:59], exec
+; SI-NEXT:    s_cselect_b32 s9, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s9, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -17069,7 +17533,7 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 16
-; SI-NEXT:  .LBB41_3: ; %end
+; SI-NEXT:  .LBB41_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s9, s56, 16
 ; SI-NEXT:    s_and_b32 s11, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s9, s11, s9
@@ -17143,26 +17607,6 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v16, s4
 ; SI-NEXT:    v_mov_b32_e32 v17, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB41_4:
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    s_branch .LBB41_2
 ;
 ; VI-LABEL: bitcast_v9i64_to_v36i16_scalar:
 ; VI:       ; %bb.0:
@@ -17173,7 +17617,7 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s8, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s9, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_4
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s10, s6, 16
 ; VI-NEXT:    s_lshr_b32 s11, s7, 16
@@ -17193,8 +17637,34 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s57, s18, 16
 ; VI-NEXT:    s_lshr_b32 s58, s17, 16
 ; VI-NEXT:    s_lshr_b32 s59, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB41_3
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -17231,7 +17701,7 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s57, s18, 16
 ; VI-NEXT:    s_lshr_b32 s58, s17, 16
 ; VI-NEXT:    s_lshr_b32 s59, s16, 16
-; VI-NEXT:  .LBB41_3: ; %end
+; VI-NEXT:  .LBB41_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s59, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -17305,26 +17775,6 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v16, s7
 ; VI-NEXT:    v_mov_b32_e32 v17, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_4:
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    s_branch .LBB41_2
 ;
 ; GFX9-LABEL: bitcast_v9i64_to_v36i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -17335,7 +17785,7 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s10, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s11, s7, 16
@@ -17355,8 +17805,34 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b32 s57, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s58, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_3
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -17393,7 +17869,7 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b32 s57, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s58, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s16, 16
-; GFX9-NEXT:  .LBB41_3: ; %end
+; GFX9-NEXT:  .LBB41_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s58
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s57
@@ -17431,26 +17907,6 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    s_branch .LBB41_2
 ;
 ; GFX11-LABEL: bitcast_v9i64_to_v36i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -17458,7 +17914,7 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX11-NEXT:    s_mov_b32 s46, 0
 ; GFX11-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s4, s29, 16
 ; GFX11-NEXT:    s_lshr_b32 s5, s28, 16
@@ -17478,9 +17934,34 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b32 s43, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s44, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s45, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s46
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_3
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB41_3
+; GFX11-NEXT:  .LBB41_2:
+; GFX11-NEXT:    s_mov_b32 s46, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr7
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr5
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:  .LBB41_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s46, s46, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s46, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s46, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s28, s28, 3
 ; GFX11-NEXT:    s_addc_u32 s29, s29, 0
 ; GFX11-NEXT:    s_add_u32 s26, s26, 3
@@ -17517,7 +17998,7 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b32 s43, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s44, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s45, s0, 16
-; GFX11-NEXT:  .LBB41_3: ; %end
+; GFX11-NEXT:  .LBB41_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s45
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s44
@@ -17547,26 +18028,6 @@ define inreg <36 x i16> @bitcast_v9i64_to_v36i16_scalar(<9 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s7 :: v_dual_mov_b32 v15, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s5 :: v_dual_mov_b32 v17, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr7
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr5
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    s_branch .LBB41_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -18373,7 +18834,7 @@ define inreg <9 x i64> @bitcast_v36i16_to_v9i64_scalar(<36 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s15, s72, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v4
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_4
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -18429,8 +18890,17 @@ define inreg <9 x i64> @bitcast_v36i16_to_v9i64_scalar(<36 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB43_3
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -18521,7 +18991,7 @@ define inreg <9 x i64> @bitcast_v36i16_to_v9i64_scalar(<36 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s53, s4, 0x30000
-; SI-NEXT:  .LBB43_3: ; %end
+; SI-NEXT:  .LBB43_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -18561,9 +19031,6 @@ define inreg <9 x i64> @bitcast_v36i16_to_v9i64_scalar(<36 x i16> inreg %a, i32
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB43_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB43_2
 ;
 ; VI-LABEL: bitcast_v36i16_to_v9i64_scalar:
 ; VI:       ; %bb.0:
@@ -18611,7 +19078,7 @@ define inreg <9 x i64> @bitcast_v36i16_to_v9i64_scalar(<36 x i16> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s15, s72, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v4
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_4
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -18667,8 +19134,17 @@ define inreg <9 x i64> @bitcast_v36i16_to_v9i64_scalar(<36 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB43_3
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -18759,7 +19235,7 @@ define inreg <9 x i64> @bitcast_v36i16_to_v9i64_scalar(<36 x i16> inreg %a, i32
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s53, s4, 0x30000
-; VI-NEXT:  .LBB43_3: ; %end
+; VI-NEXT:  .LBB43_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -18799,9 +19275,6 @@ define inreg <9 x i64> @bitcast_v36i16_to_v9i64_scalar(<36 x i16> inreg %a, i32
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB43_2
 ;
 ; GFX9-LABEL: bitcast_v36i16_to_v9i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -18861,10 +19334,18 @@ define inreg <9 x i64> @bitcast_v36i16_to_v9i64_scalar(<36 x i16> inreg %a, i32
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s51, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s52, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -18883,10 +19364,8 @@ define inreg <9 x i64> @bitcast_v36i16_to_v9i64_scalar(<36 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_u16 v15, s51, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v16, s52, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB43_5
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:    s_branch .LBB43_6
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -18919,7 +19398,7 @@ define inreg <9 x i64> @bitcast_v36i16_to_v9i64_scalar(<36 x i16> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB43_5: ; %end
+; GFX9-NEXT:  .LBB43_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s52, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -18978,11 +19457,16 @@ define inreg <9 x i64> @bitcast_v36i16_to_v9i64_scalar(<36 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s15, s27, s15
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s16, s28, s42
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB43_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -19002,8 +19486,6 @@ define inreg <9 x i64> @bitcast_v36i16_to_v9i64_scalar(<36 x i16> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_u16 v16, s16, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v17, s17, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_3:
-; GFX11-NEXT:    s_branch .LBB43_2
 ; GFX11-NEXT:  .LBB43_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -19589,7 +20071,7 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; SI-NEXT:    v_readfirstlane_b32 s7, v1
 ; SI-NEXT:    s_cmp_lg_u32 s6, 0
 ; SI-NEXT:    v_readfirstlane_b32 s6, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_4
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s60, s5, 16
 ; SI-NEXT:    s_lshr_b32 s61, s7, 16
@@ -19609,8 +20091,34 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB45_3
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[58:59], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[58:59], -1
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[58:59], s[58:59], exec
+; SI-NEXT:    s_cselect_b32 s9, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s9, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -19647,7 +20155,7 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 16
-; SI-NEXT:  .LBB45_3: ; %end
+; SI-NEXT:  .LBB45_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s9, s56, 16
 ; SI-NEXT:    s_and_b32 s11, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s9, s11, s9
@@ -19721,26 +20229,6 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v16, s4
 ; SI-NEXT:    v_mov_b32_e32 v17, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB45_4:
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    s_branch .LBB45_2
 ;
 ; VI-LABEL: bitcast_v9i64_to_v36f16_scalar:
 ; VI:       ; %bb.0:
@@ -19751,7 +20239,7 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; VI-NEXT:    v_readfirstlane_b32 s8, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s9, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_4
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s10, s6, 16
 ; VI-NEXT:    s_lshr_b32 s11, s7, 16
@@ -19771,8 +20259,34 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s57, s18, 16
 ; VI-NEXT:    s_lshr_b32 s58, s17, 16
 ; VI-NEXT:    s_lshr_b32 s59, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB45_3
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -19809,7 +20323,7 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s57, s18, 16
 ; VI-NEXT:    s_lshr_b32 s58, s17, 16
 ; VI-NEXT:    s_lshr_b32 s59, s16, 16
-; VI-NEXT:  .LBB45_3: ; %end
+; VI-NEXT:  .LBB45_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s59, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -19883,26 +20397,6 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v16, s7
 ; VI-NEXT:    v_mov_b32_e32 v17, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_4:
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    s_branch .LBB45_2
 ;
 ; GFX9-LABEL: bitcast_v9i64_to_v36f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -19913,7 +20407,7 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s10, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s11, s7, 16
@@ -19933,8 +20427,34 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b32 s57, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s58, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_3
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -19971,7 +20491,7 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b32 s57, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s58, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s16, 16
-; GFX9-NEXT:  .LBB45_3: ; %end
+; GFX9-NEXT:  .LBB45_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s58
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s57
@@ -20009,26 +20529,6 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    s_branch .LBB45_2
 ;
 ; GFX11-LABEL: bitcast_v9i64_to_v36f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -20036,7 +20536,7 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX11-NEXT:    s_mov_b32 s46, 0
 ; GFX11-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s4, s29, 16
 ; GFX11-NEXT:    s_lshr_b32 s5, s28, 16
@@ -20056,9 +20556,34 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b32 s43, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s44, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s45, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s46
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_3
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB45_3
+; GFX11-NEXT:  .LBB45_2:
+; GFX11-NEXT:    s_mov_b32 s46, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr7
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr5
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:  .LBB45_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s46, s46, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s46, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s46, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s28, s28, 3
 ; GFX11-NEXT:    s_addc_u32 s29, s29, 0
 ; GFX11-NEXT:    s_add_u32 s26, s26, 3
@@ -20095,7 +20620,7 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b32 s43, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s44, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s45, s0, 16
-; GFX11-NEXT:  .LBB45_3: ; %end
+; GFX11-NEXT:  .LBB45_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s45
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s44
@@ -20125,26 +20650,6 @@ define inreg <36 x half> @bitcast_v9i64_to_v36f16_scalar(<9 x i64> inreg %a, i32
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s7 :: v_dual_mov_b32 v15, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s5 :: v_dual_mov_b32 v17, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr7
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr5
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    s_branch .LBB45_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -21025,7 +21530,7 @@ define inreg <9 x i64> @bitcast_v36f16_to_v9i64_scalar(<36 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s15, s13, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v4
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB47_3
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -21081,8 +21586,17 @@ define inreg <9 x i64> @bitcast_v36f16_to_v9i64_scalar(<36 x half> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB47_4
-; SI-NEXT:  .LBB47_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s91
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s90
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
@@ -21227,11 +21741,8 @@ define inreg <9 x i64> @bitcast_v36f16_to_v9i64_scalar(<36 x half> inreg %a, i32
 ; SI-NEXT:    v_cvt_f16_f32_e32 v17, v17
 ; SI-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
 ; SI-NEXT:    v_or_b32_e32 v17, v18, v17
-; SI-NEXT:    s_branch .LBB47_5
-; SI-NEXT:  .LBB47_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB47_2
-; SI-NEXT:  .LBB47_4:
+; SI-NEXT:    s_branch .LBB47_6
+; SI-NEXT:  .LBB47_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -21264,7 +21775,7 @@ define inreg <9 x i64> @bitcast_v36f16_to_v9i64_scalar(<36 x half> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB47_5: ; %end
+; SI-NEXT:  .LBB47_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s67, v32, 15
 ; SI-NEXT:    v_readlane_b32 s66, v32, 14
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -21333,7 +21844,7 @@ define inreg <9 x i64> @bitcast_v36f16_to_v9i64_scalar(<36 x half> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s73, s15, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v4
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -21389,8 +21900,17 @@ define inreg <9 x i64> @bitcast_v36f16_to_v9i64_scalar(<36 x half> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v17, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v0, s91
 ; VI-NEXT:    v_mov_b32_e32 v2, s90
@@ -21464,11 +21984,8 @@ define inreg <9 x i64> @bitcast_v36f16_to_v9i64_scalar(<36 x half> inreg %a, i32
 ; VI-NEXT:    v_add_f16_sdwa v18, v18, v17 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v17, s6, v17
 ; VI-NEXT:    v_or_b32_e32 v17, v17, v18
-; VI-NEXT:    s_branch .LBB47_5
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:    s_branch .LBB47_6
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -21501,7 +22018,7 @@ define inreg <9 x i64> @bitcast_v36f16_to_v9i64_scalar(<36 x half> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB47_5: ; %end
+; VI-NEXT:  .LBB47_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v32, 15
 ; VI-NEXT:    v_readlane_b32 s66, v32, 14
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -21582,10 +22099,18 @@ define inreg <9 x i64> @bitcast_v36f16_to_v9i64_scalar(<36 x half> inreg %a, i32
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s51, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s52, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v17, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v17 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v17 op_sel_hi:[1,0]
@@ -21605,10 +22130,8 @@ define inreg <9 x i64> @bitcast_v36f16_to_v9i64_scalar(<36 x half> inreg %a, i32
 ; GFX9-NEXT:    v_pk_add_f16 v15, s51, v17 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v16, s52, v17 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v17, s53, v17 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB47_5
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:    s_branch .LBB47_6
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -21641,7 +22164,7 @@ define inreg <9 x i64> @bitcast_v36f16_to_v9i64_scalar(<36 x half> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB47_5: ; %end
+; GFX9-NEXT:  .LBB47_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s52, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -21700,11 +22223,16 @@ define inreg <9 x i64> @bitcast_v36f16_to_v9i64_scalar(<36 x half> inreg %a, i32
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s15, s27, s15
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s16, s28, s42
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
-; GFX11-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB47_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -21724,8 +22252,6 @@ define inreg <9 x i64> @bitcast_v36f16_to_v9i64_scalar(<36 x half> inreg %a, i32
 ; GFX11-NEXT:    v_pk_add_f16 v16, 0x200, s16 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v17, 0x200, s17 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB47_3:
-; GFX11-NEXT:    s_branch .LBB47_2
 ; GFX11-NEXT:  .LBB47_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -22256,7 +22782,7 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_3
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s76, s7, 16
 ; SI-NEXT:    s_lshr_b32 s75, s5, 16
@@ -22276,8 +22802,34 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB49_4
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[58:59], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[58:59], -1
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[58:59], s[58:59], exec
+; SI-NEXT:    s_cselect_b32 s9, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s9, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
 ; SI-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
 ; SI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
@@ -22305,28 +22857,8 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; SI-NEXT:    v_lshrrev_b32_e32 v34, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v35, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v36, 16, v1
-; SI-NEXT:    s_branch .LBB49_5
-; SI-NEXT:  .LBB49_3:
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    s_branch .LBB49_2
-; SI-NEXT:  .LBB49_4:
+; SI-NEXT:    s_branch .LBB49_6
+; SI-NEXT:  .LBB49_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v17, s7
@@ -22363,7 +22895,7 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v20, s12
 ; SI-NEXT:    v_mov_b32_e32 v19, s10
 ; SI-NEXT:    v_mov_b32_e32 v18, s8
-; SI-NEXT:  .LBB49_5: ; %end
+; SI-NEXT:  .LBB49_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v26
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v25, 16, v25
@@ -22429,7 +22961,7 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s5, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_3
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s10, s7, 16
 ; VI-NEXT:    s_lshr_b32 s43, s6, 16
@@ -22449,8 +22981,34 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s58, s18, 16
 ; VI-NEXT:    s_lshr_b32 s42, s17, 16
 ; VI-NEXT:    s_lshr_b32 s59, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB49_4
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[8:9], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s8, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s8, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
 ; VI-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
@@ -22478,28 +23036,8 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; VI-NEXT:    v_lshrrev_b32_e32 v31, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v35, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v33, 16, v0
-; VI-NEXT:    s_branch .LBB49_5
-; VI-NEXT:  .LBB49_3:
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    s_branch .LBB49_2
-; VI-NEXT:  .LBB49_4:
+; VI-NEXT:    s_branch .LBB49_6
+; VI-NEXT:  .LBB49_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
@@ -22536,7 +23074,7 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v24, s12
 ; VI-NEXT:    v_mov_b32_e32 v22, s11
 ; VI-NEXT:    v_mov_b32_e32 v20, s10
-; VI-NEXT:  .LBB49_5: ; %end
+; VI-NEXT:  .LBB49_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v33, 16, v33
 ; VI-NEXT:    v_lshlrev_b32_e32 v31, 16, v31
 ; VI-NEXT:    v_lshlrev_b32_e32 v29, 16, v29
@@ -22584,7 +23122,7 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s10, s7, 16
 ; GFX9-NEXT:    s_lshr_b32 s43, s6, 16
@@ -22604,8 +23142,34 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s58, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s42, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[8:9], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[8:9], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX9-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
@@ -22633,28 +23197,8 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v31, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v35, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v33, 16, v0
-; GFX9-NEXT:    s_branch .LBB49_5
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:    s_branch .LBB49_6
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
@@ -22691,7 +23235,7 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s12
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s11
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s10
-; GFX9-NEXT:  .LBB49_5: ; %end
+; GFX9-NEXT:  .LBB49_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -22734,13 +23278,13 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; GFX11-TRUE16:       ; %bb.0:
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, 0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s5, s29, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s4, s29, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s14, s28, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s6, s27, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s5, s27, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s26, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s7, s25, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s40, s24, 16
@@ -22756,9 +23300,34 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s45, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-TRUE16-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB49_3
+; GFX11-TRUE16-NEXT:  .LBB49_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr5
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-TRUE16-NEXT:  .LBB49_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[16:17], s[28:29], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[14:15], s[26:27], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
@@ -22786,28 +23355,8 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v31, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v33, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB49_5
-; GFX11-TRUE16-NEXT:  .LBB49_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr5
-; GFX11-TRUE16-NEXT:    s_branch .LBB49_2
-; GFX11-TRUE16-NEXT:  .LBB49_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB49_6
+; GFX11-TRUE16-NEXT:  .LBB49_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -22824,9 +23373,9 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s42 :: v_dual_mov_b32 v28, s9
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s41 :: v_dual_mov_b32 v26, s8
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s40 :: v_dual_mov_b32 v24, s7
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v19, s15 :: v_dual_mov_b32 v22, s6
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v35, s13 :: v_dual_mov_b32 v20, s5
-; GFX11-TRUE16-NEXT:  .LBB49_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v19, s15 :: v_dual_mov_b32 v22, s5
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v35, s13 :: v_dual_mov_b32 v20, s4
+; GFX11-TRUE16-NEXT:  .LBB49_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v33.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v35.l
@@ -22852,13 +23401,13 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; GFX11-FAKE16:       ; %bb.0:
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, 0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s5, s29, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s4, s29, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s14, s28, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s6, s27, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s5, s27, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s26, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s7, s25, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s40, s24, 16
@@ -22874,9 +23423,34 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s45, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-FAKE16-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB49_3
+; GFX11-FAKE16-NEXT:  .LBB49_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr5
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-FAKE16-NEXT:  .LBB49_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[13:14], s[28:29], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[15:16], s[26:27], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[17:18], s[24:25], 1.0
@@ -22904,28 +23478,8 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v19
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v34, 16, v0
-; GFX11-FAKE16-NEXT:    s_branch .LBB49_5
-; GFX11-FAKE16-NEXT:  .LBB49_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr5
-; GFX11-FAKE16-NEXT:    s_branch .LBB49_2
-; GFX11-FAKE16-NEXT:  .LBB49_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB49_6
+; GFX11-FAKE16-NEXT:  .LBB49_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v19, s2
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v5, s16 :: v_dual_mov_b32 v10, s20
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, s18 :: v_dual_mov_b32 v8, s22
@@ -22943,8 +23497,8 @@ define inreg <36 x i16> @bitcast_v9f64_to_v36i16_scalar(<9 x double> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v22, s15 :: v_dual_mov_b32 v31, s10
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v32, s11 :: v_dual_mov_b32 v29, s9
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v28, s8 :: v_dual_mov_b32 v25, s7
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v24, s6 :: v_dual_mov_b32 v23, s5
-; GFX11-FAKE16-NEXT:  .LBB49_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v24, s5 :: v_dual_mov_b32 v23, s4
+; GFX11-FAKE16-NEXT:  .LBB49_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v19, 0xffff, v19
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v5
@@ -23788,7 +24342,7 @@ define inreg <9 x double> @bitcast_v36i16_to_v9f64_scalar(<36 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s15, s72, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v4
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -23844,8 +24398,17 @@ define inreg <9 x double> @bitcast_v36i16_to_v9f64_scalar(<36 x i16> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -23936,7 +24499,7 @@ define inreg <9 x double> @bitcast_v36i16_to_v9f64_scalar(<36 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s53, s4, 0x30000
-; SI-NEXT:  .LBB51_3: ; %end
+; SI-NEXT:  .LBB51_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -23976,9 +24539,6 @@ define inreg <9 x double> @bitcast_v36i16_to_v9f64_scalar(<36 x i16> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v36i16_to_v9f64_scalar:
 ; VI:       ; %bb.0:
@@ -24026,7 +24586,7 @@ define inreg <9 x double> @bitcast_v36i16_to_v9f64_scalar(<36 x i16> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s15, s72, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v4
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -24082,8 +24642,17 @@ define inreg <9 x double> @bitcast_v36i16_to_v9f64_scalar(<36 x i16> inreg %a, i
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -24174,7 +24743,7 @@ define inreg <9 x double> @bitcast_v36i16_to_v9f64_scalar(<36 x i16> inreg %a, i
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s53, s4, 0x30000
-; VI-NEXT:  .LBB51_3: ; %end
+; VI-NEXT:  .LBB51_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -24214,9 +24783,6 @@ define inreg <9 x double> @bitcast_v36i16_to_v9f64_scalar(<36 x i16> inreg %a, i
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v36i16_to_v9f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -24276,10 +24842,18 @@ define inreg <9 x double> @bitcast_v36i16_to_v9f64_scalar(<36 x i16> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s51, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s52, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_4
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -24298,10 +24872,8 @@ define inreg <9 x double> @bitcast_v36i16_to_v9f64_scalar(<36 x i16> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_u16 v15, s51, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v16, s52, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB51_5
-; GFX9-NEXT:  .LBB51_3:
-; GFX9-NEXT:    s_branch .LBB51_2
-; GFX9-NEXT:  .LBB51_4:
+; GFX9-NEXT:    s_branch .LBB51_6
+; GFX9-NEXT:  .LBB51_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -24334,7 +24906,7 @@ define inreg <9 x double> @bitcast_v36i16_to_v9f64_scalar(<36 x i16> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB51_5: ; %end
+; GFX9-NEXT:  .LBB51_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s52, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -24393,11 +24965,16 @@ define inreg <9 x double> @bitcast_v36i16_to_v9f64_scalar(<36 x i16> inreg %a, i
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s15, s27, s15
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s16, s28, s42
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
-; GFX11-NEXT:    s_cbranch_scc0 .LBB51_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB51_4
-; GFX11-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB51_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -24417,8 +24994,6 @@ define inreg <9 x double> @bitcast_v36i16_to_v9f64_scalar(<36 x i16> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_u16 v16, s16, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v17, s17, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB51_3:
-; GFX11-NEXT:    s_branch .LBB51_2
 ; GFX11-NEXT:  .LBB51_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -24949,7 +25524,7 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_3
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s76, s7, 16
 ; SI-NEXT:    s_lshr_b32 s75, s5, 16
@@ -24969,8 +25544,34 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB53_4
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[58:59], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[58:59], -1
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr61
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr63
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[58:59], s[58:59], exec
+; SI-NEXT:    s_cselect_b32 s9, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s9, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
 ; SI-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
 ; SI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
@@ -24998,28 +25599,8 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v34, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v35, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v36, 16, v1
-; SI-NEXT:    s_branch .LBB53_5
-; SI-NEXT:  .LBB53_3:
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr61
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr63
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    s_branch .LBB53_2
-; SI-NEXT:  .LBB53_4:
+; SI-NEXT:    s_branch .LBB53_6
+; SI-NEXT:  .LBB53_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v17, s7
@@ -25056,7 +25637,7 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v20, s12
 ; SI-NEXT:    v_mov_b32_e32 v19, s10
 ; SI-NEXT:    v_mov_b32_e32 v18, s8
-; SI-NEXT:  .LBB53_5: ; %end
+; SI-NEXT:  .LBB53_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v26
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v25, 16, v25
@@ -25122,7 +25703,7 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s5, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_3
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s10, s7, 16
 ; VI-NEXT:    s_lshr_b32 s43, s6, 16
@@ -25142,8 +25723,34 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s58, s18, 16
 ; VI-NEXT:    s_lshr_b32 s42, s17, 16
 ; VI-NEXT:    s_lshr_b32 s59, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB53_4
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[8:9], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s8, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s8, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
 ; VI-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
 ; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
@@ -25171,28 +25778,8 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v31, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v35, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v33, 16, v0
-; VI-NEXT:    s_branch .LBB53_5
-; VI-NEXT:  .LBB53_3:
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    s_branch .LBB53_2
-; VI-NEXT:  .LBB53_4:
+; VI-NEXT:    s_branch .LBB53_6
+; VI-NEXT:  .LBB53_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
@@ -25229,7 +25816,7 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v24, s12
 ; VI-NEXT:    v_mov_b32_e32 v22, s11
 ; VI-NEXT:    v_mov_b32_e32 v20, s10
-; VI-NEXT:  .LBB53_5: ; %end
+; VI-NEXT:  .LBB53_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v33, 16, v33
 ; VI-NEXT:    v_lshlrev_b32_e32 v31, 16, v31
 ; VI-NEXT:    v_lshlrev_b32_e32 v29, 16, v29
@@ -25277,7 +25864,7 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s10, s7, 16
 ; GFX9-NEXT:    s_lshr_b32 s43, s6, 16
@@ -25297,8 +25884,34 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s58, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s42, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_4
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[8:9], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[8:9], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX9-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
 ; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
@@ -25326,28 +25939,8 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v31, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v35, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v33, 16, v0
-; GFX9-NEXT:    s_branch .LBB53_5
-; GFX9-NEXT:  .LBB53_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    s_branch .LBB53_2
-; GFX9-NEXT:  .LBB53_4:
+; GFX9-NEXT:    s_branch .LBB53_6
+; GFX9-NEXT:  .LBB53_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
@@ -25384,7 +25977,7 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s12
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s11
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s10
-; GFX9-NEXT:  .LBB53_5: ; %end
+; GFX9-NEXT:  .LBB53_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -25427,13 +26020,13 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; GFX11-TRUE16:       ; %bb.0:
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, 0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s5, s29, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s4, s29, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s14, s28, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s6, s27, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s5, s27, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s26, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s7, s25, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s40, s24, 16
@@ -25449,9 +26042,34 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s45, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-TRUE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB53_3
+; GFX11-TRUE16-NEXT:  .LBB53_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr5
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-TRUE16-NEXT:  .LBB53_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[16:17], s[28:29], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[14:15], s[26:27], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[12:13], s[24:25], 1.0
@@ -25479,28 +26097,8 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v31, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v33, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB53_5
-; GFX11-TRUE16-NEXT:  .LBB53_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr5
-; GFX11-TRUE16-NEXT:    s_branch .LBB53_2
-; GFX11-TRUE16-NEXT:  .LBB53_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB53_6
+; GFX11-TRUE16-NEXT:  .LBB53_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -25517,9 +26115,9 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s42 :: v_dual_mov_b32 v28, s9
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s41 :: v_dual_mov_b32 v26, s8
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s40 :: v_dual_mov_b32 v24, s7
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v19, s15 :: v_dual_mov_b32 v22, s6
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v35, s13 :: v_dual_mov_b32 v20, s5
-; GFX11-TRUE16-NEXT:  .LBB53_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v19, s15 :: v_dual_mov_b32 v22, s5
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v35, s13 :: v_dual_mov_b32 v20, s4
+; GFX11-TRUE16-NEXT:  .LBB53_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v33.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v35.l
@@ -25545,13 +26143,13 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; GFX11-FAKE16:       ; %bb.0:
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, 0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s5, s29, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s4, s29, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s14, s28, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s6, s27, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s5, s27, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s26, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s7, s25, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s40, s24, 16
@@ -25567,9 +26165,34 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s45, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-FAKE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB53_3
+; GFX11-FAKE16-NEXT:  .LBB53_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr5
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-FAKE16-NEXT:  .LBB53_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[13:14], s[28:29], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[15:16], s[26:27], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[17:18], s[24:25], 1.0
@@ -25597,28 +26220,8 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v19
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v34, 16, v0
-; GFX11-FAKE16-NEXT:    s_branch .LBB53_5
-; GFX11-FAKE16-NEXT:  .LBB53_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr5
-; GFX11-FAKE16-NEXT:    s_branch .LBB53_2
-; GFX11-FAKE16-NEXT:  .LBB53_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB53_6
+; GFX11-FAKE16-NEXT:  .LBB53_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v19, s2
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v5, s16 :: v_dual_mov_b32 v10, s20
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, s18 :: v_dual_mov_b32 v8, s22
@@ -25636,8 +26239,8 @@ define inreg <36 x half> @bitcast_v9f64_to_v36f16_scalar(<9 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v22, s15 :: v_dual_mov_b32 v31, s10
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v32, s11 :: v_dual_mov_b32 v29, s9
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v28, s8 :: v_dual_mov_b32 v25, s7
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v24, s6 :: v_dual_mov_b32 v23, s5
-; GFX11-FAKE16-NEXT:  .LBB53_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v24, s5 :: v_dual_mov_b32 v23, s4
+; GFX11-FAKE16-NEXT:  .LBB53_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v19, 0xffff, v19
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v5
@@ -26555,7 +27158,7 @@ define inreg <9 x double> @bitcast_v36f16_to_v9f64_scalar(<36 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s15, s13, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v4
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -26611,8 +27214,17 @@ define inreg <9 x double> @bitcast_v36f16_to_v9f64_scalar(<36 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s91
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s90
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
@@ -26757,11 +27369,8 @@ define inreg <9 x double> @bitcast_v36f16_to_v9f64_scalar(<36 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f16_f32_e32 v17, v17
 ; SI-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
 ; SI-NEXT:    v_or_b32_e32 v17, v18, v17
-; SI-NEXT:    s_branch .LBB55_5
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:    s_branch .LBB55_6
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -26794,7 +27403,7 @@ define inreg <9 x double> @bitcast_v36f16_to_v9f64_scalar(<36 x half> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB55_5: ; %end
+; SI-NEXT:  .LBB55_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s67, v32, 15
 ; SI-NEXT:    v_readlane_b32 s66, v32, 14
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -26863,7 +27472,7 @@ define inreg <9 x double> @bitcast_v36f16_to_v9f64_scalar(<36 x half> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s73, s15, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v4
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -26919,8 +27528,17 @@ define inreg <9 x double> @bitcast_v36f16_to_v9f64_scalar(<36 x half> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v17, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v0, s91
 ; VI-NEXT:    v_mov_b32_e32 v2, s90
@@ -26994,11 +27612,8 @@ define inreg <9 x double> @bitcast_v36f16_to_v9f64_scalar(<36 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_sdwa v18, v18, v17 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v17, s6, v17
 ; VI-NEXT:    v_or_b32_e32 v17, v17, v18
-; VI-NEXT:    s_branch .LBB55_5
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:    s_branch .LBB55_6
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -27031,7 +27646,7 @@ define inreg <9 x double> @bitcast_v36f16_to_v9f64_scalar(<36 x half> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB55_5: ; %end
+; VI-NEXT:  .LBB55_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s67, v32, 15
 ; VI-NEXT:    v_readlane_b32 s66, v32, 14
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -27112,10 +27727,18 @@ define inreg <9 x double> @bitcast_v36f16_to_v9f64_scalar(<36 x half> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s51, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s52, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v17, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v17 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v17 op_sel_hi:[1,0]
@@ -27135,10 +27758,8 @@ define inreg <9 x double> @bitcast_v36f16_to_v9f64_scalar(<36 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v15, s51, v17 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v16, s52, v17 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v17, s53, v17 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB55_5
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:    s_branch .LBB55_6
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -27171,7 +27792,7 @@ define inreg <9 x double> @bitcast_v36f16_to_v9f64_scalar(<36 x half> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB55_5: ; %end
+; GFX9-NEXT:  .LBB55_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
 ; GFX9-NEXT:    v_readlane_b32 s52, v32, 8
 ; GFX9-NEXT:    v_readlane_b32 s51, v32, 7
@@ -27230,11 +27851,16 @@ define inreg <9 x double> @bitcast_v36f16_to_v9f64_scalar(<36 x half> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s15, s27, s15
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s16, s28, s42
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -27254,8 +27880,6 @@ define inreg <9 x double> @bitcast_v36f16_to_v9f64_scalar(<36 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v16, 0x200, s16 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v17, 0x200, s17 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -28065,91 +28689,89 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v18, s51, 9
 ; SI-NEXT:    v_writelane_b32 v18, s52, 10
 ; SI-NEXT:    v_writelane_b32 v18, s53, 11
-; SI-NEXT:    v_writelane_b32 v18, s54, 12
-; SI-NEXT:    v_writelane_b32 v18, s55, 13
-; SI-NEXT:    v_writelane_b32 v18, s30, 14
-; SI-NEXT:    v_writelane_b32 v18, s31, 15
-; SI-NEXT:    v_readfirstlane_b32 s53, v3
-; SI-NEXT:    v_readfirstlane_b32 s55, v2
-; SI-NEXT:    v_readfirstlane_b32 s50, v1
-; SI-NEXT:    v_readfirstlane_b32 s52, v0
-; SI-NEXT:    s_lshr_b32 s30, s29, 16
-; SI-NEXT:    s_lshr_b32 s49, s28, 16
+; SI-NEXT:    v_writelane_b32 v18, s30, 12
+; SI-NEXT:    v_writelane_b32 v18, s31, 13
+; SI-NEXT:    v_readfirstlane_b32 s51, v3
+; SI-NEXT:    v_readfirstlane_b32 s53, v2
+; SI-NEXT:    v_readfirstlane_b32 s48, v1
+; SI-NEXT:    v_readfirstlane_b32 s50, v0
+; SI-NEXT:    s_lshr_b32 vcc_lo, s29, 16
+; SI-NEXT:    s_lshr_b32 s39, s28, 16
 ; SI-NEXT:    s_lshr_b32 s95, s27, 16
-; SI-NEXT:    s_lshr_b32 s48, s26, 16
+; SI-NEXT:    s_lshr_b32 s38, s26, 16
 ; SI-NEXT:    s_lshr_b32 s94, s25, 16
-; SI-NEXT:    s_lshr_b32 s39, s24, 16
+; SI-NEXT:    s_lshr_b32 s37, s24, 16
 ; SI-NEXT:    s_lshr_b32 s93, s23, 16
-; SI-NEXT:    s_lshr_b32 s38, s22, 16
+; SI-NEXT:    s_lshr_b32 s36, s22, 16
 ; SI-NEXT:    s_lshr_b32 s92, s21, 16
-; SI-NEXT:    s_lshr_b32 s37, s20, 16
+; SI-NEXT:    s_lshr_b32 s35, s20, 16
 ; SI-NEXT:    s_lshr_b32 s91, s19, 16
-; SI-NEXT:    s_lshr_b32 s36, s18, 16
+; SI-NEXT:    s_lshr_b32 s34, s18, 16
 ; SI-NEXT:    s_lshr_b32 s90, s17, 16
-; SI-NEXT:    s_lshr_b32 s35, s16, 16
-; SI-NEXT:    s_lshr_b32 s34, s53, 16
-; SI-NEXT:    s_lshr_b32 s54, s55, 16
-; SI-NEXT:    s_lshr_b32 s31, s50, 16
-; SI-NEXT:    s_lshr_b32 s51, s52, 16
+; SI-NEXT:    s_lshr_b32 s31, s16, 16
+; SI-NEXT:    s_lshr_b32 s30, s51, 16
+; SI-NEXT:    s_lshr_b32 s52, s53, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s48, 16
+; SI-NEXT:    s_lshr_b32 s49, s50, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v4
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s90, 16
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s35, 16
+; SI-NEXT:    s_lshl_b32 s46, s31, 16
 ; SI-NEXT:    s_or_b32 s47, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s91, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s46
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s56, s36, 16
+; SI-NEXT:    s_lshl_b32 s56, s34, 16
 ; SI-NEXT:    s_or_b32 s57, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s21, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s92, 16
 ; SI-NEXT:    s_or_b32 s14, s4, s56
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s58, s37, 16
+; SI-NEXT:    s_lshl_b32 s58, s35, 16
 ; SI-NEXT:    s_or_b32 s59, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s93, 16
 ; SI-NEXT:    s_or_b32 s12, s4, s58
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s60, s38, 16
+; SI-NEXT:    s_lshl_b32 s60, s36, 16
 ; SI-NEXT:    s_or_b32 s61, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s94, 16
 ; SI-NEXT:    s_or_b32 s10, s4, s60
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s62, s39, 16
+; SI-NEXT:    s_lshl_b32 s62, s37, 16
 ; SI-NEXT:    s_or_b32 s63, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s95, 16
 ; SI-NEXT:    s_or_b32 s8, s4, s62
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s72, s48, 16
+; SI-NEXT:    s_lshl_b32 s72, s38, 16
 ; SI-NEXT:    s_or_b32 s73, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s30, 16
+; SI-NEXT:    s_lshl_b32 s7, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s6, s4, s72
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s49, 16
+; SI-NEXT:    s_lshl_b32 s44, s39, 16
 ; SI-NEXT:    s_or_b32 s45, s5, s7
-; SI-NEXT:    s_and_b32 s5, s50, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s31, 16
+; SI-NEXT:    s_and_b32 s5, s48, 0xffff
+; SI-NEXT:    s_lshl_b32 s7, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s44
-; SI-NEXT:    s_lshl_b32 s42, s51, 16
+; SI-NEXT:    s_lshl_b32 s42, s49, 16
 ; SI-NEXT:    s_or_b32 s43, s5, s7
-; SI-NEXT:    s_and_b32 s5, s53, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s34, 16
+; SI-NEXT:    s_and_b32 s5, s51, 0xffff
+; SI-NEXT:    s_lshl_b32 s7, s30, 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[44:45], 16
-; SI-NEXT:    s_and_b32 s44, s52, 0xffff
+; SI-NEXT:    s_and_b32 s44, s50, 0xffff
 ; SI-NEXT:    s_or_b32 s79, s5, s7
-; SI-NEXT:    s_lshl_b32 s78, s54, 16
+; SI-NEXT:    s_lshl_b32 s78, s52, 16
 ; SI-NEXT:    s_or_b32 s44, s44, s42
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[42:43], 16
-; SI-NEXT:    s_and_b32 s42, s55, 0xffff
+; SI-NEXT:    s_and_b32 s42, s53, 0xffff
 ; SI-NEXT:    s_mov_b32 s41, s47
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[46:47], 16
 ; SI-NEXT:    s_mov_b32 s15, s57
@@ -28167,39 +28789,65 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; SI-NEXT:    s_or_b32 s42, s42, s78
 ; SI-NEXT:    s_mov_b32 s43, s79
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[78:79], 16
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
-; SI-NEXT:    s_add_i32 s55, s55, 3
-; SI-NEXT:    s_and_b32 s4, s55, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s54, 16
-; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_mov_b64 s[88:89], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[88:89], -1
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[88:89], s[88:89], exec
+; SI-NEXT:    s_cselect_b32 s47, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s47, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s53, s53, 3
-; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s53, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s52, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s52, s52, 3
-; SI-NEXT:    s_add_i32 s43, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s52, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s51, 16
+; SI-NEXT:    s_add_i32 s51, s51, 3
+; SI-NEXT:    s_add_i32 s42, s4, 0x30000
+; SI-NEXT:    s_and_b32 s4, s51, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s50, s50, 3
-; SI-NEXT:    s_add_i32 s44, s4, 0x30000
+; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s50, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, s49, 16
+; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_add_i32 s48, s48, 3
+; SI-NEXT:    s_add_i32 s44, s4, 0x30000
+; SI-NEXT:    s_and_b32 s4, s48, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s28, s28, 3
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s49, 16
+; SI-NEXT:    s_lshl_b32 s5, s39, 16
 ; SI-NEXT:    s_add_i32 s29, s29, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_and_b32 s5, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s6, s30, 16
+; SI-NEXT:    s_lshl_b32 s6, vcc_lo, 16
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_and_b32 s6, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s48, 16
+; SI-NEXT:    s_lshl_b32 s7, s38, 16
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_and_b32 s7, s27, 0xffff
@@ -28207,7 +28855,7 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_or_b32 s7, s8, s7
 ; SI-NEXT:    s_and_b32 s8, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s9, s39, 16
+; SI-NEXT:    s_lshl_b32 s9, s37, 16
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_and_b32 s9, s25, 0xffff
@@ -28215,7 +28863,7 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_or_b32 s9, s10, s9
 ; SI-NEXT:    s_and_b32 s10, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s11, s38, 16
+; SI-NEXT:    s_lshl_b32 s11, s36, 16
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_or_b32 s10, s11, s10
 ; SI-NEXT:    s_and_b32 s11, s23, 0xffff
@@ -28223,7 +28871,7 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_or_b32 s11, s12, s11
 ; SI-NEXT:    s_and_b32 s12, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s13, s37, 16
+; SI-NEXT:    s_lshl_b32 s13, s35, 16
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_or_b32 s12, s13, s12
 ; SI-NEXT:    s_and_b32 s13, s21, 0xffff
@@ -28231,7 +28879,7 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s13, s14, s13
 ; SI-NEXT:    s_and_b32 s14, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s15, s36, 16
+; SI-NEXT:    s_lshl_b32 s15, s34, 16
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_or_b32 s14, s15, s14
 ; SI-NEXT:    s_and_b32 s15, s19, 0xffff
@@ -28239,7 +28887,7 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_or_b32 s15, s18, s15
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s18, s35, 16
+; SI-NEXT:    s_lshl_b32 s18, s31, 16
 ; SI-NEXT:    s_or_b32 s16, s18, s16
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s40, s16, 0x30000
@@ -28274,10 +28922,10 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s93, s11, 16
 ; SI-NEXT:    s_lshr_b32 s94, s9, 16
 ; SI-NEXT:    s_lshr_b32 s95, s7, 16
-; SI-NEXT:    s_lshr_b32 s30, s5, 16
-; SI-NEXT:    s_lshr_b32 s31, s45, 16
-; SI-NEXT:    s_lshr_b32 s34, s43, 16
-; SI-NEXT:  .LBB57_3: ; %end
+; SI-NEXT:    s_lshr_b32 vcc_lo, s5, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s45, 16
+; SI-NEXT:    s_lshr_b32 s30, s43, 16
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    s_and_b32 s16, s40, 0xffff
 ; SI-NEXT:    s_lshl_b32 s17, s46, 16
 ; SI-NEXT:    s_or_b32 s16, s16, s17
@@ -28318,21 +28966,21 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s18, s74, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s18
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_lshl_b32 s18, s30, 16
+; SI-NEXT:    s_lshl_b32 s18, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s18
 ; SI-NEXT:    s_and_b32 s18, s44, 0xffff
 ; SI-NEXT:    s_lshl_b32 s19, s76, 16
 ; SI-NEXT:    s_or_b32 s18, s18, s19
 ; SI-NEXT:    s_and_b32 s19, s45, 0xffff
-; SI-NEXT:    s_lshl_b32 s20, s31, 16
+; SI-NEXT:    s_lshl_b32 s20, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s20
 ; SI-NEXT:    s_and_b32 s20, s42, 0xffff
 ; SI-NEXT:    s_lshl_b32 s21, s78, 16
 ; SI-NEXT:    s_or_b32 s20, s20, s21
 ; SI-NEXT:    s_and_b32 s21, s43, 0xffff
-; SI-NEXT:    s_lshl_b32 s22, s34, 16
+; SI-NEXT:    s_lshl_b32 s22, s30, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s22
-; SI-NEXT:    v_readlane_b32 s30, v18, 14
+; SI-NEXT:    v_readlane_b32 s30, v18, 12
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s14
@@ -28351,9 +28999,7 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v15, s19
 ; SI-NEXT:    v_mov_b32_e32 v16, s20
 ; SI-NEXT:    v_mov_b32_e32 v17, s21
-; SI-NEXT:    v_readlane_b32 s31, v18, 15
-; SI-NEXT:    v_readlane_b32 s55, v18, 13
-; SI-NEXT:    v_readlane_b32 s54, v18, 12
+; SI-NEXT:    v_readlane_b32 s31, v18, 13
 ; SI-NEXT:    v_readlane_b32 s53, v18, 11
 ; SI-NEXT:    v_readlane_b32 s52, v18, 10
 ; SI-NEXT:    v_readlane_b32 s51, v18, 9
@@ -28371,26 +29017,6 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v36i16_to_v36f16_scalar:
 ; VI:       ; %bb.0:
@@ -28419,10 +29045,18 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s42, s41, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v4
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_add_i32 s59, s59, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
@@ -28459,7 +29093,7 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s12, s12, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s59, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -28533,8 +29167,6 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v16, s11
 ; VI-NEXT:    v_mov_b32_e32 v17, s7
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v36i16_to_v36f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -28563,10 +29195,18 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s44, s56, 16
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v4
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_4
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s59, s47
 ; GFX9-NEXT:    v_pk_add_u16 v17, s4, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s58, s46
@@ -28621,10 +29261,8 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v20, 16, v15
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v19, 16, v16
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v18, 16, v17
-; GFX9-NEXT:    s_branch .LBB57_5
-; GFX9-NEXT:  .LBB57_3:
-; GFX9-NEXT:    s_branch .LBB57_2
-; GFX9-NEXT:  .LBB57_4:
+; GFX9-NEXT:    s_branch .LBB57_6
+; GFX9-NEXT:  .LBB57_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s59
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s58
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s57
@@ -28661,7 +29299,7 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v33, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v34, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v35, s6
-; GFX9-NEXT:  .LBB57_5: ; %end
+; GFX9-NEXT:  .LBB57_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -28724,11 +29362,16 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s5, s0, 16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s46, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s46, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s46
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-TRUE16-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s46, -1
+; GFX11-TRUE16-NEXT:  .LBB57_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s46, s46, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s46, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s46, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s29, s29, s45
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s28, s28, s44
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s27, s27, s43
@@ -28784,8 +29427,6 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v19, 16, v16
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v18, 16, v17
 ; GFX11-TRUE16-NEXT:    s_branch .LBB57_5
-; GFX11-TRUE16-NEXT:  .LBB57_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB57_2
 ; GFX11-TRUE16-NEXT:  .LBB57_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v17, s29 :: v_dual_mov_b32 v16, s28
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v15, s27 :: v_dual_mov_b32 v14, s26
@@ -28852,11 +29493,16 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s5, s0, 16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s46, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s46, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s46
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-FAKE16-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s46, -1
+; GFX11-FAKE16-NEXT:  .LBB57_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s46, s46, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s46, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s46, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s29, s29, s45
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s28, s28, s44
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s27, s27, s43
@@ -28912,8 +29558,6 @@ define inreg <36 x half> @bitcast_v36i16_to_v36f16_scalar(<36 x i16> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v19, 16, v14
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v18, 16, v13
 ; GFX11-FAKE16-NEXT:    s_branch .LBB57_5
-; GFX11-FAKE16-NEXT:  .LBB57_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB57_2
 ; GFX11-FAKE16-NEXT:  .LBB57_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v13, s29 :: v_dual_mov_b32 v14, s28
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v15, s27 :: v_dual_mov_b32 v16, s26
@@ -29622,10 +30266,18 @@ define inreg <36 x i16> @bitcast_v36f16_to_v36i16_scalar(<36 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s44, s7, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v4
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_3
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB59_4
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s59
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s18
@@ -29780,10 +30432,8 @@ define inreg <36 x i16> @bitcast_v36f16_to_v36i16_scalar(<36 x half> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[22:23], v[12:13], 16
 ; SI-NEXT:    v_lshr_b64 v[20:21], v[14:15], 16
 ; SI-NEXT:    v_lshr_b64 v[18:19], v[16:17], 16
-; SI-NEXT:    s_branch .LBB59_5
-; SI-NEXT:  .LBB59_3:
-; SI-NEXT:    s_branch .LBB59_2
-; SI-NEXT:  .LBB59_4:
+; SI-NEXT:    s_branch .LBB59_6
+; SI-NEXT:  .LBB59_5:
 ; SI-NEXT:    v_mov_b32_e32 v37, s47
 ; SI-NEXT:    v_mov_b32_e32 v51, s41
 ; SI-NEXT:    v_mov_b32_e32 v38, s40
@@ -29824,7 +30474,7 @@ define inreg <36 x i16> @bitcast_v36f16_to_v36i16_scalar(<36 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v22, s43
 ; SI-NEXT:    v_mov_b32_e32 v20, s44
 ; SI-NEXT:    v_mov_b32_e32 v18, s42
-; SI-NEXT:  .LBB59_5: ; %end
+; SI-NEXT:  .LBB59_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v34
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v36
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
@@ -29915,10 +30565,18 @@ define inreg <36 x i16> @bitcast_v36f16_to_v36i16_scalar(<36 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s59, s58, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v4
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_3
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_4
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v18, 0x200
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v18
 ; VI-NEXT:    v_add_f16_e32 v35, s43, v18
@@ -29956,10 +30614,8 @@ define inreg <36 x i16> @bitcast_v36f16_to_v36i16_scalar(<36 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v19, s47, v18
 ; VI-NEXT:    v_add_f16_e32 v17, s44, v18
 ; VI-NEXT:    v_add_f16_e32 v18, s45, v18
-; VI-NEXT:    s_branch .LBB59_5
-; VI-NEXT:  .LBB59_3:
-; VI-NEXT:    s_branch .LBB59_2
-; VI-NEXT:  .LBB59_4:
+; VI-NEXT:    s_branch .LBB59_6
+; VI-NEXT:  .LBB59_5:
 ; VI-NEXT:    v_mov_b32_e32 v18, s45
 ; VI-NEXT:    v_mov_b32_e32 v17, s44
 ; VI-NEXT:    v_mov_b32_e32 v19, s47
@@ -29996,7 +30652,7 @@ define inreg <36 x i16> @bitcast_v36f16_to_v36i16_scalar(<36 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v35, s43
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
-; VI-NEXT:  .LBB59_5: ; %end
+; VI-NEXT:  .LBB59_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v35, 16, v35
 ; VI-NEXT:    v_lshlrev_b32_e32 v34, 16, v34
 ; VI-NEXT:    v_lshlrev_b32_e32 v33, 16, v33
@@ -30062,10 +30718,18 @@ define inreg <36 x i16> @bitcast_v36f16_to_v36i16_scalar(<36 x half> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s44, s56, 16
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v4
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_4
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s59, s47
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v17, s4, v0 op_sel_hi:[1,0]
@@ -30121,10 +30785,8 @@ define inreg <36 x i16> @bitcast_v36f16_to_v36i16_scalar(<36 x half> inreg %a, i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v20, 16, v15
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v19, 16, v16
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v18, 16, v17
-; GFX9-NEXT:    s_branch .LBB59_5
-; GFX9-NEXT:  .LBB59_3:
-; GFX9-NEXT:    s_branch .LBB59_2
-; GFX9-NEXT:  .LBB59_4:
+; GFX9-NEXT:    s_branch .LBB59_6
+; GFX9-NEXT:  .LBB59_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s59
 ; GFX9-NEXT:    v_mov_b32_e32 v16, s58
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s57
@@ -30161,7 +30823,7 @@ define inreg <36 x i16> @bitcast_v36f16_to_v36i16_scalar(<36 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v33, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v34, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v35, s6
-; GFX9-NEXT:  .LBB59_5: ; %end
+; GFX9-NEXT:  .LBB59_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -30224,11 +30886,16 @@ define inreg <36 x i16> @bitcast_v36f16_to_v36i16_scalar(<36 x half> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s5, s0, 16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s46, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s46, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s46
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-TRUE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s46, -1
+; GFX11-TRUE16-NEXT:  .LBB59_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s46, s46, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s46, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s46, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s29, s29, s45
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s28, s28, s44
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s27, s27, s43
@@ -30284,8 +30951,6 @@ define inreg <36 x i16> @bitcast_v36f16_to_v36i16_scalar(<36 x half> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v19, 16, v16
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v18, 16, v17
 ; GFX11-TRUE16-NEXT:    s_branch .LBB59_5
-; GFX11-TRUE16-NEXT:  .LBB59_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB59_2
 ; GFX11-TRUE16-NEXT:  .LBB59_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v17, s29 :: v_dual_mov_b32 v16, s28
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v15, s27 :: v_dual_mov_b32 v14, s26
@@ -30352,11 +31017,16 @@ define inreg <36 x i16> @bitcast_v36f16_to_v36i16_scalar(<36 x half> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s5, s0, 16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s46, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s46, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s46
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-FAKE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s46, -1
+; GFX11-FAKE16-NEXT:  .LBB59_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s46, s46, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s46, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s46, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s29, s29, s45
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s28, s28, s44
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s27, s27, s43
@@ -30412,8 +31082,6 @@ define inreg <36 x i16> @bitcast_v36f16_to_v36i16_scalar(<36 x half> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v19, 16, v14
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v18, 16, v13
 ; GFX11-FAKE16-NEXT:    s_branch .LBB59_5
-; GFX11-FAKE16-NEXT:  .LBB59_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB59_2
 ; GFX11-FAKE16-NEXT:  .LBB59_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v13, s29 :: v_dual_mov_b32 v14, s28
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v15, s27 :: v_dual_mov_b32 v16, s26

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.640bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.640bit.ll
index 69562f9d0a70d..39f3e88052c88 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.640bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.640bit.ll
@@ -168,10 +168,18 @@ define inreg <20 x float> @bitcast_v20i32_to_v20f32_scalar(<20 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s10, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s11, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -192,7 +200,7 @@ define inreg <20 x float> @bitcast_v20i32_to_v20f32_scalar(<20 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -214,8 +222,6 @@ define inreg <20 x float> @bitcast_v20i32_to_v20f32_scalar(<20 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v18, s7
 ; SI-NEXT:    v_mov_b32_e32 v19, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v20i32_to_v20f32_scalar:
 ; VI:       ; %bb.0:
@@ -228,10 +234,18 @@ define inreg <20 x float> @bitcast_v20i32_to_v20f32_scalar(<20 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s10, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s11, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -252,7 +266,7 @@ define inreg <20 x float> @bitcast_v20i32_to_v20f32_scalar(<20 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -274,8 +288,6 @@ define inreg <20 x float> @bitcast_v20i32_to_v20f32_scalar(<20 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v18, s7
 ; VI-NEXT:    v_mov_b32_e32 v19, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v20i32_to_v20f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -288,10 +300,18 @@ define inreg <20 x float> @bitcast_v20i32_to_v20f32_scalar(<20 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s11, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -312,7 +332,7 @@ define inreg <20 x float> @bitcast_v20i32_to_v20f32_scalar(<20 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -334,8 +354,6 @@ define inreg <20 x float> @bitcast_v20i32_to_v20f32_scalar(<20 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v20i32_to_v20f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -345,11 +363,16 @@ define inreg <20 x float> @bitcast_v20i32_to_v20f32_scalar(<20 x i32> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s5, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s6, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s29, s29, 3
@@ -370,7 +393,7 @@ define inreg <20 x float> @bitcast_v20i32_to_v20f32_scalar(<20 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -383,8 +406,6 @@ define inreg <20 x float> @bitcast_v20i32_to_v20f32_scalar(<20 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s28 :: v_dual_mov_b32 v17, s29
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s5 :: v_dual_mov_b32 v19, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -584,10 +605,18 @@ define inreg <20 x i32> @bitcast_v20f32_to_v20i32_scalar(<20 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v19, s55, 1.0
 ; SI-NEXT:    v_add_f32_e64 v18, s54, 1.0
 ; SI-NEXT:    v_add_f32_e64 v17, s53, 1.0
@@ -608,10 +637,8 @@ define inreg <20 x i32> @bitcast_v20f32_to_v20i32_scalar(<20 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB3_5
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:    s_branch .LBB3_6
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -644,7 +671,7 @@ define inreg <20 x i32> @bitcast_v20f32_to_v20i32_scalar(<20 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB3_5: ; %end
+; SI-NEXT:  .LBB3_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -703,10 +730,18 @@ define inreg <20 x i32> @bitcast_v20f32_to_v20i32_scalar(<20 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v19, s55, 1.0
 ; VI-NEXT:    v_add_f32_e64 v18, s54, 1.0
 ; VI-NEXT:    v_add_f32_e64 v17, s53, 1.0
@@ -727,10 +762,8 @@ define inreg <20 x i32> @bitcast_v20f32_to_v20i32_scalar(<20 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB3_5
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:    s_branch .LBB3_6
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -763,7 +796,7 @@ define inreg <20 x i32> @bitcast_v20f32_to_v20i32_scalar(<20 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB3_5: ; %end
+; VI-NEXT:  .LBB3_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -822,10 +855,18 @@ define inreg <20 x i32> @bitcast_v20f32_to_v20i32_scalar(<20 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v19, s55, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v18, s54, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v17, s53, 1.0
@@ -846,10 +887,8 @@ define inreg <20 x i32> @bitcast_v20f32_to_v20i32_scalar(<20 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB3_5
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:    s_branch .LBB3_6
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -882,7 +921,7 @@ define inreg <20 x i32> @bitcast_v20f32_to_v20i32_scalar(<20 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB3_5: ; %end
+; GFX9-NEXT:  .LBB3_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -942,11 +981,16 @@ define inreg <20 x i32> @bitcast_v20f32_to_v20i32_scalar(<20 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v19, s55, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v18, s54, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v17, s53, 1.0
@@ -968,8 +1012,6 @@ define inreg <20 x i32> @bitcast_v20f32_to_v20i32_scalar(<20 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB3_5
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -1184,10 +1226,18 @@ define inreg <10 x i64> @bitcast_v20i32_to_v10i64_scalar(<20 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s10, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s11, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -1208,7 +1258,7 @@ define inreg <10 x i64> @bitcast_v20i32_to_v10i64_scalar(<20 x i32> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1230,8 +1280,6 @@ define inreg <10 x i64> @bitcast_v20i32_to_v10i64_scalar(<20 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v18, s7
 ; SI-NEXT:    v_mov_b32_e32 v19, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v20i32_to_v10i64_scalar:
 ; VI:       ; %bb.0:
@@ -1244,10 +1292,18 @@ define inreg <10 x i64> @bitcast_v20i32_to_v10i64_scalar(<20 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s10, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s11, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -1268,7 +1324,7 @@ define inreg <10 x i64> @bitcast_v20i32_to_v10i64_scalar(<20 x i32> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1290,8 +1346,6 @@ define inreg <10 x i64> @bitcast_v20i32_to_v10i64_scalar(<20 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v18, s7
 ; VI-NEXT:    v_mov_b32_e32 v19, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v20i32_to_v10i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -1304,10 +1358,18 @@ define inreg <10 x i64> @bitcast_v20i32_to_v10i64_scalar(<20 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s11, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -1328,7 +1390,7 @@ define inreg <10 x i64> @bitcast_v20i32_to_v10i64_scalar(<20 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1350,8 +1412,6 @@ define inreg <10 x i64> @bitcast_v20i32_to_v10i64_scalar(<20 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v20i32_to_v10i64_scalar:
 ; GFX11:       ; %bb.0:
@@ -1361,11 +1421,16 @@ define inreg <10 x i64> @bitcast_v20i32_to_v10i64_scalar(<20 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s5, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s6, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s29, s29, 3
@@ -1386,7 +1451,7 @@ define inreg <10 x i64> @bitcast_v20i32_to_v10i64_scalar(<20 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1399,8 +1464,6 @@ define inreg <10 x i64> @bitcast_v20i32_to_v10i64_scalar(<20 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s28 :: v_dual_mov_b32 v17, s29
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s5 :: v_dual_mov_b32 v19, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1585,10 +1648,18 @@ define inreg <20 x i32> @bitcast_v10i64_to_v20i32_scalar(<10 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s10, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s11, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -1609,7 +1680,7 @@ define inreg <20 x i32> @bitcast_v10i64_to_v20i32_scalar(<10 x i64> inreg %a, i3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1631,8 +1702,6 @@ define inreg <20 x i32> @bitcast_v10i64_to_v20i32_scalar(<10 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v18, s7
 ; SI-NEXT:    v_mov_b32_e32 v19, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v10i64_to_v20i32_scalar:
 ; VI:       ; %bb.0:
@@ -1645,10 +1714,18 @@ define inreg <20 x i32> @bitcast_v10i64_to_v20i32_scalar(<10 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s10, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s11, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -1669,7 +1746,7 @@ define inreg <20 x i32> @bitcast_v10i64_to_v20i32_scalar(<10 x i64> inreg %a, i3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1691,8 +1768,6 @@ define inreg <20 x i32> @bitcast_v10i64_to_v20i32_scalar(<10 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v18, s7
 ; VI-NEXT:    v_mov_b32_e32 v19, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v10i64_to_v20i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -1705,10 +1780,18 @@ define inreg <20 x i32> @bitcast_v10i64_to_v20i32_scalar(<10 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s11, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -1729,7 +1812,7 @@ define inreg <20 x i32> @bitcast_v10i64_to_v20i32_scalar(<10 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB7_3: ; %end
+; GFX9-NEXT:  .LBB7_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1751,8 +1834,6 @@ define inreg <20 x i32> @bitcast_v10i64_to_v20i32_scalar(<10 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_4:
-; GFX9-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-LABEL: bitcast_v10i64_to_v20i32_scalar:
 ; GFX11:       ; %bb.0:
@@ -1762,11 +1843,16 @@ define inreg <20 x i32> @bitcast_v10i64_to_v20i32_scalar(<10 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s5, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s6, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_3
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s28, s28, 3
@@ -1787,7 +1873,7 @@ define inreg <20 x i32> @bitcast_v10i64_to_v20i32_scalar(<10 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB7_3: ; %end
+; GFX11-NEXT:  .LBB7_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1800,8 +1886,6 @@ define inreg <20 x i32> @bitcast_v10i64_to_v20i32_scalar(<10 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s28 :: v_dual_mov_b32 v17, s29
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s5 :: v_dual_mov_b32 v19, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_4:
-; GFX11-NEXT:    s_branch .LBB7_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1981,10 +2065,18 @@ define inreg <10 x double> @bitcast_v20i32_to_v10f64_scalar(<20 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s10, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s11, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -2005,7 +2097,7 @@ define inreg <10 x double> @bitcast_v20i32_to_v10f64_scalar(<20 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2027,8 +2119,6 @@ define inreg <10 x double> @bitcast_v20i32_to_v10f64_scalar(<20 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v18, s7
 ; SI-NEXT:    v_mov_b32_e32 v19, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v20i32_to_v10f64_scalar:
 ; VI:       ; %bb.0:
@@ -2041,10 +2131,18 @@ define inreg <10 x double> @bitcast_v20i32_to_v10f64_scalar(<20 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s10, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s11, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -2065,7 +2163,7 @@ define inreg <10 x double> @bitcast_v20i32_to_v10f64_scalar(<20 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2087,8 +2185,6 @@ define inreg <10 x double> @bitcast_v20i32_to_v10f64_scalar(<20 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v18, s7
 ; VI-NEXT:    v_mov_b32_e32 v19, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v20i32_to_v10f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -2101,10 +2197,18 @@ define inreg <10 x double> @bitcast_v20i32_to_v10f64_scalar(<20 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s11, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -2125,7 +2229,7 @@ define inreg <10 x double> @bitcast_v20i32_to_v10f64_scalar(<20 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2147,8 +2251,6 @@ define inreg <10 x double> @bitcast_v20i32_to_v10f64_scalar(<20 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v20i32_to_v10f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -2158,11 +2260,16 @@ define inreg <10 x double> @bitcast_v20i32_to_v10f64_scalar(<20 x i32> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s5, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s6, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s29, s29, 3
@@ -2183,7 +2290,7 @@ define inreg <10 x double> @bitcast_v20i32_to_v10f64_scalar(<20 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2196,8 +2303,6 @@ define inreg <10 x double> @bitcast_v20i32_to_v10f64_scalar(<20 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s28 :: v_dual_mov_b32 v17, s29
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s5 :: v_dual_mov_b32 v19, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2367,10 +2472,18 @@ define inreg <20 x i32> @bitcast_v10f64_to_v20i32_scalar(<10 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; SI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; SI-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
@@ -2381,10 +2494,8 @@ define inreg <20 x i32> @bitcast_v10f64_to_v20i32_scalar(<10 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB11_5
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:    s_branch .LBB11_6
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -2417,7 +2528,7 @@ define inreg <20 x i32> @bitcast_v10f64_to_v20i32_scalar(<10 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB11_5: ; %end
+; SI-NEXT:  .LBB11_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -2476,10 +2587,18 @@ define inreg <20 x i32> @bitcast_v10f64_to_v20i32_scalar(<10 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; VI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; VI-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
@@ -2490,10 +2609,8 @@ define inreg <20 x i32> @bitcast_v10f64_to_v20i32_scalar(<10 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB11_5
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:    s_branch .LBB11_6
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -2526,7 +2643,7 @@ define inreg <20 x i32> @bitcast_v10f64_to_v20i32_scalar(<10 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB11_5: ; %end
+; VI-NEXT:  .LBB11_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -2585,10 +2702,18 @@ define inreg <20 x i32> @bitcast_v10f64_to_v20i32_scalar(<10 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
@@ -2599,10 +2724,8 @@ define inreg <20 x i32> @bitcast_v10f64_to_v20i32_scalar(<10 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB11_5
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:    s_branch .LBB11_6
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -2635,7 +2758,7 @@ define inreg <20 x i32> @bitcast_v10f64_to_v20i32_scalar(<10 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB11_5: ; %end
+; GFX9-NEXT:  .LBB11_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -2695,11 +2818,16 @@ define inreg <20 x i32> @bitcast_v10f64_to_v20i32_scalar(<10 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; GFX11-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; GFX11-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
@@ -2711,8 +2839,6 @@ define inreg <20 x i32> @bitcast_v10f64_to_v20i32_scalar(<10 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB11_5
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -3355,7 +3481,7 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s9, v1
 ; SI-NEXT:    s_cmp_lg_u32 s8, 0
 ; SI-NEXT:    v_readfirstlane_b32 s8, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s72, s5, 16
 ; SI-NEXT:    s_lshr_b32 s73, s7, 16
@@ -3377,8 +3503,36 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[62:63], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[62:63], -1
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[62:63], s[62:63], exec
+; SI-NEXT:    s_cselect_b32 s11, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s11, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -3419,7 +3573,7 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 16
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s11, s60, 16
 ; SI-NEXT:    s_and_b32 s13, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s11, s13, s11
@@ -3501,28 +3655,6 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v18, s4
 ; SI-NEXT:    v_mov_b32_e32 v19, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_v20i32_to_v40i16_scalar:
 ; VI:       ; %bb.0:
@@ -3535,7 +3667,7 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s10, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s11, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s12, s6, 16
 ; VI-NEXT:    s_lshr_b32 s13, s7, 16
@@ -3557,8 +3689,36 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s61, s18, 16
 ; VI-NEXT:    s_lshr_b32 s62, s17, 16
 ; VI-NEXT:    s_lshr_b32 s63, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -3599,7 +3759,7 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s61, s18, 16
 ; VI-NEXT:    s_lshr_b32 s62, s17, 16
 ; VI-NEXT:    s_lshr_b32 s63, s16, 16
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s63, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -3681,28 +3841,6 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v18, s7
 ; VI-NEXT:    v_mov_b32_e32 v19, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v20i32_to_v40i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -3715,7 +3853,7 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s11, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s12, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s13, s7, 16
@@ -3737,8 +3875,36 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s61, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -3779,7 +3945,7 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s61, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s16, 16
-; GFX9-NEXT:  .LBB13_3: ; %end
+; GFX9-NEXT:  .LBB13_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s63
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s62
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s61
@@ -3821,28 +3987,6 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_v20i32_to_v40i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -3852,7 +3996,7 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s5, v0
 ; GFX11-NEXT:    s_mov_b32 s58, 0
 ; GFX11-NEXT:    s_cmp_lg_u32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s6, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s7, s5, 16
@@ -3874,9 +4018,36 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s47, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s56, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s57, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB13_3
+; GFX11-NEXT:  .LBB13_2:
+; GFX11-NEXT:    s_mov_b32 s58, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr7
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:  .LBB13_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s29, s29, 3
@@ -3917,7 +4088,7 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s47, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s56, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s57, s0, 16
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s57
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s56
@@ -3950,28 +4121,6 @@ define inreg <40 x i16> @bitcast_v20i32_to_v40i16_scalar(<20 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s9 :: v_dual_mov_b32 v17, s8
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s5 :: v_dual_mov_b32 v19, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr7
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -4889,7 +5038,7 @@ define inreg <20 x i32> @bitcast_v40i16_to_v20i32_scalar(<40 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s76, s77, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v6
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -4951,8 +5100,17 @@ define inreg <20 x i32> @bitcast_v40i16_to_v20i32_scalar(<40 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s55, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -5053,7 +5211,7 @@ define inreg <20 x i32> @bitcast_v40i16_to_v20i32_scalar(<40 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s55, s4, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
+; SI-NEXT:  .LBB15_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -5095,9 +5253,6 @@ define inreg <20 x i32> @bitcast_v40i16_to_v20i32_scalar(<40 x i16> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v40i16_to_v20i32_scalar:
 ; VI:       ; %bb.0:
@@ -5105,26 +5260,24 @@ define inreg <20 x i32> @bitcast_v40i16_to_v20i32_scalar(<40 x i16> inreg %a, i3
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_store_dword v20, off, s[0:3], s32 ; 4-byte Folded Spill
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
-; VI-NEXT:    v_writelane_b32 v20, s34, 0
-; VI-NEXT:    v_writelane_b32 v20, s35, 1
-; VI-NEXT:    v_writelane_b32 v20, s36, 2
-; VI-NEXT:    v_writelane_b32 v20, s37, 3
-; VI-NEXT:    v_writelane_b32 v20, s38, 4
-; VI-NEXT:    v_writelane_b32 v20, s39, 5
-; VI-NEXT:    v_writelane_b32 v20, s48, 6
-; VI-NEXT:    v_writelane_b32 v20, s49, 7
-; VI-NEXT:    v_writelane_b32 v20, s50, 8
-; VI-NEXT:    v_writelane_b32 v20, s51, 9
-; VI-NEXT:    v_writelane_b32 v20, s52, 10
-; VI-NEXT:    v_writelane_b32 v20, s53, 11
-; VI-NEXT:    v_writelane_b32 v20, s54, 12
-; VI-NEXT:    v_writelane_b32 v20, s55, 13
-; VI-NEXT:    v_writelane_b32 v20, s64, 14
-; VI-NEXT:    v_writelane_b32 v20, s65, 15
-; VI-NEXT:    v_writelane_b32 v20, s66, 16
-; VI-NEXT:    v_writelane_b32 v20, s67, 17
-; VI-NEXT:    v_writelane_b32 v20, s30, 18
-; VI-NEXT:    v_writelane_b32 v20, s31, 19
+; VI-NEXT:    v_writelane_b32 v20, s36, 0
+; VI-NEXT:    v_writelane_b32 v20, s37, 1
+; VI-NEXT:    v_writelane_b32 v20, s38, 2
+; VI-NEXT:    v_writelane_b32 v20, s39, 3
+; VI-NEXT:    v_writelane_b32 v20, s48, 4
+; VI-NEXT:    v_writelane_b32 v20, s49, 5
+; VI-NEXT:    v_writelane_b32 v20, s50, 6
+; VI-NEXT:    v_writelane_b32 v20, s51, 7
+; VI-NEXT:    v_writelane_b32 v20, s52, 8
+; VI-NEXT:    v_writelane_b32 v20, s53, 9
+; VI-NEXT:    v_writelane_b32 v20, s54, 10
+; VI-NEXT:    v_writelane_b32 v20, s55, 11
+; VI-NEXT:    v_writelane_b32 v20, s64, 12
+; VI-NEXT:    v_writelane_b32 v20, s65, 13
+; VI-NEXT:    v_writelane_b32 v20, s66, 14
+; VI-NEXT:    v_writelane_b32 v20, s67, 15
+; VI-NEXT:    v_writelane_b32 v20, s30, 16
+; VI-NEXT:    v_writelane_b32 v20, s31, 17
 ; VI-NEXT:    v_readfirstlane_b32 s7, v5
 ; VI-NEXT:    v_readfirstlane_b32 s9, v4
 ; VI-NEXT:    v_readfirstlane_b32 s12, v3
@@ -5141,10 +5294,10 @@ define inreg <20 x i32> @bitcast_v40i16_to_v20i32_scalar(<40 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s12, 16
@@ -5153,19 +5306,19 @@ define inreg <20 x i32> @bitcast_v40i16_to_v20i32_scalar(<40 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s76, s77, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v6
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -5215,26 +5368,35 @@ define inreg <20 x i32> @bitcast_v40i16_to_v20i32_scalar(<40 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
@@ -5317,8 +5479,8 @@ define inreg <20 x i32> @bitcast_v40i16_to_v20i32_scalar(<40 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s55, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v20, 18
+; VI-NEXT:  .LBB15_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v20, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -5339,33 +5501,28 @@ define inreg <20 x i32> @bitcast_v40i16_to_v20i32_scalar(<40 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v17, s53
 ; VI-NEXT:    v_mov_b32_e32 v18, s54
 ; VI-NEXT:    v_mov_b32_e32 v19, s55
-; VI-NEXT:    v_readlane_b32 s31, v20, 19
-; VI-NEXT:    v_readlane_b32 s67, v20, 17
-; VI-NEXT:    v_readlane_b32 s66, v20, 16
-; VI-NEXT:    v_readlane_b32 s65, v20, 15
-; VI-NEXT:    v_readlane_b32 s64, v20, 14
-; VI-NEXT:    v_readlane_b32 s55, v20, 13
-; VI-NEXT:    v_readlane_b32 s54, v20, 12
-; VI-NEXT:    v_readlane_b32 s53, v20, 11
-; VI-NEXT:    v_readlane_b32 s52, v20, 10
-; VI-NEXT:    v_readlane_b32 s51, v20, 9
-; VI-NEXT:    v_readlane_b32 s50, v20, 8
-; VI-NEXT:    v_readlane_b32 s49, v20, 7
-; VI-NEXT:    v_readlane_b32 s48, v20, 6
-; VI-NEXT:    v_readlane_b32 s39, v20, 5
-; VI-NEXT:    v_readlane_b32 s38, v20, 4
-; VI-NEXT:    v_readlane_b32 s37, v20, 3
-; VI-NEXT:    v_readlane_b32 s36, v20, 2
-; VI-NEXT:    v_readlane_b32 s35, v20, 1
-; VI-NEXT:    v_readlane_b32 s34, v20, 0
+; VI-NEXT:    v_readlane_b32 s31, v20, 17
+; VI-NEXT:    v_readlane_b32 s67, v20, 15
+; VI-NEXT:    v_readlane_b32 s66, v20, 14
+; VI-NEXT:    v_readlane_b32 s65, v20, 13
+; VI-NEXT:    v_readlane_b32 s64, v20, 12
+; VI-NEXT:    v_readlane_b32 s55, v20, 11
+; VI-NEXT:    v_readlane_b32 s54, v20, 10
+; VI-NEXT:    v_readlane_b32 s53, v20, 9
+; VI-NEXT:    v_readlane_b32 s52, v20, 8
+; VI-NEXT:    v_readlane_b32 s51, v20, 7
+; VI-NEXT:    v_readlane_b32 s50, v20, 6
+; VI-NEXT:    v_readlane_b32 s49, v20, 5
+; VI-NEXT:    v_readlane_b32 s48, v20, 4
+; VI-NEXT:    v_readlane_b32 s39, v20, 3
+; VI-NEXT:    v_readlane_b32 s38, v20, 2
+; VI-NEXT:    v_readlane_b32 s37, v20, 1
+; VI-NEXT:    v_readlane_b32 s36, v20, 0
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v40i16_to_v20i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -5433,10 +5590,18 @@ define inreg <20 x i32> @bitcast_v40i16_to_v20i32_scalar(<40 x i16> inreg %a, i3
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s54, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -5457,10 +5622,8 @@ define inreg <20 x i32> @bitcast_v40i16_to_v20i32_scalar(<40 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v18, s54, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v19, s55, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB15_5
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:    s_branch .LBB15_6
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -5493,7 +5656,7 @@ define inreg <20 x i32> @bitcast_v40i16_to_v20i32_scalar(<40 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB15_5: ; %end
+; GFX9-NEXT:  .LBB15_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -5560,11 +5723,16 @@ define inreg <20 x i32> @bitcast_v40i16_to_v20i32_scalar(<40 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s18, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -5586,8 +5754,6 @@ define inreg <20 x i32> @bitcast_v40i16_to_v20i32_scalar(<40 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v18, s18, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v19, s19, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -6213,7 +6379,7 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s9, v1
 ; SI-NEXT:    s_cmp_lg_u32 s8, 0
 ; SI-NEXT:    v_readfirstlane_b32 s8, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s72, s5, 16
 ; SI-NEXT:    s_lshr_b32 s73, s7, 16
@@ -6235,8 +6401,36 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[62:63], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[62:63], -1
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[62:63], s[62:63], exec
+; SI-NEXT:    s_cselect_b32 s11, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s11, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -6277,7 +6471,7 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 16
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s11, s60, 16
 ; SI-NEXT:    s_and_b32 s13, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s11, s13, s11
@@ -6359,28 +6553,6 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v18, s4
 ; SI-NEXT:    v_mov_b32_e32 v19, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_v20i32_to_v40f16_scalar:
 ; VI:       ; %bb.0:
@@ -6393,7 +6565,7 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s10, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s11, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s12, s6, 16
 ; VI-NEXT:    s_lshr_b32 s13, s7, 16
@@ -6415,8 +6587,36 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s61, s18, 16
 ; VI-NEXT:    s_lshr_b32 s62, s17, 16
 ; VI-NEXT:    s_lshr_b32 s63, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -6457,7 +6657,7 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s61, s18, 16
 ; VI-NEXT:    s_lshr_b32 s62, s17, 16
 ; VI-NEXT:    s_lshr_b32 s63, s16, 16
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s63, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -6539,28 +6739,6 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v18, s7
 ; VI-NEXT:    v_mov_b32_e32 v19, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v20i32_to_v40f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -6573,7 +6751,7 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s11, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s12, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s13, s7, 16
@@ -6595,12 +6773,40 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s61, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
-; GFX9-NEXT:    s_add_i32 s6, s6, 3
-; GFX9-NEXT:    s_add_i32 s7, s7, 3
-; GFX9-NEXT:    s_add_i32 s8, s8, 3
-; GFX9-NEXT:    s_add_i32 s9, s9, 3
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
+; GFX9-NEXT:    s_add_i32 s6, s6, 3
+; GFX9-NEXT:    s_add_i32 s7, s7, 3
+; GFX9-NEXT:    s_add_i32 s8, s8, 3
+; GFX9-NEXT:    s_add_i32 s9, s9, 3
 ; GFX9-NEXT:    s_add_i32 s10, s10, 3
 ; GFX9-NEXT:    s_add_i32 s11, s11, 3
 ; GFX9-NEXT:    s_add_i32 s29, s29, 3
@@ -6637,7 +6843,7 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s61, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s16, 16
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s63
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s62
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s61
@@ -6679,28 +6885,6 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v20i32_to_v40f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -6710,7 +6894,7 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s5, v0
 ; GFX11-NEXT:    s_mov_b32 s58, 0
 ; GFX11-NEXT:    s_cmp_lg_u32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s6, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s7, s5, 16
@@ -6732,9 +6916,36 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s47, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s56, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s57, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB17_3
+; GFX11-NEXT:  .LBB17_2:
+; GFX11-NEXT:    s_mov_b32 s58, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr7
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:  .LBB17_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s29, s29, 3
@@ -6775,7 +6986,7 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s47, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s56, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s57, s0, 16
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s57
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s56
@@ -6808,28 +7019,6 @@ define inreg <40 x half> @bitcast_v20i32_to_v40f16_scalar(<20 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s9 :: v_dual_mov_b32 v17, s8
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s5 :: v_dual_mov_b32 v19, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr7
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -7832,7 +8021,7 @@ define inreg <20 x i32> @bitcast_v40f16_to_v20i32_scalar(<40 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s74, s73, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v6
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -7894,8 +8083,17 @@ define inreg <20 x i32> @bitcast_v40f16_to_v20i32_scalar(<40 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s55, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s95
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s94
@@ -8056,11 +8254,8 @@ define inreg <20 x i32> @bitcast_v40f16_to_v20i32_scalar(<40 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v18, v19, v18
 ; SI-NEXT:    v_lshlrev_b32_e32 v19, 16, v20
 ; SI-NEXT:    v_or_b32_e32 v19, v21, v19
-; SI-NEXT:    s_branch .LBB19_5
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:    s_branch .LBB19_6
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -8093,7 +8288,7 @@ define inreg <20 x i32> @bitcast_v40f16_to_v20i32_scalar(<40 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB19_5: ; %end
+; SI-NEXT:  .LBB19_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s67, v32, 15
 ; SI-NEXT:    v_readlane_b32 s66, v32, 14
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -8122,26 +8317,24 @@ define inreg <20 x i32> @bitcast_v40f16_to_v20i32_scalar(<40 x half> inreg %a, i
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_store_dword v32, off, s[0:3], s32 ; 4-byte Folded Spill
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
-; VI-NEXT:    v_writelane_b32 v32, s34, 0
-; VI-NEXT:    v_writelane_b32 v32, s35, 1
-; VI-NEXT:    v_writelane_b32 v32, s36, 2
-; VI-NEXT:    v_writelane_b32 v32, s37, 3
-; VI-NEXT:    v_writelane_b32 v32, s38, 4
-; VI-NEXT:    v_writelane_b32 v32, s39, 5
-; VI-NEXT:    v_writelane_b32 v32, s48, 6
-; VI-NEXT:    v_writelane_b32 v32, s49, 7
-; VI-NEXT:    v_writelane_b32 v32, s50, 8
-; VI-NEXT:    v_writelane_b32 v32, s51, 9
-; VI-NEXT:    v_writelane_b32 v32, s52, 10
-; VI-NEXT:    v_writelane_b32 v32, s53, 11
-; VI-NEXT:    v_writelane_b32 v32, s54, 12
-; VI-NEXT:    v_writelane_b32 v32, s55, 13
-; VI-NEXT:    v_writelane_b32 v32, s64, 14
-; VI-NEXT:    v_writelane_b32 v32, s65, 15
-; VI-NEXT:    v_writelane_b32 v32, s66, 16
-; VI-NEXT:    v_writelane_b32 v32, s67, 17
-; VI-NEXT:    v_writelane_b32 v32, s30, 18
-; VI-NEXT:    v_writelane_b32 v32, s31, 19
+; VI-NEXT:    v_writelane_b32 v32, s36, 0
+; VI-NEXT:    v_writelane_b32 v32, s37, 1
+; VI-NEXT:    v_writelane_b32 v32, s38, 2
+; VI-NEXT:    v_writelane_b32 v32, s39, 3
+; VI-NEXT:    v_writelane_b32 v32, s48, 4
+; VI-NEXT:    v_writelane_b32 v32, s49, 5
+; VI-NEXT:    v_writelane_b32 v32, s50, 6
+; VI-NEXT:    v_writelane_b32 v32, s51, 7
+; VI-NEXT:    v_writelane_b32 v32, s52, 8
+; VI-NEXT:    v_writelane_b32 v32, s53, 9
+; VI-NEXT:    v_writelane_b32 v32, s54, 10
+; VI-NEXT:    v_writelane_b32 v32, s55, 11
+; VI-NEXT:    v_writelane_b32 v32, s64, 12
+; VI-NEXT:    v_writelane_b32 v32, s65, 13
+; VI-NEXT:    v_writelane_b32 v32, s66, 14
+; VI-NEXT:    v_writelane_b32 v32, s67, 15
+; VI-NEXT:    v_writelane_b32 v32, s30, 16
+; VI-NEXT:    v_writelane_b32 v32, s31, 17
 ; VI-NEXT:    v_readfirstlane_b32 s6, v5
 ; VI-NEXT:    v_readfirstlane_b32 s8, v4
 ; VI-NEXT:    v_readfirstlane_b32 s11, v3
@@ -8158,10 +8351,10 @@ define inreg <20 x i32> @bitcast_v40f16_to_v20i32_scalar(<40 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s12, s11, 16
@@ -8170,19 +8363,19 @@ define inreg <20 x i32> @bitcast_v40f16_to_v20i32_scalar(<40 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s78, s76, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v6
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -8232,22 +8425,31 @@ define inreg <20 x i32> @bitcast_v40f16_to_v20i32_scalar(<40 x half> inreg %a, i
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v19, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s35
-; VI-NEXT:    v_mov_b32_e32 v2, s34
+; VI-NEXT:    v_mov_b32_e32 v0, s31
+; VI-NEXT:    v_mov_b32_e32 v2, s30
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v19
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v19
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s31
+; VI-NEXT:    v_mov_b32_e32 v2, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v19
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s30
+; VI-NEXT:    v_mov_b32_e32 v3, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v19
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
@@ -8315,11 +8517,8 @@ define inreg <20 x i32> @bitcast_v40f16_to_v20i32_scalar(<40 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v20, v20, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v19, s6, v19
 ; VI-NEXT:    v_or_b32_e32 v19, v19, v20
-; VI-NEXT:    s_branch .LBB19_5
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:    s_branch .LBB19_6
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -8352,27 +8551,25 @@ define inreg <20 x i32> @bitcast_v40f16_to_v20i32_scalar(<40 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB19_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 18
-; VI-NEXT:    v_readlane_b32 s31, v32, 19
-; VI-NEXT:    v_readlane_b32 s67, v32, 17
-; VI-NEXT:    v_readlane_b32 s66, v32, 16
-; VI-NEXT:    v_readlane_b32 s65, v32, 15
-; VI-NEXT:    v_readlane_b32 s64, v32, 14
-; VI-NEXT:    v_readlane_b32 s55, v32, 13
-; VI-NEXT:    v_readlane_b32 s54, v32, 12
-; VI-NEXT:    v_readlane_b32 s53, v32, 11
-; VI-NEXT:    v_readlane_b32 s52, v32, 10
-; VI-NEXT:    v_readlane_b32 s51, v32, 9
-; VI-NEXT:    v_readlane_b32 s50, v32, 8
-; VI-NEXT:    v_readlane_b32 s49, v32, 7
-; VI-NEXT:    v_readlane_b32 s48, v32, 6
-; VI-NEXT:    v_readlane_b32 s39, v32, 5
-; VI-NEXT:    v_readlane_b32 s38, v32, 4
-; VI-NEXT:    v_readlane_b32 s37, v32, 3
-; VI-NEXT:    v_readlane_b32 s36, v32, 2
-; VI-NEXT:    v_readlane_b32 s35, v32, 1
-; VI-NEXT:    v_readlane_b32 s34, v32, 0
+; VI-NEXT:  .LBB19_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 16
+; VI-NEXT:    v_readlane_b32 s31, v32, 17
+; VI-NEXT:    v_readlane_b32 s67, v32, 15
+; VI-NEXT:    v_readlane_b32 s66, v32, 14
+; VI-NEXT:    v_readlane_b32 s65, v32, 13
+; VI-NEXT:    v_readlane_b32 s64, v32, 12
+; VI-NEXT:    v_readlane_b32 s55, v32, 11
+; VI-NEXT:    v_readlane_b32 s54, v32, 10
+; VI-NEXT:    v_readlane_b32 s53, v32, 9
+; VI-NEXT:    v_readlane_b32 s52, v32, 8
+; VI-NEXT:    v_readlane_b32 s51, v32, 7
+; VI-NEXT:    v_readlane_b32 s50, v32, 6
+; VI-NEXT:    v_readlane_b32 s49, v32, 5
+; VI-NEXT:    v_readlane_b32 s48, v32, 4
+; VI-NEXT:    v_readlane_b32 s39, v32, 3
+; VI-NEXT:    v_readlane_b32 s38, v32, 2
+; VI-NEXT:    v_readlane_b32 s37, v32, 1
+; VI-NEXT:    v_readlane_b32 s36, v32, 0
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v32, off, s[0:3], s32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -8445,10 +8642,18 @@ define inreg <20 x i32> @bitcast_v40f16_to_v20i32_scalar(<40 x half> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s54, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v19, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v19 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v19 op_sel_hi:[1,0]
@@ -8470,10 +8675,8 @@ define inreg <20 x i32> @bitcast_v40f16_to_v20i32_scalar(<40 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v17, s53, v19 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v18, s54, v19 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v19, s55, v19 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB19_5
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:    s_branch .LBB19_6
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -8506,7 +8709,7 @@ define inreg <20 x i32> @bitcast_v40f16_to_v20i32_scalar(<40 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB19_5: ; %end
+; GFX9-NEXT:  .LBB19_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -8573,11 +8776,16 @@ define inreg <20 x i32> @bitcast_v40f16_to_v20i32_scalar(<40 x half> inreg %a, i
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s18, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -8599,8 +8807,6 @@ define inreg <20 x i32> @bitcast_v40f16_to_v20i32_scalar(<40 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v18, 0x200, s18 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v19, 0x200, s19 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -8818,10 +9024,18 @@ define inreg <10 x i64> @bitcast_v20f32_to_v10i64_scalar(<20 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_3
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB21_4
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v19, s55, 1.0
 ; SI-NEXT:    v_add_f32_e64 v18, s54, 1.0
 ; SI-NEXT:    v_add_f32_e64 v17, s53, 1.0
@@ -8842,10 +9056,8 @@ define inreg <10 x i64> @bitcast_v20f32_to_v10i64_scalar(<20 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB21_5
-; SI-NEXT:  .LBB21_3:
-; SI-NEXT:    s_branch .LBB21_2
-; SI-NEXT:  .LBB21_4:
+; SI-NEXT:    s_branch .LBB21_6
+; SI-NEXT:  .LBB21_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -8878,7 +9090,7 @@ define inreg <10 x i64> @bitcast_v20f32_to_v10i64_scalar(<20 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB21_5: ; %end
+; SI-NEXT:  .LBB21_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -8937,10 +9149,18 @@ define inreg <10 x i64> @bitcast_v20f32_to_v10i64_scalar(<20 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_3
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_4
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v19, s55, 1.0
 ; VI-NEXT:    v_add_f32_e64 v18, s54, 1.0
 ; VI-NEXT:    v_add_f32_e64 v17, s53, 1.0
@@ -8961,10 +9181,8 @@ define inreg <10 x i64> @bitcast_v20f32_to_v10i64_scalar(<20 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB21_5
-; VI-NEXT:  .LBB21_3:
-; VI-NEXT:    s_branch .LBB21_2
-; VI-NEXT:  .LBB21_4:
+; VI-NEXT:    s_branch .LBB21_6
+; VI-NEXT:  .LBB21_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -8997,7 +9215,7 @@ define inreg <10 x i64> @bitcast_v20f32_to_v10i64_scalar(<20 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB21_5: ; %end
+; VI-NEXT:  .LBB21_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -9056,10 +9274,18 @@ define inreg <10 x i64> @bitcast_v20f32_to_v10i64_scalar(<20 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_4
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v19, s55, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v18, s54, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v17, s53, 1.0
@@ -9080,10 +9306,8 @@ define inreg <10 x i64> @bitcast_v20f32_to_v10i64_scalar(<20 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB21_5
-; GFX9-NEXT:  .LBB21_3:
-; GFX9-NEXT:    s_branch .LBB21_2
-; GFX9-NEXT:  .LBB21_4:
+; GFX9-NEXT:    s_branch .LBB21_6
+; GFX9-NEXT:  .LBB21_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -9116,7 +9340,7 @@ define inreg <10 x i64> @bitcast_v20f32_to_v10i64_scalar(<20 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB21_5: ; %end
+; GFX9-NEXT:  .LBB21_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -9176,11 +9400,16 @@ define inreg <10 x i64> @bitcast_v20f32_to_v10i64_scalar(<20 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_4
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v19, s55, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v18, s54, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v17, s53, 1.0
@@ -9202,8 +9431,6 @@ define inreg <10 x i64> @bitcast_v20f32_to_v10i64_scalar(<20 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB21_5
-; GFX11-NEXT:  .LBB21_3:
-; GFX11-NEXT:    s_branch .LBB21_2
 ; GFX11-NEXT:  .LBB21_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -9423,10 +9650,18 @@ define inreg <20 x float> @bitcast_v10i64_to_v20f32_scalar(<10 x i64> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s10, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s11, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -9447,7 +9682,7 @@ define inreg <20 x float> @bitcast_v10i64_to_v20f32_scalar(<10 x i64> inreg %a,
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -9469,8 +9704,6 @@ define inreg <20 x float> @bitcast_v10i64_to_v20f32_scalar(<10 x i64> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v18, s7
 ; SI-NEXT:    v_mov_b32_e32 v19, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v10i64_to_v20f32_scalar:
 ; VI:       ; %bb.0:
@@ -9483,10 +9716,18 @@ define inreg <20 x float> @bitcast_v10i64_to_v20f32_scalar(<10 x i64> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s10, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s11, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_4
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_3
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -9507,7 +9748,7 @@ define inreg <20 x float> @bitcast_v10i64_to_v20f32_scalar(<10 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB23_3: ; %end
+; VI-NEXT:  .LBB23_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -9529,8 +9770,6 @@ define inreg <20 x float> @bitcast_v10i64_to_v20f32_scalar(<10 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v18, s7
 ; VI-NEXT:    v_mov_b32_e32 v19, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_4:
-; VI-NEXT:    s_branch .LBB23_2
 ;
 ; GFX9-LABEL: bitcast_v10i64_to_v20f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -9543,10 +9782,18 @@ define inreg <20 x float> @bitcast_v10i64_to_v20f32_scalar(<10 x i64> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s11, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_3
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -9567,7 +9814,7 @@ define inreg <20 x float> @bitcast_v10i64_to_v20f32_scalar(<10 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB23_3: ; %end
+; GFX9-NEXT:  .LBB23_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -9589,8 +9836,6 @@ define inreg <20 x float> @bitcast_v10i64_to_v20f32_scalar(<10 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_4:
-; GFX9-NEXT:    s_branch .LBB23_2
 ;
 ; GFX11-LABEL: bitcast_v10i64_to_v20f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -9600,11 +9845,16 @@ define inreg <20 x float> @bitcast_v10i64_to_v20f32_scalar(<10 x i64> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s5, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s6, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_3
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s28, s28, 3
@@ -9625,7 +9875,7 @@ define inreg <20 x float> @bitcast_v10i64_to_v20f32_scalar(<10 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB23_3: ; %end
+; GFX11-NEXT:  .LBB23_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -9638,8 +9888,6 @@ define inreg <20 x float> @bitcast_v10i64_to_v20f32_scalar(<10 x i64> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s28 :: v_dual_mov_b32 v17, s29
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s5 :: v_dual_mov_b32 v19, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_4:
-; GFX11-NEXT:    s_branch .LBB23_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -9839,10 +10087,18 @@ define inreg <10 x double> @bitcast_v20f32_to_v10f64_scalar(<20 x float> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_3
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB25_4
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v19, s55, 1.0
 ; SI-NEXT:    v_add_f32_e64 v18, s54, 1.0
 ; SI-NEXT:    v_add_f32_e64 v17, s53, 1.0
@@ -9863,10 +10119,8 @@ define inreg <10 x double> @bitcast_v20f32_to_v10f64_scalar(<20 x float> inreg %
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB25_5
-; SI-NEXT:  .LBB25_3:
-; SI-NEXT:    s_branch .LBB25_2
-; SI-NEXT:  .LBB25_4:
+; SI-NEXT:    s_branch .LBB25_6
+; SI-NEXT:  .LBB25_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -9899,7 +10153,7 @@ define inreg <10 x double> @bitcast_v20f32_to_v10f64_scalar(<20 x float> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB25_5: ; %end
+; SI-NEXT:  .LBB25_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -9958,10 +10212,18 @@ define inreg <10 x double> @bitcast_v20f32_to_v10f64_scalar(<20 x float> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_3
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB25_4
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v19, s55, 1.0
 ; VI-NEXT:    v_add_f32_e64 v18, s54, 1.0
 ; VI-NEXT:    v_add_f32_e64 v17, s53, 1.0
@@ -9982,10 +10244,8 @@ define inreg <10 x double> @bitcast_v20f32_to_v10f64_scalar(<20 x float> inreg %
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB25_5
-; VI-NEXT:  .LBB25_3:
-; VI-NEXT:    s_branch .LBB25_2
-; VI-NEXT:  .LBB25_4:
+; VI-NEXT:    s_branch .LBB25_6
+; VI-NEXT:  .LBB25_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -10018,7 +10278,7 @@ define inreg <10 x double> @bitcast_v20f32_to_v10f64_scalar(<20 x float> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB25_5: ; %end
+; VI-NEXT:  .LBB25_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -10077,10 +10337,18 @@ define inreg <10 x double> @bitcast_v20f32_to_v10f64_scalar(<20 x float> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_4
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v19, s55, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v18, s54, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v17, s53, 1.0
@@ -10101,10 +10369,8 @@ define inreg <10 x double> @bitcast_v20f32_to_v10f64_scalar(<20 x float> inreg %
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB25_5
-; GFX9-NEXT:  .LBB25_3:
-; GFX9-NEXT:    s_branch .LBB25_2
-; GFX9-NEXT:  .LBB25_4:
+; GFX9-NEXT:    s_branch .LBB25_6
+; GFX9-NEXT:  .LBB25_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -10137,7 +10403,7 @@ define inreg <10 x double> @bitcast_v20f32_to_v10f64_scalar(<20 x float> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB25_5: ; %end
+; GFX9-NEXT:  .LBB25_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -10197,11 +10463,16 @@ define inreg <10 x double> @bitcast_v20f32_to_v10f64_scalar(<20 x float> inreg %
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_4
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB25_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v19, s55, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v18, s54, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v17, s53, 1.0
@@ -10223,8 +10494,6 @@ define inreg <10 x double> @bitcast_v20f32_to_v10f64_scalar(<20 x float> inreg %
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB25_5
-; GFX11-NEXT:  .LBB25_3:
-; GFX11-NEXT:    s_branch .LBB25_2
 ; GFX11-NEXT:  .LBB25_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -10429,10 +10698,18 @@ define inreg <20 x float> @bitcast_v10f64_to_v20f32_scalar(<10 x double> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB27_3
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB27_4
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; SI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; SI-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
@@ -10443,10 +10720,8 @@ define inreg <20 x float> @bitcast_v10f64_to_v20f32_scalar(<10 x double> inreg %
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB27_5
-; SI-NEXT:  .LBB27_3:
-; SI-NEXT:    s_branch .LBB27_2
-; SI-NEXT:  .LBB27_4:
+; SI-NEXT:    s_branch .LBB27_6
+; SI-NEXT:  .LBB27_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -10479,7 +10754,7 @@ define inreg <20 x float> @bitcast_v10f64_to_v20f32_scalar(<10 x double> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB27_5: ; %end
+; SI-NEXT:  .LBB27_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -10538,10 +10813,18 @@ define inreg <20 x float> @bitcast_v10f64_to_v20f32_scalar(<10 x double> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_3
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB27_4
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; VI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; VI-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
@@ -10552,10 +10835,8 @@ define inreg <20 x float> @bitcast_v10f64_to_v20f32_scalar(<10 x double> inreg %
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB27_5
-; VI-NEXT:  .LBB27_3:
-; VI-NEXT:    s_branch .LBB27_2
-; VI-NEXT:  .LBB27_4:
+; VI-NEXT:    s_branch .LBB27_6
+; VI-NEXT:  .LBB27_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -10588,7 +10869,7 @@ define inreg <20 x float> @bitcast_v10f64_to_v20f32_scalar(<10 x double> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB27_5: ; %end
+; VI-NEXT:  .LBB27_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -10647,10 +10928,18 @@ define inreg <20 x float> @bitcast_v10f64_to_v20f32_scalar(<10 x double> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_4
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
@@ -10661,10 +10950,8 @@ define inreg <20 x float> @bitcast_v10f64_to_v20f32_scalar(<10 x double> inreg %
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB27_5
-; GFX9-NEXT:  .LBB27_3:
-; GFX9-NEXT:    s_branch .LBB27_2
-; GFX9-NEXT:  .LBB27_4:
+; GFX9-NEXT:    s_branch .LBB27_6
+; GFX9-NEXT:  .LBB27_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -10697,7 +10984,7 @@ define inreg <20 x float> @bitcast_v10f64_to_v20f32_scalar(<10 x double> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB27_5: ; %end
+; GFX9-NEXT:  .LBB27_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -10757,11 +11044,16 @@ define inreg <20 x float> @bitcast_v10f64_to_v20f32_scalar(<10 x double> inreg %
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_4
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB27_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; GFX11-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; GFX11-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
@@ -10773,8 +11065,6 @@ define inreg <20 x float> @bitcast_v10f64_to_v20f32_scalar(<10 x double> inreg %
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB27_5
-; GFX11-NEXT:  .LBB27_3:
-; GFX11-NEXT:    s_branch .LBB27_2
 ; GFX11-NEXT:  .LBB27_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -11397,7 +11687,7 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s9, v1
 ; SI-NEXT:    s_cmp_lg_u32 s8, 0
 ; SI-NEXT:    v_readfirstlane_b32 s8, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s89, s5, 16
 ; SI-NEXT:    s_lshr_b32 s88, s7, 16
@@ -11419,8 +11709,36 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[62:63], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[62:63], -1
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[62:63], s[62:63], exec
+; SI-NEXT:    s_cselect_b32 s11, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s11, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v19, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v18, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v17, s7, 1.0
@@ -11461,30 +11779,8 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v38, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v39, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v48, 16, v1
-; SI-NEXT:    s_branch .LBB29_5
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:    s_branch .LBB29_6
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -11525,7 +11821,7 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v27, s56
 ; SI-NEXT:    v_mov_b32_e32 v28, s58
 ; SI-NEXT:    v_mov_b32_e32 v29, s60
-; SI-NEXT:  .LBB29_5: ; %end
+; SI-NEXT:  .LBB29_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v29, 16, v29
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v28
@@ -11599,7 +11895,7 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s10, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s11, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s12, s6, 16
 ; VI-NEXT:    s_lshr_b32 s13, s7, 16
@@ -11621,8 +11917,36 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s61, s18, 16
 ; VI-NEXT:    s_lshr_b32 s62, s17, 16
 ; VI-NEXT:    s_lshr_b32 s63, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v19, s6, 1.0
 ; VI-NEXT:    v_add_f32_e64 v18, s7, 1.0
 ; VI-NEXT:    v_add_f32_e64 v17, s8, 1.0
@@ -11663,30 +11987,8 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v37, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v38, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v39, 16, v0
-; VI-NEXT:    s_branch .LBB29_5
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:    s_branch .LBB29_6
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -11727,7 +12029,7 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v22, s14
 ; VI-NEXT:    v_mov_b32_e32 v21, s13
 ; VI-NEXT:    v_mov_b32_e32 v20, s12
-; VI-NEXT:  .LBB29_5: ; %end
+; VI-NEXT:  .LBB29_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v39, 16, v39
 ; VI-NEXT:    v_lshlrev_b32_e32 v38, 16, v38
 ; VI-NEXT:    v_lshlrev_b32_e32 v37, 16, v37
@@ -11781,7 +12083,7 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s11, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s12, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s13, s7, 16
@@ -11803,8 +12105,36 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s61, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v19, s6, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v18, s7, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v17, s8, 1.0
@@ -11845,30 +12175,8 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v37, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v38, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v39, 16, v0
-; GFX9-NEXT:    s_branch .LBB29_5
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:    s_branch .LBB29_6
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -11909,7 +12217,7 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s14
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s13
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s12
-; GFX9-NEXT:  .LBB29_5: ; %end
+; GFX9-NEXT:  .LBB29_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -11958,12 +12266,12 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s6, v2
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s4, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s5, v0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s8, 0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s6, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s7, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s8, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s6, s4, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s7, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s9, s29, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s10, s28, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s27, 16
@@ -11982,9 +12290,36 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s56, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s57, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s58, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-TRUE16-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB29_3
+; GFX11-TRUE16-NEXT:  .LBB29_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-TRUE16-NEXT:  .LBB29_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v19, s4, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v18, s5, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v17, s29, 1.0
@@ -12025,30 +12360,8 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v37, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v38, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB29_5
-; GFX11-TRUE16-NEXT:  .LBB29_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-TRUE16-NEXT:    s_branch .LBB29_2
-; GFX11-TRUE16-NEXT:  .LBB29_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB29_6
+; GFX11-TRUE16-NEXT:  .LBB29_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -12068,8 +12381,8 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s10 :: v_dual_mov_b32 v22, s9
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s8 :: v_dual_mov_b32 v20, s7
-; GFX11-TRUE16-NEXT:  .LBB29_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s7 :: v_dual_mov_b32 v20, s6
+; GFX11-TRUE16-NEXT:  .LBB29_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v39.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v38.l
@@ -12099,12 +12412,12 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s6, v2
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s4, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s5, v0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s8, 0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s6, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s7, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s8, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s6, s4, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s7, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s9, s29, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s10, s28, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s27, 16
@@ -12123,9 +12436,36 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s56, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s57, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s58, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-FAKE16-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB29_3
+; GFX11-FAKE16-NEXT:  .LBB29_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-FAKE16-NEXT:  .LBB29_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v15, s4, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v16, s5, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v17, s29, 1.0
@@ -12166,30 +12506,8 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v37, 16, v2
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v38, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v4
-; GFX11-FAKE16-NEXT:    s_branch .LBB29_5
-; GFX11-FAKE16-NEXT:  .LBB29_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-FAKE16-NEXT:    s_branch .LBB29_2
-; GFX11-FAKE16-NEXT:  .LBB29_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB29_6
+; GFX11-FAKE16-NEXT:  .LBB29_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v3, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v1, s3
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s16 :: v_dual_mov_b32 v9, s17
@@ -12209,8 +12527,8 @@ define inreg <40 x i16> @bitcast_v20f32_to_v40i16_scalar(<20 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v23, s10 :: v_dual_mov_b32 v22, s9
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v21, s8 :: v_dual_mov_b32 v20, s7
-; GFX11-FAKE16-NEXT:  .LBB29_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v21, s7 :: v_dual_mov_b32 v20, s6
+; GFX11-FAKE16-NEXT:  .LBB29_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v4
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v3
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v48, 0xffff, v1
@@ -13169,7 +13487,7 @@ define inreg <20 x float> @bitcast_v40i16_to_v20f32_scalar(<40 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s76, s77, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v6
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_4
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -13231,8 +13549,17 @@ define inreg <20 x float> @bitcast_v40i16_to_v20f32_scalar(<40 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s55, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB31_3
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -13333,7 +13660,7 @@ define inreg <20 x float> @bitcast_v40i16_to_v20f32_scalar(<40 x i16> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s55, s4, 0x30000
-; SI-NEXT:  .LBB31_3: ; %end
+; SI-NEXT:  .LBB31_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -13375,9 +13702,6 @@ define inreg <20 x float> @bitcast_v40i16_to_v20f32_scalar(<40 x i16> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB31_2
 ;
 ; VI-LABEL: bitcast_v40i16_to_v20f32_scalar:
 ; VI:       ; %bb.0:
@@ -13385,26 +13709,24 @@ define inreg <20 x float> @bitcast_v40i16_to_v20f32_scalar(<40 x i16> inreg %a,
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_store_dword v20, off, s[0:3], s32 ; 4-byte Folded Spill
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
-; VI-NEXT:    v_writelane_b32 v20, s34, 0
-; VI-NEXT:    v_writelane_b32 v20, s35, 1
-; VI-NEXT:    v_writelane_b32 v20, s36, 2
-; VI-NEXT:    v_writelane_b32 v20, s37, 3
-; VI-NEXT:    v_writelane_b32 v20, s38, 4
-; VI-NEXT:    v_writelane_b32 v20, s39, 5
-; VI-NEXT:    v_writelane_b32 v20, s48, 6
-; VI-NEXT:    v_writelane_b32 v20, s49, 7
-; VI-NEXT:    v_writelane_b32 v20, s50, 8
-; VI-NEXT:    v_writelane_b32 v20, s51, 9
-; VI-NEXT:    v_writelane_b32 v20, s52, 10
-; VI-NEXT:    v_writelane_b32 v20, s53, 11
-; VI-NEXT:    v_writelane_b32 v20, s54, 12
-; VI-NEXT:    v_writelane_b32 v20, s55, 13
-; VI-NEXT:    v_writelane_b32 v20, s64, 14
-; VI-NEXT:    v_writelane_b32 v20, s65, 15
-; VI-NEXT:    v_writelane_b32 v20, s66, 16
-; VI-NEXT:    v_writelane_b32 v20, s67, 17
-; VI-NEXT:    v_writelane_b32 v20, s30, 18
-; VI-NEXT:    v_writelane_b32 v20, s31, 19
+; VI-NEXT:    v_writelane_b32 v20, s36, 0
+; VI-NEXT:    v_writelane_b32 v20, s37, 1
+; VI-NEXT:    v_writelane_b32 v20, s38, 2
+; VI-NEXT:    v_writelane_b32 v20, s39, 3
+; VI-NEXT:    v_writelane_b32 v20, s48, 4
+; VI-NEXT:    v_writelane_b32 v20, s49, 5
+; VI-NEXT:    v_writelane_b32 v20, s50, 6
+; VI-NEXT:    v_writelane_b32 v20, s51, 7
+; VI-NEXT:    v_writelane_b32 v20, s52, 8
+; VI-NEXT:    v_writelane_b32 v20, s53, 9
+; VI-NEXT:    v_writelane_b32 v20, s54, 10
+; VI-NEXT:    v_writelane_b32 v20, s55, 11
+; VI-NEXT:    v_writelane_b32 v20, s64, 12
+; VI-NEXT:    v_writelane_b32 v20, s65, 13
+; VI-NEXT:    v_writelane_b32 v20, s66, 14
+; VI-NEXT:    v_writelane_b32 v20, s67, 15
+; VI-NEXT:    v_writelane_b32 v20, s30, 16
+; VI-NEXT:    v_writelane_b32 v20, s31, 17
 ; VI-NEXT:    v_readfirstlane_b32 s7, v5
 ; VI-NEXT:    v_readfirstlane_b32 s9, v4
 ; VI-NEXT:    v_readfirstlane_b32 s12, v3
@@ -13421,10 +13743,10 @@ define inreg <20 x float> @bitcast_v40i16_to_v20f32_scalar(<40 x i16> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s12, 16
@@ -13433,19 +13755,19 @@ define inreg <20 x float> @bitcast_v40i16_to_v20f32_scalar(<40 x i16> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s76, s77, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v6
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_4
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -13495,26 +13817,35 @@ define inreg <20 x float> @bitcast_v40i16_to_v20f32_scalar(<40 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB31_3
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
@@ -13597,8 +13928,8 @@ define inreg <20 x float> @bitcast_v40i16_to_v20f32_scalar(<40 x i16> inreg %a,
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s55, s4, 0x30000
-; VI-NEXT:  .LBB31_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v20, 18
+; VI-NEXT:  .LBB31_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v20, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -13619,33 +13950,28 @@ define inreg <20 x float> @bitcast_v40i16_to_v20f32_scalar(<40 x i16> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v17, s53
 ; VI-NEXT:    v_mov_b32_e32 v18, s54
 ; VI-NEXT:    v_mov_b32_e32 v19, s55
-; VI-NEXT:    v_readlane_b32 s31, v20, 19
-; VI-NEXT:    v_readlane_b32 s67, v20, 17
-; VI-NEXT:    v_readlane_b32 s66, v20, 16
-; VI-NEXT:    v_readlane_b32 s65, v20, 15
-; VI-NEXT:    v_readlane_b32 s64, v20, 14
-; VI-NEXT:    v_readlane_b32 s55, v20, 13
-; VI-NEXT:    v_readlane_b32 s54, v20, 12
-; VI-NEXT:    v_readlane_b32 s53, v20, 11
-; VI-NEXT:    v_readlane_b32 s52, v20, 10
-; VI-NEXT:    v_readlane_b32 s51, v20, 9
-; VI-NEXT:    v_readlane_b32 s50, v20, 8
-; VI-NEXT:    v_readlane_b32 s49, v20, 7
-; VI-NEXT:    v_readlane_b32 s48, v20, 6
-; VI-NEXT:    v_readlane_b32 s39, v20, 5
-; VI-NEXT:    v_readlane_b32 s38, v20, 4
-; VI-NEXT:    v_readlane_b32 s37, v20, 3
-; VI-NEXT:    v_readlane_b32 s36, v20, 2
-; VI-NEXT:    v_readlane_b32 s35, v20, 1
-; VI-NEXT:    v_readlane_b32 s34, v20, 0
+; VI-NEXT:    v_readlane_b32 s31, v20, 17
+; VI-NEXT:    v_readlane_b32 s67, v20, 15
+; VI-NEXT:    v_readlane_b32 s66, v20, 14
+; VI-NEXT:    v_readlane_b32 s65, v20, 13
+; VI-NEXT:    v_readlane_b32 s64, v20, 12
+; VI-NEXT:    v_readlane_b32 s55, v20, 11
+; VI-NEXT:    v_readlane_b32 s54, v20, 10
+; VI-NEXT:    v_readlane_b32 s53, v20, 9
+; VI-NEXT:    v_readlane_b32 s52, v20, 8
+; VI-NEXT:    v_readlane_b32 s51, v20, 7
+; VI-NEXT:    v_readlane_b32 s50, v20, 6
+; VI-NEXT:    v_readlane_b32 s49, v20, 5
+; VI-NEXT:    v_readlane_b32 s48, v20, 4
+; VI-NEXT:    v_readlane_b32 s39, v20, 3
+; VI-NEXT:    v_readlane_b32 s38, v20, 2
+; VI-NEXT:    v_readlane_b32 s37, v20, 1
+; VI-NEXT:    v_readlane_b32 s36, v20, 0
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB31_2
 ;
 ; GFX9-LABEL: bitcast_v40i16_to_v20f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -13713,10 +14039,18 @@ define inreg <20 x float> @bitcast_v40i16_to_v20f32_scalar(<40 x i16> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s54, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_4
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -13737,10 +14071,8 @@ define inreg <20 x float> @bitcast_v40i16_to_v20f32_scalar(<40 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v18, s54, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v19, s55, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB31_5
-; GFX9-NEXT:  .LBB31_3:
-; GFX9-NEXT:    s_branch .LBB31_2
-; GFX9-NEXT:  .LBB31_4:
+; GFX9-NEXT:    s_branch .LBB31_6
+; GFX9-NEXT:  .LBB31_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -13773,7 +14105,7 @@ define inreg <20 x float> @bitcast_v40i16_to_v20f32_scalar(<40 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB31_5: ; %end
+; GFX9-NEXT:  .LBB31_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -13840,11 +14172,16 @@ define inreg <20 x float> @bitcast_v40i16_to_v20f32_scalar(<40 x i16> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s18, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_4
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -13866,8 +14203,6 @@ define inreg <20 x float> @bitcast_v40i16_to_v20f32_scalar(<40 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v18, s18, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v19, s19, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_3:
-; GFX11-NEXT:    s_branch .LBB31_2
 ; GFX11-NEXT:  .LBB31_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -14473,7 +14808,7 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s9, v1
 ; SI-NEXT:    s_cmp_lg_u32 s8, 0
 ; SI-NEXT:    v_readfirstlane_b32 s8, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s89, s5, 16
 ; SI-NEXT:    s_lshr_b32 s88, s7, 16
@@ -14495,8 +14830,36 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[62:63], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[62:63], -1
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[62:63], s[62:63], exec
+; SI-NEXT:    s_cselect_b32 s11, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s11, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v19, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v18, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v17, s7, 1.0
@@ -14537,30 +14900,8 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v38, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v39, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v48, 16, v1
-; SI-NEXT:    s_branch .LBB33_5
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:    s_branch .LBB33_6
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -14601,7 +14942,7 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v27, s56
 ; SI-NEXT:    v_mov_b32_e32 v28, s58
 ; SI-NEXT:    v_mov_b32_e32 v29, s60
-; SI-NEXT:  .LBB33_5: ; %end
+; SI-NEXT:  .LBB33_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v29, 16, v29
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v28
@@ -14675,7 +15016,7 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s10, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s11, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s12, s6, 16
 ; VI-NEXT:    s_lshr_b32 s13, s7, 16
@@ -14697,8 +15038,36 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s61, s18, 16
 ; VI-NEXT:    s_lshr_b32 s62, s17, 16
 ; VI-NEXT:    s_lshr_b32 s63, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v19, s6, 1.0
 ; VI-NEXT:    v_add_f32_e64 v18, s7, 1.0
 ; VI-NEXT:    v_add_f32_e64 v17, s8, 1.0
@@ -14739,30 +15108,8 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v37, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v38, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v39, 16, v0
-; VI-NEXT:    s_branch .LBB33_5
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:    s_branch .LBB33_6
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -14803,7 +15150,7 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v22, s14
 ; VI-NEXT:    v_mov_b32_e32 v21, s13
 ; VI-NEXT:    v_mov_b32_e32 v20, s12
-; VI-NEXT:  .LBB33_5: ; %end
+; VI-NEXT:  .LBB33_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v39, 16, v39
 ; VI-NEXT:    v_lshlrev_b32_e32 v38, 16, v38
 ; VI-NEXT:    v_lshlrev_b32_e32 v37, 16, v37
@@ -14857,7 +15204,7 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s11, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s12, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s13, s7, 16
@@ -14879,8 +15226,36 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s61, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v19, s6, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v18, s7, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v17, s8, 1.0
@@ -14921,30 +15296,8 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v37, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v38, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v39, 16, v0
-; GFX9-NEXT:    s_branch .LBB33_5
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:    s_branch .LBB33_6
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -14985,7 +15338,7 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s14
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s13
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s12
-; GFX9-NEXT:  .LBB33_5: ; %end
+; GFX9-NEXT:  .LBB33_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -15034,12 +15387,12 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s6, v2
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s4, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s5, v0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s8, 0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s6, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s7, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s8, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s6, s4, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s7, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s9, s29, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s10, s28, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s27, 16
@@ -15058,9 +15411,36 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s56, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s57, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s58, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-TRUE16-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB33_3
+; GFX11-TRUE16-NEXT:  .LBB33_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-TRUE16-NEXT:  .LBB33_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v19, s4, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v18, s5, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v17, s29, 1.0
@@ -15085,46 +15465,24 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v21, 16, v18
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v22, 16, v17
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v23, 16, v16
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v24, 16, v15
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v25, 16, v14
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v26, 16, v13
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v27, 16, v12
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v28, 16, v11
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v29, 16, v10
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v30, 16, v9
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v31, 16, v8
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v32, 16, v7
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v33, 16, v6
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v34, 16, v5
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v4
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v36, 16, v3
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v37, 16, v2
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v38, 16, v1
-; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB33_5
-; GFX11-TRUE16-NEXT:  .LBB33_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-TRUE16-NEXT:    s_branch .LBB33_2
-; GFX11-TRUE16-NEXT:  .LBB33_4:
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v24, 16, v15
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v25, 16, v14
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v26, 16, v13
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v27, 16, v12
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v28, 16, v11
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v29, 16, v10
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v30, 16, v9
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v31, 16, v8
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v32, 16, v7
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v33, 16, v6
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v34, 16, v5
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v4
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v36, 16, v3
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v37, 16, v2
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v38, 16, v1
+; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v0
+; GFX11-TRUE16-NEXT:    s_branch .LBB33_6
+; GFX11-TRUE16-NEXT:  .LBB33_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -15144,8 +15502,8 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s10 :: v_dual_mov_b32 v22, s9
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s8 :: v_dual_mov_b32 v20, s7
-; GFX11-TRUE16-NEXT:  .LBB33_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s7 :: v_dual_mov_b32 v20, s6
+; GFX11-TRUE16-NEXT:  .LBB33_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v39.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v38.l
@@ -15175,12 +15533,12 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s6, v2
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s4, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s5, v0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s8, 0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s6, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s7, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s8, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s6, s4, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s7, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s9, s29, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s10, s28, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s27, 16
@@ -15199,9 +15557,36 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s56, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s57, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s58, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-FAKE16-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB33_3
+; GFX11-FAKE16-NEXT:  .LBB33_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-FAKE16-NEXT:  .LBB33_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v15, s4, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v16, s5, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v17, s29, 1.0
@@ -15242,30 +15627,8 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v37, 16, v2
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v38, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v4
-; GFX11-FAKE16-NEXT:    s_branch .LBB33_5
-; GFX11-FAKE16-NEXT:  .LBB33_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-FAKE16-NEXT:    s_branch .LBB33_2
-; GFX11-FAKE16-NEXT:  .LBB33_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB33_6
+; GFX11-FAKE16-NEXT:  .LBB33_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v3, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v1, s3
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s16 :: v_dual_mov_b32 v9, s17
@@ -15285,8 +15648,8 @@ define inreg <40 x half> @bitcast_v20f32_to_v40f16_scalar(<20 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v23, s10 :: v_dual_mov_b32 v22, s9
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v21, s8 :: v_dual_mov_b32 v20, s7
-; GFX11-FAKE16-NEXT:  .LBB33_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v21, s7 :: v_dual_mov_b32 v20, s6
+; GFX11-FAKE16-NEXT:  .LBB33_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v4
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v3
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v48, 0xffff, v1
@@ -16330,7 +16693,7 @@ define inreg <20 x float> @bitcast_v40f16_to_v20f32_scalar(<40 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s74, s73, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v6
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_3
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -16392,8 +16755,17 @@ define inreg <20 x float> @bitcast_v40f16_to_v20f32_scalar(<40 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s55, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB35_4
-; SI-NEXT:  .LBB35_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s95
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s94
@@ -16554,11 +16926,8 @@ define inreg <20 x float> @bitcast_v40f16_to_v20f32_scalar(<40 x half> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v18, v19, v18
 ; SI-NEXT:    v_lshlrev_b32_e32 v19, 16, v20
 ; SI-NEXT:    v_or_b32_e32 v19, v21, v19
-; SI-NEXT:    s_branch .LBB35_5
-; SI-NEXT:  .LBB35_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB35_2
-; SI-NEXT:  .LBB35_4:
+; SI-NEXT:    s_branch .LBB35_6
+; SI-NEXT:  .LBB35_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -16591,7 +16960,7 @@ define inreg <20 x float> @bitcast_v40f16_to_v20f32_scalar(<40 x half> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB35_5: ; %end
+; SI-NEXT:  .LBB35_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s67, v32, 15
 ; SI-NEXT:    v_readlane_b32 s66, v32, 14
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -16620,26 +16989,24 @@ define inreg <20 x float> @bitcast_v40f16_to_v20f32_scalar(<40 x half> inreg %a,
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_store_dword v32, off, s[0:3], s32 ; 4-byte Folded Spill
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
-; VI-NEXT:    v_writelane_b32 v32, s34, 0
-; VI-NEXT:    v_writelane_b32 v32, s35, 1
-; VI-NEXT:    v_writelane_b32 v32, s36, 2
-; VI-NEXT:    v_writelane_b32 v32, s37, 3
-; VI-NEXT:    v_writelane_b32 v32, s38, 4
-; VI-NEXT:    v_writelane_b32 v32, s39, 5
-; VI-NEXT:    v_writelane_b32 v32, s48, 6
-; VI-NEXT:    v_writelane_b32 v32, s49, 7
-; VI-NEXT:    v_writelane_b32 v32, s50, 8
-; VI-NEXT:    v_writelane_b32 v32, s51, 9
-; VI-NEXT:    v_writelane_b32 v32, s52, 10
-; VI-NEXT:    v_writelane_b32 v32, s53, 11
-; VI-NEXT:    v_writelane_b32 v32, s54, 12
-; VI-NEXT:    v_writelane_b32 v32, s55, 13
-; VI-NEXT:    v_writelane_b32 v32, s64, 14
-; VI-NEXT:    v_writelane_b32 v32, s65, 15
-; VI-NEXT:    v_writelane_b32 v32, s66, 16
-; VI-NEXT:    v_writelane_b32 v32, s67, 17
-; VI-NEXT:    v_writelane_b32 v32, s30, 18
-; VI-NEXT:    v_writelane_b32 v32, s31, 19
+; VI-NEXT:    v_writelane_b32 v32, s36, 0
+; VI-NEXT:    v_writelane_b32 v32, s37, 1
+; VI-NEXT:    v_writelane_b32 v32, s38, 2
+; VI-NEXT:    v_writelane_b32 v32, s39, 3
+; VI-NEXT:    v_writelane_b32 v32, s48, 4
+; VI-NEXT:    v_writelane_b32 v32, s49, 5
+; VI-NEXT:    v_writelane_b32 v32, s50, 6
+; VI-NEXT:    v_writelane_b32 v32, s51, 7
+; VI-NEXT:    v_writelane_b32 v32, s52, 8
+; VI-NEXT:    v_writelane_b32 v32, s53, 9
+; VI-NEXT:    v_writelane_b32 v32, s54, 10
+; VI-NEXT:    v_writelane_b32 v32, s55, 11
+; VI-NEXT:    v_writelane_b32 v32, s64, 12
+; VI-NEXT:    v_writelane_b32 v32, s65, 13
+; VI-NEXT:    v_writelane_b32 v32, s66, 14
+; VI-NEXT:    v_writelane_b32 v32, s67, 15
+; VI-NEXT:    v_writelane_b32 v32, s30, 16
+; VI-NEXT:    v_writelane_b32 v32, s31, 17
 ; VI-NEXT:    v_readfirstlane_b32 s6, v5
 ; VI-NEXT:    v_readfirstlane_b32 s8, v4
 ; VI-NEXT:    v_readfirstlane_b32 s11, v3
@@ -16656,10 +17023,10 @@ define inreg <20 x float> @bitcast_v40f16_to_v20f32_scalar(<40 x half> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s12, s11, 16
@@ -16668,19 +17035,19 @@ define inreg <20 x float> @bitcast_v40f16_to_v20f32_scalar(<40 x half> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s78, s76, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v6
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -16730,22 +17097,31 @@ define inreg <20 x float> @bitcast_v40f16_to_v20f32_scalar(<40 x half> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v19, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s35
-; VI-NEXT:    v_mov_b32_e32 v2, s34
+; VI-NEXT:    v_mov_b32_e32 v0, s31
+; VI-NEXT:    v_mov_b32_e32 v2, s30
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v19
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v19
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s31
+; VI-NEXT:    v_mov_b32_e32 v2, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v19
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s30
+; VI-NEXT:    v_mov_b32_e32 v3, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v19
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
@@ -16813,11 +17189,8 @@ define inreg <20 x float> @bitcast_v40f16_to_v20f32_scalar(<40 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_sdwa v20, v20, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v19, s6, v19
 ; VI-NEXT:    v_or_b32_e32 v19, v19, v20
-; VI-NEXT:    s_branch .LBB35_5
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:    s_branch .LBB35_6
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -16850,27 +17223,25 @@ define inreg <20 x float> @bitcast_v40f16_to_v20f32_scalar(<40 x half> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB35_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 18
-; VI-NEXT:    v_readlane_b32 s31, v32, 19
-; VI-NEXT:    v_readlane_b32 s67, v32, 17
-; VI-NEXT:    v_readlane_b32 s66, v32, 16
-; VI-NEXT:    v_readlane_b32 s65, v32, 15
-; VI-NEXT:    v_readlane_b32 s64, v32, 14
-; VI-NEXT:    v_readlane_b32 s55, v32, 13
-; VI-NEXT:    v_readlane_b32 s54, v32, 12
-; VI-NEXT:    v_readlane_b32 s53, v32, 11
-; VI-NEXT:    v_readlane_b32 s52, v32, 10
-; VI-NEXT:    v_readlane_b32 s51, v32, 9
-; VI-NEXT:    v_readlane_b32 s50, v32, 8
-; VI-NEXT:    v_readlane_b32 s49, v32, 7
-; VI-NEXT:    v_readlane_b32 s48, v32, 6
-; VI-NEXT:    v_readlane_b32 s39, v32, 5
-; VI-NEXT:    v_readlane_b32 s38, v32, 4
-; VI-NEXT:    v_readlane_b32 s37, v32, 3
-; VI-NEXT:    v_readlane_b32 s36, v32, 2
-; VI-NEXT:    v_readlane_b32 s35, v32, 1
-; VI-NEXT:    v_readlane_b32 s34, v32, 0
+; VI-NEXT:  .LBB35_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 16
+; VI-NEXT:    v_readlane_b32 s31, v32, 17
+; VI-NEXT:    v_readlane_b32 s67, v32, 15
+; VI-NEXT:    v_readlane_b32 s66, v32, 14
+; VI-NEXT:    v_readlane_b32 s65, v32, 13
+; VI-NEXT:    v_readlane_b32 s64, v32, 12
+; VI-NEXT:    v_readlane_b32 s55, v32, 11
+; VI-NEXT:    v_readlane_b32 s54, v32, 10
+; VI-NEXT:    v_readlane_b32 s53, v32, 9
+; VI-NEXT:    v_readlane_b32 s52, v32, 8
+; VI-NEXT:    v_readlane_b32 s51, v32, 7
+; VI-NEXT:    v_readlane_b32 s50, v32, 6
+; VI-NEXT:    v_readlane_b32 s49, v32, 5
+; VI-NEXT:    v_readlane_b32 s48, v32, 4
+; VI-NEXT:    v_readlane_b32 s39, v32, 3
+; VI-NEXT:    v_readlane_b32 s38, v32, 2
+; VI-NEXT:    v_readlane_b32 s37, v32, 1
+; VI-NEXT:    v_readlane_b32 s36, v32, 0
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v32, off, s[0:3], s32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -16943,10 +17314,18 @@ define inreg <20 x float> @bitcast_v40f16_to_v20f32_scalar(<40 x half> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s54, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v19, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v19 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v19 op_sel_hi:[1,0]
@@ -16968,10 +17347,8 @@ define inreg <20 x float> @bitcast_v40f16_to_v20f32_scalar(<40 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v17, s53, v19 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v18, s54, v19 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v19, s55, v19 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB35_5
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:    s_branch .LBB35_6
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -17004,7 +17381,7 @@ define inreg <20 x float> @bitcast_v40f16_to_v20f32_scalar(<40 x half> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB35_5: ; %end
+; GFX9-NEXT:  .LBB35_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -17071,11 +17448,16 @@ define inreg <20 x float> @bitcast_v40f16_to_v20f32_scalar(<40 x half> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s18, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -17097,8 +17479,6 @@ define inreg <20 x float> @bitcast_v40f16_to_v20f32_scalar(<40 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v18, 0x200, s18 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v19, 0x200, s19 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -17301,10 +17681,18 @@ define inreg <10 x double> @bitcast_v10i64_to_v10f64_scalar(<10 x i64> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s10, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s11, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_4
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB37_3
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
@@ -17325,7 +17713,7 @@ define inreg <10 x double> @bitcast_v10i64_to_v10f64_scalar(<10 x i64> inreg %a,
 ; SI-NEXT:    s_addc_u32 s8, s8, 0
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
-; SI-NEXT:  .LBB37_3: ; %end
+; SI-NEXT:  .LBB37_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -17347,8 +17735,6 @@ define inreg <10 x double> @bitcast_v10i64_to_v10f64_scalar(<10 x i64> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v18, s7
 ; SI-NEXT:    v_mov_b32_e32 v19, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB37_4:
-; SI-NEXT:    s_branch .LBB37_2
 ;
 ; VI-LABEL: bitcast_v10i64_to_v10f64_scalar:
 ; VI:       ; %bb.0:
@@ -17361,10 +17747,18 @@ define inreg <10 x double> @bitcast_v10i64_to_v10f64_scalar(<10 x i64> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s10, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s11, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_4
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_3
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -17385,7 +17779,7 @@ define inreg <10 x double> @bitcast_v10i64_to_v10f64_scalar(<10 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s8, s8, 0
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
-; VI-NEXT:  .LBB37_3: ; %end
+; VI-NEXT:  .LBB37_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -17407,8 +17801,6 @@ define inreg <10 x double> @bitcast_v10i64_to_v10f64_scalar(<10 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v18, s7
 ; VI-NEXT:    v_mov_b32_e32 v19, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_4:
-; VI-NEXT:    s_branch .LBB37_2
 ;
 ; GFX9-LABEL: bitcast_v10i64_to_v10f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -17421,10 +17813,18 @@ define inreg <10 x double> @bitcast_v10i64_to_v10f64_scalar(<10 x i64> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s11, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_3
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -17445,7 +17845,7 @@ define inreg <10 x double> @bitcast_v10i64_to_v10f64_scalar(<10 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s8, s8, 0
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
-; GFX9-NEXT:  .LBB37_3: ; %end
+; GFX9-NEXT:  .LBB37_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -17467,8 +17867,6 @@ define inreg <10 x double> @bitcast_v10i64_to_v10f64_scalar(<10 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_4:
-; GFX9-NEXT:    s_branch .LBB37_2
 ;
 ; GFX11-LABEL: bitcast_v10i64_to_v10f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -17478,11 +17876,16 @@ define inreg <10 x double> @bitcast_v10i64_to_v10f64_scalar(<10 x i64> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s5, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s6, 0
 ; GFX11-NEXT:    s_mov_b32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_3
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -17503,7 +17906,7 @@ define inreg <10 x double> @bitcast_v10i64_to_v10f64_scalar(<10 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s29, s29, 0
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
-; GFX11-NEXT:  .LBB37_3: ; %end
+; GFX11-NEXT:  .LBB37_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -17515,8 +17918,6 @@ define inreg <10 x double> @bitcast_v10i64_to_v10f64_scalar(<10 x i64> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s28 :: v_dual_mov_b32 v17, s29
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s5 :: v_dual_mov_b32 v19, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_4:
-; GFX11-NEXT:    s_branch .LBB37_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -17686,10 +18087,18 @@ define inreg <10 x i64> @bitcast_v10f64_to_v10i64_scalar(<10 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_3
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB39_4
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -17700,10 +18109,8 @@ define inreg <10 x i64> @bitcast_v10f64_to_v10i64_scalar(<10 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
 ; SI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; SI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
-; SI-NEXT:    s_branch .LBB39_5
-; SI-NEXT:  .LBB39_3:
-; SI-NEXT:    s_branch .LBB39_2
-; SI-NEXT:  .LBB39_4:
+; SI-NEXT:    s_branch .LBB39_6
+; SI-NEXT:  .LBB39_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -17736,7 +18143,7 @@ define inreg <10 x i64> @bitcast_v10f64_to_v10i64_scalar(<10 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB39_5: ; %end
+; SI-NEXT:  .LBB39_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -17795,10 +18202,18 @@ define inreg <10 x i64> @bitcast_v10f64_to_v10i64_scalar(<10 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_3
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_4
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -17809,10 +18224,8 @@ define inreg <10 x i64> @bitcast_v10f64_to_v10i64_scalar(<10 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
 ; VI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; VI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
-; VI-NEXT:    s_branch .LBB39_5
-; VI-NEXT:  .LBB39_3:
-; VI-NEXT:    s_branch .LBB39_2
-; VI-NEXT:  .LBB39_4:
+; VI-NEXT:    s_branch .LBB39_6
+; VI-NEXT:  .LBB39_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -17845,7 +18258,7 @@ define inreg <10 x i64> @bitcast_v10f64_to_v10i64_scalar(<10 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB39_5: ; %end
+; VI-NEXT:  .LBB39_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -17904,10 +18317,18 @@ define inreg <10 x i64> @bitcast_v10f64_to_v10i64_scalar(<10 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_4
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -17918,10 +18339,8 @@ define inreg <10 x i64> @bitcast_v10f64_to_v10i64_scalar(<10 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[50:51], 1.0
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
-; GFX9-NEXT:    s_branch .LBB39_5
-; GFX9-NEXT:  .LBB39_3:
-; GFX9-NEXT:    s_branch .LBB39_2
-; GFX9-NEXT:  .LBB39_4:
+; GFX9-NEXT:    s_branch .LBB39_6
+; GFX9-NEXT:  .LBB39_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -17954,7 +18373,7 @@ define inreg <10 x i64> @bitcast_v10f64_to_v10i64_scalar(<10 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB39_5: ; %end
+; GFX9-NEXT:  .LBB39_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -18014,11 +18433,16 @@ define inreg <10 x i64> @bitcast_v10f64_to_v10i64_scalar(<10 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -18030,8 +18454,6 @@ define inreg <10 x i64> @bitcast_v10f64_to_v10i64_scalar(<10 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; GFX11-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; GFX11-NEXT:    s_branch .LBB39_5
-; GFX11-NEXT:  .LBB39_3:
-; GFX11-NEXT:    s_branch .LBB39_2
 ; GFX11-NEXT:  .LBB39_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -18684,7 +19106,7 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s9, v1
 ; SI-NEXT:    s_cmp_lg_u32 s8, 0
 ; SI-NEXT:    v_readfirstlane_b32 s8, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_4
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s72, s5, 16
 ; SI-NEXT:    s_lshr_b32 s73, s7, 16
@@ -18706,8 +19128,36 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB41_3
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[62:63], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[62:63], -1
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[62:63], s[62:63], exec
+; SI-NEXT:    s_cselect_b32 s11, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s11, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -18748,7 +19198,7 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 16
-; SI-NEXT:  .LBB41_3: ; %end
+; SI-NEXT:  .LBB41_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s11, s60, 16
 ; SI-NEXT:    s_and_b32 s13, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s11, s13, s11
@@ -18830,28 +19280,6 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v18, s4
 ; SI-NEXT:    v_mov_b32_e32 v19, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB41_4:
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    s_branch .LBB41_2
 ;
 ; VI-LABEL: bitcast_v10i64_to_v40i16_scalar:
 ; VI:       ; %bb.0:
@@ -18864,7 +19292,7 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s10, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s11, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_4
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s12, s6, 16
 ; VI-NEXT:    s_lshr_b32 s13, s7, 16
@@ -18886,8 +19314,36 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s61, s18, 16
 ; VI-NEXT:    s_lshr_b32 s62, s17, 16
 ; VI-NEXT:    s_lshr_b32 s63, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB41_3
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -18928,7 +19384,7 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s61, s18, 16
 ; VI-NEXT:    s_lshr_b32 s62, s17, 16
 ; VI-NEXT:    s_lshr_b32 s63, s16, 16
-; VI-NEXT:  .LBB41_3: ; %end
+; VI-NEXT:  .LBB41_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s63, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -19010,28 +19466,6 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v18, s7
 ; VI-NEXT:    v_mov_b32_e32 v19, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_4:
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    s_branch .LBB41_2
 ;
 ; GFX9-LABEL: bitcast_v10i64_to_v40i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -19044,7 +19478,7 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s11, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s12, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s13, s7, 16
@@ -19066,8 +19500,36 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s61, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_3
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -19108,7 +19570,7 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s61, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s16, 16
-; GFX9-NEXT:  .LBB41_3: ; %end
+; GFX9-NEXT:  .LBB41_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s63
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s62
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s61
@@ -19150,28 +19612,6 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    s_branch .LBB41_2
 ;
 ; GFX11-LABEL: bitcast_v10i64_to_v40i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -19181,7 +19621,7 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s5, v0
 ; GFX11-NEXT:    s_mov_b32 s58, 0
 ; GFX11-NEXT:    s_cmp_lg_u32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s6, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s7, s5, 16
@@ -19203,9 +19643,36 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s47, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s56, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s57, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_3
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB41_3
+; GFX11-NEXT:  .LBB41_2:
+; GFX11-NEXT:    s_mov_b32 s58, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr7
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:  .LBB41_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s28, s28, 3
@@ -19246,7 +19713,7 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s47, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s56, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s57, s0, 16
-; GFX11-NEXT:  .LBB41_3: ; %end
+; GFX11-NEXT:  .LBB41_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s57
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s56
@@ -19270,37 +19737,15 @@ define inreg <40 x i16> @bitcast_v10i64_to_v40i16_scalar(<10 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s4, s4, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
-; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
-; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
-; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
-; GFX11-NEXT:    v_dual_mov_b32 v10, s15 :: v_dual_mov_b32 v11, s14
-; GFX11-NEXT:    v_dual_mov_b32 v12, s13 :: v_dual_mov_b32 v13, s12
-; GFX11-NEXT:    v_dual_mov_b32 v14, s11 :: v_dual_mov_b32 v15, s10
-; GFX11-NEXT:    v_dual_mov_b32 v16, s9 :: v_dual_mov_b32 v17, s8
-; GFX11-NEXT:    v_dual_mov_b32 v18, s5 :: v_dual_mov_b32 v19, s4
-; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr7
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    s_branch .LBB41_2
+; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
+; GFX11-NEXT:    v_dual_mov_b32 v6, s18 :: v_dual_mov_b32 v7, s19
+; GFX11-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v9, s21
+; GFX11-NEXT:    v_dual_mov_b32 v10, s15 :: v_dual_mov_b32 v11, s14
+; GFX11-NEXT:    v_dual_mov_b32 v12, s13 :: v_dual_mov_b32 v13, s12
+; GFX11-NEXT:    v_dual_mov_b32 v14, s11 :: v_dual_mov_b32 v15, s10
+; GFX11-NEXT:    v_dual_mov_b32 v16, s9 :: v_dual_mov_b32 v17, s8
+; GFX11-NEXT:    v_dual_mov_b32 v18, s5 :: v_dual_mov_b32 v19, s4
+; GFX11-NEXT:    s_setpc_b64 s[30:31]
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -20218,7 +20663,7 @@ define inreg <10 x i64> @bitcast_v40i16_to_v10i64_scalar(<40 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s76, s77, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v6
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_4
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -20280,8 +20725,17 @@ define inreg <10 x i64> @bitcast_v40i16_to_v10i64_scalar(<40 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s55, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB43_3
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -20382,7 +20836,7 @@ define inreg <10 x i64> @bitcast_v40i16_to_v10i64_scalar(<40 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s55, s4, 0x30000
-; SI-NEXT:  .LBB43_3: ; %end
+; SI-NEXT:  .LBB43_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -20424,9 +20878,6 @@ define inreg <10 x i64> @bitcast_v40i16_to_v10i64_scalar(<40 x i16> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB43_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB43_2
 ;
 ; VI-LABEL: bitcast_v40i16_to_v10i64_scalar:
 ; VI:       ; %bb.0:
@@ -20434,26 +20885,24 @@ define inreg <10 x i64> @bitcast_v40i16_to_v10i64_scalar(<40 x i16> inreg %a, i3
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_store_dword v20, off, s[0:3], s32 ; 4-byte Folded Spill
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
-; VI-NEXT:    v_writelane_b32 v20, s34, 0
-; VI-NEXT:    v_writelane_b32 v20, s35, 1
-; VI-NEXT:    v_writelane_b32 v20, s36, 2
-; VI-NEXT:    v_writelane_b32 v20, s37, 3
-; VI-NEXT:    v_writelane_b32 v20, s38, 4
-; VI-NEXT:    v_writelane_b32 v20, s39, 5
-; VI-NEXT:    v_writelane_b32 v20, s48, 6
-; VI-NEXT:    v_writelane_b32 v20, s49, 7
-; VI-NEXT:    v_writelane_b32 v20, s50, 8
-; VI-NEXT:    v_writelane_b32 v20, s51, 9
-; VI-NEXT:    v_writelane_b32 v20, s52, 10
-; VI-NEXT:    v_writelane_b32 v20, s53, 11
-; VI-NEXT:    v_writelane_b32 v20, s54, 12
-; VI-NEXT:    v_writelane_b32 v20, s55, 13
-; VI-NEXT:    v_writelane_b32 v20, s64, 14
-; VI-NEXT:    v_writelane_b32 v20, s65, 15
-; VI-NEXT:    v_writelane_b32 v20, s66, 16
-; VI-NEXT:    v_writelane_b32 v20, s67, 17
-; VI-NEXT:    v_writelane_b32 v20, s30, 18
-; VI-NEXT:    v_writelane_b32 v20, s31, 19
+; VI-NEXT:    v_writelane_b32 v20, s36, 0
+; VI-NEXT:    v_writelane_b32 v20, s37, 1
+; VI-NEXT:    v_writelane_b32 v20, s38, 2
+; VI-NEXT:    v_writelane_b32 v20, s39, 3
+; VI-NEXT:    v_writelane_b32 v20, s48, 4
+; VI-NEXT:    v_writelane_b32 v20, s49, 5
+; VI-NEXT:    v_writelane_b32 v20, s50, 6
+; VI-NEXT:    v_writelane_b32 v20, s51, 7
+; VI-NEXT:    v_writelane_b32 v20, s52, 8
+; VI-NEXT:    v_writelane_b32 v20, s53, 9
+; VI-NEXT:    v_writelane_b32 v20, s54, 10
+; VI-NEXT:    v_writelane_b32 v20, s55, 11
+; VI-NEXT:    v_writelane_b32 v20, s64, 12
+; VI-NEXT:    v_writelane_b32 v20, s65, 13
+; VI-NEXT:    v_writelane_b32 v20, s66, 14
+; VI-NEXT:    v_writelane_b32 v20, s67, 15
+; VI-NEXT:    v_writelane_b32 v20, s30, 16
+; VI-NEXT:    v_writelane_b32 v20, s31, 17
 ; VI-NEXT:    v_readfirstlane_b32 s7, v5
 ; VI-NEXT:    v_readfirstlane_b32 s9, v4
 ; VI-NEXT:    v_readfirstlane_b32 s12, v3
@@ -20470,10 +20919,10 @@ define inreg <10 x i64> @bitcast_v40i16_to_v10i64_scalar(<40 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s12, 16
@@ -20482,19 +20931,19 @@ define inreg <10 x i64> @bitcast_v40i16_to_v10i64_scalar(<40 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s76, s77, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v6
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_4
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -20544,26 +20993,35 @@ define inreg <10 x i64> @bitcast_v40i16_to_v10i64_scalar(<40 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB43_3
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
@@ -20646,8 +21104,8 @@ define inreg <10 x i64> @bitcast_v40i16_to_v10i64_scalar(<40 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s55, s4, 0x30000
-; VI-NEXT:  .LBB43_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v20, 18
+; VI-NEXT:  .LBB43_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v20, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -20668,33 +21126,28 @@ define inreg <10 x i64> @bitcast_v40i16_to_v10i64_scalar(<40 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v17, s53
 ; VI-NEXT:    v_mov_b32_e32 v18, s54
 ; VI-NEXT:    v_mov_b32_e32 v19, s55
-; VI-NEXT:    v_readlane_b32 s31, v20, 19
-; VI-NEXT:    v_readlane_b32 s67, v20, 17
-; VI-NEXT:    v_readlane_b32 s66, v20, 16
-; VI-NEXT:    v_readlane_b32 s65, v20, 15
-; VI-NEXT:    v_readlane_b32 s64, v20, 14
-; VI-NEXT:    v_readlane_b32 s55, v20, 13
-; VI-NEXT:    v_readlane_b32 s54, v20, 12
-; VI-NEXT:    v_readlane_b32 s53, v20, 11
-; VI-NEXT:    v_readlane_b32 s52, v20, 10
-; VI-NEXT:    v_readlane_b32 s51, v20, 9
-; VI-NEXT:    v_readlane_b32 s50, v20, 8
-; VI-NEXT:    v_readlane_b32 s49, v20, 7
-; VI-NEXT:    v_readlane_b32 s48, v20, 6
-; VI-NEXT:    v_readlane_b32 s39, v20, 5
-; VI-NEXT:    v_readlane_b32 s38, v20, 4
-; VI-NEXT:    v_readlane_b32 s37, v20, 3
-; VI-NEXT:    v_readlane_b32 s36, v20, 2
-; VI-NEXT:    v_readlane_b32 s35, v20, 1
-; VI-NEXT:    v_readlane_b32 s34, v20, 0
+; VI-NEXT:    v_readlane_b32 s31, v20, 17
+; VI-NEXT:    v_readlane_b32 s67, v20, 15
+; VI-NEXT:    v_readlane_b32 s66, v20, 14
+; VI-NEXT:    v_readlane_b32 s65, v20, 13
+; VI-NEXT:    v_readlane_b32 s64, v20, 12
+; VI-NEXT:    v_readlane_b32 s55, v20, 11
+; VI-NEXT:    v_readlane_b32 s54, v20, 10
+; VI-NEXT:    v_readlane_b32 s53, v20, 9
+; VI-NEXT:    v_readlane_b32 s52, v20, 8
+; VI-NEXT:    v_readlane_b32 s51, v20, 7
+; VI-NEXT:    v_readlane_b32 s50, v20, 6
+; VI-NEXT:    v_readlane_b32 s49, v20, 5
+; VI-NEXT:    v_readlane_b32 s48, v20, 4
+; VI-NEXT:    v_readlane_b32 s39, v20, 3
+; VI-NEXT:    v_readlane_b32 s38, v20, 2
+; VI-NEXT:    v_readlane_b32 s37, v20, 1
+; VI-NEXT:    v_readlane_b32 s36, v20, 0
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB43_2
 ;
 ; GFX9-LABEL: bitcast_v40i16_to_v10i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -20762,10 +21215,18 @@ define inreg <10 x i64> @bitcast_v40i16_to_v10i64_scalar(<40 x i16> inreg %a, i3
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s54, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -20786,10 +21247,8 @@ define inreg <10 x i64> @bitcast_v40i16_to_v10i64_scalar(<40 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v18, s54, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v19, s55, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB43_5
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:    s_branch .LBB43_6
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -20822,7 +21281,7 @@ define inreg <10 x i64> @bitcast_v40i16_to_v10i64_scalar(<40 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB43_5: ; %end
+; GFX9-NEXT:  .LBB43_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -20889,11 +21348,16 @@ define inreg <10 x i64> @bitcast_v40i16_to_v10i64_scalar(<40 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s18, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB43_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -20915,8 +21379,6 @@ define inreg <10 x i64> @bitcast_v40i16_to_v10i64_scalar(<40 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v18, s18, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v19, s19, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_3:
-; GFX11-NEXT:    s_branch .LBB43_2
 ; GFX11-NEXT:  .LBB43_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -21552,7 +22014,7 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s9, v1
 ; SI-NEXT:    s_cmp_lg_u32 s8, 0
 ; SI-NEXT:    v_readfirstlane_b32 s8, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_4
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s72, s5, 16
 ; SI-NEXT:    s_lshr_b32 s73, s7, 16
@@ -21574,8 +22036,36 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB45_3
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[62:63], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[62:63], -1
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[62:63], s[62:63], exec
+; SI-NEXT:    s_cselect_b32 s11, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s11, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -21616,7 +22106,7 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 16
-; SI-NEXT:  .LBB45_3: ; %end
+; SI-NEXT:  .LBB45_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s11, s60, 16
 ; SI-NEXT:    s_and_b32 s13, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s11, s13, s11
@@ -21698,28 +22188,6 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v18, s4
 ; SI-NEXT:    v_mov_b32_e32 v19, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB45_4:
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    s_branch .LBB45_2
 ;
 ; VI-LABEL: bitcast_v10i64_to_v40f16_scalar:
 ; VI:       ; %bb.0:
@@ -21732,7 +22200,7 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s10, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s11, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_4
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s12, s6, 16
 ; VI-NEXT:    s_lshr_b32 s13, s7, 16
@@ -21754,8 +22222,36 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s61, s18, 16
 ; VI-NEXT:    s_lshr_b32 s62, s17, 16
 ; VI-NEXT:    s_lshr_b32 s63, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB45_3
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -21796,7 +22292,7 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s61, s18, 16
 ; VI-NEXT:    s_lshr_b32 s62, s17, 16
 ; VI-NEXT:    s_lshr_b32 s63, s16, 16
-; VI-NEXT:  .LBB45_3: ; %end
+; VI-NEXT:  .LBB45_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s63, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -21878,28 +22374,6 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v18, s7
 ; VI-NEXT:    v_mov_b32_e32 v19, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_4:
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    s_branch .LBB45_2
 ;
 ; GFX9-LABEL: bitcast_v10i64_to_v40f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -21912,7 +22386,7 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s11, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s12, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s13, s7, 16
@@ -21934,8 +22408,36 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s61, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_3
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -21976,7 +22478,7 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s61, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s16, 16
-; GFX9-NEXT:  .LBB45_3: ; %end
+; GFX9-NEXT:  .LBB45_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s63
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s62
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s61
@@ -22018,28 +22520,6 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    s_branch .LBB45_2
 ;
 ; GFX11-LABEL: bitcast_v10i64_to_v40f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -22049,7 +22529,7 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s5, v0
 ; GFX11-NEXT:    s_mov_b32 s58, 0
 ; GFX11-NEXT:    s_cmp_lg_u32 s6, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s6, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s7, s5, 16
@@ -22071,9 +22551,36 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s47, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s56, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s57, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_3
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB45_3
+; GFX11-NEXT:  .LBB45_2:
+; GFX11-NEXT:    s_mov_b32 s58, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr7
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:  .LBB45_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s28, s28, 3
@@ -22114,7 +22621,7 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s47, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s56, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s57, s0, 16
-; GFX11-NEXT:  .LBB45_3: ; %end
+; GFX11-NEXT:  .LBB45_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s57
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s56
@@ -22147,28 +22654,6 @@ define inreg <40 x half> @bitcast_v10i64_to_v40f16_scalar(<10 x i64> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v16, s9 :: v_dual_mov_b32 v17, s8
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s5 :: v_dual_mov_b32 v19, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr7
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    s_branch .LBB45_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -23171,7 +23656,7 @@ define inreg <10 x i64> @bitcast_v40f16_to_v10i64_scalar(<40 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s74, s73, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v6
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB47_3
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -23233,8 +23718,17 @@ define inreg <10 x i64> @bitcast_v40f16_to_v10i64_scalar(<40 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s55, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB47_4
-; SI-NEXT:  .LBB47_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s95
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s94
@@ -23395,11 +23889,8 @@ define inreg <10 x i64> @bitcast_v40f16_to_v10i64_scalar(<40 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v18, v19, v18
 ; SI-NEXT:    v_lshlrev_b32_e32 v19, 16, v20
 ; SI-NEXT:    v_or_b32_e32 v19, v21, v19
-; SI-NEXT:    s_branch .LBB47_5
-; SI-NEXT:  .LBB47_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB47_2
-; SI-NEXT:  .LBB47_4:
+; SI-NEXT:    s_branch .LBB47_6
+; SI-NEXT:  .LBB47_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -23432,7 +23923,7 @@ define inreg <10 x i64> @bitcast_v40f16_to_v10i64_scalar(<40 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB47_5: ; %end
+; SI-NEXT:  .LBB47_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s67, v32, 15
 ; SI-NEXT:    v_readlane_b32 s66, v32, 14
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -23461,26 +23952,24 @@ define inreg <10 x i64> @bitcast_v40f16_to_v10i64_scalar(<40 x half> inreg %a, i
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_store_dword v32, off, s[0:3], s32 ; 4-byte Folded Spill
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
-; VI-NEXT:    v_writelane_b32 v32, s34, 0
-; VI-NEXT:    v_writelane_b32 v32, s35, 1
-; VI-NEXT:    v_writelane_b32 v32, s36, 2
-; VI-NEXT:    v_writelane_b32 v32, s37, 3
-; VI-NEXT:    v_writelane_b32 v32, s38, 4
-; VI-NEXT:    v_writelane_b32 v32, s39, 5
-; VI-NEXT:    v_writelane_b32 v32, s48, 6
-; VI-NEXT:    v_writelane_b32 v32, s49, 7
-; VI-NEXT:    v_writelane_b32 v32, s50, 8
-; VI-NEXT:    v_writelane_b32 v32, s51, 9
-; VI-NEXT:    v_writelane_b32 v32, s52, 10
-; VI-NEXT:    v_writelane_b32 v32, s53, 11
-; VI-NEXT:    v_writelane_b32 v32, s54, 12
-; VI-NEXT:    v_writelane_b32 v32, s55, 13
-; VI-NEXT:    v_writelane_b32 v32, s64, 14
-; VI-NEXT:    v_writelane_b32 v32, s65, 15
-; VI-NEXT:    v_writelane_b32 v32, s66, 16
-; VI-NEXT:    v_writelane_b32 v32, s67, 17
-; VI-NEXT:    v_writelane_b32 v32, s30, 18
-; VI-NEXT:    v_writelane_b32 v32, s31, 19
+; VI-NEXT:    v_writelane_b32 v32, s36, 0
+; VI-NEXT:    v_writelane_b32 v32, s37, 1
+; VI-NEXT:    v_writelane_b32 v32, s38, 2
+; VI-NEXT:    v_writelane_b32 v32, s39, 3
+; VI-NEXT:    v_writelane_b32 v32, s48, 4
+; VI-NEXT:    v_writelane_b32 v32, s49, 5
+; VI-NEXT:    v_writelane_b32 v32, s50, 6
+; VI-NEXT:    v_writelane_b32 v32, s51, 7
+; VI-NEXT:    v_writelane_b32 v32, s52, 8
+; VI-NEXT:    v_writelane_b32 v32, s53, 9
+; VI-NEXT:    v_writelane_b32 v32, s54, 10
+; VI-NEXT:    v_writelane_b32 v32, s55, 11
+; VI-NEXT:    v_writelane_b32 v32, s64, 12
+; VI-NEXT:    v_writelane_b32 v32, s65, 13
+; VI-NEXT:    v_writelane_b32 v32, s66, 14
+; VI-NEXT:    v_writelane_b32 v32, s67, 15
+; VI-NEXT:    v_writelane_b32 v32, s30, 16
+; VI-NEXT:    v_writelane_b32 v32, s31, 17
 ; VI-NEXT:    v_readfirstlane_b32 s6, v5
 ; VI-NEXT:    v_readfirstlane_b32 s8, v4
 ; VI-NEXT:    v_readfirstlane_b32 s11, v3
@@ -23497,10 +23986,10 @@ define inreg <10 x i64> @bitcast_v40f16_to_v10i64_scalar(<40 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s12, s11, 16
@@ -23509,19 +23998,19 @@ define inreg <10 x i64> @bitcast_v40f16_to_v10i64_scalar(<40 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s78, s76, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v6
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -23571,22 +24060,31 @@ define inreg <10 x i64> @bitcast_v40f16_to_v10i64_scalar(<40 x half> inreg %a, i
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v19, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s35
-; VI-NEXT:    v_mov_b32_e32 v2, s34
+; VI-NEXT:    v_mov_b32_e32 v0, s31
+; VI-NEXT:    v_mov_b32_e32 v2, s30
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v19
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v19
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s31
+; VI-NEXT:    v_mov_b32_e32 v2, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v19
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s30
+; VI-NEXT:    v_mov_b32_e32 v3, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v19
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
@@ -23654,11 +24152,8 @@ define inreg <10 x i64> @bitcast_v40f16_to_v10i64_scalar(<40 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v20, v20, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v19, s6, v19
 ; VI-NEXT:    v_or_b32_e32 v19, v19, v20
-; VI-NEXT:    s_branch .LBB47_5
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:    s_branch .LBB47_6
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -23691,27 +24186,25 @@ define inreg <10 x i64> @bitcast_v40f16_to_v10i64_scalar(<40 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB47_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 18
-; VI-NEXT:    v_readlane_b32 s31, v32, 19
-; VI-NEXT:    v_readlane_b32 s67, v32, 17
-; VI-NEXT:    v_readlane_b32 s66, v32, 16
-; VI-NEXT:    v_readlane_b32 s65, v32, 15
-; VI-NEXT:    v_readlane_b32 s64, v32, 14
-; VI-NEXT:    v_readlane_b32 s55, v32, 13
-; VI-NEXT:    v_readlane_b32 s54, v32, 12
-; VI-NEXT:    v_readlane_b32 s53, v32, 11
-; VI-NEXT:    v_readlane_b32 s52, v32, 10
-; VI-NEXT:    v_readlane_b32 s51, v32, 9
-; VI-NEXT:    v_readlane_b32 s50, v32, 8
-; VI-NEXT:    v_readlane_b32 s49, v32, 7
-; VI-NEXT:    v_readlane_b32 s48, v32, 6
-; VI-NEXT:    v_readlane_b32 s39, v32, 5
-; VI-NEXT:    v_readlane_b32 s38, v32, 4
-; VI-NEXT:    v_readlane_b32 s37, v32, 3
-; VI-NEXT:    v_readlane_b32 s36, v32, 2
-; VI-NEXT:    v_readlane_b32 s35, v32, 1
-; VI-NEXT:    v_readlane_b32 s34, v32, 0
+; VI-NEXT:  .LBB47_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 16
+; VI-NEXT:    v_readlane_b32 s31, v32, 17
+; VI-NEXT:    v_readlane_b32 s67, v32, 15
+; VI-NEXT:    v_readlane_b32 s66, v32, 14
+; VI-NEXT:    v_readlane_b32 s65, v32, 13
+; VI-NEXT:    v_readlane_b32 s64, v32, 12
+; VI-NEXT:    v_readlane_b32 s55, v32, 11
+; VI-NEXT:    v_readlane_b32 s54, v32, 10
+; VI-NEXT:    v_readlane_b32 s53, v32, 9
+; VI-NEXT:    v_readlane_b32 s52, v32, 8
+; VI-NEXT:    v_readlane_b32 s51, v32, 7
+; VI-NEXT:    v_readlane_b32 s50, v32, 6
+; VI-NEXT:    v_readlane_b32 s49, v32, 5
+; VI-NEXT:    v_readlane_b32 s48, v32, 4
+; VI-NEXT:    v_readlane_b32 s39, v32, 3
+; VI-NEXT:    v_readlane_b32 s38, v32, 2
+; VI-NEXT:    v_readlane_b32 s37, v32, 1
+; VI-NEXT:    v_readlane_b32 s36, v32, 0
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v32, off, s[0:3], s32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -23784,10 +24277,18 @@ define inreg <10 x i64> @bitcast_v40f16_to_v10i64_scalar(<40 x half> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s54, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v19, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v19 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v19 op_sel_hi:[1,0]
@@ -23809,10 +24310,8 @@ define inreg <10 x i64> @bitcast_v40f16_to_v10i64_scalar(<40 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v17, s53, v19 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v18, s54, v19 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v19, s55, v19 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB47_5
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:    s_branch .LBB47_6
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -23845,7 +24344,7 @@ define inreg <10 x i64> @bitcast_v40f16_to_v10i64_scalar(<40 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB47_5: ; %end
+; GFX9-NEXT:  .LBB47_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -23912,11 +24411,16 @@ define inreg <10 x i64> @bitcast_v40f16_to_v10i64_scalar(<40 x half> inreg %a, i
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s18, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB47_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -23938,8 +24442,6 @@ define inreg <10 x i64> @bitcast_v40f16_to_v10i64_scalar(<40 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v18, 0x200, s18 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v19, 0x200, s19 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB47_3:
-; GFX11-NEXT:    s_branch .LBB47_2
 ; GFX11-NEXT:  .LBB47_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -24515,7 +25017,7 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_3
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s89, s9, 16
 ; SI-NEXT:    s_lshr_b32 s88, s7, 16
@@ -24537,8 +25039,36 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB49_4
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[62:63], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[62:63], -1
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[62:63], s[62:63], exec
+; SI-NEXT:    s_cselect_b32 s11, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s11, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[18:19], s[8:9], 1.0
 ; SI-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
 ; SI-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
@@ -24566,33 +25096,11 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v35, 16, v11
 ; SI-NEXT:    v_lshrrev_b32_e32 v36, 16, v9
 ; SI-NEXT:    v_lshrrev_b32_e32 v37, 16, v7
-; SI-NEXT:    v_lshrrev_b32_e32 v38, 16, v5
-; SI-NEXT:    v_lshrrev_b32_e32 v39, 16, v3
-; SI-NEXT:    v_lshrrev_b32_e32 v48, 16, v1
-; SI-NEXT:    s_branch .LBB49_5
-; SI-NEXT:  .LBB49_3:
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    s_branch .LBB49_2
-; SI-NEXT:  .LBB49_4:
+; SI-NEXT:    v_lshrrev_b32_e32 v38, 16, v5
+; SI-NEXT:    v_lshrrev_b32_e32 v39, 16, v3
+; SI-NEXT:    v_lshrrev_b32_e32 v48, 16, v1
+; SI-NEXT:    s_branch .LBB49_6
+; SI-NEXT:  .LBB49_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
@@ -24633,7 +25141,7 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v22, s14
 ; SI-NEXT:    v_mov_b32_e32 v21, s12
 ; SI-NEXT:    v_mov_b32_e32 v20, s10
-; SI-NEXT:  .LBB49_5: ; %end
+; SI-NEXT:  .LBB49_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v29, 16, v29
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v28
@@ -24707,7 +25215,7 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s5, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_3
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s12, s9, 16
 ; VI-NEXT:    s_lshr_b32 s46, s8, 16
@@ -24729,8 +25237,36 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s62, s18, 16
 ; VI-NEXT:    s_lshr_b32 s45, s17, 16
 ; VI-NEXT:    s_lshr_b32 s63, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB49_4
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[10:11], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[10:11], -1
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; VI-NEXT:    s_cselect_b32 s10, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s10, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[18:19], s[8:9], 1.0
 ; VI-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
 ; VI-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
@@ -24761,30 +25297,8 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v35, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v39, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v37, 16, v0
-; VI-NEXT:    s_branch .LBB49_5
-; VI-NEXT:  .LBB49_3:
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    s_branch .LBB49_2
-; VI-NEXT:  .LBB49_4:
+; VI-NEXT:    s_branch .LBB49_6
+; VI-NEXT:  .LBB49_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
@@ -24825,7 +25339,7 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v26, s14
 ; VI-NEXT:    v_mov_b32_e32 v24, s13
 ; VI-NEXT:    v_mov_b32_e32 v22, s12
-; VI-NEXT:  .LBB49_5: ; %end
+; VI-NEXT:  .LBB49_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v37, 16, v37
 ; VI-NEXT:    v_lshlrev_b32_e32 v35, 16, v35
 ; VI-NEXT:    v_lshlrev_b32_e32 v33, 16, v33
@@ -24879,7 +25393,7 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s12, s9, 16
 ; GFX9-NEXT:    s_lshr_b32 s46, s8, 16
@@ -24901,8 +25415,36 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s62, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s45, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[10:11], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[10:11], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; GFX9-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[8:9], 1.0
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
@@ -24933,30 +25475,8 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v35, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v39, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v37, 16, v0
-; GFX9-NEXT:    s_branch .LBB49_5
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:    s_branch .LBB49_6
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
@@ -24997,7 +25517,7 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s14
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s13
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s12
-; GFX9-NEXT:  .LBB49_5: ; %end
+; GFX9-NEXT:  .LBB49_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -25046,13 +25566,13 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s6, v2
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s8, 0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s6, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s7, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s6, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s8, s29, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s7, s29, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s28, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s9, s27, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s43, s26, 16
@@ -25070,9 +25590,36 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s57, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s40, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s58, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-TRUE16-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB49_3
+; GFX11-TRUE16-NEXT:  .LBB49_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-TRUE16-NEXT:  .LBB49_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[18:19], s[4:5], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[16:17], s[28:29], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[14:15], s[26:27], 1.0
@@ -25103,30 +25650,8 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v37, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB49_5
-; GFX11-TRUE16-NEXT:  .LBB49_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-TRUE16-NEXT:    s_branch .LBB49_2
-; GFX11-TRUE16-NEXT:  .LBB49_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB49_6
+; GFX11-TRUE16-NEXT:  .LBB49_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -25145,9 +25670,9 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s45 :: v_dual_mov_b32 v30, s11
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s44 :: v_dual_mov_b32 v28, s10
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s43 :: v_dual_mov_b32 v26, s9
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s42 :: v_dual_mov_b32 v24, s8
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v39, s40 :: v_dual_mov_b32 v22, s7
-; GFX11-TRUE16-NEXT:  .LBB49_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s42 :: v_dual_mov_b32 v24, s7
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v39, s40 :: v_dual_mov_b32 v22, s6
+; GFX11-TRUE16-NEXT:  .LBB49_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v37.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v39.l
@@ -25177,13 +25702,13 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s6, v2
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s8, 0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s6, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s7, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s6, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s8, s29, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s7, s29, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s28, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s9, s27, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s43, s26, 16
@@ -25201,9 +25726,36 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s57, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s40, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s58, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-FAKE16-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB49_3
+; GFX11-FAKE16-NEXT:  .LBB49_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-FAKE16-NEXT:  .LBB49_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[15:16], s[4:5], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[17:18], s[28:29], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[19:20], s[26:27], 1.0
@@ -25234,30 +25786,8 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v36, 16, v0
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v37, 16, v2
-; GFX11-FAKE16-NEXT:    s_branch .LBB49_5
-; GFX11-FAKE16-NEXT:  .LBB49_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-FAKE16-NEXT:    s_branch .LBB49_2
-; GFX11-FAKE16-NEXT:  .LBB49_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB49_6
+; GFX11-FAKE16-NEXT:  .LBB49_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v21, s16
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v7, s18
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v5, s20 :: v_dual_mov_b32 v12, s22
@@ -25277,8 +25807,8 @@ define inreg <40 x i16> @bitcast_v10f64_to_v40i16_scalar(<10 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v38, s15 :: v_dual_mov_b32 v33, s12
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v34, s13 :: v_dual_mov_b32 v31, s11
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v30, s10 :: v_dual_mov_b32 v27, s9
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v26, s8 :: v_dual_mov_b32 v25, s7
-; GFX11-FAKE16-NEXT:  .LBB49_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v26, s7 :: v_dual_mov_b32 v25, s6
+; GFX11-FAKE16-NEXT:  .LBB49_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v21, 0xffff, v21
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v48, 0xffff, v0
@@ -26237,7 +26767,7 @@ define inreg <10 x double> @bitcast_v40i16_to_v10f64_scalar(<40 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s76, s77, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v6
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -26299,8 +26829,17 @@ define inreg <10 x double> @bitcast_v40i16_to_v10f64_scalar(<40 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s55, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -26401,7 +26940,7 @@ define inreg <10 x double> @bitcast_v40i16_to_v10f64_scalar(<40 x i16> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s55, s4, 0x30000
-; SI-NEXT:  .LBB51_3: ; %end
+; SI-NEXT:  .LBB51_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -26443,9 +26982,6 @@ define inreg <10 x double> @bitcast_v40i16_to_v10f64_scalar(<40 x i16> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v40i16_to_v10f64_scalar:
 ; VI:       ; %bb.0:
@@ -26453,26 +26989,24 @@ define inreg <10 x double> @bitcast_v40i16_to_v10f64_scalar(<40 x i16> inreg %a,
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_store_dword v20, off, s[0:3], s32 ; 4-byte Folded Spill
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
-; VI-NEXT:    v_writelane_b32 v20, s34, 0
-; VI-NEXT:    v_writelane_b32 v20, s35, 1
-; VI-NEXT:    v_writelane_b32 v20, s36, 2
-; VI-NEXT:    v_writelane_b32 v20, s37, 3
-; VI-NEXT:    v_writelane_b32 v20, s38, 4
-; VI-NEXT:    v_writelane_b32 v20, s39, 5
-; VI-NEXT:    v_writelane_b32 v20, s48, 6
-; VI-NEXT:    v_writelane_b32 v20, s49, 7
-; VI-NEXT:    v_writelane_b32 v20, s50, 8
-; VI-NEXT:    v_writelane_b32 v20, s51, 9
-; VI-NEXT:    v_writelane_b32 v20, s52, 10
-; VI-NEXT:    v_writelane_b32 v20, s53, 11
-; VI-NEXT:    v_writelane_b32 v20, s54, 12
-; VI-NEXT:    v_writelane_b32 v20, s55, 13
-; VI-NEXT:    v_writelane_b32 v20, s64, 14
-; VI-NEXT:    v_writelane_b32 v20, s65, 15
-; VI-NEXT:    v_writelane_b32 v20, s66, 16
-; VI-NEXT:    v_writelane_b32 v20, s67, 17
-; VI-NEXT:    v_writelane_b32 v20, s30, 18
-; VI-NEXT:    v_writelane_b32 v20, s31, 19
+; VI-NEXT:    v_writelane_b32 v20, s36, 0
+; VI-NEXT:    v_writelane_b32 v20, s37, 1
+; VI-NEXT:    v_writelane_b32 v20, s38, 2
+; VI-NEXT:    v_writelane_b32 v20, s39, 3
+; VI-NEXT:    v_writelane_b32 v20, s48, 4
+; VI-NEXT:    v_writelane_b32 v20, s49, 5
+; VI-NEXT:    v_writelane_b32 v20, s50, 6
+; VI-NEXT:    v_writelane_b32 v20, s51, 7
+; VI-NEXT:    v_writelane_b32 v20, s52, 8
+; VI-NEXT:    v_writelane_b32 v20, s53, 9
+; VI-NEXT:    v_writelane_b32 v20, s54, 10
+; VI-NEXT:    v_writelane_b32 v20, s55, 11
+; VI-NEXT:    v_writelane_b32 v20, s64, 12
+; VI-NEXT:    v_writelane_b32 v20, s65, 13
+; VI-NEXT:    v_writelane_b32 v20, s66, 14
+; VI-NEXT:    v_writelane_b32 v20, s67, 15
+; VI-NEXT:    v_writelane_b32 v20, s30, 16
+; VI-NEXT:    v_writelane_b32 v20, s31, 17
 ; VI-NEXT:    v_readfirstlane_b32 s7, v5
 ; VI-NEXT:    v_readfirstlane_b32 s9, v4
 ; VI-NEXT:    v_readfirstlane_b32 s12, v3
@@ -26489,10 +27023,10 @@ define inreg <10 x double> @bitcast_v40i16_to_v10f64_scalar(<40 x i16> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s12, 16
@@ -26501,19 +27035,19 @@ define inreg <10 x double> @bitcast_v40i16_to_v10f64_scalar(<40 x i16> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s76, s77, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v6
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -26563,26 +27097,35 @@ define inreg <10 x double> @bitcast_v40i16_to_v10f64_scalar(<40 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
@@ -26665,8 +27208,8 @@ define inreg <10 x double> @bitcast_v40i16_to_v10f64_scalar(<40 x i16> inreg %a,
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s55, s4, 0x30000
-; VI-NEXT:  .LBB51_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v20, 18
+; VI-NEXT:  .LBB51_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v20, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -26687,33 +27230,28 @@ define inreg <10 x double> @bitcast_v40i16_to_v10f64_scalar(<40 x i16> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v17, s53
 ; VI-NEXT:    v_mov_b32_e32 v18, s54
 ; VI-NEXT:    v_mov_b32_e32 v19, s55
-; VI-NEXT:    v_readlane_b32 s31, v20, 19
-; VI-NEXT:    v_readlane_b32 s67, v20, 17
-; VI-NEXT:    v_readlane_b32 s66, v20, 16
-; VI-NEXT:    v_readlane_b32 s65, v20, 15
-; VI-NEXT:    v_readlane_b32 s64, v20, 14
-; VI-NEXT:    v_readlane_b32 s55, v20, 13
-; VI-NEXT:    v_readlane_b32 s54, v20, 12
-; VI-NEXT:    v_readlane_b32 s53, v20, 11
-; VI-NEXT:    v_readlane_b32 s52, v20, 10
-; VI-NEXT:    v_readlane_b32 s51, v20, 9
-; VI-NEXT:    v_readlane_b32 s50, v20, 8
-; VI-NEXT:    v_readlane_b32 s49, v20, 7
-; VI-NEXT:    v_readlane_b32 s48, v20, 6
-; VI-NEXT:    v_readlane_b32 s39, v20, 5
-; VI-NEXT:    v_readlane_b32 s38, v20, 4
-; VI-NEXT:    v_readlane_b32 s37, v20, 3
-; VI-NEXT:    v_readlane_b32 s36, v20, 2
-; VI-NEXT:    v_readlane_b32 s35, v20, 1
-; VI-NEXT:    v_readlane_b32 s34, v20, 0
+; VI-NEXT:    v_readlane_b32 s31, v20, 17
+; VI-NEXT:    v_readlane_b32 s67, v20, 15
+; VI-NEXT:    v_readlane_b32 s66, v20, 14
+; VI-NEXT:    v_readlane_b32 s65, v20, 13
+; VI-NEXT:    v_readlane_b32 s64, v20, 12
+; VI-NEXT:    v_readlane_b32 s55, v20, 11
+; VI-NEXT:    v_readlane_b32 s54, v20, 10
+; VI-NEXT:    v_readlane_b32 s53, v20, 9
+; VI-NEXT:    v_readlane_b32 s52, v20, 8
+; VI-NEXT:    v_readlane_b32 s51, v20, 7
+; VI-NEXT:    v_readlane_b32 s50, v20, 6
+; VI-NEXT:    v_readlane_b32 s49, v20, 5
+; VI-NEXT:    v_readlane_b32 s48, v20, 4
+; VI-NEXT:    v_readlane_b32 s39, v20, 3
+; VI-NEXT:    v_readlane_b32 s38, v20, 2
+; VI-NEXT:    v_readlane_b32 s37, v20, 1
+; VI-NEXT:    v_readlane_b32 s36, v20, 0
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v20, off, s[0:3], s32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v40i16_to_v10f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -26781,10 +27319,18 @@ define inreg <10 x double> @bitcast_v40i16_to_v10f64_scalar(<40 x i16> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s54, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_4
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -26805,10 +27351,8 @@ define inreg <10 x double> @bitcast_v40i16_to_v10f64_scalar(<40 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v17, s53, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v18, s54, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v19, s55, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB51_5
-; GFX9-NEXT:  .LBB51_3:
-; GFX9-NEXT:    s_branch .LBB51_2
-; GFX9-NEXT:  .LBB51_4:
+; GFX9-NEXT:    s_branch .LBB51_6
+; GFX9-NEXT:  .LBB51_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -26841,7 +27385,7 @@ define inreg <10 x double> @bitcast_v40i16_to_v10f64_scalar(<40 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB51_5: ; %end
+; GFX9-NEXT:  .LBB51_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -26908,11 +27452,16 @@ define inreg <10 x double> @bitcast_v40i16_to_v10f64_scalar(<40 x i16> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s18, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB51_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB51_4
-; GFX11-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB51_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -26934,8 +27483,6 @@ define inreg <10 x double> @bitcast_v40i16_to_v10f64_scalar(<40 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v18, s18, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v19, s19, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB51_3:
-; GFX11-NEXT:    s_branch .LBB51_2
 ; GFX11-NEXT:  .LBB51_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -27511,7 +28058,7 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_3
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s89, s9, 16
 ; SI-NEXT:    s_lshr_b32 s88, s7, 16
@@ -27533,8 +28080,36 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[58:59], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB53_4
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[62:63], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[62:63], -1
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr73
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr75
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[62:63], s[62:63], exec
+; SI-NEXT:    s_cselect_b32 s11, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s11, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[18:19], s[8:9], 1.0
 ; SI-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
 ; SI-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
@@ -27565,30 +28140,8 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; SI-NEXT:    v_lshrrev_b32_e32 v38, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v39, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v48, 16, v1
-; SI-NEXT:    s_branch .LBB53_5
-; SI-NEXT:  .LBB53_3:
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr73
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr75
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    s_branch .LBB53_2
-; SI-NEXT:  .LBB53_4:
+; SI-NEXT:    s_branch .LBB53_6
+; SI-NEXT:  .LBB53_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
@@ -27629,7 +28182,7 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v22, s14
 ; SI-NEXT:    v_mov_b32_e32 v21, s12
 ; SI-NEXT:    v_mov_b32_e32 v20, s10
-; SI-NEXT:  .LBB53_5: ; %end
+; SI-NEXT:  .LBB53_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v29, 16, v29
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v28
@@ -27703,7 +28256,7 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s5, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_3
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s12, s9, 16
 ; VI-NEXT:    s_lshr_b32 s46, s8, 16
@@ -27725,8 +28278,36 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; VI-NEXT:    s_lshr_b32 s62, s18, 16
 ; VI-NEXT:    s_lshr_b32 s45, s17, 16
 ; VI-NEXT:    s_lshr_b32 s63, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB53_4
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[10:11], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[10:11], -1
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; VI-NEXT:    s_cselect_b32 s10, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s10, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[18:19], s[8:9], 1.0
 ; VI-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
 ; VI-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
@@ -27757,30 +28338,8 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; VI-NEXT:    v_lshrrev_b32_e32 v35, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v39, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v37, 16, v0
-; VI-NEXT:    s_branch .LBB53_5
-; VI-NEXT:  .LBB53_3:
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    s_branch .LBB53_2
-; VI-NEXT:  .LBB53_4:
+; VI-NEXT:    s_branch .LBB53_6
+; VI-NEXT:  .LBB53_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
@@ -27821,7 +28380,7 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v26, s14
 ; VI-NEXT:    v_mov_b32_e32 v24, s13
 ; VI-NEXT:    v_mov_b32_e32 v22, s12
-; VI-NEXT:  .LBB53_5: ; %end
+; VI-NEXT:  .LBB53_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v37, 16, v37
 ; VI-NEXT:    v_lshlrev_b32_e32 v35, 16, v35
 ; VI-NEXT:    v_lshlrev_b32_e32 v33, 16, v33
@@ -27875,7 +28434,7 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s12, s9, 16
 ; GFX9-NEXT:    s_lshr_b32 s46, s8, 16
@@ -27897,8 +28456,36 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; GFX9-NEXT:    s_lshr_b32 s62, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s45, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_4
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[10:11], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[10:11], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; GFX9-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[8:9], 1.0
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
 ; GFX9-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
@@ -27929,30 +28516,8 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v35, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v39, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v37, 16, v0
-; GFX9-NEXT:    s_branch .LBB53_5
-; GFX9-NEXT:  .LBB53_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    s_branch .LBB53_2
-; GFX9-NEXT:  .LBB53_4:
+; GFX9-NEXT:    s_branch .LBB53_6
+; GFX9-NEXT:  .LBB53_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
@@ -27993,7 +28558,7 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s14
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s13
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s12
-; GFX9-NEXT:  .LBB53_5: ; %end
+; GFX9-NEXT:  .LBB53_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -28042,13 +28607,13 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s6, v2
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s8, 0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s6, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s7, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s6, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s8, s29, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s7, s29, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s28, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s9, s27, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s43, s26, 16
@@ -28066,9 +28631,36 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s57, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s40, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s58, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-TRUE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB53_3
+; GFX11-TRUE16-NEXT:  .LBB53_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-TRUE16-NEXT:  .LBB53_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[18:19], s[4:5], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[16:17], s[28:29], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[14:15], s[26:27], 1.0
@@ -28099,30 +28691,8 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v37, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB53_5
-; GFX11-TRUE16-NEXT:  .LBB53_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-TRUE16-NEXT:    s_branch .LBB53_2
-; GFX11-TRUE16-NEXT:  .LBB53_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB53_6
+; GFX11-TRUE16-NEXT:  .LBB53_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -28141,9 +28711,9 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s45 :: v_dual_mov_b32 v30, s11
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s44 :: v_dual_mov_b32 v28, s10
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s43 :: v_dual_mov_b32 v26, s9
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s42 :: v_dual_mov_b32 v24, s8
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v39, s40 :: v_dual_mov_b32 v22, s7
-; GFX11-TRUE16-NEXT:  .LBB53_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s42 :: v_dual_mov_b32 v24, s7
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v39, s40 :: v_dual_mov_b32 v22, s6
+; GFX11-TRUE16-NEXT:  .LBB53_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v37.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v39.l
@@ -28173,13 +28743,13 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s6, v2
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s8, 0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s6, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s7, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s6, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s8, s29, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s7, s29, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s28, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s9, s27, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s43, s26, 16
@@ -28197,9 +28767,36 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s57, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s40, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s58, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-FAKE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB53_3
+; GFX11-FAKE16-NEXT:  .LBB53_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s8, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-FAKE16-NEXT:  .LBB53_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[15:16], s[4:5], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[17:18], s[28:29], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[19:20], s[26:27], 1.0
@@ -28230,30 +28827,8 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v36, 16, v0
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v37, 16, v2
-; GFX11-FAKE16-NEXT:    s_branch .LBB53_5
-; GFX11-FAKE16-NEXT:  .LBB53_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-FAKE16-NEXT:    s_branch .LBB53_2
-; GFX11-FAKE16-NEXT:  .LBB53_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB53_6
+; GFX11-FAKE16-NEXT:  .LBB53_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v21, s16
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v7, s18
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v5, s20 :: v_dual_mov_b32 v12, s22
@@ -28273,8 +28848,8 @@ define inreg <40 x half> @bitcast_v10f64_to_v40f16_scalar(<10 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v38, s15 :: v_dual_mov_b32 v33, s12
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v34, s13 :: v_dual_mov_b32 v31, s11
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v30, s10 :: v_dual_mov_b32 v27, s9
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v26, s8 :: v_dual_mov_b32 v25, s7
-; GFX11-FAKE16-NEXT:  .LBB53_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v26, s7 :: v_dual_mov_b32 v25, s6
+; GFX11-FAKE16-NEXT:  .LBB53_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v21, 0xffff, v21
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v48, 0xffff, v0
@@ -29318,7 +29893,7 @@ define inreg <10 x double> @bitcast_v40f16_to_v10f64_scalar(<40 x half> inreg %a
 ; SI-NEXT:    s_lshr_b32 s74, s73, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v6
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -29380,8 +29955,17 @@ define inreg <10 x double> @bitcast_v40f16_to_v10f64_scalar(<40 x half> inreg %a
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s55, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s95
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s94
@@ -29542,11 +30126,8 @@ define inreg <10 x double> @bitcast_v40f16_to_v10f64_scalar(<40 x half> inreg %a
 ; SI-NEXT:    v_or_b32_e32 v18, v19, v18
 ; SI-NEXT:    v_lshlrev_b32_e32 v19, 16, v20
 ; SI-NEXT:    v_or_b32_e32 v19, v21, v19
-; SI-NEXT:    s_branch .LBB55_5
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:    s_branch .LBB55_6
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -29579,7 +30160,7 @@ define inreg <10 x double> @bitcast_v40f16_to_v10f64_scalar(<40 x half> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB55_5: ; %end
+; SI-NEXT:  .LBB55_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s67, v32, 15
 ; SI-NEXT:    v_readlane_b32 s66, v32, 14
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
@@ -29608,26 +30189,24 @@ define inreg <10 x double> @bitcast_v40f16_to_v10f64_scalar(<40 x half> inreg %a
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_store_dword v32, off, s[0:3], s32 ; 4-byte Folded Spill
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
-; VI-NEXT:    v_writelane_b32 v32, s34, 0
-; VI-NEXT:    v_writelane_b32 v32, s35, 1
-; VI-NEXT:    v_writelane_b32 v32, s36, 2
-; VI-NEXT:    v_writelane_b32 v32, s37, 3
-; VI-NEXT:    v_writelane_b32 v32, s38, 4
-; VI-NEXT:    v_writelane_b32 v32, s39, 5
-; VI-NEXT:    v_writelane_b32 v32, s48, 6
-; VI-NEXT:    v_writelane_b32 v32, s49, 7
-; VI-NEXT:    v_writelane_b32 v32, s50, 8
-; VI-NEXT:    v_writelane_b32 v32, s51, 9
-; VI-NEXT:    v_writelane_b32 v32, s52, 10
-; VI-NEXT:    v_writelane_b32 v32, s53, 11
-; VI-NEXT:    v_writelane_b32 v32, s54, 12
-; VI-NEXT:    v_writelane_b32 v32, s55, 13
-; VI-NEXT:    v_writelane_b32 v32, s64, 14
-; VI-NEXT:    v_writelane_b32 v32, s65, 15
-; VI-NEXT:    v_writelane_b32 v32, s66, 16
-; VI-NEXT:    v_writelane_b32 v32, s67, 17
-; VI-NEXT:    v_writelane_b32 v32, s30, 18
-; VI-NEXT:    v_writelane_b32 v32, s31, 19
+; VI-NEXT:    v_writelane_b32 v32, s36, 0
+; VI-NEXT:    v_writelane_b32 v32, s37, 1
+; VI-NEXT:    v_writelane_b32 v32, s38, 2
+; VI-NEXT:    v_writelane_b32 v32, s39, 3
+; VI-NEXT:    v_writelane_b32 v32, s48, 4
+; VI-NEXT:    v_writelane_b32 v32, s49, 5
+; VI-NEXT:    v_writelane_b32 v32, s50, 6
+; VI-NEXT:    v_writelane_b32 v32, s51, 7
+; VI-NEXT:    v_writelane_b32 v32, s52, 8
+; VI-NEXT:    v_writelane_b32 v32, s53, 9
+; VI-NEXT:    v_writelane_b32 v32, s54, 10
+; VI-NEXT:    v_writelane_b32 v32, s55, 11
+; VI-NEXT:    v_writelane_b32 v32, s64, 12
+; VI-NEXT:    v_writelane_b32 v32, s65, 13
+; VI-NEXT:    v_writelane_b32 v32, s66, 14
+; VI-NEXT:    v_writelane_b32 v32, s67, 15
+; VI-NEXT:    v_writelane_b32 v32, s30, 16
+; VI-NEXT:    v_writelane_b32 v32, s31, 17
 ; VI-NEXT:    v_readfirstlane_b32 s6, v5
 ; VI-NEXT:    v_readfirstlane_b32 s8, v4
 ; VI-NEXT:    v_readfirstlane_b32 s11, v3
@@ -29644,10 +30223,10 @@ define inreg <10 x double> @bitcast_v40f16_to_v10f64_scalar(<40 x half> inreg %a
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s12, s11, 16
@@ -29656,19 +30235,19 @@ define inreg <10 x double> @bitcast_v40f16_to_v10f64_scalar(<40 x half> inreg %a
 ; VI-NEXT:    s_lshr_b32 s78, s76, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v6
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -29718,22 +30297,31 @@ define inreg <10 x double> @bitcast_v40f16_to_v10f64_scalar(<40 x half> inreg %a
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v19, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s35
-; VI-NEXT:    v_mov_b32_e32 v2, s34
+; VI-NEXT:    v_mov_b32_e32 v0, s31
+; VI-NEXT:    v_mov_b32_e32 v2, s30
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v19
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v19
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s31
+; VI-NEXT:    v_mov_b32_e32 v2, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v19
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s30
+; VI-NEXT:    v_mov_b32_e32 v3, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v19
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
@@ -29801,11 +30389,8 @@ define inreg <10 x double> @bitcast_v40f16_to_v10f64_scalar(<40 x half> inreg %a
 ; VI-NEXT:    v_add_f16_sdwa v20, v20, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v19, s6, v19
 ; VI-NEXT:    v_or_b32_e32 v19, v19, v20
-; VI-NEXT:    s_branch .LBB55_5
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:    s_branch .LBB55_6
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -29838,27 +30423,25 @@ define inreg <10 x double> @bitcast_v40f16_to_v10f64_scalar(<40 x half> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB55_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 18
-; VI-NEXT:    v_readlane_b32 s31, v32, 19
-; VI-NEXT:    v_readlane_b32 s67, v32, 17
-; VI-NEXT:    v_readlane_b32 s66, v32, 16
-; VI-NEXT:    v_readlane_b32 s65, v32, 15
-; VI-NEXT:    v_readlane_b32 s64, v32, 14
-; VI-NEXT:    v_readlane_b32 s55, v32, 13
-; VI-NEXT:    v_readlane_b32 s54, v32, 12
-; VI-NEXT:    v_readlane_b32 s53, v32, 11
-; VI-NEXT:    v_readlane_b32 s52, v32, 10
-; VI-NEXT:    v_readlane_b32 s51, v32, 9
-; VI-NEXT:    v_readlane_b32 s50, v32, 8
-; VI-NEXT:    v_readlane_b32 s49, v32, 7
-; VI-NEXT:    v_readlane_b32 s48, v32, 6
-; VI-NEXT:    v_readlane_b32 s39, v32, 5
-; VI-NEXT:    v_readlane_b32 s38, v32, 4
-; VI-NEXT:    v_readlane_b32 s37, v32, 3
-; VI-NEXT:    v_readlane_b32 s36, v32, 2
-; VI-NEXT:    v_readlane_b32 s35, v32, 1
-; VI-NEXT:    v_readlane_b32 s34, v32, 0
+; VI-NEXT:  .LBB55_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 16
+; VI-NEXT:    v_readlane_b32 s31, v32, 17
+; VI-NEXT:    v_readlane_b32 s67, v32, 15
+; VI-NEXT:    v_readlane_b32 s66, v32, 14
+; VI-NEXT:    v_readlane_b32 s65, v32, 13
+; VI-NEXT:    v_readlane_b32 s64, v32, 12
+; VI-NEXT:    v_readlane_b32 s55, v32, 11
+; VI-NEXT:    v_readlane_b32 s54, v32, 10
+; VI-NEXT:    v_readlane_b32 s53, v32, 9
+; VI-NEXT:    v_readlane_b32 s52, v32, 8
+; VI-NEXT:    v_readlane_b32 s51, v32, 7
+; VI-NEXT:    v_readlane_b32 s50, v32, 6
+; VI-NEXT:    v_readlane_b32 s49, v32, 5
+; VI-NEXT:    v_readlane_b32 s48, v32, 4
+; VI-NEXT:    v_readlane_b32 s39, v32, 3
+; VI-NEXT:    v_readlane_b32 s38, v32, 2
+; VI-NEXT:    v_readlane_b32 s37, v32, 1
+; VI-NEXT:    v_readlane_b32 s36, v32, 0
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v32, off, s[0:3], s32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -29931,10 +30514,18 @@ define inreg <10 x double> @bitcast_v40f16_to_v10f64_scalar(<40 x half> inreg %a
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s53, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s54, s58, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s56, s57
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v19, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v19 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v19 op_sel_hi:[1,0]
@@ -29956,10 +30547,8 @@ define inreg <10 x double> @bitcast_v40f16_to_v10f64_scalar(<40 x half> inreg %a
 ; GFX9-NEXT:    v_pk_add_f16 v17, s53, v19 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v18, s54, v19 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v19, s55, v19 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB55_5
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:    s_branch .LBB55_6
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -29992,7 +30581,7 @@ define inreg <10 x double> @bitcast_v40f16_to_v10f64_scalar(<40 x half> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB55_5: ; %end
+; GFX9-NEXT:  .LBB55_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -30059,11 +30648,16 @@ define inreg <10 x double> @bitcast_v40f16_to_v10f64_scalar(<40 x half> inreg %a
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s17, s29, s41
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s18, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -30085,8 +30679,6 @@ define inreg <10 x double> @bitcast_v40f16_to_v10f64_scalar(<40 x half> inreg %a
 ; GFX11-NEXT:    v_pk_add_f16 v18, 0x200, s18 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v19, 0x200, s19 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -31018,206 +31610,232 @@ define inreg <40 x half> @bitcast_v40i16_to_v40f16_scalar(<40 x i16> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v20, s67, 17
 ; SI-NEXT:    v_writelane_b32 v20, s68, 18
 ; SI-NEXT:    v_writelane_b32 v20, s69, 19
-; SI-NEXT:    v_writelane_b32 v20, s70, 20
-; SI-NEXT:    v_writelane_b32 v20, s71, 21
-; SI-NEXT:    v_writelane_b32 v20, s30, 22
-; SI-NEXT:    v_writelane_b32 v20, s31, 23
-; SI-NEXT:    v_readfirstlane_b32 s69, v5
-; SI-NEXT:    v_readfirstlane_b32 s71, v4
-; SI-NEXT:    v_readfirstlane_b32 s66, v3
-; SI-NEXT:    v_readfirstlane_b32 s68, v2
-; SI-NEXT:    v_readfirstlane_b32 s55, v1
-; SI-NEXT:    v_readfirstlane_b32 s65, v0
-; SI-NEXT:    s_lshr_b32 s36, s29, 16
-; SI-NEXT:    s_lshr_b32 s54, s28, 16
-; SI-NEXT:    s_lshr_b32 s35, s27, 16
-; SI-NEXT:    s_lshr_b32 s53, s26, 16
-; SI-NEXT:    s_lshr_b32 s34, s25, 16
-; SI-NEXT:    s_lshr_b32 s52, s24, 16
-; SI-NEXT:    s_lshr_b32 s31, s23, 16
-; SI-NEXT:    s_lshr_b32 s51, s22, 16
-; SI-NEXT:    s_lshr_b32 s30, s21, 16
-; SI-NEXT:    s_lshr_b32 s50, s20, 16
+; SI-NEXT:    v_writelane_b32 v20, s30, 20
+; SI-NEXT:    v_writelane_b32 v20, s31, 21
+; SI-NEXT:    v_readfirstlane_b32 s67, v5
+; SI-NEXT:    v_readfirstlane_b32 s69, v4
+; SI-NEXT:    v_readfirstlane_b32 s64, v3
+; SI-NEXT:    v_readfirstlane_b32 s66, v2
+; SI-NEXT:    v_readfirstlane_b32 s53, v1
+; SI-NEXT:    v_readfirstlane_b32 s55, v0
+; SI-NEXT:    s_lshr_b32 s34, s29, 16
+; SI-NEXT:    s_lshr_b32 s52, s28, 16
+; SI-NEXT:    s_lshr_b32 s31, s27, 16
+; SI-NEXT:    s_lshr_b32 s51, s26, 16
+; SI-NEXT:    s_lshr_b32 s30, s25, 16
+; SI-NEXT:    s_lshr_b32 s50, s24, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s23, 16
+; SI-NEXT:    s_lshr_b32 s49, s22, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s21, 16
+; SI-NEXT:    s_lshr_b32 s48, s20, 16
 ; SI-NEXT:    s_lshr_b32 s95, s19, 16
-; SI-NEXT:    s_lshr_b32 s49, s18, 16
+; SI-NEXT:    s_lshr_b32 s39, s18, 16
 ; SI-NEXT:    s_lshr_b32 s94, s17, 16
-; SI-NEXT:    s_lshr_b32 s48, s16, 16
-; SI-NEXT:    s_lshr_b32 s39, s69, 16
-; SI-NEXT:    s_lshr_b32 s70, s71, 16
-; SI-NEXT:    s_lshr_b32 s38, s66, 16
-; SI-NEXT:    s_lshr_b32 s67, s68, 16
-; SI-NEXT:    s_lshr_b32 s37, s55, 16
-; SI-NEXT:    s_lshr_b32 s64, s65, 16
+; SI-NEXT:    s_lshr_b32 s38, s16, 16
+; SI-NEXT:    s_lshr_b32 s37, s67, 16
+; SI-NEXT:    s_lshr_b32 s68, s69, 16
+; SI-NEXT:    s_lshr_b32 s36, s64, 16
+; SI-NEXT:    s_lshr_b32 s65, s66, 16
+; SI-NEXT:    s_lshr_b32 s35, s53, 16
+; SI-NEXT:    s_lshr_b32 s54, s55, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v6
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s94, 16
-; SI-NEXT:    s_or_b32 s47, s5, s7
+; SI-NEXT:    s_and_b32 s4, s16, 0xffff
+; SI-NEXT:    s_lshl_b32 s56, s38, 16
+; SI-NEXT:    s_or_b32 s57, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s95, 16
-; SI-NEXT:    s_or_b32 s43, s5, s7
+; SI-NEXT:    s_or_b32 s42, s4, s56
+; SI-NEXT:    s_and_b32 s4, s18, 0xffff
+; SI-NEXT:    s_lshl_b32 s58, s39, 16
+; SI-NEXT:    s_or_b32 s59, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s30, 16
-; SI-NEXT:    s_or_b32 s41, s5, s7
+; SI-NEXT:    s_lshl_b32 s7, vcc_lo, 16
+; SI-NEXT:    s_or_b32 s40, s4, s58
+; SI-NEXT:    s_and_b32 s4, s20, 0xffff
+; SI-NEXT:    s_lshl_b32 s60, s48, 16
+; SI-NEXT:    s_or_b32 s61, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s31, 16
-; SI-NEXT:    s_or_b32 s15, s5, s7
+; SI-NEXT:    s_lshl_b32 s7, vcc_hi, 16
+; SI-NEXT:    s_or_b32 s14, s4, s60
+; SI-NEXT:    s_and_b32 s4, s22, 0xffff
+; SI-NEXT:    s_lshl_b32 s62, s49, 16
+; SI-NEXT:    s_or_b32 s63, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s34, 16
-; SI-NEXT:    s_or_b32 s13, s5, s7
+; SI-NEXT:    s_lshl_b32 s7, s30, 16
+; SI-NEXT:    s_or_b32 s12, s4, s62
+; SI-NEXT:    s_and_b32 s4, s24, 0xffff
+; SI-NEXT:    s_lshl_b32 s72, s50, 16
+; SI-NEXT:    s_or_b32 s73, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s35, 16
-; SI-NEXT:    s_or_b32 s11, s5, s7
+; SI-NEXT:    s_lshl_b32 s7, s31, 16
+; SI-NEXT:    s_or_b32 s10, s4, s72
+; SI-NEXT:    s_and_b32 s4, s26, 0xffff
+; SI-NEXT:    s_lshl_b32 s74, s51, 16
+; SI-NEXT:    s_or_b32 s75, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s29, 0xffff
+; SI-NEXT:    s_lshl_b32 s7, s34, 16
+; SI-NEXT:    s_or_b32 s8, s4, s74
+; SI-NEXT:    s_and_b32 s4, s28, 0xffff
+; SI-NEXT:    s_lshl_b32 s76, s52, 16
+; SI-NEXT:    s_or_b32 s77, s5, s7
+; SI-NEXT:    s_and_b32 s5, s53, 0xffff
+; SI-NEXT:    s_lshl_b32 s7, s35, 16
+; SI-NEXT:    s_or_b32 s6, s4, s76
+; SI-NEXT:    s_and_b32 s4, s55, 0xffff
+; SI-NEXT:    s_lshl_b32 s46, s54, 16
+; SI-NEXT:    s_or_b32 s47, s5, s7
+; SI-NEXT:    s_and_b32 s5, s64, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s36, 16
-; SI-NEXT:    s_or_b32 s9, s5, s7
-; SI-NEXT:    s_and_b32 s5, s55, 0xffff
+; SI-NEXT:    s_or_b32 s4, s4, s46
+; SI-NEXT:    s_lshl_b32 s44, s65, 16
+; SI-NEXT:    s_or_b32 s45, s5, s7
+; SI-NEXT:    s_and_b32 s5, s67, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s37, 16
-; SI-NEXT:    s_or_b32 s7, s5, s7
-; SI-NEXT:    s_and_b32 s5, s66, 0xffff
-; SI-NEXT:    s_lshl_b32 s45, s38, 16
-; SI-NEXT:    s_and_b32 s44, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s46, s48, 16
-; SI-NEXT:    s_or_b32 s5, s5, s45
-; SI-NEXT:    s_and_b32 s45, s69, 0xffff
-; SI-NEXT:    s_lshl_b32 s56, s39, 16
-; SI-NEXT:    s_lshl_b32 s42, s49, 16
-; SI-NEXT:    s_or_b32 s91, s45, s56
-; SI-NEXT:    s_or_b32 s44, s44, s46
-; SI-NEXT:    s_lshr_b64 s[56:57], s[46:47], 16
-; SI-NEXT:    s_and_b32 s46, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s40, s50, 16
-; SI-NEXT:    s_or_b32 s46, s46, s42
-; SI-NEXT:    s_lshr_b64 s[58:59], s[42:43], 16
-; SI-NEXT:    s_and_b32 s42, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s14, s51, 16
-; SI-NEXT:    s_or_b32 s42, s42, s40
-; SI-NEXT:    s_lshr_b64 s[60:61], s[40:41], 16
-; SI-NEXT:    s_and_b32 s40, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s12, s52, 16
-; SI-NEXT:    s_or_b32 s40, s40, s14
-; SI-NEXT:    s_lshr_b64 s[62:63], s[14:15], 16
-; SI-NEXT:    s_and_b32 s14, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s10, s53, 16
-; SI-NEXT:    s_or_b32 s14, s14, s12
-; SI-NEXT:    s_lshr_b64 s[72:73], s[12:13], 16
-; SI-NEXT:    s_and_b32 s12, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s8, s54, 16
-; SI-NEXT:    s_or_b32 s12, s12, s10
-; SI-NEXT:    s_lshr_b64 s[74:75], s[10:11], 16
-; SI-NEXT:    s_and_b32 s10, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s6, s64, 16
-; SI-NEXT:    s_or_b32 s10, s10, s8
-; SI-NEXT:    s_lshr_b64 s[76:77], s[8:9], 16
-; SI-NEXT:    s_and_b32 s8, s65, 0xffff
-; SI-NEXT:    s_lshl_b32 s4, s67, 16
-; SI-NEXT:    s_or_b32 s8, s8, s6
-; SI-NEXT:    s_lshr_b64 s[78:79], s[6:7], 16
-; SI-NEXT:    s_and_b32 s6, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s90, s70, 16
-; SI-NEXT:    s_or_b32 s6, s6, s4
-; SI-NEXT:    s_lshr_b64 s[88:89], s[4:5], 16
-; SI-NEXT:    s_and_b32 s4, s71, 0xffff
-; SI-NEXT:    s_mov_b32 s45, s47
-; SI-NEXT:    s_mov_b32 s47, s43
-; SI-NEXT:    s_mov_b32 s43, s41
-; SI-NEXT:    s_mov_b32 s41, s15
-; SI-NEXT:    s_mov_b32 s15, s13
-; SI-NEXT:    s_mov_b32 s13, s11
-; SI-NEXT:    s_mov_b32 s11, s9
-; SI-NEXT:    s_mov_b32 s9, s7
-; SI-NEXT:    s_mov_b32 s7, s5
-; SI-NEXT:    s_or_b32 s4, s4, s90
-; SI-NEXT:    s_mov_b32 s5, s91
+; SI-NEXT:    s_lshr_b64 s[78:79], s[46:47], 16
+; SI-NEXT:    s_and_b32 s46, s66, 0xffff
+; SI-NEXT:    s_or_b32 s91, s5, s7
+; SI-NEXT:    s_lshl_b32 s90, s68, 16
+; SI-NEXT:    s_or_b32 s46, s46, s44
+; SI-NEXT:    s_lshr_b64 s[88:89], s[44:45], 16
+; SI-NEXT:    s_and_b32 s44, s69, 0xffff
+; SI-NEXT:    s_mov_b32 s43, s57
+; SI-NEXT:    s_lshr_b64 s[56:57], s[56:57], 16
+; SI-NEXT:    s_mov_b32 s41, s59
+; SI-NEXT:    s_lshr_b64 s[58:59], s[58:59], 16
+; SI-NEXT:    s_mov_b32 s15, s61
+; SI-NEXT:    s_lshr_b64 s[60:61], s[60:61], 16
+; SI-NEXT:    s_mov_b32 s13, s63
+; SI-NEXT:    s_lshr_b64 s[62:63], s[62:63], 16
+; SI-NEXT:    s_mov_b32 s11, s73
+; SI-NEXT:    s_lshr_b64 s[72:73], s[72:73], 16
+; SI-NEXT:    s_mov_b32 s9, s75
+; SI-NEXT:    s_lshr_b64 s[74:75], s[74:75], 16
+; SI-NEXT:    s_mov_b32 s7, s77
+; SI-NEXT:    s_lshr_b64 s[76:77], s[76:77], 16
+; SI-NEXT:    s_mov_b32 s5, s47
+; SI-NEXT:    s_mov_b32 s47, s45
+; SI-NEXT:    s_or_b32 s44, s44, s90
+; SI-NEXT:    s_mov_b32 s45, s91
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[90:91], 16
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
-; SI-NEXT:    s_add_i32 s71, s71, 3
-; SI-NEXT:    s_and_b32 s4, s71, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_mov_b64 s[92:93], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[92:93], -1
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[92:93], s[92:93], exec
+; SI-NEXT:    s_cselect_b32 s57, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s57, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s69, s69, 3
+; SI-NEXT:    s_and_b32 s4, s69, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_add_i32 s67, s67, 3
+; SI-NEXT:    s_add_i32 s44, s4, 0x30000
+; SI-NEXT:    s_and_b32 s4, s67, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s37, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s5, s69, 0xffff
-; SI-NEXT:    s_lshl_b32 s6, s39, 16
-; SI-NEXT:    s_add_i32 s68, s68, 3
-; SI-NEXT:    s_or_b32 s5, s6, s5
-; SI-NEXT:    s_and_b32 s6, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s67, 16
 ; SI-NEXT:    s_add_i32 s66, s66, 3
-; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_and_b32 s7, s66, 0xffff
-; SI-NEXT:    s_lshl_b32 s8, s38, 16
-; SI-NEXT:    s_add_i32 s65, s65, 3
-; SI-NEXT:    s_or_b32 s7, s8, s7
-; SI-NEXT:    s_and_b32 s8, s65, 0xffff
-; SI-NEXT:    s_lshl_b32 s9, s64, 16
+; SI-NEXT:    s_add_i32 s45, s4, 0x30000
+; SI-NEXT:    s_and_b32 s4, s66, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s65, 16
+; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_add_i32 s64, s64, 3
+; SI-NEXT:    s_add_i32 s46, s4, 0x30000
+; SI-NEXT:    s_and_b32 s4, s64, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s36, 16
+; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s55, s55, 3
-; SI-NEXT:    s_or_b32 s8, s9, s8
-; SI-NEXT:    s_and_b32 s9, s55, 0xffff
-; SI-NEXT:    s_lshl_b32 s10, s37, 16
+; SI-NEXT:    s_add_i32 s47, s4, 0x30000
+; SI-NEXT:    s_and_b32 s4, s55, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s54, 16
+; SI-NEXT:    s_add_i32 s53, s53, 3
+; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_and_b32 s5, s53, 0xffff
+; SI-NEXT:    s_lshl_b32 s6, s35, 16
 ; SI-NEXT:    s_add_i32 s28, s28, 3
-; SI-NEXT:    s_or_b32 s9, s10, s9
-; SI-NEXT:    s_and_b32 s10, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s11, s54, 16
+; SI-NEXT:    s_or_b32 s5, s6, s5
+; SI-NEXT:    s_and_b32 s6, s28, 0xffff
+; SI-NEXT:    s_lshl_b32 s7, s52, 16
 ; SI-NEXT:    s_add_i32 s29, s29, 3
-; SI-NEXT:    s_or_b32 s10, s11, s10
-; SI-NEXT:    s_and_b32 s11, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s12, s36, 16
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    s_and_b32 s7, s29, 0xffff
+; SI-NEXT:    s_lshl_b32 s8, s34, 16
 ; SI-NEXT:    s_add_i32 s26, s26, 3
-; SI-NEXT:    s_or_b32 s11, s12, s11
-; SI-NEXT:    s_and_b32 s12, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s13, s53, 16
+; SI-NEXT:    s_or_b32 s7, s8, s7
+; SI-NEXT:    s_and_b32 s8, s26, 0xffff
+; SI-NEXT:    s_lshl_b32 s9, s51, 16
 ; SI-NEXT:    s_add_i32 s27, s27, 3
-; SI-NEXT:    s_or_b32 s12, s13, s12
-; SI-NEXT:    s_and_b32 s13, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s14, s35, 16
+; SI-NEXT:    s_or_b32 s8, s9, s8
+; SI-NEXT:    s_and_b32 s9, s27, 0xffff
+; SI-NEXT:    s_lshl_b32 s10, s31, 16
 ; SI-NEXT:    s_add_i32 s24, s24, 3
-; SI-NEXT:    s_or_b32 s13, s14, s13
-; SI-NEXT:    s_and_b32 s14, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s15, s52, 16
+; SI-NEXT:    s_or_b32 s9, s10, s9
+; SI-NEXT:    s_and_b32 s10, s24, 0xffff
+; SI-NEXT:    s_lshl_b32 s11, s50, 16
 ; SI-NEXT:    s_add_i32 s25, s25, 3
-; SI-NEXT:    s_or_b32 s14, s15, s14
-; SI-NEXT:    s_and_b32 s15, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s34, 16
+; SI-NEXT:    s_or_b32 s10, s11, s10
+; SI-NEXT:    s_and_b32 s11, s25, 0xffff
+; SI-NEXT:    s_lshl_b32 s12, s30, 16
 ; SI-NEXT:    s_add_i32 s22, s22, 3
-; SI-NEXT:    s_or_b32 s15, s24, s15
-; SI-NEXT:    s_and_b32 s22, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s51, 16
-; SI-NEXT:    s_or_b32 s22, s24, s22
+; SI-NEXT:    s_or_b32 s11, s12, s11
+; SI-NEXT:    s_and_b32 s12, s22, 0xffff
+; SI-NEXT:    s_lshl_b32 s13, s49, 16
 ; SI-NEXT:    s_add_i32 s23, s23, 3
-; SI-NEXT:    s_add_i32 s40, s22, 0x30000
-; SI-NEXT:    s_and_b32 s22, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s23, s31, 16
-; SI-NEXT:    s_or_b32 s22, s23, s22
+; SI-NEXT:    s_or_b32 s12, s13, s12
+; SI-NEXT:    s_and_b32 s13, s23, 0xffff
+; SI-NEXT:    s_lshl_b32 s14, vcc_hi, 16
 ; SI-NEXT:    s_add_i32 s20, s20, 3
-; SI-NEXT:    s_add_i32 s41, s22, 0x30000
-; SI-NEXT:    s_and_b32 s20, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s22, s50, 16
-; SI-NEXT:    s_or_b32 s20, s22, s20
+; SI-NEXT:    s_or_b32 s13, s14, s13
+; SI-NEXT:    s_and_b32 s14, s20, 0xffff
+; SI-NEXT:    s_lshl_b32 s15, s48, 16
 ; SI-NEXT:    s_add_i32 s21, s21, 3
-; SI-NEXT:    s_add_i32 s42, s20, 0x30000
-; SI-NEXT:    s_and_b32 s20, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s21, s30, 16
-; SI-NEXT:    s_or_b32 s20, s21, s20
+; SI-NEXT:    s_or_b32 s14, s15, s14
+; SI-NEXT:    s_and_b32 s15, s21, 0xffff
+; SI-NEXT:    s_lshl_b32 s20, vcc_lo, 16
 ; SI-NEXT:    s_add_i32 s18, s18, 3
-; SI-NEXT:    s_add_i32 s43, s20, 0x30000
+; SI-NEXT:    s_or_b32 s15, s20, s15
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s20, s49, 16
+; SI-NEXT:    s_lshl_b32 s20, s39, 16
 ; SI-NEXT:    s_or_b32 s18, s20, s18
 ; SI-NEXT:    s_add_i32 s19, s19, 3
-; SI-NEXT:    s_add_i32 s46, s18, 0x30000
+; SI-NEXT:    s_add_i32 s40, s18, 0x30000
 ; SI-NEXT:    s_and_b32 s18, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s19, s95, 16
 ; SI-NEXT:    s_or_b32 s18, s19, s18
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    s_add_i32 s47, s18, 0x30000
+; SI-NEXT:    s_add_i32 s41, s18, 0x30000
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s18, s48, 16
+; SI-NEXT:    s_lshl_b32 s18, s38, 16
 ; SI-NEXT:    s_or_b32 s16, s18, s16
 ; SI-NEXT:    s_add_i32 s17, s17, 3
-; SI-NEXT:    s_add_i32 s44, s16, 0x30000
+; SI-NEXT:    s_add_i32 s42, s16, 0x30000
 ; SI-NEXT:    s_and_b32 s16, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s17, s94, 16
 ; SI-NEXT:    s_or_b32 s16, s17, s16
@@ -31233,112 +31851,110 @@ define inreg <40 x half> @bitcast_v40i16_to_v40f16_scalar(<40 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s13, s13, 0x30000
 ; SI-NEXT:    s_add_i32 s14, s14, 0x30000
 ; SI-NEXT:    s_add_i32 s15, s15, 0x30000
-; SI-NEXT:    s_add_i32 s45, s16, 0x30000
-; SI-NEXT:    s_lshr_b64 s[56:57], s[44:45], 16
-; SI-NEXT:    s_lshr_b64 s[58:59], s[46:47], 16
-; SI-NEXT:    s_lshr_b64 s[60:61], s[42:43], 16
-; SI-NEXT:    s_lshr_b64 s[62:63], s[40:41], 16
-; SI-NEXT:    s_lshr_b64 s[72:73], s[14:15], 16
-; SI-NEXT:    s_lshr_b64 s[74:75], s[12:13], 16
-; SI-NEXT:    s_lshr_b64 s[76:77], s[10:11], 16
-; SI-NEXT:    s_lshr_b64 s[78:79], s[8:9], 16
-; SI-NEXT:    s_lshr_b64 s[88:89], s[6:7], 16
-; SI-NEXT:    s_lshr_b64 s[90:91], s[4:5], 16
-; SI-NEXT:    s_lshr_b32 s94, s45, 16
-; SI-NEXT:    s_lshr_b32 s95, s47, 16
-; SI-NEXT:    s_lshr_b32 s30, s43, 16
-; SI-NEXT:    s_lshr_b32 s31, s41, 16
-; SI-NEXT:    s_lshr_b32 s34, s15, 16
-; SI-NEXT:    s_lshr_b32 s35, s13, 16
-; SI-NEXT:    s_lshr_b32 s36, s11, 16
-; SI-NEXT:    s_lshr_b32 s37, s9, 16
-; SI-NEXT:    s_lshr_b32 s38, s7, 16
-; SI-NEXT:    s_lshr_b32 s39, s5, 16
-; SI-NEXT:  .LBB57_3: ; %end
-; SI-NEXT:    s_and_b32 s16, s44, 0xffff
+; SI-NEXT:    s_add_i32 s43, s16, 0x30000
+; SI-NEXT:    s_lshr_b64 s[56:57], s[42:43], 16
+; SI-NEXT:    s_lshr_b64 s[58:59], s[40:41], 16
+; SI-NEXT:    s_lshr_b64 s[60:61], s[14:15], 16
+; SI-NEXT:    s_lshr_b64 s[62:63], s[12:13], 16
+; SI-NEXT:    s_lshr_b64 s[72:73], s[10:11], 16
+; SI-NEXT:    s_lshr_b64 s[74:75], s[8:9], 16
+; SI-NEXT:    s_lshr_b64 s[76:77], s[6:7], 16
+; SI-NEXT:    s_lshr_b64 s[78:79], s[4:5], 16
+; SI-NEXT:    s_lshr_b64 s[88:89], s[46:47], 16
+; SI-NEXT:    s_lshr_b64 s[90:91], s[44:45], 16
+; SI-NEXT:    s_lshr_b32 s94, s43, 16
+; SI-NEXT:    s_lshr_b32 s95, s41, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s15, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s13, 16
+; SI-NEXT:    s_lshr_b32 s30, s11, 16
+; SI-NEXT:    s_lshr_b32 s31, s9, 16
+; SI-NEXT:    s_lshr_b32 s34, s7, 16
+; SI-NEXT:    s_lshr_b32 s35, s5, 16
+; SI-NEXT:    s_lshr_b32 s36, s47, 16
+; SI-NEXT:    s_lshr_b32 s37, s45, 16
+; SI-NEXT:  .LBB57_5: ; %end
+; SI-NEXT:    s_and_b32 s16, s42, 0xffff
 ; SI-NEXT:    s_lshl_b32 s17, s56, 16
 ; SI-NEXT:    s_or_b32 s16, s16, s17
-; SI-NEXT:    s_and_b32 s17, s45, 0xffff
+; SI-NEXT:    s_and_b32 s17, s43, 0xffff
 ; SI-NEXT:    s_lshl_b32 s18, s94, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s18
-; SI-NEXT:    s_and_b32 s18, s46, 0xffff
+; SI-NEXT:    s_and_b32 s18, s40, 0xffff
 ; SI-NEXT:    s_lshl_b32 s19, s58, 16
 ; SI-NEXT:    s_or_b32 s18, s18, s19
-; SI-NEXT:    s_and_b32 s19, s47, 0xffff
+; SI-NEXT:    s_and_b32 s19, s41, 0xffff
 ; SI-NEXT:    s_lshl_b32 s20, s95, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s20
-; SI-NEXT:    s_and_b32 s20, s42, 0xffff
-; SI-NEXT:    s_lshl_b32 s21, s60, 16
-; SI-NEXT:    s_or_b32 s20, s20, s21
-; SI-NEXT:    s_and_b32 s21, s43, 0xffff
-; SI-NEXT:    s_lshl_b32 s22, s30, 16
-; SI-NEXT:    s_or_b32 s21, s21, s22
-; SI-NEXT:    s_and_b32 s22, s40, 0xffff
-; SI-NEXT:    s_lshl_b32 s23, s62, 16
-; SI-NEXT:    s_or_b32 s22, s22, s23
-; SI-NEXT:    s_and_b32 s23, s41, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s31, 16
-; SI-NEXT:    s_or_b32 s23, s23, s24
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s72, 16
-; SI-NEXT:    s_or_b32 s14, s14, s24
+; SI-NEXT:    s_lshl_b32 s20, s60, 16
+; SI-NEXT:    s_or_b32 s14, s14, s20
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s34, 16
-; SI-NEXT:    s_or_b32 s15, s15, s24
+; SI-NEXT:    s_lshl_b32 s20, vcc_lo, 16
+; SI-NEXT:    s_or_b32 s15, s15, s20
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s74, 16
-; SI-NEXT:    s_or_b32 s12, s12, s24
+; SI-NEXT:    s_lshl_b32 s20, s62, 16
+; SI-NEXT:    s_or_b32 s12, s12, s20
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s35, 16
-; SI-NEXT:    s_or_b32 s13, s13, s24
+; SI-NEXT:    s_lshl_b32 s20, vcc_hi, 16
+; SI-NEXT:    s_or_b32 s13, s13, s20
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s76, 16
-; SI-NEXT:    s_or_b32 s10, s10, s24
+; SI-NEXT:    s_lshl_b32 s20, s72, 16
+; SI-NEXT:    s_or_b32 s10, s10, s20
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s36, 16
-; SI-NEXT:    s_or_b32 s11, s11, s24
+; SI-NEXT:    s_lshl_b32 s20, s30, 16
+; SI-NEXT:    s_or_b32 s11, s11, s20
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s78, 16
-; SI-NEXT:    s_or_b32 s8, s8, s24
+; SI-NEXT:    s_lshl_b32 s20, s74, 16
+; SI-NEXT:    s_or_b32 s8, s8, s20
 ; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s37, 16
-; SI-NEXT:    s_or_b32 s9, s9, s24
+; SI-NEXT:    s_lshl_b32 s20, s31, 16
+; SI-NEXT:    s_or_b32 s9, s9, s20
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s88, 16
-; SI-NEXT:    s_or_b32 s6, s6, s24
+; SI-NEXT:    s_lshl_b32 s20, s76, 16
+; SI-NEXT:    s_or_b32 s6, s6, s20
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s38, 16
-; SI-NEXT:    s_or_b32 s7, s7, s24
+; SI-NEXT:    s_lshl_b32 s20, s34, 16
+; SI-NEXT:    s_or_b32 s7, s7, s20
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s90, 16
-; SI-NEXT:    s_or_b32 s4, s4, s24
+; SI-NEXT:    s_lshl_b32 s20, s78, 16
+; SI-NEXT:    s_or_b32 s4, s4, s20
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s39, 16
-; SI-NEXT:    s_or_b32 s5, s5, s24
-; SI-NEXT:    v_readlane_b32 s30, v20, 22
+; SI-NEXT:    s_lshl_b32 s20, s35, 16
+; SI-NEXT:    s_or_b32 s5, s5, s20
+; SI-NEXT:    s_and_b32 s20, s46, 0xffff
+; SI-NEXT:    s_lshl_b32 s21, s88, 16
+; SI-NEXT:    s_or_b32 s20, s20, s21
+; SI-NEXT:    s_and_b32 s21, s47, 0xffff
+; SI-NEXT:    s_lshl_b32 s22, s36, 16
+; SI-NEXT:    s_or_b32 s21, s21, s22
+; SI-NEXT:    s_and_b32 s22, s44, 0xffff
+; SI-NEXT:    s_lshl_b32 s23, s90, 16
+; SI-NEXT:    s_or_b32 s22, s22, s23
+; SI-NEXT:    s_and_b32 s23, s45, 0xffff
+; SI-NEXT:    s_lshl_b32 s24, s37, 16
+; SI-NEXT:    s_or_b32 s23, s23, s24
+; SI-NEXT:    v_readlane_b32 s30, v20, 20
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
-; SI-NEXT:    v_mov_b32_e32 v4, s20
-; SI-NEXT:    v_mov_b32_e32 v5, s21
-; SI-NEXT:    v_mov_b32_e32 v6, s22
-; SI-NEXT:    v_mov_b32_e32 v7, s23
-; SI-NEXT:    v_mov_b32_e32 v8, s14
-; SI-NEXT:    v_mov_b32_e32 v9, s15
-; SI-NEXT:    v_mov_b32_e32 v10, s12
-; SI-NEXT:    v_mov_b32_e32 v11, s13
-; SI-NEXT:    v_mov_b32_e32 v12, s10
-; SI-NEXT:    v_mov_b32_e32 v13, s11
-; SI-NEXT:    v_mov_b32_e32 v14, s8
-; SI-NEXT:    v_mov_b32_e32 v15, s9
-; SI-NEXT:    v_mov_b32_e32 v16, s6
-; SI-NEXT:    v_mov_b32_e32 v17, s7
-; SI-NEXT:    v_mov_b32_e32 v18, s4
-; SI-NEXT:    v_mov_b32_e32 v19, s5
-; SI-NEXT:    v_readlane_b32 s31, v20, 23
-; SI-NEXT:    v_readlane_b32 s71, v20, 21
-; SI-NEXT:    v_readlane_b32 s70, v20, 20
+; SI-NEXT:    v_mov_b32_e32 v4, s14
+; SI-NEXT:    v_mov_b32_e32 v5, s15
+; SI-NEXT:    v_mov_b32_e32 v6, s12
+; SI-NEXT:    v_mov_b32_e32 v7, s13
+; SI-NEXT:    v_mov_b32_e32 v8, s10
+; SI-NEXT:    v_mov_b32_e32 v9, s11
+; SI-NEXT:    v_mov_b32_e32 v10, s8
+; SI-NEXT:    v_mov_b32_e32 v11, s9
+; SI-NEXT:    v_mov_b32_e32 v12, s6
+; SI-NEXT:    v_mov_b32_e32 v13, s7
+; SI-NEXT:    v_mov_b32_e32 v14, s4
+; SI-NEXT:    v_mov_b32_e32 v15, s5
+; SI-NEXT:    v_mov_b32_e32 v16, s20
+; SI-NEXT:    v_mov_b32_e32 v17, s21
+; SI-NEXT:    v_mov_b32_e32 v18, s22
+; SI-NEXT:    v_mov_b32_e32 v19, s23
+; SI-NEXT:    v_readlane_b32 s31, v20, 21
 ; SI-NEXT:    v_readlane_b32 s69, v20, 19
 ; SI-NEXT:    v_readlane_b32 s68, v20, 18
 ; SI-NEXT:    v_readlane_b32 s67, v20, 17
@@ -31364,28 +31980,6 @@ define inreg <40 x half> @bitcast_v40i16_to_v40f16_scalar(<40 x i16> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v40i16_to_v40f16_scalar:
 ; VI:       ; %bb.0:
@@ -31418,10 +32012,18 @@ define inreg <40 x half> @bitcast_v40i16_to_v40f16_scalar(<40 x i16> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s47, s46, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v6
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_add_i32 s63, s63, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
@@ -31462,7 +32064,7 @@ define inreg <40 x half> @bitcast_v40i16_to_v40f16_scalar(<40 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s10, s10, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s6, s6, 3
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s63, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -31544,8 +32146,6 @@ define inreg <40 x half> @bitcast_v40i16_to_v40f16_scalar(<40 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v18, s9
 ; VI-NEXT:    v_mov_b32_e32 v19, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v40i16_to_v40f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -31578,10 +32178,18 @@ define inreg <40 x half> @bitcast_v40i16_to_v40f16_scalar(<40 x i16> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s44, s58, 16
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v6
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_4
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s63, s57
 ; GFX9-NEXT:    v_pk_add_u16 v19, s4, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s62, s56
@@ -31642,10 +32250,8 @@ define inreg <40 x half> @bitcast_v40i16_to_v40f16_scalar(<40 x i16> inreg %a, i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v22, 16, v17
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v21, 16, v18
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v20, 16, v19
-; GFX9-NEXT:    s_branch .LBB57_5
-; GFX9-NEXT:  .LBB57_3:
-; GFX9-NEXT:    s_branch .LBB57_2
-; GFX9-NEXT:  .LBB57_4:
+; GFX9-NEXT:    s_branch .LBB57_6
+; GFX9-NEXT:  .LBB57_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s63
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s62
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s61
@@ -31686,7 +32292,7 @@ define inreg <40 x half> @bitcast_v40i16_to_v40f16_scalar(<40 x i16> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v37, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v38, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v39, s6
-; GFX9-NEXT:  .LBB57_5: ; %end
+; GFX9-NEXT:  .LBB57_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -31757,11 +32363,16 @@ define inreg <40 x half> @bitcast_v40i16_to_v40f16_scalar(<40 x i16> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s56, 16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s58, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s58, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-TRUE16-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s58, -1
+; GFX11-TRUE16-NEXT:  .LBB57_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s47, s57, s47
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s46, s56, s46
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s29, s29, s45
@@ -31823,8 +32434,6 @@ define inreg <40 x half> @bitcast_v40i16_to_v40f16_scalar(<40 x i16> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v21, 16, v18
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v20, 16, v19
 ; GFX11-TRUE16-NEXT:    s_branch .LBB57_5
-; GFX11-TRUE16-NEXT:  .LBB57_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB57_2
 ; GFX11-TRUE16-NEXT:  .LBB57_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v19, s57 :: v_dual_mov_b32 v18, s56
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v17, s29 :: v_dual_mov_b32 v16, s28
@@ -31899,11 +32508,16 @@ define inreg <40 x half> @bitcast_v40i16_to_v40f16_scalar(<40 x i16> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s56, 16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s58, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s58, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-FAKE16-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s58, -1
+; GFX11-FAKE16-NEXT:  .LBB57_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s47, s57, s47
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s46, s56, s46
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s29, s29, s45
@@ -31965,8 +32579,6 @@ define inreg <40 x half> @bitcast_v40i16_to_v40f16_scalar(<40 x i16> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v21, 16, v16
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v20, 16, v15
 ; GFX11-FAKE16-NEXT:    s_branch .LBB57_5
-; GFX11-FAKE16-NEXT:  .LBB57_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB57_2
 ; GFX11-FAKE16-NEXT:  .LBB57_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v15, s57 :: v_dual_mov_b32 v16, s56
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v17, s29 :: v_dual_mov_b32 v18, s28
@@ -32748,10 +33360,18 @@ define inreg <40 x i16> @bitcast_v40f16_to_v40i16_scalar(<40 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s56, s8, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v6
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_3
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB59_4
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s63
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s62
@@ -32923,10 +33543,8 @@ define inreg <40 x i16> @bitcast_v40f16_to_v40i16_scalar(<40 x half> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[24:25], v[14:15], 16
 ; SI-NEXT:    v_lshr_b64 v[22:23], v[16:17], 16
 ; SI-NEXT:    v_lshr_b64 v[20:21], v[18:19], 16
-; SI-NEXT:    s_branch .LBB59_5
-; SI-NEXT:  .LBB59_3:
-; SI-NEXT:    s_branch .LBB59_2
-; SI-NEXT:  .LBB59_4:
+; SI-NEXT:    s_branch .LBB59_6
+; SI-NEXT:  .LBB59_5:
 ; SI-NEXT:    v_mov_b32_e32 v50, s58
 ; SI-NEXT:    v_mov_b32_e32 v40, s43
 ; SI-NEXT:    v_mov_b32_e32 v51, s47
@@ -32971,7 +33589,7 @@ define inreg <40 x i16> @bitcast_v40f16_to_v40i16_scalar(<40 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v24, s56
 ; SI-NEXT:    v_mov_b32_e32 v22, s45
 ; SI-NEXT:    v_mov_b32_e32 v20, s44
-; SI-NEXT:  .LBB59_5: ; %end
+; SI-NEXT:  .LBB59_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v38
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v48
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
@@ -33078,10 +33696,18 @@ define inreg <40 x i16> @bitcast_v40f16_to_v40i16_scalar(<40 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s63, s62, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v6
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_3
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_4
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v20, 0x200
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v20
 ; VI-NEXT:    v_add_f16_e32 v39, s43, v20
@@ -33123,10 +33749,8 @@ define inreg <40 x i16> @bitcast_v40f16_to_v40i16_scalar(<40 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v21, s47, v20
 ; VI-NEXT:    v_add_f16_e32 v19, s44, v20
 ; VI-NEXT:    v_add_f16_e32 v20, s45, v20
-; VI-NEXT:    s_branch .LBB59_5
-; VI-NEXT:  .LBB59_3:
-; VI-NEXT:    s_branch .LBB59_2
-; VI-NEXT:  .LBB59_4:
+; VI-NEXT:    s_branch .LBB59_6
+; VI-NEXT:  .LBB59_5:
 ; VI-NEXT:    v_mov_b32_e32 v20, s45
 ; VI-NEXT:    v_mov_b32_e32 v19, s44
 ; VI-NEXT:    v_mov_b32_e32 v21, s47
@@ -33167,7 +33791,7 @@ define inreg <40 x i16> @bitcast_v40f16_to_v40i16_scalar(<40 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v39, s43
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
-; VI-NEXT:  .LBB59_5: ; %end
+; VI-NEXT:  .LBB59_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v39, 16, v39
 ; VI-NEXT:    v_lshlrev_b32_e32 v38, 16, v38
 ; VI-NEXT:    v_lshlrev_b32_e32 v37, 16, v37
@@ -33241,10 +33865,18 @@ define inreg <40 x i16> @bitcast_v40f16_to_v40i16_scalar(<40 x half> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s44, s58, 16
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v6
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_4
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s63, s57
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v19, s4, v0 op_sel_hi:[1,0]
@@ -33306,10 +33938,8 @@ define inreg <40 x i16> @bitcast_v40f16_to_v40i16_scalar(<40 x half> inreg %a, i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v22, 16, v17
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v21, 16, v18
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v20, 16, v19
-; GFX9-NEXT:    s_branch .LBB59_5
-; GFX9-NEXT:  .LBB59_3:
-; GFX9-NEXT:    s_branch .LBB59_2
-; GFX9-NEXT:  .LBB59_4:
+; GFX9-NEXT:    s_branch .LBB59_6
+; GFX9-NEXT:  .LBB59_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s63
 ; GFX9-NEXT:    v_mov_b32_e32 v18, s62
 ; GFX9-NEXT:    v_mov_b32_e32 v17, s61
@@ -33350,7 +33980,7 @@ define inreg <40 x i16> @bitcast_v40f16_to_v40i16_scalar(<40 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v37, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v38, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v39, s6
-; GFX9-NEXT:  .LBB59_5: ; %end
+; GFX9-NEXT:  .LBB59_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -33421,11 +34051,16 @@ define inreg <40 x i16> @bitcast_v40f16_to_v40i16_scalar(<40 x half> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s56, 16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s58, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s58, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-TRUE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s58, -1
+; GFX11-TRUE16-NEXT:  .LBB59_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s47, s57, s47
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s46, s56, s46
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s29, s29, s45
@@ -33487,8 +34122,6 @@ define inreg <40 x i16> @bitcast_v40f16_to_v40i16_scalar(<40 x half> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v21, 16, v18
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v20, 16, v19
 ; GFX11-TRUE16-NEXT:    s_branch .LBB59_5
-; GFX11-TRUE16-NEXT:  .LBB59_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB59_2
 ; GFX11-TRUE16-NEXT:  .LBB59_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v19, s57 :: v_dual_mov_b32 v18, s56
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v17, s29 :: v_dual_mov_b32 v16, s28
@@ -33563,11 +34196,16 @@ define inreg <40 x i16> @bitcast_v40f16_to_v40i16_scalar(<40 x half> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s56, 16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s58, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s58, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s58
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-FAKE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s58, -1
+; GFX11-FAKE16-NEXT:  .LBB59_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s58, s58, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s58, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s58, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s47, s57, s47
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s46, s56, s46
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s29, s29, s45
@@ -33629,8 +34267,6 @@ define inreg <40 x i16> @bitcast_v40f16_to_v40i16_scalar(<40 x half> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v21, 16, v16
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v20, 16, v15
 ; GFX11-FAKE16-NEXT:    s_branch .LBB59_5
-; GFX11-FAKE16-NEXT:  .LBB59_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB59_2
 ; GFX11-FAKE16-NEXT:  .LBB59_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v15, s57 :: v_dual_mov_b32 v16, s56
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v17, s29 :: v_dual_mov_b32 v18, s28

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.64bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.64bit.ll
index 77c047f492cac..4443a087a2dd3 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.64bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.64bit.ll
@@ -86,71 +86,92 @@ define inreg double @bitcast_i64_to_f64_scalar(i64 inreg %a, i32 inreg %b) #0 {
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_i64_to_f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_i64_to_f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_i64_to_f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -244,15 +265,21 @@ define inreg i64 @bitcast_f64_to_i64_scalar(double inreg %a, i32 inreg %b) #0 {
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
@@ -261,15 +288,21 @@ define inreg i64 @bitcast_f64_to_i64_scalar(double inreg %a, i32 inreg %b) #0 {
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -278,15 +311,21 @@ define inreg i64 @bitcast_f64_to_i64_scalar(double inreg %a, i32 inreg %b) #0 {
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -296,15 +335,18 @@ define inreg i64 @bitcast_f64_to_i64_scalar(double inreg %a, i32 inreg %b) #0 {
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -405,71 +447,92 @@ define inreg <2 x i32> @bitcast_i64_to_v2i32_scalar(i64 inreg %a, i32 inreg %b)
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_i64_to_v2i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_i64_to_v2i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_i64_to_v2i32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -566,71 +629,92 @@ define inreg i64 @bitcast_v2i32_to_i64_scalar(<2 x i32> inreg %a, i32 inreg %b)
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v2i32_to_i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v2i32_to_i64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB7_3: ; %end
+; GFX9-NEXT:  .LBB7_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_4:
-; GFX9-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-LABEL: bitcast_v2i32_to_i64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_3
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB7_3: ; %end
+; GFX11-NEXT:  .LBB7_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_4:
-; GFX11-NEXT:    s_branch .LBB7_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -728,71 +812,92 @@ define inreg <2 x float> @bitcast_i64_to_v2f32_scalar(i64 inreg %a, i32 inreg %b
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_i64_to_v2f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_i64_to_v2f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_i64_to_v2f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -888,16 +993,22 @@ define inreg i64 @bitcast_v2f32_to_i64_scalar(<2 x float> inreg %a, i32 inreg %b
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
@@ -906,16 +1017,22 @@ define inreg i64 @bitcast_v2f32_to_i64_scalar(<2 x float> inreg %a, i32 inreg %b
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -924,16 +1041,22 @@ define inreg i64 @bitcast_v2f32_to_i64_scalar(<2 x float> inreg %a, i32 inreg %b
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -943,16 +1066,19 @@ define inreg i64 @bitcast_v2f32_to_i64_scalar(<2 x float> inreg %a, i32 inreg %b
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -1067,17 +1193,27 @@ define inreg <4 x i16> @bitcast_i64_to_v4i16_scalar(i64 inreg %a, i32 inreg %b)
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 16
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
@@ -1087,63 +1223,74 @@ define inreg <4 x i16> @bitcast_i64_to_v4i16_scalar(i64 inreg %a, i32 inreg %b)
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_i64_to_v4i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_i64_to_v4i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB13_3: ; %end
+; GFX9-NEXT:  .LBB13_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_i64_to_v4i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB13_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1276,7 +1423,7 @@ define inreg i64 @bitcast_v4i16_to_i64_scalar(<4 x i16> inreg %a, i32 inreg %b)
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b32 s9, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s9, 16
@@ -1284,8 +1431,17 @@ define inreg i64 @bitcast_v4i16_to_i64_scalar(<4 x i16> inreg %a, i32 inreg %b)
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s8, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s9, 16
@@ -1296,22 +1452,27 @@ define inreg i64 @bitcast_v4i16_to_i64_scalar(<4 x i16> inreg %a, i32 inreg %b)
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_add_i32 s4, s4, 0x30000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
+; SI-NEXT:  .LBB15_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v4i16_to_i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s17, 3
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -1322,27 +1483,31 @@ define inreg i64 @bitcast_v4i16_to_i64_scalar(<4 x i16> inreg %a, i32 inreg %b)
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
+; VI-NEXT:  .LBB15_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v4i16_to_i64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -1352,16 +1517,19 @@ define inreg i64 @bitcast_v4i16_to_i64_scalar(<4 x i16> inreg %a, i32 inreg %b)
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -1476,17 +1644,27 @@ define inreg <4 x half> @bitcast_i64_to_v4f16_scalar(i64 inreg %a, i32 inreg %b)
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 16
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
@@ -1496,63 +1674,74 @@ define inreg <4 x half> @bitcast_i64_to_v4f16_scalar(i64 inreg %a, i32 inreg %b)
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_i64_to_v4f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_i64_to_v4f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_i64_to_v4f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB17_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1694,7 +1883,7 @@ define inreg i64 @bitcast_v4f16_to_i64_scalar(<4 x half> inreg %a, i32 inreg %b)
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b32 s9, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s9, 16
@@ -1702,8 +1891,17 @@ define inreg i64 @bitcast_v4f16_to_i64_scalar(<4 x half> inreg %a, i32 inreg %b)
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s8, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s9
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s8
@@ -1721,10 +1919,7 @@ define inreg i64 @bitcast_v4f16_to_i64_scalar(<4 x half> inreg %a, i32 inreg %b)
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
@@ -1733,10 +1928,18 @@ define inreg i64 @bitcast_v4f16_to_i64_scalar(<4 x half> inreg %a, i32 inreg %b)
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -1749,9 +1952,7 @@ define inreg i64 @bitcast_v4f16_to_i64_scalar(<4 x half> inreg %a, i32 inreg %b)
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v2
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -1760,17 +1961,23 @@ define inreg i64 @bitcast_v4f16_to_i64_scalar(<4 x half> inreg %a, i32 inreg %b)
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -1780,16 +1987,19 @@ define inreg i64 @bitcast_v4f16_to_i64_scalar(<4 x half> inreg %a, i32 inreg %b)
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -1914,21 +2124,33 @@ define inreg <4 x bfloat> @bitcast_i64_to_v4bf16_scalar(i64 inreg %a, i32 inreg
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_4
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s7, s17, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s17, 16
 ; SI-NEXT:    s_and_b32 s9, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s8, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB21_3
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s16, 3
 ; SI-NEXT:    s_addc_u32 s5, s17, 0
 ; SI-NEXT:    s_and_b32 s7, s5, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s5, 16
 ; SI-NEXT:    s_and_b32 s9, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s8, s4, 16
-; SI-NEXT:  .LBB21_3: ; %end
+; SI-NEXT:  .LBB21_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s9
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s8
@@ -1938,65 +2160,74 @@ define inreg <4 x bfloat> @bitcast_i64_to_v4bf16_scalar(i64 inreg %a, i32 inreg
 ; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB21_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB21_2
 ;
 ; VI-LABEL: bitcast_i64_to_v4bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_4
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_3
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB21_3: ; %end
+; VI-NEXT:  .LBB21_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB21_4:
-; VI-NEXT:    s_branch .LBB21_2
 ;
 ; GFX9-LABEL: bitcast_i64_to_v4bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_3
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB21_3: ; %end
+; GFX9-NEXT:  .LBB21_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB21_4:
-; GFX9-NEXT:    s_branch .LBB21_2
 ;
 ; GFX11-LABEL: bitcast_i64_to_v4bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_3
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB21_3: ; %end
+; GFX11-NEXT:  .LBB21_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB21_4:
-; GFX11-NEXT:    s_branch .LBB21_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2292,14 +2523,23 @@ define inreg i64 @bitcast_v4bf16_to_i64_scalar(<4 x bfloat> inreg %a, i32 inreg
 ; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v8
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[5:6], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v7
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[3:4], 16
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v8
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v5
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -2312,20 +2552,25 @@ define inreg i64 @bitcast_v4bf16_to_i64_scalar(<4 x bfloat> inreg %a, i32 inreg
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v4bf16_to_i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_3
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_4
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v4, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v4
@@ -2365,9 +2610,7 @@ define inreg i64 @bitcast_v4bf16_to_i64_scalar(<4 x bfloat> inreg %a, i32 inreg
 ; VI-NEXT:    v_lshrrev_b64 v[0:1], 16, v[0:1]
 ; VI-NEXT:    v_mov_b32_e32 v1, v2
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_3:
-; VI-NEXT:    s_branch .LBB23_2
-; VI-NEXT:  .LBB23_4:
+; VI-NEXT:  .LBB23_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -2376,10 +2619,18 @@ define inreg i64 @bitcast_v4bf16_to_i64_scalar(<4 x bfloat> inreg %a, i32 inreg
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_4
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -2421,9 +2672,7 @@ define inreg i64 @bitcast_v4bf16_to_i64_scalar(<4 x bfloat> inreg %a, i32 inreg
 ; GFX9-NEXT:    v_and_b32_sdwa v1, v3, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v1, v2, 16, v1
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_3:
-; GFX9-NEXT:    s_branch .LBB23_2
-; GFX9-NEXT:  .LBB23_4:
+; GFX9-NEXT:  .LBB23_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -2433,11 +2682,16 @@ define inreg i64 @bitcast_v4bf16_to_i64_scalar(<4 x bfloat> inreg %a, i32 inreg
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB23_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB23_4
-; GFX11-TRUE16-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-TRUE16-NEXT:  .LBB23_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s2, 0, s0
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -2479,8 +2733,6 @@ define inreg i64 @bitcast_v4bf16_to_i64_scalar(<4 x bfloat> inreg %a, i32 inreg
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v2
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v3.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB23_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB23_2
 ; GFX11-TRUE16-NEXT:  .LBB23_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -2490,11 +2742,16 @@ define inreg i64 @bitcast_v4bf16_to_i64_scalar(<4 x bfloat> inreg %a, i32 inreg
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB23_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB23_4
-; GFX11-FAKE16-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-FAKE16-NEXT:  .LBB23_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s2, 0, s0
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -2540,8 +2797,6 @@ define inreg i64 @bitcast_v4bf16_to_i64_scalar(<4 x bfloat> inreg %a, i32 inreg
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v1, v3, 16, v2
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB23_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB23_2
 ; GFX11-FAKE16-NEXT:  .LBB23_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -2779,7 +3034,7 @@ define inreg <8 x i8> @bitcast_i64_to_v8i8_scalar(i64 inreg %a, i32 inreg %b) #0
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_4
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s12, s17, 24
 ; SI-NEXT:    s_lshr_b32 s13, s17, 16
@@ -2787,8 +3042,22 @@ define inreg <8 x i8> @bitcast_i64_to_v8i8_scalar(i64 inreg %a, i32 inreg %b) #0
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB25_3
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_lshr_b32 s12, s17, 24
@@ -2797,7 +3066,7 @@ define inreg <8 x i8> @bitcast_i64_to_v8i8_scalar(i64 inreg %a, i32 inreg %b) #0
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 8
-; SI-NEXT:  .LBB25_3: ; %end
+; SI-NEXT:  .LBB25_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s8
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -2807,20 +3076,12 @@ define inreg <8 x i8> @bitcast_i64_to_v8i8_scalar(i64 inreg %a, i32 inreg %b) #0
 ; SI-NEXT:    v_mov_b32_e32 v6, s13
 ; SI-NEXT:    v_mov_b32_e32 v7, s12
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB25_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    s_branch .LBB25_2
 ;
 ; VI-LABEL: bitcast_i64_to_v8i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_4
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; VI-NEXT:    s_lshr_b32 s5, s17, 24
@@ -2828,8 +3089,22 @@ define inreg <8 x i8> @bitcast_i64_to_v8i8_scalar(i64 inreg %a, i32 inreg %b) #0
 ; VI-NEXT:    s_lshr_b32 s9, s17, 8
 ; VI-NEXT:    s_lshr_b32 s10, s16, 16
 ; VI-NEXT:    s_lshr_b32 s11, s16, 8
-; VI-NEXT:    s_cbranch_execnz .LBB25_3
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[6:7], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[6:7], -1
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr9
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr5
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; VI-NEXT:    s_cselect_b32 s6, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s6, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
@@ -2838,7 +3113,7 @@ define inreg <8 x i8> @bitcast_i64_to_v8i8_scalar(i64 inreg %a, i32 inreg %b) #0
 ; VI-NEXT:    s_lshr_b32 s9, s17, 8
 ; VI-NEXT:    s_lshr_b32 s10, s16, 16
 ; VI-NEXT:    s_lshr_b32 s11, s16, 8
-; VI-NEXT:  .LBB25_3: ; %end
+; VI-NEXT:  .LBB25_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s11
 ; VI-NEXT:    v_mov_b32_e32 v2, s10
@@ -2848,20 +3123,12 @@ define inreg <8 x i8> @bitcast_i64_to_v8i8_scalar(i64 inreg %a, i32 inreg %b) #0
 ; VI-NEXT:    v_mov_b32_e32 v6, s8
 ; VI-NEXT:    v_mov_b32_e32 v7, s5
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB25_4:
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr9
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr5
-; VI-NEXT:    s_branch .LBB25_2
 ;
 ; GFX9-LABEL: bitcast_i64_to_v8i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; GFX9-NEXT:    s_lshr_b32 s5, s17, 24
@@ -2869,8 +3136,22 @@ define inreg <8 x i8> @bitcast_i64_to_v8i8_scalar(i64 inreg %a, i32 inreg %b) #0
 ; GFX9-NEXT:    s_lshr_b32 s9, s17, 8
 ; GFX9-NEXT:    s_lshr_b32 s10, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s11, s16, 8
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_3
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[6:7], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[6:7], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr9
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr5
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX9-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
@@ -2879,7 +3160,7 @@ define inreg <8 x i8> @bitcast_i64_to_v8i8_scalar(i64 inreg %a, i32 inreg %b) #0
 ; GFX9-NEXT:    s_lshr_b32 s9, s17, 8
 ; GFX9-NEXT:    s_lshr_b32 s10, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s11, s16, 8
-; GFX9-NEXT:  .LBB25_3: ; %end
+; GFX9-NEXT:  .LBB25_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s11
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
@@ -2889,21 +3170,13 @@ define inreg <8 x i8> @bitcast_i64_to_v8i8_scalar(i64 inreg %a, i32 inreg %b) #0
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s5
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB25_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr9
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr5
-; GFX9-NEXT:    s_branch .LBB25_2
 ;
 ; GFX11-LABEL: bitcast_i64_to_v8i8_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b64 s[2:3], s[0:1], 24
 ; GFX11-NEXT:    s_lshr_b32 s3, s1, 24
@@ -2911,9 +3184,22 @@ define inreg <8 x i8> @bitcast_i64_to_v8i8_scalar(i64 inreg %a, i32 inreg %b) #0
 ; GFX11-NEXT:    s_lshr_b32 s5, s1, 8
 ; GFX11-NEXT:    s_lshr_b32 s6, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s7, s0, 8
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_3
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB25_3
+; GFX11-NEXT:  .LBB25_2:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr7
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr2
+; GFX11-NEXT:    ; implicit-def: $sgpr5
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr3
+; GFX11-NEXT:  .LBB25_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_lshr_b32 s6, s0, 16
@@ -2922,21 +3208,13 @@ define inreg <8 x i8> @bitcast_i64_to_v8i8_scalar(i64 inreg %a, i32 inreg %b) #0
 ; GFX11-NEXT:    s_lshr_b32 s4, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s5, s1, 8
 ; GFX11-NEXT:    s_lshr_b32 s7, s0, 8
-; GFX11-NEXT:  .LBB25_3: ; %end
+; GFX11-NEXT:  .LBB25_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s7
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s2
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s1 :: v_dual_mov_b32 v5, s5
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s4 :: v_dual_mov_b32 v7, s3
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB25_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr7
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr2
-; GFX11-NEXT:    ; implicit-def: $sgpr5
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr3
-; GFX11-NEXT:    s_branch .LBB25_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -3292,7 +3570,7 @@ define inreg i64 @bitcast_v8i8_to_i64_scalar(<8 x i8> inreg %a, i32 inreg %b) #0
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB27_4
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -3312,8 +3590,17 @@ define inreg i64 @bitcast_v8i8_to_i64_scalar(<8 x i8> inreg %a, i32 inreg %b) #0
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_cbranch_execnz .LBB27_3
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -3340,19 +3627,16 @@ define inreg i64 @bitcast_v8i8_to_i64_scalar(<8 x i8> inreg %a, i32 inreg %b) #0
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_add_i32 s4, s4, 0x3000000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
-; SI-NEXT:  .LBB27_3: ; %end
+; SI-NEXT:  .LBB27_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB27_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; SI-NEXT:    s_branch .LBB27_2
 ;
 ; VI-LABEL: bitcast_v8i8_to_i64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_4
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v2, s19
@@ -3367,8 +3651,17 @@ define inreg i64 @bitcast_v8i8_to_i64_scalar(<8 x i8> inreg %a, i32 inreg %b) #0
 ; VI-NEXT:    v_perm_b32 v1, s22, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v1, v2, v1
-; VI-NEXT:    s_cbranch_execnz .LBB27_3
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -3390,17 +3683,14 @@ define inreg i64 @bitcast_v8i8_to_i64_scalar(<8 x i8> inreg %a, i32 inreg %b) #0
 ; VI-NEXT:    v_or_b32_sdwa v1, v1, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
-; VI-NEXT:  .LBB27_3: ; %end
+; VI-NEXT:  .LBB27_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB27_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; VI-NEXT:    s_branch .LBB27_2
 ;
 ; GFX9-LABEL: bitcast_v8i8_to_i64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s19
@@ -3415,8 +3705,17 @@ define inreg i64 @bitcast_v8i8_to_i64_scalar(<8 x i8> inreg %a, i32 inreg %b) #0
 ; GFX9-NEXT:    v_perm_b32 v1, s22, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_or_b32_e32 v1, v2, v1
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_3
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -3437,18 +3736,15 @@ define inreg i64 @bitcast_v8i8_to_i64_scalar(<8 x i8> inreg %a, i32 inreg %b) #0
 ; GFX9-NEXT:    v_add_u32_e32 v2, 0x300, v2
 ; GFX9-NEXT:    v_add_u32_sdwa v1, v1, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB27_3: ; %end
+; GFX9-NEXT:  .LBB27_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB27_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX9-NEXT:    s_branch .LBB27_2
 ;
 ; GFX11-LABEL: bitcast_v8i8_to_i64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)
@@ -3462,9 +3758,17 @@ define inreg i64 @bitcast_v8i8_to_i64_scalar(<8 x i8> inreg %a, i32 inreg %b) #0
 ; GFX11-NEXT:    v_or_b32_e32 v0, v3, v0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_or_b32_e32 v1, v4, v1
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_3
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB27_3
+; GFX11-NEXT:  .LBB27_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GFX11-NEXT:  .LBB27_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -3489,11 +3793,8 @@ define inreg i64 @bitcast_v8i8_to_i64_scalar(<8 x i8> inreg %a, i32 inreg %b) #0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-NEXT:    v_or_b32_e32 v0, v1, v2
 ; GFX11-NEXT:    v_or_b32_e32 v1, v3, v4
-; GFX11-NEXT:  .LBB27_3: ; %end
+; GFX11-NEXT:  .LBB27_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB27_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX11-NEXT:    s_branch .LBB27_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -3587,15 +3888,21 @@ define inreg <2 x i32> @bitcast_f64_to_v2i32_scalar(double inreg %a, i32 inreg %
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
@@ -3604,15 +3911,21 @@ define inreg <2 x i32> @bitcast_f64_to_v2i32_scalar(double inreg %a, i32 inreg %
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -3621,15 +3934,21 @@ define inreg <2 x i32> @bitcast_f64_to_v2i32_scalar(double inreg %a, i32 inreg %
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -3639,15 +3958,18 @@ define inreg <2 x i32> @bitcast_f64_to_v2i32_scalar(double inreg %a, i32 inreg %
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB29_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB29_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB29_3:
-; GFX11-NEXT:    s_branch .LBB29_2
 ; GFX11-NEXT:  .LBB29_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -3747,71 +4069,92 @@ define inreg double @bitcast_v2i32_to_f64_scalar(<2 x i32> inreg %a, i32 inreg %
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_4
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB31_3
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB31_3: ; %end
+; SI-NEXT:  .LBB31_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_4:
-; SI-NEXT:    s_branch .LBB31_2
 ;
 ; VI-LABEL: bitcast_v2i32_to_f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_4
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB31_3
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB31_3: ; %end
+; VI-NEXT:  .LBB31_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_4:
-; VI-NEXT:    s_branch .LBB31_2
 ;
 ; GFX9-LABEL: bitcast_v2i32_to_f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_3
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB31_3: ; %end
+; GFX9-NEXT:  .LBB31_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB31_4:
-; GFX9-NEXT:    s_branch .LBB31_2
 ;
 ; GFX11-LABEL: bitcast_v2i32_to_f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_3
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB31_3: ; %end
+; GFX11-NEXT:  .LBB31_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_4:
-; GFX11-NEXT:    s_branch .LBB31_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -3905,15 +4248,21 @@ define inreg <2 x float> @bitcast_f64_to_v2f32_scalar(double inreg %a, i32 inreg
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
@@ -3922,15 +4271,21 @@ define inreg <2 x float> @bitcast_f64_to_v2f32_scalar(double inreg %a, i32 inreg
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -3939,15 +4294,21 @@ define inreg <2 x float> @bitcast_f64_to_v2f32_scalar(double inreg %a, i32 inreg
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -3957,15 +4318,18 @@ define inreg <2 x float> @bitcast_f64_to_v2f32_scalar(double inreg %a, i32 inreg
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB33_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB33_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB33_3:
-; GFX11-NEXT:    s_branch .LBB33_2
 ; GFX11-NEXT:  .LBB33_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -4064,16 +4428,22 @@ define inreg double @bitcast_v2f32_to_f64_scalar(<2 x float> inreg %a, i32 inreg
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_3
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB35_4
-; SI-NEXT:  .LBB35_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB35_3:
-; SI-NEXT:    s_branch .LBB35_2
-; SI-NEXT:  .LBB35_4:
+; SI-NEXT:  .LBB35_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
@@ -4082,16 +4452,22 @@ define inreg double @bitcast_v2f32_to_f64_scalar(<2 x float> inreg %a, i32 inreg
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -4100,16 +4476,22 @@ define inreg double @bitcast_v2f32_to_f64_scalar(<2 x float> inreg %a, i32 inreg
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -4119,16 +4501,19 @@ define inreg double @bitcast_v2f32_to_f64_scalar(<2 x float> inreg %a, i32 inreg
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -4239,26 +4624,32 @@ define inreg <4 x i16> @bitcast_f64_to_v4i16_scalar(double inreg %a, i32 inreg %
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_3
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB37_4
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[0:1], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
-; SI-NEXT:    s_branch .LBB37_5
-; SI-NEXT:  .LBB37_3:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB37_2
-; SI-NEXT:  .LBB37_4:
+; SI-NEXT:    s_branch .LBB37_6
+; SI-NEXT:  .LBB37_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v3, s8
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
-; SI-NEXT:  .LBB37_5: ; %end
+; SI-NEXT:  .LBB37_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
@@ -4271,15 +4662,21 @@ define inreg <4 x i16> @bitcast_f64_to_v4i16_scalar(double inreg %a, i32 inreg %
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_3
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_4
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_3:
-; VI-NEXT:    s_branch .LBB37_2
-; VI-NEXT:  .LBB37_4:
+; VI-NEXT:  .LBB37_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -4288,15 +4685,21 @@ define inreg <4 x i16> @bitcast_f64_to_v4i16_scalar(double inreg %a, i32 inreg %
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_4
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_3:
-; GFX9-NEXT:    s_branch .LBB37_2
-; GFX9-NEXT:  .LBB37_4:
+; GFX9-NEXT:  .LBB37_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -4306,15 +4709,18 @@ define inreg <4 x i16> @bitcast_f64_to_v4i16_scalar(double inreg %a, i32 inreg %
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_4
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_3:
-; GFX11-NEXT:    s_branch .LBB37_2
 ; GFX11-NEXT:  .LBB37_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -4450,7 +4856,7 @@ define inreg double @bitcast_v4i16_to_f64_scalar(<4 x i16> inreg %a, i32 inreg %
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b32 s9, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_4
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s9, 16
@@ -4458,8 +4864,17 @@ define inreg double @bitcast_v4i16_to_f64_scalar(<4 x i16> inreg %a, i32 inreg %
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s8, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_cbranch_execnz .LBB39_3
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s9, 16
@@ -4470,22 +4885,27 @@ define inreg double @bitcast_v4i16_to_f64_scalar(<4 x i16> inreg %a, i32 inreg %
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_add_i32 s4, s4, 0x30000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x30000
-; SI-NEXT:  .LBB39_3: ; %end
+; SI-NEXT:  .LBB39_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB39_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; SI-NEXT:    s_branch .LBB39_2
 ;
 ; VI-LABEL: bitcast_v4i16_to_f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_4
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_3
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s17, 3
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -4496,27 +4916,31 @@ define inreg double @bitcast_v4i16_to_f64_scalar(<4 x i16> inreg %a, i32 inreg %
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB39_3: ; %end
+; VI-NEXT:  .LBB39_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB39_4:
-; VI-NEXT:    s_branch .LBB39_2
 ;
 ; GFX9-LABEL: bitcast_v4i16_to_f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_4
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB39_3:
-; GFX9-NEXT:    s_branch .LBB39_2
-; GFX9-NEXT:  .LBB39_4:
+; GFX9-NEXT:  .LBB39_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -4526,16 +4950,19 @@ define inreg double @bitcast_v4i16_to_f64_scalar(<4 x i16> inreg %a, i32 inreg %
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB39_3:
-; GFX11-NEXT:    s_branch .LBB39_2
 ; GFX11-NEXT:  .LBB39_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -4646,26 +5073,32 @@ define inreg <4 x half> @bitcast_f64_to_v4f16_scalar(double inreg %a, i32 inreg
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_3
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB41_4
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[0:1], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
-; SI-NEXT:    s_branch .LBB41_5
-; SI-NEXT:  .LBB41_3:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB41_2
-; SI-NEXT:  .LBB41_4:
+; SI-NEXT:    s_branch .LBB41_6
+; SI-NEXT:  .LBB41_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v3, s8
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
-; SI-NEXT:  .LBB41_5: ; %end
+; SI-NEXT:  .LBB41_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
@@ -4678,15 +5111,21 @@ define inreg <4 x half> @bitcast_f64_to_v4f16_scalar(double inreg %a, i32 inreg
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_3
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB41_4
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_3:
-; VI-NEXT:    s_branch .LBB41_2
-; VI-NEXT:  .LBB41_4:
+; VI-NEXT:  .LBB41_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -4695,15 +5134,21 @@ define inreg <4 x half> @bitcast_f64_to_v4f16_scalar(double inreg %a, i32 inreg
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_4
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_3:
-; GFX9-NEXT:    s_branch .LBB41_2
-; GFX9-NEXT:  .LBB41_4:
+; GFX9-NEXT:  .LBB41_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -4713,15 +5158,18 @@ define inreg <4 x half> @bitcast_f64_to_v4f16_scalar(double inreg %a, i32 inreg
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_4
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB41_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_3:
-; GFX11-NEXT:    s_branch .LBB41_2
 ; GFX11-NEXT:  .LBB41_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -4866,7 +5314,7 @@ define inreg double @bitcast_v4f16_to_f64_scalar(<4 x half> inreg %a, i32 inreg
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b32 s9, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_3
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s9, 16
@@ -4874,8 +5322,17 @@ define inreg double @bitcast_v4f16_to_f64_scalar(<4 x half> inreg %a, i32 inreg
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s8, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_cbranch_execnz .LBB43_4
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s9
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s8
@@ -4893,10 +5350,7 @@ define inreg double @bitcast_v4f16_to_f64_scalar(<4 x half> inreg %a, i32 inreg
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB43_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; SI-NEXT:    s_branch .LBB43_2
-; SI-NEXT:  .LBB43_4:
+; SI-NEXT:  .LBB43_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
@@ -4905,10 +5359,18 @@ define inreg double @bitcast_v4f16_to_f64_scalar(<4 x half> inreg %a, i32 inreg
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_3
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB43_4
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -4921,9 +5383,7 @@ define inreg double @bitcast_v4f16_to_f64_scalar(<4 x half> inreg %a, i32 inreg
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v2
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_3:
-; VI-NEXT:    s_branch .LBB43_2
-; VI-NEXT:  .LBB43_4:
+; VI-NEXT:  .LBB43_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -4932,17 +5392,23 @@ define inreg double @bitcast_v4f16_to_f64_scalar(<4 x half> inreg %a, i32 inreg
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -4952,16 +5418,19 @@ define inreg double @bitcast_v4f16_to_f64_scalar(<4 x half> inreg %a, i32 inreg
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB43_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_3:
-; GFX11-NEXT:    s_branch .LBB43_2
 ; GFX11-NEXT:  .LBB43_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -5081,32 +5550,38 @@ define inreg <4 x bfloat> @bitcast_f64_to_v4bf16_scalar(double inreg %a, i32 inr
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_3
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s9, s17, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s8, s17, 16
 ; SI-NEXT:    s_and_b32 s7, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB45_4
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v1
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
-; SI-NEXT:    s_branch .LBB45_5
-; SI-NEXT:  .LBB45_3:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    s_branch .LBB45_2
-; SI-NEXT:  .LBB45_4:
+; SI-NEXT:    s_branch .LBB45_6
+; SI-NEXT:  .LBB45_5:
 ; SI-NEXT:    v_mov_b32_e32 v3, s9
 ; SI-NEXT:    v_mov_b32_e32 v2, s8
 ; SI-NEXT:    v_mov_b32_e32 v1, s7
 ; SI-NEXT:    v_mov_b32_e32 v0, s6
-; SI-NEXT:  .LBB45_5: ; %end
+; SI-NEXT:  .LBB45_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
@@ -5121,15 +5596,21 @@ define inreg <4 x bfloat> @bitcast_f64_to_v4bf16_scalar(double inreg %a, i32 inr
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_3
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB45_4
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_3:
-; VI-NEXT:    s_branch .LBB45_2
-; VI-NEXT:  .LBB45_4:
+; VI-NEXT:  .LBB45_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -5138,15 +5619,21 @@ define inreg <4 x bfloat> @bitcast_f64_to_v4bf16_scalar(double inreg %a, i32 inr
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_4
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_3:
-; GFX9-NEXT:    s_branch .LBB45_2
-; GFX9-NEXT:  .LBB45_4:
+; GFX9-NEXT:  .LBB45_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -5156,15 +5643,18 @@ define inreg <4 x bfloat> @bitcast_f64_to_v4bf16_scalar(double inreg %a, i32 inr
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_4
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB45_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[0:1], 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_3:
-; GFX11-NEXT:    s_branch .LBB45_2
 ; GFX11-NEXT:  .LBB45_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -5463,14 +5953,23 @@ define inreg double @bitcast_v4bf16_to_f64_scalar(<4 x bfloat> inreg %a, i32 inr
 ; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB47_4
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v8
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[5:6], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v7
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[3:4], 16
-; SI-NEXT:    s_cbranch_execnz .LBB47_3
-; SI-NEXT:  .LBB47_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v8
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v5
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -5483,20 +5982,25 @@ define inreg double @bitcast_v4bf16_to_f64_scalar(<4 x bfloat> inreg %a, i32 inr
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
-; SI-NEXT:  .LBB47_3: ; %end
+; SI-NEXT:  .LBB47_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB47_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; SI-NEXT:    s_branch .LBB47_2
 ;
 ; VI-LABEL: bitcast_v4bf16_to_f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v4, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v4
@@ -5536,9 +6040,7 @@ define inreg double @bitcast_v4bf16_to_f64_scalar(<4 x bfloat> inreg %a, i32 inr
 ; VI-NEXT:    v_lshrrev_b64 v[0:1], 16, v[0:1]
 ; VI-NEXT:    v_mov_b32_e32 v1, v2
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -5547,10 +6049,18 @@ define inreg double @bitcast_v4bf16_to_f64_scalar(<4 x bfloat> inreg %a, i32 inr
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -5592,9 +6102,7 @@ define inreg double @bitcast_v4bf16_to_f64_scalar(<4 x bfloat> inreg %a, i32 inr
 ; GFX9-NEXT:    v_and_b32_sdwa v1, v3, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v1, v2, 16, v1
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -5604,11 +6112,16 @@ define inreg double @bitcast_v4bf16_to_f64_scalar(<4 x bfloat> inreg %a, i32 inr
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-TRUE16-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-TRUE16-NEXT:  .LBB47_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s2, 0, s0
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -5650,8 +6163,6 @@ define inreg double @bitcast_v4bf16_to_f64_scalar(<4 x bfloat> inreg %a, i32 inr
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v2
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v3.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB47_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB47_2
 ; GFX11-TRUE16-NEXT:  .LBB47_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -5661,11 +6172,16 @@ define inreg double @bitcast_v4bf16_to_f64_scalar(<4 x bfloat> inreg %a, i32 inr
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-FAKE16-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-FAKE16-NEXT:  .LBB47_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s2, 0, s0
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -5711,8 +6227,6 @@ define inreg double @bitcast_v4bf16_to_f64_scalar(<4 x bfloat> inreg %a, i32 inr
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v1, v3, 16, v2
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB47_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB47_2
 ; GFX11-FAKE16-NEXT:  .LBB47_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -5943,7 +6457,7 @@ define inreg <8 x i8> @bitcast_f64_to_v8i8_scalar(double inreg %a, i32 inreg %b)
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_3
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s14, s17, 24
 ; SI-NEXT:    s_lshr_b32 s13, s17, 16
@@ -5951,8 +6465,22 @@ define inreg <8 x i8> @bitcast_f64_to_v8i8_scalar(double inreg %a, i32 inreg %b)
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB49_4
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[10:11], s[16:17], 1.0
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[10:11], 24
 ; SI-NEXT:    v_lshr_b64 v[8:9], v[10:11], 16
@@ -5960,16 +6488,8 @@ define inreg <8 x i8> @bitcast_f64_to_v8i8_scalar(double inreg %a, i32 inreg %b)
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v11
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v11
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 8, v11
-; SI-NEXT:    s_branch .LBB49_5
-; SI-NEXT:  .LBB49_3:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    s_branch .LBB49_2
-; SI-NEXT:  .LBB49_4:
+; SI-NEXT:    s_branch .LBB49_6
+; SI-NEXT:  .LBB49_5:
 ; SI-NEXT:    v_mov_b32_e32 v11, s17
 ; SI-NEXT:    v_mov_b32_e32 v10, s16
 ; SI-NEXT:    v_mov_b32_e32 v7, s14
@@ -5978,7 +6498,7 @@ define inreg <8 x i8> @bitcast_f64_to_v8i8_scalar(double inreg %a, i32 inreg %b)
 ; SI-NEXT:    v_mov_b32_e32 v1, s8
 ; SI-NEXT:    v_mov_b32_e32 v8, s6
 ; SI-NEXT:    v_mov_b32_e32 v3, s4
-; SI-NEXT:  .LBB49_5: ; %end
+; SI-NEXT:  .LBB49_6: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, v10
 ; SI-NEXT:    v_mov_b32_e32 v2, v8
 ; SI-NEXT:    v_mov_b32_e32 v4, v11
@@ -5988,7 +6508,7 @@ define inreg <8 x i8> @bitcast_f64_to_v8i8_scalar(double inreg %a, i32 inreg %b)
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_3
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; VI-NEXT:    s_lshr_b32 s9, s17, 24
@@ -5996,8 +6516,22 @@ define inreg <8 x i8> @bitcast_f64_to_v8i8_scalar(double inreg %a, i32 inreg %b)
 ; VI-NEXT:    s_lshr_b32 s5, s17, 8
 ; VI-NEXT:    s_lshr_b32 s11, s16, 16
 ; VI-NEXT:    s_lshr_b32 s10, s16, 8
-; VI-NEXT:    s_cbranch_execnz .LBB49_4
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[6:7], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[6:7], -1
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr5
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr9
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; VI-NEXT:    s_cselect_b32 s6, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s6, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[8:9], s[16:17], 1.0
 ; VI-NEXT:    v_lshrrev_b64 v[3:4], 24, v[8:9]
 ; VI-NEXT:    v_lshrrev_b32_e32 v7, 24, v9
@@ -6005,16 +6539,8 @@ define inreg <8 x i8> @bitcast_f64_to_v8i8_scalar(double inreg %a, i32 inreg %b)
 ; VI-NEXT:    v_lshrrev_b32_e32 v5, 8, v9
 ; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v8
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 8, v8
-; VI-NEXT:    s_branch .LBB49_5
-; VI-NEXT:  .LBB49_3:
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr5
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr9
-; VI-NEXT:    s_branch .LBB49_2
-; VI-NEXT:  .LBB49_4:
+; VI-NEXT:    s_branch .LBB49_6
+; VI-NEXT:  .LBB49_5:
 ; VI-NEXT:    v_mov_b32_e32 v8, s16
 ; VI-NEXT:    v_mov_b32_e32 v9, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s11
@@ -6023,7 +6549,7 @@ define inreg <8 x i8> @bitcast_f64_to_v8i8_scalar(double inreg %a, i32 inreg %b)
 ; VI-NEXT:    v_mov_b32_e32 v7, s9
 ; VI-NEXT:    v_mov_b32_e32 v6, s8
 ; VI-NEXT:    v_mov_b32_e32 v5, s5
-; VI-NEXT:  .LBB49_5: ; %end
+; VI-NEXT:  .LBB49_6: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, v8
 ; VI-NEXT:    v_mov_b32_e32 v4, v9
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -6032,7 +6558,7 @@ define inreg <8 x i8> @bitcast_f64_to_v8i8_scalar(double inreg %a, i32 inreg %b)
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; GFX9-NEXT:    s_lshr_b32 s9, s17, 24
@@ -6040,8 +6566,22 @@ define inreg <8 x i8> @bitcast_f64_to_v8i8_scalar(double inreg %a, i32 inreg %b)
 ; GFX9-NEXT:    s_lshr_b32 s5, s17, 8
 ; GFX9-NEXT:    s_lshr_b32 s11, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s10, s16, 8
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[6:7], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[6:7], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr5
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr9
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX9-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[8:9], s[16:17], 1.0
 ; GFX9-NEXT:    v_lshrrev_b64 v[3:4], 24, v[8:9]
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v7, 24, v9
@@ -6049,16 +6589,8 @@ define inreg <8 x i8> @bitcast_f64_to_v8i8_scalar(double inreg %a, i32 inreg %b)
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v9
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v8
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v8
-; GFX9-NEXT:    s_branch .LBB49_5
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr5
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr9
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:    s_branch .LBB49_6
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s11
@@ -6067,7 +6599,7 @@ define inreg <8 x i8> @bitcast_f64_to_v8i8_scalar(double inreg %a, i32 inreg %b)
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s9
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v5, s5
-; GFX9-NEXT:  .LBB49_5: ; %end
+; GFX9-NEXT:  .LBB49_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, v8
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v9
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -6077,7 +6609,7 @@ define inreg <8 x i8> @bitcast_f64_to_v8i8_scalar(double inreg %a, i32 inreg %b)
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b64 s[2:3], s[0:1], 24
 ; GFX11-NEXT:    s_lshr_b32 s6, s1, 24
@@ -6085,9 +6617,22 @@ define inreg <8 x i8> @bitcast_f64_to_v8i8_scalar(double inreg %a, i32 inreg %b)
 ; GFX11-NEXT:    s_lshr_b32 s3, s1, 8
 ; GFX11-NEXT:    s_lshr_b32 s8, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s7, s0, 8
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB49_3
+; GFX11-NEXT:  .LBB49_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr7
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr2
+; GFX11-NEXT:    ; implicit-def: $sgpr3
+; GFX11-NEXT:    ; implicit-def: $sgpr5
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:  .LBB49_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[8:9], s[0:1], 1.0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_lshrrev_b64 v[3:4], 24, v[8:9]
@@ -6096,22 +6641,14 @@ define inreg <8 x i8> @bitcast_f64_to_v8i8_scalar(double inreg %a, i32 inreg %b)
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v9
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v8
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v8
-; GFX11-NEXT:    s_branch .LBB49_5
-; GFX11-NEXT:  .LBB49_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr7
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr2
-; GFX11-NEXT:    ; implicit-def: $sgpr3
-; GFX11-NEXT:    ; implicit-def: $sgpr5
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    s_branch .LBB49_2
-; GFX11-NEXT:  .LBB49_4:
+; GFX11-NEXT:    s_branch .LBB49_6
+; GFX11-NEXT:  .LBB49_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s0 :: v_dual_mov_b32 v9, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s8 :: v_dual_mov_b32 v1, s7
 ; GFX11-NEXT:    v_dual_mov_b32 v3, s2 :: v_dual_mov_b32 v6, s5
 ; GFX11-NEXT:    v_mov_b32_e32 v7, s6
 ; GFX11-NEXT:    v_mov_b32_e32 v5, s3
-; GFX11-NEXT:  .LBB49_5: ; %end
+; GFX11-NEXT:  .LBB49_6: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v0, v8
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v9
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -6470,7 +7007,7 @@ define inreg double @bitcast_v8i8_to_f64_scalar(<8 x i8> inreg %a, i32 inreg %b)
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -6490,8 +7027,17 @@ define inreg double @bitcast_v8i8_to_f64_scalar(<8 x i8> inreg %a, i32 inreg %b)
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -6518,19 +7064,16 @@ define inreg double @bitcast_v8i8_to_f64_scalar(<8 x i8> inreg %a, i32 inreg %b)
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_add_i32 s4, s4, 0x3000000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
-; SI-NEXT:  .LBB51_3: ; %end
+; SI-NEXT:  .LBB51_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v8i8_to_f64_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v2, s19
@@ -6545,8 +7088,17 @@ define inreg double @bitcast_v8i8_to_f64_scalar(<8 x i8> inreg %a, i32 inreg %b)
 ; VI-NEXT:    v_perm_b32 v1, s22, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v1, v2, v1
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -6568,17 +7120,14 @@ define inreg double @bitcast_v8i8_to_f64_scalar(<8 x i8> inreg %a, i32 inreg %b)
 ; VI-NEXT:    v_or_b32_sdwa v1, v1, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
-; VI-NEXT:  .LBB51_3: ; %end
+; VI-NEXT:  .LBB51_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v8i8_to_f64_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s19
@@ -6593,8 +7142,17 @@ define inreg double @bitcast_v8i8_to_f64_scalar(<8 x i8> inreg %a, i32 inreg %b)
 ; GFX9-NEXT:    v_perm_b32 v1, s22, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_or_b32_e32 v1, v2, v1
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_3
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -6615,18 +7173,15 @@ define inreg double @bitcast_v8i8_to_f64_scalar(<8 x i8> inreg %a, i32 inreg %b)
 ; GFX9-NEXT:    v_add_u32_e32 v2, 0x300, v2
 ; GFX9-NEXT:    v_add_u32_sdwa v1, v1, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB51_3: ; %end
+; GFX9-NEXT:  .LBB51_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB51_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX9-NEXT:    s_branch .LBB51_2
 ;
 ; GFX11-LABEL: bitcast_v8i8_to_f64_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB51_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)
@@ -6640,9 +7195,17 @@ define inreg double @bitcast_v8i8_to_f64_scalar(<8 x i8> inreg %a, i32 inreg %b)
 ; GFX11-NEXT:    v_or_b32_e32 v0, v3, v0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_or_b32_e32 v1, v4, v1
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB51_3
-; GFX11-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB51_3
+; GFX11-NEXT:  .LBB51_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GFX11-NEXT:  .LBB51_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -6667,11 +7230,8 @@ define inreg double @bitcast_v8i8_to_f64_scalar(<8 x i8> inreg %a, i32 inreg %b)
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-NEXT:    v_or_b32_e32 v0, v1, v2
 ; GFX11-NEXT:    v_or_b32_e32 v1, v3, v4
-; GFX11-NEXT:  .LBB51_3: ; %end
+; GFX11-NEXT:  .LBB51_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB51_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX11-NEXT:    s_branch .LBB51_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -6768,71 +7328,92 @@ define inreg <2 x float> @bitcast_v2i32_to_v2f32_scalar(<2 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_4
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB53_3
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB53_3: ; %end
+; SI-NEXT:  .LBB53_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB53_4:
-; SI-NEXT:    s_branch .LBB53_2
 ;
 ; VI-LABEL: bitcast_v2i32_to_v2f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_4
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB53_3
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB53_3: ; %end
+; VI-NEXT:  .LBB53_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB53_4:
-; VI-NEXT:    s_branch .LBB53_2
 ;
 ; GFX9-LABEL: bitcast_v2i32_to_v2f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_3
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB53_3: ; %end
+; GFX9-NEXT:  .LBB53_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB53_4:
-; GFX9-NEXT:    s_branch .LBB53_2
 ;
 ; GFX11-LABEL: bitcast_v2i32_to_v2f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB53_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB53_3
-; GFX11-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB53_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB53_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB53_3: ; %end
+; GFX11-NEXT:  .LBB53_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB53_4:
-; GFX11-NEXT:    s_branch .LBB53_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -6928,16 +7509,22 @@ define inreg <2 x i32> @bitcast_v2f32_to_v2i32_scalar(<2 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    s_setpc_b64 s[30:31]
@@ -6946,16 +7533,22 @@ define inreg <2 x i32> @bitcast_v2f32_to_v2i32_scalar(<2 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -6964,16 +7557,22 @@ define inreg <2 x i32> @bitcast_v2f32_to_v2i32_scalar(<2 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -6983,16 +7582,19 @@ define inreg <2 x i32> @bitcast_v2f32_to_v2i32_scalar(<2 x float> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -7106,17 +7708,27 @@ define inreg <4 x i16> @bitcast_v2i32_to_v4i16_scalar(<2 x i32> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 16
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
-; SI-NEXT:  .LBB57_3: ; %end
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
@@ -7126,63 +7738,74 @@ define inreg <4 x i16> @bitcast_v2i32_to_v4i16_scalar(<2 x i32> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v2i32_to_v4i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v2i32_to_v4i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_3
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB57_3: ; %end
+; GFX9-NEXT:  .LBB57_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB57_4:
-; GFX9-NEXT:    s_branch .LBB57_2
 ;
 ; GFX11-LABEL: bitcast_v2i32_to_v4i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB57_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB57_3
-; GFX11-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB57_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB57_3: ; %end
+; GFX11-NEXT:  .LBB57_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB57_4:
-; GFX11-NEXT:    s_branch .LBB57_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -7315,7 +7938,7 @@ define inreg <2 x i32> @bitcast_v4i16_to_v2i32_scalar(<4 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b32 s9, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_4
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s9, 16
@@ -7323,8 +7946,17 @@ define inreg <2 x i32> @bitcast_v4i16_to_v2i32_scalar(<4 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s8, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_cbranch_execnz .LBB59_3
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s9, 16
@@ -7335,22 +7967,27 @@ define inreg <2 x i32> @bitcast_v4i16_to_v2i32_scalar(<4 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_add_i32 s4, s4, 0x30000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x30000
-; SI-NEXT:  .LBB59_3: ; %end
+; SI-NEXT:  .LBB59_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB59_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; SI-NEXT:    s_branch .LBB59_2
 ;
 ; VI-LABEL: bitcast_v4i16_to_v2i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_4
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_3
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s17, 3
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -7361,27 +7998,31 @@ define inreg <2 x i32> @bitcast_v4i16_to_v2i32_scalar(<4 x i16> inreg %a, i32 in
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB59_3: ; %end
+; VI-NEXT:  .LBB59_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB59_4:
-; VI-NEXT:    s_branch .LBB59_2
 ;
 ; GFX9-LABEL: bitcast_v4i16_to_v2i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_4
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB59_3:
-; GFX9-NEXT:    s_branch .LBB59_2
-; GFX9-NEXT:  .LBB59_4:
+; GFX9-NEXT:  .LBB59_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -7391,16 +8032,19 @@ define inreg <2 x i32> @bitcast_v4i16_to_v2i32_scalar(<4 x i16> inreg %a, i32 in
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB59_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB59_3:
-; GFX11-NEXT:    s_branch .LBB59_2
 ; GFX11-NEXT:  .LBB59_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -7514,17 +8158,27 @@ define inreg <4 x half> @bitcast_v2i32_to_v4f16_scalar(<2 x i32> inreg %a, i32 i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB61_4
+; SI-NEXT:    s_cbranch_scc0 .LBB61_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB61_3
-; SI-NEXT:  .LBB61_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB61_3
+; SI-NEXT:  .LBB61_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB61_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB61_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 16
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
-; SI-NEXT:  .LBB61_3: ; %end
+; SI-NEXT:  .LBB61_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
@@ -7534,63 +8188,74 @@ define inreg <4 x half> @bitcast_v2i32_to_v4f16_scalar(<2 x i32> inreg %a, i32 i
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB61_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB61_2
 ;
 ; VI-LABEL: bitcast_v2i32_to_v4f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB61_4
+; VI-NEXT:    s_cbranch_scc0 .LBB61_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB61_3
-; VI-NEXT:  .LBB61_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB61_3
+; VI-NEXT:  .LBB61_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB61_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB61_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB61_3: ; %end
+; VI-NEXT:  .LBB61_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB61_4:
-; VI-NEXT:    s_branch .LBB61_2
 ;
 ; GFX9-LABEL: bitcast_v2i32_to_v4f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB61_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB61_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB61_3
-; GFX9-NEXT:  .LBB61_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB61_3
+; GFX9-NEXT:  .LBB61_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB61_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB61_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB61_3: ; %end
+; GFX9-NEXT:  .LBB61_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB61_4:
-; GFX9-NEXT:    s_branch .LBB61_2
 ;
 ; GFX11-LABEL: bitcast_v2i32_to_v4f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB61_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB61_3
-; GFX11-NEXT:  .LBB61_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB61_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB61_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB61_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB61_3: ; %end
+; GFX11-NEXT:  .LBB61_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB61_4:
-; GFX11-NEXT:    s_branch .LBB61_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -7732,7 +8397,7 @@ define inreg <2 x i32> @bitcast_v4f16_to_v2i32_scalar(<4 x half> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b32 s9, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB63_3
+; SI-NEXT:    s_cbranch_scc0 .LBB63_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s9, 16
@@ -7740,8 +8405,17 @@ define inreg <2 x i32> @bitcast_v4f16_to_v2i32_scalar(<4 x half> inreg %a, i32 i
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s8, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_cbranch_execnz .LBB63_4
-; SI-NEXT:  .LBB63_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB63_3
+; SI-NEXT:  .LBB63_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; SI-NEXT:  .LBB63_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB63_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s9
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s8
@@ -7759,10 +8433,7 @@ define inreg <2 x i32> @bitcast_v4f16_to_v2i32_scalar(<4 x half> inreg %a, i32 i
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB63_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; SI-NEXT:    s_branch .LBB63_2
-; SI-NEXT:  .LBB63_4:
+; SI-NEXT:  .LBB63_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
@@ -7771,10 +8442,18 @@ define inreg <2 x i32> @bitcast_v4f16_to_v2i32_scalar(<4 x half> inreg %a, i32 i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB63_3
+; VI-NEXT:    s_cbranch_scc0 .LBB63_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB63_4
-; VI-NEXT:  .LBB63_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB63_3
+; VI-NEXT:  .LBB63_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB63_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB63_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -7787,9 +8466,7 @@ define inreg <2 x i32> @bitcast_v4f16_to_v2i32_scalar(<4 x half> inreg %a, i32 i
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v2
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB63_3:
-; VI-NEXT:    s_branch .LBB63_2
-; VI-NEXT:  .LBB63_4:
+; VI-NEXT:  .LBB63_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -7798,17 +8475,23 @@ define inreg <2 x i32> @bitcast_v4f16_to_v2i32_scalar(<4 x half> inreg %a, i32 i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB63_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB63_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB63_4
-; GFX9-NEXT:  .LBB63_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB63_3
+; GFX9-NEXT:  .LBB63_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB63_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB63_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB63_3:
-; GFX9-NEXT:    s_branch .LBB63_2
-; GFX9-NEXT:  .LBB63_4:
+; GFX9-NEXT:  .LBB63_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -7818,16 +8501,19 @@ define inreg <2 x i32> @bitcast_v4f16_to_v2i32_scalar(<4 x half> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB63_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB63_4
-; GFX11-NEXT:  .LBB63_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB63_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB63_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB63_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB63_3:
-; GFX11-NEXT:    s_branch .LBB63_2
 ; GFX11-NEXT:  .LBB63_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -7951,21 +8637,33 @@ define inreg <4 x bfloat> @bitcast_v2i32_to_v4bf16_scalar(<2 x i32> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB65_4
+; SI-NEXT:    s_cbranch_scc0 .LBB65_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s7, s17, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s17, 16
 ; SI-NEXT:    s_and_b32 s9, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s8, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB65_3
-; SI-NEXT:  .LBB65_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB65_3
+; SI-NEXT:  .LBB65_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB65_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB65_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s4, s16, 3
 ; SI-NEXT:    s_add_i32 s5, s17, 3
 ; SI-NEXT:    s_and_b32 s7, s5, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s5, 16
 ; SI-NEXT:    s_and_b32 s9, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s8, s4, 16
-; SI-NEXT:  .LBB65_3: ; %end
+; SI-NEXT:  .LBB65_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s9
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s8
@@ -7975,65 +8673,74 @@ define inreg <4 x bfloat> @bitcast_v2i32_to_v4bf16_scalar(<2 x i32> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB65_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB65_2
 ;
 ; VI-LABEL: bitcast_v2i32_to_v4bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB65_4
+; VI-NEXT:    s_cbranch_scc0 .LBB65_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB65_3
-; VI-NEXT:  .LBB65_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB65_3
+; VI-NEXT:  .LBB65_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB65_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB65_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB65_3: ; %end
+; VI-NEXT:  .LBB65_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB65_4:
-; VI-NEXT:    s_branch .LBB65_2
 ;
 ; GFX9-LABEL: bitcast_v2i32_to_v4bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB65_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB65_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB65_3
-; GFX9-NEXT:  .LBB65_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB65_3
+; GFX9-NEXT:  .LBB65_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB65_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB65_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB65_3: ; %end
+; GFX9-NEXT:  .LBB65_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB65_4:
-; GFX9-NEXT:    s_branch .LBB65_2
 ;
 ; GFX11-LABEL: bitcast_v2i32_to_v4bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB65_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB65_3
-; GFX11-NEXT:  .LBB65_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB65_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB65_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB65_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB65_3: ; %end
+; GFX11-NEXT:  .LBB65_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB65_4:
-; GFX11-NEXT:    s_branch .LBB65_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -8329,14 +9036,23 @@ define inreg <2 x i32> @bitcast_v4bf16_to_v2i32_scalar(<4 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB67_4
+; SI-NEXT:    s_cbranch_scc0 .LBB67_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v8
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[5:6], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v7
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[3:4], 16
-; SI-NEXT:    s_cbranch_execnz .LBB67_3
-; SI-NEXT:  .LBB67_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB67_3
+; SI-NEXT:  .LBB67_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; SI-NEXT:  .LBB67_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB67_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v8
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v5
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -8349,20 +9065,25 @@ define inreg <2 x i32> @bitcast_v4bf16_to_v2i32_scalar(<4 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
-; SI-NEXT:  .LBB67_3: ; %end
+; SI-NEXT:  .LBB67_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB67_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; SI-NEXT:    s_branch .LBB67_2
 ;
 ; VI-LABEL: bitcast_v4bf16_to_v2i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB67_3
+; VI-NEXT:    s_cbranch_scc0 .LBB67_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB67_4
-; VI-NEXT:  .LBB67_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB67_3
+; VI-NEXT:  .LBB67_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB67_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB67_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v4, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v4
@@ -8402,9 +9123,7 @@ define inreg <2 x i32> @bitcast_v4bf16_to_v2i32_scalar(<4 x bfloat> inreg %a, i3
 ; VI-NEXT:    v_lshrrev_b64 v[0:1], 16, v[0:1]
 ; VI-NEXT:    v_mov_b32_e32 v1, v2
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB67_3:
-; VI-NEXT:    s_branch .LBB67_2
-; VI-NEXT:  .LBB67_4:
+; VI-NEXT:  .LBB67_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -8413,10 +9132,18 @@ define inreg <2 x i32> @bitcast_v4bf16_to_v2i32_scalar(<4 x bfloat> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB67_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB67_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB67_4
-; GFX9-NEXT:  .LBB67_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB67_3
+; GFX9-NEXT:  .LBB67_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB67_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB67_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -8458,9 +9185,7 @@ define inreg <2 x i32> @bitcast_v4bf16_to_v2i32_scalar(<4 x bfloat> inreg %a, i3
 ; GFX9-NEXT:    v_and_b32_sdwa v1, v3, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v1, v2, 16, v1
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB67_3:
-; GFX9-NEXT:    s_branch .LBB67_2
-; GFX9-NEXT:  .LBB67_4:
+; GFX9-NEXT:  .LBB67_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -8470,11 +9195,16 @@ define inreg <2 x i32> @bitcast_v4bf16_to_v2i32_scalar(<4 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB67_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB67_4
-; GFX11-TRUE16-NEXT:  .LBB67_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB67_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-TRUE16-NEXT:  .LBB67_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB67_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s2, 0, s0
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -8516,8 +9246,6 @@ define inreg <2 x i32> @bitcast_v4bf16_to_v2i32_scalar(<4 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v2
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v3.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB67_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB67_2
 ; GFX11-TRUE16-NEXT:  .LBB67_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -8527,11 +9255,16 @@ define inreg <2 x i32> @bitcast_v4bf16_to_v2i32_scalar(<4 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB67_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB67_4
-; GFX11-FAKE16-NEXT:  .LBB67_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB67_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-FAKE16-NEXT:  .LBB67_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB67_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s2, 0, s0
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -8577,8 +9310,6 @@ define inreg <2 x i32> @bitcast_v4bf16_to_v2i32_scalar(<4 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v1, v3, 16, v2
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB67_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB67_2
 ; GFX11-FAKE16-NEXT:  .LBB67_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -8814,7 +9545,7 @@ define inreg <8 x i8> @bitcast_v2i32_to_v8i8_scalar(<2 x i32> inreg %a, i32 inre
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB69_4
+; SI-NEXT:    s_cbranch_scc0 .LBB69_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s12, s17, 24
 ; SI-NEXT:    s_lshr_b32 s13, s17, 16
@@ -8822,8 +9553,22 @@ define inreg <8 x i8> @bitcast_v2i32_to_v8i8_scalar(<2 x i32> inreg %a, i32 inre
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB69_3
-; SI-NEXT:  .LBB69_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB69_3
+; SI-NEXT:  .LBB69_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:  .LBB69_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB69_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
@@ -8832,7 +9577,7 @@ define inreg <8 x i8> @bitcast_v2i32_to_v8i8_scalar(<2 x i32> inreg %a, i32 inre
 ; SI-NEXT:    s_lshr_b32 s12, s17, 24
 ; SI-NEXT:    s_lshr_b32 s13, s17, 16
 ; SI-NEXT:    s_lshr_b32 s14, s17, 8
-; SI-NEXT:  .LBB69_3: ; %end
+; SI-NEXT:  .LBB69_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s8
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -8842,20 +9587,12 @@ define inreg <8 x i8> @bitcast_v2i32_to_v8i8_scalar(<2 x i32> inreg %a, i32 inre
 ; SI-NEXT:    v_mov_b32_e32 v6, s13
 ; SI-NEXT:    v_mov_b32_e32 v7, s12
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB69_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    s_branch .LBB69_2
 ;
 ; VI-LABEL: bitcast_v2i32_to_v8i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB69_4
+; VI-NEXT:    s_cbranch_scc0 .LBB69_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; VI-NEXT:    s_lshr_b32 s5, s17, 24
@@ -8863,8 +9600,22 @@ define inreg <8 x i8> @bitcast_v2i32_to_v8i8_scalar(<2 x i32> inreg %a, i32 inre
 ; VI-NEXT:    s_lshr_b32 s9, s17, 8
 ; VI-NEXT:    s_lshr_b32 s10, s16, 16
 ; VI-NEXT:    s_lshr_b32 s11, s16, 8
-; VI-NEXT:    s_cbranch_execnz .LBB69_3
-; VI-NEXT:  .LBB69_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[6:7], 0
+; VI-NEXT:    s_branch .LBB69_3
+; VI-NEXT:  .LBB69_2:
+; VI-NEXT:    s_mov_b64 s[6:7], -1
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr9
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr5
+; VI-NEXT:  .LBB69_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; VI-NEXT:    s_cselect_b32 s6, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s6, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB69_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
@@ -8873,7 +9624,7 @@ define inreg <8 x i8> @bitcast_v2i32_to_v8i8_scalar(<2 x i32> inreg %a, i32 inre
 ; VI-NEXT:    s_lshr_b32 s9, s17, 8
 ; VI-NEXT:    s_lshr_b32 s10, s16, 16
 ; VI-NEXT:    s_lshr_b32 s11, s16, 8
-; VI-NEXT:  .LBB69_3: ; %end
+; VI-NEXT:  .LBB69_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s11
 ; VI-NEXT:    v_mov_b32_e32 v2, s10
@@ -8883,20 +9634,12 @@ define inreg <8 x i8> @bitcast_v2i32_to_v8i8_scalar(<2 x i32> inreg %a, i32 inre
 ; VI-NEXT:    v_mov_b32_e32 v6, s8
 ; VI-NEXT:    v_mov_b32_e32 v7, s5
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB69_4:
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr9
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr5
-; VI-NEXT:    s_branch .LBB69_2
 ;
 ; GFX9-LABEL: bitcast_v2i32_to_v8i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB69_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB69_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; GFX9-NEXT:    s_lshr_b32 s5, s17, 24
@@ -8904,8 +9647,22 @@ define inreg <8 x i8> @bitcast_v2i32_to_v8i8_scalar(<2 x i32> inreg %a, i32 inre
 ; GFX9-NEXT:    s_lshr_b32 s9, s17, 8
 ; GFX9-NEXT:    s_lshr_b32 s10, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s11, s16, 8
-; GFX9-NEXT:    s_cbranch_execnz .LBB69_3
-; GFX9-NEXT:  .LBB69_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[6:7], 0
+; GFX9-NEXT:    s_branch .LBB69_3
+; GFX9-NEXT:  .LBB69_2:
+; GFX9-NEXT:    s_mov_b64 s[6:7], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr9
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr5
+; GFX9-NEXT:  .LBB69_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX9-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB69_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
@@ -8914,7 +9671,7 @@ define inreg <8 x i8> @bitcast_v2i32_to_v8i8_scalar(<2 x i32> inreg %a, i32 inre
 ; GFX9-NEXT:    s_lshr_b32 s9, s17, 8
 ; GFX9-NEXT:    s_lshr_b32 s10, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s11, s16, 8
-; GFX9-NEXT:  .LBB69_3: ; %end
+; GFX9-NEXT:  .LBB69_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s11
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
@@ -8924,21 +9681,13 @@ define inreg <8 x i8> @bitcast_v2i32_to_v8i8_scalar(<2 x i32> inreg %a, i32 inre
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s5
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB69_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr9
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr5
-; GFX9-NEXT:    s_branch .LBB69_2
 ;
 ; GFX11-LABEL: bitcast_v2i32_to_v8i8_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB69_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB69_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b64 s[2:3], s[0:1], 24
 ; GFX11-NEXT:    s_lshr_b32 s3, s1, 24
@@ -8946,9 +9695,22 @@ define inreg <8 x i8> @bitcast_v2i32_to_v8i8_scalar(<2 x i32> inreg %a, i32 inre
 ; GFX11-NEXT:    s_lshr_b32 s5, s1, 8
 ; GFX11-NEXT:    s_lshr_b32 s6, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s7, s0, 8
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB69_3
-; GFX11-NEXT:  .LBB69_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB69_3
+; GFX11-NEXT:  .LBB69_2:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr7
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr2
+; GFX11-NEXT:    ; implicit-def: $sgpr5
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr3
+; GFX11-NEXT:  .LBB69_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB69_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_lshr_b32 s4, s1, 16
@@ -8957,21 +9719,13 @@ define inreg <8 x i8> @bitcast_v2i32_to_v8i8_scalar(<2 x i32> inreg %a, i32 inre
 ; GFX11-NEXT:    s_lshr_b32 s5, s1, 8
 ; GFX11-NEXT:    s_lshr_b32 s6, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s7, s0, 8
-; GFX11-NEXT:  .LBB69_3: ; %end
+; GFX11-NEXT:  .LBB69_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s7
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s2
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s1 :: v_dual_mov_b32 v5, s5
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s4 :: v_dual_mov_b32 v7, s3
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB69_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr7
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr2
-; GFX11-NEXT:    ; implicit-def: $sgpr5
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr3
-; GFX11-NEXT:    s_branch .LBB69_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -9327,7 +10081,7 @@ define inreg <2 x i32> @bitcast_v8i8_to_v2i32_scalar(<8 x i8> inreg %a, i32 inre
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB71_4
+; SI-NEXT:    s_cbranch_scc0 .LBB71_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -9347,8 +10101,17 @@ define inreg <2 x i32> @bitcast_v8i8_to_v2i32_scalar(<8 x i8> inreg %a, i32 inre
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_cbranch_execnz .LBB71_3
-; SI-NEXT:  .LBB71_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB71_3
+; SI-NEXT:  .LBB71_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; SI-NEXT:  .LBB71_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB71_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -9375,19 +10138,16 @@ define inreg <2 x i32> @bitcast_v8i8_to_v2i32_scalar(<8 x i8> inreg %a, i32 inre
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_add_i32 s4, s4, 0x3000000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
-; SI-NEXT:  .LBB71_3: ; %end
+; SI-NEXT:  .LBB71_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB71_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; SI-NEXT:    s_branch .LBB71_2
 ;
 ; VI-LABEL: bitcast_v8i8_to_v2i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB71_4
+; VI-NEXT:    s_cbranch_scc0 .LBB71_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v2, s19
@@ -9402,8 +10162,17 @@ define inreg <2 x i32> @bitcast_v8i8_to_v2i32_scalar(<8 x i8> inreg %a, i32 inre
 ; VI-NEXT:    v_perm_b32 v1, s22, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v1, v2, v1
-; VI-NEXT:    s_cbranch_execnz .LBB71_3
-; VI-NEXT:  .LBB71_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB71_3
+; VI-NEXT:  .LBB71_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; VI-NEXT:  .LBB71_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB71_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -9425,17 +10194,14 @@ define inreg <2 x i32> @bitcast_v8i8_to_v2i32_scalar(<8 x i8> inreg %a, i32 inre
 ; VI-NEXT:    v_or_b32_sdwa v1, v1, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
-; VI-NEXT:  .LBB71_3: ; %end
+; VI-NEXT:  .LBB71_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB71_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; VI-NEXT:    s_branch .LBB71_2
 ;
 ; GFX9-LABEL: bitcast_v8i8_to_v2i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB71_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s19
@@ -9450,8 +10216,17 @@ define inreg <2 x i32> @bitcast_v8i8_to_v2i32_scalar(<8 x i8> inreg %a, i32 inre
 ; GFX9-NEXT:    v_perm_b32 v1, s22, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_or_b32_e32 v1, v2, v1
-; GFX9-NEXT:    s_cbranch_execnz .LBB71_3
-; GFX9-NEXT:  .LBB71_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB71_3
+; GFX9-NEXT:  .LBB71_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GFX9-NEXT:  .LBB71_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB71_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -9472,18 +10247,15 @@ define inreg <2 x i32> @bitcast_v8i8_to_v2i32_scalar(<8 x i8> inreg %a, i32 inre
 ; GFX9-NEXT:    v_add_u32_e32 v2, 0x300, v2
 ; GFX9-NEXT:    v_add_u32_sdwa v1, v1, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB71_3: ; %end
+; GFX9-NEXT:  .LBB71_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB71_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX9-NEXT:    s_branch .LBB71_2
 ;
 ; GFX11-LABEL: bitcast_v8i8_to_v2i32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB71_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)
@@ -9497,9 +10269,17 @@ define inreg <2 x i32> @bitcast_v8i8_to_v2i32_scalar(<8 x i8> inreg %a, i32 inre
 ; GFX11-NEXT:    v_or_b32_e32 v0, v3, v0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_or_b32_e32 v1, v4, v1
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB71_3
-; GFX11-NEXT:  .LBB71_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB71_3
+; GFX11-NEXT:  .LBB71_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GFX11-NEXT:  .LBB71_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB71_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -9524,11 +10304,8 @@ define inreg <2 x i32> @bitcast_v8i8_to_v2i32_scalar(<8 x i8> inreg %a, i32 inre
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-NEXT:    v_or_b32_e32 v0, v1, v2
 ; GFX11-NEXT:    v_or_b32_e32 v1, v3, v4
-; GFX11-NEXT:  .LBB71_3: ; %end
+; GFX11-NEXT:  .LBB71_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB71_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX11-NEXT:    s_branch .LBB71_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -9638,27 +10415,33 @@ define inreg <4 x i16> @bitcast_v2f32_to_v4i16_scalar(<2 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB73_3
+; SI-NEXT:    s_cbranch_scc0 .LBB73_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB73_4
-; SI-NEXT:  .LBB73_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB73_3
+; SI-NEXT:  .LBB73_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB73_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB73_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[0:1], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
-; SI-NEXT:    s_branch .LBB73_5
-; SI-NEXT:  .LBB73_3:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB73_2
-; SI-NEXT:  .LBB73_4:
+; SI-NEXT:    s_branch .LBB73_6
+; SI-NEXT:  .LBB73_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v3, s8
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
-; SI-NEXT:  .LBB73_5: ; %end
+; SI-NEXT:  .LBB73_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
@@ -9671,16 +10454,22 @@ define inreg <4 x i16> @bitcast_v2f32_to_v4i16_scalar(<2 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB73_3
+; VI-NEXT:    s_cbranch_scc0 .LBB73_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB73_4
-; VI-NEXT:  .LBB73_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB73_3
+; VI-NEXT:  .LBB73_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB73_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB73_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB73_3:
-; VI-NEXT:    s_branch .LBB73_2
-; VI-NEXT:  .LBB73_4:
+; VI-NEXT:  .LBB73_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -9689,16 +10478,22 @@ define inreg <4 x i16> @bitcast_v2f32_to_v4i16_scalar(<2 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB73_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB73_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB73_4
-; GFX9-NEXT:  .LBB73_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB73_3
+; GFX9-NEXT:  .LBB73_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB73_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB73_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB73_3:
-; GFX9-NEXT:    s_branch .LBB73_2
-; GFX9-NEXT:  .LBB73_4:
+; GFX9-NEXT:  .LBB73_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -9708,16 +10503,19 @@ define inreg <4 x i16> @bitcast_v2f32_to_v4i16_scalar(<2 x float> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB73_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB73_4
-; GFX11-NEXT:  .LBB73_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB73_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB73_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB73_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB73_3:
-; GFX11-NEXT:    s_branch .LBB73_2
 ; GFX11-NEXT:  .LBB73_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -9853,7 +10651,7 @@ define inreg <2 x float> @bitcast_v4i16_to_v2f32_scalar(<4 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b32 s9, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB75_4
+; SI-NEXT:    s_cbranch_scc0 .LBB75_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s9, 16
@@ -9861,8 +10659,17 @@ define inreg <2 x float> @bitcast_v4i16_to_v2f32_scalar(<4 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s8, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_cbranch_execnz .LBB75_3
-; SI-NEXT:  .LBB75_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB75_3
+; SI-NEXT:  .LBB75_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; SI-NEXT:  .LBB75_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB75_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s9, 16
@@ -9873,22 +10680,27 @@ define inreg <2 x float> @bitcast_v4i16_to_v2f32_scalar(<4 x i16> inreg %a, i32
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_add_i32 s4, s4, 0x30000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x30000
-; SI-NEXT:  .LBB75_3: ; %end
+; SI-NEXT:  .LBB75_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB75_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; SI-NEXT:    s_branch .LBB75_2
 ;
 ; VI-LABEL: bitcast_v4i16_to_v2f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB75_4
+; VI-NEXT:    s_cbranch_scc0 .LBB75_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB75_3
-; VI-NEXT:  .LBB75_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB75_3
+; VI-NEXT:  .LBB75_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB75_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB75_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s17, 3
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -9899,27 +10711,31 @@ define inreg <2 x float> @bitcast_v4i16_to_v2f32_scalar(<4 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB75_3: ; %end
+; VI-NEXT:  .LBB75_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB75_4:
-; VI-NEXT:    s_branch .LBB75_2
 ;
 ; GFX9-LABEL: bitcast_v4i16_to_v2f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB75_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB75_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB75_4
-; GFX9-NEXT:  .LBB75_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB75_3
+; GFX9-NEXT:  .LBB75_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB75_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB75_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB75_3:
-; GFX9-NEXT:    s_branch .LBB75_2
-; GFX9-NEXT:  .LBB75_4:
+; GFX9-NEXT:  .LBB75_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -9929,16 +10745,19 @@ define inreg <2 x float> @bitcast_v4i16_to_v2f32_scalar(<4 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB75_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB75_4
-; GFX11-NEXT:  .LBB75_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB75_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB75_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB75_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB75_3:
-; GFX11-NEXT:    s_branch .LBB75_2
 ; GFX11-NEXT:  .LBB75_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -10051,27 +10870,33 @@ define inreg <4 x half> @bitcast_v2f32_to_v4f16_scalar(<2 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB77_3
+; SI-NEXT:    s_cbranch_scc0 .LBB77_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB77_4
-; SI-NEXT:  .LBB77_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB77_3
+; SI-NEXT:  .LBB77_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB77_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB77_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[0:1], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
-; SI-NEXT:    s_branch .LBB77_5
-; SI-NEXT:  .LBB77_3:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB77_2
-; SI-NEXT:  .LBB77_4:
+; SI-NEXT:    s_branch .LBB77_6
+; SI-NEXT:  .LBB77_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v3, s8
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
-; SI-NEXT:  .LBB77_5: ; %end
+; SI-NEXT:  .LBB77_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
@@ -10084,16 +10909,22 @@ define inreg <4 x half> @bitcast_v2f32_to_v4f16_scalar(<2 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB77_3
+; VI-NEXT:    s_cbranch_scc0 .LBB77_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB77_4
-; VI-NEXT:  .LBB77_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB77_3
+; VI-NEXT:  .LBB77_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB77_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB77_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB77_3:
-; VI-NEXT:    s_branch .LBB77_2
-; VI-NEXT:  .LBB77_4:
+; VI-NEXT:  .LBB77_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -10102,16 +10933,22 @@ define inreg <4 x half> @bitcast_v2f32_to_v4f16_scalar(<2 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB77_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB77_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB77_4
-; GFX9-NEXT:  .LBB77_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB77_3
+; GFX9-NEXT:  .LBB77_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB77_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB77_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB77_3:
-; GFX9-NEXT:    s_branch .LBB77_2
-; GFX9-NEXT:  .LBB77_4:
+; GFX9-NEXT:  .LBB77_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -10121,16 +10958,19 @@ define inreg <4 x half> @bitcast_v2f32_to_v4f16_scalar(<2 x float> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB77_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB77_4
-; GFX11-NEXT:  .LBB77_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB77_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB77_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB77_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB77_3:
-; GFX11-NEXT:    s_branch .LBB77_2
 ; GFX11-NEXT:  .LBB77_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -10275,7 +11115,7 @@ define inreg <2 x float> @bitcast_v4f16_to_v2f32_scalar(<4 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s8, s17, 16
 ; SI-NEXT:    s_lshr_b32 s9, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB79_3
+; SI-NEXT:    s_cbranch_scc0 .LBB79_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s9, 16
@@ -10283,8 +11123,17 @@ define inreg <2 x float> @bitcast_v4f16_to_v2f32_scalar(<4 x half> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s8, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_cbranch_execnz .LBB79_4
-; SI-NEXT:  .LBB79_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB79_3
+; SI-NEXT:  .LBB79_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; SI-NEXT:  .LBB79_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB79_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s9
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s8
@@ -10302,10 +11151,7 @@ define inreg <2 x float> @bitcast_v4f16_to_v2f32_scalar(<4 x half> inreg %a, i32
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB79_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; SI-NEXT:    s_branch .LBB79_2
-; SI-NEXT:  .LBB79_4:
+; SI-NEXT:  .LBB79_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
@@ -10314,10 +11160,18 @@ define inreg <2 x float> @bitcast_v4f16_to_v2f32_scalar(<4 x half> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB79_3
+; VI-NEXT:    s_cbranch_scc0 .LBB79_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB79_4
-; VI-NEXT:  .LBB79_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB79_3
+; VI-NEXT:  .LBB79_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB79_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB79_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -10330,9 +11184,7 @@ define inreg <2 x float> @bitcast_v4f16_to_v2f32_scalar(<4 x half> inreg %a, i32
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v2
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB79_3:
-; VI-NEXT:    s_branch .LBB79_2
-; VI-NEXT:  .LBB79_4:
+; VI-NEXT:  .LBB79_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -10341,17 +11193,23 @@ define inreg <2 x float> @bitcast_v4f16_to_v2f32_scalar(<4 x half> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB79_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB79_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB79_4
-; GFX9-NEXT:  .LBB79_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB79_3
+; GFX9-NEXT:  .LBB79_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB79_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB79_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB79_3:
-; GFX9-NEXT:    s_branch .LBB79_2
-; GFX9-NEXT:  .LBB79_4:
+; GFX9-NEXT:  .LBB79_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -10361,16 +11219,19 @@ define inreg <2 x float> @bitcast_v4f16_to_v2f32_scalar(<4 x half> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB79_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB79_4
-; GFX11-NEXT:  .LBB79_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB79_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB79_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB79_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB79_3:
-; GFX11-NEXT:    s_branch .LBB79_2
 ; GFX11-NEXT:  .LBB79_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -10493,33 +11354,39 @@ define inreg <4 x bfloat> @bitcast_v2f32_to_v4bf16_scalar(<2 x float> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB81_3
+; SI-NEXT:    s_cbranch_scc0 .LBB81_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s6, s17, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s7, s17, 16
 ; SI-NEXT:    s_and_b32 s8, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s9, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB81_4
-; SI-NEXT:  .LBB81_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB81_3
+; SI-NEXT:  .LBB81_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB81_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB81_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_and_b32_e32 v3, 0xffff0000, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v1
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
-; SI-NEXT:    s_branch .LBB81_5
-; SI-NEXT:  .LBB81_3:
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB81_2
-; SI-NEXT:  .LBB81_4:
+; SI-NEXT:    s_branch .LBB81_6
+; SI-NEXT:  .LBB81_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s9
 ; SI-NEXT:    v_mov_b32_e32 v1, s8
 ; SI-NEXT:    v_mov_b32_e32 v2, s7
 ; SI-NEXT:    v_mov_b32_e32 v3, s6
-; SI-NEXT:  .LBB81_5: ; %end
+; SI-NEXT:  .LBB81_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
@@ -10534,16 +11401,22 @@ define inreg <4 x bfloat> @bitcast_v2f32_to_v4bf16_scalar(<2 x float> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB81_3
+; VI-NEXT:    s_cbranch_scc0 .LBB81_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB81_4
-; VI-NEXT:  .LBB81_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB81_3
+; VI-NEXT:  .LBB81_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB81_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB81_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB81_3:
-; VI-NEXT:    s_branch .LBB81_2
-; VI-NEXT:  .LBB81_4:
+; VI-NEXT:  .LBB81_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -10552,16 +11425,22 @@ define inreg <4 x bfloat> @bitcast_v2f32_to_v4bf16_scalar(<2 x float> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB81_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB81_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB81_4
-; GFX9-NEXT:  .LBB81_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB81_3
+; GFX9-NEXT:  .LBB81_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB81_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB81_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB81_3:
-; GFX9-NEXT:    s_branch .LBB81_2
-; GFX9-NEXT:  .LBB81_4:
+; GFX9-NEXT:  .LBB81_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -10571,16 +11450,19 @@ define inreg <4 x bfloat> @bitcast_v2f32_to_v4bf16_scalar(<2 x float> inreg %a,
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB81_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB81_4
-; GFX11-NEXT:  .LBB81_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB81_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB81_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB81_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB81_3:
-; GFX11-NEXT:    s_branch .LBB81_2
 ; GFX11-NEXT:  .LBB81_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -10879,14 +11761,23 @@ define inreg <2 x float> @bitcast_v4bf16_to_v2f32_scalar(<4 x bfloat> inreg %a,
 ; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB83_4
+; SI-NEXT:    s_cbranch_scc0 .LBB83_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v8
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[5:6], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v7
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[3:4], 16
-; SI-NEXT:    s_cbranch_execnz .LBB83_3
-; SI-NEXT:  .LBB83_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB83_3
+; SI-NEXT:  .LBB83_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; SI-NEXT:  .LBB83_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB83_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v8
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v5
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -10899,20 +11790,25 @@ define inreg <2 x float> @bitcast_v4bf16_to_v2f32_scalar(<4 x bfloat> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
-; SI-NEXT:  .LBB83_3: ; %end
+; SI-NEXT:  .LBB83_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB83_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; SI-NEXT:    s_branch .LBB83_2
 ;
 ; VI-LABEL: bitcast_v4bf16_to_v2f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB83_3
+; VI-NEXT:    s_cbranch_scc0 .LBB83_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB83_4
-; VI-NEXT:  .LBB83_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB83_3
+; VI-NEXT:  .LBB83_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB83_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB83_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v4, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v4
@@ -10952,9 +11848,7 @@ define inreg <2 x float> @bitcast_v4bf16_to_v2f32_scalar(<4 x bfloat> inreg %a,
 ; VI-NEXT:    v_lshrrev_b64 v[0:1], 16, v[0:1]
 ; VI-NEXT:    v_mov_b32_e32 v1, v2
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB83_3:
-; VI-NEXT:    s_branch .LBB83_2
-; VI-NEXT:  .LBB83_4:
+; VI-NEXT:  .LBB83_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -10963,10 +11857,18 @@ define inreg <2 x float> @bitcast_v4bf16_to_v2f32_scalar(<4 x bfloat> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB83_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB83_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB83_4
-; GFX9-NEXT:  .LBB83_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB83_3
+; GFX9-NEXT:  .LBB83_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB83_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB83_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -11008,9 +11910,7 @@ define inreg <2 x float> @bitcast_v4bf16_to_v2f32_scalar(<4 x bfloat> inreg %a,
 ; GFX9-NEXT:    v_and_b32_sdwa v1, v3, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v1, v2, 16, v1
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB83_3:
-; GFX9-NEXT:    s_branch .LBB83_2
-; GFX9-NEXT:  .LBB83_4:
+; GFX9-NEXT:  .LBB83_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -11020,11 +11920,16 @@ define inreg <2 x float> @bitcast_v4bf16_to_v2f32_scalar(<4 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB83_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB83_4
-; GFX11-TRUE16-NEXT:  .LBB83_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB83_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-TRUE16-NEXT:  .LBB83_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB83_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s2, 0, s0
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -11066,8 +11971,6 @@ define inreg <2 x float> @bitcast_v4bf16_to_v2f32_scalar(<4 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v2
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v3.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB83_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB83_2
 ; GFX11-TRUE16-NEXT:  .LBB83_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -11077,11 +11980,16 @@ define inreg <2 x float> @bitcast_v4bf16_to_v2f32_scalar(<4 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB83_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB83_4
-; GFX11-FAKE16-NEXT:  .LBB83_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB83_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-FAKE16-NEXT:  .LBB83_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB83_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s2, 0, s0
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -11127,8 +12035,6 @@ define inreg <2 x float> @bitcast_v4bf16_to_v2f32_scalar(<4 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v1, v3, 16, v2
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB83_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB83_2
 ; GFX11-FAKE16-NEXT:  .LBB83_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -11362,7 +12268,7 @@ define inreg <8 x i8> @bitcast_v2f32_to_v8i8_scalar(<2 x float> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB85_3
+; SI-NEXT:    s_cbranch_scc0 .LBB85_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s12, s17, 24
 ; SI-NEXT:    s_lshr_b32 s13, s17, 16
@@ -11370,8 +12276,22 @@ define inreg <8 x i8> @bitcast_v2f32_to_v8i8_scalar(<2 x float> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB85_4
-; SI-NEXT:  .LBB85_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[10:11], 0
+; SI-NEXT:    s_branch .LBB85_3
+; SI-NEXT:  .LBB85_2:
+; SI-NEXT:    s_mov_b64 s[10:11], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:  .LBB85_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB85_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v11, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v10, s16, 1.0
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[10:11], 24
@@ -11380,16 +12300,8 @@ define inreg <8 x i8> @bitcast_v2f32_to_v8i8_scalar(<2 x float> inreg %a, i32 in
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v11
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v11
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 8, v11
-; SI-NEXT:    s_branch .LBB85_5
-; SI-NEXT:  .LBB85_3:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    s_branch .LBB85_2
-; SI-NEXT:  .LBB85_4:
+; SI-NEXT:    s_branch .LBB85_6
+; SI-NEXT:  .LBB85_5:
 ; SI-NEXT:    v_mov_b32_e32 v10, s16
 ; SI-NEXT:    v_mov_b32_e32 v11, s17
 ; SI-NEXT:    v_mov_b32_e32 v5, s14
@@ -11398,7 +12310,7 @@ define inreg <8 x i8> @bitcast_v2f32_to_v8i8_scalar(<2 x float> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v3, s4
 ; SI-NEXT:    v_mov_b32_e32 v8, s6
 ; SI-NEXT:    v_mov_b32_e32 v1, s8
-; SI-NEXT:  .LBB85_5: ; %end
+; SI-NEXT:  .LBB85_6: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, v10
 ; SI-NEXT:    v_mov_b32_e32 v2, v8
 ; SI-NEXT:    v_mov_b32_e32 v4, v11
@@ -11408,7 +12320,7 @@ define inreg <8 x i8> @bitcast_v2f32_to_v8i8_scalar(<2 x float> inreg %a, i32 in
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB85_3
+; VI-NEXT:    s_cbranch_scc0 .LBB85_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; VI-NEXT:    s_lshr_b32 s5, s17, 24
@@ -11416,8 +12328,22 @@ define inreg <8 x i8> @bitcast_v2f32_to_v8i8_scalar(<2 x float> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s10, s17, 8
 ; VI-NEXT:    s_lshr_b32 s9, s16, 16
 ; VI-NEXT:    s_lshr_b32 s11, s16, 8
-; VI-NEXT:    s_cbranch_execnz .LBB85_4
-; VI-NEXT:  .LBB85_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[6:7], 0
+; VI-NEXT:    s_branch .LBB85_3
+; VI-NEXT:  .LBB85_2:
+; VI-NEXT:    s_mov_b64 s[6:7], -1
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr9
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr5
+; VI-NEXT:  .LBB85_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; VI-NEXT:    s_cselect_b32 s6, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s6, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB85_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v9, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v8, s16, 1.0
 ; VI-NEXT:    v_lshrrev_b64 v[3:4], 24, v[8:9]
@@ -11426,16 +12352,8 @@ define inreg <8 x i8> @bitcast_v2f32_to_v8i8_scalar(<2 x float> inreg %a, i32 in
 ; VI-NEXT:    v_lshrrev_b32_e32 v5, 8, v9
 ; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v8
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 8, v8
-; VI-NEXT:    s_branch .LBB85_5
-; VI-NEXT:  .LBB85_3:
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr9
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr5
-; VI-NEXT:    s_branch .LBB85_2
-; VI-NEXT:  .LBB85_4:
+; VI-NEXT:    s_branch .LBB85_6
+; VI-NEXT:  .LBB85_5:
 ; VI-NEXT:    v_mov_b32_e32 v8, s16
 ; VI-NEXT:    v_mov_b32_e32 v9, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, s11
@@ -11444,7 +12362,7 @@ define inreg <8 x i8> @bitcast_v2f32_to_v8i8_scalar(<2 x float> inreg %a, i32 in
 ; VI-NEXT:    v_mov_b32_e32 v6, s8
 ; VI-NEXT:    v_mov_b32_e32 v7, s5
 ; VI-NEXT:    v_mov_b32_e32 v3, s4
-; VI-NEXT:  .LBB85_5: ; %end
+; VI-NEXT:  .LBB85_6: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, v8
 ; VI-NEXT:    v_mov_b32_e32 v4, v9
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -11453,7 +12371,7 @@ define inreg <8 x i8> @bitcast_v2f32_to_v8i8_scalar(<2 x float> inreg %a, i32 in
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB85_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB85_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; GFX9-NEXT:    s_lshr_b32 s5, s17, 24
@@ -11461,8 +12379,22 @@ define inreg <8 x i8> @bitcast_v2f32_to_v8i8_scalar(<2 x float> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b32 s10, s17, 8
 ; GFX9-NEXT:    s_lshr_b32 s9, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s11, s16, 8
-; GFX9-NEXT:    s_cbranch_execnz .LBB85_4
-; GFX9-NEXT:  .LBB85_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[6:7], 0
+; GFX9-NEXT:    s_branch .LBB85_3
+; GFX9-NEXT:  .LBB85_2:
+; GFX9-NEXT:    s_mov_b64 s[6:7], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr9
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr5
+; GFX9-NEXT:  .LBB85_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX9-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB85_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v9, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v8, s16, 1.0
 ; GFX9-NEXT:    v_lshrrev_b64 v[3:4], 24, v[8:9]
@@ -11471,16 +12403,8 @@ define inreg <8 x i8> @bitcast_v2f32_to_v8i8_scalar(<2 x float> inreg %a, i32 in
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v9
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v8
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v8
-; GFX9-NEXT:    s_branch .LBB85_5
-; GFX9-NEXT:  .LBB85_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr9
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr5
-; GFX9-NEXT:    s_branch .LBB85_2
-; GFX9-NEXT:  .LBB85_4:
+; GFX9-NEXT:    s_branch .LBB85_6
+; GFX9-NEXT:  .LBB85_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s11
@@ -11489,7 +12413,7 @@ define inreg <8 x i8> @bitcast_v2f32_to_v8i8_scalar(<2 x float> inreg %a, i32 in
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s5
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:  .LBB85_5: ; %end
+; GFX9-NEXT:  .LBB85_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, v8
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v9
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -11499,7 +12423,7 @@ define inreg <8 x i8> @bitcast_v2f32_to_v8i8_scalar(<2 x float> inreg %a, i32 in
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB85_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB85_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b64 s[2:3], s[0:1], 24
 ; GFX11-NEXT:    s_lshr_b32 s3, s1, 24
@@ -11507,9 +12431,22 @@ define inreg <8 x i8> @bitcast_v2f32_to_v8i8_scalar(<2 x float> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b32 s7, s1, 8
 ; GFX11-NEXT:    s_lshr_b32 s6, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s8, s0, 8
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB85_4
-; GFX11-NEXT:  .LBB85_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB85_3
+; GFX11-NEXT:  .LBB85_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr2
+; GFX11-NEXT:    ; implicit-def: $sgpr7
+; GFX11-NEXT:    ; implicit-def: $sgpr5
+; GFX11-NEXT:    ; implicit-def: $sgpr3
+; GFX11-NEXT:  .LBB85_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB85_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v9, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v8, s0, 1.0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -11519,22 +12456,14 @@ define inreg <8 x i8> @bitcast_v2f32_to_v8i8_scalar(<2 x float> inreg %a, i32 in
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v9
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v8
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v8
-; GFX11-NEXT:    s_branch .LBB85_5
-; GFX11-NEXT:  .LBB85_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr2
-; GFX11-NEXT:    ; implicit-def: $sgpr7
-; GFX11-NEXT:    ; implicit-def: $sgpr5
-; GFX11-NEXT:    ; implicit-def: $sgpr3
-; GFX11-NEXT:    s_branch .LBB85_2
-; GFX11-NEXT:  .LBB85_4:
+; GFX11-NEXT:    s_branch .LBB85_6
+; GFX11-NEXT:  .LBB85_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s0 :: v_dual_mov_b32 v9, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v1, s8 :: v_dual_mov_b32 v2, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v5, s7 :: v_dual_mov_b32 v6, s5
 ; GFX11-NEXT:    v_mov_b32_e32 v7, s3
 ; GFX11-NEXT:    v_mov_b32_e32 v3, s2
-; GFX11-NEXT:  .LBB85_5: ; %end
+; GFX11-NEXT:  .LBB85_6: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v0, v8
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v9
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -11893,7 +12822,7 @@ define inreg <2 x float> @bitcast_v8i8_to_v2f32_scalar(<8 x i8> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB87_4
+; SI-NEXT:    s_cbranch_scc0 .LBB87_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -11913,8 +12842,17 @@ define inreg <2 x float> @bitcast_v8i8_to_v2f32_scalar(<8 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_or_b32 s5, s5, s6
-; SI-NEXT:    s_cbranch_execnz .LBB87_3
-; SI-NEXT:  .LBB87_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB87_3
+; SI-NEXT:  .LBB87_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; SI-NEXT:  .LBB87_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB87_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -11941,19 +12879,16 @@ define inreg <2 x float> @bitcast_v8i8_to_v2f32_scalar(<8 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_add_i32 s4, s4, 0x3000000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
-; SI-NEXT:  .LBB87_3: ; %end
+; SI-NEXT:  .LBB87_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB87_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; SI-NEXT:    s_branch .LBB87_2
 ;
 ; VI-LABEL: bitcast_v8i8_to_v2f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB87_4
+; VI-NEXT:    s_cbranch_scc0 .LBB87_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v2, s19
@@ -11968,8 +12903,17 @@ define inreg <2 x float> @bitcast_v8i8_to_v2f32_scalar(<8 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_perm_b32 v1, s22, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v1, v2, v1
-; VI-NEXT:    s_cbranch_execnz .LBB87_3
-; VI-NEXT:  .LBB87_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB87_3
+; VI-NEXT:  .LBB87_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; VI-NEXT:  .LBB87_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB87_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -11991,17 +12935,14 @@ define inreg <2 x float> @bitcast_v8i8_to_v2f32_scalar(<8 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_or_b32_sdwa v1, v1, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
-; VI-NEXT:  .LBB87_3: ; %end
+; VI-NEXT:  .LBB87_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB87_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; VI-NEXT:    s_branch .LBB87_2
 ;
 ; GFX9-LABEL: bitcast_v8i8_to_v2f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB87_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB87_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s19
@@ -12016,8 +12957,17 @@ define inreg <2 x float> @bitcast_v8i8_to_v2f32_scalar(<8 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_perm_b32 v1, s22, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_or_b32_e32 v1, v2, v1
-; GFX9-NEXT:    s_cbranch_execnz .LBB87_3
-; GFX9-NEXT:  .LBB87_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB87_3
+; GFX9-NEXT:  .LBB87_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GFX9-NEXT:  .LBB87_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB87_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -12038,18 +12988,15 @@ define inreg <2 x float> @bitcast_v8i8_to_v2f32_scalar(<8 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_add_u32_e32 v2, 0x300, v2
 ; GFX9-NEXT:    v_add_u32_sdwa v1, v1, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB87_3: ; %end
+; GFX9-NEXT:  .LBB87_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB87_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX9-NEXT:    s_branch .LBB87_2
 ;
 ; GFX11-LABEL: bitcast_v8i8_to_v2f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB87_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB87_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)
@@ -12063,9 +13010,17 @@ define inreg <2 x float> @bitcast_v8i8_to_v2f32_scalar(<8 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    v_or_b32_e32 v0, v3, v0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_or_b32_e32 v1, v4, v1
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB87_3
-; GFX11-NEXT:  .LBB87_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB87_3
+; GFX11-NEXT:  .LBB87_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GFX11-NEXT:  .LBB87_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB87_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -12090,11 +13045,8 @@ define inreg <2 x float> @bitcast_v8i8_to_v2f32_scalar(<8 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-NEXT:    v_or_b32_e32 v0, v1, v2
 ; GFX11-NEXT:    v_or_b32_e32 v1, v3, v4
-; GFX11-NEXT:  .LBB87_3: ; %end
+; GFX11-NEXT:  .LBB87_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB87_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX11-NEXT:    s_branch .LBB87_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -12231,7 +13183,7 @@ define inreg <4 x half> @bitcast_v4i16_to_v4f16_scalar(<4 x i16> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b32 s10, s17, 16
 ; SI-NEXT:    s_lshr_b32 s11, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB89_4
+; SI-NEXT:    s_cbranch_scc0 .LBB89_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s10, 16
@@ -12240,9 +13192,19 @@ define inreg <4 x half> @bitcast_v4i16_to_v4f16_scalar(<4 x i16> inreg %a, i32 i
 ; SI-NEXT:    s_or_b32 s13, s5, s6
 ; SI-NEXT:    s_or_b32 s4, s4, s12
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[12:13], 16
+; SI-NEXT:    s_mov_b64 s[8:9], 0
 ; SI-NEXT:    s_mov_b32 s5, s13
-; SI-NEXT:    s_cbranch_execnz .LBB89_3
-; SI-NEXT:  .LBB89_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB89_3
+; SI-NEXT:  .LBB89_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB89_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB89_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s11, 16
@@ -12255,7 +13217,7 @@ define inreg <4 x half> @bitcast_v4i16_to_v4f16_scalar(<4 x i16> inreg %a, i32 i
 ; SI-NEXT:    s_add_i32 s5, s5, 0x30000
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[4:5], 16
 ; SI-NEXT:    s_lshr_b32 s10, s5, 16
-; SI-NEXT:  .LBB89_3: ; %end
+; SI-NEXT:  .LBB89_5: ; %end
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s6
@@ -12265,19 +13227,23 @@ define inreg <4 x half> @bitcast_v4i16_to_v4f16_scalar(<4 x i16> inreg %a, i32 i
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB89_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB89_2
 ;
 ; VI-LABEL: bitcast_v4i16_to_v4f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB89_4
+; VI-NEXT:    s_cbranch_scc0 .LBB89_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB89_3
-; VI-NEXT:  .LBB89_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB89_3
+; VI-NEXT:  .LBB89_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB89_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB89_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_add_i32 s7, s17, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff0000
@@ -12288,27 +13254,31 @@ define inreg <4 x half> @bitcast_v4i16_to_v4f16_scalar(<4 x i16> inreg %a, i32 i
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB89_3: ; %end
+; VI-NEXT:  .LBB89_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB89_4:
-; VI-NEXT:    s_branch .LBB89_2
 ;
 ; GFX9-LABEL: bitcast_v4i16_to_v4f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB89_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB89_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB89_4
-; GFX9-NEXT:  .LBB89_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB89_3
+; GFX9-NEXT:  .LBB89_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB89_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB89_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB89_3:
-; GFX9-NEXT:    s_branch .LBB89_2
-; GFX9-NEXT:  .LBB89_4:
+; GFX9-NEXT:  .LBB89_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -12318,16 +13288,19 @@ define inreg <4 x half> @bitcast_v4i16_to_v4f16_scalar(<4 x i16> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB89_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB89_4
-; GFX11-NEXT:  .LBB89_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB89_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB89_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB89_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB89_3:
-; GFX11-NEXT:    s_branch .LBB89_2
 ; GFX11-NEXT:  .LBB89_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -12459,10 +13432,18 @@ define inreg <4 x i16> @bitcast_v4f16_to_v4i16_scalar(<4 x half> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b32 s6, s17, 16
 ; SI-NEXT:    s_lshr_b32 s7, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB91_3
+; SI-NEXT:    s_cbranch_scc0 .LBB91_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB91_4
-; SI-NEXT:  .LBB91_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB91_3
+; SI-NEXT:  .LBB91_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB91_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB91_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s7
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
@@ -12480,15 +13461,13 @@ define inreg <4 x i16> @bitcast_v4f16_to_v4i16_scalar(<4 x half> inreg %a, i32 i
 ; SI-NEXT:    v_or_b32_e32 v1, v2, v1
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[0:1], 16
 ; SI-NEXT:    v_or_b32_e32 v0, v5, v0
-; SI-NEXT:    s_branch .LBB91_5
-; SI-NEXT:  .LBB91_3:
-; SI-NEXT:    s_branch .LBB91_2
-; SI-NEXT:  .LBB91_4:
+; SI-NEXT:    s_branch .LBB91_6
+; SI-NEXT:  .LBB91_5:
 ; SI-NEXT:    v_mov_b32_e32 v4, s6
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v2, s7
-; SI-NEXT:  .LBB91_5: ; %end
+; SI-NEXT:  .LBB91_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
@@ -12501,10 +13480,18 @@ define inreg <4 x i16> @bitcast_v4f16_to_v4i16_scalar(<4 x half> inreg %a, i32 i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB91_3
+; VI-NEXT:    s_cbranch_scc0 .LBB91_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB91_4
-; VI-NEXT:  .LBB91_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB91_3
+; VI-NEXT:  .LBB91_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB91_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB91_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
@@ -12517,9 +13504,7 @@ define inreg <4 x i16> @bitcast_v4f16_to_v4i16_scalar(<4 x half> inreg %a, i32 i
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v2, v3
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB91_3:
-; VI-NEXT:    s_branch .LBB91_2
-; VI-NEXT:  .LBB91_4:
+; VI-NEXT:  .LBB91_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -12528,17 +13513,23 @@ define inreg <4 x i16> @bitcast_v4f16_to_v4i16_scalar(<4 x half> inreg %a, i32 i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB91_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB91_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB91_4
-; GFX9-NEXT:  .LBB91_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB91_3
+; GFX9-NEXT:  .LBB91_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB91_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB91_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB91_3:
-; GFX9-NEXT:    s_branch .LBB91_2
-; GFX9-NEXT:  .LBB91_4:
+; GFX9-NEXT:  .LBB91_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -12548,16 +13539,19 @@ define inreg <4 x i16> @bitcast_v4f16_to_v4i16_scalar(<4 x half> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB91_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB91_4
-; GFX11-NEXT:  .LBB91_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB91_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB91_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB91_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB91_3:
-; GFX11-NEXT:    s_branch .LBB91_2
 ; GFX11-NEXT:  .LBB91_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -12695,14 +13689,26 @@ define inreg <4 x bfloat> @bitcast_v4i16_to_v4bf16_scalar(<4 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s11, s17, 16
 ; SI-NEXT:    s_lshr_b32 s10, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB93_4
+; SI-NEXT:    s_cbranch_scc0 .LBB93_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s7, s16, 16
 ; SI-NEXT:    s_lshl_b32 s9, s10, 16
 ; SI-NEXT:    s_lshl_b32 s6, s17, 16
 ; SI-NEXT:    s_lshl_b32 s8, s11, 16
-; SI-NEXT:    s_cbranch_execnz .LBB93_3
-; SI-NEXT:  .LBB93_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB93_3
+; SI-NEXT:  .LBB93_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:  .LBB93_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB93_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s11, 16
@@ -12717,7 +13723,7 @@ define inreg <4 x bfloat> @bitcast_v4i16_to_v4bf16_scalar(<4 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s7, s5, 16
 ; SI-NEXT:    s_and_b32 s8, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s4, 16
-; SI-NEXT:  .LBB93_3: ; %end
+; SI-NEXT:  .LBB93_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s9
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s7
@@ -12727,21 +13733,23 @@ define inreg <4 x bfloat> @bitcast_v4i16_to_v4bf16_scalar(<4 x i16> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB93_4:
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    s_branch .LBB93_2
 ;
 ; VI-LABEL: bitcast_v4i16_to_v4bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB93_4
+; VI-NEXT:    s_cbranch_scc0 .LBB93_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB93_3
-; VI-NEXT:  .LBB93_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB93_3
+; VI-NEXT:  .LBB93_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB93_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB93_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_add_i32 s7, s17, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff0000
@@ -12752,27 +13760,31 @@ define inreg <4 x bfloat> @bitcast_v4i16_to_v4bf16_scalar(<4 x i16> inreg %a, i3
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB93_3: ; %end
+; VI-NEXT:  .LBB93_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB93_4:
-; VI-NEXT:    s_branch .LBB93_2
 ;
 ; GFX9-LABEL: bitcast_v4i16_to_v4bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB93_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB93_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB93_4
-; GFX9-NEXT:  .LBB93_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB93_3
+; GFX9-NEXT:  .LBB93_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB93_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB93_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB93_3:
-; GFX9-NEXT:    s_branch .LBB93_2
-; GFX9-NEXT:  .LBB93_4:
+; GFX9-NEXT:  .LBB93_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -12782,16 +13794,19 @@ define inreg <4 x bfloat> @bitcast_v4i16_to_v4bf16_scalar(<4 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB93_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB93_4
-; GFX11-NEXT:  .LBB93_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB93_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB93_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB93_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB93_3:
-; GFX11-NEXT:    s_branch .LBB93_2
 ; GFX11-NEXT:  .LBB93_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -13090,14 +14105,26 @@ define inreg <4 x i16> @bitcast_v4bf16_to_v4i16_scalar(<4 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s6
 ; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s5
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s4
-; SI-NEXT:    s_cbranch_scc0 .LBB95_4
+; SI-NEXT:    s_cbranch_scc0 .LBB95_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v7
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v4
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v2
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v0
-; SI-NEXT:    s_cbranch_execnz .LBB95_3
-; SI-NEXT:  .LBB95_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB95_3
+; SI-NEXT:  .LBB95_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:    ; implicit-def: $vgpr6
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:    ; implicit-def: $vgpr5
+; SI-NEXT:  .LBB95_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB95_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v7
 ; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v1
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v4
@@ -13112,7 +14139,7 @@ define inreg <4 x i16> @bitcast_v4bf16_to_v4i16_scalar(<4 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[4:5], 16
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v6
 ; SI-NEXT:    v_lshr_b64 v[6:7], v[0:1], 16
-; SI-NEXT:  .LBB95_3: ; %end
+; SI-NEXT:  .LBB95_5: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
@@ -13120,21 +14147,23 @@ define inreg <4 x i16> @bitcast_v4bf16_to_v4i16_scalar(<4 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v2
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB95_4:
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    ; implicit-def: $vgpr6
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    ; implicit-def: $vgpr5
-; SI-NEXT:    s_branch .LBB95_2
 ;
 ; VI-LABEL: bitcast_v4bf16_to_v4i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB95_3
+; VI-NEXT:    s_cbranch_scc0 .LBB95_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB95_4
-; VI-NEXT:  .LBB95_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB95_3
+; VI-NEXT:  .LBB95_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB95_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB95_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v3, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v3
@@ -13174,9 +14203,7 @@ define inreg <4 x i16> @bitcast_v4bf16_to_v4i16_scalar(<4 x bfloat> inreg %a, i3
 ; VI-NEXT:    v_lshrrev_b64 v[0:1], 16, v[0:1]
 ; VI-NEXT:    v_mov_b32_e32 v1, v2
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB95_3:
-; VI-NEXT:    s_branch .LBB95_2
-; VI-NEXT:  .LBB95_4:
+; VI-NEXT:  .LBB95_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -13185,10 +14212,18 @@ define inreg <4 x i16> @bitcast_v4bf16_to_v4i16_scalar(<4 x bfloat> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB95_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB95_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB95_4
-; GFX9-NEXT:  .LBB95_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB95_3
+; GFX9-NEXT:  .LBB95_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB95_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB95_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -13228,9 +14263,7 @@ define inreg <4 x i16> @bitcast_v4bf16_to_v4i16_scalar(<4 x bfloat> inreg %a, i3
 ; GFX9-NEXT:    v_and_or_b32 v0, v3, v4, v0
 ; GFX9-NEXT:    v_and_or_b32 v1, v1, v4, v2
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB95_3:
-; GFX9-NEXT:    s_branch .LBB95_2
-; GFX9-NEXT:  .LBB95_4:
+; GFX9-NEXT:  .LBB95_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -13240,11 +14273,16 @@ define inreg <4 x i16> @bitcast_v4bf16_to_v4i16_scalar(<4 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB95_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB95_4
-; GFX11-TRUE16-NEXT:  .LBB95_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB95_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-TRUE16-NEXT:  .LBB95_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB95_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s2, 0, s1
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s1, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -13281,8 +14319,6 @@ define inreg <4 x i16> @bitcast_v4bf16_to_v4i16_scalar(<4 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v0, v8, v9, vcc_lo
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.h
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB95_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB95_2
 ; GFX11-TRUE16-NEXT:  .LBB95_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -13292,11 +14328,16 @@ define inreg <4 x i16> @bitcast_v4bf16_to_v4i16_scalar(<4 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB95_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB95_4
-; GFX11-FAKE16-NEXT:  .LBB95_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB95_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-FAKE16-NEXT:  .LBB95_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB95_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s2, 0, s1
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s1, s1, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -13336,8 +14377,6 @@ define inreg <4 x i16> @bitcast_v4bf16_to_v4i16_scalar(<4 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_and_or_b32 v0, 0xffff0000, v0, v2
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB95_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB95_2
 ; GFX11-FAKE16-NEXT:  .LBB95_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -13602,7 +14641,7 @@ define inreg <8 x i8> @bitcast_v4i16_to_v8i8_scalar(<4 x i16> inreg %a, i32 inre
 ; SI-NEXT:    s_lshr_b32 s14, s17, 16
 ; SI-NEXT:    s_lshr_b32 s15, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB97_4
+; SI-NEXT:    s_cbranch_scc0 .LBB97_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -13615,8 +14654,22 @@ define inreg <8 x i8> @bitcast_v4i16_to_v8i8_scalar(<4 x i16> inreg %a, i32 inre
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[4:5], 8
 ; SI-NEXT:    s_lshr_b32 s9, s5, 8
 ; SI-NEXT:    s_bfe_u32 s7, s14, 0x80008
-; SI-NEXT:    s_cbranch_execnz .LBB97_3
-; SI-NEXT:  .LBB97_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB97_3
+; SI-NEXT:  .LBB97_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB97_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s11, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s11, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB97_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -13633,7 +14686,7 @@ define inreg <8 x i8> @bitcast_v4i16_to_v8i8_scalar(<4 x i16> inreg %a, i32 inre
 ; SI-NEXT:    s_lshr_b32 s7, s5, 24
 ; SI-NEXT:    s_lshr_b32 s14, s5, 16
 ; SI-NEXT:    s_lshr_b32 s9, s5, 8
-; SI-NEXT:  .LBB97_3: ; %end
+; SI-NEXT:  .LBB97_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s10
 ; SI-NEXT:    v_mov_b32_e32 v2, s8
@@ -13643,20 +14696,12 @@ define inreg <8 x i8> @bitcast_v4i16_to_v8i8_scalar(<4 x i16> inreg %a, i32 inre
 ; SI-NEXT:    v_mov_b32_e32 v6, s14
 ; SI-NEXT:    v_mov_b32_e32 v7, s7
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB97_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB97_2
 ;
 ; VI-LABEL: bitcast_v4i16_to_v8i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB97_4
+; VI-NEXT:    s_cbranch_scc0 .LBB97_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; VI-NEXT:    s_lshr_b32 s10, s17, 24
@@ -13664,9 +14709,24 @@ define inreg <8 x i8> @bitcast_v4i16_to_v8i8_scalar(<4 x i16> inreg %a, i32 inre
 ; VI-NEXT:    s_lshr_b32 s5, s17, 8
 ; VI-NEXT:    s_lshr_b32 s11, s16, 16
 ; VI-NEXT:    s_lshr_b32 s12, s16, 8
+; VI-NEXT:    s_mov_b64 s[6:7], 0
 ; VI-NEXT:    s_mov_b32 s9, s17
-; VI-NEXT:    s_cbranch_execnz .LBB97_3
-; VI-NEXT:  .LBB97_2: ; %cmp.true
+; VI-NEXT:    s_branch .LBB97_3
+; VI-NEXT:  .LBB97_2:
+; VI-NEXT:    s_mov_b64 s[6:7], -1
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr9
+; VI-NEXT:    ; implicit-def: $sgpr5
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:  .LBB97_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; VI-NEXT:    s_cselect_b32 s6, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s6, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB97_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s5, s17, 16
 ; VI-NEXT:    s_add_i32 s9, s17, 3
 ; VI-NEXT:    s_add_i32 s8, s5, 3
@@ -13683,7 +14743,7 @@ define inreg <8 x i8> @bitcast_v4i16_to_v8i8_scalar(<4 x i16> inreg %a, i32 inre
 ; VI-NEXT:    s_lshr_b32 s11, s6, 16
 ; VI-NEXT:    s_lshr_b32 s12, s6, 8
 ; VI-NEXT:    s_bfe_u32 s10, s8, 0x80008
-; VI-NEXT:  .LBB97_3: ; %end
+; VI-NEXT:  .LBB97_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s12
 ; VI-NEXT:    v_mov_b32_e32 v2, s11
@@ -13693,21 +14753,12 @@ define inreg <8 x i8> @bitcast_v4i16_to_v8i8_scalar(<4 x i16> inreg %a, i32 inre
 ; VI-NEXT:    v_mov_b32_e32 v6, s8
 ; VI-NEXT:    v_mov_b32_e32 v7, s10
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB97_4:
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr9
-; VI-NEXT:    ; implicit-def: $sgpr5
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    s_branch .LBB97_2
 ;
 ; GFX9-LABEL: bitcast_v4i16_to_v8i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB97_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB97_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; GFX9-NEXT:    s_lshr_b32 s5, s17, 24
@@ -13715,8 +14766,22 @@ define inreg <8 x i8> @bitcast_v4i16_to_v8i8_scalar(<4 x i16> inreg %a, i32 inre
 ; GFX9-NEXT:    s_lshr_b32 s10, s17, 8
 ; GFX9-NEXT:    s_lshr_b32 s9, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s11, s16, 8
-; GFX9-NEXT:    s_cbranch_execnz .LBB97_4
-; GFX9-NEXT:  .LBB97_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[6:7], 0
+; GFX9-NEXT:    s_branch .LBB97_3
+; GFX9-NEXT:  .LBB97_2:
+; GFX9-NEXT:    s_mov_b64 s[6:7], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr9
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr5
+; GFX9-NEXT:  .LBB97_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX9-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB97_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v9, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v8, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_lshrrev_b64 v[3:4], 24, v[8:9]
@@ -13725,16 +14790,8 @@ define inreg <8 x i8> @bitcast_v4i16_to_v8i8_scalar(<4 x i16> inreg %a, i32 inre
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v9
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v8
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v8
-; GFX9-NEXT:    s_branch .LBB97_5
-; GFX9-NEXT:  .LBB97_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr9
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr5
-; GFX9-NEXT:    s_branch .LBB97_2
-; GFX9-NEXT:  .LBB97_4:
+; GFX9-NEXT:    s_branch .LBB97_6
+; GFX9-NEXT:  .LBB97_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s11
@@ -13743,7 +14800,7 @@ define inreg <8 x i8> @bitcast_v4i16_to_v8i8_scalar(<4 x i16> inreg %a, i32 inre
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s5
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:  .LBB97_5: ; %end
+; GFX9-NEXT:  .LBB97_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, v8
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v9
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -13753,7 +14810,7 @@ define inreg <8 x i8> @bitcast_v4i16_to_v8i8_scalar(<4 x i16> inreg %a, i32 inre
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB97_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB97_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b64 s[2:3], s[0:1], 24
 ; GFX11-NEXT:    s_lshr_b32 s3, s1, 24
@@ -13761,9 +14818,22 @@ define inreg <8 x i8> @bitcast_v4i16_to_v8i8_scalar(<4 x i16> inreg %a, i32 inre
 ; GFX11-NEXT:    s_lshr_b32 s7, s1, 8
 ; GFX11-NEXT:    s_lshr_b32 s6, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s8, s0, 8
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB97_4
-; GFX11-NEXT:  .LBB97_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB97_3
+; GFX11-NEXT:  .LBB97_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr2
+; GFX11-NEXT:    ; implicit-def: $sgpr7
+; GFX11-NEXT:    ; implicit-def: $sgpr5
+; GFX11-NEXT:    ; implicit-def: $sgpr3
+; GFX11-NEXT:  .LBB97_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB97_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v9, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v8, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -13773,22 +14843,14 @@ define inreg <8 x i8> @bitcast_v4i16_to_v8i8_scalar(<4 x i16> inreg %a, i32 inre
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v9
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v8
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v8
-; GFX11-NEXT:    s_branch .LBB97_5
-; GFX11-NEXT:  .LBB97_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr2
-; GFX11-NEXT:    ; implicit-def: $sgpr7
-; GFX11-NEXT:    ; implicit-def: $sgpr5
-; GFX11-NEXT:    ; implicit-def: $sgpr3
-; GFX11-NEXT:    s_branch .LBB97_2
-; GFX11-NEXT:  .LBB97_4:
+; GFX11-NEXT:    s_branch .LBB97_6
+; GFX11-NEXT:  .LBB97_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s0 :: v_dual_mov_b32 v9, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v1, s8 :: v_dual_mov_b32 v2, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v5, s7 :: v_dual_mov_b32 v6, s5
 ; GFX11-NEXT:    v_mov_b32_e32 v7, s3
 ; GFX11-NEXT:    v_mov_b32_e32 v3, s2
-; GFX11-NEXT:  .LBB97_5: ; %end
+; GFX11-NEXT:  .LBB97_6: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v0, v8
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v9
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -14155,7 +15217,7 @@ define inreg <4 x i16> @bitcast_v8i8_to_v4i16_scalar(<8 x i8> inreg %a, i32 inre
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB99_4
+; SI-NEXT:    s_cbranch_scc0 .LBB99_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -14177,9 +15239,20 @@ define inreg <4 x i16> @bitcast_v8i8_to_v4i16_scalar(<8 x i8> inreg %a, i32 inre
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[10:11], 16
 ; SI-NEXT:    s_or_b32 s4, s4, s10
 ; SI-NEXT:    s_lshr_b32 s7, s8, 16
+; SI-NEXT:    s_mov_b64 s[8:9], 0
 ; SI-NEXT:    s_mov_b32 s5, s11
-; SI-NEXT:    s_cbranch_execnz .LBB99_3
-; SI-NEXT:  .LBB99_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB99_3
+; SI-NEXT:  .LBB99_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB99_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB99_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -14208,7 +15281,7 @@ define inreg <4 x i16> @bitcast_v8i8_to_v4i16_scalar(<8 x i8> inreg %a, i32 inre
 ; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[4:5], 16
 ; SI-NEXT:    s_lshr_b32 s7, s5, 16
-; SI-NEXT:  .LBB99_3: ; %end
+; SI-NEXT:  .LBB99_5: ; %end
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s6
@@ -14218,17 +15291,12 @@ define inreg <4 x i16> @bitcast_v8i8_to_v4i16_scalar(<8 x i8> inreg %a, i32 inre
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB99_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB99_2
 ;
 ; VI-LABEL: bitcast_v8i8_to_v4i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB99_4
+; VI-NEXT:    s_cbranch_scc0 .LBB99_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v2, s19
@@ -14243,8 +15311,17 @@ define inreg <4 x i16> @bitcast_v8i8_to_v4i16_scalar(<8 x i8> inreg %a, i32 inre
 ; VI-NEXT:    v_perm_b32 v1, s22, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v1, v2, v1
-; VI-NEXT:    s_cbranch_execnz .LBB99_3
-; VI-NEXT:  .LBB99_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB99_3
+; VI-NEXT:  .LBB99_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; VI-NEXT:  .LBB99_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB99_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -14266,17 +15343,14 @@ define inreg <4 x i16> @bitcast_v8i8_to_v4i16_scalar(<8 x i8> inreg %a, i32 inre
 ; VI-NEXT:    v_or_b32_sdwa v1, v1, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
-; VI-NEXT:  .LBB99_3: ; %end
+; VI-NEXT:  .LBB99_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB99_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; VI-NEXT:    s_branch .LBB99_2
 ;
 ; GFX9-LABEL: bitcast_v8i8_to_v4i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB99_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB99_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s19
@@ -14291,8 +15365,17 @@ define inreg <4 x i16> @bitcast_v8i8_to_v4i16_scalar(<8 x i8> inreg %a, i32 inre
 ; GFX9-NEXT:    v_perm_b32 v1, s22, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_or_b32_e32 v1, v2, v1
-; GFX9-NEXT:    s_cbranch_execnz .LBB99_3
-; GFX9-NEXT:  .LBB99_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB99_3
+; GFX9-NEXT:  .LBB99_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GFX9-NEXT:  .LBB99_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB99_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -14313,18 +15396,15 @@ define inreg <4 x i16> @bitcast_v8i8_to_v4i16_scalar(<8 x i8> inreg %a, i32 inre
 ; GFX9-NEXT:    v_add_u32_e32 v2, 0x300, v2
 ; GFX9-NEXT:    v_add_u32_sdwa v1, v1, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB99_3: ; %end
+; GFX9-NEXT:  .LBB99_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB99_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX9-NEXT:    s_branch .LBB99_2
 ;
 ; GFX11-LABEL: bitcast_v8i8_to_v4i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB99_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB99_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)
@@ -14338,9 +15418,17 @@ define inreg <4 x i16> @bitcast_v8i8_to_v4i16_scalar(<8 x i8> inreg %a, i32 inre
 ; GFX11-NEXT:    v_or_b32_e32 v0, v3, v0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_or_b32_e32 v1, v4, v1
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB99_3
-; GFX11-NEXT:  .LBB99_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB99_3
+; GFX11-NEXT:  .LBB99_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GFX11-NEXT:  .LBB99_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB99_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -14365,11 +15453,8 @@ define inreg <4 x i16> @bitcast_v8i8_to_v4i16_scalar(<8 x i8> inreg %a, i32 inre
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-NEXT:    v_or_b32_e32 v0, v1, v2
 ; GFX11-NEXT:    v_or_b32_e32 v1, v3, v4
-; GFX11-NEXT:  .LBB99_3: ; %end
+; GFX11-NEXT:  .LBB99_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB99_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX11-NEXT:    s_branch .LBB99_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -14513,14 +15598,26 @@ define inreg <4 x bfloat> @bitcast_v4f16_to_v4bf16_scalar(<4 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s7, s17, 16
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB101_3
+; SI-NEXT:    s_cbranch_scc0 .LBB101_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s8, s16, 16
 ; SI-NEXT:    s_lshl_b32 s9, s6, 16
 ; SI-NEXT:    s_lshl_b32 s10, s17, 16
 ; SI-NEXT:    s_lshl_b32 s11, s7, 16
-; SI-NEXT:    s_cbranch_execnz .LBB101_4
-; SI-NEXT:  .LBB101_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB101_3
+; SI-NEXT:  .LBB101_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:  .LBB101_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB101_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s7
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s17
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s6
@@ -14537,19 +15634,13 @@ define inreg <4 x bfloat> @bitcast_v4f16_to_v4bf16_scalar(<4 x half> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v4
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v5
-; SI-NEXT:    s_branch .LBB101_5
-; SI-NEXT:  .LBB101_3:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    s_branch .LBB101_2
-; SI-NEXT:  .LBB101_4:
+; SI-NEXT:    s_branch .LBB101_6
+; SI-NEXT:  .LBB101_5:
 ; SI-NEXT:    v_mov_b32_e32 v3, s11
 ; SI-NEXT:    v_mov_b32_e32 v2, s10
 ; SI-NEXT:    v_mov_b32_e32 v1, s9
 ; SI-NEXT:    v_mov_b32_e32 v0, s8
-; SI-NEXT:  .LBB101_5: ; %end
+; SI-NEXT:  .LBB101_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
@@ -14564,10 +15655,18 @@ define inreg <4 x bfloat> @bitcast_v4f16_to_v4bf16_scalar(<4 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB101_3
+; VI-NEXT:    s_cbranch_scc0 .LBB101_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB101_4
-; VI-NEXT:  .LBB101_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB101_3
+; VI-NEXT:  .LBB101_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB101_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB101_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
@@ -14580,9 +15679,7 @@ define inreg <4 x bfloat> @bitcast_v4f16_to_v4bf16_scalar(<4 x half> inreg %a, i
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v2, v3
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB101_3:
-; VI-NEXT:    s_branch .LBB101_2
-; VI-NEXT:  .LBB101_4:
+; VI-NEXT:  .LBB101_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -14591,17 +15688,23 @@ define inreg <4 x bfloat> @bitcast_v4f16_to_v4bf16_scalar(<4 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB101_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB101_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB101_4
-; GFX9-NEXT:  .LBB101_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB101_3
+; GFX9-NEXT:  .LBB101_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB101_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB101_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB101_3:
-; GFX9-NEXT:    s_branch .LBB101_2
-; GFX9-NEXT:  .LBB101_4:
+; GFX9-NEXT:  .LBB101_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -14611,16 +15714,19 @@ define inreg <4 x bfloat> @bitcast_v4f16_to_v4bf16_scalar(<4 x half> inreg %a, i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB101_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccnz .LBB101_4
-; GFX11-NEXT:  .LBB101_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB101_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s2, -1
+; GFX11-NEXT:  .LBB101_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB101_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB101_3:
-; GFX11-NEXT:    s_branch .LBB101_2
 ; GFX11-NEXT:  .LBB101_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -14930,7 +16036,7 @@ define inreg <4 x half> @bitcast_v4bf16_to_v4f16_scalar(<4 x bfloat> inreg %a, i
 ; SI-NEXT:    v_mul_f32_e64 v11, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s5
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s7
-; SI-NEXT:    s_cbranch_scc0 .LBB103_4
+; SI-NEXT:    s_cbranch_scc0 .LBB103_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v11
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[3:4], 16
@@ -14938,8 +16044,19 @@ define inreg <4 x half> @bitcast_v4bf16_to_v4f16_scalar(<4 x bfloat> inreg %a, i
 ; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v12
 ; SI-NEXT:    v_lshr_b64 v[9:10], v[0:1], 16
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[7:8], 16
-; SI-NEXT:    s_cbranch_execnz .LBB103_3
-; SI-NEXT:  .LBB103_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB103_3
+; SI-NEXT:  .LBB103_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr5
+; SI-NEXT:    ; implicit-def: $vgpr9
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:  .LBB103_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB103_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v12
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v7
 ; SI-NEXT:    v_add_f32_e32 v7, 0x40c00000, v1
@@ -14954,7 +16071,7 @@ define inreg <4 x half> @bitcast_v4bf16_to_v4f16_scalar(<4 x bfloat> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[3:4], 16
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v7
 ; SI-NEXT:    v_lshr_b64 v[9:10], v[0:1], 16
-; SI-NEXT:  .LBB103_3: ; %end
+; SI-NEXT:  .LBB103_5: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v9
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
@@ -14962,20 +16079,23 @@ define inreg <4 x half> @bitcast_v4bf16_to_v4f16_scalar(<4 x bfloat> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v2
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB103_4:
-; SI-NEXT:    ; implicit-def: $vgpr5
-; SI-NEXT:    ; implicit-def: $vgpr9
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    s_branch .LBB103_2
 ;
 ; VI-LABEL: bitcast_v4bf16_to_v4f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB103_3
+; VI-NEXT:    s_cbranch_scc0 .LBB103_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB103_4
-; VI-NEXT:  .LBB103_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB103_3
+; VI-NEXT:  .LBB103_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB103_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB103_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v3, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v3
@@ -15015,9 +16135,7 @@ define inreg <4 x half> @bitcast_v4bf16_to_v4f16_scalar(<4 x bfloat> inreg %a, i
 ; VI-NEXT:    v_lshrrev_b64 v[0:1], 16, v[0:1]
 ; VI-NEXT:    v_mov_b32_e32 v1, v2
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB103_3:
-; VI-NEXT:    s_branch .LBB103_2
-; VI-NEXT:  .LBB103_4:
+; VI-NEXT:  .LBB103_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -15026,10 +16144,18 @@ define inreg <4 x half> @bitcast_v4bf16_to_v4f16_scalar(<4 x bfloat> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB103_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB103_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB103_4
-; GFX9-NEXT:  .LBB103_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB103_3
+; GFX9-NEXT:  .LBB103_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB103_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB103_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -15071,9 +16197,7 @@ define inreg <4 x half> @bitcast_v4bf16_to_v4f16_scalar(<4 x bfloat> inreg %a, i
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v3, 16, v0
 ; GFX9-NEXT:    v_lshl_or_b32 v1, v1, 16, v2
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB103_3:
-; GFX9-NEXT:    s_branch .LBB103_2
-; GFX9-NEXT:  .LBB103_4:
+; GFX9-NEXT:  .LBB103_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -15083,11 +16207,16 @@ define inreg <4 x half> @bitcast_v4bf16_to_v4f16_scalar(<4 x bfloat> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB103_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB103_4
-; GFX11-TRUE16-NEXT:  .LBB103_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB103_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-TRUE16-NEXT:  .LBB103_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB103_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s2, 0, s1
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s1, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -15131,8 +16260,6 @@ define inreg <4 x half> @bitcast_v4bf16_to_v4f16_scalar(<4 x bfloat> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v3
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v2.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB103_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB103_2
 ; GFX11-TRUE16-NEXT:  .LBB103_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
@@ -15142,11 +16269,16 @@ define inreg <4 x half> @bitcast_v4bf16_to_v4f16_scalar(<4 x bfloat> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB103_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB103_4
-; GFX11-FAKE16-NEXT:  .LBB103_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB103_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
+; GFX11-FAKE16-NEXT:  .LBB103_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB103_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s2, 0, s1
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s1, s1, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -15191,8 +16323,6 @@ define inreg <4 x half> @bitcast_v4bf16_to_v4f16_scalar(<4 x bfloat> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v1, v4, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v0, 16, v2
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB103_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB103_2
 ; GFX11-FAKE16-NEXT:  .LBB103_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
@@ -15461,7 +16591,7 @@ define inreg <8 x i8> @bitcast_v4f16_to_v8i8_scalar(<4 x half> inreg %a, i32 inr
 ; SI-NEXT:    s_lshr_b32 s14, s17, 16
 ; SI-NEXT:    s_lshr_b32 s15, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s18, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB105_3
+; SI-NEXT:    s_cbranch_scc0 .LBB105_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -15474,8 +16604,22 @@ define inreg <8 x i8> @bitcast_v4f16_to_v8i8_scalar(<4 x half> inreg %a, i32 inr
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[4:5], 8
 ; SI-NEXT:    s_lshr_b32 s7, s5, 8
 ; SI-NEXT:    s_bfe_u32 s9, s14, 0x80008
-; SI-NEXT:    s_cbranch_execnz .LBB105_4
-; SI-NEXT:  .LBB105_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB105_3
+; SI-NEXT:  .LBB105_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:  .LBB105_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s11, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s11, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB105_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s15
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s14
@@ -15497,16 +16641,8 @@ define inreg <8 x i8> @bitcast_v4f16_to_v8i8_scalar(<4 x half> inreg %a, i32 inr
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[9:10], 8
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 8, v10
 ; SI-NEXT:    v_bfe_u32 v7, v6, 8, 8
-; SI-NEXT:    s_branch .LBB105_5
-; SI-NEXT:  .LBB105_3:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    s_branch .LBB105_2
-; SI-NEXT:  .LBB105_4:
+; SI-NEXT:    s_branch .LBB105_6
+; SI-NEXT:  .LBB105_5:
 ; SI-NEXT:    v_mov_b32_e32 v6, s14
 ; SI-NEXT:    v_mov_b32_e32 v7, s9
 ; SI-NEXT:    v_mov_b32_e32 v10, s5
@@ -15515,7 +16651,7 @@ define inreg <8 x i8> @bitcast_v4f16_to_v8i8_scalar(<4 x half> inreg %a, i32 inr
 ; SI-NEXT:    v_mov_b32_e32 v3, s6
 ; SI-NEXT:    v_mov_b32_e32 v4, s8
 ; SI-NEXT:    v_mov_b32_e32 v1, s10
-; SI-NEXT:  .LBB105_5: ; %end
+; SI-NEXT:  .LBB105_6: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, v9
 ; SI-NEXT:    v_mov_b32_e32 v2, v4
 ; SI-NEXT:    v_mov_b32_e32 v4, v10
@@ -15525,7 +16661,7 @@ define inreg <8 x i8> @bitcast_v4f16_to_v8i8_scalar(<4 x half> inreg %a, i32 inr
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB105_3
+; VI-NEXT:    s_cbranch_scc0 .LBB105_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; VI-NEXT:    s_lshr_b32 s8, s17, 24
@@ -15533,8 +16669,22 @@ define inreg <8 x i8> @bitcast_v4f16_to_v8i8_scalar(<4 x half> inreg %a, i32 inr
 ; VI-NEXT:    s_lshr_b32 s5, s17, 8
 ; VI-NEXT:    s_lshr_b32 s11, s16, 16
 ; VI-NEXT:    s_lshr_b32 s9, s16, 8
-; VI-NEXT:    s_cbranch_execnz .LBB105_4
-; VI-NEXT:  .LBB105_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[6:7], 0
+; VI-NEXT:    s_branch .LBB105_3
+; VI-NEXT:  .LBB105_2:
+; VI-NEXT:    s_mov_b64 s[6:7], -1
+; VI-NEXT:    ; implicit-def: $sgpr9
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr5
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:  .LBB105_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; VI-NEXT:    s_cselect_b32 s6, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s6, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB105_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_add_f16_e32 v6, s4, v0
@@ -15552,15 +16702,7 @@ define inreg <8 x i8> @bitcast_v4f16_to_v8i8_scalar(<4 x half> inreg %a, i32 inr
 ; VI-NEXT:    v_bfe_u32 v7, v6, 8, 8
 ; VI-NEXT:    v_mov_b32_e32 v4, v8
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB105_3:
-; VI-NEXT:    ; implicit-def: $sgpr9
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr5
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    s_branch .LBB105_2
-; VI-NEXT:  .LBB105_4:
+; VI-NEXT:  .LBB105_5:
 ; VI-NEXT:    v_mov_b32_e32 v2, s11
 ; VI-NEXT:    v_mov_b32_e32 v6, s10
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
@@ -15575,7 +16717,7 @@ define inreg <8 x i8> @bitcast_v4f16_to_v8i8_scalar(<4 x half> inreg %a, i32 inr
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB105_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB105_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; GFX9-NEXT:    s_lshr_b32 s5, s17, 24
@@ -15583,8 +16725,22 @@ define inreg <8 x i8> @bitcast_v4f16_to_v8i8_scalar(<4 x half> inreg %a, i32 inr
 ; GFX9-NEXT:    s_lshr_b32 s10, s17, 8
 ; GFX9-NEXT:    s_lshr_b32 s9, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s11, s16, 8
-; GFX9-NEXT:    s_cbranch_execnz .LBB105_4
-; GFX9-NEXT:  .LBB105_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[6:7], 0
+; GFX9-NEXT:    s_branch .LBB105_3
+; GFX9-NEXT:  .LBB105_2:
+; GFX9-NEXT:    s_mov_b64 s[6:7], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr9
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:    ; implicit-def: $sgpr5
+; GFX9-NEXT:  .LBB105_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX9-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB105_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v9, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v8, s16, v0 op_sel_hi:[1,0]
@@ -15594,16 +16750,8 @@ define inreg <8 x i8> @bitcast_v4f16_to_v8i8_scalar(<4 x half> inreg %a, i32 inr
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v9
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v8
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v8
-; GFX9-NEXT:    s_branch .LBB105_5
-; GFX9-NEXT:  .LBB105_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr9
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    ; implicit-def: $sgpr5
-; GFX9-NEXT:    s_branch .LBB105_2
-; GFX9-NEXT:  .LBB105_4:
+; GFX9-NEXT:    s_branch .LBB105_6
+; GFX9-NEXT:  .LBB105_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v9, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s11
@@ -15612,7 +16760,7 @@ define inreg <8 x i8> @bitcast_v4f16_to_v8i8_scalar(<4 x half> inreg %a, i32 inr
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v7, s5
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:  .LBB105_5: ; %end
+; GFX9-NEXT:  .LBB105_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, v8
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v9
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -15622,7 +16770,7 @@ define inreg <8 x i8> @bitcast_v4f16_to_v8i8_scalar(<4 x half> inreg %a, i32 inr
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB105_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB105_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b64 s[2:3], s[0:1], 24
 ; GFX11-NEXT:    s_lshr_b32 s3, s1, 24
@@ -15630,9 +16778,22 @@ define inreg <8 x i8> @bitcast_v4f16_to_v8i8_scalar(<4 x half> inreg %a, i32 inr
 ; GFX11-NEXT:    s_lshr_b32 s7, s1, 8
 ; GFX11-NEXT:    s_lshr_b32 s6, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s8, s0, 8
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB105_4
-; GFX11-NEXT:  .LBB105_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB105_3
+; GFX11-NEXT:  .LBB105_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:    ; implicit-def: $sgpr2
+; GFX11-NEXT:    ; implicit-def: $sgpr7
+; GFX11-NEXT:    ; implicit-def: $sgpr5
+; GFX11-NEXT:    ; implicit-def: $sgpr3
+; GFX11-NEXT:  .LBB105_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB105_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v9, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v8, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -15642,22 +16803,14 @@ define inreg <8 x i8> @bitcast_v4f16_to_v8i8_scalar(<4 x half> inreg %a, i32 inr
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v9
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v8
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v8
-; GFX11-NEXT:    s_branch .LBB105_5
-; GFX11-NEXT:  .LBB105_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    ; implicit-def: $sgpr2
-; GFX11-NEXT:    ; implicit-def: $sgpr7
-; GFX11-NEXT:    ; implicit-def: $sgpr5
-; GFX11-NEXT:    ; implicit-def: $sgpr3
-; GFX11-NEXT:    s_branch .LBB105_2
-; GFX11-NEXT:  .LBB105_4:
+; GFX11-NEXT:    s_branch .LBB105_6
+; GFX11-NEXT:  .LBB105_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s0 :: v_dual_mov_b32 v9, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v1, s8 :: v_dual_mov_b32 v2, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v5, s7 :: v_dual_mov_b32 v6, s5
 ; GFX11-NEXT:    v_mov_b32_e32 v7, s3
 ; GFX11-NEXT:    v_mov_b32_e32 v3, s2
-; GFX11-NEXT:  .LBB105_5: ; %end
+; GFX11-NEXT:  .LBB105_6: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v0, v8
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v9
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -16024,7 +17177,7 @@ define inreg <4 x half> @bitcast_v8i8_to_v4f16_scalar(<8 x i8> inreg %a, i32 inr
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB107_4
+; SI-NEXT:    s_cbranch_scc0 .LBB107_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -16046,9 +17199,20 @@ define inreg <4 x half> @bitcast_v8i8_to_v4f16_scalar(<8 x i8> inreg %a, i32 inr
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[10:11], 16
 ; SI-NEXT:    s_or_b32 s4, s4, s10
 ; SI-NEXT:    s_lshr_b32 s7, s8, 16
+; SI-NEXT:    s_mov_b64 s[8:9], 0
 ; SI-NEXT:    s_mov_b32 s5, s11
-; SI-NEXT:    s_cbranch_execnz .LBB107_3
-; SI-NEXT:  .LBB107_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB107_3
+; SI-NEXT:  .LBB107_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB107_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB107_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -16077,7 +17241,7 @@ define inreg <4 x half> @bitcast_v8i8_to_v4f16_scalar(<8 x i8> inreg %a, i32 inr
 ; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[4:5], 16
 ; SI-NEXT:    s_lshr_b32 s7, s5, 16
-; SI-NEXT:  .LBB107_3: ; %end
+; SI-NEXT:  .LBB107_5: ; %end
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s6
@@ -16087,17 +17251,12 @@ define inreg <4 x half> @bitcast_v8i8_to_v4f16_scalar(<8 x i8> inreg %a, i32 inr
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB107_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB107_2
 ;
 ; VI-LABEL: bitcast_v8i8_to_v4f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB107_4
+; VI-NEXT:    s_cbranch_scc0 .LBB107_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v2, s19
@@ -16112,8 +17271,17 @@ define inreg <4 x half> @bitcast_v8i8_to_v4f16_scalar(<8 x i8> inreg %a, i32 inr
 ; VI-NEXT:    v_perm_b32 v1, s22, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v1, v2, v1
-; VI-NEXT:    s_cbranch_execnz .LBB107_3
-; VI-NEXT:  .LBB107_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB107_3
+; VI-NEXT:  .LBB107_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; VI-NEXT:  .LBB107_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB107_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -16135,17 +17303,14 @@ define inreg <4 x half> @bitcast_v8i8_to_v4f16_scalar(<8 x i8> inreg %a, i32 inr
 ; VI-NEXT:    v_or_b32_sdwa v1, v1, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
-; VI-NEXT:  .LBB107_3: ; %end
+; VI-NEXT:  .LBB107_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB107_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; VI-NEXT:    s_branch .LBB107_2
 ;
 ; GFX9-LABEL: bitcast_v8i8_to_v4f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB107_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB107_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s19
@@ -16160,8 +17325,17 @@ define inreg <4 x half> @bitcast_v8i8_to_v4f16_scalar(<8 x i8> inreg %a, i32 inr
 ; GFX9-NEXT:    v_perm_b32 v1, s22, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_or_b32_e32 v1, v2, v1
-; GFX9-NEXT:    s_cbranch_execnz .LBB107_3
-; GFX9-NEXT:  .LBB107_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB107_3
+; GFX9-NEXT:  .LBB107_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GFX9-NEXT:  .LBB107_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB107_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -16182,18 +17356,15 @@ define inreg <4 x half> @bitcast_v8i8_to_v4f16_scalar(<8 x i8> inreg %a, i32 inr
 ; GFX9-NEXT:    v_add_u32_e32 v2, 0x300, v2
 ; GFX9-NEXT:    v_add_u32_sdwa v1, v1, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB107_3: ; %end
+; GFX9-NEXT:  .LBB107_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB107_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX9-NEXT:    s_branch .LBB107_2
 ;
 ; GFX11-LABEL: bitcast_v8i8_to_v4f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB107_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB107_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)
@@ -16207,9 +17378,17 @@ define inreg <4 x half> @bitcast_v8i8_to_v4f16_scalar(<8 x i8> inreg %a, i32 inr
 ; GFX11-NEXT:    v_or_b32_e32 v0, v3, v0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_or_b32_e32 v1, v4, v1
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB107_3
-; GFX11-NEXT:  .LBB107_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB107_3
+; GFX11-NEXT:  .LBB107_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GFX11-NEXT:  .LBB107_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB107_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -16234,11 +17413,8 @@ define inreg <4 x half> @bitcast_v8i8_to_v4f16_scalar(<8 x i8> inreg %a, i32 inr
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-NEXT:    v_or_b32_e32 v0, v1, v2
 ; GFX11-NEXT:    v_or_b32_e32 v1, v3, v4
-; GFX11-NEXT:  .LBB107_3: ; %end
+; GFX11-NEXT:  .LBB107_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB107_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX11-NEXT:    s_branch .LBB107_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -16653,7 +17829,7 @@ define inreg <8 x i8> @bitcast_v4bf16_to_v8i8_scalar(<4 x bfloat> inreg %a, i32
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v14, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB109_4
+; SI-NEXT:    s_cbranch_scc0 .LBB109_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v15
 ; SI-NEXT:    v_lshr_b64 v[11:12], v[0:1], 16
@@ -16664,8 +17840,22 @@ define inreg <8 x i8> @bitcast_v4bf16_to_v8i8_scalar(<4 x bfloat> inreg %a, i32
 ; SI-NEXT:    v_lshr_b64 v[9:10], v[11:12], 16
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[11:12], 8
 ; SI-NEXT:    v_lshrrev_b32_e32 v8, 8, v12
-; SI-NEXT:    s_cbranch_execnz .LBB109_3
-; SI-NEXT:  .LBB109_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB109_3
+; SI-NEXT:  .LBB109_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr11
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:    ; implicit-def: $vgpr9
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:    ; implicit-def: $vgpr8
+; SI-NEXT:    ; implicit-def: $vgpr7
+; SI-NEXT:  .LBB109_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB109_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v15
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -16683,26 +17873,18 @@ define inreg <8 x i8> @bitcast_v4bf16_to_v8i8_scalar(<4 x bfloat> inreg %a, i32
 ; SI-NEXT:    v_lshr_b64 v[9:10], v[11:12], 16
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[11:12], 8
 ; SI-NEXT:    v_lshrrev_b32_e32 v8, 8, v12
-; SI-NEXT:  .LBB109_3: ; %end
+; SI-NEXT:  .LBB109_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, v11
 ; SI-NEXT:    v_mov_b32_e32 v2, v9
 ; SI-NEXT:    v_mov_b32_e32 v4, v12
 ; SI-NEXT:    v_mov_b32_e32 v5, v8
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB109_4:
-; SI-NEXT:    ; implicit-def: $vgpr11
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    ; implicit-def: $vgpr9
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    ; implicit-def: $vgpr8
-; SI-NEXT:    ; implicit-def: $vgpr7
-; SI-NEXT:    s_branch .LBB109_2
 ;
 ; VI-LABEL: bitcast_v4bf16_to_v8i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s18, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB109_3
+; VI-NEXT:    s_cbranch_scc0 .LBB109_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; VI-NEXT:    s_lshr_b32 s5, s17, 24
@@ -16710,8 +17892,22 @@ define inreg <8 x i8> @bitcast_v4bf16_to_v8i8_scalar(<4 x bfloat> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s8, s17, 8
 ; VI-NEXT:    s_lshr_b32 s10, s16, 16
 ; VI-NEXT:    s_lshr_b32 s9, s16, 8
-; VI-NEXT:    s_cbranch_execnz .LBB109_4
-; VI-NEXT:  .LBB109_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[6:7], 0
+; VI-NEXT:    s_branch .LBB109_3
+; VI-NEXT:  .LBB109_2:
+; VI-NEXT:    s_mov_b64 s[6:7], -1
+; VI-NEXT:    ; implicit-def: $sgpr9
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr8
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr5
+; VI-NEXT:  .LBB109_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; VI-NEXT:    s_cselect_b32 s6, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s6, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB109_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -16759,15 +17955,7 @@ define inreg <8 x i8> @bitcast_v4bf16_to_v8i8_scalar(<4 x bfloat> inreg %a, i32
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 8, v9
 ; VI-NEXT:    v_mov_b32_e32 v4, v8
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB109_3:
-; VI-NEXT:    ; implicit-def: $sgpr9
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr8
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr5
-; VI-NEXT:    s_branch .LBB109_2
-; VI-NEXT:  .LBB109_4:
+; VI-NEXT:  .LBB109_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v6, s11
 ; VI-NEXT:    v_mov_b32_e32 v2, s10
@@ -16782,7 +17970,7 @@ define inreg <8 x i8> @bitcast_v4bf16_to_v8i8_scalar(<4 x bfloat> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s18, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB109_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB109_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; GFX9-NEXT:    s_lshr_b32 s8, s17, 24
@@ -16790,8 +17978,22 @@ define inreg <8 x i8> @bitcast_v4bf16_to_v8i8_scalar(<4 x bfloat> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b32 s9, s17, 8
 ; GFX9-NEXT:    s_lshr_b32 s10, s16, 16
 ; GFX9-NEXT:    s_lshr_b32 s5, s16, 8
-; GFX9-NEXT:    s_cbranch_execnz .LBB109_4
-; GFX9-NEXT:  .LBB109_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[6:7], 0
+; GFX9-NEXT:    s_branch .LBB109_3
+; GFX9-NEXT:  .LBB109_2:
+; GFX9-NEXT:    s_mov_b64 s[6:7], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr5
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr9
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr8
+; GFX9-NEXT:  .LBB109_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX9-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB109_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -16839,15 +18041,7 @@ define inreg <8 x i8> @bitcast_v4bf16_to_v8i8_scalar(<4 x bfloat> inreg %a, i32
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v10
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v8
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB109_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr5
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr9
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr8
-; GFX9-NEXT:    s_branch .LBB109_2
-; GFX9-NEXT:  .LBB109_4:
+; GFX9-NEXT:  .LBB109_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v6, s11
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s10
@@ -16863,7 +18057,7 @@ define inreg <8 x i8> @bitcast_v4bf16_to_v8i8_scalar(<4 x bfloat> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB109_3
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB109_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    s_lshr_b64 s[2:3], s[0:1], 24
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s5, s1, 24
@@ -16871,9 +18065,22 @@ define inreg <8 x i8> @bitcast_v4bf16_to_v8i8_scalar(<4 x bfloat> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s6, s1, 8
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s7, s0, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s3, s0, 8
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB109_4
-; GFX11-TRUE16-NEXT:  .LBB109_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB109_3
+; GFX11-TRUE16-NEXT:  .LBB109_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr3
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr2
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr5
+; GFX11-TRUE16-NEXT:  .LBB109_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB109_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s2, 0, s0
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -16925,15 +18132,7 @@ define inreg <8 x i8> @bitcast_v4bf16_to_v8i8_scalar(<4 x bfloat> inreg %a, i32
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, 8, v10
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v8
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB109_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr3
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr2
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr5
-; GFX11-TRUE16-NEXT:    s_branch .LBB109_2
-; GFX11-TRUE16-NEXT:  .LBB109_4:
+; GFX11-TRUE16-NEXT:  .LBB109_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v6, s8 :: v_dual_mov_b32 v7, s5
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v5, s6
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s7 :: v_dual_mov_b32 v1, s3
@@ -16945,7 +18144,7 @@ define inreg <8 x i8> @bitcast_v4bf16_to_v8i8_scalar(<4 x bfloat> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB109_3
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB109_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    s_lshr_b64 s[2:3], s[0:1], 24
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s5, s1, 24
@@ -16953,9 +18152,22 @@ define inreg <8 x i8> @bitcast_v4bf16_to_v8i8_scalar(<4 x bfloat> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s6, s1, 8
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s7, s0, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s3, s0, 8
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB109_4
-; GFX11-FAKE16-NEXT:  .LBB109_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB109_3
+; GFX11-FAKE16-NEXT:  .LBB109_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr3
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr2
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr5
+; GFX11-FAKE16-NEXT:  .LBB109_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB109_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s2, 0, s0
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s2
@@ -17007,15 +18219,7 @@ define inreg <8 x i8> @bitcast_v4bf16_to_v8i8_scalar(<4 x bfloat> inreg %a, i32
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 8, v10
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v8
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB109_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr3
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr7
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr2
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr5
-; GFX11-FAKE16-NEXT:    s_branch .LBB109_2
-; GFX11-FAKE16-NEXT:  .LBB109_4:
+; GFX11-FAKE16-NEXT:  .LBB109_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v6, s8 :: v_dual_mov_b32 v7, s5
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v5, s6
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s7 :: v_dual_mov_b32 v1, s3
@@ -17385,7 +18589,7 @@ define inreg <4 x bfloat> @bitcast_v8i8_to_v4bf16_scalar(<8 x i8> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s24, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB111_4
+; SI-NEXT:    s_cbranch_scc0 .LBB111_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
@@ -17403,8 +18607,20 @@ define inreg <4 x bfloat> @bitcast_v8i8_to_v4bf16_scalar(<8 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_lshl_b32 s5, s23, 24
 ; SI-NEXT:    s_or_b32 s9, s5, s4
-; SI-NEXT:    s_cbranch_execnz .LBB111_3
-; SI-NEXT:  .LBB111_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB111_3
+; SI-NEXT:  .LBB111_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:  .LBB111_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB111_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_and_b32 s4, s20, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s21, 8
@@ -17435,7 +18651,7 @@ define inreg <4 x bfloat> @bitcast_v8i8_to_v4bf16_scalar(<8 x i8> inreg %a, i32
 ; SI-NEXT:    s_lshl_b32 s6, s5, 16
 ; SI-NEXT:    s_and_b32 s9, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s7, s4, 16
-; SI-NEXT:  .LBB111_3: ; %end
+; SI-NEXT:  .LBB111_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s8
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s6
@@ -17445,18 +18661,12 @@ define inreg <4 x bfloat> @bitcast_v8i8_to_v4bf16_scalar(<8 x i8> inreg %a, i32
 ; SI-NEXT:    v_mul_f32_e64 v1, 1.0, s7
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[1:2], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB111_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    s_branch .LBB111_2
 ;
 ; VI-LABEL: bitcast_v8i8_to_v4bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s24, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB111_4
+; VI-NEXT:    s_cbranch_scc0 .LBB111_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v2, s19
@@ -17471,8 +18681,17 @@ define inreg <4 x bfloat> @bitcast_v8i8_to_v4bf16_scalar(<8 x i8> inreg %a, i32
 ; VI-NEXT:    v_perm_b32 v1, s22, v3, v1
 ; VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; VI-NEXT:    v_or_b32_e32 v1, v2, v1
-; VI-NEXT:    s_cbranch_execnz .LBB111_3
-; VI-NEXT:  .LBB111_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB111_3
+; VI-NEXT:  .LBB111_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; VI-NEXT:  .LBB111_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB111_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -17494,17 +18713,14 @@ define inreg <4 x bfloat> @bitcast_v8i8_to_v4bf16_scalar(<8 x i8> inreg %a, i32
 ; VI-NEXT:    v_or_b32_sdwa v1, v1, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
-; VI-NEXT:  .LBB111_3: ; %end
+; VI-NEXT:  .LBB111_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB111_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; VI-NEXT:    s_branch .LBB111_2
 ;
 ; GFX9-LABEL: bitcast_v8i8_to_v4bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s24, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB111_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB111_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s19
@@ -17519,8 +18735,17 @@ define inreg <4 x bfloat> @bitcast_v8i8_to_v4bf16_scalar(<8 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_perm_b32 v1, s22, v3, v1
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
 ; GFX9-NEXT:    v_or_b32_e32 v1, v2, v1
-; GFX9-NEXT:    s_cbranch_execnz .LBB111_3
-; GFX9-NEXT:  .LBB111_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB111_3
+; GFX9-NEXT:  .LBB111_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GFX9-NEXT:  .LBB111_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB111_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0xc0c0004
@@ -17541,18 +18766,15 @@ define inreg <4 x bfloat> @bitcast_v8i8_to_v4bf16_scalar(<8 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_add_u32_e32 v2, 0x300, v2
 ; GFX9-NEXT:    v_add_u32_sdwa v1, v1, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB111_3: ; %end
+; GFX9-NEXT:  .LBB111_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB111_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX9-NEXT:    s_branch .LBB111_2
 ;
 ; GFX11-LABEL: bitcast_v8i8_to_v4bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s20, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB111_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB111_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)
@@ -17566,9 +18788,17 @@ define inreg <4 x bfloat> @bitcast_v8i8_to_v4bf16_scalar(<8 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_or_b32_e32 v0, v3, v0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_or_b32_e32 v1, v4, v1
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB111_3
-; GFX11-NEXT:  .LBB111_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB111_3
+; GFX11-NEXT:  .LBB111_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GFX11-NEXT:  .LBB111_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB111_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -17593,11 +18823,8 @@ define inreg <4 x bfloat> @bitcast_v8i8_to_v4bf16_scalar(<8 x i8> inreg %a, i32
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-NEXT:    v_or_b32_e32 v0, v1, v2
 ; GFX11-NEXT:    v_or_b32_e32 v1, v3, v4
-; GFX11-NEXT:  .LBB111_3: ; %end
+; GFX11-NEXT:  .LBB111_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB111_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX11-NEXT:    s_branch .LBB111_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.704bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.704bit.ll
index df100725d890c..ced89bdabff64 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.704bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.704bit.ll
@@ -178,10 +178,18 @@ define inreg <22 x float> @bitcast_v22i32_to_v22f32_scalar(<22 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s12, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s13, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -204,7 +212,7 @@ define inreg <22 x float> @bitcast_v22i32_to_v22f32_scalar(<22 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -228,8 +236,6 @@ define inreg <22 x float> @bitcast_v22i32_to_v22f32_scalar(<22 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v20, s7
 ; SI-NEXT:    v_mov_b32_e32 v21, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v22i32_to_v22f32_scalar:
 ; VI:       ; %bb.0:
@@ -244,10 +250,18 @@ define inreg <22 x float> @bitcast_v22i32_to_v22f32_scalar(<22 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s12, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s13, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -270,7 +284,7 @@ define inreg <22 x float> @bitcast_v22i32_to_v22f32_scalar(<22 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -294,8 +308,6 @@ define inreg <22 x float> @bitcast_v22i32_to_v22f32_scalar(<22 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v20, s7
 ; VI-NEXT:    v_mov_b32_e32 v21, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v22i32_to_v22f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -310,10 +322,18 @@ define inreg <22 x float> @bitcast_v22i32_to_v22f32_scalar(<22 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s13, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -336,7 +356,7 @@ define inreg <22 x float> @bitcast_v22i32_to_v22f32_scalar(<22 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -360,8 +380,6 @@ define inreg <22 x float> @bitcast_v22i32_to_v22f32_scalar(<22 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v22i32_to_v22f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -373,11 +391,16 @@ define inreg <22 x float> @bitcast_v22i32_to_v22f32_scalar(<22 x i32> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s7, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s8, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -400,7 +423,7 @@ define inreg <22 x float> @bitcast_v22i32_to_v22f32_scalar(<22 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -414,8 +437,6 @@ define inreg <22 x float> @bitcast_v22i32_to_v22f32_scalar(<22 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s7 :: v_dual_mov_b32 v19, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s5 :: v_dual_mov_b32 v21, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -624,10 +645,18 @@ define inreg <22 x i32> @bitcast_v22f32_to_v22i32_scalar(<22 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v21, s57, 1.0
 ; SI-NEXT:    v_add_f32_e64 v20, s56, 1.0
 ; SI-NEXT:    v_add_f32_e64 v19, s55, 1.0
@@ -650,10 +679,8 @@ define inreg <22 x i32> @bitcast_v22f32_to_v22i32_scalar(<22 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB3_5
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:    s_branch .LBB3_6
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -686,7 +713,7 @@ define inreg <22 x i32> @bitcast_v22f32_to_v22i32_scalar(<22 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB3_5: ; %end
+; SI-NEXT:  .LBB3_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -747,10 +774,18 @@ define inreg <22 x i32> @bitcast_v22f32_to_v22i32_scalar(<22 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v21, s57, 1.0
 ; VI-NEXT:    v_add_f32_e64 v20, s56, 1.0
 ; VI-NEXT:    v_add_f32_e64 v19, s55, 1.0
@@ -773,10 +808,8 @@ define inreg <22 x i32> @bitcast_v22f32_to_v22i32_scalar(<22 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB3_5
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:    s_branch .LBB3_6
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -809,7 +842,7 @@ define inreg <22 x i32> @bitcast_v22f32_to_v22i32_scalar(<22 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB3_5: ; %end
+; VI-NEXT:  .LBB3_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -870,10 +903,18 @@ define inreg <22 x i32> @bitcast_v22f32_to_v22i32_scalar(<22 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v21, s57, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v20, s56, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v19, s55, 1.0
@@ -896,10 +937,8 @@ define inreg <22 x i32> @bitcast_v22f32_to_v22i32_scalar(<22 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB3_5
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:    s_branch .LBB3_6
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -932,7 +971,7 @@ define inreg <22 x i32> @bitcast_v22f32_to_v22i32_scalar(<22 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB3_5: ; %end
+; GFX9-NEXT:  .LBB3_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -994,11 +1033,16 @@ define inreg <22 x i32> @bitcast_v22f32_to_v22i32_scalar(<22 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v21, s57, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v20, s56, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v19, s55, 1.0
@@ -1022,8 +1066,6 @@ define inreg <22 x i32> @bitcast_v22f32_to_v22i32_scalar(<22 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB3_5
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -1248,10 +1290,18 @@ define inreg <11 x i64> @bitcast_v22i32_to_v11i64_scalar(<22 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s12, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s13, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -1274,7 +1324,7 @@ define inreg <11 x i64> @bitcast_v22i32_to_v11i64_scalar(<22 x i32> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1298,8 +1348,6 @@ define inreg <11 x i64> @bitcast_v22i32_to_v11i64_scalar(<22 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v20, s7
 ; SI-NEXT:    v_mov_b32_e32 v21, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v22i32_to_v11i64_scalar:
 ; VI:       ; %bb.0:
@@ -1314,10 +1362,18 @@ define inreg <11 x i64> @bitcast_v22i32_to_v11i64_scalar(<22 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s12, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s13, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -1340,7 +1396,7 @@ define inreg <11 x i64> @bitcast_v22i32_to_v11i64_scalar(<22 x i32> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1364,8 +1420,6 @@ define inreg <11 x i64> @bitcast_v22i32_to_v11i64_scalar(<22 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v20, s7
 ; VI-NEXT:    v_mov_b32_e32 v21, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v22i32_to_v11i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -1380,10 +1434,18 @@ define inreg <11 x i64> @bitcast_v22i32_to_v11i64_scalar(<22 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s13, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -1406,7 +1468,7 @@ define inreg <11 x i64> @bitcast_v22i32_to_v11i64_scalar(<22 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1430,8 +1492,6 @@ define inreg <11 x i64> @bitcast_v22i32_to_v11i64_scalar(<22 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v22i32_to_v11i64_scalar:
 ; GFX11:       ; %bb.0:
@@ -1443,11 +1503,16 @@ define inreg <11 x i64> @bitcast_v22i32_to_v11i64_scalar(<22 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s7, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s8, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -1470,7 +1535,7 @@ define inreg <11 x i64> @bitcast_v22i32_to_v11i64_scalar(<22 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1484,8 +1549,6 @@ define inreg <11 x i64> @bitcast_v22i32_to_v11i64_scalar(<22 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s7 :: v_dual_mov_b32 v19, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s5 :: v_dual_mov_b32 v21, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1681,10 +1744,18 @@ define inreg <22 x i32> @bitcast_v11i64_to_v22i32_scalar(<11 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s12, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s13, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -1707,7 +1778,7 @@ define inreg <22 x i32> @bitcast_v11i64_to_v22i32_scalar(<11 x i64> inreg %a, i3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1731,8 +1802,6 @@ define inreg <22 x i32> @bitcast_v11i64_to_v22i32_scalar(<11 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v20, s7
 ; SI-NEXT:    v_mov_b32_e32 v21, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v11i64_to_v22i32_scalar:
 ; VI:       ; %bb.0:
@@ -1747,10 +1816,18 @@ define inreg <22 x i32> @bitcast_v11i64_to_v22i32_scalar(<11 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s12, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s13, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -1773,7 +1850,7 @@ define inreg <22 x i32> @bitcast_v11i64_to_v22i32_scalar(<11 x i64> inreg %a, i3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1797,8 +1874,6 @@ define inreg <22 x i32> @bitcast_v11i64_to_v22i32_scalar(<11 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v20, s7
 ; VI-NEXT:    v_mov_b32_e32 v21, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v11i64_to_v22i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -1813,10 +1888,18 @@ define inreg <22 x i32> @bitcast_v11i64_to_v22i32_scalar(<11 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s13, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -1839,7 +1922,7 @@ define inreg <22 x i32> @bitcast_v11i64_to_v22i32_scalar(<11 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB7_3: ; %end
+; GFX9-NEXT:  .LBB7_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1863,8 +1946,6 @@ define inreg <22 x i32> @bitcast_v11i64_to_v22i32_scalar(<11 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_4:
-; GFX9-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-LABEL: bitcast_v11i64_to_v22i32_scalar:
 ; GFX11:       ; %bb.0:
@@ -1876,11 +1957,16 @@ define inreg <22 x i32> @bitcast_v11i64_to_v22i32_scalar(<11 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s7, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s8, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_3
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -1903,7 +1989,7 @@ define inreg <22 x i32> @bitcast_v11i64_to_v22i32_scalar(<11 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB7_3: ; %end
+; GFX11-NEXT:  .LBB7_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1917,8 +2003,6 @@ define inreg <22 x i32> @bitcast_v11i64_to_v22i32_scalar(<11 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s7 :: v_dual_mov_b32 v19, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s5 :: v_dual_mov_b32 v21, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_4:
-; GFX11-NEXT:    s_branch .LBB7_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2108,10 +2192,18 @@ define inreg <11 x double> @bitcast_v22i32_to_v11f64_scalar(<22 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s12, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s13, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -2134,7 +2226,7 @@ define inreg <11 x double> @bitcast_v22i32_to_v11f64_scalar(<22 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2158,8 +2250,6 @@ define inreg <11 x double> @bitcast_v22i32_to_v11f64_scalar(<22 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v20, s7
 ; SI-NEXT:    v_mov_b32_e32 v21, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v22i32_to_v11f64_scalar:
 ; VI:       ; %bb.0:
@@ -2174,10 +2264,18 @@ define inreg <11 x double> @bitcast_v22i32_to_v11f64_scalar(<22 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s12, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s13, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -2200,7 +2298,7 @@ define inreg <11 x double> @bitcast_v22i32_to_v11f64_scalar(<22 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2224,8 +2322,6 @@ define inreg <11 x double> @bitcast_v22i32_to_v11f64_scalar(<22 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v20, s7
 ; VI-NEXT:    v_mov_b32_e32 v21, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v22i32_to_v11f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -2240,10 +2336,18 @@ define inreg <11 x double> @bitcast_v22i32_to_v11f64_scalar(<22 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s13, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -2266,7 +2370,7 @@ define inreg <11 x double> @bitcast_v22i32_to_v11f64_scalar(<22 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2290,8 +2394,6 @@ define inreg <11 x double> @bitcast_v22i32_to_v11f64_scalar(<22 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v22i32_to_v11f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -2303,11 +2405,16 @@ define inreg <11 x double> @bitcast_v22i32_to_v11f64_scalar(<22 x i32> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s7, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s8, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -2330,7 +2437,7 @@ define inreg <11 x double> @bitcast_v22i32_to_v11f64_scalar(<22 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2344,8 +2451,6 @@ define inreg <11 x double> @bitcast_v22i32_to_v11f64_scalar(<22 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s7 :: v_dual_mov_b32 v19, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s5 :: v_dual_mov_b32 v21, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2521,10 +2626,18 @@ define inreg <22 x i32> @bitcast_v11f64_to_v22i32_scalar(<11 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; SI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; SI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
@@ -2536,10 +2649,8 @@ define inreg <22 x i32> @bitcast_v11f64_to_v22i32_scalar(<11 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB11_5
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:    s_branch .LBB11_6
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -2572,7 +2683,7 @@ define inreg <22 x i32> @bitcast_v11f64_to_v22i32_scalar(<11 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB11_5: ; %end
+; SI-NEXT:  .LBB11_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -2633,10 +2744,18 @@ define inreg <22 x i32> @bitcast_v11f64_to_v22i32_scalar(<11 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; VI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; VI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
@@ -2648,10 +2767,8 @@ define inreg <22 x i32> @bitcast_v11f64_to_v22i32_scalar(<11 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB11_5
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:    s_branch .LBB11_6
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -2684,7 +2801,7 @@ define inreg <22 x i32> @bitcast_v11f64_to_v22i32_scalar(<11 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB11_5: ; %end
+; VI-NEXT:  .LBB11_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -2745,10 +2862,18 @@ define inreg <22 x i32> @bitcast_v11f64_to_v22i32_scalar(<11 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
@@ -2760,10 +2885,8 @@ define inreg <22 x i32> @bitcast_v11f64_to_v22i32_scalar(<11 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB11_5
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:    s_branch .LBB11_6
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -2796,7 +2919,7 @@ define inreg <22 x i32> @bitcast_v11f64_to_v22i32_scalar(<11 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB11_5: ; %end
+; GFX9-NEXT:  .LBB11_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -2858,11 +2981,16 @@ define inreg <22 x i32> @bitcast_v11f64_to_v22i32_scalar(<11 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; GFX11-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; GFX11-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
@@ -2875,8 +3003,6 @@ define inreg <22 x i32> @bitcast_v11f64_to_v22i32_scalar(<11 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB11_5
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -3569,7 +3695,7 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s11, v1
 ; SI-NEXT:    s_cmp_lg_u32 s10, 0
 ; SI-NEXT:    v_readfirstlane_b32 s10, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s76, s5, 16
 ; SI-NEXT:    s_lshr_b32 s77, s7, 16
@@ -3593,8 +3719,38 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[74:75], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[74:75], -1
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[74:75], s[74:75], exec
+; SI-NEXT:    s_cselect_b32 s13, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s13, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -3639,7 +3795,7 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[16:17], 16
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s13, s72, 16
 ; SI-NEXT:    s_and_b32 s15, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s13, s15, s13
@@ -3729,30 +3885,6 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v20, s4
 ; SI-NEXT:    v_mov_b32_e32 v21, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_v22i32_to_v44i16_scalar:
 ; VI:       ; %bb.0:
@@ -3767,7 +3899,7 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s12, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s13, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s14, s6, 16
 ; VI-NEXT:    s_lshr_b32 s15, s7, 16
@@ -3791,8 +3923,38 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s73, s18, 16
 ; VI-NEXT:    s_lshr_b32 s74, s17, 16
 ; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -3837,7 +3999,7 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s73, s18, 16
 ; VI-NEXT:    s_lshr_b32 s74, s17, 16
 ; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -3927,30 +4089,6 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v20, s7
 ; VI-NEXT:    v_mov_b32_e32 v21, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v22i32_to_v44i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -3965,7 +4103,7 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s13, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s14, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s15, s7, 16
@@ -3989,8 +4127,38 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s73, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s74, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s75, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -4035,7 +4203,7 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s73, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s74, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s75, s16, 16
-; GFX9-NEXT:  .LBB13_3: ; %end
+; GFX9-NEXT:  .LBB13_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s75
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s74
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s73
@@ -4081,30 +4249,6 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_v22i32_to_v44i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -4116,7 +4260,7 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s7, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s8, 0
 ; GFX11-NEXT:    s_mov_b32 s62, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s8, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s9, s5, 16
@@ -4140,9 +4284,38 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s59, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s60, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s61, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s62
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB13_3
+; GFX11-NEXT:  .LBB13_2:
+; GFX11-NEXT:    s_mov_b32 s62, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:  .LBB13_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s62, s62, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s62, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s62, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -4187,7 +4360,7 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s59, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s60, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s61, s0, 16
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s60
@@ -4223,30 +4396,6 @@ define inreg <44 x i16> @bitcast_v22i32_to_v44i16_scalar(<22 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s7 :: v_dual_mov_b32 v19, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s5 :: v_dual_mov_b32 v21, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -5220,26 +5369,24 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v22, s34, 0
-; SI-NEXT:    v_writelane_b32 v22, s35, 1
-; SI-NEXT:    v_writelane_b32 v22, s36, 2
-; SI-NEXT:    v_writelane_b32 v22, s37, 3
-; SI-NEXT:    v_writelane_b32 v22, s38, 4
-; SI-NEXT:    v_writelane_b32 v22, s39, 5
-; SI-NEXT:    v_writelane_b32 v22, s48, 6
-; SI-NEXT:    v_writelane_b32 v22, s49, 7
-; SI-NEXT:    v_writelane_b32 v22, s50, 8
-; SI-NEXT:    v_writelane_b32 v22, s51, 9
-; SI-NEXT:    v_writelane_b32 v22, s52, 10
-; SI-NEXT:    v_writelane_b32 v22, s53, 11
-; SI-NEXT:    v_writelane_b32 v22, s54, 12
-; SI-NEXT:    v_writelane_b32 v22, s55, 13
-; SI-NEXT:    v_writelane_b32 v22, s64, 14
-; SI-NEXT:    v_writelane_b32 v22, s65, 15
-; SI-NEXT:    v_writelane_b32 v22, s66, 16
-; SI-NEXT:    v_writelane_b32 v22, s67, 17
-; SI-NEXT:    v_writelane_b32 v22, s30, 18
-; SI-NEXT:    v_writelane_b32 v22, s31, 19
+; SI-NEXT:    v_writelane_b32 v22, s36, 0
+; SI-NEXT:    v_writelane_b32 v22, s37, 1
+; SI-NEXT:    v_writelane_b32 v22, s38, 2
+; SI-NEXT:    v_writelane_b32 v22, s39, 3
+; SI-NEXT:    v_writelane_b32 v22, s48, 4
+; SI-NEXT:    v_writelane_b32 v22, s49, 5
+; SI-NEXT:    v_writelane_b32 v22, s50, 6
+; SI-NEXT:    v_writelane_b32 v22, s51, 7
+; SI-NEXT:    v_writelane_b32 v22, s52, 8
+; SI-NEXT:    v_writelane_b32 v22, s53, 9
+; SI-NEXT:    v_writelane_b32 v22, s54, 10
+; SI-NEXT:    v_writelane_b32 v22, s55, 11
+; SI-NEXT:    v_writelane_b32 v22, s64, 12
+; SI-NEXT:    v_writelane_b32 v22, s65, 13
+; SI-NEXT:    v_writelane_b32 v22, s66, 14
+; SI-NEXT:    v_writelane_b32 v22, s67, 15
+; SI-NEXT:    v_writelane_b32 v22, s30, 16
+; SI-NEXT:    v_writelane_b32 v22, s31, 17
 ; SI-NEXT:    v_readfirstlane_b32 s7, v7
 ; SI-NEXT:    v_readfirstlane_b32 s9, v6
 ; SI-NEXT:    v_readfirstlane_b32 s11, v5
@@ -5258,10 +5405,10 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s93, s22, 16
 ; SI-NEXT:    s_lshr_b32 s94, s21, 16
 ; SI-NEXT:    s_lshr_b32 s95, s20, 16
-; SI-NEXT:    s_lshr_b32 s30, s19, 16
-; SI-NEXT:    s_lshr_b32 s31, s18, 16
-; SI-NEXT:    s_lshr_b32 s34, s17, 16
-; SI-NEXT:    s_lshr_b32 s35, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; SI-NEXT:    s_lshr_b32 s30, s17, 16
+; SI-NEXT:    s_lshr_b32 s31, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -5272,18 +5419,18 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s89, s90, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s34, 16
+; SI-NEXT:    s_lshl_b32 s41, s30, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -5340,26 +5487,35 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s57, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
@@ -5452,8 +5608,8 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s57, s4, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v22, 18
+; SI-NEXT:  .LBB15_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v22, 16
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -5476,33 +5632,28 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v19, s55
 ; SI-NEXT:    v_mov_b32_e32 v20, s56
 ; SI-NEXT:    v_mov_b32_e32 v21, s57
-; SI-NEXT:    v_readlane_b32 s31, v22, 19
-; SI-NEXT:    v_readlane_b32 s67, v22, 17
-; SI-NEXT:    v_readlane_b32 s66, v22, 16
-; SI-NEXT:    v_readlane_b32 s65, v22, 15
-; SI-NEXT:    v_readlane_b32 s64, v22, 14
-; SI-NEXT:    v_readlane_b32 s55, v22, 13
-; SI-NEXT:    v_readlane_b32 s54, v22, 12
-; SI-NEXT:    v_readlane_b32 s53, v22, 11
-; SI-NEXT:    v_readlane_b32 s52, v22, 10
-; SI-NEXT:    v_readlane_b32 s51, v22, 9
-; SI-NEXT:    v_readlane_b32 s50, v22, 8
-; SI-NEXT:    v_readlane_b32 s49, v22, 7
-; SI-NEXT:    v_readlane_b32 s48, v22, 6
-; SI-NEXT:    v_readlane_b32 s39, v22, 5
-; SI-NEXT:    v_readlane_b32 s38, v22, 4
-; SI-NEXT:    v_readlane_b32 s37, v22, 3
-; SI-NEXT:    v_readlane_b32 s36, v22, 2
-; SI-NEXT:    v_readlane_b32 s35, v22, 1
-; SI-NEXT:    v_readlane_b32 s34, v22, 0
+; SI-NEXT:    v_readlane_b32 s31, v22, 17
+; SI-NEXT:    v_readlane_b32 s67, v22, 15
+; SI-NEXT:    v_readlane_b32 s66, v22, 14
+; SI-NEXT:    v_readlane_b32 s65, v22, 13
+; SI-NEXT:    v_readlane_b32 s64, v22, 12
+; SI-NEXT:    v_readlane_b32 s55, v22, 11
+; SI-NEXT:    v_readlane_b32 s54, v22, 10
+; SI-NEXT:    v_readlane_b32 s53, v22, 9
+; SI-NEXT:    v_readlane_b32 s52, v22, 8
+; SI-NEXT:    v_readlane_b32 s51, v22, 7
+; SI-NEXT:    v_readlane_b32 s50, v22, 6
+; SI-NEXT:    v_readlane_b32 s49, v22, 5
+; SI-NEXT:    v_readlane_b32 s48, v22, 4
+; SI-NEXT:    v_readlane_b32 s39, v22, 3
+; SI-NEXT:    v_readlane_b32 s38, v22, 2
+; SI-NEXT:    v_readlane_b32 s37, v22, 1
+; SI-NEXT:    v_readlane_b32 s36, v22, 0
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v44i16_to_v22i32_scalar:
 ; VI:       ; %bb.0:
@@ -5530,10 +5681,8 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; VI-NEXT:    v_writelane_b32 v22, s67, 17
 ; VI-NEXT:    v_writelane_b32 v22, s68, 18
 ; VI-NEXT:    v_writelane_b32 v22, s69, 19
-; VI-NEXT:    v_writelane_b32 v22, s70, 20
-; VI-NEXT:    v_writelane_b32 v22, s71, 21
-; VI-NEXT:    v_writelane_b32 v22, s30, 22
-; VI-NEXT:    v_writelane_b32 v22, s31, 23
+; VI-NEXT:    v_writelane_b32 v22, s30, 20
+; VI-NEXT:    v_writelane_b32 v22, s31, 21
 ; VI-NEXT:    v_readfirstlane_b32 s7, v7
 ; VI-NEXT:    v_readfirstlane_b32 s9, v6
 ; VI-NEXT:    v_readfirstlane_b32 s11, v5
@@ -5548,14 +5697,14 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s78, s26, 16
 ; VI-NEXT:    s_lshr_b32 s88, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s68, s19, 16
-; VI-NEXT:    s_lshr_b32 s69, s18, 16
-; VI-NEXT:    s_lshr_b32 s70, s17, 16
-; VI-NEXT:    s_lshr_b32 s71, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s68, s17, 16
+; VI-NEXT:    s_lshr_b32 s69, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -5566,31 +5715,31 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s90, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v8
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s70, 16
+; VI-NEXT:    s_lshl_b32 s41, s68, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -5634,46 +5783,55 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
@@ -5746,8 +5904,8 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s57, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v22, 22
+; VI-NEXT:  .LBB15_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v22, 20
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -5770,9 +5928,7 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v19, s55
 ; VI-NEXT:    v_mov_b32_e32 v20, s56
 ; VI-NEXT:    v_mov_b32_e32 v21, s57
-; VI-NEXT:    v_readlane_b32 s31, v22, 23
-; VI-NEXT:    v_readlane_b32 s71, v22, 21
-; VI-NEXT:    v_readlane_b32 s70, v22, 20
+; VI-NEXT:    v_readlane_b32 s31, v22, 21
 ; VI-NEXT:    v_readlane_b32 s69, v22, 19
 ; VI-NEXT:    v_readlane_b32 s68, v22, 18
 ; VI-NEXT:    v_readlane_b32 s67, v22, 17
@@ -5798,9 +5954,6 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v44i16_to_v22i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -5874,10 +6027,18 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s56, s56, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s58
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -5900,10 +6061,8 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v19, s55, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v20, s56, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v21, s57, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB15_5
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:    s_branch .LBB15_6
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -5936,7 +6095,7 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB15_5: ; %end
+; GFX9-NEXT:  .LBB15_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -6009,11 +6168,16 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s57, s62
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s20, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -6037,8 +6201,6 @@ define inreg <22 x i32> @bitcast_v44i16_to_v22i32_scalar(<44 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v20, s20, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v21, s21, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -6714,7 +6876,7 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s11, v1
 ; SI-NEXT:    s_cmp_lg_u32 s10, 0
 ; SI-NEXT:    v_readfirstlane_b32 s10, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s76, s5, 16
 ; SI-NEXT:    s_lshr_b32 s77, s7, 16
@@ -6738,8 +6900,38 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[74:75], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[74:75], -1
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[74:75], s[74:75], exec
+; SI-NEXT:    s_cselect_b32 s13, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s13, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -6784,7 +6976,7 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[16:17], 16
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s13, s72, 16
 ; SI-NEXT:    s_and_b32 s15, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s13, s15, s13
@@ -6874,30 +7066,6 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v20, s4
 ; SI-NEXT:    v_mov_b32_e32 v21, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_v22i32_to_v44f16_scalar:
 ; VI:       ; %bb.0:
@@ -6912,7 +7080,7 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s12, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s13, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s14, s6, 16
 ; VI-NEXT:    s_lshr_b32 s15, s7, 16
@@ -6936,8 +7104,38 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s73, s18, 16
 ; VI-NEXT:    s_lshr_b32 s74, s17, 16
 ; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -6982,7 +7180,7 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s73, s18, 16
 ; VI-NEXT:    s_lshr_b32 s74, s17, 16
 ; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -7072,30 +7270,6 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v20, s7
 ; VI-NEXT:    v_mov_b32_e32 v21, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v22i32_to_v44f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -7110,7 +7284,7 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s13, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s14, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s15, s7, 16
@@ -7134,8 +7308,38 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s73, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s74, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s75, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -7180,7 +7384,7 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s73, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s74, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s75, s16, 16
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s75
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s74
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s73
@@ -7226,30 +7430,6 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v22i32_to_v44f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -7261,7 +7441,7 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s7, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s8, 0
 ; GFX11-NEXT:    s_mov_b32 s62, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s8, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s9, s5, 16
@@ -7285,9 +7465,38 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s59, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s60, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s61, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s62
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB17_3
+; GFX11-NEXT:  .LBB17_2:
+; GFX11-NEXT:    s_mov_b32 s62, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:  .LBB17_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s62, s62, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s62, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s62, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -7332,7 +7541,7 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s59, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s60, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s61, s0, 16
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s60
@@ -7368,30 +7577,6 @@ define inreg <44 x half> @bitcast_v22i32_to_v44f16_scalar(<22 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s7 :: v_dual_mov_b32 v19, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s5 :: v_dual_mov_b32 v21, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -8464,26 +8649,24 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    buffer_store_dword v32, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v32, s34, 0
-; SI-NEXT:    v_writelane_b32 v32, s35, 1
-; SI-NEXT:    v_writelane_b32 v32, s36, 2
-; SI-NEXT:    v_writelane_b32 v32, s37, 3
-; SI-NEXT:    v_writelane_b32 v32, s38, 4
-; SI-NEXT:    v_writelane_b32 v32, s39, 5
-; SI-NEXT:    v_writelane_b32 v32, s48, 6
-; SI-NEXT:    v_writelane_b32 v32, s49, 7
-; SI-NEXT:    v_writelane_b32 v32, s50, 8
-; SI-NEXT:    v_writelane_b32 v32, s51, 9
-; SI-NEXT:    v_writelane_b32 v32, s52, 10
-; SI-NEXT:    v_writelane_b32 v32, s53, 11
-; SI-NEXT:    v_writelane_b32 v32, s54, 12
-; SI-NEXT:    v_writelane_b32 v32, s55, 13
-; SI-NEXT:    v_writelane_b32 v32, s64, 14
-; SI-NEXT:    v_writelane_b32 v32, s65, 15
-; SI-NEXT:    v_writelane_b32 v32, s66, 16
-; SI-NEXT:    v_writelane_b32 v32, s67, 17
-; SI-NEXT:    v_writelane_b32 v32, s30, 18
-; SI-NEXT:    v_writelane_b32 v32, s31, 19
+; SI-NEXT:    v_writelane_b32 v32, s36, 0
+; SI-NEXT:    v_writelane_b32 v32, s37, 1
+; SI-NEXT:    v_writelane_b32 v32, s38, 2
+; SI-NEXT:    v_writelane_b32 v32, s39, 3
+; SI-NEXT:    v_writelane_b32 v32, s48, 4
+; SI-NEXT:    v_writelane_b32 v32, s49, 5
+; SI-NEXT:    v_writelane_b32 v32, s50, 6
+; SI-NEXT:    v_writelane_b32 v32, s51, 7
+; SI-NEXT:    v_writelane_b32 v32, s52, 8
+; SI-NEXT:    v_writelane_b32 v32, s53, 9
+; SI-NEXT:    v_writelane_b32 v32, s54, 10
+; SI-NEXT:    v_writelane_b32 v32, s55, 11
+; SI-NEXT:    v_writelane_b32 v32, s64, 12
+; SI-NEXT:    v_writelane_b32 v32, s65, 13
+; SI-NEXT:    v_writelane_b32 v32, s66, 14
+; SI-NEXT:    v_writelane_b32 v32, s67, 15
+; SI-NEXT:    v_writelane_b32 v32, s30, 16
+; SI-NEXT:    v_writelane_b32 v32, s31, 17
 ; SI-NEXT:    v_readfirstlane_b32 s6, v7
 ; SI-NEXT:    v_readfirstlane_b32 s8, v6
 ; SI-NEXT:    v_readfirstlane_b32 s10, v5
@@ -8502,10 +8685,10 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s93, s22, 16
 ; SI-NEXT:    s_lshr_b32 s94, s21, 16
 ; SI-NEXT:    s_lshr_b32 s95, s20, 16
-; SI-NEXT:    s_lshr_b32 s30, s19, 16
-; SI-NEXT:    s_lshr_b32 s31, s18, 16
-; SI-NEXT:    s_lshr_b32 s34, s17, 16
-; SI-NEXT:    s_lshr_b32 s35, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; SI-NEXT:    s_lshr_b32 s30, s17, 16
+; SI-NEXT:    s_lshr_b32 s31, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -8516,18 +8699,18 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s79, s77, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s34, 16
+; SI-NEXT:    s_lshl_b32 s41, s30, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -8584,11 +8767,20 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s57, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s35
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s31
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s30
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
@@ -8598,14 +8790,14 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, vcc_hi
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, vcc_lo
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
@@ -8762,11 +8954,8 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v20, v21, v20
 ; SI-NEXT:    v_lshlrev_b32_e32 v21, 16, v22
 ; SI-NEXT:    v_or_b32_e32 v21, v23, v21
-; SI-NEXT:    s_branch .LBB19_5
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:    s_branch .LBB19_6
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -8799,27 +8988,25 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB19_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 18
-; SI-NEXT:    v_readlane_b32 s31, v32, 19
-; SI-NEXT:    v_readlane_b32 s67, v32, 17
-; SI-NEXT:    v_readlane_b32 s66, v32, 16
-; SI-NEXT:    v_readlane_b32 s65, v32, 15
-; SI-NEXT:    v_readlane_b32 s64, v32, 14
-; SI-NEXT:    v_readlane_b32 s55, v32, 13
-; SI-NEXT:    v_readlane_b32 s54, v32, 12
-; SI-NEXT:    v_readlane_b32 s53, v32, 11
-; SI-NEXT:    v_readlane_b32 s52, v32, 10
-; SI-NEXT:    v_readlane_b32 s51, v32, 9
-; SI-NEXT:    v_readlane_b32 s50, v32, 8
-; SI-NEXT:    v_readlane_b32 s49, v32, 7
-; SI-NEXT:    v_readlane_b32 s48, v32, 6
-; SI-NEXT:    v_readlane_b32 s39, v32, 5
-; SI-NEXT:    v_readlane_b32 s38, v32, 4
-; SI-NEXT:    v_readlane_b32 s37, v32, 3
-; SI-NEXT:    v_readlane_b32 s36, v32, 2
-; SI-NEXT:    v_readlane_b32 s35, v32, 1
-; SI-NEXT:    v_readlane_b32 s34, v32, 0
+; SI-NEXT:  .LBB19_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 16
+; SI-NEXT:    v_readlane_b32 s31, v32, 17
+; SI-NEXT:    v_readlane_b32 s67, v32, 15
+; SI-NEXT:    v_readlane_b32 s66, v32, 14
+; SI-NEXT:    v_readlane_b32 s65, v32, 13
+; SI-NEXT:    v_readlane_b32 s64, v32, 12
+; SI-NEXT:    v_readlane_b32 s55, v32, 11
+; SI-NEXT:    v_readlane_b32 s54, v32, 10
+; SI-NEXT:    v_readlane_b32 s53, v32, 9
+; SI-NEXT:    v_readlane_b32 s52, v32, 8
+; SI-NEXT:    v_readlane_b32 s51, v32, 7
+; SI-NEXT:    v_readlane_b32 s50, v32, 6
+; SI-NEXT:    v_readlane_b32 s49, v32, 5
+; SI-NEXT:    v_readlane_b32 s48, v32, 4
+; SI-NEXT:    v_readlane_b32 s39, v32, 3
+; SI-NEXT:    v_readlane_b32 s38, v32, 2
+; SI-NEXT:    v_readlane_b32 s37, v32, 1
+; SI-NEXT:    v_readlane_b32 s36, v32, 0
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v32, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -8852,10 +9039,8 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; VI-NEXT:    v_writelane_b32 v32, s67, 17
 ; VI-NEXT:    v_writelane_b32 v32, s68, 18
 ; VI-NEXT:    v_writelane_b32 v32, s69, 19
-; VI-NEXT:    v_writelane_b32 v32, s70, 20
-; VI-NEXT:    v_writelane_b32 v32, s71, 21
-; VI-NEXT:    v_writelane_b32 v32, s30, 22
-; VI-NEXT:    v_writelane_b32 v32, s31, 23
+; VI-NEXT:    v_writelane_b32 v32, s30, 20
+; VI-NEXT:    v_writelane_b32 v32, s31, 21
 ; VI-NEXT:    v_readfirstlane_b32 s6, v7
 ; VI-NEXT:    v_readfirstlane_b32 s8, v6
 ; VI-NEXT:    v_readfirstlane_b32 s10, v5
@@ -8870,14 +9055,14 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s77, s26, 16
 ; VI-NEXT:    s_lshr_b32 s88, s25, 16
 ; VI-NEXT:    s_lshr_b32 s90, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s68, s19, 16
-; VI-NEXT:    s_lshr_b32 s69, s18, 16
-; VI-NEXT:    s_lshr_b32 s70, s17, 16
-; VI-NEXT:    s_lshr_b32 s71, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s68, s17, 16
+; VI-NEXT:    s_lshr_b32 s69, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -8888,31 +9073,31 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s91, s89, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v8
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s70, 16
+; VI-NEXT:    s_lshl_b32 s41, s68, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -8956,38 +9141,47 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v21, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s71
-; VI-NEXT:    v_mov_b32_e32 v2, s70
+; VI-NEXT:    v_mov_b32_e32 v0, s69
+; VI-NEXT:    v_mov_b32_e32 v2, s68
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v21
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v21
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s69
+; VI-NEXT:    v_mov_b32_e32 v2, s35
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v21
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s68
+; VI-NEXT:    v_mov_b32_e32 v3, s34
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v21
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s35
+; VI-NEXT:    v_mov_b32_e32 v4, s31
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v21
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s34
+; VI-NEXT:    v_mov_b32_e32 v5, s30
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v21
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s31
+; VI-NEXT:    v_mov_b32_e32 v6, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v21
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s30
+; VI-NEXT:    v_mov_b32_e32 v7, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v21
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
@@ -9047,11 +9241,8 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v22, v22, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v21, s6, v21
 ; VI-NEXT:    v_or_b32_e32 v21, v21, v22
-; VI-NEXT:    s_branch .LBB19_5
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:    s_branch .LBB19_6
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -9084,11 +9275,9 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB19_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 22
-; VI-NEXT:    v_readlane_b32 s31, v32, 23
-; VI-NEXT:    v_readlane_b32 s71, v32, 21
-; VI-NEXT:    v_readlane_b32 s70, v32, 20
+; VI-NEXT:  .LBB19_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 20
+; VI-NEXT:    v_readlane_b32 s31, v32, 21
 ; VI-NEXT:    v_readlane_b32 s69, v32, 19
 ; VI-NEXT:    v_readlane_b32 s68, v32, 18
 ; VI-NEXT:    v_readlane_b32 s67, v32, 17
@@ -9187,10 +9376,18 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s56, s56, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s58
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v21, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v21 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v21 op_sel_hi:[1,0]
@@ -9214,10 +9411,8 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v19, s55, v21 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v20, s56, v21 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v21, s57, v21 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB19_5
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:    s_branch .LBB19_6
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -9250,7 +9445,7 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB19_5: ; %end
+; GFX9-NEXT:  .LBB19_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -9323,11 +9518,16 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s57, s62
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s20, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -9351,8 +9551,6 @@ define inreg <22 x i32> @bitcast_v44f16_to_v22i32_scalar(<44 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v20, 0x200, s20 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v21, 0x200, s21 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -9579,10 +9777,18 @@ define inreg <11 x i64> @bitcast_v22f32_to_v11i64_scalar(<22 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_3
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB21_4
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v21, s57, 1.0
 ; SI-NEXT:    v_add_f32_e64 v20, s56, 1.0
 ; SI-NEXT:    v_add_f32_e64 v19, s55, 1.0
@@ -9605,10 +9811,8 @@ define inreg <11 x i64> @bitcast_v22f32_to_v11i64_scalar(<22 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB21_5
-; SI-NEXT:  .LBB21_3:
-; SI-NEXT:    s_branch .LBB21_2
-; SI-NEXT:  .LBB21_4:
+; SI-NEXT:    s_branch .LBB21_6
+; SI-NEXT:  .LBB21_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -9641,7 +9845,7 @@ define inreg <11 x i64> @bitcast_v22f32_to_v11i64_scalar(<22 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB21_5: ; %end
+; SI-NEXT:  .LBB21_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -9702,10 +9906,18 @@ define inreg <11 x i64> @bitcast_v22f32_to_v11i64_scalar(<22 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_3
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_4
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v21, s57, 1.0
 ; VI-NEXT:    v_add_f32_e64 v20, s56, 1.0
 ; VI-NEXT:    v_add_f32_e64 v19, s55, 1.0
@@ -9728,10 +9940,8 @@ define inreg <11 x i64> @bitcast_v22f32_to_v11i64_scalar(<22 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB21_5
-; VI-NEXT:  .LBB21_3:
-; VI-NEXT:    s_branch .LBB21_2
-; VI-NEXT:  .LBB21_4:
+; VI-NEXT:    s_branch .LBB21_6
+; VI-NEXT:  .LBB21_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -9764,7 +9974,7 @@ define inreg <11 x i64> @bitcast_v22f32_to_v11i64_scalar(<22 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB21_5: ; %end
+; VI-NEXT:  .LBB21_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -9825,10 +10035,18 @@ define inreg <11 x i64> @bitcast_v22f32_to_v11i64_scalar(<22 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_4
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v21, s57, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v20, s56, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v19, s55, 1.0
@@ -9851,10 +10069,8 @@ define inreg <11 x i64> @bitcast_v22f32_to_v11i64_scalar(<22 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB21_5
-; GFX9-NEXT:  .LBB21_3:
-; GFX9-NEXT:    s_branch .LBB21_2
-; GFX9-NEXT:  .LBB21_4:
+; GFX9-NEXT:    s_branch .LBB21_6
+; GFX9-NEXT:  .LBB21_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -9887,7 +10103,7 @@ define inreg <11 x i64> @bitcast_v22f32_to_v11i64_scalar(<22 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB21_5: ; %end
+; GFX9-NEXT:  .LBB21_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -9949,11 +10165,16 @@ define inreg <11 x i64> @bitcast_v22f32_to_v11i64_scalar(<22 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_4
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v21, s57, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v20, s56, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v19, s55, 1.0
@@ -9977,8 +10198,6 @@ define inreg <11 x i64> @bitcast_v22f32_to_v11i64_scalar(<22 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB21_5
-; GFX11-NEXT:  .LBB21_3:
-; GFX11-NEXT:    s_branch .LBB21_2
 ; GFX11-NEXT:  .LBB21_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -10209,10 +10428,18 @@ define inreg <22 x float> @bitcast_v11i64_to_v22f32_scalar(<11 x i64> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s12, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s13, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -10235,7 +10462,7 @@ define inreg <22 x float> @bitcast_v11i64_to_v22f32_scalar(<11 x i64> inreg %a,
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -10259,8 +10486,6 @@ define inreg <22 x float> @bitcast_v11i64_to_v22f32_scalar(<11 x i64> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v20, s7
 ; SI-NEXT:    v_mov_b32_e32 v21, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v11i64_to_v22f32_scalar:
 ; VI:       ; %bb.0:
@@ -10275,10 +10500,18 @@ define inreg <22 x float> @bitcast_v11i64_to_v22f32_scalar(<11 x i64> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s12, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s13, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_4
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_3
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -10301,7 +10534,7 @@ define inreg <22 x float> @bitcast_v11i64_to_v22f32_scalar(<11 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB23_3: ; %end
+; VI-NEXT:  .LBB23_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -10325,8 +10558,6 @@ define inreg <22 x float> @bitcast_v11i64_to_v22f32_scalar(<11 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v20, s7
 ; VI-NEXT:    v_mov_b32_e32 v21, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_4:
-; VI-NEXT:    s_branch .LBB23_2
 ;
 ; GFX9-LABEL: bitcast_v11i64_to_v22f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -10341,10 +10572,18 @@ define inreg <22 x float> @bitcast_v11i64_to_v22f32_scalar(<11 x i64> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s13, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_3
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -10367,7 +10606,7 @@ define inreg <22 x float> @bitcast_v11i64_to_v22f32_scalar(<11 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB23_3: ; %end
+; GFX9-NEXT:  .LBB23_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -10391,8 +10630,6 @@ define inreg <22 x float> @bitcast_v11i64_to_v22f32_scalar(<11 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_4:
-; GFX9-NEXT:    s_branch .LBB23_2
 ;
 ; GFX11-LABEL: bitcast_v11i64_to_v22f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -10404,11 +10641,16 @@ define inreg <22 x float> @bitcast_v11i64_to_v22f32_scalar(<11 x i64> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s7, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s8, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_3
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -10431,7 +10673,7 @@ define inreg <22 x float> @bitcast_v11i64_to_v22f32_scalar(<11 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB23_3: ; %end
+; GFX11-NEXT:  .LBB23_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -10445,8 +10687,6 @@ define inreg <22 x float> @bitcast_v11i64_to_v22f32_scalar(<11 x i64> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s7 :: v_dual_mov_b32 v19, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s5 :: v_dual_mov_b32 v21, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_4:
-; GFX11-NEXT:    s_branch .LBB23_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -10655,10 +10895,18 @@ define inreg <11 x double> @bitcast_v22f32_to_v11f64_scalar(<22 x float> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_3
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB25_4
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v21, s57, 1.0
 ; SI-NEXT:    v_add_f32_e64 v20, s56, 1.0
 ; SI-NEXT:    v_add_f32_e64 v19, s55, 1.0
@@ -10681,10 +10929,8 @@ define inreg <11 x double> @bitcast_v22f32_to_v11f64_scalar(<22 x float> inreg %
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB25_5
-; SI-NEXT:  .LBB25_3:
-; SI-NEXT:    s_branch .LBB25_2
-; SI-NEXT:  .LBB25_4:
+; SI-NEXT:    s_branch .LBB25_6
+; SI-NEXT:  .LBB25_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -10717,7 +10963,7 @@ define inreg <11 x double> @bitcast_v22f32_to_v11f64_scalar(<22 x float> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB25_5: ; %end
+; SI-NEXT:  .LBB25_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -10778,10 +11024,18 @@ define inreg <11 x double> @bitcast_v22f32_to_v11f64_scalar(<22 x float> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_3
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB25_4
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v21, s57, 1.0
 ; VI-NEXT:    v_add_f32_e64 v20, s56, 1.0
 ; VI-NEXT:    v_add_f32_e64 v19, s55, 1.0
@@ -10804,10 +11058,8 @@ define inreg <11 x double> @bitcast_v22f32_to_v11f64_scalar(<22 x float> inreg %
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB25_5
-; VI-NEXT:  .LBB25_3:
-; VI-NEXT:    s_branch .LBB25_2
-; VI-NEXT:  .LBB25_4:
+; VI-NEXT:    s_branch .LBB25_6
+; VI-NEXT:  .LBB25_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -10840,7 +11092,7 @@ define inreg <11 x double> @bitcast_v22f32_to_v11f64_scalar(<22 x float> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB25_5: ; %end
+; VI-NEXT:  .LBB25_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -10901,10 +11153,18 @@ define inreg <11 x double> @bitcast_v22f32_to_v11f64_scalar(<22 x float> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_4
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v21, s57, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v20, s56, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v19, s55, 1.0
@@ -10927,10 +11187,8 @@ define inreg <11 x double> @bitcast_v22f32_to_v11f64_scalar(<22 x float> inreg %
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB25_5
-; GFX9-NEXT:  .LBB25_3:
-; GFX9-NEXT:    s_branch .LBB25_2
-; GFX9-NEXT:  .LBB25_4:
+; GFX9-NEXT:    s_branch .LBB25_6
+; GFX9-NEXT:  .LBB25_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -10963,7 +11221,7 @@ define inreg <11 x double> @bitcast_v22f32_to_v11f64_scalar(<22 x float> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB25_5: ; %end
+; GFX9-NEXT:  .LBB25_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -11025,11 +11283,16 @@ define inreg <11 x double> @bitcast_v22f32_to_v11f64_scalar(<22 x float> inreg %
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_4
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB25_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v21, s57, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v20, s56, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v19, s55, 1.0
@@ -11053,8 +11316,6 @@ define inreg <11 x double> @bitcast_v22f32_to_v11f64_scalar(<22 x float> inreg %
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB25_5
-; GFX11-NEXT:  .LBB25_3:
-; GFX11-NEXT:    s_branch .LBB25_2
 ; GFX11-NEXT:  .LBB25_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -11265,10 +11526,18 @@ define inreg <22 x float> @bitcast_v11f64_to_v22f32_scalar(<11 x double> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB27_3
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB27_4
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; SI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; SI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
@@ -11280,10 +11549,8 @@ define inreg <22 x float> @bitcast_v11f64_to_v22f32_scalar(<11 x double> inreg %
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB27_5
-; SI-NEXT:  .LBB27_3:
-; SI-NEXT:    s_branch .LBB27_2
-; SI-NEXT:  .LBB27_4:
+; SI-NEXT:    s_branch .LBB27_6
+; SI-NEXT:  .LBB27_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -11316,7 +11583,7 @@ define inreg <22 x float> @bitcast_v11f64_to_v22f32_scalar(<11 x double> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB27_5: ; %end
+; SI-NEXT:  .LBB27_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -11377,10 +11644,18 @@ define inreg <22 x float> @bitcast_v11f64_to_v22f32_scalar(<11 x double> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_3
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB27_4
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; VI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; VI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
@@ -11392,10 +11667,8 @@ define inreg <22 x float> @bitcast_v11f64_to_v22f32_scalar(<11 x double> inreg %
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB27_5
-; VI-NEXT:  .LBB27_3:
-; VI-NEXT:    s_branch .LBB27_2
-; VI-NEXT:  .LBB27_4:
+; VI-NEXT:    s_branch .LBB27_6
+; VI-NEXT:  .LBB27_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -11428,7 +11701,7 @@ define inreg <22 x float> @bitcast_v11f64_to_v22f32_scalar(<11 x double> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB27_5: ; %end
+; VI-NEXT:  .LBB27_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -11489,10 +11762,18 @@ define inreg <22 x float> @bitcast_v11f64_to_v22f32_scalar(<11 x double> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_4
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
@@ -11504,10 +11785,8 @@ define inreg <22 x float> @bitcast_v11f64_to_v22f32_scalar(<11 x double> inreg %
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB27_5
-; GFX9-NEXT:  .LBB27_3:
-; GFX9-NEXT:    s_branch .LBB27_2
-; GFX9-NEXT:  .LBB27_4:
+; GFX9-NEXT:    s_branch .LBB27_6
+; GFX9-NEXT:  .LBB27_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -11540,7 +11819,7 @@ define inreg <22 x float> @bitcast_v11f64_to_v22f32_scalar(<11 x double> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB27_5: ; %end
+; GFX9-NEXT:  .LBB27_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -11602,11 +11881,16 @@ define inreg <22 x float> @bitcast_v11f64_to_v22f32_scalar(<11 x double> inreg %
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_4
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB27_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; GFX11-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; GFX11-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
@@ -11619,8 +11903,6 @@ define inreg <22 x float> @bitcast_v11f64_to_v22f32_scalar(<11 x double> inreg %
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB27_5
-; GFX11-NEXT:  .LBB27_3:
-; GFX11-NEXT:    s_branch .LBB27_2
 ; GFX11-NEXT:  .LBB27_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -12291,7 +12573,7 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s11, v1
 ; SI-NEXT:    s_cmp_lg_u32 s10, 0
 ; SI-NEXT:    v_readfirstlane_b32 s10, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s94, s5, 16
 ; SI-NEXT:    s_lshr_b32 s93, s7, 16
@@ -12315,8 +12597,38 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[74:75], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[74:75], -1
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[74:75], s[74:75], exec
+; SI-NEXT:    s_cselect_b32 s13, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s13, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v21, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v20, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v19, s7, 1.0
@@ -12361,32 +12673,8 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v50, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v51, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v52, 16, v1
-; SI-NEXT:    s_branch .LBB29_5
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:    s_branch .LBB29_6
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -12431,7 +12719,7 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v30, s60
 ; SI-NEXT:    v_mov_b32_e32 v31, s62
 ; SI-NEXT:    v_mov_b32_e32 v32, s72
-; SI-NEXT:  .LBB29_5: ; %end
+; SI-NEXT:  .LBB29_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v32, 16, v32
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v31, 16, v31
@@ -12513,7 +12801,7 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s12, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s13, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s14, s6, 16
 ; VI-NEXT:    s_lshr_b32 s15, s7, 16
@@ -12537,8 +12825,38 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s73, s18, 16
 ; VI-NEXT:    s_lshr_b32 s74, s17, 16
 ; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v21, s6, 1.0
 ; VI-NEXT:    v_add_f32_e64 v20, s7, 1.0
 ; VI-NEXT:    v_add_f32_e64 v19, s8, 1.0
@@ -12583,32 +12901,8 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v49, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v50, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v51, 16, v0
-; VI-NEXT:    s_branch .LBB29_5
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:    s_branch .LBB29_6
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -12653,7 +12947,7 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v24, s40
 ; VI-NEXT:    v_mov_b32_e32 v23, s15
 ; VI-NEXT:    v_mov_b32_e32 v22, s14
-; VI-NEXT:  .LBB29_5: ; %end
+; VI-NEXT:  .LBB29_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v51, 16, v51
 ; VI-NEXT:    v_lshlrev_b32_e32 v50, 16, v50
 ; VI-NEXT:    v_lshlrev_b32_e32 v49, 16, v49
@@ -12713,7 +13007,7 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s13, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s14, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s15, s7, 16
@@ -12737,8 +13031,38 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s73, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s74, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s75, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v21, s6, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v20, s7, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v19, s8, 1.0
@@ -12783,32 +13107,8 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v49, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v50, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v51, 16, v0
-; GFX9-NEXT:    s_branch .LBB29_5
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:    s_branch .LBB29_6
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -12853,7 +13153,7 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s40
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s15
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s14
-; GFX9-NEXT:  .LBB29_5: ; %end
+; GFX9-NEXT:  .LBB29_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -12909,11 +13209,11 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s7, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s8, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s10, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s9, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s10, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s8, s4, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s9, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s6, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s12, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s29, 16
@@ -12934,9 +13234,38 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s60, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s61, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s62, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-TRUE16-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB29_3
+; GFX11-TRUE16-NEXT:  .LBB29_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-TRUE16-NEXT:  .LBB29_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s10, s10, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v21, s4, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v20, s5, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v19, s6, 1.0
@@ -12981,32 +13310,8 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v49, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v50, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v51, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB29_5
-; GFX11-TRUE16-NEXT:  .LBB29_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-TRUE16-NEXT:    s_branch .LBB29_2
-; GFX11-TRUE16-NEXT:  .LBB29_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB29_6
+; GFX11-TRUE16-NEXT:  .LBB29_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -13028,8 +13333,8 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s10 :: v_dual_mov_b32 v22, s9
-; GFX11-TRUE16-NEXT:  .LBB29_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s9 :: v_dual_mov_b32 v22, s8
+; GFX11-TRUE16-NEXT:  .LBB29_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v51.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v50.l
@@ -13064,11 +13369,11 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s7, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s8, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s10, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s9, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s10, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s8, s4, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s9, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s6, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s12, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s29, 16
@@ -13089,9 +13394,38 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s60, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s61, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s62, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-FAKE16-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB29_3
+; GFX11-FAKE16-NEXT:  .LBB29_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-FAKE16-NEXT:  .LBB29_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s10, s10, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v17, s4, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v18, s5, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v19, s6, 1.0
@@ -13136,32 +13470,8 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v49, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v50, 16, v5
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v51, 16, v6
-; GFX11-FAKE16-NEXT:    s_branch .LBB29_5
-; GFX11-FAKE16-NEXT:  .LBB29_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-FAKE16-NEXT:    s_branch .LBB29_2
-; GFX11-FAKE16-NEXT:  .LBB29_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB29_6
+; GFX11-FAKE16-NEXT:  .LBB29_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v6, s0 :: v_dual_mov_b32 v5, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v1, s2 :: v_dual_mov_b32 v0, s3
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v3, s17
@@ -13183,8 +13493,8 @@ define inreg <44 x i16> @bitcast_v22f32_to_v44i16_scalar(<22 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v23, s10 :: v_dual_mov_b32 v22, s9
-; GFX11-FAKE16-NEXT:  .LBB29_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v23, s9 :: v_dual_mov_b32 v22, s8
+; GFX11-FAKE16-NEXT:  .LBB29_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff, v6
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v5
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v52, 0xffff, v1
@@ -14203,26 +14513,24 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v22, s34, 0
-; SI-NEXT:    v_writelane_b32 v22, s35, 1
-; SI-NEXT:    v_writelane_b32 v22, s36, 2
-; SI-NEXT:    v_writelane_b32 v22, s37, 3
-; SI-NEXT:    v_writelane_b32 v22, s38, 4
-; SI-NEXT:    v_writelane_b32 v22, s39, 5
-; SI-NEXT:    v_writelane_b32 v22, s48, 6
-; SI-NEXT:    v_writelane_b32 v22, s49, 7
-; SI-NEXT:    v_writelane_b32 v22, s50, 8
-; SI-NEXT:    v_writelane_b32 v22, s51, 9
-; SI-NEXT:    v_writelane_b32 v22, s52, 10
-; SI-NEXT:    v_writelane_b32 v22, s53, 11
-; SI-NEXT:    v_writelane_b32 v22, s54, 12
-; SI-NEXT:    v_writelane_b32 v22, s55, 13
-; SI-NEXT:    v_writelane_b32 v22, s64, 14
-; SI-NEXT:    v_writelane_b32 v22, s65, 15
-; SI-NEXT:    v_writelane_b32 v22, s66, 16
-; SI-NEXT:    v_writelane_b32 v22, s67, 17
-; SI-NEXT:    v_writelane_b32 v22, s30, 18
-; SI-NEXT:    v_writelane_b32 v22, s31, 19
+; SI-NEXT:    v_writelane_b32 v22, s36, 0
+; SI-NEXT:    v_writelane_b32 v22, s37, 1
+; SI-NEXT:    v_writelane_b32 v22, s38, 2
+; SI-NEXT:    v_writelane_b32 v22, s39, 3
+; SI-NEXT:    v_writelane_b32 v22, s48, 4
+; SI-NEXT:    v_writelane_b32 v22, s49, 5
+; SI-NEXT:    v_writelane_b32 v22, s50, 6
+; SI-NEXT:    v_writelane_b32 v22, s51, 7
+; SI-NEXT:    v_writelane_b32 v22, s52, 8
+; SI-NEXT:    v_writelane_b32 v22, s53, 9
+; SI-NEXT:    v_writelane_b32 v22, s54, 10
+; SI-NEXT:    v_writelane_b32 v22, s55, 11
+; SI-NEXT:    v_writelane_b32 v22, s64, 12
+; SI-NEXT:    v_writelane_b32 v22, s65, 13
+; SI-NEXT:    v_writelane_b32 v22, s66, 14
+; SI-NEXT:    v_writelane_b32 v22, s67, 15
+; SI-NEXT:    v_writelane_b32 v22, s30, 16
+; SI-NEXT:    v_writelane_b32 v22, s31, 17
 ; SI-NEXT:    v_readfirstlane_b32 s7, v7
 ; SI-NEXT:    v_readfirstlane_b32 s9, v6
 ; SI-NEXT:    v_readfirstlane_b32 s11, v5
@@ -14241,10 +14549,10 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s93, s22, 16
 ; SI-NEXT:    s_lshr_b32 s94, s21, 16
 ; SI-NEXT:    s_lshr_b32 s95, s20, 16
-; SI-NEXT:    s_lshr_b32 s30, s19, 16
-; SI-NEXT:    s_lshr_b32 s31, s18, 16
-; SI-NEXT:    s_lshr_b32 s34, s17, 16
-; SI-NEXT:    s_lshr_b32 s35, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; SI-NEXT:    s_lshr_b32 s30, s17, 16
+; SI-NEXT:    s_lshr_b32 s31, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -14255,18 +14563,18 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s89, s90, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_4
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s34, 16
+; SI-NEXT:    s_lshl_b32 s41, s30, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -14323,26 +14631,35 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s57, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB31_3
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
@@ -14435,8 +14752,8 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s57, s4, 0x30000
-; SI-NEXT:  .LBB31_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v22, 18
+; SI-NEXT:  .LBB31_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v22, 16
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -14459,33 +14776,28 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v19, s55
 ; SI-NEXT:    v_mov_b32_e32 v20, s56
 ; SI-NEXT:    v_mov_b32_e32 v21, s57
-; SI-NEXT:    v_readlane_b32 s31, v22, 19
-; SI-NEXT:    v_readlane_b32 s67, v22, 17
-; SI-NEXT:    v_readlane_b32 s66, v22, 16
-; SI-NEXT:    v_readlane_b32 s65, v22, 15
-; SI-NEXT:    v_readlane_b32 s64, v22, 14
-; SI-NEXT:    v_readlane_b32 s55, v22, 13
-; SI-NEXT:    v_readlane_b32 s54, v22, 12
-; SI-NEXT:    v_readlane_b32 s53, v22, 11
-; SI-NEXT:    v_readlane_b32 s52, v22, 10
-; SI-NEXT:    v_readlane_b32 s51, v22, 9
-; SI-NEXT:    v_readlane_b32 s50, v22, 8
-; SI-NEXT:    v_readlane_b32 s49, v22, 7
-; SI-NEXT:    v_readlane_b32 s48, v22, 6
-; SI-NEXT:    v_readlane_b32 s39, v22, 5
-; SI-NEXT:    v_readlane_b32 s38, v22, 4
-; SI-NEXT:    v_readlane_b32 s37, v22, 3
-; SI-NEXT:    v_readlane_b32 s36, v22, 2
-; SI-NEXT:    v_readlane_b32 s35, v22, 1
-; SI-NEXT:    v_readlane_b32 s34, v22, 0
+; SI-NEXT:    v_readlane_b32 s31, v22, 17
+; SI-NEXT:    v_readlane_b32 s67, v22, 15
+; SI-NEXT:    v_readlane_b32 s66, v22, 14
+; SI-NEXT:    v_readlane_b32 s65, v22, 13
+; SI-NEXT:    v_readlane_b32 s64, v22, 12
+; SI-NEXT:    v_readlane_b32 s55, v22, 11
+; SI-NEXT:    v_readlane_b32 s54, v22, 10
+; SI-NEXT:    v_readlane_b32 s53, v22, 9
+; SI-NEXT:    v_readlane_b32 s52, v22, 8
+; SI-NEXT:    v_readlane_b32 s51, v22, 7
+; SI-NEXT:    v_readlane_b32 s50, v22, 6
+; SI-NEXT:    v_readlane_b32 s49, v22, 5
+; SI-NEXT:    v_readlane_b32 s48, v22, 4
+; SI-NEXT:    v_readlane_b32 s39, v22, 3
+; SI-NEXT:    v_readlane_b32 s38, v22, 2
+; SI-NEXT:    v_readlane_b32 s37, v22, 1
+; SI-NEXT:    v_readlane_b32 s36, v22, 0
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB31_2
 ;
 ; VI-LABEL: bitcast_v44i16_to_v22f32_scalar:
 ; VI:       ; %bb.0:
@@ -14513,10 +14825,8 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v22, s67, 17
 ; VI-NEXT:    v_writelane_b32 v22, s68, 18
 ; VI-NEXT:    v_writelane_b32 v22, s69, 19
-; VI-NEXT:    v_writelane_b32 v22, s70, 20
-; VI-NEXT:    v_writelane_b32 v22, s71, 21
-; VI-NEXT:    v_writelane_b32 v22, s30, 22
-; VI-NEXT:    v_writelane_b32 v22, s31, 23
+; VI-NEXT:    v_writelane_b32 v22, s30, 20
+; VI-NEXT:    v_writelane_b32 v22, s31, 21
 ; VI-NEXT:    v_readfirstlane_b32 s7, v7
 ; VI-NEXT:    v_readfirstlane_b32 s9, v6
 ; VI-NEXT:    v_readfirstlane_b32 s11, v5
@@ -14531,14 +14841,14 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s78, s26, 16
 ; VI-NEXT:    s_lshr_b32 s88, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s68, s19, 16
-; VI-NEXT:    s_lshr_b32 s69, s18, 16
-; VI-NEXT:    s_lshr_b32 s70, s17, 16
-; VI-NEXT:    s_lshr_b32 s71, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s68, s17, 16
+; VI-NEXT:    s_lshr_b32 s69, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -14549,31 +14859,31 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s89, s90, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v8
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_4
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s70, 16
+; VI-NEXT:    s_lshl_b32 s41, s68, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -14617,46 +14927,55 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB31_3
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
@@ -14729,8 +15048,8 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s57, s4, 0x30000
-; VI-NEXT:  .LBB31_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v22, 22
+; VI-NEXT:  .LBB31_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v22, 20
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -14753,9 +15072,7 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v19, s55
 ; VI-NEXT:    v_mov_b32_e32 v20, s56
 ; VI-NEXT:    v_mov_b32_e32 v21, s57
-; VI-NEXT:    v_readlane_b32 s31, v22, 23
-; VI-NEXT:    v_readlane_b32 s71, v22, 21
-; VI-NEXT:    v_readlane_b32 s70, v22, 20
+; VI-NEXT:    v_readlane_b32 s31, v22, 21
 ; VI-NEXT:    v_readlane_b32 s69, v22, 19
 ; VI-NEXT:    v_readlane_b32 s68, v22, 18
 ; VI-NEXT:    v_readlane_b32 s67, v22, 17
@@ -14781,9 +15098,6 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB31_2
 ;
 ; GFX9-LABEL: bitcast_v44i16_to_v22f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -14857,10 +15171,18 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s56, s56, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s58
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_4
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -14883,10 +15205,8 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v19, s55, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v20, s56, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v21, s57, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB31_5
-; GFX9-NEXT:  .LBB31_3:
-; GFX9-NEXT:    s_branch .LBB31_2
-; GFX9-NEXT:  .LBB31_4:
+; GFX9-NEXT:    s_branch .LBB31_6
+; GFX9-NEXT:  .LBB31_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -14919,7 +15239,7 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB31_5: ; %end
+; GFX9-NEXT:  .LBB31_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -14992,11 +15312,16 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s57, s62
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s20, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_4
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -15020,8 +15345,6 @@ define inreg <22 x float> @bitcast_v44i16_to_v22f32_scalar(<44 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v20, s20, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v21, s21, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_3:
-; GFX11-NEXT:    s_branch .LBB31_2
 ; GFX11-NEXT:  .LBB31_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -15675,7 +15998,7 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s11, v1
 ; SI-NEXT:    s_cmp_lg_u32 s10, 0
 ; SI-NEXT:    v_readfirstlane_b32 s10, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s94, s5, 16
 ; SI-NEXT:    s_lshr_b32 s93, s7, 16
@@ -15699,8 +16022,38 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[74:75], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[74:75], -1
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[74:75], s[74:75], exec
+; SI-NEXT:    s_cselect_b32 s13, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s13, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v21, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v20, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v19, s7, 1.0
@@ -15745,32 +16098,8 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v50, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v51, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v52, 16, v1
-; SI-NEXT:    s_branch .LBB33_5
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:    s_branch .LBB33_6
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -15815,7 +16144,7 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v30, s60
 ; SI-NEXT:    v_mov_b32_e32 v31, s62
 ; SI-NEXT:    v_mov_b32_e32 v32, s72
-; SI-NEXT:  .LBB33_5: ; %end
+; SI-NEXT:  .LBB33_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v32, 16, v32
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v31, 16, v31
@@ -15897,7 +16226,7 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s12, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s13, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s14, s6, 16
 ; VI-NEXT:    s_lshr_b32 s15, s7, 16
@@ -15921,8 +16250,38 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s73, s18, 16
 ; VI-NEXT:    s_lshr_b32 s74, s17, 16
 ; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v21, s6, 1.0
 ; VI-NEXT:    v_add_f32_e64 v20, s7, 1.0
 ; VI-NEXT:    v_add_f32_e64 v19, s8, 1.0
@@ -15967,32 +16326,8 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v49, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v50, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v51, 16, v0
-; VI-NEXT:    s_branch .LBB33_5
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:    s_branch .LBB33_6
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -16037,7 +16372,7 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v24, s40
 ; VI-NEXT:    v_mov_b32_e32 v23, s15
 ; VI-NEXT:    v_mov_b32_e32 v22, s14
-; VI-NEXT:  .LBB33_5: ; %end
+; VI-NEXT:  .LBB33_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v51, 16, v51
 ; VI-NEXT:    v_lshlrev_b32_e32 v50, 16, v50
 ; VI-NEXT:    v_lshlrev_b32_e32 v49, 16, v49
@@ -16097,7 +16432,7 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s13, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s14, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s15, s7, 16
@@ -16121,8 +16456,38 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s73, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s74, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s75, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v21, s6, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v20, s7, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v19, s8, 1.0
@@ -16167,32 +16532,8 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v49, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v50, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v51, 16, v0
-; GFX9-NEXT:    s_branch .LBB33_5
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:    s_branch .LBB33_6
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -16237,7 +16578,7 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s40
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s15
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s14
-; GFX9-NEXT:  .LBB33_5: ; %end
+; GFX9-NEXT:  .LBB33_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -16293,11 +16634,11 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s7, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s8, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s10, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s9, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s10, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s8, s4, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s9, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s6, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s12, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s29, 16
@@ -16318,9 +16659,38 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s60, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s61, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s62, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-TRUE16-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB33_3
+; GFX11-TRUE16-NEXT:  .LBB33_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-TRUE16-NEXT:  .LBB33_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s10, s10, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v21, s4, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v20, s5, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v19, s6, 1.0
@@ -16365,32 +16735,8 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v49, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v50, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v51, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB33_5
-; GFX11-TRUE16-NEXT:  .LBB33_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-TRUE16-NEXT:    s_branch .LBB33_2
-; GFX11-TRUE16-NEXT:  .LBB33_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB33_6
+; GFX11-TRUE16-NEXT:  .LBB33_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -16412,8 +16758,8 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s10 :: v_dual_mov_b32 v22, s9
-; GFX11-TRUE16-NEXT:  .LBB33_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s9 :: v_dual_mov_b32 v22, s8
+; GFX11-TRUE16-NEXT:  .LBB33_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v51.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v50.l
@@ -16448,11 +16794,11 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s6, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s7, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s8, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s10, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s9, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s10, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s8, s4, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s9, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s6, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s12, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s29, 16
@@ -16473,9 +16819,38 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s60, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s61, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s62, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-FAKE16-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB33_3
+; GFX11-FAKE16-NEXT:  .LBB33_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-FAKE16-NEXT:  .LBB33_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s10, s10, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v17, s4, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v18, s5, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v19, s6, 1.0
@@ -16520,32 +16895,8 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v49, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v50, 16, v5
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v51, 16, v6
-; GFX11-FAKE16-NEXT:    s_branch .LBB33_5
-; GFX11-FAKE16-NEXT:  .LBB33_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-FAKE16-NEXT:    s_branch .LBB33_2
-; GFX11-FAKE16-NEXT:  .LBB33_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB33_6
+; GFX11-FAKE16-NEXT:  .LBB33_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v6, s0 :: v_dual_mov_b32 v5, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v1, s2 :: v_dual_mov_b32 v0, s3
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v3, s17
@@ -16567,8 +16918,8 @@ define inreg <44 x half> @bitcast_v22f32_to_v44f16_scalar(<22 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v23, s10 :: v_dual_mov_b32 v22, s9
-; GFX11-FAKE16-NEXT:  .LBB33_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v23, s9 :: v_dual_mov_b32 v22, s8
+; GFX11-FAKE16-NEXT:  .LBB33_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff, v6
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v5
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v52, 0xffff, v1
@@ -17686,26 +18037,24 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; SI-NEXT:    buffer_store_dword v32, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v32, s34, 0
-; SI-NEXT:    v_writelane_b32 v32, s35, 1
-; SI-NEXT:    v_writelane_b32 v32, s36, 2
-; SI-NEXT:    v_writelane_b32 v32, s37, 3
-; SI-NEXT:    v_writelane_b32 v32, s38, 4
-; SI-NEXT:    v_writelane_b32 v32, s39, 5
-; SI-NEXT:    v_writelane_b32 v32, s48, 6
-; SI-NEXT:    v_writelane_b32 v32, s49, 7
-; SI-NEXT:    v_writelane_b32 v32, s50, 8
-; SI-NEXT:    v_writelane_b32 v32, s51, 9
-; SI-NEXT:    v_writelane_b32 v32, s52, 10
-; SI-NEXT:    v_writelane_b32 v32, s53, 11
-; SI-NEXT:    v_writelane_b32 v32, s54, 12
-; SI-NEXT:    v_writelane_b32 v32, s55, 13
-; SI-NEXT:    v_writelane_b32 v32, s64, 14
-; SI-NEXT:    v_writelane_b32 v32, s65, 15
-; SI-NEXT:    v_writelane_b32 v32, s66, 16
-; SI-NEXT:    v_writelane_b32 v32, s67, 17
-; SI-NEXT:    v_writelane_b32 v32, s30, 18
-; SI-NEXT:    v_writelane_b32 v32, s31, 19
+; SI-NEXT:    v_writelane_b32 v32, s36, 0
+; SI-NEXT:    v_writelane_b32 v32, s37, 1
+; SI-NEXT:    v_writelane_b32 v32, s38, 2
+; SI-NEXT:    v_writelane_b32 v32, s39, 3
+; SI-NEXT:    v_writelane_b32 v32, s48, 4
+; SI-NEXT:    v_writelane_b32 v32, s49, 5
+; SI-NEXT:    v_writelane_b32 v32, s50, 6
+; SI-NEXT:    v_writelane_b32 v32, s51, 7
+; SI-NEXT:    v_writelane_b32 v32, s52, 8
+; SI-NEXT:    v_writelane_b32 v32, s53, 9
+; SI-NEXT:    v_writelane_b32 v32, s54, 10
+; SI-NEXT:    v_writelane_b32 v32, s55, 11
+; SI-NEXT:    v_writelane_b32 v32, s64, 12
+; SI-NEXT:    v_writelane_b32 v32, s65, 13
+; SI-NEXT:    v_writelane_b32 v32, s66, 14
+; SI-NEXT:    v_writelane_b32 v32, s67, 15
+; SI-NEXT:    v_writelane_b32 v32, s30, 16
+; SI-NEXT:    v_writelane_b32 v32, s31, 17
 ; SI-NEXT:    v_readfirstlane_b32 s6, v7
 ; SI-NEXT:    v_readfirstlane_b32 s8, v6
 ; SI-NEXT:    v_readfirstlane_b32 s10, v5
@@ -17724,10 +18073,10 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s93, s22, 16
 ; SI-NEXT:    s_lshr_b32 s94, s21, 16
 ; SI-NEXT:    s_lshr_b32 s95, s20, 16
-; SI-NEXT:    s_lshr_b32 s30, s19, 16
-; SI-NEXT:    s_lshr_b32 s31, s18, 16
-; SI-NEXT:    s_lshr_b32 s34, s17, 16
-; SI-NEXT:    s_lshr_b32 s35, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; SI-NEXT:    s_lshr_b32 s30, s17, 16
+; SI-NEXT:    s_lshr_b32 s31, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -17738,18 +18087,18 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s79, s77, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_3
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s34, 16
+; SI-NEXT:    s_lshl_b32 s41, s30, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -17806,11 +18155,20 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s57, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB35_4
-; SI-NEXT:  .LBB35_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s35
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s31
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s30
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
@@ -17820,14 +18178,14 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, vcc_hi
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, vcc_lo
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
@@ -17984,11 +18342,8 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v20, v21, v20
 ; SI-NEXT:    v_lshlrev_b32_e32 v21, 16, v22
 ; SI-NEXT:    v_or_b32_e32 v21, v23, v21
-; SI-NEXT:    s_branch .LBB35_5
-; SI-NEXT:  .LBB35_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB35_2
-; SI-NEXT:  .LBB35_4:
+; SI-NEXT:    s_branch .LBB35_6
+; SI-NEXT:  .LBB35_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -18021,27 +18376,25 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB35_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 18
-; SI-NEXT:    v_readlane_b32 s31, v32, 19
-; SI-NEXT:    v_readlane_b32 s67, v32, 17
-; SI-NEXT:    v_readlane_b32 s66, v32, 16
-; SI-NEXT:    v_readlane_b32 s65, v32, 15
-; SI-NEXT:    v_readlane_b32 s64, v32, 14
-; SI-NEXT:    v_readlane_b32 s55, v32, 13
-; SI-NEXT:    v_readlane_b32 s54, v32, 12
-; SI-NEXT:    v_readlane_b32 s53, v32, 11
-; SI-NEXT:    v_readlane_b32 s52, v32, 10
-; SI-NEXT:    v_readlane_b32 s51, v32, 9
-; SI-NEXT:    v_readlane_b32 s50, v32, 8
-; SI-NEXT:    v_readlane_b32 s49, v32, 7
-; SI-NEXT:    v_readlane_b32 s48, v32, 6
-; SI-NEXT:    v_readlane_b32 s39, v32, 5
-; SI-NEXT:    v_readlane_b32 s38, v32, 4
-; SI-NEXT:    v_readlane_b32 s37, v32, 3
-; SI-NEXT:    v_readlane_b32 s36, v32, 2
-; SI-NEXT:    v_readlane_b32 s35, v32, 1
-; SI-NEXT:    v_readlane_b32 s34, v32, 0
+; SI-NEXT:  .LBB35_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 16
+; SI-NEXT:    v_readlane_b32 s31, v32, 17
+; SI-NEXT:    v_readlane_b32 s67, v32, 15
+; SI-NEXT:    v_readlane_b32 s66, v32, 14
+; SI-NEXT:    v_readlane_b32 s65, v32, 13
+; SI-NEXT:    v_readlane_b32 s64, v32, 12
+; SI-NEXT:    v_readlane_b32 s55, v32, 11
+; SI-NEXT:    v_readlane_b32 s54, v32, 10
+; SI-NEXT:    v_readlane_b32 s53, v32, 9
+; SI-NEXT:    v_readlane_b32 s52, v32, 8
+; SI-NEXT:    v_readlane_b32 s51, v32, 7
+; SI-NEXT:    v_readlane_b32 s50, v32, 6
+; SI-NEXT:    v_readlane_b32 s49, v32, 5
+; SI-NEXT:    v_readlane_b32 s48, v32, 4
+; SI-NEXT:    v_readlane_b32 s39, v32, 3
+; SI-NEXT:    v_readlane_b32 s38, v32, 2
+; SI-NEXT:    v_readlane_b32 s37, v32, 1
+; SI-NEXT:    v_readlane_b32 s36, v32, 0
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v32, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -18074,10 +18427,8 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v32, s67, 17
 ; VI-NEXT:    v_writelane_b32 v32, s68, 18
 ; VI-NEXT:    v_writelane_b32 v32, s69, 19
-; VI-NEXT:    v_writelane_b32 v32, s70, 20
-; VI-NEXT:    v_writelane_b32 v32, s71, 21
-; VI-NEXT:    v_writelane_b32 v32, s30, 22
-; VI-NEXT:    v_writelane_b32 v32, s31, 23
+; VI-NEXT:    v_writelane_b32 v32, s30, 20
+; VI-NEXT:    v_writelane_b32 v32, s31, 21
 ; VI-NEXT:    v_readfirstlane_b32 s6, v7
 ; VI-NEXT:    v_readfirstlane_b32 s8, v6
 ; VI-NEXT:    v_readfirstlane_b32 s10, v5
@@ -18092,14 +18443,14 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s77, s26, 16
 ; VI-NEXT:    s_lshr_b32 s88, s25, 16
 ; VI-NEXT:    s_lshr_b32 s90, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s68, s19, 16
-; VI-NEXT:    s_lshr_b32 s69, s18, 16
-; VI-NEXT:    s_lshr_b32 s70, s17, 16
-; VI-NEXT:    s_lshr_b32 s71, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s68, s17, 16
+; VI-NEXT:    s_lshr_b32 s69, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -18110,31 +18461,31 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s91, s89, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v8
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s70, 16
+; VI-NEXT:    s_lshl_b32 s41, s68, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -18178,38 +18529,47 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v21, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s71
-; VI-NEXT:    v_mov_b32_e32 v2, s70
+; VI-NEXT:    v_mov_b32_e32 v0, s69
+; VI-NEXT:    v_mov_b32_e32 v2, s68
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v21
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v21
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s69
+; VI-NEXT:    v_mov_b32_e32 v2, s35
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v21
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s68
+; VI-NEXT:    v_mov_b32_e32 v3, s34
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v21
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s35
+; VI-NEXT:    v_mov_b32_e32 v4, s31
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v21
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s34
+; VI-NEXT:    v_mov_b32_e32 v5, s30
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v21
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s31
+; VI-NEXT:    v_mov_b32_e32 v6, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v21
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s30
+; VI-NEXT:    v_mov_b32_e32 v7, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v21
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
@@ -18269,11 +18629,8 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_sdwa v22, v22, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v21, s6, v21
 ; VI-NEXT:    v_or_b32_e32 v21, v21, v22
-; VI-NEXT:    s_branch .LBB35_5
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:    s_branch .LBB35_6
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -18306,11 +18663,9 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB35_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 22
-; VI-NEXT:    v_readlane_b32 s31, v32, 23
-; VI-NEXT:    v_readlane_b32 s71, v32, 21
-; VI-NEXT:    v_readlane_b32 s70, v32, 20
+; VI-NEXT:  .LBB35_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 20
+; VI-NEXT:    v_readlane_b32 s31, v32, 21
 ; VI-NEXT:    v_readlane_b32 s69, v32, 19
 ; VI-NEXT:    v_readlane_b32 s68, v32, 18
 ; VI-NEXT:    v_readlane_b32 s67, v32, 17
@@ -18409,10 +18764,18 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s56, s56, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s58
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v21, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v21 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v21 op_sel_hi:[1,0]
@@ -18436,10 +18799,8 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v19, s55, v21 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v20, s56, v21 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v21, s57, v21 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB35_5
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:    s_branch .LBB35_6
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -18472,7 +18833,7 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB35_5: ; %end
+; GFX9-NEXT:  .LBB35_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -18545,11 +18906,16 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s57, s62
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s20, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -18573,8 +18939,6 @@ define inreg <22 x float> @bitcast_v44f16_to_v22f32_scalar(<44 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v20, 0x200, s20 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v21, 0x200, s21 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -18788,10 +19152,18 @@ define inreg <11 x double> @bitcast_v11i64_to_v11f64_scalar(<11 x i64> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s12, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s13, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_4
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB37_3
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
@@ -18814,7 +19186,7 @@ define inreg <11 x double> @bitcast_v11i64_to_v11f64_scalar(<11 x i64> inreg %a,
 ; SI-NEXT:    s_addc_u32 s8, s8, 0
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
-; SI-NEXT:  .LBB37_3: ; %end
+; SI-NEXT:  .LBB37_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -18838,8 +19210,6 @@ define inreg <11 x double> @bitcast_v11i64_to_v11f64_scalar(<11 x i64> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v20, s7
 ; SI-NEXT:    v_mov_b32_e32 v21, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB37_4:
-; SI-NEXT:    s_branch .LBB37_2
 ;
 ; VI-LABEL: bitcast_v11i64_to_v11f64_scalar:
 ; VI:       ; %bb.0:
@@ -18854,10 +19224,18 @@ define inreg <11 x double> @bitcast_v11i64_to_v11f64_scalar(<11 x i64> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s12, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s13, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_4
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_3
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -18880,7 +19258,7 @@ define inreg <11 x double> @bitcast_v11i64_to_v11f64_scalar(<11 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s8, s8, 0
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
-; VI-NEXT:  .LBB37_3: ; %end
+; VI-NEXT:  .LBB37_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -18904,8 +19282,6 @@ define inreg <11 x double> @bitcast_v11i64_to_v11f64_scalar(<11 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v20, s7
 ; VI-NEXT:    v_mov_b32_e32 v21, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_4:
-; VI-NEXT:    s_branch .LBB37_2
 ;
 ; GFX9-LABEL: bitcast_v11i64_to_v11f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -18920,10 +19296,18 @@ define inreg <11 x double> @bitcast_v11i64_to_v11f64_scalar(<11 x i64> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s13, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_3
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -18946,7 +19330,7 @@ define inreg <11 x double> @bitcast_v11i64_to_v11f64_scalar(<11 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s8, s8, 0
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
-; GFX9-NEXT:  .LBB37_3: ; %end
+; GFX9-NEXT:  .LBB37_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -18970,8 +19354,6 @@ define inreg <11 x double> @bitcast_v11i64_to_v11f64_scalar(<11 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_4:
-; GFX9-NEXT:    s_branch .LBB37_2
 ;
 ; GFX11-LABEL: bitcast_v11i64_to_v11f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -18983,11 +19365,16 @@ define inreg <11 x double> @bitcast_v11i64_to_v11f64_scalar(<11 x i64> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s7, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s8, 0
 ; GFX11-NEXT:    s_mov_b32 s8, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_3
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -19010,7 +19397,7 @@ define inreg <11 x double> @bitcast_v11i64_to_v11f64_scalar(<11 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
-; GFX11-NEXT:  .LBB37_3: ; %end
+; GFX11-NEXT:  .LBB37_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -19023,8 +19410,6 @@ define inreg <11 x double> @bitcast_v11i64_to_v11f64_scalar(<11 x i64> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s7 :: v_dual_mov_b32 v19, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s5 :: v_dual_mov_b32 v21, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_4:
-; GFX11-NEXT:    s_branch .LBB37_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -19200,10 +19585,18 @@ define inreg <11 x i64> @bitcast_v11f64_to_v11i64_scalar(<11 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_3
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB39_4
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -19215,10 +19608,8 @@ define inreg <11 x i64> @bitcast_v11f64_to_v11i64_scalar(<11 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; SI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; SI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
-; SI-NEXT:    s_branch .LBB39_5
-; SI-NEXT:  .LBB39_3:
-; SI-NEXT:    s_branch .LBB39_2
-; SI-NEXT:  .LBB39_4:
+; SI-NEXT:    s_branch .LBB39_6
+; SI-NEXT:  .LBB39_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -19251,7 +19642,7 @@ define inreg <11 x i64> @bitcast_v11f64_to_v11i64_scalar(<11 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB39_5: ; %end
+; SI-NEXT:  .LBB39_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -19312,10 +19703,18 @@ define inreg <11 x i64> @bitcast_v11f64_to_v11i64_scalar(<11 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_3
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_4
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -19327,10 +19726,8 @@ define inreg <11 x i64> @bitcast_v11f64_to_v11i64_scalar(<11 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; VI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; VI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
-; VI-NEXT:    s_branch .LBB39_5
-; VI-NEXT:  .LBB39_3:
-; VI-NEXT:    s_branch .LBB39_2
-; VI-NEXT:  .LBB39_4:
+; VI-NEXT:    s_branch .LBB39_6
+; VI-NEXT:  .LBB39_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -19363,7 +19760,7 @@ define inreg <11 x i64> @bitcast_v11f64_to_v11i64_scalar(<11 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB39_5: ; %end
+; VI-NEXT:  .LBB39_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -19424,10 +19821,18 @@ define inreg <11 x i64> @bitcast_v11f64_to_v11i64_scalar(<11 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_4
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -19439,10 +19844,8 @@ define inreg <11 x i64> @bitcast_v11f64_to_v11i64_scalar(<11 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[52:53], 1.0
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
-; GFX9-NEXT:    s_branch .LBB39_5
-; GFX9-NEXT:  .LBB39_3:
-; GFX9-NEXT:    s_branch .LBB39_2
-; GFX9-NEXT:  .LBB39_4:
+; GFX9-NEXT:    s_branch .LBB39_6
+; GFX9-NEXT:  .LBB39_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -19475,7 +19878,7 @@ define inreg <11 x i64> @bitcast_v11f64_to_v11i64_scalar(<11 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB39_5: ; %end
+; GFX9-NEXT:  .LBB39_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -19537,11 +19940,16 @@ define inreg <11 x i64> @bitcast_v11f64_to_v11i64_scalar(<11 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -19554,8 +19962,6 @@ define inreg <11 x i64> @bitcast_v11f64_to_v11i64_scalar(<11 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; GFX11-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; GFX11-NEXT:    s_branch .LBB39_5
-; GFX11-NEXT:  .LBB39_3:
-; GFX11-NEXT:    s_branch .LBB39_2
 ; GFX11-NEXT:  .LBB39_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -20260,7 +20666,7 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s11, v1
 ; SI-NEXT:    s_cmp_lg_u32 s10, 0
 ; SI-NEXT:    v_readfirstlane_b32 s10, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_4
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s76, s5, 16
 ; SI-NEXT:    s_lshr_b32 s77, s7, 16
@@ -20284,8 +20690,38 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB41_3
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[74:75], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[74:75], -1
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[74:75], s[74:75], exec
+; SI-NEXT:    s_cselect_b32 s13, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s13, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -20330,7 +20766,7 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[16:17], 16
-; SI-NEXT:  .LBB41_3: ; %end
+; SI-NEXT:  .LBB41_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s13, s72, 16
 ; SI-NEXT:    s_and_b32 s15, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s13, s15, s13
@@ -20420,30 +20856,6 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v20, s4
 ; SI-NEXT:    v_mov_b32_e32 v21, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB41_4:
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    s_branch .LBB41_2
 ;
 ; VI-LABEL: bitcast_v11i64_to_v44i16_scalar:
 ; VI:       ; %bb.0:
@@ -20458,7 +20870,7 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s12, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s13, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_4
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s14, s6, 16
 ; VI-NEXT:    s_lshr_b32 s15, s7, 16
@@ -20482,8 +20894,38 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s73, s18, 16
 ; VI-NEXT:    s_lshr_b32 s74, s17, 16
 ; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB41_3
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -20528,7 +20970,7 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s73, s18, 16
 ; VI-NEXT:    s_lshr_b32 s74, s17, 16
 ; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:  .LBB41_3: ; %end
+; VI-NEXT:  .LBB41_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -20618,30 +21060,6 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v20, s7
 ; VI-NEXT:    v_mov_b32_e32 v21, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_4:
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    s_branch .LBB41_2
 ;
 ; GFX9-LABEL: bitcast_v11i64_to_v44i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -20656,7 +21074,7 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s13, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s14, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s15, s7, 16
@@ -20680,8 +21098,38 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s73, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s74, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s75, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_3
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -20726,7 +21174,7 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s73, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s74, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s75, s16, 16
-; GFX9-NEXT:  .LBB41_3: ; %end
+; GFX9-NEXT:  .LBB41_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s75
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s74
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s73
@@ -20772,30 +21220,6 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    s_branch .LBB41_2
 ;
 ; GFX11-LABEL: bitcast_v11i64_to_v44i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -20807,7 +21231,7 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s7, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s8, 0
 ; GFX11-NEXT:    s_mov_b32 s62, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s8, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s9, s5, 16
@@ -20831,9 +21255,38 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s59, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s60, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s61, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s62
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_3
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB41_3
+; GFX11-NEXT:  .LBB41_2:
+; GFX11-NEXT:    s_mov_b32 s62, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:  .LBB41_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s62, s62, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s62, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s62, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -20878,7 +21331,7 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s59, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s60, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s61, s0, 16
-; GFX11-NEXT:  .LBB41_3: ; %end
+; GFX11-NEXT:  .LBB41_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s60
@@ -20914,30 +21367,6 @@ define inreg <44 x i16> @bitcast_v11i64_to_v44i16_scalar(<11 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s7 :: v_dual_mov_b32 v19, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s5 :: v_dual_mov_b32 v21, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    s_branch .LBB41_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -21911,26 +22340,24 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v22, s34, 0
-; SI-NEXT:    v_writelane_b32 v22, s35, 1
-; SI-NEXT:    v_writelane_b32 v22, s36, 2
-; SI-NEXT:    v_writelane_b32 v22, s37, 3
-; SI-NEXT:    v_writelane_b32 v22, s38, 4
-; SI-NEXT:    v_writelane_b32 v22, s39, 5
-; SI-NEXT:    v_writelane_b32 v22, s48, 6
-; SI-NEXT:    v_writelane_b32 v22, s49, 7
-; SI-NEXT:    v_writelane_b32 v22, s50, 8
-; SI-NEXT:    v_writelane_b32 v22, s51, 9
-; SI-NEXT:    v_writelane_b32 v22, s52, 10
-; SI-NEXT:    v_writelane_b32 v22, s53, 11
-; SI-NEXT:    v_writelane_b32 v22, s54, 12
-; SI-NEXT:    v_writelane_b32 v22, s55, 13
-; SI-NEXT:    v_writelane_b32 v22, s64, 14
-; SI-NEXT:    v_writelane_b32 v22, s65, 15
-; SI-NEXT:    v_writelane_b32 v22, s66, 16
-; SI-NEXT:    v_writelane_b32 v22, s67, 17
-; SI-NEXT:    v_writelane_b32 v22, s30, 18
-; SI-NEXT:    v_writelane_b32 v22, s31, 19
+; SI-NEXT:    v_writelane_b32 v22, s36, 0
+; SI-NEXT:    v_writelane_b32 v22, s37, 1
+; SI-NEXT:    v_writelane_b32 v22, s38, 2
+; SI-NEXT:    v_writelane_b32 v22, s39, 3
+; SI-NEXT:    v_writelane_b32 v22, s48, 4
+; SI-NEXT:    v_writelane_b32 v22, s49, 5
+; SI-NEXT:    v_writelane_b32 v22, s50, 6
+; SI-NEXT:    v_writelane_b32 v22, s51, 7
+; SI-NEXT:    v_writelane_b32 v22, s52, 8
+; SI-NEXT:    v_writelane_b32 v22, s53, 9
+; SI-NEXT:    v_writelane_b32 v22, s54, 10
+; SI-NEXT:    v_writelane_b32 v22, s55, 11
+; SI-NEXT:    v_writelane_b32 v22, s64, 12
+; SI-NEXT:    v_writelane_b32 v22, s65, 13
+; SI-NEXT:    v_writelane_b32 v22, s66, 14
+; SI-NEXT:    v_writelane_b32 v22, s67, 15
+; SI-NEXT:    v_writelane_b32 v22, s30, 16
+; SI-NEXT:    v_writelane_b32 v22, s31, 17
 ; SI-NEXT:    v_readfirstlane_b32 s7, v7
 ; SI-NEXT:    v_readfirstlane_b32 s9, v6
 ; SI-NEXT:    v_readfirstlane_b32 s11, v5
@@ -21949,10 +22376,10 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s93, s22, 16
 ; SI-NEXT:    s_lshr_b32 s94, s21, 16
 ; SI-NEXT:    s_lshr_b32 s95, s20, 16
-; SI-NEXT:    s_lshr_b32 s30, s19, 16
-; SI-NEXT:    s_lshr_b32 s31, s18, 16
-; SI-NEXT:    s_lshr_b32 s34, s17, 16
-; SI-NEXT:    s_lshr_b32 s35, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; SI-NEXT:    s_lshr_b32 s30, s17, 16
+; SI-NEXT:    s_lshr_b32 s31, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -21963,18 +22390,18 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s89, s90, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_4
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s34, 16
+; SI-NEXT:    s_lshl_b32 s41, s30, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -22031,26 +22458,35 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s57, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB43_3
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
@@ -22143,8 +22579,8 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s57, s4, 0x30000
-; SI-NEXT:  .LBB43_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v22, 18
+; SI-NEXT:  .LBB43_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v22, 16
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -22167,33 +22603,28 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v19, s55
 ; SI-NEXT:    v_mov_b32_e32 v20, s56
 ; SI-NEXT:    v_mov_b32_e32 v21, s57
-; SI-NEXT:    v_readlane_b32 s31, v22, 19
-; SI-NEXT:    v_readlane_b32 s67, v22, 17
-; SI-NEXT:    v_readlane_b32 s66, v22, 16
-; SI-NEXT:    v_readlane_b32 s65, v22, 15
-; SI-NEXT:    v_readlane_b32 s64, v22, 14
-; SI-NEXT:    v_readlane_b32 s55, v22, 13
-; SI-NEXT:    v_readlane_b32 s54, v22, 12
-; SI-NEXT:    v_readlane_b32 s53, v22, 11
-; SI-NEXT:    v_readlane_b32 s52, v22, 10
-; SI-NEXT:    v_readlane_b32 s51, v22, 9
-; SI-NEXT:    v_readlane_b32 s50, v22, 8
-; SI-NEXT:    v_readlane_b32 s49, v22, 7
-; SI-NEXT:    v_readlane_b32 s48, v22, 6
-; SI-NEXT:    v_readlane_b32 s39, v22, 5
-; SI-NEXT:    v_readlane_b32 s38, v22, 4
-; SI-NEXT:    v_readlane_b32 s37, v22, 3
-; SI-NEXT:    v_readlane_b32 s36, v22, 2
-; SI-NEXT:    v_readlane_b32 s35, v22, 1
-; SI-NEXT:    v_readlane_b32 s34, v22, 0
+; SI-NEXT:    v_readlane_b32 s31, v22, 17
+; SI-NEXT:    v_readlane_b32 s67, v22, 15
+; SI-NEXT:    v_readlane_b32 s66, v22, 14
+; SI-NEXT:    v_readlane_b32 s65, v22, 13
+; SI-NEXT:    v_readlane_b32 s64, v22, 12
+; SI-NEXT:    v_readlane_b32 s55, v22, 11
+; SI-NEXT:    v_readlane_b32 s54, v22, 10
+; SI-NEXT:    v_readlane_b32 s53, v22, 9
+; SI-NEXT:    v_readlane_b32 s52, v22, 8
+; SI-NEXT:    v_readlane_b32 s51, v22, 7
+; SI-NEXT:    v_readlane_b32 s50, v22, 6
+; SI-NEXT:    v_readlane_b32 s49, v22, 5
+; SI-NEXT:    v_readlane_b32 s48, v22, 4
+; SI-NEXT:    v_readlane_b32 s39, v22, 3
+; SI-NEXT:    v_readlane_b32 s38, v22, 2
+; SI-NEXT:    v_readlane_b32 s37, v22, 1
+; SI-NEXT:    v_readlane_b32 s36, v22, 0
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB43_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB43_2
 ;
 ; VI-LABEL: bitcast_v44i16_to_v11i64_scalar:
 ; VI:       ; %bb.0:
@@ -22221,10 +22652,8 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; VI-NEXT:    v_writelane_b32 v22, s67, 17
 ; VI-NEXT:    v_writelane_b32 v22, s68, 18
 ; VI-NEXT:    v_writelane_b32 v22, s69, 19
-; VI-NEXT:    v_writelane_b32 v22, s70, 20
-; VI-NEXT:    v_writelane_b32 v22, s71, 21
-; VI-NEXT:    v_writelane_b32 v22, s30, 22
-; VI-NEXT:    v_writelane_b32 v22, s31, 23
+; VI-NEXT:    v_writelane_b32 v22, s30, 20
+; VI-NEXT:    v_writelane_b32 v22, s31, 21
 ; VI-NEXT:    v_readfirstlane_b32 s7, v7
 ; VI-NEXT:    v_readfirstlane_b32 s9, v6
 ; VI-NEXT:    v_readfirstlane_b32 s11, v5
@@ -22239,14 +22668,14 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s78, s26, 16
 ; VI-NEXT:    s_lshr_b32 s88, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s68, s19, 16
-; VI-NEXT:    s_lshr_b32 s69, s18, 16
-; VI-NEXT:    s_lshr_b32 s70, s17, 16
-; VI-NEXT:    s_lshr_b32 s71, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s68, s17, 16
+; VI-NEXT:    s_lshr_b32 s69, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -22257,31 +22686,31 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s90, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v8
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_4
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s70, 16
+; VI-NEXT:    s_lshl_b32 s41, s68, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -22325,46 +22754,55 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB43_3
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
@@ -22437,8 +22875,8 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s57, s4, 0x30000
-; VI-NEXT:  .LBB43_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v22, 22
+; VI-NEXT:  .LBB43_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v22, 20
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -22461,9 +22899,7 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v19, s55
 ; VI-NEXT:    v_mov_b32_e32 v20, s56
 ; VI-NEXT:    v_mov_b32_e32 v21, s57
-; VI-NEXT:    v_readlane_b32 s31, v22, 23
-; VI-NEXT:    v_readlane_b32 s71, v22, 21
-; VI-NEXT:    v_readlane_b32 s70, v22, 20
+; VI-NEXT:    v_readlane_b32 s31, v22, 21
 ; VI-NEXT:    v_readlane_b32 s69, v22, 19
 ; VI-NEXT:    v_readlane_b32 s68, v22, 18
 ; VI-NEXT:    v_readlane_b32 s67, v22, 17
@@ -22489,9 +22925,6 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB43_2
 ;
 ; GFX9-LABEL: bitcast_v44i16_to_v11i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -22565,10 +22998,18 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s56, s56, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s58
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -22591,10 +23032,8 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v19, s55, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v20, s56, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v21, s57, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB43_5
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:    s_branch .LBB43_6
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -22627,7 +23066,7 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB43_5: ; %end
+; GFX9-NEXT:  .LBB43_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -22700,11 +23139,16 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s57, s62
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s20, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB43_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -22728,8 +23172,6 @@ define inreg <11 x i64> @bitcast_v44i16_to_v11i64_scalar(<44 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v20, s20, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v21, s21, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_3:
-; GFX11-NEXT:    s_branch .LBB43_2
 ; GFX11-NEXT:  .LBB43_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -23417,7 +23859,7 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s11, v1
 ; SI-NEXT:    s_cmp_lg_u32 s10, 0
 ; SI-NEXT:    v_readfirstlane_b32 s10, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_4
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s76, s5, 16
 ; SI-NEXT:    s_lshr_b32 s77, s7, 16
@@ -23441,8 +23883,38 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB45_3
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[74:75], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[74:75], -1
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[74:75], s[74:75], exec
+; SI-NEXT:    s_cselect_b32 s13, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s13, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -23487,7 +23959,7 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[16:17], 16
-; SI-NEXT:  .LBB45_3: ; %end
+; SI-NEXT:  .LBB45_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s13, s72, 16
 ; SI-NEXT:    s_and_b32 s15, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s13, s15, s13
@@ -23577,30 +24049,6 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v20, s4
 ; SI-NEXT:    v_mov_b32_e32 v21, s5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB45_4:
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    s_branch .LBB45_2
 ;
 ; VI-LABEL: bitcast_v11i64_to_v44f16_scalar:
 ; VI:       ; %bb.0:
@@ -23615,7 +24063,7 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s12, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s13, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_4
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s14, s6, 16
 ; VI-NEXT:    s_lshr_b32 s15, s7, 16
@@ -23639,8 +24087,38 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s73, s18, 16
 ; VI-NEXT:    s_lshr_b32 s74, s17, 16
 ; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB45_3
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -23685,7 +24163,7 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s73, s18, 16
 ; VI-NEXT:    s_lshr_b32 s74, s17, 16
 ; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:  .LBB45_3: ; %end
+; VI-NEXT:  .LBB45_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -23775,30 +24253,6 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v20, s7
 ; VI-NEXT:    v_mov_b32_e32 v21, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_4:
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    s_branch .LBB45_2
 ;
 ; GFX9-LABEL: bitcast_v11i64_to_v44f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -23813,7 +24267,7 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s13, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s14, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s15, s7, 16
@@ -23837,8 +24291,38 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s73, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s74, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s75, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_3
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -23883,7 +24367,7 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s73, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s74, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s75, s16, 16
-; GFX9-NEXT:  .LBB45_3: ; %end
+; GFX9-NEXT:  .LBB45_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s75
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s74
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s73
@@ -23929,30 +24413,6 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    s_branch .LBB45_2
 ;
 ; GFX11-LABEL: bitcast_v11i64_to_v44f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -23964,7 +24424,7 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s7, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s8, 0
 ; GFX11-NEXT:    s_mov_b32 s62, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s8, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s9, s5, 16
@@ -23988,9 +24448,38 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s59, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s60, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s61, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s62
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_3
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB45_3
+; GFX11-NEXT:  .LBB45_2:
+; GFX11-NEXT:    s_mov_b32 s62, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:  .LBB45_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s62, s62, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s62, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s62, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -24035,7 +24524,7 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s59, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s60, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s61, s0, 16
-; GFX11-NEXT:  .LBB45_3: ; %end
+; GFX11-NEXT:  .LBB45_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s60
@@ -24071,30 +24560,6 @@ define inreg <44 x half> @bitcast_v11i64_to_v44f16_scalar(<11 x i64> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v18, s7 :: v_dual_mov_b32 v19, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s5 :: v_dual_mov_b32 v21, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    s_branch .LBB45_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -25167,26 +25632,24 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    buffer_store_dword v32, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v32, s34, 0
-; SI-NEXT:    v_writelane_b32 v32, s35, 1
-; SI-NEXT:    v_writelane_b32 v32, s36, 2
-; SI-NEXT:    v_writelane_b32 v32, s37, 3
-; SI-NEXT:    v_writelane_b32 v32, s38, 4
-; SI-NEXT:    v_writelane_b32 v32, s39, 5
-; SI-NEXT:    v_writelane_b32 v32, s48, 6
-; SI-NEXT:    v_writelane_b32 v32, s49, 7
-; SI-NEXT:    v_writelane_b32 v32, s50, 8
-; SI-NEXT:    v_writelane_b32 v32, s51, 9
-; SI-NEXT:    v_writelane_b32 v32, s52, 10
-; SI-NEXT:    v_writelane_b32 v32, s53, 11
-; SI-NEXT:    v_writelane_b32 v32, s54, 12
-; SI-NEXT:    v_writelane_b32 v32, s55, 13
-; SI-NEXT:    v_writelane_b32 v32, s64, 14
-; SI-NEXT:    v_writelane_b32 v32, s65, 15
-; SI-NEXT:    v_writelane_b32 v32, s66, 16
-; SI-NEXT:    v_writelane_b32 v32, s67, 17
-; SI-NEXT:    v_writelane_b32 v32, s30, 18
-; SI-NEXT:    v_writelane_b32 v32, s31, 19
+; SI-NEXT:    v_writelane_b32 v32, s36, 0
+; SI-NEXT:    v_writelane_b32 v32, s37, 1
+; SI-NEXT:    v_writelane_b32 v32, s38, 2
+; SI-NEXT:    v_writelane_b32 v32, s39, 3
+; SI-NEXT:    v_writelane_b32 v32, s48, 4
+; SI-NEXT:    v_writelane_b32 v32, s49, 5
+; SI-NEXT:    v_writelane_b32 v32, s50, 6
+; SI-NEXT:    v_writelane_b32 v32, s51, 7
+; SI-NEXT:    v_writelane_b32 v32, s52, 8
+; SI-NEXT:    v_writelane_b32 v32, s53, 9
+; SI-NEXT:    v_writelane_b32 v32, s54, 10
+; SI-NEXT:    v_writelane_b32 v32, s55, 11
+; SI-NEXT:    v_writelane_b32 v32, s64, 12
+; SI-NEXT:    v_writelane_b32 v32, s65, 13
+; SI-NEXT:    v_writelane_b32 v32, s66, 14
+; SI-NEXT:    v_writelane_b32 v32, s67, 15
+; SI-NEXT:    v_writelane_b32 v32, s30, 16
+; SI-NEXT:    v_writelane_b32 v32, s31, 17
 ; SI-NEXT:    v_readfirstlane_b32 s6, v7
 ; SI-NEXT:    v_readfirstlane_b32 s8, v6
 ; SI-NEXT:    v_readfirstlane_b32 s10, v5
@@ -25205,10 +25668,10 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s93, s22, 16
 ; SI-NEXT:    s_lshr_b32 s94, s21, 16
 ; SI-NEXT:    s_lshr_b32 s95, s20, 16
-; SI-NEXT:    s_lshr_b32 s30, s19, 16
-; SI-NEXT:    s_lshr_b32 s31, s18, 16
-; SI-NEXT:    s_lshr_b32 s34, s17, 16
-; SI-NEXT:    s_lshr_b32 s35, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; SI-NEXT:    s_lshr_b32 s30, s17, 16
+; SI-NEXT:    s_lshr_b32 s31, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -25219,18 +25682,18 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s79, s77, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB47_3
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s34, 16
+; SI-NEXT:    s_lshl_b32 s41, s30, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -25287,11 +25750,20 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s57, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB47_4
-; SI-NEXT:  .LBB47_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s35
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s31
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s30
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
@@ -25301,14 +25773,14 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, vcc_hi
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, vcc_lo
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
@@ -25465,11 +25937,8 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v20, v21, v20
 ; SI-NEXT:    v_lshlrev_b32_e32 v21, 16, v22
 ; SI-NEXT:    v_or_b32_e32 v21, v23, v21
-; SI-NEXT:    s_branch .LBB47_5
-; SI-NEXT:  .LBB47_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB47_2
-; SI-NEXT:  .LBB47_4:
+; SI-NEXT:    s_branch .LBB47_6
+; SI-NEXT:  .LBB47_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -25502,27 +25971,25 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB47_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 18
-; SI-NEXT:    v_readlane_b32 s31, v32, 19
-; SI-NEXT:    v_readlane_b32 s67, v32, 17
-; SI-NEXT:    v_readlane_b32 s66, v32, 16
-; SI-NEXT:    v_readlane_b32 s65, v32, 15
-; SI-NEXT:    v_readlane_b32 s64, v32, 14
-; SI-NEXT:    v_readlane_b32 s55, v32, 13
-; SI-NEXT:    v_readlane_b32 s54, v32, 12
-; SI-NEXT:    v_readlane_b32 s53, v32, 11
-; SI-NEXT:    v_readlane_b32 s52, v32, 10
-; SI-NEXT:    v_readlane_b32 s51, v32, 9
-; SI-NEXT:    v_readlane_b32 s50, v32, 8
-; SI-NEXT:    v_readlane_b32 s49, v32, 7
-; SI-NEXT:    v_readlane_b32 s48, v32, 6
-; SI-NEXT:    v_readlane_b32 s39, v32, 5
-; SI-NEXT:    v_readlane_b32 s38, v32, 4
-; SI-NEXT:    v_readlane_b32 s37, v32, 3
-; SI-NEXT:    v_readlane_b32 s36, v32, 2
-; SI-NEXT:    v_readlane_b32 s35, v32, 1
-; SI-NEXT:    v_readlane_b32 s34, v32, 0
+; SI-NEXT:  .LBB47_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 16
+; SI-NEXT:    v_readlane_b32 s31, v32, 17
+; SI-NEXT:    v_readlane_b32 s67, v32, 15
+; SI-NEXT:    v_readlane_b32 s66, v32, 14
+; SI-NEXT:    v_readlane_b32 s65, v32, 13
+; SI-NEXT:    v_readlane_b32 s64, v32, 12
+; SI-NEXT:    v_readlane_b32 s55, v32, 11
+; SI-NEXT:    v_readlane_b32 s54, v32, 10
+; SI-NEXT:    v_readlane_b32 s53, v32, 9
+; SI-NEXT:    v_readlane_b32 s52, v32, 8
+; SI-NEXT:    v_readlane_b32 s51, v32, 7
+; SI-NEXT:    v_readlane_b32 s50, v32, 6
+; SI-NEXT:    v_readlane_b32 s49, v32, 5
+; SI-NEXT:    v_readlane_b32 s48, v32, 4
+; SI-NEXT:    v_readlane_b32 s39, v32, 3
+; SI-NEXT:    v_readlane_b32 s38, v32, 2
+; SI-NEXT:    v_readlane_b32 s37, v32, 1
+; SI-NEXT:    v_readlane_b32 s36, v32, 0
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v32, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -25555,10 +26022,8 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; VI-NEXT:    v_writelane_b32 v32, s67, 17
 ; VI-NEXT:    v_writelane_b32 v32, s68, 18
 ; VI-NEXT:    v_writelane_b32 v32, s69, 19
-; VI-NEXT:    v_writelane_b32 v32, s70, 20
-; VI-NEXT:    v_writelane_b32 v32, s71, 21
-; VI-NEXT:    v_writelane_b32 v32, s30, 22
-; VI-NEXT:    v_writelane_b32 v32, s31, 23
+; VI-NEXT:    v_writelane_b32 v32, s30, 20
+; VI-NEXT:    v_writelane_b32 v32, s31, 21
 ; VI-NEXT:    v_readfirstlane_b32 s6, v7
 ; VI-NEXT:    v_readfirstlane_b32 s8, v6
 ; VI-NEXT:    v_readfirstlane_b32 s10, v5
@@ -25573,14 +26038,14 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s77, s26, 16
 ; VI-NEXT:    s_lshr_b32 s88, s25, 16
 ; VI-NEXT:    s_lshr_b32 s90, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s68, s19, 16
-; VI-NEXT:    s_lshr_b32 s69, s18, 16
-; VI-NEXT:    s_lshr_b32 s70, s17, 16
-; VI-NEXT:    s_lshr_b32 s71, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s68, s17, 16
+; VI-NEXT:    s_lshr_b32 s69, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -25591,31 +26056,31 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s91, s89, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v8
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s70, 16
+; VI-NEXT:    s_lshl_b32 s41, s68, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -25659,38 +26124,47 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v21, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s71
-; VI-NEXT:    v_mov_b32_e32 v2, s70
+; VI-NEXT:    v_mov_b32_e32 v0, s69
+; VI-NEXT:    v_mov_b32_e32 v2, s68
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v21
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v21
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s69
+; VI-NEXT:    v_mov_b32_e32 v2, s35
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v21
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s68
+; VI-NEXT:    v_mov_b32_e32 v3, s34
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v21
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s35
+; VI-NEXT:    v_mov_b32_e32 v4, s31
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v21
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s34
+; VI-NEXT:    v_mov_b32_e32 v5, s30
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v21
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s31
+; VI-NEXT:    v_mov_b32_e32 v6, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v21
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s30
+; VI-NEXT:    v_mov_b32_e32 v7, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v21
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
@@ -25750,11 +26224,8 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v22, v22, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v21, s6, v21
 ; VI-NEXT:    v_or_b32_e32 v21, v21, v22
-; VI-NEXT:    s_branch .LBB47_5
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:    s_branch .LBB47_6
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -25787,11 +26258,9 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB47_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 22
-; VI-NEXT:    v_readlane_b32 s31, v32, 23
-; VI-NEXT:    v_readlane_b32 s71, v32, 21
-; VI-NEXT:    v_readlane_b32 s70, v32, 20
+; VI-NEXT:  .LBB47_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 20
+; VI-NEXT:    v_readlane_b32 s31, v32, 21
 ; VI-NEXT:    v_readlane_b32 s69, v32, 19
 ; VI-NEXT:    v_readlane_b32 s68, v32, 18
 ; VI-NEXT:    v_readlane_b32 s67, v32, 17
@@ -25890,10 +26359,18 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s56, s56, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s58
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v21, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v21 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v21 op_sel_hi:[1,0]
@@ -25917,10 +26394,8 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v19, s55, v21 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v20, s56, v21 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v21, s57, v21 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB47_5
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:    s_branch .LBB47_6
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -25953,7 +26428,7 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB47_5: ; %end
+; GFX9-NEXT:  .LBB47_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -26026,11 +26501,16 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s57, s62
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s20, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB47_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -26054,8 +26534,6 @@ define inreg <11 x i64> @bitcast_v44f16_to_v11i64_scalar(<44 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v20, 0x200, s20 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v21, 0x200, s21 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB47_3:
-; GFX11-NEXT:    s_branch .LBB47_2
 ; GFX11-NEXT:  .LBB47_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -26676,7 +27154,7 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_3
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s94, s9, 16
 ; SI-NEXT:    s_lshr_b32 s93, s11, 16
@@ -26700,8 +27178,38 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB49_4
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[74:75], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[74:75], -1
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[74:75], s[74:75], exec
+; SI-NEXT:    s_cselect_b32 s13, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s13, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[20:21], s[8:9], 1.0
 ; SI-NEXT:    v_add_f64 v[18:19], s[10:11], 1.0
 ; SI-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
@@ -26735,32 +27243,8 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v50, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v51, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v52, 16, v1
-; SI-NEXT:    s_branch .LBB49_5
-; SI-NEXT:  .LBB49_3:
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    s_branch .LBB49_2
-; SI-NEXT:  .LBB49_4:
+; SI-NEXT:    s_branch .LBB49_6
+; SI-NEXT:  .LBB49_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
@@ -26805,7 +27289,7 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v24, s40
 ; SI-NEXT:    v_mov_b32_e32 v23, s14
 ; SI-NEXT:    v_mov_b32_e32 v22, s12
-; SI-NEXT:  .LBB49_5: ; %end
+; SI-NEXT:  .LBB49_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v32, 16, v32
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v31, 16, v31
@@ -26887,7 +27371,7 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s5, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_3
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s14, s9, 16
 ; VI-NEXT:    s_lshr_b32 s57, s8, 16
@@ -26911,8 +27395,38 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s74, s18, 16
 ; VI-NEXT:    s_lshr_b32 s56, s17, 16
 ; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB49_4
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[12:13], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[12:13], -1
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; VI-NEXT:    s_cselect_b32 s12, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s12, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[20:21], s[8:9], 1.0
 ; VI-NEXT:    v_add_f64 v[18:19], s[10:11], 1.0
 ; VI-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
@@ -26946,32 +27460,8 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v39, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v51, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v49, 16, v0
-; VI-NEXT:    s_branch .LBB49_5
-; VI-NEXT:  .LBB49_3:
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    s_branch .LBB49_2
-; VI-NEXT:  .LBB49_4:
+; VI-NEXT:    s_branch .LBB49_6
+; VI-NEXT:  .LBB49_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
@@ -27016,7 +27506,7 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v28, s40
 ; VI-NEXT:    v_mov_b32_e32 v26, s15
 ; VI-NEXT:    v_mov_b32_e32 v24, s14
-; VI-NEXT:  .LBB49_5: ; %end
+; VI-NEXT:  .LBB49_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v49, 16, v49
 ; VI-NEXT:    v_lshlrev_b32_e32 v39, 16, v39
 ; VI-NEXT:    v_lshlrev_b32_e32 v37, 16, v37
@@ -27076,7 +27566,7 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s14, s9, 16
 ; GFX9-NEXT:    s_lshr_b32 s57, s8, 16
@@ -27100,8 +27590,38 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s74, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s56, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s75, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[12:13], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[12:13], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; GFX9-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[8:9], 1.0
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[10:11], 1.0
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
@@ -27135,32 +27655,8 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v39, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v51, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v49, 16, v0
-; GFX9-NEXT:    s_branch .LBB49_5
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:    s_branch .LBB49_6
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
@@ -27205,7 +27701,7 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s40
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s15
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s14
-; GFX9-NEXT:  .LBB49_5: ; %end
+; GFX9-NEXT:  .LBB49_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -27261,12 +27757,12 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s7, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s6, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s8, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s10, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s9, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s8, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s44, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s10, s7, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s9, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s45, s6, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s29, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s28, 16
@@ -27286,9 +27782,38 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s61, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s43, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s62, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-TRUE16-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB49_3
+; GFX11-TRUE16-NEXT:  .LBB49_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-TRUE16-NEXT:  .LBB49_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s10, s10, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[20:21], s[4:5], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[18:19], s[6:7], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[16:17], s[28:29], 1.0
@@ -27322,32 +27847,8 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v51, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v49, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB49_5
-; GFX11-TRUE16-NEXT:  .LBB49_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-TRUE16-NEXT:    s_branch .LBB49_2
-; GFX11-TRUE16-NEXT:  .LBB49_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB49_6
+; GFX11-TRUE16-NEXT:  .LBB49_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -27368,9 +27869,9 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s56 :: v_dual_mov_b32 v32, s13
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s47 :: v_dual_mov_b32 v30, s12
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s46 :: v_dual_mov_b32 v28, s11
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s45 :: v_dual_mov_b32 v26, s10
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v51, s43 :: v_dual_mov_b32 v24, s9
-; GFX11-TRUE16-NEXT:  .LBB49_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s45 :: v_dual_mov_b32 v26, s9
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v51, s43 :: v_dual_mov_b32 v24, s8
+; GFX11-TRUE16-NEXT:  .LBB49_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v49.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v51.l
@@ -27405,12 +27906,12 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s7, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s6, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s8, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s10, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s9, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s8, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s44, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s10, s7, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s9, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s45, s6, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s29, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s28, 16
@@ -27430,9 +27931,38 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s61, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s43, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s62, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-FAKE16-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB49_3
+; GFX11-FAKE16-NEXT:  .LBB49_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-FAKE16-NEXT:  .LBB49_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s10, s10, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[17:18], s[4:5], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[19:20], s[6:7], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[21:22], s[28:29], 1.0
@@ -27466,32 +27996,8 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v0
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v51, 16, v5
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v49, 16, v4
-; GFX11-FAKE16-NEXT:    s_branch .LBB49_5
-; GFX11-FAKE16-NEXT:  .LBB49_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-FAKE16-NEXT:    s_branch .LBB49_2
-; GFX11-FAKE16-NEXT:  .LBB49_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB49_6
+; GFX11-FAKE16-NEXT:  .LBB49_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v23, s18
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v9, s20
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s16 :: v_dual_mov_b32 v7, s22
@@ -27513,8 +28019,8 @@ define inreg <44 x i16> @bitcast_v11f64_to_v44i16_scalar(<11 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v48, s41 :: v_dual_mov_b32 v35, s14
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v36, s15 :: v_dual_mov_b32 v33, s13
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v32, s12 :: v_dual_mov_b32 v29, s11
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v28, s10 :: v_dual_mov_b32 v27, s9
-; GFX11-FAKE16-NEXT:  .LBB49_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v28, s9 :: v_dual_mov_b32 v27, s8
+; GFX11-FAKE16-NEXT:  .LBB49_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v23, 0xffff, v23
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v4
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v5
@@ -28533,26 +29039,24 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; SI-NEXT:    buffer_store_dword v22, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v22, s34, 0
-; SI-NEXT:    v_writelane_b32 v22, s35, 1
-; SI-NEXT:    v_writelane_b32 v22, s36, 2
-; SI-NEXT:    v_writelane_b32 v22, s37, 3
-; SI-NEXT:    v_writelane_b32 v22, s38, 4
-; SI-NEXT:    v_writelane_b32 v22, s39, 5
-; SI-NEXT:    v_writelane_b32 v22, s48, 6
-; SI-NEXT:    v_writelane_b32 v22, s49, 7
-; SI-NEXT:    v_writelane_b32 v22, s50, 8
-; SI-NEXT:    v_writelane_b32 v22, s51, 9
-; SI-NEXT:    v_writelane_b32 v22, s52, 10
-; SI-NEXT:    v_writelane_b32 v22, s53, 11
-; SI-NEXT:    v_writelane_b32 v22, s54, 12
-; SI-NEXT:    v_writelane_b32 v22, s55, 13
-; SI-NEXT:    v_writelane_b32 v22, s64, 14
-; SI-NEXT:    v_writelane_b32 v22, s65, 15
-; SI-NEXT:    v_writelane_b32 v22, s66, 16
-; SI-NEXT:    v_writelane_b32 v22, s67, 17
-; SI-NEXT:    v_writelane_b32 v22, s30, 18
-; SI-NEXT:    v_writelane_b32 v22, s31, 19
+; SI-NEXT:    v_writelane_b32 v22, s36, 0
+; SI-NEXT:    v_writelane_b32 v22, s37, 1
+; SI-NEXT:    v_writelane_b32 v22, s38, 2
+; SI-NEXT:    v_writelane_b32 v22, s39, 3
+; SI-NEXT:    v_writelane_b32 v22, s48, 4
+; SI-NEXT:    v_writelane_b32 v22, s49, 5
+; SI-NEXT:    v_writelane_b32 v22, s50, 6
+; SI-NEXT:    v_writelane_b32 v22, s51, 7
+; SI-NEXT:    v_writelane_b32 v22, s52, 8
+; SI-NEXT:    v_writelane_b32 v22, s53, 9
+; SI-NEXT:    v_writelane_b32 v22, s54, 10
+; SI-NEXT:    v_writelane_b32 v22, s55, 11
+; SI-NEXT:    v_writelane_b32 v22, s64, 12
+; SI-NEXT:    v_writelane_b32 v22, s65, 13
+; SI-NEXT:    v_writelane_b32 v22, s66, 14
+; SI-NEXT:    v_writelane_b32 v22, s67, 15
+; SI-NEXT:    v_writelane_b32 v22, s30, 16
+; SI-NEXT:    v_writelane_b32 v22, s31, 17
 ; SI-NEXT:    v_readfirstlane_b32 s7, v7
 ; SI-NEXT:    v_readfirstlane_b32 s9, v6
 ; SI-NEXT:    v_readfirstlane_b32 s11, v5
@@ -28571,10 +29075,10 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s93, s22, 16
 ; SI-NEXT:    s_lshr_b32 s94, s21, 16
 ; SI-NEXT:    s_lshr_b32 s95, s20, 16
-; SI-NEXT:    s_lshr_b32 s30, s19, 16
-; SI-NEXT:    s_lshr_b32 s31, s18, 16
-; SI-NEXT:    s_lshr_b32 s34, s17, 16
-; SI-NEXT:    s_lshr_b32 s35, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; SI-NEXT:    s_lshr_b32 s30, s17, 16
+; SI-NEXT:    s_lshr_b32 s31, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -28585,18 +29089,18 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s89, s90, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s34, 16
+; SI-NEXT:    s_lshl_b32 s41, s30, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -28653,26 +29157,35 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s57, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
@@ -28765,8 +29278,8 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s57, s4, 0x30000
-; SI-NEXT:  .LBB51_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v22, 18
+; SI-NEXT:  .LBB51_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v22, 16
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -28789,33 +29302,28 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v19, s55
 ; SI-NEXT:    v_mov_b32_e32 v20, s56
 ; SI-NEXT:    v_mov_b32_e32 v21, s57
-; SI-NEXT:    v_readlane_b32 s31, v22, 19
-; SI-NEXT:    v_readlane_b32 s67, v22, 17
-; SI-NEXT:    v_readlane_b32 s66, v22, 16
-; SI-NEXT:    v_readlane_b32 s65, v22, 15
-; SI-NEXT:    v_readlane_b32 s64, v22, 14
-; SI-NEXT:    v_readlane_b32 s55, v22, 13
-; SI-NEXT:    v_readlane_b32 s54, v22, 12
-; SI-NEXT:    v_readlane_b32 s53, v22, 11
-; SI-NEXT:    v_readlane_b32 s52, v22, 10
-; SI-NEXT:    v_readlane_b32 s51, v22, 9
-; SI-NEXT:    v_readlane_b32 s50, v22, 8
-; SI-NEXT:    v_readlane_b32 s49, v22, 7
-; SI-NEXT:    v_readlane_b32 s48, v22, 6
-; SI-NEXT:    v_readlane_b32 s39, v22, 5
-; SI-NEXT:    v_readlane_b32 s38, v22, 4
-; SI-NEXT:    v_readlane_b32 s37, v22, 3
-; SI-NEXT:    v_readlane_b32 s36, v22, 2
-; SI-NEXT:    v_readlane_b32 s35, v22, 1
-; SI-NEXT:    v_readlane_b32 s34, v22, 0
+; SI-NEXT:    v_readlane_b32 s31, v22, 17
+; SI-NEXT:    v_readlane_b32 s67, v22, 15
+; SI-NEXT:    v_readlane_b32 s66, v22, 14
+; SI-NEXT:    v_readlane_b32 s65, v22, 13
+; SI-NEXT:    v_readlane_b32 s64, v22, 12
+; SI-NEXT:    v_readlane_b32 s55, v22, 11
+; SI-NEXT:    v_readlane_b32 s54, v22, 10
+; SI-NEXT:    v_readlane_b32 s53, v22, 9
+; SI-NEXT:    v_readlane_b32 s52, v22, 8
+; SI-NEXT:    v_readlane_b32 s51, v22, 7
+; SI-NEXT:    v_readlane_b32 s50, v22, 6
+; SI-NEXT:    v_readlane_b32 s49, v22, 5
+; SI-NEXT:    v_readlane_b32 s48, v22, 4
+; SI-NEXT:    v_readlane_b32 s39, v22, 3
+; SI-NEXT:    v_readlane_b32 s38, v22, 2
+; SI-NEXT:    v_readlane_b32 s37, v22, 1
+; SI-NEXT:    v_readlane_b32 s36, v22, 0
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v22, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v44i16_to_v11f64_scalar:
 ; VI:       ; %bb.0:
@@ -28843,10 +29351,8 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v22, s67, 17
 ; VI-NEXT:    v_writelane_b32 v22, s68, 18
 ; VI-NEXT:    v_writelane_b32 v22, s69, 19
-; VI-NEXT:    v_writelane_b32 v22, s70, 20
-; VI-NEXT:    v_writelane_b32 v22, s71, 21
-; VI-NEXT:    v_writelane_b32 v22, s30, 22
-; VI-NEXT:    v_writelane_b32 v22, s31, 23
+; VI-NEXT:    v_writelane_b32 v22, s30, 20
+; VI-NEXT:    v_writelane_b32 v22, s31, 21
 ; VI-NEXT:    v_readfirstlane_b32 s7, v7
 ; VI-NEXT:    v_readfirstlane_b32 s9, v6
 ; VI-NEXT:    v_readfirstlane_b32 s11, v5
@@ -28861,14 +29367,14 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s78, s26, 16
 ; VI-NEXT:    s_lshr_b32 s88, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s68, s19, 16
-; VI-NEXT:    s_lshr_b32 s69, s18, 16
-; VI-NEXT:    s_lshr_b32 s70, s17, 16
-; VI-NEXT:    s_lshr_b32 s71, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s68, s17, 16
+; VI-NEXT:    s_lshr_b32 s69, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -28879,31 +29385,31 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s89, s90, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v8
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s70, 16
+; VI-NEXT:    s_lshl_b32 s41, s68, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -28947,46 +29453,55 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
@@ -29059,8 +29574,8 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s57, s4, 0x30000
-; VI-NEXT:  .LBB51_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v22, 22
+; VI-NEXT:  .LBB51_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v22, 20
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -29083,9 +29598,7 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v19, s55
 ; VI-NEXT:    v_mov_b32_e32 v20, s56
 ; VI-NEXT:    v_mov_b32_e32 v21, s57
-; VI-NEXT:    v_readlane_b32 s31, v22, 23
-; VI-NEXT:    v_readlane_b32 s71, v22, 21
-; VI-NEXT:    v_readlane_b32 s70, v22, 20
+; VI-NEXT:    v_readlane_b32 s31, v22, 21
 ; VI-NEXT:    v_readlane_b32 s69, v22, 19
 ; VI-NEXT:    v_readlane_b32 s68, v22, 18
 ; VI-NEXT:    v_readlane_b32 s67, v22, 17
@@ -29111,9 +29624,6 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v44i16_to_v11f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -29187,10 +29697,18 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s56, s56, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s58
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_4
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -29213,10 +29731,8 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v19, s55, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v20, s56, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v21, s57, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB51_5
-; GFX9-NEXT:  .LBB51_3:
-; GFX9-NEXT:    s_branch .LBB51_2
-; GFX9-NEXT:  .LBB51_4:
+; GFX9-NEXT:    s_branch .LBB51_6
+; GFX9-NEXT:  .LBB51_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -29249,7 +29765,7 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB51_5: ; %end
+; GFX9-NEXT:  .LBB51_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -29322,11 +29838,16 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s57, s62
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s20, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB51_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB51_4
-; GFX11-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB51_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -29350,8 +29871,6 @@ define inreg <11 x double> @bitcast_v44i16_to_v11f64_scalar(<44 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v20, s20, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v21, s21, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB51_3:
-; GFX11-NEXT:    s_branch .LBB51_2
 ; GFX11-NEXT:  .LBB51_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -29972,7 +30491,7 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_3
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s94, s9, 16
 ; SI-NEXT:    s_lshr_b32 s93, s11, 16
@@ -29996,8 +30515,38 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; SI-NEXT:    s_lshr_b64 s[60:61], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB53_4
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[74:75], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[74:75], -1
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr77
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr79
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[74:75], s[74:75], exec
+; SI-NEXT:    s_cselect_b32 s13, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s13, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[20:21], s[8:9], 1.0
 ; SI-NEXT:    v_add_f64 v[18:19], s[10:11], 1.0
 ; SI-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
@@ -30031,32 +30580,8 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; SI-NEXT:    v_lshrrev_b32_e32 v50, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v51, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v52, 16, v1
-; SI-NEXT:    s_branch .LBB53_5
-; SI-NEXT:  .LBB53_3:
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr77
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr79
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    s_branch .LBB53_2
-; SI-NEXT:  .LBB53_4:
+; SI-NEXT:    s_branch .LBB53_6
+; SI-NEXT:  .LBB53_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
@@ -30101,7 +30626,7 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v24, s40
 ; SI-NEXT:    v_mov_b32_e32 v23, s14
 ; SI-NEXT:    v_mov_b32_e32 v22, s12
-; SI-NEXT:  .LBB53_5: ; %end
+; SI-NEXT:  .LBB53_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v32, 16, v32
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v31, 16, v31
@@ -30183,7 +30708,7 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s5, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_3
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s14, s9, 16
 ; VI-NEXT:    s_lshr_b32 s57, s8, 16
@@ -30207,43 +30732,10 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; VI-NEXT:    s_lshr_b32 s74, s18, 16
 ; VI-NEXT:    s_lshr_b32 s56, s17, 16
 ; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB53_4
-; VI-NEXT:  .LBB53_2: ; %cmp.true
-; VI-NEXT:    v_add_f64 v[20:21], s[8:9], 1.0
-; VI-NEXT:    v_add_f64 v[18:19], s[10:11], 1.0
-; VI-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
-; VI-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
-; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
-; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
-; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
-; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
-; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
-; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
-; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; VI-NEXT:    v_lshrrev_b32_e32 v24, 16, v21
-; VI-NEXT:    v_lshrrev_b32_e32 v22, 16, v20
-; VI-NEXT:    v_lshrrev_b32_e32 v26, 16, v19
-; VI-NEXT:    v_lshrrev_b32_e32 v23, 16, v18
-; VI-NEXT:    v_lshrrev_b32_e32 v28, 16, v17
-; VI-NEXT:    v_lshrrev_b32_e32 v25, 16, v16
-; VI-NEXT:    v_lshrrev_b32_e32 v30, 16, v15
-; VI-NEXT:    v_lshrrev_b32_e32 v27, 16, v14
-; VI-NEXT:    v_lshrrev_b32_e32 v32, 16, v13
-; VI-NEXT:    v_lshrrev_b32_e32 v29, 16, v12
-; VI-NEXT:    v_lshrrev_b32_e32 v34, 16, v11
-; VI-NEXT:    v_lshrrev_b32_e32 v31, 16, v10
-; VI-NEXT:    v_lshrrev_b32_e32 v36, 16, v9
-; VI-NEXT:    v_lshrrev_b32_e32 v33, 16, v8
-; VI-NEXT:    v_lshrrev_b32_e32 v38, 16, v7
-; VI-NEXT:    v_lshrrev_b32_e32 v35, 16, v6
-; VI-NEXT:    v_lshrrev_b32_e32 v48, 16, v5
-; VI-NEXT:    v_lshrrev_b32_e32 v37, 16, v4
-; VI-NEXT:    v_lshrrev_b32_e32 v50, 16, v3
-; VI-NEXT:    v_lshrrev_b32_e32 v39, 16, v2
-; VI-NEXT:    v_lshrrev_b32_e32 v51, 16, v1
-; VI-NEXT:    v_lshrrev_b32_e32 v49, 16, v0
-; VI-NEXT:    s_branch .LBB53_5
-; VI-NEXT:  .LBB53_3:
+; VI-NEXT:    s_mov_b64 s[12:13], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[12:13], -1
 ; VI-NEXT:    ; implicit-def: $sgpr75
 ; VI-NEXT:    ; implicit-def: $sgpr56
 ; VI-NEXT:    ; implicit-def: $sgpr74
@@ -30266,8 +30758,47 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; VI-NEXT:    ; implicit-def: $sgpr15
 ; VI-NEXT:    ; implicit-def: $sgpr57
 ; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    s_branch .LBB53_2
-; VI-NEXT:  .LBB53_4:
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; VI-NEXT:    s_cselect_b32 s12, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s12, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
+; VI-NEXT:    v_add_f64 v[20:21], s[8:9], 1.0
+; VI-NEXT:    v_add_f64 v[18:19], s[10:11], 1.0
+; VI-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
+; VI-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
+; VI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
+; VI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
+; VI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
+; VI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
+; VI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
+; VI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
+; VI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
+; VI-NEXT:    v_lshrrev_b32_e32 v24, 16, v21
+; VI-NEXT:    v_lshrrev_b32_e32 v22, 16, v20
+; VI-NEXT:    v_lshrrev_b32_e32 v26, 16, v19
+; VI-NEXT:    v_lshrrev_b32_e32 v23, 16, v18
+; VI-NEXT:    v_lshrrev_b32_e32 v28, 16, v17
+; VI-NEXT:    v_lshrrev_b32_e32 v25, 16, v16
+; VI-NEXT:    v_lshrrev_b32_e32 v30, 16, v15
+; VI-NEXT:    v_lshrrev_b32_e32 v27, 16, v14
+; VI-NEXT:    v_lshrrev_b32_e32 v32, 16, v13
+; VI-NEXT:    v_lshrrev_b32_e32 v29, 16, v12
+; VI-NEXT:    v_lshrrev_b32_e32 v34, 16, v11
+; VI-NEXT:    v_lshrrev_b32_e32 v31, 16, v10
+; VI-NEXT:    v_lshrrev_b32_e32 v36, 16, v9
+; VI-NEXT:    v_lshrrev_b32_e32 v33, 16, v8
+; VI-NEXT:    v_lshrrev_b32_e32 v38, 16, v7
+; VI-NEXT:    v_lshrrev_b32_e32 v35, 16, v6
+; VI-NEXT:    v_lshrrev_b32_e32 v48, 16, v5
+; VI-NEXT:    v_lshrrev_b32_e32 v37, 16, v4
+; VI-NEXT:    v_lshrrev_b32_e32 v50, 16, v3
+; VI-NEXT:    v_lshrrev_b32_e32 v39, 16, v2
+; VI-NEXT:    v_lshrrev_b32_e32 v51, 16, v1
+; VI-NEXT:    v_lshrrev_b32_e32 v49, 16, v0
+; VI-NEXT:    s_branch .LBB53_6
+; VI-NEXT:  .LBB53_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
@@ -30312,7 +30843,7 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v28, s40
 ; VI-NEXT:    v_mov_b32_e32 v26, s15
 ; VI-NEXT:    v_mov_b32_e32 v24, s14
-; VI-NEXT:  .LBB53_5: ; %end
+; VI-NEXT:  .LBB53_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v49, 16, v49
 ; VI-NEXT:    v_lshlrev_b32_e32 v39, 16, v39
 ; VI-NEXT:    v_lshlrev_b32_e32 v37, 16, v37
@@ -30372,7 +30903,7 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s14, s9, 16
 ; GFX9-NEXT:    s_lshr_b32 s57, s8, 16
@@ -30396,8 +30927,38 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; GFX9-NEXT:    s_lshr_b32 s74, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s56, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s75, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_4
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[12:13], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[12:13], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; GFX9-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[8:9], 1.0
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[10:11], 1.0
 ; GFX9-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
@@ -30431,32 +30992,8 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v39, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v51, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v49, 16, v0
-; GFX9-NEXT:    s_branch .LBB53_5
-; GFX9-NEXT:  .LBB53_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    s_branch .LBB53_2
-; GFX9-NEXT:  .LBB53_4:
+; GFX9-NEXT:    s_branch .LBB53_6
+; GFX9-NEXT:  .LBB53_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
@@ -30501,7 +31038,7 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s40
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s15
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s14
-; GFX9-NEXT:  .LBB53_5: ; %end
+; GFX9-NEXT:  .LBB53_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -30557,12 +31094,12 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s7, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s6, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s8, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s10, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s9, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s8, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s44, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s10, s7, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s9, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s45, s6, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s29, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s28, 16
@@ -30582,9 +31119,38 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s61, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s43, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s62, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-TRUE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB53_3
+; GFX11-TRUE16-NEXT:  .LBB53_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-TRUE16-NEXT:  .LBB53_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s10, s10, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[20:21], s[4:5], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[18:19], s[6:7], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[16:17], s[28:29], 1.0
@@ -30618,32 +31184,8 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v51, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v49, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB53_5
-; GFX11-TRUE16-NEXT:  .LBB53_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-TRUE16-NEXT:    s_branch .LBB53_2
-; GFX11-TRUE16-NEXT:  .LBB53_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB53_6
+; GFX11-TRUE16-NEXT:  .LBB53_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -30664,9 +31206,9 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s56 :: v_dual_mov_b32 v32, s13
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s47 :: v_dual_mov_b32 v30, s12
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s46 :: v_dual_mov_b32 v28, s11
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s45 :: v_dual_mov_b32 v26, s10
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v51, s43 :: v_dual_mov_b32 v24, s9
-; GFX11-TRUE16-NEXT:  .LBB53_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s45 :: v_dual_mov_b32 v26, s9
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v51, s43 :: v_dual_mov_b32 v24, s8
+; GFX11-TRUE16-NEXT:  .LBB53_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v49.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v51.l
@@ -30701,12 +31243,12 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s7, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s6, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s8, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s10, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s9, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s8, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s44, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s10, s7, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s9, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s45, s6, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s29, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s28, 16
@@ -30726,9 +31268,38 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s61, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s43, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s62, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-FAKE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB53_3
+; GFX11-FAKE16-NEXT:  .LBB53_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-FAKE16-NEXT:  .LBB53_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s10, s10, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[17:18], s[4:5], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[19:20], s[6:7], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[21:22], s[28:29], 1.0
@@ -30762,32 +31333,8 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v0
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v51, 16, v5
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v49, 16, v4
-; GFX11-FAKE16-NEXT:    s_branch .LBB53_5
-; GFX11-FAKE16-NEXT:  .LBB53_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-FAKE16-NEXT:    s_branch .LBB53_2
-; GFX11-FAKE16-NEXT:  .LBB53_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB53_6
+; GFX11-FAKE16-NEXT:  .LBB53_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v23, s18
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v9, s20
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s16 :: v_dual_mov_b32 v7, s22
@@ -30809,8 +31356,8 @@ define inreg <44 x half> @bitcast_v11f64_to_v44f16_scalar(<11 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v48, s41 :: v_dual_mov_b32 v35, s14
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v36, s15 :: v_dual_mov_b32 v33, s13
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v32, s12 :: v_dual_mov_b32 v29, s11
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v28, s10 :: v_dual_mov_b32 v27, s9
-; GFX11-FAKE16-NEXT:  .LBB53_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v28, s9 :: v_dual_mov_b32 v27, s8
+; GFX11-FAKE16-NEXT:  .LBB53_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v23, 0xffff, v23
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v4
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v5
@@ -31928,26 +32475,24 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; SI-NEXT:    buffer_store_dword v32, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v32, s34, 0
-; SI-NEXT:    v_writelane_b32 v32, s35, 1
-; SI-NEXT:    v_writelane_b32 v32, s36, 2
-; SI-NEXT:    v_writelane_b32 v32, s37, 3
-; SI-NEXT:    v_writelane_b32 v32, s38, 4
-; SI-NEXT:    v_writelane_b32 v32, s39, 5
-; SI-NEXT:    v_writelane_b32 v32, s48, 6
-; SI-NEXT:    v_writelane_b32 v32, s49, 7
-; SI-NEXT:    v_writelane_b32 v32, s50, 8
-; SI-NEXT:    v_writelane_b32 v32, s51, 9
-; SI-NEXT:    v_writelane_b32 v32, s52, 10
-; SI-NEXT:    v_writelane_b32 v32, s53, 11
-; SI-NEXT:    v_writelane_b32 v32, s54, 12
-; SI-NEXT:    v_writelane_b32 v32, s55, 13
-; SI-NEXT:    v_writelane_b32 v32, s64, 14
-; SI-NEXT:    v_writelane_b32 v32, s65, 15
-; SI-NEXT:    v_writelane_b32 v32, s66, 16
-; SI-NEXT:    v_writelane_b32 v32, s67, 17
-; SI-NEXT:    v_writelane_b32 v32, s30, 18
-; SI-NEXT:    v_writelane_b32 v32, s31, 19
+; SI-NEXT:    v_writelane_b32 v32, s36, 0
+; SI-NEXT:    v_writelane_b32 v32, s37, 1
+; SI-NEXT:    v_writelane_b32 v32, s38, 2
+; SI-NEXT:    v_writelane_b32 v32, s39, 3
+; SI-NEXT:    v_writelane_b32 v32, s48, 4
+; SI-NEXT:    v_writelane_b32 v32, s49, 5
+; SI-NEXT:    v_writelane_b32 v32, s50, 6
+; SI-NEXT:    v_writelane_b32 v32, s51, 7
+; SI-NEXT:    v_writelane_b32 v32, s52, 8
+; SI-NEXT:    v_writelane_b32 v32, s53, 9
+; SI-NEXT:    v_writelane_b32 v32, s54, 10
+; SI-NEXT:    v_writelane_b32 v32, s55, 11
+; SI-NEXT:    v_writelane_b32 v32, s64, 12
+; SI-NEXT:    v_writelane_b32 v32, s65, 13
+; SI-NEXT:    v_writelane_b32 v32, s66, 14
+; SI-NEXT:    v_writelane_b32 v32, s67, 15
+; SI-NEXT:    v_writelane_b32 v32, s30, 16
+; SI-NEXT:    v_writelane_b32 v32, s31, 17
 ; SI-NEXT:    v_readfirstlane_b32 s6, v7
 ; SI-NEXT:    v_readfirstlane_b32 s8, v6
 ; SI-NEXT:    v_readfirstlane_b32 s10, v5
@@ -31966,10 +32511,10 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; SI-NEXT:    s_lshr_b32 s93, s22, 16
 ; SI-NEXT:    s_lshr_b32 s94, s21, 16
 ; SI-NEXT:    s_lshr_b32 s95, s20, 16
-; SI-NEXT:    s_lshr_b32 s30, s19, 16
-; SI-NEXT:    s_lshr_b32 s31, s18, 16
-; SI-NEXT:    s_lshr_b32 s34, s17, 16
-; SI-NEXT:    s_lshr_b32 s35, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; SI-NEXT:    s_lshr_b32 s30, s17, 16
+; SI-NEXT:    s_lshr_b32 s31, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -31980,18 +32525,18 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; SI-NEXT:    s_lshr_b32 s79, s77, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s34, 16
+; SI-NEXT:    s_lshl_b32 s41, s30, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -32048,11 +32593,20 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s57, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s35
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s31
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s30
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
@@ -32062,14 +32616,14 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, vcc_hi
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, vcc_lo
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
@@ -32226,11 +32780,8 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; SI-NEXT:    v_or_b32_e32 v20, v21, v20
 ; SI-NEXT:    v_lshlrev_b32_e32 v21, 16, v22
 ; SI-NEXT:    v_or_b32_e32 v21, v23, v21
-; SI-NEXT:    s_branch .LBB55_5
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:    s_branch .LBB55_6
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -32263,27 +32814,25 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB55_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 18
-; SI-NEXT:    v_readlane_b32 s31, v32, 19
-; SI-NEXT:    v_readlane_b32 s67, v32, 17
-; SI-NEXT:    v_readlane_b32 s66, v32, 16
-; SI-NEXT:    v_readlane_b32 s65, v32, 15
-; SI-NEXT:    v_readlane_b32 s64, v32, 14
-; SI-NEXT:    v_readlane_b32 s55, v32, 13
-; SI-NEXT:    v_readlane_b32 s54, v32, 12
-; SI-NEXT:    v_readlane_b32 s53, v32, 11
-; SI-NEXT:    v_readlane_b32 s52, v32, 10
-; SI-NEXT:    v_readlane_b32 s51, v32, 9
-; SI-NEXT:    v_readlane_b32 s50, v32, 8
-; SI-NEXT:    v_readlane_b32 s49, v32, 7
-; SI-NEXT:    v_readlane_b32 s48, v32, 6
-; SI-NEXT:    v_readlane_b32 s39, v32, 5
-; SI-NEXT:    v_readlane_b32 s38, v32, 4
-; SI-NEXT:    v_readlane_b32 s37, v32, 3
-; SI-NEXT:    v_readlane_b32 s36, v32, 2
-; SI-NEXT:    v_readlane_b32 s35, v32, 1
-; SI-NEXT:    v_readlane_b32 s34, v32, 0
+; SI-NEXT:  .LBB55_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 16
+; SI-NEXT:    v_readlane_b32 s31, v32, 17
+; SI-NEXT:    v_readlane_b32 s67, v32, 15
+; SI-NEXT:    v_readlane_b32 s66, v32, 14
+; SI-NEXT:    v_readlane_b32 s65, v32, 13
+; SI-NEXT:    v_readlane_b32 s64, v32, 12
+; SI-NEXT:    v_readlane_b32 s55, v32, 11
+; SI-NEXT:    v_readlane_b32 s54, v32, 10
+; SI-NEXT:    v_readlane_b32 s53, v32, 9
+; SI-NEXT:    v_readlane_b32 s52, v32, 8
+; SI-NEXT:    v_readlane_b32 s51, v32, 7
+; SI-NEXT:    v_readlane_b32 s50, v32, 6
+; SI-NEXT:    v_readlane_b32 s49, v32, 5
+; SI-NEXT:    v_readlane_b32 s48, v32, 4
+; SI-NEXT:    v_readlane_b32 s39, v32, 3
+; SI-NEXT:    v_readlane_b32 s38, v32, 2
+; SI-NEXT:    v_readlane_b32 s37, v32, 1
+; SI-NEXT:    v_readlane_b32 s36, v32, 0
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v32, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -32316,10 +32865,8 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; VI-NEXT:    v_writelane_b32 v32, s67, 17
 ; VI-NEXT:    v_writelane_b32 v32, s68, 18
 ; VI-NEXT:    v_writelane_b32 v32, s69, 19
-; VI-NEXT:    v_writelane_b32 v32, s70, 20
-; VI-NEXT:    v_writelane_b32 v32, s71, 21
-; VI-NEXT:    v_writelane_b32 v32, s30, 22
-; VI-NEXT:    v_writelane_b32 v32, s31, 23
+; VI-NEXT:    v_writelane_b32 v32, s30, 20
+; VI-NEXT:    v_writelane_b32 v32, s31, 21
 ; VI-NEXT:    v_readfirstlane_b32 s6, v7
 ; VI-NEXT:    v_readfirstlane_b32 s8, v6
 ; VI-NEXT:    v_readfirstlane_b32 s10, v5
@@ -32334,14 +32881,14 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; VI-NEXT:    s_lshr_b32 s77, s26, 16
 ; VI-NEXT:    s_lshr_b32 s88, s25, 16
 ; VI-NEXT:    s_lshr_b32 s90, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s68, s19, 16
-; VI-NEXT:    s_lshr_b32 s69, s18, 16
-; VI-NEXT:    s_lshr_b32 s70, s17, 16
-; VI-NEXT:    s_lshr_b32 s71, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s68, s17, 16
+; VI-NEXT:    s_lshr_b32 s69, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -32352,31 +32899,31 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; VI-NEXT:    s_lshr_b32 s91, s89, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v8
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s70, 16
+; VI-NEXT:    s_lshl_b32 s41, s68, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -32420,38 +32967,47 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v21, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s71
-; VI-NEXT:    v_mov_b32_e32 v2, s70
+; VI-NEXT:    v_mov_b32_e32 v0, s69
+; VI-NEXT:    v_mov_b32_e32 v2, s68
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v21
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v21
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s69
+; VI-NEXT:    v_mov_b32_e32 v2, s35
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v21
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s68
+; VI-NEXT:    v_mov_b32_e32 v3, s34
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v21
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s35
+; VI-NEXT:    v_mov_b32_e32 v4, s31
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v21
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s34
+; VI-NEXT:    v_mov_b32_e32 v5, s30
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v21
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s31
+; VI-NEXT:    v_mov_b32_e32 v6, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v21
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s30
+; VI-NEXT:    v_mov_b32_e32 v7, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v21
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
@@ -32511,11 +33067,8 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; VI-NEXT:    v_add_f16_sdwa v22, v22, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v21, s6, v21
 ; VI-NEXT:    v_or_b32_e32 v21, v21, v22
-; VI-NEXT:    s_branch .LBB55_5
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:    s_branch .LBB55_6
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -32548,11 +33101,9 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB55_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 22
-; VI-NEXT:    v_readlane_b32 s31, v32, 23
-; VI-NEXT:    v_readlane_b32 s71, v32, 21
-; VI-NEXT:    v_readlane_b32 s70, v32, 20
+; VI-NEXT:  .LBB55_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 20
+; VI-NEXT:    v_readlane_b32 s31, v32, 21
 ; VI-NEXT:    v_readlane_b32 s69, v32, 19
 ; VI-NEXT:    v_readlane_b32 s68, v32, 18
 ; VI-NEXT:    v_readlane_b32 s67, v32, 17
@@ -32651,10 +33202,18 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s55, s60, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s56, s56, s59
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s58
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v21, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v21 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v21 op_sel_hi:[1,0]
@@ -32678,10 +33237,8 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; GFX9-NEXT:    v_pk_add_f16 v19, s55, v21 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v20, s56, v21 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v21, s57, v21 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB55_5
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:    s_branch .LBB55_6
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -32714,7 +33271,7 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB55_5: ; %end
+; GFX9-NEXT:  .LBB55_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -32787,11 +33344,16 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s19, s57, s62
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s20, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -32815,8 +33377,6 @@ define inreg <11 x double> @bitcast_v44f16_to_v11f64_scalar(<44 x half> inreg %a
 ; GFX11-NEXT:    v_pk_add_f16 v20, 0x200, s20 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v21, 0x200, s21 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -33869,232 +34429,261 @@ define inreg <44 x half> @bitcast_v44i16_to_v44f16_scalar(<44 x i16> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v22, s83, 25
 ; SI-NEXT:    v_writelane_b32 v22, s84, 26
 ; SI-NEXT:    v_writelane_b32 v22, s85, 27
-; SI-NEXT:    v_writelane_b32 v22, s30, 28
-; SI-NEXT:    v_writelane_b32 v22, s31, 29
-; SI-NEXT:    v_readfirstlane_b32 s83, v7
-; SI-NEXT:    v_readfirstlane_b32 s85, v6
-; SI-NEXT:    v_readfirstlane_b32 s80, v5
-; SI-NEXT:    v_readfirstlane_b32 s82, v4
-; SI-NEXT:    v_readfirstlane_b32 s69, v3
-; SI-NEXT:    v_readfirstlane_b32 s71, v2
-; SI-NEXT:    v_readfirstlane_b32 s66, v1
-; SI-NEXT:    v_readfirstlane_b32 s68, v0
-; SI-NEXT:    s_lshr_b32 s38, s29, 16
-; SI-NEXT:    s_lshr_b32 s65, s28, 16
-; SI-NEXT:    s_lshr_b32 s37, s27, 16
-; SI-NEXT:    s_lshr_b32 s64, s26, 16
-; SI-NEXT:    s_lshr_b32 s36, s25, 16
-; SI-NEXT:    s_lshr_b32 s55, s24, 16
-; SI-NEXT:    s_lshr_b32 s35, s23, 16
-; SI-NEXT:    s_lshr_b32 s54, s22, 16
-; SI-NEXT:    s_lshr_b32 s34, s21, 16
-; SI-NEXT:    s_lshr_b32 s53, s20, 16
-; SI-NEXT:    s_lshr_b32 s31, s19, 16
-; SI-NEXT:    s_lshr_b32 s52, s18, 16
-; SI-NEXT:    s_lshr_b32 s30, s17, 16
-; SI-NEXT:    s_lshr_b32 s51, s16, 16
-; SI-NEXT:    s_lshr_b32 s50, s83, 16
-; SI-NEXT:    s_lshr_b32 s84, s85, 16
-; SI-NEXT:    s_lshr_b32 s49, s80, 16
-; SI-NEXT:    s_lshr_b32 s81, s82, 16
-; SI-NEXT:    s_lshr_b32 s48, s69, 16
-; SI-NEXT:    s_lshr_b32 s70, s71, 16
-; SI-NEXT:    s_lshr_b32 s39, s66, 16
-; SI-NEXT:    s_lshr_b32 s67, s68, 16
+; SI-NEXT:    v_writelane_b32 v22, s86, 28
+; SI-NEXT:    v_writelane_b32 v22, s87, 29
+; SI-NEXT:    v_writelane_b32 v22, s30, 30
+; SI-NEXT:    v_writelane_b32 v22, s31, 31
+; SI-NEXT:    v_readfirstlane_b32 s85, v7
+; SI-NEXT:    v_readfirstlane_b32 s87, v6
+; SI-NEXT:    v_readfirstlane_b32 s82, v5
+; SI-NEXT:    v_readfirstlane_b32 s84, v4
+; SI-NEXT:    v_readfirstlane_b32 s71, v3
+; SI-NEXT:    v_readfirstlane_b32 s81, v2
+; SI-NEXT:    v_readfirstlane_b32 s68, v1
+; SI-NEXT:    v_readfirstlane_b32 s70, v0
+; SI-NEXT:    s_lshr_b32 s48, s29, 16
+; SI-NEXT:    s_lshr_b32 s67, s28, 16
+; SI-NEXT:    s_lshr_b32 s39, s27, 16
+; SI-NEXT:    s_lshr_b32 s66, s26, 16
+; SI-NEXT:    s_lshr_b32 s38, s25, 16
+; SI-NEXT:    s_lshr_b32 s65, s24, 16
+; SI-NEXT:    s_lshr_b32 s37, s23, 16
+; SI-NEXT:    s_lshr_b32 s64, s22, 16
+; SI-NEXT:    s_lshr_b32 s36, s21, 16
+; SI-NEXT:    s_lshr_b32 s55, s20, 16
+; SI-NEXT:    s_lshr_b32 s35, s19, 16
+; SI-NEXT:    s_lshr_b32 s54, s18, 16
+; SI-NEXT:    s_lshr_b32 s34, s17, 16
+; SI-NEXT:    s_lshr_b32 s53, s16, 16
+; SI-NEXT:    s_lshr_b32 s52, s85, 16
+; SI-NEXT:    s_lshr_b32 s86, s87, 16
+; SI-NEXT:    s_lshr_b32 s51, s82, 16
+; SI-NEXT:    s_lshr_b32 s83, s84, 16
+; SI-NEXT:    s_lshr_b32 s50, s71, 16
+; SI-NEXT:    s_lshr_b32 s80, s81, 16
+; SI-NEXT:    s_lshr_b32 s49, s68, 16
+; SI-NEXT:    s_lshr_b32 s69, s70, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s30, 16
+; SI-NEXT:    s_lshl_b32 s7, s34, 16
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s58, s51, 16
-; SI-NEXT:    s_or_b32 s59, s5, s7
+; SI-NEXT:    s_lshl_b32 s62, s53, 16
+; SI-NEXT:    s_or_b32 s63, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s31, 16
-; SI-NEXT:    s_or_b32 s12, s4, s58
+; SI-NEXT:    s_lshl_b32 s7, s35, 16
+; SI-NEXT:    s_or_b32 s56, s4, s62
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s60, s52, 16
-; SI-NEXT:    s_or_b32 s61, s5, s7
+; SI-NEXT:    s_lshl_b32 s72, s54, 16
+; SI-NEXT:    s_or_b32 s73, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s34, 16
-; SI-NEXT:    s_or_b32 s10, s4, s60
+; SI-NEXT:    s_lshl_b32 s7, s36, 16
+; SI-NEXT:    s_or_b32 s46, s4, s72
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s62, s53, 16
-; SI-NEXT:    s_or_b32 s63, s5, s7
+; SI-NEXT:    s_lshl_b32 s74, s55, 16
+; SI-NEXT:    s_or_b32 s75, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s35, 16
-; SI-NEXT:    s_or_b32 s8, s4, s62
+; SI-NEXT:    s_lshl_b32 s7, s37, 16
+; SI-NEXT:    s_or_b32 s44, s4, s74
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s72, s54, 16
-; SI-NEXT:    s_or_b32 s73, s5, s7
+; SI-NEXT:    s_lshl_b32 s76, s64, 16
+; SI-NEXT:    s_or_b32 s77, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s36, 16
-; SI-NEXT:    s_or_b32 s6, s4, s72
+; SI-NEXT:    s_lshl_b32 s7, s38, 16
+; SI-NEXT:    s_or_b32 s42, s4, s76
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s56, s55, 16
-; SI-NEXT:    s_or_b32 s57, s5, s7
+; SI-NEXT:    s_lshl_b32 s78, s65, 16
+; SI-NEXT:    s_or_b32 s79, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s37, 16
-; SI-NEXT:    s_or_b32 s4, s4, s56
-; SI-NEXT:    s_lshl_b32 s46, s64, 16
-; SI-NEXT:    s_or_b32 s47, s5, s7
-; SI-NEXT:    s_and_b32 s5, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s38, 16
-; SI-NEXT:    s_lshr_b64 s[74:75], s[56:57], 16
-; SI-NEXT:    s_and_b32 s56, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s65, 16
-; SI-NEXT:    s_or_b32 s45, s5, s7
-; SI-NEXT:    s_and_b32 s5, s66, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s39, 16
-; SI-NEXT:    s_or_b32 s56, s56, s46
-; SI-NEXT:    s_lshr_b64 s[76:77], s[46:47], 16
-; SI-NEXT:    s_and_b32 s46, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s42, s67, 16
-; SI-NEXT:    s_or_b32 s43, s5, s7
-; SI-NEXT:    s_and_b32 s5, s69, 0xffff
+; SI-NEXT:    s_or_b32 s40, s4, s78
+; SI-NEXT:    s_and_b32 s4, s26, 0xffff
+; SI-NEXT:    s_lshl_b32 s88, s66, 16
+; SI-NEXT:    s_or_b32 s89, s5, s7
+; SI-NEXT:    s_and_b32 s5, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s48, 16
-; SI-NEXT:    s_or_b32 s46, s46, s44
-; SI-NEXT:    s_lshr_b64 s[78:79], s[44:45], 16
-; SI-NEXT:    s_and_b32 s44, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s40, s70, 16
-; SI-NEXT:    s_or_b32 s41, s5, s7
-; SI-NEXT:    s_and_b32 s5, s80, 0xffff
+; SI-NEXT:    s_or_b32 s14, s4, s88
+; SI-NEXT:    s_and_b32 s4, s28, 0xffff
+; SI-NEXT:    s_lshl_b32 s90, s67, 16
+; SI-NEXT:    s_or_b32 s91, s5, s7
+; SI-NEXT:    s_and_b32 s5, s68, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s49, 16
-; SI-NEXT:    s_or_b32 s44, s44, s42
-; SI-NEXT:    s_lshr_b64 s[88:89], s[42:43], 16
-; SI-NEXT:    s_and_b32 s42, s71, 0xffff
-; SI-NEXT:    s_lshl_b32 s14, s81, 16
-; SI-NEXT:    s_or_b32 s15, s5, s7
-; SI-NEXT:    s_and_b32 s5, s83, 0xffff
+; SI-NEXT:    s_or_b32 s12, s4, s90
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s92, s69, 16
+; SI-NEXT:    s_or_b32 s93, s5, s7
+; SI-NEXT:    s_and_b32 s5, s71, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s50, 16
-; SI-NEXT:    s_or_b32 s42, s42, s40
-; SI-NEXT:    s_lshr_b64 s[90:91], s[40:41], 16
-; SI-NEXT:    s_and_b32 s40, s82, 0xffff
+; SI-NEXT:    s_or_b32 s10, s4, s92
+; SI-NEXT:    s_and_b32 s4, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s94, s80, 16
 ; SI-NEXT:    s_or_b32 s95, s5, s7
-; SI-NEXT:    s_lshl_b32 s94, s84, 16
-; SI-NEXT:    s_or_b32 s40, s40, s14
-; SI-NEXT:    s_lshr_b64 s[92:93], s[14:15], 16
-; SI-NEXT:    s_and_b32 s14, s85, 0xffff
-; SI-NEXT:    s_mov_b32 s13, s59
-; SI-NEXT:    s_lshr_b64 s[58:59], s[58:59], 16
-; SI-NEXT:    s_mov_b32 s11, s61
-; SI-NEXT:    s_lshr_b64 s[60:61], s[60:61], 16
-; SI-NEXT:    s_mov_b32 s9, s63
-; SI-NEXT:    s_lshr_b64 s[62:63], s[62:63], 16
-; SI-NEXT:    s_mov_b32 s7, s73
-; SI-NEXT:    s_lshr_b64 s[72:73], s[72:73], 16
-; SI-NEXT:    s_mov_b32 s5, s57
-; SI-NEXT:    s_mov_b32 s57, s47
-; SI-NEXT:    s_mov_b32 s47, s45
-; SI-NEXT:    s_mov_b32 s45, s43
-; SI-NEXT:    s_mov_b32 s43, s41
-; SI-NEXT:    s_mov_b32 s41, s15
-; SI-NEXT:    s_or_b32 s14, s14, s94
-; SI-NEXT:    s_mov_b32 s15, s95
-; SI-NEXT:    s_lshr_b64 s[94:95], s[94:95], 16
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_and_b32 s5, s82, 0xffff
+; SI-NEXT:    s_lshl_b32 s7, s51, 16
+; SI-NEXT:    s_or_b32 s8, s4, s94
+; SI-NEXT:    s_and_b32 s4, s84, 0xffff
+; SI-NEXT:    s_lshl_b32 s30, s83, 16
+; SI-NEXT:    s_or_b32 s31, s5, s7
+; SI-NEXT:    s_and_b32 s5, s85, 0xffff
+; SI-NEXT:    s_lshl_b32 s7, s52, 16
+; SI-NEXT:    s_or_b32 s6, s4, s30
+; SI-NEXT:    s_and_b32 s4, s87, 0xffff
+; SI-NEXT:    s_lshl_b32 vcc_lo, s86, 16
+; SI-NEXT:    s_or_b32 vcc_hi, s5, s7
+; SI-NEXT:    s_or_b32 s4, s4, vcc_lo
+; SI-NEXT:    s_lshr_b64 s[58:59], s[62:63], 16
+; SI-NEXT:    s_lshr_b64 s[60:61], s[72:73], 16
+; SI-NEXT:    s_mov_b32 s57, s63
+; SI-NEXT:    s_lshr_b64 s[62:63], s[74:75], 16
+; SI-NEXT:    s_mov_b32 s47, s73
+; SI-NEXT:    s_lshr_b64 s[72:73], s[76:77], 16
+; SI-NEXT:    s_mov_b32 s45, s75
+; SI-NEXT:    s_lshr_b64 s[74:75], s[78:79], 16
+; SI-NEXT:    s_mov_b32 s43, s77
+; SI-NEXT:    s_lshr_b64 s[76:77], s[88:89], 16
+; SI-NEXT:    s_mov_b32 s41, s79
+; SI-NEXT:    s_lshr_b64 s[78:79], s[90:91], 16
+; SI-NEXT:    s_mov_b32 s15, s89
+; SI-NEXT:    s_lshr_b64 s[88:89], s[92:93], 16
+; SI-NEXT:    s_mov_b32 s13, s91
+; SI-NEXT:    s_lshr_b64 s[90:91], s[94:95], 16
+; SI-NEXT:    s_mov_b32 s11, s93
+; SI-NEXT:    s_lshr_b64 s[92:93], s[30:31], 16
+; SI-NEXT:    s_mov_b32 s9, s95
+; SI-NEXT:    s_lshr_b64 s[94:95], vcc, 16
+; SI-NEXT:    s_mov_b32 s7, s31
+; SI-NEXT:    s_mov_b64 s[30:31], 0
+; SI-NEXT:    s_mov_b32 s5, vcc_hi
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[30:31], -1
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 vcc, s[30:31], exec
+; SI-NEXT:    s_cselect_b32 s59, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s59, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    s_add_i32 s87, s87, 3
+; SI-NEXT:    s_and_b32 s4, s87, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_add_i32 s85, s85, 3
-; SI-NEXT:    s_and_b32 s4, s85, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
-; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s83, s83, 3
-; SI-NEXT:    s_add_i32 s14, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s50, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_and_b32 s5, s85, 0xffff
+; SI-NEXT:    s_lshl_b32 s6, s52, 16
+; SI-NEXT:    s_add_i32 s84, s84, 3
+; SI-NEXT:    s_or_b32 s5, s6, s5
+; SI-NEXT:    s_and_b32 s6, s84, 0xffff
+; SI-NEXT:    s_lshl_b32 s7, s83, 16
 ; SI-NEXT:    s_add_i32 s82, s82, 3
-; SI-NEXT:    s_add_i32 s15, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s82, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
-; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s80, s80, 3
-; SI-NEXT:    s_add_i32 s40, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s49, 16
-; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_or_b32 s6, s7, s6
+; SI-NEXT:    s_and_b32 s7, s82, 0xffff
+; SI-NEXT:    s_lshl_b32 s8, s51, 16
+; SI-NEXT:    s_add_i32 s81, s81, 3
+; SI-NEXT:    s_or_b32 s7, s8, s7
+; SI-NEXT:    s_and_b32 s8, s81, 0xffff
+; SI-NEXT:    s_lshl_b32 s9, s80, 16
 ; SI-NEXT:    s_add_i32 s71, s71, 3
-; SI-NEXT:    s_add_i32 s41, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s71, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
-; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s69, s69, 3
-; SI-NEXT:    s_add_i32 s42, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s69, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s48, 16
-; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_or_b32 s8, s9, s8
+; SI-NEXT:    s_and_b32 s9, s71, 0xffff
+; SI-NEXT:    s_lshl_b32 s10, s50, 16
+; SI-NEXT:    s_add_i32 s70, s70, 3
+; SI-NEXT:    s_or_b32 s9, s10, s9
+; SI-NEXT:    s_and_b32 s10, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s11, s69, 16
 ; SI-NEXT:    s_add_i32 s68, s68, 3
-; SI-NEXT:    s_add_i32 s43, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s67, 16
-; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s66, s66, 3
-; SI-NEXT:    s_add_i32 s44, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s66, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s39, 16
-; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_or_b32 s10, s11, s10
+; SI-NEXT:    s_and_b32 s11, s68, 0xffff
+; SI-NEXT:    s_lshl_b32 s12, s49, 16
 ; SI-NEXT:    s_add_i32 s28, s28, 3
-; SI-NEXT:    s_add_i32 s45, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s65, 16
-; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_or_b32 s11, s12, s11
+; SI-NEXT:    s_and_b32 s12, s28, 0xffff
+; SI-NEXT:    s_lshl_b32 s13, s67, 16
 ; SI-NEXT:    s_add_i32 s29, s29, 3
-; SI-NEXT:    s_add_i32 s46, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s38, 16
-; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_or_b32 s12, s13, s12
+; SI-NEXT:    s_and_b32 s13, s29, 0xffff
+; SI-NEXT:    s_lshl_b32 s14, s48, 16
 ; SI-NEXT:    s_add_i32 s26, s26, 3
-; SI-NEXT:    s_add_i32 s47, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s64, 16
-; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_or_b32 s13, s14, s13
+; SI-NEXT:    s_and_b32 s14, s26, 0xffff
+; SI-NEXT:    s_lshl_b32 s15, s66, 16
 ; SI-NEXT:    s_add_i32 s27, s27, 3
-; SI-NEXT:    s_add_i32 s56, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s37, 16
-; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_or_b32 s14, s15, s14
+; SI-NEXT:    s_and_b32 s15, s27, 0xffff
+; SI-NEXT:    s_lshl_b32 s26, s39, 16
 ; SI-NEXT:    s_add_i32 s24, s24, 3
-; SI-NEXT:    s_add_i32 s57, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s55, 16
+; SI-NEXT:    s_or_b32 s15, s26, s15
+; SI-NEXT:    s_and_b32 s24, s24, 0xffff
+; SI-NEXT:    s_lshl_b32 s26, s65, 16
+; SI-NEXT:    s_or_b32 s24, s26, s24
 ; SI-NEXT:    s_add_i32 s25, s25, 3
-; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_and_b32 s5, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s6, s36, 16
+; SI-NEXT:    s_add_i32 s40, s24, 0x30000
+; SI-NEXT:    s_and_b32 s24, s25, 0xffff
+; SI-NEXT:    s_lshl_b32 s25, s38, 16
+; SI-NEXT:    s_or_b32 s24, s25, s24
 ; SI-NEXT:    s_add_i32 s22, s22, 3
-; SI-NEXT:    s_or_b32 s5, s6, s5
-; SI-NEXT:    s_and_b32 s6, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s54, 16
+; SI-NEXT:    s_add_i32 s41, s24, 0x30000
+; SI-NEXT:    s_and_b32 s22, s22, 0xffff
+; SI-NEXT:    s_lshl_b32 s24, s64, 16
+; SI-NEXT:    s_or_b32 s22, s24, s22
 ; SI-NEXT:    s_add_i32 s23, s23, 3
-; SI-NEXT:    s_or_b32 s6, s7, s6
-; SI-NEXT:    s_and_b32 s7, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s8, s35, 16
+; SI-NEXT:    s_add_i32 s42, s22, 0x30000
+; SI-NEXT:    s_and_b32 s22, s23, 0xffff
+; SI-NEXT:    s_lshl_b32 s23, s37, 16
+; SI-NEXT:    s_or_b32 s22, s23, s22
 ; SI-NEXT:    s_add_i32 s20, s20, 3
-; SI-NEXT:    s_or_b32 s7, s8, s7
-; SI-NEXT:    s_and_b32 s8, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s9, s53, 16
+; SI-NEXT:    s_add_i32 s43, s22, 0x30000
+; SI-NEXT:    s_and_b32 s20, s20, 0xffff
+; SI-NEXT:    s_lshl_b32 s22, s55, 16
+; SI-NEXT:    s_or_b32 s20, s22, s20
 ; SI-NEXT:    s_add_i32 s21, s21, 3
-; SI-NEXT:    s_or_b32 s8, s9, s8
-; SI-NEXT:    s_and_b32 s9, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s10, s34, 16
+; SI-NEXT:    s_add_i32 s44, s20, 0x30000
+; SI-NEXT:    s_and_b32 s20, s21, 0xffff
+; SI-NEXT:    s_lshl_b32 s21, s36, 16
+; SI-NEXT:    s_or_b32 s20, s21, s20
 ; SI-NEXT:    s_add_i32 s18, s18, 3
-; SI-NEXT:    s_or_b32 s9, s10, s9
-; SI-NEXT:    s_and_b32 s10, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s11, s52, 16
+; SI-NEXT:    s_add_i32 s45, s20, 0x30000
+; SI-NEXT:    s_and_b32 s18, s18, 0xffff
+; SI-NEXT:    s_lshl_b32 s20, s54, 16
+; SI-NEXT:    s_or_b32 s18, s20, s18
 ; SI-NEXT:    s_add_i32 s19, s19, 3
-; SI-NEXT:    s_or_b32 s10, s11, s10
-; SI-NEXT:    s_and_b32 s11, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s12, s31, 16
+; SI-NEXT:    s_add_i32 s46, s18, 0x30000
+; SI-NEXT:    s_and_b32 s18, s19, 0xffff
+; SI-NEXT:    s_lshl_b32 s19, s35, 16
+; SI-NEXT:    s_or_b32 s18, s19, s18
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:    s_or_b32 s11, s12, s11
-; SI-NEXT:    s_and_b32 s12, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s13, s51, 16
+; SI-NEXT:    s_add_i32 s47, s18, 0x30000
+; SI-NEXT:    s_and_b32 s16, s16, 0xffff
+; SI-NEXT:    s_lshl_b32 s18, s53, 16
+; SI-NEXT:    s_or_b32 s16, s18, s16
 ; SI-NEXT:    s_add_i32 s17, s17, 3
-; SI-NEXT:    s_or_b32 s12, s13, s12
-; SI-NEXT:    s_and_b32 s13, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s30, 16
-; SI-NEXT:    s_or_b32 s13, s16, s13
+; SI-NEXT:    s_add_i32 s56, s16, 0x30000
+; SI-NEXT:    s_and_b32 s16, s17, 0xffff
+; SI-NEXT:    s_lshl_b32 s17, s34, 16
+; SI-NEXT:    s_or_b32 s16, s17, s16
 ; SI-NEXT:    s_add_i32 s4, s4, 0x30000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x30000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x30000
@@ -34105,119 +34694,124 @@ define inreg <44 x half> @bitcast_v44i16_to_v44f16_scalar(<44 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s11, s11, 0x30000
 ; SI-NEXT:    s_add_i32 s12, s12, 0x30000
 ; SI-NEXT:    s_add_i32 s13, s13, 0x30000
-; SI-NEXT:    s_lshr_b64 s[58:59], s[12:13], 16
-; SI-NEXT:    s_lshr_b64 s[60:61], s[10:11], 16
-; SI-NEXT:    s_lshr_b64 s[62:63], s[8:9], 16
-; SI-NEXT:    s_lshr_b64 s[72:73], s[6:7], 16
-; SI-NEXT:    s_lshr_b64 s[74:75], s[4:5], 16
-; SI-NEXT:    s_lshr_b64 s[76:77], s[56:57], 16
-; SI-NEXT:    s_lshr_b64 s[78:79], s[46:47], 16
-; SI-NEXT:    s_lshr_b64 s[88:89], s[44:45], 16
-; SI-NEXT:    s_lshr_b64 s[90:91], s[42:43], 16
-; SI-NEXT:    s_lshr_b64 s[92:93], s[40:41], 16
-; SI-NEXT:    s_lshr_b64 s[94:95], s[14:15], 16
-; SI-NEXT:    s_lshr_b32 s30, s13, 16
-; SI-NEXT:    s_lshr_b32 s31, s11, 16
-; SI-NEXT:    s_lshr_b32 s34, s9, 16
-; SI-NEXT:    s_lshr_b32 s35, s7, 16
-; SI-NEXT:    s_lshr_b32 s36, s5, 16
-; SI-NEXT:    s_lshr_b32 s37, s57, 16
-; SI-NEXT:    s_lshr_b32 s38, s47, 16
-; SI-NEXT:    s_lshr_b32 s39, s45, 16
-; SI-NEXT:    s_lshr_b32 s48, s43, 16
-; SI-NEXT:    s_lshr_b32 s49, s41, 16
-; SI-NEXT:    s_lshr_b32 s50, s15, 16
-; SI-NEXT:  .LBB57_3: ; %end
-; SI-NEXT:    s_and_b32 s12, s12, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s58, 16
-; SI-NEXT:    s_or_b32 s12, s12, s16
-; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s30, 16
-; SI-NEXT:    s_or_b32 s13, s13, s16
-; SI-NEXT:    s_and_b32 s10, s10, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s60, 16
-; SI-NEXT:    s_or_b32 s10, s10, s16
-; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s31, 16
-; SI-NEXT:    s_or_b32 s11, s11, s16
-; SI-NEXT:    s_and_b32 s8, s8, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s62, 16
-; SI-NEXT:    s_or_b32 s8, s8, s16
-; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s34, 16
-; SI-NEXT:    s_or_b32 s9, s9, s16
-; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s72, 16
-; SI-NEXT:    s_or_b32 s6, s6, s16
-; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s35, 16
-; SI-NEXT:    s_or_b32 s7, s7, s16
-; SI-NEXT:    s_and_b32 s4, s4, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s74, 16
-; SI-NEXT:    s_or_b32 s4, s4, s16
-; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s36, 16
-; SI-NEXT:    s_or_b32 s5, s5, s16
+; SI-NEXT:    s_add_i32 s14, s14, 0x30000
+; SI-NEXT:    s_add_i32 s15, s15, 0x30000
+; SI-NEXT:    s_add_i32 s57, s16, 0x30000
+; SI-NEXT:    s_lshr_b64 s[58:59], s[56:57], 16
+; SI-NEXT:    s_lshr_b64 s[60:61], s[46:47], 16
+; SI-NEXT:    s_lshr_b64 s[62:63], s[44:45], 16
+; SI-NEXT:    s_lshr_b64 s[72:73], s[42:43], 16
+; SI-NEXT:    s_lshr_b64 s[74:75], s[40:41], 16
+; SI-NEXT:    s_lshr_b64 s[76:77], s[14:15], 16
+; SI-NEXT:    s_lshr_b64 s[78:79], s[12:13], 16
+; SI-NEXT:    s_lshr_b64 s[88:89], s[10:11], 16
+; SI-NEXT:    s_lshr_b64 s[90:91], s[8:9], 16
+; SI-NEXT:    s_lshr_b64 s[92:93], s[6:7], 16
+; SI-NEXT:    s_lshr_b64 s[94:95], s[4:5], 16
+; SI-NEXT:    s_lshr_b32 s34, s57, 16
+; SI-NEXT:    s_lshr_b32 s35, s47, 16
+; SI-NEXT:    s_lshr_b32 s36, s45, 16
+; SI-NEXT:    s_lshr_b32 s37, s43, 16
+; SI-NEXT:    s_lshr_b32 s38, s41, 16
+; SI-NEXT:    s_lshr_b32 s39, s15, 16
+; SI-NEXT:    s_lshr_b32 s48, s13, 16
+; SI-NEXT:    s_lshr_b32 s49, s11, 16
+; SI-NEXT:    s_lshr_b32 s50, s9, 16
+; SI-NEXT:    s_lshr_b32 s51, s7, 16
+; SI-NEXT:    s_lshr_b32 s52, s5, 16
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    s_and_b32 s16, s56, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s76, 16
+; SI-NEXT:    s_lshl_b32 s17, s58, 16
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s57, 0xffff
-; SI-NEXT:    s_lshl_b32 s18, s37, 16
+; SI-NEXT:    s_lshl_b32 s18, s34, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_and_b32 s18, s46, 0xffff
-; SI-NEXT:    s_lshl_b32 s19, s78, 16
+; SI-NEXT:    s_lshl_b32 s19, s60, 16
 ; SI-NEXT:    s_or_b32 s18, s18, s19
 ; SI-NEXT:    s_and_b32 s19, s47, 0xffff
-; SI-NEXT:    s_lshl_b32 s20, s38, 16
+; SI-NEXT:    s_lshl_b32 s20, s35, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s20
 ; SI-NEXT:    s_and_b32 s20, s44, 0xffff
-; SI-NEXT:    s_lshl_b32 s21, s88, 16
+; SI-NEXT:    s_lshl_b32 s21, s62, 16
 ; SI-NEXT:    s_or_b32 s20, s20, s21
 ; SI-NEXT:    s_and_b32 s21, s45, 0xffff
-; SI-NEXT:    s_lshl_b32 s22, s39, 16
+; SI-NEXT:    s_lshl_b32 s22, s36, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s22
 ; SI-NEXT:    s_and_b32 s22, s42, 0xffff
-; SI-NEXT:    s_lshl_b32 s23, s90, 16
+; SI-NEXT:    s_lshl_b32 s23, s72, 16
 ; SI-NEXT:    s_or_b32 s22, s22, s23
 ; SI-NEXT:    s_and_b32 s23, s43, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s48, 16
+; SI-NEXT:    s_lshl_b32 s24, s37, 16
 ; SI-NEXT:    s_or_b32 s23, s23, s24
 ; SI-NEXT:    s_and_b32 s24, s40, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s92, 16
+; SI-NEXT:    s_lshl_b32 s25, s74, 16
 ; SI-NEXT:    s_or_b32 s24, s24, s25
 ; SI-NEXT:    s_and_b32 s25, s41, 0xffff
-; SI-NEXT:    s_lshl_b32 s26, s49, 16
+; SI-NEXT:    s_lshl_b32 s26, s38, 16
 ; SI-NEXT:    s_or_b32 s25, s25, s26
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
-; SI-NEXT:    s_lshl_b32 s26, s94, 16
+; SI-NEXT:    s_lshl_b32 s26, s76, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s26
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_lshl_b32 s26, s50, 16
+; SI-NEXT:    s_lshl_b32 s26, s39, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s26
-; SI-NEXT:    v_readlane_b32 s30, v22, 28
-; SI-NEXT:    v_mov_b32_e32 v0, s12
-; SI-NEXT:    v_mov_b32_e32 v1, s13
-; SI-NEXT:    v_mov_b32_e32 v2, s10
-; SI-NEXT:    v_mov_b32_e32 v3, s11
-; SI-NEXT:    v_mov_b32_e32 v4, s8
-; SI-NEXT:    v_mov_b32_e32 v5, s9
-; SI-NEXT:    v_mov_b32_e32 v6, s6
-; SI-NEXT:    v_mov_b32_e32 v7, s7
-; SI-NEXT:    v_mov_b32_e32 v8, s4
-; SI-NEXT:    v_mov_b32_e32 v9, s5
-; SI-NEXT:    v_mov_b32_e32 v10, s16
-; SI-NEXT:    v_mov_b32_e32 v11, s17
-; SI-NEXT:    v_mov_b32_e32 v12, s18
-; SI-NEXT:    v_mov_b32_e32 v13, s19
-; SI-NEXT:    v_mov_b32_e32 v14, s20
-; SI-NEXT:    v_mov_b32_e32 v15, s21
-; SI-NEXT:    v_mov_b32_e32 v16, s22
-; SI-NEXT:    v_mov_b32_e32 v17, s23
-; SI-NEXT:    v_mov_b32_e32 v18, s24
-; SI-NEXT:    v_mov_b32_e32 v19, s25
-; SI-NEXT:    v_mov_b32_e32 v20, s14
-; SI-NEXT:    v_mov_b32_e32 v21, s15
-; SI-NEXT:    v_readlane_b32 s31, v22, 29
+; SI-NEXT:    s_and_b32 s12, s12, 0xffff
+; SI-NEXT:    s_lshl_b32 s26, s78, 16
+; SI-NEXT:    s_or_b32 s12, s12, s26
+; SI-NEXT:    s_and_b32 s13, s13, 0xffff
+; SI-NEXT:    s_lshl_b32 s26, s48, 16
+; SI-NEXT:    s_or_b32 s13, s13, s26
+; SI-NEXT:    s_and_b32 s10, s10, 0xffff
+; SI-NEXT:    s_lshl_b32 s26, s88, 16
+; SI-NEXT:    s_or_b32 s10, s10, s26
+; SI-NEXT:    s_and_b32 s11, s11, 0xffff
+; SI-NEXT:    s_lshl_b32 s26, s49, 16
+; SI-NEXT:    s_or_b32 s11, s11, s26
+; SI-NEXT:    s_and_b32 s8, s8, 0xffff
+; SI-NEXT:    s_lshl_b32 s26, s90, 16
+; SI-NEXT:    s_or_b32 s8, s8, s26
+; SI-NEXT:    s_and_b32 s9, s9, 0xffff
+; SI-NEXT:    s_lshl_b32 s26, s50, 16
+; SI-NEXT:    s_or_b32 s9, s9, s26
+; SI-NEXT:    s_and_b32 s6, s6, 0xffff
+; SI-NEXT:    s_lshl_b32 s26, s92, 16
+; SI-NEXT:    s_or_b32 s6, s6, s26
+; SI-NEXT:    s_and_b32 s7, s7, 0xffff
+; SI-NEXT:    s_lshl_b32 s26, s51, 16
+; SI-NEXT:    s_or_b32 s7, s7, s26
+; SI-NEXT:    s_and_b32 s4, s4, 0xffff
+; SI-NEXT:    s_lshl_b32 s26, s94, 16
+; SI-NEXT:    s_or_b32 s4, s4, s26
+; SI-NEXT:    s_and_b32 s5, s5, 0xffff
+; SI-NEXT:    s_lshl_b32 s26, s52, 16
+; SI-NEXT:    s_or_b32 s5, s5, s26
+; SI-NEXT:    v_readlane_b32 s30, v22, 30
+; SI-NEXT:    v_mov_b32_e32 v0, s16
+; SI-NEXT:    v_mov_b32_e32 v1, s17
+; SI-NEXT:    v_mov_b32_e32 v2, s18
+; SI-NEXT:    v_mov_b32_e32 v3, s19
+; SI-NEXT:    v_mov_b32_e32 v4, s20
+; SI-NEXT:    v_mov_b32_e32 v5, s21
+; SI-NEXT:    v_mov_b32_e32 v6, s22
+; SI-NEXT:    v_mov_b32_e32 v7, s23
+; SI-NEXT:    v_mov_b32_e32 v8, s24
+; SI-NEXT:    v_mov_b32_e32 v9, s25
+; SI-NEXT:    v_mov_b32_e32 v10, s14
+; SI-NEXT:    v_mov_b32_e32 v11, s15
+; SI-NEXT:    v_mov_b32_e32 v12, s12
+; SI-NEXT:    v_mov_b32_e32 v13, s13
+; SI-NEXT:    v_mov_b32_e32 v14, s10
+; SI-NEXT:    v_mov_b32_e32 v15, s11
+; SI-NEXT:    v_mov_b32_e32 v16, s8
+; SI-NEXT:    v_mov_b32_e32 v17, s9
+; SI-NEXT:    v_mov_b32_e32 v18, s6
+; SI-NEXT:    v_mov_b32_e32 v19, s7
+; SI-NEXT:    v_mov_b32_e32 v20, s4
+; SI-NEXT:    v_mov_b32_e32 v21, s5
+; SI-NEXT:    v_readlane_b32 s31, v22, 31
+; SI-NEXT:    v_readlane_b32 s87, v22, 29
+; SI-NEXT:    v_readlane_b32 s86, v22, 28
 ; SI-NEXT:    v_readlane_b32 s85, v22, 27
 ; SI-NEXT:    v_readlane_b32 s84, v22, 26
 ; SI-NEXT:    v_readlane_b32 s83, v22, 25
@@ -34251,30 +34845,6 @@ define inreg <44 x half> @bitcast_v44i16_to_v44f16_scalar(<44 x i16> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v44i16_to_v44f16_scalar:
 ; VI:       ; %bb.0:
@@ -34311,10 +34881,18 @@ define inreg <44 x half> @bitcast_v44i16_to_v44f16_scalar(<44 x i16> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s60, s59, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v8
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_add_i32 s75, s75, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
@@ -34359,7 +34937,7 @@ define inreg <44 x half> @bitcast_v44i16_to_v44f16_scalar(<44 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s9, s9, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s6, s6, 3
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -34449,8 +35027,6 @@ define inreg <44 x half> @bitcast_v44i16_to_v44f16_scalar(<44 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v20, s8
 ; VI-NEXT:    v_mov_b32_e32 v21, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v44i16_to_v44f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -34487,10 +35063,18 @@ define inreg <44 x half> @bitcast_v44i16_to_v44f16_scalar(<44 x i16> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s44, s60, 16
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v8
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_4
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s75, s59
 ; GFX9-NEXT:    v_pk_add_u16 v21, s4, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s74, s58
@@ -34557,10 +35141,8 @@ define inreg <44 x half> @bitcast_v44i16_to_v44f16_scalar(<44 x i16> inreg %a, i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v24, 16, v19
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v23, 16, v20
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v22, 16, v21
-; GFX9-NEXT:    s_branch .LBB57_5
-; GFX9-NEXT:  .LBB57_3:
-; GFX9-NEXT:    s_branch .LBB57_2
-; GFX9-NEXT:  .LBB57_4:
+; GFX9-NEXT:    s_branch .LBB57_6
+; GFX9-NEXT:  .LBB57_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s75
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s74
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s73
@@ -34605,7 +35187,7 @@ define inreg <44 x half> @bitcast_v44i16_to_v44f16_scalar(<44 x i16> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v49, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v50, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v51, s6
-; GFX9-NEXT:  .LBB57_5: ; %end
+; GFX9-NEXT:  .LBB57_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -34684,11 +35266,16 @@ define inreg <44 x half> @bitcast_v44i16_to_v44f16_scalar(<44 x i16> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s58, 16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s62, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s62, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s62
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-TRUE16-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s62, -1
+; GFX11-TRUE16-NEXT:  .LBB57_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s62, s62, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s62, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s62, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s57, s61, s57
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s56, s60, s56
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s47, s59, s47
@@ -34756,8 +35343,6 @@ define inreg <44 x half> @bitcast_v44i16_to_v44f16_scalar(<44 x i16> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v23, 16, v20
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v22, 16, v21
 ; GFX11-TRUE16-NEXT:    s_branch .LBB57_5
-; GFX11-TRUE16-NEXT:  .LBB57_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB57_2
 ; GFX11-TRUE16-NEXT:  .LBB57_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s61 :: v_dual_mov_b32 v20, s60
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v19, s59 :: v_dual_mov_b32 v18, s58
@@ -34840,11 +35425,16 @@ define inreg <44 x half> @bitcast_v44i16_to_v44f16_scalar(<44 x i16> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s58, 16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s62, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s62, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s62
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-FAKE16-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s62, -1
+; GFX11-FAKE16-NEXT:  .LBB57_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s62, s62, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s62, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s62, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s57, s61, s57
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s56, s60, s56
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s47, s59, s47
@@ -34912,8 +35502,6 @@ define inreg <44 x half> @bitcast_v44i16_to_v44f16_scalar(<44 x i16> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v23, 16, v18
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v22, 16, v17
 ; GFX11-FAKE16-NEXT:    s_branch .LBB57_5
-; GFX11-FAKE16-NEXT:  .LBB57_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB57_2
 ; GFX11-FAKE16-NEXT:  .LBB57_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v17, s61 :: v_dual_mov_b32 v18, s60
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v19, s59 :: v_dual_mov_b32 v20, s58
@@ -35766,10 +36354,18 @@ define inreg <44 x i16> @bitcast_v44f16_to_v44i16_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s61, s63, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_3
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB59_4
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s75
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s74
@@ -35964,10 +36560,8 @@ define inreg <44 x i16> @bitcast_v44f16_to_v44i16_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[26:27], v[16:17], 16
 ; SI-NEXT:    v_lshr_b64 v[24:25], v[18:19], 16
 ; SI-NEXT:    v_lshr_b64 v[22:23], v[20:21], 16
-; SI-NEXT:    s_branch .LBB59_5
-; SI-NEXT:  .LBB59_3:
-; SI-NEXT:    s_branch .LBB59_2
-; SI-NEXT:  .LBB59_4:
+; SI-NEXT:    s_branch .LBB59_6
+; SI-NEXT:  .LBB59_5:
 ; SI-NEXT:    v_mov_b32_e32 v42, s58
 ; SI-NEXT:    v_mov_b32_e32 v44, s56
 ; SI-NEXT:    v_mov_b32_e32 v45, s46
@@ -36018,7 +36612,7 @@ define inreg <44 x i16> @bitcast_v44f16_to_v44i16_scalar(<44 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v26, s47
 ; SI-NEXT:    v_mov_b32_e32 v24, s45
 ; SI-NEXT:    v_mov_b32_e32 v22, s43
-; SI-NEXT:  .LBB59_5: ; %end
+; SI-NEXT:  .LBB59_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v50
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
@@ -36139,10 +36733,18 @@ define inreg <44 x i16> @bitcast_v44f16_to_v44i16_scalar(<44 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s75, s74, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v8
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_3
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_4
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v22, 0x200
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v22
 ; VI-NEXT:    v_add_f16_e32 v51, s43, v22
@@ -36188,10 +36790,8 @@ define inreg <44 x i16> @bitcast_v44f16_to_v44i16_scalar(<44 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v23, s47, v22
 ; VI-NEXT:    v_add_f16_e32 v21, s44, v22
 ; VI-NEXT:    v_add_f16_e32 v22, s45, v22
-; VI-NEXT:    s_branch .LBB59_5
-; VI-NEXT:  .LBB59_3:
-; VI-NEXT:    s_branch .LBB59_2
-; VI-NEXT:  .LBB59_4:
+; VI-NEXT:    s_branch .LBB59_6
+; VI-NEXT:  .LBB59_5:
 ; VI-NEXT:    v_mov_b32_e32 v22, s45
 ; VI-NEXT:    v_mov_b32_e32 v21, s44
 ; VI-NEXT:    v_mov_b32_e32 v23, s47
@@ -36236,7 +36836,7 @@ define inreg <44 x i16> @bitcast_v44f16_to_v44i16_scalar(<44 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v51, s43
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
-; VI-NEXT:  .LBB59_5: ; %end
+; VI-NEXT:  .LBB59_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v51, 16, v51
 ; VI-NEXT:    v_lshlrev_b32_e32 v50, 16, v50
 ; VI-NEXT:    v_lshlrev_b32_e32 v49, 16, v49
@@ -36318,10 +36918,18 @@ define inreg <44 x i16> @bitcast_v44f16_to_v44i16_scalar(<44 x half> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s44, s60, 16
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v8
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_4
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s75, s59
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v21, s4, v0 op_sel_hi:[1,0]
@@ -36389,10 +36997,8 @@ define inreg <44 x i16> @bitcast_v44f16_to_v44i16_scalar(<44 x half> inreg %a, i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v24, 16, v19
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v23, 16, v20
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v22, 16, v21
-; GFX9-NEXT:    s_branch .LBB59_5
-; GFX9-NEXT:  .LBB59_3:
-; GFX9-NEXT:    s_branch .LBB59_2
-; GFX9-NEXT:  .LBB59_4:
+; GFX9-NEXT:    s_branch .LBB59_6
+; GFX9-NEXT:  .LBB59_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s75
 ; GFX9-NEXT:    v_mov_b32_e32 v20, s74
 ; GFX9-NEXT:    v_mov_b32_e32 v19, s73
@@ -36437,7 +37043,7 @@ define inreg <44 x i16> @bitcast_v44f16_to_v44i16_scalar(<44 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v49, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v50, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v51, s6
-; GFX9-NEXT:  .LBB59_5: ; %end
+; GFX9-NEXT:  .LBB59_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -36516,11 +37122,16 @@ define inreg <44 x i16> @bitcast_v44f16_to_v44i16_scalar(<44 x half> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s58, 16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s62, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s62, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s62
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-TRUE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s62, -1
+; GFX11-TRUE16-NEXT:  .LBB59_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s62, s62, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s62, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s62, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s57, s61, s57
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s56, s60, s56
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s47, s59, s47
@@ -36588,8 +37199,6 @@ define inreg <44 x i16> @bitcast_v44f16_to_v44i16_scalar(<44 x half> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v23, 16, v20
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v22, 16, v21
 ; GFX11-TRUE16-NEXT:    s_branch .LBB59_5
-; GFX11-TRUE16-NEXT:  .LBB59_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB59_2
 ; GFX11-TRUE16-NEXT:  .LBB59_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s61 :: v_dual_mov_b32 v20, s60
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v19, s59 :: v_dual_mov_b32 v18, s58
@@ -36672,11 +37281,16 @@ define inreg <44 x i16> @bitcast_v44f16_to_v44i16_scalar(<44 x half> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s58, 16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s62, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s62, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s62
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-FAKE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s62, -1
+; GFX11-FAKE16-NEXT:  .LBB59_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s62, s62, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s62, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s62, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s57, s61, s57
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s56, s60, s56
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s47, s59, s47
@@ -36744,8 +37358,6 @@ define inreg <44 x i16> @bitcast_v44f16_to_v44i16_scalar(<44 x half> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v23, 16, v18
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v22, 16, v17
 ; GFX11-FAKE16-NEXT:    s_branch .LBB59_5
-; GFX11-FAKE16-NEXT:  .LBB59_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB59_2
 ; GFX11-FAKE16-NEXT:  .LBB59_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v17, s61 :: v_dual_mov_b32 v18, s60
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v19, s59 :: v_dual_mov_b32 v20, s58

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.768bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.768bit.ll
index 332c550eaaccf..d6e590ca5df5e 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.768bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.768bit.ll
@@ -188,10 +188,18 @@ define inreg <24 x float> @bitcast_v24i32_to_v24f32_scalar(<24 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s14, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s15, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -216,7 +224,7 @@ define inreg <24 x float> @bitcast_v24i32_to_v24f32_scalar(<24 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -242,8 +250,6 @@ define inreg <24 x float> @bitcast_v24i32_to_v24f32_scalar(<24 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v22, s7
 ; SI-NEXT:    v_mov_b32_e32 v23, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v24i32_to_v24f32_scalar:
 ; VI:       ; %bb.0:
@@ -260,10 +266,18 @@ define inreg <24 x float> @bitcast_v24i32_to_v24f32_scalar(<24 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s14, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s15, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -288,7 +302,7 @@ define inreg <24 x float> @bitcast_v24i32_to_v24f32_scalar(<24 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -314,8 +328,6 @@ define inreg <24 x float> @bitcast_v24i32_to_v24f32_scalar(<24 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v22, s7
 ; VI-NEXT:    v_mov_b32_e32 v23, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v24i32_to_v24f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -332,10 +344,18 @@ define inreg <24 x float> @bitcast_v24i32_to_v24f32_scalar(<24 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s15, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -360,7 +380,7 @@ define inreg <24 x float> @bitcast_v24i32_to_v24f32_scalar(<24 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -386,8 +406,6 @@ define inreg <24 x float> @bitcast_v24i32_to_v24f32_scalar(<24 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v24i32_to_v24f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -401,11 +419,16 @@ define inreg <24 x float> @bitcast_v24i32_to_v24f32_scalar(<24 x i32> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s10, 0
 ; GFX11-NEXT:    s_mov_b32 s10, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s10
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s10, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s10, s10, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -430,7 +453,7 @@ define inreg <24 x float> @bitcast_v24i32_to_v24f32_scalar(<24 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -445,8 +468,6 @@ define inreg <24 x float> @bitcast_v24i32_to_v24f32_scalar(<24 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s7 :: v_dual_mov_b32 v21, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s5 :: v_dual_mov_b32 v23, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -664,10 +685,18 @@ define inreg <24 x i32> @bitcast_v24f32_to_v24i32_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v23, s59, 1.0
 ; SI-NEXT:    v_add_f32_e64 v22, s58, 1.0
 ; SI-NEXT:    v_add_f32_e64 v21, s57, 1.0
@@ -692,10 +721,8 @@ define inreg <24 x i32> @bitcast_v24f32_to_v24i32_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB3_5
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:    s_branch .LBB3_6
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -728,7 +755,7 @@ define inreg <24 x i32> @bitcast_v24f32_to_v24i32_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB3_5: ; %end
+; SI-NEXT:  .LBB3_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -791,10 +818,18 @@ define inreg <24 x i32> @bitcast_v24f32_to_v24i32_scalar(<24 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v23, s59, 1.0
 ; VI-NEXT:    v_add_f32_e64 v22, s58, 1.0
 ; VI-NEXT:    v_add_f32_e64 v21, s57, 1.0
@@ -819,10 +854,8 @@ define inreg <24 x i32> @bitcast_v24f32_to_v24i32_scalar(<24 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB3_5
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:    s_branch .LBB3_6
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -855,7 +888,7 @@ define inreg <24 x i32> @bitcast_v24f32_to_v24i32_scalar(<24 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB3_5: ; %end
+; VI-NEXT:  .LBB3_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -918,10 +951,18 @@ define inreg <24 x i32> @bitcast_v24f32_to_v24i32_scalar(<24 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v23, s59, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v22, s58, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v21, s57, 1.0
@@ -946,10 +987,8 @@ define inreg <24 x i32> @bitcast_v24f32_to_v24i32_scalar(<24 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB3_5
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:    s_branch .LBB3_6
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -982,7 +1021,7 @@ define inreg <24 x i32> @bitcast_v24f32_to_v24i32_scalar(<24 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB3_5: ; %end
+; GFX9-NEXT:  .LBB3_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -1046,11 +1085,16 @@ define inreg <24 x i32> @bitcast_v24f32_to_v24i32_scalar(<24 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v23, s59, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v22, s58, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v21, s57, 1.0
@@ -1076,8 +1120,6 @@ define inreg <24 x i32> @bitcast_v24f32_to_v24i32_scalar(<24 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB3_5
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -1312,10 +1354,18 @@ define inreg <12 x i64> @bitcast_v24i32_to_v12i64_scalar(<24 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s14, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s15, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -1340,7 +1390,7 @@ define inreg <12 x i64> @bitcast_v24i32_to_v12i64_scalar(<24 x i32> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1366,8 +1416,6 @@ define inreg <12 x i64> @bitcast_v24i32_to_v12i64_scalar(<24 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v22, s7
 ; SI-NEXT:    v_mov_b32_e32 v23, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v24i32_to_v12i64_scalar:
 ; VI:       ; %bb.0:
@@ -1384,10 +1432,18 @@ define inreg <12 x i64> @bitcast_v24i32_to_v12i64_scalar(<24 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s14, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s15, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -1412,7 +1468,7 @@ define inreg <12 x i64> @bitcast_v24i32_to_v12i64_scalar(<24 x i32> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1438,8 +1494,6 @@ define inreg <12 x i64> @bitcast_v24i32_to_v12i64_scalar(<24 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v22, s7
 ; VI-NEXT:    v_mov_b32_e32 v23, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v24i32_to_v12i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -1456,10 +1510,18 @@ define inreg <12 x i64> @bitcast_v24i32_to_v12i64_scalar(<24 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s15, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -1484,7 +1546,7 @@ define inreg <12 x i64> @bitcast_v24i32_to_v12i64_scalar(<24 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1510,8 +1572,6 @@ define inreg <12 x i64> @bitcast_v24i32_to_v12i64_scalar(<24 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v24i32_to_v12i64_scalar:
 ; GFX11:       ; %bb.0:
@@ -1525,11 +1585,16 @@ define inreg <12 x i64> @bitcast_v24i32_to_v12i64_scalar(<24 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s10, 0
 ; GFX11-NEXT:    s_mov_b32 s10, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s10
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s10, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s10, s10, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -1554,7 +1619,7 @@ define inreg <12 x i64> @bitcast_v24i32_to_v12i64_scalar(<24 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1569,8 +1634,6 @@ define inreg <12 x i64> @bitcast_v24i32_to_v12i64_scalar(<24 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s7 :: v_dual_mov_b32 v21, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s5 :: v_dual_mov_b32 v23, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1776,10 +1839,18 @@ define inreg <24 x i32> @bitcast_v12i64_to_v24i32_scalar(<12 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s14, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s15, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -1804,7 +1875,7 @@ define inreg <24 x i32> @bitcast_v12i64_to_v24i32_scalar(<12 x i64> inreg %a, i3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1830,8 +1901,6 @@ define inreg <24 x i32> @bitcast_v12i64_to_v24i32_scalar(<12 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v22, s7
 ; SI-NEXT:    v_mov_b32_e32 v23, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v12i64_to_v24i32_scalar:
 ; VI:       ; %bb.0:
@@ -1848,10 +1917,18 @@ define inreg <24 x i32> @bitcast_v12i64_to_v24i32_scalar(<12 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s14, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s15, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -1876,7 +1953,7 @@ define inreg <24 x i32> @bitcast_v12i64_to_v24i32_scalar(<12 x i64> inreg %a, i3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1902,8 +1979,6 @@ define inreg <24 x i32> @bitcast_v12i64_to_v24i32_scalar(<12 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v22, s7
 ; VI-NEXT:    v_mov_b32_e32 v23, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v12i64_to_v24i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -1920,10 +1995,18 @@ define inreg <24 x i32> @bitcast_v12i64_to_v24i32_scalar(<12 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s15, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -1948,7 +2031,7 @@ define inreg <24 x i32> @bitcast_v12i64_to_v24i32_scalar(<12 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB7_3: ; %end
+; GFX9-NEXT:  .LBB7_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1974,8 +2057,6 @@ define inreg <24 x i32> @bitcast_v12i64_to_v24i32_scalar(<12 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_4:
-; GFX9-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-LABEL: bitcast_v12i64_to_v24i32_scalar:
 ; GFX11:       ; %bb.0:
@@ -1989,11 +2070,16 @@ define inreg <24 x i32> @bitcast_v12i64_to_v24i32_scalar(<12 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s10, 0
 ; GFX11-NEXT:    s_mov_b32 s10, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s10
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_3
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s10, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s10, s10, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -2018,7 +2104,7 @@ define inreg <24 x i32> @bitcast_v12i64_to_v24i32_scalar(<12 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB7_3: ; %end
+; GFX11-NEXT:  .LBB7_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2033,8 +2119,6 @@ define inreg <24 x i32> @bitcast_v12i64_to_v24i32_scalar(<12 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s7 :: v_dual_mov_b32 v21, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s5 :: v_dual_mov_b32 v23, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_4:
-; GFX11-NEXT:    s_branch .LBB7_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2234,10 +2318,18 @@ define inreg <12 x double> @bitcast_v24i32_to_v12f64_scalar(<24 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s14, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s15, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -2262,7 +2354,7 @@ define inreg <12 x double> @bitcast_v24i32_to_v12f64_scalar(<24 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2288,8 +2380,6 @@ define inreg <12 x double> @bitcast_v24i32_to_v12f64_scalar(<24 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v22, s7
 ; SI-NEXT:    v_mov_b32_e32 v23, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v24i32_to_v12f64_scalar:
 ; VI:       ; %bb.0:
@@ -2306,10 +2396,18 @@ define inreg <12 x double> @bitcast_v24i32_to_v12f64_scalar(<24 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s14, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s15, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -2334,7 +2432,7 @@ define inreg <12 x double> @bitcast_v24i32_to_v12f64_scalar(<24 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2360,8 +2458,6 @@ define inreg <12 x double> @bitcast_v24i32_to_v12f64_scalar(<24 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v22, s7
 ; VI-NEXT:    v_mov_b32_e32 v23, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v24i32_to_v12f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -2378,10 +2474,18 @@ define inreg <12 x double> @bitcast_v24i32_to_v12f64_scalar(<24 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s15, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -2406,7 +2510,7 @@ define inreg <12 x double> @bitcast_v24i32_to_v12f64_scalar(<24 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2432,8 +2536,6 @@ define inreg <12 x double> @bitcast_v24i32_to_v12f64_scalar(<24 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v24i32_to_v12f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -2447,11 +2549,16 @@ define inreg <12 x double> @bitcast_v24i32_to_v12f64_scalar(<24 x i32> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s10, 0
 ; GFX11-NEXT:    s_mov_b32 s10, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s10
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s10, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s10, s10, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -2476,7 +2583,7 @@ define inreg <12 x double> @bitcast_v24i32_to_v12f64_scalar(<24 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2491,8 +2598,6 @@ define inreg <12 x double> @bitcast_v24i32_to_v12f64_scalar(<24 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s7 :: v_dual_mov_b32 v21, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s5 :: v_dual_mov_b32 v23, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2674,10 +2779,18 @@ define inreg <24 x i32> @bitcast_v12f64_to_v24i32_scalar(<12 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; SI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; SI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
@@ -2690,10 +2803,8 @@ define inreg <24 x i32> @bitcast_v12f64_to_v24i32_scalar(<12 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB11_5
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:    s_branch .LBB11_6
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -2726,7 +2837,7 @@ define inreg <24 x i32> @bitcast_v12f64_to_v24i32_scalar(<12 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB11_5: ; %end
+; SI-NEXT:  .LBB11_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -2789,10 +2900,18 @@ define inreg <24 x i32> @bitcast_v12f64_to_v24i32_scalar(<12 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; VI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; VI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
@@ -2805,10 +2924,8 @@ define inreg <24 x i32> @bitcast_v12f64_to_v24i32_scalar(<12 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB11_5
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:    s_branch .LBB11_6
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -2841,7 +2958,7 @@ define inreg <24 x i32> @bitcast_v12f64_to_v24i32_scalar(<12 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB11_5: ; %end
+; VI-NEXT:  .LBB11_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -2904,10 +3021,18 @@ define inreg <24 x i32> @bitcast_v12f64_to_v24i32_scalar(<12 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
@@ -2920,10 +3045,8 @@ define inreg <24 x i32> @bitcast_v12f64_to_v24i32_scalar(<12 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB11_5
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:    s_branch .LBB11_6
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -2956,7 +3079,7 @@ define inreg <24 x i32> @bitcast_v12f64_to_v24i32_scalar(<12 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB11_5: ; %end
+; GFX9-NEXT:  .LBB11_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -3020,11 +3143,16 @@ define inreg <24 x i32> @bitcast_v12f64_to_v24i32_scalar(<12 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; GFX11-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; GFX11-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
@@ -3038,8 +3166,6 @@ define inreg <24 x i32> @bitcast_v12f64_to_v24i32_scalar(<12 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB11_5
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -3774,10 +3900,8 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v24, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v24, s34, 0
-; SI-NEXT:    v_writelane_b32 v24, s35, 1
-; SI-NEXT:    v_writelane_b32 v24, s30, 2
-; SI-NEXT:    v_writelane_b32 v24, s31, 3
+; SI-NEXT:    v_writelane_b32 v24, s30, 0
+; SI-NEXT:    v_writelane_b32 v24, s31, 1
 ; SI-NEXT:    v_readfirstlane_b32 s12, v10
 ; SI-NEXT:    v_readfirstlane_b32 s5, v9
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
@@ -3790,7 +3914,7 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s13, v1
 ; SI-NEXT:    s_cmp_lg_u32 s12, 0
 ; SI-NEXT:    v_readfirstlane_b32 s12, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s88, s5, 16
 ; SI-NEXT:    s_lshr_b32 s89, s7, 16
@@ -3800,10 +3924,10 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s93, s29, 16
 ; SI-NEXT:    s_lshr_b32 s94, s27, 16
 ; SI-NEXT:    s_lshr_b32 s95, s25, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s21, 16
-; SI-NEXT:    s_lshr_b32 s34, s19, 16
-; SI-NEXT:    s_lshr_b32 s35, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s21, 16
+; SI-NEXT:    s_lshr_b32 s30, s19, 16
+; SI-NEXT:    s_lshr_b32 s31, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[8:9], 16
@@ -3816,8 +3940,40 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[78:79], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[78:79], -1
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[78:79], s[78:79], exec
+; SI-NEXT:    s_cselect_b32 s15, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s15, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -3858,38 +4014,38 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s93, s29, 16
 ; SI-NEXT:    s_lshr_b32 s94, s27, 16
 ; SI-NEXT:    s_lshr_b32 s95, s25, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s21, 16
-; SI-NEXT:    s_lshr_b32 s34, s19, 16
-; SI-NEXT:    s_lshr_b32 s35, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s21, 16
+; SI-NEXT:    s_lshr_b32 s30, s19, 16
+; SI-NEXT:    s_lshr_b32 s31, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[16:17], 16
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s15, s76, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s15, s16, s15
 ; SI-NEXT:    s_and_b32 s16, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s35, 16
+; SI-NEXT:    s_lshl_b32 s17, s31, 16
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s74, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    s_and_b32 s18, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s19, s34, 16
+; SI-NEXT:    s_lshl_b32 s19, s30, 16
 ; SI-NEXT:    s_or_b32 s18, s18, s19
 ; SI-NEXT:    s_lshl_b32 s19, s72, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s19, s20, s19
 ; SI-NEXT:    s_and_b32 s20, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s21, s31, 16
+; SI-NEXT:    s_lshl_b32 s21, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s20, s20, s21
 ; SI-NEXT:    s_and_b32 s21, s22, 0xffff
 ; SI-NEXT:    s_lshl_b32 s22, s62, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s22
 ; SI-NEXT:    s_and_b32 s22, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s23, s30, 16
+; SI-NEXT:    s_lshl_b32 s23, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s22, s22, s23
 ; SI-NEXT:    s_and_b32 s23, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s24, s60, 16
@@ -3939,7 +4095,7 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s14, s88, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s29
 ; SI-NEXT:    s_or_b32 s5, s5, s14
-; SI-NEXT:    v_readlane_b32 s30, v24, 2
+; SI-NEXT:    v_readlane_b32 s30, v24, 0
 ; SI-NEXT:    v_mov_b32_e32 v0, s15
 ; SI-NEXT:    v_mov_b32_e32 v1, s16
 ; SI-NEXT:    v_mov_b32_e32 v2, s17
@@ -3964,40 +4120,12 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v21, s7
 ; SI-NEXT:    v_mov_b32_e32 v22, s4
 ; SI-NEXT:    v_mov_b32_e32 v23, s5
-; SI-NEXT:    v_readlane_b32 s31, v24, 3
-; SI-NEXT:    v_readlane_b32 s35, v24, 1
-; SI-NEXT:    v_readlane_b32 s34, v24, 0
+; SI-NEXT:    v_readlane_b32 s31, v24, 1
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_v24i32_to_v48i16_scalar:
 ; VI:       ; %bb.0:
@@ -4014,7 +4142,7 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s14, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s15, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s40, s6, 16
 ; VI-NEXT:    s_lshr_b32 s41, s7, 16
@@ -4040,8 +4168,40 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s77, s18, 16
 ; VI-NEXT:    s_lshr_b32 s78, s17, 16
 ; VI-NEXT:    s_lshr_b32 s79, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -4090,7 +4250,7 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s77, s18, 16
 ; VI-NEXT:    s_lshr_b32 s78, s17, 16
 ; VI-NEXT:    s_lshr_b32 s79, s16, 16
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s79, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -4188,32 +4348,6 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v22, s7
 ; VI-NEXT:    v_mov_b32_e32 v23, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v24i32_to_v48i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -4230,7 +4364,7 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s15, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s40, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s41, s7, 16
@@ -4256,8 +4390,40 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s77, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s78, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s79, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -4306,7 +4472,7 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s77, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s78, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s79, s16, 16
-; GFX9-NEXT:  .LBB13_3: ; %end
+; GFX9-NEXT:  .LBB13_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s79
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s78
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s77
@@ -4356,32 +4522,6 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_v24i32_to_v48i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -4395,7 +4535,7 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s10, 0
 ; GFX11-NEXT:    s_mov_b32 s74, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s10, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s11, s5, 16
@@ -4421,9 +4561,40 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s63, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s72, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s73, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s74
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB13_3
+; GFX11-NEXT:  .LBB13_2:
+; GFX11-NEXT:    s_mov_b32 s74, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:  .LBB13_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s74, s74, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s74, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s74, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -4472,7 +4643,7 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s63, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s72, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s73, s0, 16
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s73
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s72
@@ -4511,32 +4682,6 @@ define inreg <48 x i16> @bitcast_v24i32_to_v48i16_scalar(<24 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s7 :: v_dual_mov_b32 v21, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s5 :: v_dual_mov_b32 v23, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -5629,10 +5774,8 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v24, s67, 17
 ; SI-NEXT:    v_writelane_b32 v24, s68, 18
 ; SI-NEXT:    v_writelane_b32 v24, s69, 19
-; SI-NEXT:    v_writelane_b32 v24, s70, 20
-; SI-NEXT:    v_writelane_b32 v24, s71, 21
-; SI-NEXT:    v_writelane_b32 v24, s30, 22
-; SI-NEXT:    v_writelane_b32 v24, s31, 23
+; SI-NEXT:    v_writelane_b32 v24, s30, 20
+; SI-NEXT:    v_writelane_b32 v24, s31, 21
 ; SI-NEXT:    v_readfirstlane_b32 s7, v9
 ; SI-NEXT:    v_readfirstlane_b32 s9, v8
 ; SI-NEXT:    v_readfirstlane_b32 s11, v7
@@ -5649,14 +5792,14 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s89, s26, 16
 ; SI-NEXT:    s_lshr_b32 s92, s25, 16
 ; SI-NEXT:    s_lshr_b32 s95, s24, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s22, 16
-; SI-NEXT:    s_lshr_b32 s34, s21, 16
-; SI-NEXT:    s_lshr_b32 s35, s20, 16
-; SI-NEXT:    s_lshr_b32 s68, s19, 16
-; SI-NEXT:    s_lshr_b32 s69, s18, 16
-; SI-NEXT:    s_lshr_b32 s70, s17, 16
-; SI-NEXT:    s_lshr_b32 s71, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; SI-NEXT:    s_lshr_b32 s30, s21, 16
+; SI-NEXT:    s_lshr_b32 s31, s20, 16
+; SI-NEXT:    s_lshr_b32 s34, s19, 16
+; SI-NEXT:    s_lshr_b32 s35, s18, 16
+; SI-NEXT:    s_lshr_b32 s68, s17, 16
+; SI-NEXT:    s_lshr_b32 s69, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -5669,31 +5812,31 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s93, s94, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -5743,46 +5886,55 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s59, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
@@ -5865,8 +6017,8 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s59, s4, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v24, 22
+; SI-NEXT:  .LBB15_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v24, 20
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -5891,9 +6043,7 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v21, s57
 ; SI-NEXT:    v_mov_b32_e32 v22, s58
 ; SI-NEXT:    v_mov_b32_e32 v23, s59
-; SI-NEXT:    v_readlane_b32 s31, v24, 23
-; SI-NEXT:    v_readlane_b32 s71, v24, 21
-; SI-NEXT:    v_readlane_b32 s70, v24, 20
+; SI-NEXT:    v_readlane_b32 s31, v24, 21
 ; SI-NEXT:    v_readlane_b32 s69, v24, 19
 ; SI-NEXT:    v_readlane_b32 s68, v24, 18
 ; SI-NEXT:    v_readlane_b32 s67, v24, 17
@@ -5919,9 +6069,6 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v48i16_to_v24i32_scalar:
 ; VI:       ; %bb.0:
@@ -5953,10 +6100,8 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    v_writelane_b32 v24, s71, 21
 ; VI-NEXT:    v_writelane_b32 v24, s80, 22
 ; VI-NEXT:    v_writelane_b32 v24, s81, 23
-; VI-NEXT:    v_writelane_b32 v24, s82, 24
-; VI-NEXT:    v_writelane_b32 v24, s83, 25
-; VI-NEXT:    v_writelane_b32 v24, s30, 26
-; VI-NEXT:    v_writelane_b32 v24, s31, 27
+; VI-NEXT:    v_writelane_b32 v24, s30, 24
+; VI-NEXT:    v_writelane_b32 v24, s31, 25
 ; VI-NEXT:    v_readfirstlane_b32 s7, v9
 ; VI-NEXT:    v_readfirstlane_b32 s9, v8
 ; VI-NEXT:    v_readfirstlane_b32 s11, v7
@@ -5966,21 +6111,21 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s77, v3
 ; VI-NEXT:    v_readfirstlane_b32 s88, v2
 ; VI-NEXT:    v_readfirstlane_b32 s91, v1
-; VI-NEXT:    v_readfirstlane_b32 s34, v0
+; VI-NEXT:    v_readfirstlane_b32 s30, v0
 ; VI-NEXT:    s_lshr_b32 s72, s29, 16
 ; VI-NEXT:    s_lshr_b32 s75, s28, 16
 ; VI-NEXT:    s_lshr_b32 s78, s27, 16
 ; VI-NEXT:    s_lshr_b32 s89, s26, 16
-; VI-NEXT:    s_lshr_b32 s30, s25, 16
-; VI-NEXT:    s_lshr_b32 s35, s24, 16
-; VI-NEXT:    s_lshr_b32 s68, s23, 16
-; VI-NEXT:    s_lshr_b32 s69, s22, 16
-; VI-NEXT:    s_lshr_b32 s70, s21, 16
-; VI-NEXT:    s_lshr_b32 s71, s20, 16
-; VI-NEXT:    s_lshr_b32 s80, s19, 16
-; VI-NEXT:    s_lshr_b32 s81, s18, 16
-; VI-NEXT:    s_lshr_b32 s82, s17, 16
-; VI-NEXT:    s_lshr_b32 s83, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s25, 16
+; VI-NEXT:    s_lshr_b32 s31, s24, 16
+; VI-NEXT:    s_lshr_b32 s34, s23, 16
+; VI-NEXT:    s_lshr_b32 s35, s22, 16
+; VI-NEXT:    s_lshr_b32 s68, s21, 16
+; VI-NEXT:    s_lshr_b32 s69, s20, 16
+; VI-NEXT:    s_lshr_b32 s70, s19, 16
+; VI-NEXT:    s_lshr_b32 s71, s18, 16
+; VI-NEXT:    s_lshr_b32 s80, s17, 16
+; VI-NEXT:    s_lshr_b32 s81, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -5990,40 +6135,40 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s76, s77, 16
 ; VI-NEXT:    s_lshr_b32 s79, s88, 16
 ; VI-NEXT:    s_lshr_b32 s90, s91, 16
-; VI-NEXT:    s_lshr_b32 s31, s34, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s30, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v10
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
@@ -6037,8 +6182,8 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -6067,56 +6212,65 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
@@ -6138,10 +6292,10 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s34, s34, 3
+; VI-NEXT:    s_add_i32 s30, s30, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s34, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_and_b32 s4, s30, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s91, s91, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
@@ -6189,8 +6343,8 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s59, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v24, 26
+; VI-NEXT:  .LBB15_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v24, 24
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -6215,9 +6369,7 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v21, s57
 ; VI-NEXT:    v_mov_b32_e32 v22, s58
 ; VI-NEXT:    v_mov_b32_e32 v23, s59
-; VI-NEXT:    v_readlane_b32 s31, v24, 27
-; VI-NEXT:    v_readlane_b32 s83, v24, 25
-; VI-NEXT:    v_readlane_b32 s82, v24, 24
+; VI-NEXT:    v_readlane_b32 s31, v24, 25
 ; VI-NEXT:    v_readlane_b32 s81, v24, 23
 ; VI-NEXT:    v_readlane_b32 s80, v24, 22
 ; VI-NEXT:    v_readlane_b32 s71, v24, 21
@@ -6247,9 +6399,6 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v48i16_to_v24i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -6329,10 +6478,18 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s62
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s58, s58, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s60
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -6357,10 +6514,8 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v21, s57, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v22, s58, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v23, s59, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB15_5
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:    s_branch .LBB15_6
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -6393,7 +6548,7 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB15_5: ; %end
+; GFX9-NEXT:  .LBB15_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -6472,11 +6627,16 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s22, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -6502,8 +6662,6 @@ define inreg <24 x i32> @bitcast_v48i16_to_v24i32_scalar(<48 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v22, s22, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v23, s23, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -7221,10 +7379,8 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; SI-NEXT:    buffer_store_dword v24, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v24, s34, 0
-; SI-NEXT:    v_writelane_b32 v24, s35, 1
-; SI-NEXT:    v_writelane_b32 v24, s30, 2
-; SI-NEXT:    v_writelane_b32 v24, s31, 3
+; SI-NEXT:    v_writelane_b32 v24, s30, 0
+; SI-NEXT:    v_writelane_b32 v24, s31, 1
 ; SI-NEXT:    v_readfirstlane_b32 s12, v10
 ; SI-NEXT:    v_readfirstlane_b32 s5, v9
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
@@ -7237,7 +7393,7 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s13, v1
 ; SI-NEXT:    s_cmp_lg_u32 s12, 0
 ; SI-NEXT:    v_readfirstlane_b32 s12, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s88, s5, 16
 ; SI-NEXT:    s_lshr_b32 s89, s7, 16
@@ -7247,10 +7403,10 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s93, s29, 16
 ; SI-NEXT:    s_lshr_b32 s94, s27, 16
 ; SI-NEXT:    s_lshr_b32 s95, s25, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s21, 16
-; SI-NEXT:    s_lshr_b32 s34, s19, 16
-; SI-NEXT:    s_lshr_b32 s35, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s21, 16
+; SI-NEXT:    s_lshr_b32 s30, s19, 16
+; SI-NEXT:    s_lshr_b32 s31, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[8:9], 16
@@ -7263,8 +7419,40 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[78:79], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[78:79], -1
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[78:79], s[78:79], exec
+; SI-NEXT:    s_cselect_b32 s15, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s15, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -7305,38 +7493,38 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s93, s29, 16
 ; SI-NEXT:    s_lshr_b32 s94, s27, 16
 ; SI-NEXT:    s_lshr_b32 s95, s25, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s21, 16
-; SI-NEXT:    s_lshr_b32 s34, s19, 16
-; SI-NEXT:    s_lshr_b32 s35, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s21, 16
+; SI-NEXT:    s_lshr_b32 s30, s19, 16
+; SI-NEXT:    s_lshr_b32 s31, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[16:17], 16
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s15, s76, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s15, s16, s15
 ; SI-NEXT:    s_and_b32 s16, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s35, 16
+; SI-NEXT:    s_lshl_b32 s17, s31, 16
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s74, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    s_and_b32 s18, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s19, s34, 16
+; SI-NEXT:    s_lshl_b32 s19, s30, 16
 ; SI-NEXT:    s_or_b32 s18, s18, s19
 ; SI-NEXT:    s_lshl_b32 s19, s72, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s19, s20, s19
 ; SI-NEXT:    s_and_b32 s20, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s21, s31, 16
+; SI-NEXT:    s_lshl_b32 s21, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s20, s20, s21
 ; SI-NEXT:    s_and_b32 s21, s22, 0xffff
 ; SI-NEXT:    s_lshl_b32 s22, s62, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s22
 ; SI-NEXT:    s_and_b32 s22, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s23, s30, 16
+; SI-NEXT:    s_lshl_b32 s23, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s22, s22, s23
 ; SI-NEXT:    s_and_b32 s23, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s24, s60, 16
@@ -7386,7 +7574,7 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s14, s88, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s29
 ; SI-NEXT:    s_or_b32 s5, s5, s14
-; SI-NEXT:    v_readlane_b32 s30, v24, 2
+; SI-NEXT:    v_readlane_b32 s30, v24, 0
 ; SI-NEXT:    v_mov_b32_e32 v0, s15
 ; SI-NEXT:    v_mov_b32_e32 v1, s16
 ; SI-NEXT:    v_mov_b32_e32 v2, s17
@@ -7411,40 +7599,12 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v21, s7
 ; SI-NEXT:    v_mov_b32_e32 v22, s4
 ; SI-NEXT:    v_mov_b32_e32 v23, s5
-; SI-NEXT:    v_readlane_b32 s31, v24, 3
-; SI-NEXT:    v_readlane_b32 s35, v24, 1
-; SI-NEXT:    v_readlane_b32 s34, v24, 0
+; SI-NEXT:    v_readlane_b32 s31, v24, 1
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_v24i32_to_v48f16_scalar:
 ; VI:       ; %bb.0:
@@ -7461,7 +7621,7 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s14, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s15, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s40, s6, 16
 ; VI-NEXT:    s_lshr_b32 s41, s7, 16
@@ -7487,8 +7647,40 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s77, s18, 16
 ; VI-NEXT:    s_lshr_b32 s78, s17, 16
 ; VI-NEXT:    s_lshr_b32 s79, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -7537,7 +7729,7 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s77, s18, 16
 ; VI-NEXT:    s_lshr_b32 s78, s17, 16
 ; VI-NEXT:    s_lshr_b32 s79, s16, 16
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s79, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -7635,32 +7827,6 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v22, s7
 ; VI-NEXT:    v_mov_b32_e32 v23, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v24i32_to_v48f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -7677,7 +7843,7 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s15, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s40, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s41, s7, 16
@@ -7703,8 +7869,40 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s77, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s78, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s79, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -7753,7 +7951,7 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s77, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s78, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s79, s16, 16
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s79
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s78
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s77
@@ -7803,32 +8001,6 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v24i32_to_v48f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -7842,7 +8014,7 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s10, 0
 ; GFX11-NEXT:    s_mov_b32 s74, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s10, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s11, s5, 16
@@ -7868,9 +8040,40 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s63, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s72, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s73, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s74
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB17_3
+; GFX11-NEXT:  .LBB17_2:
+; GFX11-NEXT:    s_mov_b32 s74, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:  .LBB17_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s74, s74, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s74, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s74, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -7919,7 +8122,7 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s63, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s72, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s73, s0, 16
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s73
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s72
@@ -7958,32 +8161,6 @@ define inreg <48 x half> @bitcast_v24i32_to_v48f16_scalar(<24 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s7 :: v_dual_mov_b32 v21, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s5 :: v_dual_mov_b32 v23, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -9188,10 +9365,8 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v32, s67, 17
 ; SI-NEXT:    v_writelane_b32 v32, s68, 18
 ; SI-NEXT:    v_writelane_b32 v32, s69, 19
-; SI-NEXT:    v_writelane_b32 v32, s70, 20
-; SI-NEXT:    v_writelane_b32 v32, s71, 21
-; SI-NEXT:    v_writelane_b32 v32, s30, 22
-; SI-NEXT:    v_writelane_b32 v32, s31, 23
+; SI-NEXT:    v_writelane_b32 v32, s30, 20
+; SI-NEXT:    v_writelane_b32 v32, s31, 21
 ; SI-NEXT:    v_readfirstlane_b32 s6, v9
 ; SI-NEXT:    v_readfirstlane_b32 s8, v8
 ; SI-NEXT:    v_readfirstlane_b32 s10, v7
@@ -9208,14 +9383,14 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s93, s26, 16
 ; SI-NEXT:    s_lshr_b32 s94, s25, 16
 ; SI-NEXT:    s_lshr_b32 s95, s24, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s22, 16
-; SI-NEXT:    s_lshr_b32 s34, s21, 16
-; SI-NEXT:    s_lshr_b32 s35, s20, 16
-; SI-NEXT:    s_lshr_b32 s68, s19, 16
-; SI-NEXT:    s_lshr_b32 s69, s18, 16
-; SI-NEXT:    s_lshr_b32 s70, s17, 16
-; SI-NEXT:    s_lshr_b32 s71, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; SI-NEXT:    s_lshr_b32 s30, s21, 16
+; SI-NEXT:    s_lshr_b32 s31, s20, 16
+; SI-NEXT:    s_lshr_b32 s34, s19, 16
+; SI-NEXT:    s_lshr_b32 s35, s18, 16
+; SI-NEXT:    s_lshr_b32 s68, s17, 16
+; SI-NEXT:    s_lshr_b32 s69, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -9228,31 +9403,31 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s91, s89, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -9302,11 +9477,20 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s59, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s71
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s69
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s68
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -9316,7 +9500,7 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, s35
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v5, s19
@@ -9326,20 +9510,20 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s34
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s31
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s20
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s30
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
@@ -9349,7 +9533,7 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_or_b32_e32 v4, v4, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, vcc_hi
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s22
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
@@ -9358,7 +9542,7 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, vcc_lo
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v6, v8, v6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s23
@@ -9496,11 +9680,8 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v22, v23, v22
 ; SI-NEXT:    v_lshlrev_b32_e32 v23, 16, v24
 ; SI-NEXT:    v_or_b32_e32 v23, v25, v23
-; SI-NEXT:    s_branch .LBB19_5
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:    s_branch .LBB19_6
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -9533,11 +9714,9 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB19_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 22
-; SI-NEXT:    v_readlane_b32 s31, v32, 23
-; SI-NEXT:    v_readlane_b32 s71, v32, 21
-; SI-NEXT:    v_readlane_b32 s70, v32, 20
+; SI-NEXT:  .LBB19_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 20
+; SI-NEXT:    v_readlane_b32 s31, v32, 21
 ; SI-NEXT:    v_readlane_b32 s69, v32, 19
 ; SI-NEXT:    v_readlane_b32 s68, v32, 18
 ; SI-NEXT:    v_readlane_b32 s67, v32, 17
@@ -9594,10 +9773,8 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    v_writelane_b32 v32, s71, 21
 ; VI-NEXT:    v_writelane_b32 v32, s80, 22
 ; VI-NEXT:    v_writelane_b32 v32, s81, 23
-; VI-NEXT:    v_writelane_b32 v32, s82, 24
-; VI-NEXT:    v_writelane_b32 v32, s83, 25
-; VI-NEXT:    v_writelane_b32 v32, s30, 26
-; VI-NEXT:    v_writelane_b32 v32, s31, 27
+; VI-NEXT:    v_writelane_b32 v32, s30, 24
+; VI-NEXT:    v_writelane_b32 v32, s31, 25
 ; VI-NEXT:    v_readfirstlane_b32 s6, v9
 ; VI-NEXT:    v_readfirstlane_b32 s8, v8
 ; VI-NEXT:    v_readfirstlane_b32 s10, v7
@@ -9607,21 +9784,21 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s76, v3
 ; VI-NEXT:    v_readfirstlane_b32 s79, v2
 ; VI-NEXT:    v_readfirstlane_b32 s91, v1
-; VI-NEXT:    v_readfirstlane_b32 s34, v0
+; VI-NEXT:    v_readfirstlane_b32 s30, v0
 ; VI-NEXT:    s_lshr_b32 s72, s29, 16
 ; VI-NEXT:    s_lshr_b32 s74, s28, 16
 ; VI-NEXT:    s_lshr_b32 s77, s27, 16
 ; VI-NEXT:    s_lshr_b32 s88, s26, 16
 ; VI-NEXT:    s_lshr_b32 s90, s25, 16
-; VI-NEXT:    s_lshr_b32 s31, s24, 16
-; VI-NEXT:    s_lshr_b32 s68, s23, 16
-; VI-NEXT:    s_lshr_b32 s69, s22, 16
-; VI-NEXT:    s_lshr_b32 s70, s21, 16
-; VI-NEXT:    s_lshr_b32 s71, s20, 16
-; VI-NEXT:    s_lshr_b32 s80, s19, 16
-; VI-NEXT:    s_lshr_b32 s81, s18, 16
-; VI-NEXT:    s_lshr_b32 s82, s17, 16
-; VI-NEXT:    s_lshr_b32 s83, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s24, 16
+; VI-NEXT:    s_lshr_b32 s34, s23, 16
+; VI-NEXT:    s_lshr_b32 s35, s22, 16
+; VI-NEXT:    s_lshr_b32 s68, s21, 16
+; VI-NEXT:    s_lshr_b32 s69, s20, 16
+; VI-NEXT:    s_lshr_b32 s70, s19, 16
+; VI-NEXT:    s_lshr_b32 s71, s18, 16
+; VI-NEXT:    s_lshr_b32 s80, s17, 16
+; VI-NEXT:    s_lshr_b32 s81, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -9630,38 +9807,38 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s75, s73, 16
 ; VI-NEXT:    s_lshr_b32 s78, s76, 16
 ; VI-NEXT:    s_lshr_b32 s89, s79, 16
-; VI-NEXT:    s_lshr_b32 s30, s91, 16
-; VI-NEXT:    s_lshr_b32 s35, s34, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s91, 16
+; VI-NEXT:    s_lshr_b32 s31, s30, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v10
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -9678,11 +9855,11 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s79
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
@@ -9708,42 +9885,51 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v23, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s83
-; VI-NEXT:    v_mov_b32_e32 v2, s82
+; VI-NEXT:    v_mov_b32_e32 v0, s81
+; VI-NEXT:    v_mov_b32_e32 v2, s80
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v23
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v23
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s81
+; VI-NEXT:    v_mov_b32_e32 v2, s71
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v23
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s80
+; VI-NEXT:    v_mov_b32_e32 v3, s70
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v23
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s71
+; VI-NEXT:    v_mov_b32_e32 v4, s69
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v23
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s70
+; VI-NEXT:    v_mov_b32_e32 v5, s68
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v23
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s69
+; VI-NEXT:    v_mov_b32_e32 v6, s35
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v23
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s68
+; VI-NEXT:    v_mov_b32_e32 v7, s34
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v23
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s31
+; VI-NEXT:    v_mov_b32_e32 v8, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v23
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
@@ -9767,11 +9953,11 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v23
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s35
+; VI-NEXT:    v_mov_b32_e32 v14, s31
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s34, v23
+; VI-NEXT:    v_add_f16_e32 v15, s30, v23
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s30
+; VI-NEXT:    v_mov_b32_e32 v15, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v16, s91, v23
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
@@ -9807,11 +9993,8 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v24, v24, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v23, s6, v23
 ; VI-NEXT:    v_or_b32_e32 v23, v23, v24
-; VI-NEXT:    s_branch .LBB19_5
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:    s_branch .LBB19_6
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -9844,11 +10027,9 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB19_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 26
-; VI-NEXT:    v_readlane_b32 s31, v32, 27
-; VI-NEXT:    v_readlane_b32 s83, v32, 25
-; VI-NEXT:    v_readlane_b32 s82, v32, 24
+; VI-NEXT:  .LBB19_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 24
+; VI-NEXT:    v_readlane_b32 s31, v32, 25
 ; VI-NEXT:    v_readlane_b32 s81, v32, 23
 ; VI-NEXT:    v_readlane_b32 s80, v32, 22
 ; VI-NEXT:    v_readlane_b32 s71, v32, 21
@@ -9957,10 +10138,18 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s62
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s58, s58, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s60
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v23, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v23 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v23 op_sel_hi:[1,0]
@@ -9986,10 +10175,8 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v21, s57, v23 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v22, s58, v23 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v23, s59, v23 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB19_5
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:    s_branch .LBB19_6
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -10022,7 +10209,7 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB19_5: ; %end
+; GFX9-NEXT:  .LBB19_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -10101,11 +10288,16 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s22, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -10131,8 +10323,6 @@ define inreg <24 x i32> @bitcast_v48f16_to_v24i32_scalar(<48 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v22, 0x200, s22 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v23, 0x200, s23 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -10368,10 +10558,18 @@ define inreg <12 x i64> @bitcast_v24f32_to_v12i64_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_3
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB21_4
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v23, s59, 1.0
 ; SI-NEXT:    v_add_f32_e64 v22, s58, 1.0
 ; SI-NEXT:    v_add_f32_e64 v21, s57, 1.0
@@ -10396,10 +10594,8 @@ define inreg <12 x i64> @bitcast_v24f32_to_v12i64_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB21_5
-; SI-NEXT:  .LBB21_3:
-; SI-NEXT:    s_branch .LBB21_2
-; SI-NEXT:  .LBB21_4:
+; SI-NEXT:    s_branch .LBB21_6
+; SI-NEXT:  .LBB21_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -10432,7 +10628,7 @@ define inreg <12 x i64> @bitcast_v24f32_to_v12i64_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB21_5: ; %end
+; SI-NEXT:  .LBB21_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -10495,10 +10691,18 @@ define inreg <12 x i64> @bitcast_v24f32_to_v12i64_scalar(<24 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_3
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_4
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v23, s59, 1.0
 ; VI-NEXT:    v_add_f32_e64 v22, s58, 1.0
 ; VI-NEXT:    v_add_f32_e64 v21, s57, 1.0
@@ -10523,10 +10727,8 @@ define inreg <12 x i64> @bitcast_v24f32_to_v12i64_scalar(<24 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB21_5
-; VI-NEXT:  .LBB21_3:
-; VI-NEXT:    s_branch .LBB21_2
-; VI-NEXT:  .LBB21_4:
+; VI-NEXT:    s_branch .LBB21_6
+; VI-NEXT:  .LBB21_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -10559,7 +10761,7 @@ define inreg <12 x i64> @bitcast_v24f32_to_v12i64_scalar(<24 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB21_5: ; %end
+; VI-NEXT:  .LBB21_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -10622,10 +10824,18 @@ define inreg <12 x i64> @bitcast_v24f32_to_v12i64_scalar(<24 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_4
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v23, s59, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v22, s58, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v21, s57, 1.0
@@ -10650,10 +10860,8 @@ define inreg <12 x i64> @bitcast_v24f32_to_v12i64_scalar(<24 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB21_5
-; GFX9-NEXT:  .LBB21_3:
-; GFX9-NEXT:    s_branch .LBB21_2
-; GFX9-NEXT:  .LBB21_4:
+; GFX9-NEXT:    s_branch .LBB21_6
+; GFX9-NEXT:  .LBB21_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -10686,7 +10894,7 @@ define inreg <12 x i64> @bitcast_v24f32_to_v12i64_scalar(<24 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB21_5: ; %end
+; GFX9-NEXT:  .LBB21_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -10750,11 +10958,16 @@ define inreg <12 x i64> @bitcast_v24f32_to_v12i64_scalar(<24 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_4
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v23, s59, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v22, s58, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v21, s57, 1.0
@@ -10780,8 +10993,6 @@ define inreg <12 x i64> @bitcast_v24f32_to_v12i64_scalar(<24 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB21_5
-; GFX11-NEXT:  .LBB21_3:
-; GFX11-NEXT:    s_branch .LBB21_2
 ; GFX11-NEXT:  .LBB21_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -11022,10 +11233,18 @@ define inreg <24 x float> @bitcast_v12i64_to_v24f32_scalar(<12 x i64> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s14, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s15, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -11050,7 +11269,7 @@ define inreg <24 x float> @bitcast_v12i64_to_v24f32_scalar(<12 x i64> inreg %a,
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -11076,8 +11295,6 @@ define inreg <24 x float> @bitcast_v12i64_to_v24f32_scalar(<12 x i64> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v22, s7
 ; SI-NEXT:    v_mov_b32_e32 v23, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v12i64_to_v24f32_scalar:
 ; VI:       ; %bb.0:
@@ -11094,10 +11311,18 @@ define inreg <24 x float> @bitcast_v12i64_to_v24f32_scalar(<12 x i64> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s14, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s15, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_4
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_3
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -11122,7 +11347,7 @@ define inreg <24 x float> @bitcast_v12i64_to_v24f32_scalar(<12 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB23_3: ; %end
+; VI-NEXT:  .LBB23_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -11148,8 +11373,6 @@ define inreg <24 x float> @bitcast_v12i64_to_v24f32_scalar(<12 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v22, s7
 ; VI-NEXT:    v_mov_b32_e32 v23, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_4:
-; VI-NEXT:    s_branch .LBB23_2
 ;
 ; GFX9-LABEL: bitcast_v12i64_to_v24f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -11166,10 +11389,18 @@ define inreg <24 x float> @bitcast_v12i64_to_v24f32_scalar(<12 x i64> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s15, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_3
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -11194,7 +11425,7 @@ define inreg <24 x float> @bitcast_v12i64_to_v24f32_scalar(<12 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB23_3: ; %end
+; GFX9-NEXT:  .LBB23_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -11220,8 +11451,6 @@ define inreg <24 x float> @bitcast_v12i64_to_v24f32_scalar(<12 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_4:
-; GFX9-NEXT:    s_branch .LBB23_2
 ;
 ; GFX11-LABEL: bitcast_v12i64_to_v24f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -11235,11 +11464,16 @@ define inreg <24 x float> @bitcast_v12i64_to_v24f32_scalar(<12 x i64> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s10, 0
 ; GFX11-NEXT:    s_mov_b32 s10, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s10
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_3
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s10, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s10, s10, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -11264,7 +11498,7 @@ define inreg <24 x float> @bitcast_v12i64_to_v24f32_scalar(<12 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB23_3: ; %end
+; GFX11-NEXT:  .LBB23_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -11279,8 +11513,6 @@ define inreg <24 x float> @bitcast_v12i64_to_v24f32_scalar(<12 x i64> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s7 :: v_dual_mov_b32 v21, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s5 :: v_dual_mov_b32 v23, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_4:
-; GFX11-NEXT:    s_branch .LBB23_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -11498,10 +11730,18 @@ define inreg <12 x double> @bitcast_v24f32_to_v12f64_scalar(<24 x float> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_3
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB25_4
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v23, s59, 1.0
 ; SI-NEXT:    v_add_f32_e64 v22, s58, 1.0
 ; SI-NEXT:    v_add_f32_e64 v21, s57, 1.0
@@ -11526,10 +11766,8 @@ define inreg <12 x double> @bitcast_v24f32_to_v12f64_scalar(<24 x float> inreg %
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB25_5
-; SI-NEXT:  .LBB25_3:
-; SI-NEXT:    s_branch .LBB25_2
-; SI-NEXT:  .LBB25_4:
+; SI-NEXT:    s_branch .LBB25_6
+; SI-NEXT:  .LBB25_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -11562,7 +11800,7 @@ define inreg <12 x double> @bitcast_v24f32_to_v12f64_scalar(<24 x float> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB25_5: ; %end
+; SI-NEXT:  .LBB25_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -11625,10 +11863,18 @@ define inreg <12 x double> @bitcast_v24f32_to_v12f64_scalar(<24 x float> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_3
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB25_4
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v23, s59, 1.0
 ; VI-NEXT:    v_add_f32_e64 v22, s58, 1.0
 ; VI-NEXT:    v_add_f32_e64 v21, s57, 1.0
@@ -11653,10 +11899,8 @@ define inreg <12 x double> @bitcast_v24f32_to_v12f64_scalar(<24 x float> inreg %
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB25_5
-; VI-NEXT:  .LBB25_3:
-; VI-NEXT:    s_branch .LBB25_2
-; VI-NEXT:  .LBB25_4:
+; VI-NEXT:    s_branch .LBB25_6
+; VI-NEXT:  .LBB25_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -11689,7 +11933,7 @@ define inreg <12 x double> @bitcast_v24f32_to_v12f64_scalar(<24 x float> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB25_5: ; %end
+; VI-NEXT:  .LBB25_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -11752,10 +11996,18 @@ define inreg <12 x double> @bitcast_v24f32_to_v12f64_scalar(<24 x float> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_4
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v23, s59, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v22, s58, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v21, s57, 1.0
@@ -11780,10 +12032,8 @@ define inreg <12 x double> @bitcast_v24f32_to_v12f64_scalar(<24 x float> inreg %
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB25_5
-; GFX9-NEXT:  .LBB25_3:
-; GFX9-NEXT:    s_branch .LBB25_2
-; GFX9-NEXT:  .LBB25_4:
+; GFX9-NEXT:    s_branch .LBB25_6
+; GFX9-NEXT:  .LBB25_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -11816,7 +12066,7 @@ define inreg <12 x double> @bitcast_v24f32_to_v12f64_scalar(<24 x float> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB25_5: ; %end
+; GFX9-NEXT:  .LBB25_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -11880,11 +12130,16 @@ define inreg <12 x double> @bitcast_v24f32_to_v12f64_scalar(<24 x float> inreg %
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_4
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB25_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v23, s59, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v22, s58, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v21, s57, 1.0
@@ -11910,8 +12165,6 @@ define inreg <12 x double> @bitcast_v24f32_to_v12f64_scalar(<24 x float> inreg %
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB25_5
-; GFX11-NEXT:  .LBB25_3:
-; GFX11-NEXT:    s_branch .LBB25_2
 ; GFX11-NEXT:  .LBB25_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -12128,10 +12381,18 @@ define inreg <24 x float> @bitcast_v12f64_to_v24f32_scalar(<12 x double> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB27_3
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB27_4
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; SI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; SI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
@@ -12144,10 +12405,8 @@ define inreg <24 x float> @bitcast_v12f64_to_v24f32_scalar(<12 x double> inreg %
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB27_5
-; SI-NEXT:  .LBB27_3:
-; SI-NEXT:    s_branch .LBB27_2
-; SI-NEXT:  .LBB27_4:
+; SI-NEXT:    s_branch .LBB27_6
+; SI-NEXT:  .LBB27_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -12180,7 +12439,7 @@ define inreg <24 x float> @bitcast_v12f64_to_v24f32_scalar(<12 x double> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB27_5: ; %end
+; SI-NEXT:  .LBB27_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -12243,10 +12502,18 @@ define inreg <24 x float> @bitcast_v12f64_to_v24f32_scalar(<12 x double> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_3
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB27_4
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; VI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; VI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
@@ -12259,10 +12526,8 @@ define inreg <24 x float> @bitcast_v12f64_to_v24f32_scalar(<12 x double> inreg %
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB27_5
-; VI-NEXT:  .LBB27_3:
-; VI-NEXT:    s_branch .LBB27_2
-; VI-NEXT:  .LBB27_4:
+; VI-NEXT:    s_branch .LBB27_6
+; VI-NEXT:  .LBB27_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -12295,7 +12560,7 @@ define inreg <24 x float> @bitcast_v12f64_to_v24f32_scalar(<12 x double> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB27_5: ; %end
+; VI-NEXT:  .LBB27_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -12358,10 +12623,18 @@ define inreg <24 x float> @bitcast_v12f64_to_v24f32_scalar(<12 x double> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_4
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
@@ -12374,10 +12647,8 @@ define inreg <24 x float> @bitcast_v12f64_to_v24f32_scalar(<12 x double> inreg %
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB27_5
-; GFX9-NEXT:  .LBB27_3:
-; GFX9-NEXT:    s_branch .LBB27_2
-; GFX9-NEXT:  .LBB27_4:
+; GFX9-NEXT:    s_branch .LBB27_6
+; GFX9-NEXT:  .LBB27_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -12410,7 +12681,7 @@ define inreg <24 x float> @bitcast_v12f64_to_v24f32_scalar(<12 x double> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB27_5: ; %end
+; GFX9-NEXT:  .LBB27_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -12474,11 +12745,16 @@ define inreg <24 x float> @bitcast_v12f64_to_v24f32_scalar(<12 x double> inreg %
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_4
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB27_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; GFX11-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; GFX11-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
@@ -12492,8 +12768,6 @@ define inreg <24 x float> @bitcast_v12f64_to_v24f32_scalar(<12 x double> inreg %
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB27_5
-; GFX11-NEXT:  .LBB27_3:
-; GFX11-NEXT:    s_branch .LBB27_2
 ; GFX11-NEXT:  .LBB27_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -13204,10 +13478,8 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    buffer_store_dword v40, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v40, s34, 0
-; SI-NEXT:    v_writelane_b32 v40, s35, 1
-; SI-NEXT:    v_writelane_b32 v40, s30, 2
-; SI-NEXT:    v_writelane_b32 v40, s31, 3
+; SI-NEXT:    v_writelane_b32 v40, s30, 0
+; SI-NEXT:    v_writelane_b32 v40, s31, 1
 ; SI-NEXT:    v_readfirstlane_b32 s12, v10
 ; SI-NEXT:    v_readfirstlane_b32 s5, v9
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
@@ -13220,12 +13492,12 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s13, v1
 ; SI-NEXT:    s_cmp_lg_u32 s12, 0
 ; SI-NEXT:    v_readfirstlane_b32 s12, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s35, s5, 16
-; SI-NEXT:    s_lshr_b32 s34, s7, 16
-; SI-NEXT:    s_lshr_b32 s31, s9, 16
-; SI-NEXT:    s_lshr_b32 s30, s11, 16
+; SI-NEXT:    s_lshr_b32 s31, s5, 16
+; SI-NEXT:    s_lshr_b32 s30, s7, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s9, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s11, 16
 ; SI-NEXT:    s_lshr_b32 s95, s13, 16
 ; SI-NEXT:    s_lshr_b32 s94, s29, 16
 ; SI-NEXT:    s_lshr_b32 s93, s27, 16
@@ -13246,8 +13518,40 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[78:79], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[78:79], -1
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[78:79], s[78:79], exec
+; SI-NEXT:    s_cselect_b32 s15, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s15, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v23, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v22, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v21, s7, 1.0
@@ -13296,34 +13600,8 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v53, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v54, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v55, 16, v1
-; SI-NEXT:    s_branch .LBB29_5
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:    s_branch .LBB29_6
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13356,10 +13634,10 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v50, s93
 ; SI-NEXT:    v_mov_b32_e32 v49, s94
 ; SI-NEXT:    v_mov_b32_e32 v48, s95
-; SI-NEXT:    v_mov_b32_e32 v39, s30
-; SI-NEXT:    v_mov_b32_e32 v38, s31
-; SI-NEXT:    v_mov_b32_e32 v37, s34
-; SI-NEXT:    v_mov_b32_e32 v36, s35
+; SI-NEXT:    v_mov_b32_e32 v39, vcc_lo
+; SI-NEXT:    v_mov_b32_e32 v38, vcc_hi
+; SI-NEXT:    v_mov_b32_e32 v37, s30
+; SI-NEXT:    v_mov_b32_e32 v36, s31
 ; SI-NEXT:    v_mov_b32_e32 v24, s14
 ; SI-NEXT:    v_mov_b32_e32 v25, s40
 ; SI-NEXT:    v_mov_b32_e32 v26, s42
@@ -13372,7 +13650,7 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v33, s72
 ; SI-NEXT:    v_mov_b32_e32 v34, s74
 ; SI-NEXT:    v_mov_b32_e32 v35, s76
-; SI-NEXT:  .LBB29_5: ; %end
+; SI-NEXT:  .LBB29_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v35, 16, v35
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v34, 16, v34
@@ -13433,7 +13711,7 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v22, v22, v24
 ; SI-NEXT:    v_and_b32_e32 v23, 0xffff, v23
 ; SI-NEXT:    v_lshlrev_b32_e32 v24, 16, v36
-; SI-NEXT:    v_readlane_b32 s30, v40, 2
+; SI-NEXT:    v_readlane_b32 s30, v40, 0
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v35
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v34
 ; SI-NEXT:    v_or_b32_e32 v5, v5, v33
@@ -13446,9 +13724,7 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v19, v19, v26
 ; SI-NEXT:    v_or_b32_e32 v21, v21, v25
 ; SI-NEXT:    v_or_b32_e32 v23, v23, v24
-; SI-NEXT:    v_readlane_b32 s31, v40, 3
-; SI-NEXT:    v_readlane_b32 s35, v40, 1
-; SI-NEXT:    v_readlane_b32 s34, v40, 0
+; SI-NEXT:    v_readlane_b32 s31, v40, 1
 ; SI-NEXT:    s_or_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -13470,7 +13746,7 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s14, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s15, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s40, s6, 16
 ; VI-NEXT:    s_lshr_b32 s41, s7, 16
@@ -13496,8 +13772,40 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s77, s18, 16
 ; VI-NEXT:    s_lshr_b32 s78, s17, 16
 ; VI-NEXT:    s_lshr_b32 s79, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v23, s6, 1.0
 ; VI-NEXT:    v_add_f32_e64 v22, s7, 1.0
 ; VI-NEXT:    v_add_f32_e64 v21, s8, 1.0
@@ -13546,34 +13854,8 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v53, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v54, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v55, 16, v0
-; VI-NEXT:    s_branch .LBB29_5
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:    s_branch .LBB29_6
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13622,7 +13904,7 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v26, s42
 ; VI-NEXT:    v_mov_b32_e32 v25, s41
 ; VI-NEXT:    v_mov_b32_e32 v24, s40
-; VI-NEXT:  .LBB29_5: ; %end
+; VI-NEXT:  .LBB29_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v55, 16, v55
 ; VI-NEXT:    v_lshlrev_b32_e32 v54, 16, v54
 ; VI-NEXT:    v_lshlrev_b32_e32 v53, 16, v53
@@ -13688,7 +13970,7 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s15, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s40, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s41, s7, 16
@@ -13714,8 +13996,40 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s77, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s78, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s79, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v23, s6, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v22, s7, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v21, s8, 1.0
@@ -13764,34 +14078,8 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v53, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v54, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v55, 16, v0
-; GFX9-NEXT:    s_branch .LBB29_5
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:    s_branch .LBB29_6
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -13840,7 +14128,7 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s42
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s41
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s40
-; GFX9-NEXT:  .LBB29_5: ; %end
+; GFX9-NEXT:  .LBB29_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -13902,11 +14190,11 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s10, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s12, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s10, s4, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s6, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s14, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s8, 16
@@ -13929,9 +14217,40 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s72, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s73, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s74, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s10
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-TRUE16-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB29_3
+; GFX11-TRUE16-NEXT:  .LBB29_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-TRUE16-NEXT:  .LBB29_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v23, s4, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v22, s5, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v21, s6, 1.0
@@ -13980,34 +14299,8 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v53, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v54, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v55, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB29_5
-; GFX11-TRUE16-NEXT:  .LBB29_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    s_branch .LBB29_2
-; GFX11-TRUE16-NEXT:  .LBB29_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB29_6
+; GFX11-TRUE16-NEXT:  .LBB29_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -14031,8 +14324,8 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
-; GFX11-TRUE16-NEXT:  .LBB29_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s11 :: v_dual_mov_b32 v24, s10
+; GFX11-TRUE16-NEXT:  .LBB29_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v55.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v54.l
@@ -14071,11 +14364,11 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s10, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s12, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s10, s4, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s6, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s14, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s8, 16
@@ -14098,9 +14391,40 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s72, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s73, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s74, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s10
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-FAKE16-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB29_3
+; GFX11-FAKE16-NEXT:  .LBB29_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:  .LBB29_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v19, s4, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v20, s5, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v21, s6, 1.0
@@ -14149,34 +14473,8 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v53, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v54, 16, v2
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v55, 16, v3
-; GFX11-FAKE16-NEXT:    s_branch .LBB29_5
-; GFX11-FAKE16-NEXT:  .LBB29_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    s_branch .LBB29_2
-; GFX11-FAKE16-NEXT:  .LBB29_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB29_6
+; GFX11-FAKE16-NEXT:  .LBB29_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, s0 :: v_dual_mov_b32 v2, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v1, s2 :: v_dual_mov_b32 v0, s3
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v8, s16 :: v_dual_mov_b32 v7, s17
@@ -14200,8 +14498,8 @@ define inreg <48 x i16> @bitcast_v24f32_to_v48i16_scalar(<24 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
-; GFX11-FAKE16-NEXT:  .LBB29_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v25, s11 :: v_dual_mov_b32 v24, s10
+; GFX11-FAKE16-NEXT:  .LBB29_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v3
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v64, 0xffff, v1
@@ -15343,10 +15641,8 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v24, s67, 17
 ; SI-NEXT:    v_writelane_b32 v24, s68, 18
 ; SI-NEXT:    v_writelane_b32 v24, s69, 19
-; SI-NEXT:    v_writelane_b32 v24, s70, 20
-; SI-NEXT:    v_writelane_b32 v24, s71, 21
-; SI-NEXT:    v_writelane_b32 v24, s30, 22
-; SI-NEXT:    v_writelane_b32 v24, s31, 23
+; SI-NEXT:    v_writelane_b32 v24, s30, 20
+; SI-NEXT:    v_writelane_b32 v24, s31, 21
 ; SI-NEXT:    v_readfirstlane_b32 s7, v9
 ; SI-NEXT:    v_readfirstlane_b32 s9, v8
 ; SI-NEXT:    v_readfirstlane_b32 s11, v7
@@ -15363,14 +15659,14 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s89, s26, 16
 ; SI-NEXT:    s_lshr_b32 s92, s25, 16
 ; SI-NEXT:    s_lshr_b32 s95, s24, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s22, 16
-; SI-NEXT:    s_lshr_b32 s34, s21, 16
-; SI-NEXT:    s_lshr_b32 s35, s20, 16
-; SI-NEXT:    s_lshr_b32 s68, s19, 16
-; SI-NEXT:    s_lshr_b32 s69, s18, 16
-; SI-NEXT:    s_lshr_b32 s70, s17, 16
-; SI-NEXT:    s_lshr_b32 s71, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; SI-NEXT:    s_lshr_b32 s30, s21, 16
+; SI-NEXT:    s_lshr_b32 s31, s20, 16
+; SI-NEXT:    s_lshr_b32 s34, s19, 16
+; SI-NEXT:    s_lshr_b32 s35, s18, 16
+; SI-NEXT:    s_lshr_b32 s68, s17, 16
+; SI-NEXT:    s_lshr_b32 s69, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -15383,31 +15679,31 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s93, s94, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_4
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -15457,46 +15753,55 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s59, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB31_3
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
@@ -15579,8 +15884,8 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s59, s4, 0x30000
-; SI-NEXT:  .LBB31_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v24, 22
+; SI-NEXT:  .LBB31_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v24, 20
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -15605,9 +15910,7 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v21, s57
 ; SI-NEXT:    v_mov_b32_e32 v22, s58
 ; SI-NEXT:    v_mov_b32_e32 v23, s59
-; SI-NEXT:    v_readlane_b32 s31, v24, 23
-; SI-NEXT:    v_readlane_b32 s71, v24, 21
-; SI-NEXT:    v_readlane_b32 s70, v24, 20
+; SI-NEXT:    v_readlane_b32 s31, v24, 21
 ; SI-NEXT:    v_readlane_b32 s69, v24, 19
 ; SI-NEXT:    v_readlane_b32 s68, v24, 18
 ; SI-NEXT:    v_readlane_b32 s67, v24, 17
@@ -15633,9 +15936,6 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB31_2
 ;
 ; VI-LABEL: bitcast_v48i16_to_v24f32_scalar:
 ; VI:       ; %bb.0:
@@ -15667,10 +15967,8 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v24, s71, 21
 ; VI-NEXT:    v_writelane_b32 v24, s80, 22
 ; VI-NEXT:    v_writelane_b32 v24, s81, 23
-; VI-NEXT:    v_writelane_b32 v24, s82, 24
-; VI-NEXT:    v_writelane_b32 v24, s83, 25
-; VI-NEXT:    v_writelane_b32 v24, s30, 26
-; VI-NEXT:    v_writelane_b32 v24, s31, 27
+; VI-NEXT:    v_writelane_b32 v24, s30, 24
+; VI-NEXT:    v_writelane_b32 v24, s31, 25
 ; VI-NEXT:    v_readfirstlane_b32 s7, v9
 ; VI-NEXT:    v_readfirstlane_b32 s9, v8
 ; VI-NEXT:    v_readfirstlane_b32 s11, v7
@@ -15680,21 +15978,21 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s77, v3
 ; VI-NEXT:    v_readfirstlane_b32 s88, v2
 ; VI-NEXT:    v_readfirstlane_b32 s91, v1
-; VI-NEXT:    v_readfirstlane_b32 s34, v0
+; VI-NEXT:    v_readfirstlane_b32 s30, v0
 ; VI-NEXT:    s_lshr_b32 s72, s29, 16
 ; VI-NEXT:    s_lshr_b32 s75, s28, 16
 ; VI-NEXT:    s_lshr_b32 s78, s27, 16
 ; VI-NEXT:    s_lshr_b32 s89, s26, 16
-; VI-NEXT:    s_lshr_b32 s30, s25, 16
-; VI-NEXT:    s_lshr_b32 s35, s24, 16
-; VI-NEXT:    s_lshr_b32 s68, s23, 16
-; VI-NEXT:    s_lshr_b32 s69, s22, 16
-; VI-NEXT:    s_lshr_b32 s70, s21, 16
-; VI-NEXT:    s_lshr_b32 s71, s20, 16
-; VI-NEXT:    s_lshr_b32 s80, s19, 16
-; VI-NEXT:    s_lshr_b32 s81, s18, 16
-; VI-NEXT:    s_lshr_b32 s82, s17, 16
-; VI-NEXT:    s_lshr_b32 s83, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s25, 16
+; VI-NEXT:    s_lshr_b32 s31, s24, 16
+; VI-NEXT:    s_lshr_b32 s34, s23, 16
+; VI-NEXT:    s_lshr_b32 s35, s22, 16
+; VI-NEXT:    s_lshr_b32 s68, s21, 16
+; VI-NEXT:    s_lshr_b32 s69, s20, 16
+; VI-NEXT:    s_lshr_b32 s70, s19, 16
+; VI-NEXT:    s_lshr_b32 s71, s18, 16
+; VI-NEXT:    s_lshr_b32 s80, s17, 16
+; VI-NEXT:    s_lshr_b32 s81, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -15704,40 +16002,40 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s76, s77, 16
 ; VI-NEXT:    s_lshr_b32 s79, s88, 16
 ; VI-NEXT:    s_lshr_b32 s90, s91, 16
-; VI-NEXT:    s_lshr_b32 s31, s34, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s30, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v10
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_4
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
@@ -15751,8 +16049,8 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -15781,56 +16079,65 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB31_3
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
@@ -15852,10 +16159,10 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s34, s34, 3
+; VI-NEXT:    s_add_i32 s30, s30, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s34, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_and_b32 s4, s30, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s91, s91, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
@@ -15903,8 +16210,8 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s59, s4, 0x30000
-; VI-NEXT:  .LBB31_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v24, 26
+; VI-NEXT:  .LBB31_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v24, 24
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -15929,9 +16236,7 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v21, s57
 ; VI-NEXT:    v_mov_b32_e32 v22, s58
 ; VI-NEXT:    v_mov_b32_e32 v23, s59
-; VI-NEXT:    v_readlane_b32 s31, v24, 27
-; VI-NEXT:    v_readlane_b32 s83, v24, 25
-; VI-NEXT:    v_readlane_b32 s82, v24, 24
+; VI-NEXT:    v_readlane_b32 s31, v24, 25
 ; VI-NEXT:    v_readlane_b32 s81, v24, 23
 ; VI-NEXT:    v_readlane_b32 s80, v24, 22
 ; VI-NEXT:    v_readlane_b32 s71, v24, 21
@@ -15961,9 +16266,6 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB31_2
 ;
 ; GFX9-LABEL: bitcast_v48i16_to_v24f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -16043,10 +16345,18 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s62
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s58, s58, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s60
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_4
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -16071,10 +16381,8 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v21, s57, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v22, s58, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v23, s59, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB31_5
-; GFX9-NEXT:  .LBB31_3:
-; GFX9-NEXT:    s_branch .LBB31_2
-; GFX9-NEXT:  .LBB31_4:
+; GFX9-NEXT:    s_branch .LBB31_6
+; GFX9-NEXT:  .LBB31_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -16107,7 +16415,7 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB31_5: ; %end
+; GFX9-NEXT:  .LBB31_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -16186,11 +16494,16 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s22, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_4
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -16216,8 +16529,6 @@ define inreg <24 x float> @bitcast_v48i16_to_v24f32_scalar(<48 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v22, s22, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v23, s23, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_3:
-; GFX11-NEXT:    s_branch .LBB31_2
 ; GFX11-NEXT:  .LBB31_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -16911,10 +17222,8 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    buffer_store_dword v40, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v40, s34, 0
-; SI-NEXT:    v_writelane_b32 v40, s35, 1
-; SI-NEXT:    v_writelane_b32 v40, s30, 2
-; SI-NEXT:    v_writelane_b32 v40, s31, 3
+; SI-NEXT:    v_writelane_b32 v40, s30, 0
+; SI-NEXT:    v_writelane_b32 v40, s31, 1
 ; SI-NEXT:    v_readfirstlane_b32 s12, v10
 ; SI-NEXT:    v_readfirstlane_b32 s5, v9
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
@@ -16927,12 +17236,12 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s13, v1
 ; SI-NEXT:    s_cmp_lg_u32 s12, 0
 ; SI-NEXT:    v_readfirstlane_b32 s12, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s35, s5, 16
-; SI-NEXT:    s_lshr_b32 s34, s7, 16
-; SI-NEXT:    s_lshr_b32 s31, s9, 16
-; SI-NEXT:    s_lshr_b32 s30, s11, 16
+; SI-NEXT:    s_lshr_b32 s31, s5, 16
+; SI-NEXT:    s_lshr_b32 s30, s7, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s9, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s11, 16
 ; SI-NEXT:    s_lshr_b32 s95, s13, 16
 ; SI-NEXT:    s_lshr_b32 s94, s29, 16
 ; SI-NEXT:    s_lshr_b32 s93, s27, 16
@@ -16953,8 +17262,40 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[78:79], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[78:79], -1
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[78:79], s[78:79], exec
+; SI-NEXT:    s_cselect_b32 s15, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s15, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v23, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v22, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v21, s7, 1.0
@@ -17003,34 +17344,8 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v53, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v54, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v55, 16, v1
-; SI-NEXT:    s_branch .LBB33_5
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:    s_branch .LBB33_6
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -17063,10 +17378,10 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v50, s93
 ; SI-NEXT:    v_mov_b32_e32 v49, s94
 ; SI-NEXT:    v_mov_b32_e32 v48, s95
-; SI-NEXT:    v_mov_b32_e32 v39, s30
-; SI-NEXT:    v_mov_b32_e32 v38, s31
-; SI-NEXT:    v_mov_b32_e32 v37, s34
-; SI-NEXT:    v_mov_b32_e32 v36, s35
+; SI-NEXT:    v_mov_b32_e32 v39, vcc_lo
+; SI-NEXT:    v_mov_b32_e32 v38, vcc_hi
+; SI-NEXT:    v_mov_b32_e32 v37, s30
+; SI-NEXT:    v_mov_b32_e32 v36, s31
 ; SI-NEXT:    v_mov_b32_e32 v24, s14
 ; SI-NEXT:    v_mov_b32_e32 v25, s40
 ; SI-NEXT:    v_mov_b32_e32 v26, s42
@@ -17079,7 +17394,7 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v33, s72
 ; SI-NEXT:    v_mov_b32_e32 v34, s74
 ; SI-NEXT:    v_mov_b32_e32 v35, s76
-; SI-NEXT:  .LBB33_5: ; %end
+; SI-NEXT:  .LBB33_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v35, 16, v35
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v34, 16, v34
@@ -17140,7 +17455,7 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v22, v22, v24
 ; SI-NEXT:    v_and_b32_e32 v23, 0xffff, v23
 ; SI-NEXT:    v_lshlrev_b32_e32 v24, 16, v36
-; SI-NEXT:    v_readlane_b32 s30, v40, 2
+; SI-NEXT:    v_readlane_b32 s30, v40, 0
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v35
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v34
 ; SI-NEXT:    v_or_b32_e32 v5, v5, v33
@@ -17153,9 +17468,7 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v19, v19, v26
 ; SI-NEXT:    v_or_b32_e32 v21, v21, v25
 ; SI-NEXT:    v_or_b32_e32 v23, v23, v24
-; SI-NEXT:    v_readlane_b32 s31, v40, 3
-; SI-NEXT:    v_readlane_b32 s35, v40, 1
-; SI-NEXT:    v_readlane_b32 s34, v40, 0
+; SI-NEXT:    v_readlane_b32 s31, v40, 1
 ; SI-NEXT:    s_or_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -17177,7 +17490,7 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s14, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s15, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s40, s6, 16
 ; VI-NEXT:    s_lshr_b32 s41, s7, 16
@@ -17203,8 +17516,40 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s77, s18, 16
 ; VI-NEXT:    s_lshr_b32 s78, s17, 16
 ; VI-NEXT:    s_lshr_b32 s79, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v23, s6, 1.0
 ; VI-NEXT:    v_add_f32_e64 v22, s7, 1.0
 ; VI-NEXT:    v_add_f32_e64 v21, s8, 1.0
@@ -17253,34 +17598,8 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v53, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v54, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v55, 16, v0
-; VI-NEXT:    s_branch .LBB33_5
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:    s_branch .LBB33_6
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -17329,7 +17648,7 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v26, s42
 ; VI-NEXT:    v_mov_b32_e32 v25, s41
 ; VI-NEXT:    v_mov_b32_e32 v24, s40
-; VI-NEXT:  .LBB33_5: ; %end
+; VI-NEXT:  .LBB33_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v55, 16, v55
 ; VI-NEXT:    v_lshlrev_b32_e32 v54, 16, v54
 ; VI-NEXT:    v_lshlrev_b32_e32 v53, 16, v53
@@ -17395,7 +17714,7 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s15, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s40, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s41, s7, 16
@@ -17421,8 +17740,40 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s77, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s78, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s79, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v23, s6, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v22, s7, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v21, s8, 1.0
@@ -17471,34 +17822,8 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v53, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v54, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v55, 16, v0
-; GFX9-NEXT:    s_branch .LBB33_5
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:    s_branch .LBB33_6
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -17547,7 +17872,7 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s42
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s41
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s40
-; GFX9-NEXT:  .LBB33_5: ; %end
+; GFX9-NEXT:  .LBB33_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -17609,11 +17934,11 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s10, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s12, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s10, s4, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s6, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s14, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s8, 16
@@ -17636,9 +17961,40 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s72, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s73, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s74, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s10
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-TRUE16-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB33_3
+; GFX11-TRUE16-NEXT:  .LBB33_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-TRUE16-NEXT:  .LBB33_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v23, s4, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v22, s5, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v21, s6, 1.0
@@ -17687,34 +18043,8 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v53, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v54, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v55, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB33_5
-; GFX11-TRUE16-NEXT:  .LBB33_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    s_branch .LBB33_2
-; GFX11-TRUE16-NEXT:  .LBB33_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB33_6
+; GFX11-TRUE16-NEXT:  .LBB33_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -17738,8 +18068,8 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
-; GFX11-TRUE16-NEXT:  .LBB33_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s11 :: v_dual_mov_b32 v24, s10
+; GFX11-TRUE16-NEXT:  .LBB33_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v55.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v54.l
@@ -17778,11 +18108,11 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s8, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s10, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s12, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s10, s4, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s6, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s14, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s8, 16
@@ -17805,9 +18135,40 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s72, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s73, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s74, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s10
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-FAKE16-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB33_3
+; GFX11-FAKE16-NEXT:  .LBB33_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:  .LBB33_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v19, s4, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v20, s5, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v21, s6, 1.0
@@ -17856,34 +18217,8 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v53, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v54, 16, v2
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v55, 16, v3
-; GFX11-FAKE16-NEXT:    s_branch .LBB33_5
-; GFX11-FAKE16-NEXT:  .LBB33_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    s_branch .LBB33_2
-; GFX11-FAKE16-NEXT:  .LBB33_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB33_6
+; GFX11-FAKE16-NEXT:  .LBB33_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, s0 :: v_dual_mov_b32 v2, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v1, s2 :: v_dual_mov_b32 v0, s3
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v8, s16 :: v_dual_mov_b32 v7, s17
@@ -17907,8 +18242,8 @@ define inreg <48 x half> @bitcast_v24f32_to_v48f16_scalar(<24 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v25, s12 :: v_dual_mov_b32 v24, s11
-; GFX11-FAKE16-NEXT:  .LBB33_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v25, s11 :: v_dual_mov_b32 v24, s10
+; GFX11-FAKE16-NEXT:  .LBB33_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v3
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v64, 0xffff, v1
@@ -19162,10 +19497,8 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v32, s67, 17
 ; SI-NEXT:    v_writelane_b32 v32, s68, 18
 ; SI-NEXT:    v_writelane_b32 v32, s69, 19
-; SI-NEXT:    v_writelane_b32 v32, s70, 20
-; SI-NEXT:    v_writelane_b32 v32, s71, 21
-; SI-NEXT:    v_writelane_b32 v32, s30, 22
-; SI-NEXT:    v_writelane_b32 v32, s31, 23
+; SI-NEXT:    v_writelane_b32 v32, s30, 20
+; SI-NEXT:    v_writelane_b32 v32, s31, 21
 ; SI-NEXT:    v_readfirstlane_b32 s6, v9
 ; SI-NEXT:    v_readfirstlane_b32 s8, v8
 ; SI-NEXT:    v_readfirstlane_b32 s10, v7
@@ -19182,14 +19515,14 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s93, s26, 16
 ; SI-NEXT:    s_lshr_b32 s94, s25, 16
 ; SI-NEXT:    s_lshr_b32 s95, s24, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s22, 16
-; SI-NEXT:    s_lshr_b32 s34, s21, 16
-; SI-NEXT:    s_lshr_b32 s35, s20, 16
-; SI-NEXT:    s_lshr_b32 s68, s19, 16
-; SI-NEXT:    s_lshr_b32 s69, s18, 16
-; SI-NEXT:    s_lshr_b32 s70, s17, 16
-; SI-NEXT:    s_lshr_b32 s71, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; SI-NEXT:    s_lshr_b32 s30, s21, 16
+; SI-NEXT:    s_lshr_b32 s31, s20, 16
+; SI-NEXT:    s_lshr_b32 s34, s19, 16
+; SI-NEXT:    s_lshr_b32 s35, s18, 16
+; SI-NEXT:    s_lshr_b32 s68, s17, 16
+; SI-NEXT:    s_lshr_b32 s69, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -19202,31 +19535,31 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s91, s89, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_3
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -19276,11 +19609,20 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s59, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB35_4
-; SI-NEXT:  .LBB35_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s71
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s69
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s68
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -19290,7 +19632,7 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, s35
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v5, s19
@@ -19300,20 +19642,20 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s34
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s31
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s20
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s30
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
@@ -19323,7 +19665,7 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_or_b32_e32 v4, v4, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, vcc_hi
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s22
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
@@ -19332,7 +19674,7 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, vcc_lo
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v6, v8, v6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s23
@@ -19470,11 +19812,8 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v22, v23, v22
 ; SI-NEXT:    v_lshlrev_b32_e32 v23, 16, v24
 ; SI-NEXT:    v_or_b32_e32 v23, v25, v23
-; SI-NEXT:    s_branch .LBB35_5
-; SI-NEXT:  .LBB35_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB35_2
-; SI-NEXT:  .LBB35_4:
+; SI-NEXT:    s_branch .LBB35_6
+; SI-NEXT:  .LBB35_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -19507,11 +19846,9 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB35_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 22
-; SI-NEXT:    v_readlane_b32 s31, v32, 23
-; SI-NEXT:    v_readlane_b32 s71, v32, 21
-; SI-NEXT:    v_readlane_b32 s70, v32, 20
+; SI-NEXT:  .LBB35_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 20
+; SI-NEXT:    v_readlane_b32 s31, v32, 21
 ; SI-NEXT:    v_readlane_b32 s69, v32, 19
 ; SI-NEXT:    v_readlane_b32 s68, v32, 18
 ; SI-NEXT:    v_readlane_b32 s67, v32, 17
@@ -19568,10 +19905,8 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v32, s71, 21
 ; VI-NEXT:    v_writelane_b32 v32, s80, 22
 ; VI-NEXT:    v_writelane_b32 v32, s81, 23
-; VI-NEXT:    v_writelane_b32 v32, s82, 24
-; VI-NEXT:    v_writelane_b32 v32, s83, 25
-; VI-NEXT:    v_writelane_b32 v32, s30, 26
-; VI-NEXT:    v_writelane_b32 v32, s31, 27
+; VI-NEXT:    v_writelane_b32 v32, s30, 24
+; VI-NEXT:    v_writelane_b32 v32, s31, 25
 ; VI-NEXT:    v_readfirstlane_b32 s6, v9
 ; VI-NEXT:    v_readfirstlane_b32 s8, v8
 ; VI-NEXT:    v_readfirstlane_b32 s10, v7
@@ -19581,21 +19916,21 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s76, v3
 ; VI-NEXT:    v_readfirstlane_b32 s79, v2
 ; VI-NEXT:    v_readfirstlane_b32 s91, v1
-; VI-NEXT:    v_readfirstlane_b32 s34, v0
+; VI-NEXT:    v_readfirstlane_b32 s30, v0
 ; VI-NEXT:    s_lshr_b32 s72, s29, 16
 ; VI-NEXT:    s_lshr_b32 s74, s28, 16
 ; VI-NEXT:    s_lshr_b32 s77, s27, 16
 ; VI-NEXT:    s_lshr_b32 s88, s26, 16
 ; VI-NEXT:    s_lshr_b32 s90, s25, 16
-; VI-NEXT:    s_lshr_b32 s31, s24, 16
-; VI-NEXT:    s_lshr_b32 s68, s23, 16
-; VI-NEXT:    s_lshr_b32 s69, s22, 16
-; VI-NEXT:    s_lshr_b32 s70, s21, 16
-; VI-NEXT:    s_lshr_b32 s71, s20, 16
-; VI-NEXT:    s_lshr_b32 s80, s19, 16
-; VI-NEXT:    s_lshr_b32 s81, s18, 16
-; VI-NEXT:    s_lshr_b32 s82, s17, 16
-; VI-NEXT:    s_lshr_b32 s83, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s24, 16
+; VI-NEXT:    s_lshr_b32 s34, s23, 16
+; VI-NEXT:    s_lshr_b32 s35, s22, 16
+; VI-NEXT:    s_lshr_b32 s68, s21, 16
+; VI-NEXT:    s_lshr_b32 s69, s20, 16
+; VI-NEXT:    s_lshr_b32 s70, s19, 16
+; VI-NEXT:    s_lshr_b32 s71, s18, 16
+; VI-NEXT:    s_lshr_b32 s80, s17, 16
+; VI-NEXT:    s_lshr_b32 s81, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -19604,38 +19939,38 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s75, s73, 16
 ; VI-NEXT:    s_lshr_b32 s78, s76, 16
 ; VI-NEXT:    s_lshr_b32 s89, s79, 16
-; VI-NEXT:    s_lshr_b32 s30, s91, 16
-; VI-NEXT:    s_lshr_b32 s35, s34, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s91, 16
+; VI-NEXT:    s_lshr_b32 s31, s30, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v10
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -19652,11 +19987,11 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s79
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
@@ -19682,42 +20017,51 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v23, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s83
-; VI-NEXT:    v_mov_b32_e32 v2, s82
+; VI-NEXT:    v_mov_b32_e32 v0, s81
+; VI-NEXT:    v_mov_b32_e32 v2, s80
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v23
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v23
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s81
+; VI-NEXT:    v_mov_b32_e32 v2, s71
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v23
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s80
+; VI-NEXT:    v_mov_b32_e32 v3, s70
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v23
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s71
+; VI-NEXT:    v_mov_b32_e32 v4, s69
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v23
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s70
+; VI-NEXT:    v_mov_b32_e32 v5, s68
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v23
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s69
+; VI-NEXT:    v_mov_b32_e32 v6, s35
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v23
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s68
+; VI-NEXT:    v_mov_b32_e32 v7, s34
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v23
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s31
+; VI-NEXT:    v_mov_b32_e32 v8, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v23
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
@@ -19741,11 +20085,11 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v23
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s35
+; VI-NEXT:    v_mov_b32_e32 v14, s31
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s34, v23
+; VI-NEXT:    v_add_f16_e32 v15, s30, v23
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s30
+; VI-NEXT:    v_mov_b32_e32 v15, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v16, s91, v23
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
@@ -19781,11 +20125,8 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_sdwa v24, v24, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v23, s6, v23
 ; VI-NEXT:    v_or_b32_e32 v23, v23, v24
-; VI-NEXT:    s_branch .LBB35_5
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:    s_branch .LBB35_6
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -19818,11 +20159,9 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB35_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 26
-; VI-NEXT:    v_readlane_b32 s31, v32, 27
-; VI-NEXT:    v_readlane_b32 s83, v32, 25
-; VI-NEXT:    v_readlane_b32 s82, v32, 24
+; VI-NEXT:  .LBB35_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 24
+; VI-NEXT:    v_readlane_b32 s31, v32, 25
 ; VI-NEXT:    v_readlane_b32 s81, v32, 23
 ; VI-NEXT:    v_readlane_b32 s80, v32, 22
 ; VI-NEXT:    v_readlane_b32 s71, v32, 21
@@ -19931,10 +20270,18 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s62
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s58, s58, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s60
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v23, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v23 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v23 op_sel_hi:[1,0]
@@ -19960,10 +20307,8 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v21, s57, v23 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v22, s58, v23 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v23, s59, v23 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB35_5
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:    s_branch .LBB35_6
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -19996,7 +20341,7 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB35_5: ; %end
+; GFX9-NEXT:  .LBB35_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -20075,11 +20420,16 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s22, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -20105,8 +20455,6 @@ define inreg <24 x float> @bitcast_v48f16_to_v24f32_scalar(<48 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v22, 0x200, s22 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v23, 0x200, s23 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -20330,10 +20678,18 @@ define inreg <12 x double> @bitcast_v12i64_to_v12f64_scalar(<12 x i64> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s14, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s15, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_4
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB37_3
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
@@ -20358,7 +20714,7 @@ define inreg <12 x double> @bitcast_v12i64_to_v12f64_scalar(<12 x i64> inreg %a,
 ; SI-NEXT:    s_addc_u32 s8, s8, 0
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
-; SI-NEXT:  .LBB37_3: ; %end
+; SI-NEXT:  .LBB37_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -20384,8 +20740,6 @@ define inreg <12 x double> @bitcast_v12i64_to_v12f64_scalar(<12 x i64> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v22, s7
 ; SI-NEXT:    v_mov_b32_e32 v23, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB37_4:
-; SI-NEXT:    s_branch .LBB37_2
 ;
 ; VI-LABEL: bitcast_v12i64_to_v12f64_scalar:
 ; VI:       ; %bb.0:
@@ -20402,10 +20756,18 @@ define inreg <12 x double> @bitcast_v12i64_to_v12f64_scalar(<12 x i64> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s14, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s15, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_4
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_3
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -20430,7 +20792,7 @@ define inreg <12 x double> @bitcast_v12i64_to_v12f64_scalar(<12 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s8, s8, 0
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
-; VI-NEXT:  .LBB37_3: ; %end
+; VI-NEXT:  .LBB37_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -20456,8 +20818,6 @@ define inreg <12 x double> @bitcast_v12i64_to_v12f64_scalar(<12 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v22, s7
 ; VI-NEXT:    v_mov_b32_e32 v23, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_4:
-; VI-NEXT:    s_branch .LBB37_2
 ;
 ; GFX9-LABEL: bitcast_v12i64_to_v12f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -20474,10 +20834,18 @@ define inreg <12 x double> @bitcast_v12i64_to_v12f64_scalar(<12 x i64> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s15, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_3
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -20502,7 +20870,7 @@ define inreg <12 x double> @bitcast_v12i64_to_v12f64_scalar(<12 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s8, s8, 0
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
-; GFX9-NEXT:  .LBB37_3: ; %end
+; GFX9-NEXT:  .LBB37_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -20528,8 +20896,6 @@ define inreg <12 x double> @bitcast_v12i64_to_v12f64_scalar(<12 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_4:
-; GFX9-NEXT:    s_branch .LBB37_2
 ;
 ; GFX11-LABEL: bitcast_v12i64_to_v12f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -20543,11 +20909,16 @@ define inreg <12 x double> @bitcast_v12i64_to_v12f64_scalar(<12 x i64> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s10, 0
 ; GFX11-NEXT:    s_mov_b32 s10, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s10
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_3
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s10, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s10, s10, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s10, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s10, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -20572,7 +20943,7 @@ define inreg <12 x double> @bitcast_v12i64_to_v12f64_scalar(<12 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
-; GFX11-NEXT:  .LBB37_3: ; %end
+; GFX11-NEXT:  .LBB37_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -20586,8 +20957,6 @@ define inreg <12 x double> @bitcast_v12i64_to_v12f64_scalar(<12 x i64> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s7 :: v_dual_mov_b32 v21, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s5 :: v_dual_mov_b32 v23, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_4:
-; GFX11-NEXT:    s_branch .LBB37_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -20769,10 +21138,18 @@ define inreg <12 x i64> @bitcast_v12f64_to_v12i64_scalar(<12 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_3
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB39_4
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -20785,10 +21162,8 @@ define inreg <12 x i64> @bitcast_v12f64_to_v12i64_scalar(<12 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; SI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; SI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
-; SI-NEXT:    s_branch .LBB39_5
-; SI-NEXT:  .LBB39_3:
-; SI-NEXT:    s_branch .LBB39_2
-; SI-NEXT:  .LBB39_4:
+; SI-NEXT:    s_branch .LBB39_6
+; SI-NEXT:  .LBB39_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -20821,7 +21196,7 @@ define inreg <12 x i64> @bitcast_v12f64_to_v12i64_scalar(<12 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB39_5: ; %end
+; SI-NEXT:  .LBB39_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -20884,10 +21259,18 @@ define inreg <12 x i64> @bitcast_v12f64_to_v12i64_scalar(<12 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_3
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_4
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -20900,10 +21283,8 @@ define inreg <12 x i64> @bitcast_v12f64_to_v12i64_scalar(<12 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; VI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; VI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
-; VI-NEXT:    s_branch .LBB39_5
-; VI-NEXT:  .LBB39_3:
-; VI-NEXT:    s_branch .LBB39_2
-; VI-NEXT:  .LBB39_4:
+; VI-NEXT:    s_branch .LBB39_6
+; VI-NEXT:  .LBB39_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -20936,7 +21317,7 @@ define inreg <12 x i64> @bitcast_v12f64_to_v12i64_scalar(<12 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB39_5: ; %end
+; VI-NEXT:  .LBB39_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -20999,10 +21380,18 @@ define inreg <12 x i64> @bitcast_v12f64_to_v12i64_scalar(<12 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_4
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -21015,10 +21404,8 @@ define inreg <12 x i64> @bitcast_v12f64_to_v12i64_scalar(<12 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[54:55], 1.0
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; GFX9-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
-; GFX9-NEXT:    s_branch .LBB39_5
-; GFX9-NEXT:  .LBB39_3:
-; GFX9-NEXT:    s_branch .LBB39_2
-; GFX9-NEXT:  .LBB39_4:
+; GFX9-NEXT:    s_branch .LBB39_6
+; GFX9-NEXT:  .LBB39_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -21051,7 +21438,7 @@ define inreg <12 x i64> @bitcast_v12f64_to_v12i64_scalar(<12 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB39_5: ; %end
+; GFX9-NEXT:  .LBB39_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -21115,11 +21502,16 @@ define inreg <12 x i64> @bitcast_v12f64_to_v12i64_scalar(<12 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -21133,8 +21525,6 @@ define inreg <12 x i64> @bitcast_v12f64_to_v12i64_scalar(<12 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; GFX11-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; GFX11-NEXT:    s_branch .LBB39_5
-; GFX11-NEXT:  .LBB39_3:
-; GFX11-NEXT:    s_branch .LBB39_2
 ; GFX11-NEXT:  .LBB39_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -21881,10 +22271,8 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; SI-NEXT:    buffer_store_dword v24, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v24, s34, 0
-; SI-NEXT:    v_writelane_b32 v24, s35, 1
-; SI-NEXT:    v_writelane_b32 v24, s30, 2
-; SI-NEXT:    v_writelane_b32 v24, s31, 3
+; SI-NEXT:    v_writelane_b32 v24, s30, 0
+; SI-NEXT:    v_writelane_b32 v24, s31, 1
 ; SI-NEXT:    v_readfirstlane_b32 s12, v10
 ; SI-NEXT:    v_readfirstlane_b32 s5, v9
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
@@ -21897,7 +22285,7 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s13, v1
 ; SI-NEXT:    s_cmp_lg_u32 s12, 0
 ; SI-NEXT:    v_readfirstlane_b32 s12, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_4
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s88, s5, 16
 ; SI-NEXT:    s_lshr_b32 s89, s7, 16
@@ -21907,10 +22295,10 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s93, s29, 16
 ; SI-NEXT:    s_lshr_b32 s94, s27, 16
 ; SI-NEXT:    s_lshr_b32 s95, s25, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s21, 16
-; SI-NEXT:    s_lshr_b32 s34, s19, 16
-; SI-NEXT:    s_lshr_b32 s35, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s21, 16
+; SI-NEXT:    s_lshr_b32 s30, s19, 16
+; SI-NEXT:    s_lshr_b32 s31, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[8:9], 16
@@ -21923,8 +22311,40 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB41_3
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[78:79], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[78:79], -1
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[78:79], s[78:79], exec
+; SI-NEXT:    s_cselect_b32 s15, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s15, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -21957,10 +22377,10 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s93, s29, 16
 ; SI-NEXT:    s_lshr_b32 s94, s27, 16
 ; SI-NEXT:    s_lshr_b32 s95, s25, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s21, 16
-; SI-NEXT:    s_lshr_b32 s34, s19, 16
-; SI-NEXT:    s_lshr_b32 s35, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s21, 16
+; SI-NEXT:    s_lshr_b32 s30, s19, 16
+; SI-NEXT:    s_lshr_b32 s31, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[8:9], 16
@@ -21973,30 +22393,30 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[16:17], 16
-; SI-NEXT:  .LBB41_3: ; %end
+; SI-NEXT:  .LBB41_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s15, s76, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s15, s16, s15
 ; SI-NEXT:    s_and_b32 s16, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s35, 16
+; SI-NEXT:    s_lshl_b32 s17, s31, 16
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s74, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    s_and_b32 s18, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s19, s34, 16
+; SI-NEXT:    s_lshl_b32 s19, s30, 16
 ; SI-NEXT:    s_or_b32 s18, s18, s19
 ; SI-NEXT:    s_lshl_b32 s19, s72, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s19, s20, s19
 ; SI-NEXT:    s_and_b32 s20, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s21, s31, 16
+; SI-NEXT:    s_lshl_b32 s21, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s20, s20, s21
 ; SI-NEXT:    s_and_b32 s21, s22, 0xffff
 ; SI-NEXT:    s_lshl_b32 s22, s62, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s22
 ; SI-NEXT:    s_and_b32 s22, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s23, s30, 16
+; SI-NEXT:    s_lshl_b32 s23, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s22, s22, s23
 ; SI-NEXT:    s_and_b32 s23, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s24, s60, 16
@@ -22046,7 +22466,7 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s14, s88, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s29
 ; SI-NEXT:    s_or_b32 s5, s5, s14
-; SI-NEXT:    v_readlane_b32 s30, v24, 2
+; SI-NEXT:    v_readlane_b32 s30, v24, 0
 ; SI-NEXT:    v_mov_b32_e32 v0, s15
 ; SI-NEXT:    v_mov_b32_e32 v1, s16
 ; SI-NEXT:    v_mov_b32_e32 v2, s17
@@ -22071,40 +22491,12 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v21, s7
 ; SI-NEXT:    v_mov_b32_e32 v22, s4
 ; SI-NEXT:    v_mov_b32_e32 v23, s5
-; SI-NEXT:    v_readlane_b32 s31, v24, 3
-; SI-NEXT:    v_readlane_b32 s35, v24, 1
-; SI-NEXT:    v_readlane_b32 s34, v24, 0
+; SI-NEXT:    v_readlane_b32 s31, v24, 1
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB41_4:
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    s_branch .LBB41_2
 ;
 ; VI-LABEL: bitcast_v12i64_to_v48i16_scalar:
 ; VI:       ; %bb.0:
@@ -22121,7 +22513,7 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s14, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s15, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_4
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s40, s6, 16
 ; VI-NEXT:    s_lshr_b32 s41, s7, 16
@@ -22147,8 +22539,40 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s77, s18, 16
 ; VI-NEXT:    s_lshr_b32 s78, s17, 16
 ; VI-NEXT:    s_lshr_b32 s79, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB41_3
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -22197,7 +22621,7 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s77, s18, 16
 ; VI-NEXT:    s_lshr_b32 s78, s17, 16
 ; VI-NEXT:    s_lshr_b32 s79, s16, 16
-; VI-NEXT:  .LBB41_3: ; %end
+; VI-NEXT:  .LBB41_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s79, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -22295,32 +22719,6 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v22, s7
 ; VI-NEXT:    v_mov_b32_e32 v23, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_4:
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    s_branch .LBB41_2
 ;
 ; GFX9-LABEL: bitcast_v12i64_to_v48i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -22337,7 +22735,7 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s15, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s40, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s41, s7, 16
@@ -22363,8 +22761,40 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s77, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s78, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s79, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_3
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -22413,7 +22843,7 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s77, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s78, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s79, s16, 16
-; GFX9-NEXT:  .LBB41_3: ; %end
+; GFX9-NEXT:  .LBB41_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s79
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s78
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s77
@@ -22463,32 +22893,6 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    s_branch .LBB41_2
 ;
 ; GFX11-LABEL: bitcast_v12i64_to_v48i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -22502,7 +22906,7 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s10, 0
 ; GFX11-NEXT:    s_mov_b32 s74, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s10, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s11, s5, 16
@@ -22528,9 +22932,40 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s63, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s72, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s73, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s74
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_3
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB41_3
+; GFX11-NEXT:  .LBB41_2:
+; GFX11-NEXT:    s_mov_b32 s74, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:  .LBB41_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s74, s74, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s74, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s74, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -22579,7 +23014,7 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s63, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s72, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s73, s0, 16
-; GFX11-NEXT:  .LBB41_3: ; %end
+; GFX11-NEXT:  .LBB41_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s73
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s72
@@ -22618,32 +23053,6 @@ define inreg <48 x i16> @bitcast_v12i64_to_v48i16_scalar(<12 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s7 :: v_dual_mov_b32 v21, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s5 :: v_dual_mov_b32 v23, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    s_branch .LBB41_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -23736,10 +24145,8 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v24, s67, 17
 ; SI-NEXT:    v_writelane_b32 v24, s68, 18
 ; SI-NEXT:    v_writelane_b32 v24, s69, 19
-; SI-NEXT:    v_writelane_b32 v24, s70, 20
-; SI-NEXT:    v_writelane_b32 v24, s71, 21
-; SI-NEXT:    v_writelane_b32 v24, s30, 22
-; SI-NEXT:    v_writelane_b32 v24, s31, 23
+; SI-NEXT:    v_writelane_b32 v24, s30, 20
+; SI-NEXT:    v_writelane_b32 v24, s31, 21
 ; SI-NEXT:    v_readfirstlane_b32 s7, v9
 ; SI-NEXT:    v_readfirstlane_b32 s9, v8
 ; SI-NEXT:    v_readfirstlane_b32 s11, v7
@@ -23756,14 +24163,14 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s89, s26, 16
 ; SI-NEXT:    s_lshr_b32 s92, s25, 16
 ; SI-NEXT:    s_lshr_b32 s95, s24, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s22, 16
-; SI-NEXT:    s_lshr_b32 s34, s21, 16
-; SI-NEXT:    s_lshr_b32 s35, s20, 16
-; SI-NEXT:    s_lshr_b32 s68, s19, 16
-; SI-NEXT:    s_lshr_b32 s69, s18, 16
-; SI-NEXT:    s_lshr_b32 s70, s17, 16
-; SI-NEXT:    s_lshr_b32 s71, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; SI-NEXT:    s_lshr_b32 s30, s21, 16
+; SI-NEXT:    s_lshr_b32 s31, s20, 16
+; SI-NEXT:    s_lshr_b32 s34, s19, 16
+; SI-NEXT:    s_lshr_b32 s35, s18, 16
+; SI-NEXT:    s_lshr_b32 s68, s17, 16
+; SI-NEXT:    s_lshr_b32 s69, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -23776,31 +24183,31 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s93, s94, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_4
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -23850,46 +24257,55 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s59, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB43_3
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
@@ -23972,8 +24388,8 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s59, s4, 0x30000
-; SI-NEXT:  .LBB43_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v24, 22
+; SI-NEXT:  .LBB43_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v24, 20
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -23998,9 +24414,7 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v21, s57
 ; SI-NEXT:    v_mov_b32_e32 v22, s58
 ; SI-NEXT:    v_mov_b32_e32 v23, s59
-; SI-NEXT:    v_readlane_b32 s31, v24, 23
-; SI-NEXT:    v_readlane_b32 s71, v24, 21
-; SI-NEXT:    v_readlane_b32 s70, v24, 20
+; SI-NEXT:    v_readlane_b32 s31, v24, 21
 ; SI-NEXT:    v_readlane_b32 s69, v24, 19
 ; SI-NEXT:    v_readlane_b32 s68, v24, 18
 ; SI-NEXT:    v_readlane_b32 s67, v24, 17
@@ -24026,9 +24440,6 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB43_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB43_2
 ;
 ; VI-LABEL: bitcast_v48i16_to_v12i64_scalar:
 ; VI:       ; %bb.0:
@@ -24060,10 +24471,8 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    v_writelane_b32 v24, s71, 21
 ; VI-NEXT:    v_writelane_b32 v24, s80, 22
 ; VI-NEXT:    v_writelane_b32 v24, s81, 23
-; VI-NEXT:    v_writelane_b32 v24, s82, 24
-; VI-NEXT:    v_writelane_b32 v24, s83, 25
-; VI-NEXT:    v_writelane_b32 v24, s30, 26
-; VI-NEXT:    v_writelane_b32 v24, s31, 27
+; VI-NEXT:    v_writelane_b32 v24, s30, 24
+; VI-NEXT:    v_writelane_b32 v24, s31, 25
 ; VI-NEXT:    v_readfirstlane_b32 s7, v9
 ; VI-NEXT:    v_readfirstlane_b32 s9, v8
 ; VI-NEXT:    v_readfirstlane_b32 s11, v7
@@ -24073,21 +24482,21 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s77, v3
 ; VI-NEXT:    v_readfirstlane_b32 s88, v2
 ; VI-NEXT:    v_readfirstlane_b32 s91, v1
-; VI-NEXT:    v_readfirstlane_b32 s34, v0
+; VI-NEXT:    v_readfirstlane_b32 s30, v0
 ; VI-NEXT:    s_lshr_b32 s72, s29, 16
 ; VI-NEXT:    s_lshr_b32 s75, s28, 16
 ; VI-NEXT:    s_lshr_b32 s78, s27, 16
 ; VI-NEXT:    s_lshr_b32 s89, s26, 16
-; VI-NEXT:    s_lshr_b32 s30, s25, 16
-; VI-NEXT:    s_lshr_b32 s35, s24, 16
-; VI-NEXT:    s_lshr_b32 s68, s23, 16
-; VI-NEXT:    s_lshr_b32 s69, s22, 16
-; VI-NEXT:    s_lshr_b32 s70, s21, 16
-; VI-NEXT:    s_lshr_b32 s71, s20, 16
-; VI-NEXT:    s_lshr_b32 s80, s19, 16
-; VI-NEXT:    s_lshr_b32 s81, s18, 16
-; VI-NEXT:    s_lshr_b32 s82, s17, 16
-; VI-NEXT:    s_lshr_b32 s83, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s25, 16
+; VI-NEXT:    s_lshr_b32 s31, s24, 16
+; VI-NEXT:    s_lshr_b32 s34, s23, 16
+; VI-NEXT:    s_lshr_b32 s35, s22, 16
+; VI-NEXT:    s_lshr_b32 s68, s21, 16
+; VI-NEXT:    s_lshr_b32 s69, s20, 16
+; VI-NEXT:    s_lshr_b32 s70, s19, 16
+; VI-NEXT:    s_lshr_b32 s71, s18, 16
+; VI-NEXT:    s_lshr_b32 s80, s17, 16
+; VI-NEXT:    s_lshr_b32 s81, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -24097,40 +24506,40 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s76, s77, 16
 ; VI-NEXT:    s_lshr_b32 s79, s88, 16
 ; VI-NEXT:    s_lshr_b32 s90, s91, 16
-; VI-NEXT:    s_lshr_b32 s31, s34, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s30, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v10
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_4
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
@@ -24144,8 +24553,8 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -24174,56 +24583,65 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB43_3
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
@@ -24245,10 +24663,10 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s34, s34, 3
+; VI-NEXT:    s_add_i32 s30, s30, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s34, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_and_b32 s4, s30, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s91, s91, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
@@ -24296,8 +24714,8 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s59, s4, 0x30000
-; VI-NEXT:  .LBB43_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v24, 26
+; VI-NEXT:  .LBB43_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v24, 24
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -24322,9 +24740,7 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v21, s57
 ; VI-NEXT:    v_mov_b32_e32 v22, s58
 ; VI-NEXT:    v_mov_b32_e32 v23, s59
-; VI-NEXT:    v_readlane_b32 s31, v24, 27
-; VI-NEXT:    v_readlane_b32 s83, v24, 25
-; VI-NEXT:    v_readlane_b32 s82, v24, 24
+; VI-NEXT:    v_readlane_b32 s31, v24, 25
 ; VI-NEXT:    v_readlane_b32 s81, v24, 23
 ; VI-NEXT:    v_readlane_b32 s80, v24, 22
 ; VI-NEXT:    v_readlane_b32 s71, v24, 21
@@ -24354,9 +24770,6 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB43_2
 ;
 ; GFX9-LABEL: bitcast_v48i16_to_v12i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -24436,10 +24849,18 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s62
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s58, s58, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s60
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -24464,10 +24885,8 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v21, s57, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v22, s58, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v23, s59, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB43_5
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:    s_branch .LBB43_6
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -24500,7 +24919,7 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB43_5: ; %end
+; GFX9-NEXT:  .LBB43_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -24579,11 +24998,16 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s22, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB43_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -24609,8 +25033,6 @@ define inreg <12 x i64> @bitcast_v48i16_to_v12i64_scalar(<48 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v22, s22, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v23, s23, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_3:
-; GFX11-NEXT:    s_branch .LBB43_2
 ; GFX11-NEXT:  .LBB43_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -25340,10 +25762,8 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; SI-NEXT:    buffer_store_dword v24, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v24, s34, 0
-; SI-NEXT:    v_writelane_b32 v24, s35, 1
-; SI-NEXT:    v_writelane_b32 v24, s30, 2
-; SI-NEXT:    v_writelane_b32 v24, s31, 3
+; SI-NEXT:    v_writelane_b32 v24, s30, 0
+; SI-NEXT:    v_writelane_b32 v24, s31, 1
 ; SI-NEXT:    v_readfirstlane_b32 s12, v10
 ; SI-NEXT:    v_readfirstlane_b32 s5, v9
 ; SI-NEXT:    v_readfirstlane_b32 s4, v8
@@ -25356,7 +25776,7 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s13, v1
 ; SI-NEXT:    s_cmp_lg_u32 s12, 0
 ; SI-NEXT:    v_readfirstlane_b32 s12, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_4
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s88, s5, 16
 ; SI-NEXT:    s_lshr_b32 s89, s7, 16
@@ -25366,10 +25786,10 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s93, s29, 16
 ; SI-NEXT:    s_lshr_b32 s94, s27, 16
 ; SI-NEXT:    s_lshr_b32 s95, s25, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s21, 16
-; SI-NEXT:    s_lshr_b32 s34, s19, 16
-; SI-NEXT:    s_lshr_b32 s35, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s21, 16
+; SI-NEXT:    s_lshr_b32 s30, s19, 16
+; SI-NEXT:    s_lshr_b32 s31, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[8:9], 16
@@ -25382,8 +25802,40 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB45_3
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[78:79], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[78:79], -1
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[78:79], s[78:79], exec
+; SI-NEXT:    s_cselect_b32 s15, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s15, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -25416,10 +25868,10 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s93, s29, 16
 ; SI-NEXT:    s_lshr_b32 s94, s27, 16
 ; SI-NEXT:    s_lshr_b32 s95, s25, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s21, 16
-; SI-NEXT:    s_lshr_b32 s34, s19, 16
-; SI-NEXT:    s_lshr_b32 s35, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s21, 16
+; SI-NEXT:    s_lshr_b32 s30, s19, 16
+; SI-NEXT:    s_lshr_b32 s31, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[8:9], 16
@@ -25432,30 +25884,30 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[16:17], 16
-; SI-NEXT:  .LBB45_3: ; %end
+; SI-NEXT:  .LBB45_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s15, s76, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s15, s16, s15
 ; SI-NEXT:    s_and_b32 s16, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s35, 16
+; SI-NEXT:    s_lshl_b32 s17, s31, 16
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_lshl_b32 s17, s74, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s17, s18, s17
 ; SI-NEXT:    s_and_b32 s18, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s19, s34, 16
+; SI-NEXT:    s_lshl_b32 s19, s30, 16
 ; SI-NEXT:    s_or_b32 s18, s18, s19
 ; SI-NEXT:    s_lshl_b32 s19, s72, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s19, s20, s19
 ; SI-NEXT:    s_and_b32 s20, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s21, s31, 16
+; SI-NEXT:    s_lshl_b32 s21, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s20, s20, s21
 ; SI-NEXT:    s_and_b32 s21, s22, 0xffff
 ; SI-NEXT:    s_lshl_b32 s22, s62, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s22
 ; SI-NEXT:    s_and_b32 s22, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s23, s30, 16
+; SI-NEXT:    s_lshl_b32 s23, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s22, s22, s23
 ; SI-NEXT:    s_and_b32 s23, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s24, s60, 16
@@ -25505,7 +25957,7 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s14, s88, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s29
 ; SI-NEXT:    s_or_b32 s5, s5, s14
-; SI-NEXT:    v_readlane_b32 s30, v24, 2
+; SI-NEXT:    v_readlane_b32 s30, v24, 0
 ; SI-NEXT:    v_mov_b32_e32 v0, s15
 ; SI-NEXT:    v_mov_b32_e32 v1, s16
 ; SI-NEXT:    v_mov_b32_e32 v2, s17
@@ -25530,40 +25982,12 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v21, s7
 ; SI-NEXT:    v_mov_b32_e32 v22, s4
 ; SI-NEXT:    v_mov_b32_e32 v23, s5
-; SI-NEXT:    v_readlane_b32 s31, v24, 3
-; SI-NEXT:    v_readlane_b32 s35, v24, 1
-; SI-NEXT:    v_readlane_b32 s34, v24, 0
+; SI-NEXT:    v_readlane_b32 s31, v24, 1
 ; SI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB45_4:
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    s_branch .LBB45_2
 ;
 ; VI-LABEL: bitcast_v12i64_to_v48f16_scalar:
 ; VI:       ; %bb.0:
@@ -25580,7 +26004,7 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s14, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s15, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_4
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s40, s6, 16
 ; VI-NEXT:    s_lshr_b32 s41, s7, 16
@@ -25606,8 +26030,40 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s77, s18, 16
 ; VI-NEXT:    s_lshr_b32 s78, s17, 16
 ; VI-NEXT:    s_lshr_b32 s79, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB45_3
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -25656,7 +26112,7 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s77, s18, 16
 ; VI-NEXT:    s_lshr_b32 s78, s17, 16
 ; VI-NEXT:    s_lshr_b32 s79, s16, 16
-; VI-NEXT:  .LBB45_3: ; %end
+; VI-NEXT:  .LBB45_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s79, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -25754,32 +26210,6 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v22, s7
 ; VI-NEXT:    v_mov_b32_e32 v23, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_4:
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    s_branch .LBB45_2
 ;
 ; GFX9-LABEL: bitcast_v12i64_to_v48f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -25796,7 +26226,7 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s15, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s40, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s41, s7, 16
@@ -25822,8 +26252,40 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s77, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s78, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s79, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_3
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -25872,7 +26334,7 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s77, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s78, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s79, s16, 16
-; GFX9-NEXT:  .LBB45_3: ; %end
+; GFX9-NEXT:  .LBB45_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s79
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s78
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s77
@@ -25922,32 +26384,6 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    s_branch .LBB45_2
 ;
 ; GFX11-LABEL: bitcast_v12i64_to_v48f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -25961,7 +26397,7 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s10, 0
 ; GFX11-NEXT:    s_mov_b32 s74, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s10, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s11, s5, 16
@@ -25987,9 +26423,40 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s63, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s72, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s73, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s74
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_3
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB45_3
+; GFX11-NEXT:  .LBB45_2:
+; GFX11-NEXT:    s_mov_b32 s74, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:  .LBB45_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s74, s74, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s74, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s74, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -26038,7 +26505,7 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s63, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s72, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s73, s0, 16
-; GFX11-NEXT:  .LBB45_3: ; %end
+; GFX11-NEXT:  .LBB45_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s73
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s72
@@ -26077,32 +26544,6 @@ define inreg <48 x half> @bitcast_v12i64_to_v48f16_scalar(<12 x i64> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v20, s7 :: v_dual_mov_b32 v21, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s5 :: v_dual_mov_b32 v23, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    s_branch .LBB45_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -27307,10 +27748,8 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v32, s67, 17
 ; SI-NEXT:    v_writelane_b32 v32, s68, 18
 ; SI-NEXT:    v_writelane_b32 v32, s69, 19
-; SI-NEXT:    v_writelane_b32 v32, s70, 20
-; SI-NEXT:    v_writelane_b32 v32, s71, 21
-; SI-NEXT:    v_writelane_b32 v32, s30, 22
-; SI-NEXT:    v_writelane_b32 v32, s31, 23
+; SI-NEXT:    v_writelane_b32 v32, s30, 20
+; SI-NEXT:    v_writelane_b32 v32, s31, 21
 ; SI-NEXT:    v_readfirstlane_b32 s6, v9
 ; SI-NEXT:    v_readfirstlane_b32 s8, v8
 ; SI-NEXT:    v_readfirstlane_b32 s10, v7
@@ -27327,14 +27766,14 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s93, s26, 16
 ; SI-NEXT:    s_lshr_b32 s94, s25, 16
 ; SI-NEXT:    s_lshr_b32 s95, s24, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s22, 16
-; SI-NEXT:    s_lshr_b32 s34, s21, 16
-; SI-NEXT:    s_lshr_b32 s35, s20, 16
-; SI-NEXT:    s_lshr_b32 s68, s19, 16
-; SI-NEXT:    s_lshr_b32 s69, s18, 16
-; SI-NEXT:    s_lshr_b32 s70, s17, 16
-; SI-NEXT:    s_lshr_b32 s71, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; SI-NEXT:    s_lshr_b32 s30, s21, 16
+; SI-NEXT:    s_lshr_b32 s31, s20, 16
+; SI-NEXT:    s_lshr_b32 s34, s19, 16
+; SI-NEXT:    s_lshr_b32 s35, s18, 16
+; SI-NEXT:    s_lshr_b32 s68, s17, 16
+; SI-NEXT:    s_lshr_b32 s69, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -27347,31 +27786,31 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s91, s89, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB47_3
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -27421,11 +27860,20 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s59, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB47_4
-; SI-NEXT:  .LBB47_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s71
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s69
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s68
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -27435,7 +27883,7 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, s35
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v5, s19
@@ -27445,20 +27893,20 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s34
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s31
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s20
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s30
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
@@ -27468,7 +27916,7 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_or_b32_e32 v4, v4, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, vcc_hi
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s22
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
@@ -27477,7 +27925,7 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, vcc_lo
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v6, v8, v6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s23
@@ -27615,11 +28063,8 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v22, v23, v22
 ; SI-NEXT:    v_lshlrev_b32_e32 v23, 16, v24
 ; SI-NEXT:    v_or_b32_e32 v23, v25, v23
-; SI-NEXT:    s_branch .LBB47_5
-; SI-NEXT:  .LBB47_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB47_2
-; SI-NEXT:  .LBB47_4:
+; SI-NEXT:    s_branch .LBB47_6
+; SI-NEXT:  .LBB47_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -27652,11 +28097,9 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB47_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 22
-; SI-NEXT:    v_readlane_b32 s31, v32, 23
-; SI-NEXT:    v_readlane_b32 s71, v32, 21
-; SI-NEXT:    v_readlane_b32 s70, v32, 20
+; SI-NEXT:  .LBB47_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 20
+; SI-NEXT:    v_readlane_b32 s31, v32, 21
 ; SI-NEXT:    v_readlane_b32 s69, v32, 19
 ; SI-NEXT:    v_readlane_b32 s68, v32, 18
 ; SI-NEXT:    v_readlane_b32 s67, v32, 17
@@ -27713,10 +28156,8 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    v_writelane_b32 v32, s71, 21
 ; VI-NEXT:    v_writelane_b32 v32, s80, 22
 ; VI-NEXT:    v_writelane_b32 v32, s81, 23
-; VI-NEXT:    v_writelane_b32 v32, s82, 24
-; VI-NEXT:    v_writelane_b32 v32, s83, 25
-; VI-NEXT:    v_writelane_b32 v32, s30, 26
-; VI-NEXT:    v_writelane_b32 v32, s31, 27
+; VI-NEXT:    v_writelane_b32 v32, s30, 24
+; VI-NEXT:    v_writelane_b32 v32, s31, 25
 ; VI-NEXT:    v_readfirstlane_b32 s6, v9
 ; VI-NEXT:    v_readfirstlane_b32 s8, v8
 ; VI-NEXT:    v_readfirstlane_b32 s10, v7
@@ -27726,21 +28167,21 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s76, v3
 ; VI-NEXT:    v_readfirstlane_b32 s79, v2
 ; VI-NEXT:    v_readfirstlane_b32 s91, v1
-; VI-NEXT:    v_readfirstlane_b32 s34, v0
+; VI-NEXT:    v_readfirstlane_b32 s30, v0
 ; VI-NEXT:    s_lshr_b32 s72, s29, 16
 ; VI-NEXT:    s_lshr_b32 s74, s28, 16
 ; VI-NEXT:    s_lshr_b32 s77, s27, 16
 ; VI-NEXT:    s_lshr_b32 s88, s26, 16
 ; VI-NEXT:    s_lshr_b32 s90, s25, 16
-; VI-NEXT:    s_lshr_b32 s31, s24, 16
-; VI-NEXT:    s_lshr_b32 s68, s23, 16
-; VI-NEXT:    s_lshr_b32 s69, s22, 16
-; VI-NEXT:    s_lshr_b32 s70, s21, 16
-; VI-NEXT:    s_lshr_b32 s71, s20, 16
-; VI-NEXT:    s_lshr_b32 s80, s19, 16
-; VI-NEXT:    s_lshr_b32 s81, s18, 16
-; VI-NEXT:    s_lshr_b32 s82, s17, 16
-; VI-NEXT:    s_lshr_b32 s83, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s24, 16
+; VI-NEXT:    s_lshr_b32 s34, s23, 16
+; VI-NEXT:    s_lshr_b32 s35, s22, 16
+; VI-NEXT:    s_lshr_b32 s68, s21, 16
+; VI-NEXT:    s_lshr_b32 s69, s20, 16
+; VI-NEXT:    s_lshr_b32 s70, s19, 16
+; VI-NEXT:    s_lshr_b32 s71, s18, 16
+; VI-NEXT:    s_lshr_b32 s80, s17, 16
+; VI-NEXT:    s_lshr_b32 s81, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -27749,38 +28190,38 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s75, s73, 16
 ; VI-NEXT:    s_lshr_b32 s78, s76, 16
 ; VI-NEXT:    s_lshr_b32 s89, s79, 16
-; VI-NEXT:    s_lshr_b32 s30, s91, 16
-; VI-NEXT:    s_lshr_b32 s35, s34, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s91, 16
+; VI-NEXT:    s_lshr_b32 s31, s30, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v10
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -27797,11 +28238,11 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s79
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
@@ -27827,42 +28268,51 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v23, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s83
-; VI-NEXT:    v_mov_b32_e32 v2, s82
+; VI-NEXT:    v_mov_b32_e32 v0, s81
+; VI-NEXT:    v_mov_b32_e32 v2, s80
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v23
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v23
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s81
+; VI-NEXT:    v_mov_b32_e32 v2, s71
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v23
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s80
+; VI-NEXT:    v_mov_b32_e32 v3, s70
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v23
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s71
+; VI-NEXT:    v_mov_b32_e32 v4, s69
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v23
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s70
+; VI-NEXT:    v_mov_b32_e32 v5, s68
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v23
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s69
+; VI-NEXT:    v_mov_b32_e32 v6, s35
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v23
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s68
+; VI-NEXT:    v_mov_b32_e32 v7, s34
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v23
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s31
+; VI-NEXT:    v_mov_b32_e32 v8, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v23
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
@@ -27886,11 +28336,11 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v23
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s35
+; VI-NEXT:    v_mov_b32_e32 v14, s31
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s34, v23
+; VI-NEXT:    v_add_f16_e32 v15, s30, v23
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s30
+; VI-NEXT:    v_mov_b32_e32 v15, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v16, s91, v23
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
@@ -27926,11 +28376,8 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v24, v24, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v23, s6, v23
 ; VI-NEXT:    v_or_b32_e32 v23, v23, v24
-; VI-NEXT:    s_branch .LBB47_5
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:    s_branch .LBB47_6
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -27963,11 +28410,9 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB47_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 26
-; VI-NEXT:    v_readlane_b32 s31, v32, 27
-; VI-NEXT:    v_readlane_b32 s83, v32, 25
-; VI-NEXT:    v_readlane_b32 s82, v32, 24
+; VI-NEXT:  .LBB47_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 24
+; VI-NEXT:    v_readlane_b32 s31, v32, 25
 ; VI-NEXT:    v_readlane_b32 s81, v32, 23
 ; VI-NEXT:    v_readlane_b32 s80, v32, 22
 ; VI-NEXT:    v_readlane_b32 s71, v32, 21
@@ -28076,10 +28521,18 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s62
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s58, s58, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s60
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v23, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v23 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v23 op_sel_hi:[1,0]
@@ -28105,10 +28558,8 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v21, s57, v23 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v22, s58, v23 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v23, s59, v23 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB47_5
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:    s_branch .LBB47_6
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -28141,7 +28592,7 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB47_5: ; %end
+; GFX9-NEXT:  .LBB47_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -28220,11 +28671,16 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s22, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB47_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -28250,8 +28706,6 @@ define inreg <12 x i64> @bitcast_v48f16_to_v12i64_scalar(<48 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v22, 0x200, s22 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v23, 0x200, s23 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB47_3:
-; GFX11-NEXT:    s_branch .LBB47_2
 ; GFX11-NEXT:  .LBB47_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -28909,10 +29363,8 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; SI-NEXT:    buffer_store_dword v40, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v40, s34, 0
-; SI-NEXT:    v_writelane_b32 v40, s35, 1
-; SI-NEXT:    v_writelane_b32 v40, s30, 2
-; SI-NEXT:    v_writelane_b32 v40, s31, 3
+; SI-NEXT:    v_writelane_b32 v40, s30, 0
+; SI-NEXT:    v_writelane_b32 v40, s31, 1
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
 ; SI-NEXT:    v_readfirstlane_b32 s13, v9
 ; SI-NEXT:    v_readfirstlane_b32 s12, v8
@@ -28925,12 +29377,12 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_3
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s35, s13, 16
-; SI-NEXT:    s_lshr_b32 s34, s11, 16
-; SI-NEXT:    s_lshr_b32 s31, s9, 16
-; SI-NEXT:    s_lshr_b32 s30, s7, 16
+; SI-NEXT:    s_lshr_b32 s31, s13, 16
+; SI-NEXT:    s_lshr_b32 s30, s11, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s9, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s7, 16
 ; SI-NEXT:    s_lshr_b32 s95, s5, 16
 ; SI-NEXT:    s_lshr_b32 s94, s29, 16
 ; SI-NEXT:    s_lshr_b32 s93, s27, 16
@@ -28951,8 +29403,40 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB49_4
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[78:79], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[78:79], -1
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[78:79], s[78:79], exec
+; SI-NEXT:    s_cselect_b32 s15, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s15, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[22:23], s[12:13], 1.0
 ; SI-NEXT:    v_add_f64 v[20:21], s[10:11], 1.0
 ; SI-NEXT:    v_add_f64 v[18:19], s[8:9], 1.0
@@ -28989,34 +29473,8 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v54, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v55, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v36, 16, v1
-; SI-NEXT:    s_branch .LBB49_5
-; SI-NEXT:  .LBB49_3:
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    s_branch .LBB49_2
-; SI-NEXT:  .LBB49_4:
+; SI-NEXT:    s_branch .LBB49_6
+; SI-NEXT:  .LBB49_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
@@ -29041,10 +29499,10 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v18, s8
 ; SI-NEXT:    v_mov_b32_e32 v20, s10
 ; SI-NEXT:    v_mov_b32_e32 v22, s12
-; SI-NEXT:    v_mov_b32_e32 v37, s35
-; SI-NEXT:    v_mov_b32_e32 v38, s34
-; SI-NEXT:    v_mov_b32_e32 v39, s31
-; SI-NEXT:    v_mov_b32_e32 v48, s30
+; SI-NEXT:    v_mov_b32_e32 v37, s31
+; SI-NEXT:    v_mov_b32_e32 v38, s30
+; SI-NEXT:    v_mov_b32_e32 v39, vcc_hi
+; SI-NEXT:    v_mov_b32_e32 v48, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v49, s95
 ; SI-NEXT:    v_mov_b32_e32 v50, s94
 ; SI-NEXT:    v_mov_b32_e32 v51, s93
@@ -29065,7 +29523,7 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v26, s42
 ; SI-NEXT:    v_mov_b32_e32 v25, s40
 ; SI-NEXT:    v_mov_b32_e32 v24, s14
-; SI-NEXT:  .LBB49_5: ; %end
+; SI-NEXT:  .LBB49_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v35, 16, v35
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -29126,7 +29584,7 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v22, v22, v24
 ; SI-NEXT:    v_and_b32_e32 v23, 0xffff, v23
 ; SI-NEXT:    v_lshlrev_b32_e32 v24, 16, v37
-; SI-NEXT:    v_readlane_b32 s30, v40, 2
+; SI-NEXT:    v_readlane_b32 s30, v40, 0
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v35
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v34
 ; SI-NEXT:    v_or_b32_e32 v5, v5, v33
@@ -29139,9 +29597,7 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v19, v19, v26
 ; SI-NEXT:    v_or_b32_e32 v21, v21, v25
 ; SI-NEXT:    v_or_b32_e32 v23, v23, v24
-; SI-NEXT:    v_readlane_b32 s31, v40, 3
-; SI-NEXT:    v_readlane_b32 s35, v40, 1
-; SI-NEXT:    v_readlane_b32 s34, v40, 0
+; SI-NEXT:    v_readlane_b32 s31, v40, 1
 ; SI-NEXT:    s_or_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -29163,7 +29619,7 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s5, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_3
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s40, s9, 16
 ; VI-NEXT:    s_lshr_b32 s60, s8, 16
@@ -29189,8 +29645,40 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s78, s18, 16
 ; VI-NEXT:    s_lshr_b32 s59, s17, 16
 ; VI-NEXT:    s_lshr_b32 s79, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB49_4
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[14:15], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[14:15], -1
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; VI-NEXT:    s_cselect_b32 s14, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s14, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[22:23], s[8:9], 1.0
 ; VI-NEXT:    v_add_f64 v[20:21], s[10:11], 1.0
 ; VI-NEXT:    v_add_f64 v[18:19], s[12:13], 1.0
@@ -29227,34 +29715,8 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v51, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v55, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v53, 16, v0
-; VI-NEXT:    s_branch .LBB49_5
-; VI-NEXT:  .LBB49_3:
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    s_branch .LBB49_2
-; VI-NEXT:  .LBB49_4:
+; VI-NEXT:    s_branch .LBB49_6
+; VI-NEXT:  .LBB49_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
@@ -29303,7 +29765,7 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v30, s42
 ; VI-NEXT:    v_mov_b32_e32 v28, s41
 ; VI-NEXT:    v_mov_b32_e32 v26, s40
-; VI-NEXT:  .LBB49_5: ; %end
+; VI-NEXT:  .LBB49_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v53, 16, v53
 ; VI-NEXT:    v_lshlrev_b32_e32 v51, 16, v51
 ; VI-NEXT:    v_lshlrev_b32_e32 v49, 16, v49
@@ -29369,7 +29831,7 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s40, s9, 16
 ; GFX9-NEXT:    s_lshr_b32 s60, s8, 16
@@ -29395,46 +29857,10 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s78, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s79, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
-; GFX9-NEXT:    v_add_f64 v[22:23], s[8:9], 1.0
-; GFX9-NEXT:    v_add_f64 v[20:21], s[10:11], 1.0
-; GFX9-NEXT:    v_add_f64 v[18:19], s[12:13], 1.0
-; GFX9-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
-; GFX9-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
-; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
-; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
-; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
-; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
-; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
-; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
-; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; GFX9-NEXT:    v_lshrrev_b32_e32 v26, 16, v23
-; GFX9-NEXT:    v_lshrrev_b32_e32 v24, 16, v22
-; GFX9-NEXT:    v_lshrrev_b32_e32 v28, 16, v21
-; GFX9-NEXT:    v_lshrrev_b32_e32 v25, 16, v20
-; GFX9-NEXT:    v_lshrrev_b32_e32 v30, 16, v19
-; GFX9-NEXT:    v_lshrrev_b32_e32 v27, 16, v18
-; GFX9-NEXT:    v_lshrrev_b32_e32 v32, 16, v17
-; GFX9-NEXT:    v_lshrrev_b32_e32 v29, 16, v16
-; GFX9-NEXT:    v_lshrrev_b32_e32 v34, 16, v15
-; GFX9-NEXT:    v_lshrrev_b32_e32 v31, 16, v14
-; GFX9-NEXT:    v_lshrrev_b32_e32 v36, 16, v13
-; GFX9-NEXT:    v_lshrrev_b32_e32 v33, 16, v12
-; GFX9-NEXT:    v_lshrrev_b32_e32 v37, 16, v11
-; GFX9-NEXT:    v_lshrrev_b32_e32 v35, 16, v10
-; GFX9-NEXT:    v_lshrrev_b32_e32 v39, 16, v9
-; GFX9-NEXT:    v_lshrrev_b32_e32 v38, 16, v8
-; GFX9-NEXT:    v_lshrrev_b32_e32 v50, 16, v7
-; GFX9-NEXT:    v_lshrrev_b32_e32 v48, 16, v6
-; GFX9-NEXT:    v_lshrrev_b32_e32 v52, 16, v5
-; GFX9-NEXT:    v_lshrrev_b32_e32 v49, 16, v4
-; GFX9-NEXT:    v_lshrrev_b32_e32 v54, 16, v3
-; GFX9-NEXT:    v_lshrrev_b32_e32 v51, 16, v2
-; GFX9-NEXT:    v_lshrrev_b32_e32 v55, 16, v1
-; GFX9-NEXT:    v_lshrrev_b32_e32 v53, 16, v0
-; GFX9-NEXT:    s_branch .LBB49_5
-; GFX9-NEXT:  .LBB49_3:
+; GFX9-NEXT:    s_mov_b64 s[14:15], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[14:15], -1
 ; GFX9-NEXT:    ; implicit-def: $sgpr79
 ; GFX9-NEXT:    ; implicit-def: $sgpr59
 ; GFX9-NEXT:    ; implicit-def: $sgpr78
@@ -29459,8 +29885,50 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; GFX9-NEXT:    ; implicit-def: $sgpr41
 ; GFX9-NEXT:    ; implicit-def: $sgpr60
 ; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; GFX9-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
+; GFX9-NEXT:    v_add_f64 v[22:23], s[8:9], 1.0
+; GFX9-NEXT:    v_add_f64 v[20:21], s[10:11], 1.0
+; GFX9-NEXT:    v_add_f64 v[18:19], s[12:13], 1.0
+; GFX9-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
+; GFX9-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
+; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
+; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
+; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
+; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
+; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
+; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
+; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
+; GFX9-NEXT:    v_lshrrev_b32_e32 v26, 16, v23
+; GFX9-NEXT:    v_lshrrev_b32_e32 v24, 16, v22
+; GFX9-NEXT:    v_lshrrev_b32_e32 v28, 16, v21
+; GFX9-NEXT:    v_lshrrev_b32_e32 v25, 16, v20
+; GFX9-NEXT:    v_lshrrev_b32_e32 v30, 16, v19
+; GFX9-NEXT:    v_lshrrev_b32_e32 v27, 16, v18
+; GFX9-NEXT:    v_lshrrev_b32_e32 v32, 16, v17
+; GFX9-NEXT:    v_lshrrev_b32_e32 v29, 16, v16
+; GFX9-NEXT:    v_lshrrev_b32_e32 v34, 16, v15
+; GFX9-NEXT:    v_lshrrev_b32_e32 v31, 16, v14
+; GFX9-NEXT:    v_lshrrev_b32_e32 v36, 16, v13
+; GFX9-NEXT:    v_lshrrev_b32_e32 v33, 16, v12
+; GFX9-NEXT:    v_lshrrev_b32_e32 v37, 16, v11
+; GFX9-NEXT:    v_lshrrev_b32_e32 v35, 16, v10
+; GFX9-NEXT:    v_lshrrev_b32_e32 v39, 16, v9
+; GFX9-NEXT:    v_lshrrev_b32_e32 v38, 16, v8
+; GFX9-NEXT:    v_lshrrev_b32_e32 v50, 16, v7
+; GFX9-NEXT:    v_lshrrev_b32_e32 v48, 16, v6
+; GFX9-NEXT:    v_lshrrev_b32_e32 v52, 16, v5
+; GFX9-NEXT:    v_lshrrev_b32_e32 v49, 16, v4
+; GFX9-NEXT:    v_lshrrev_b32_e32 v54, 16, v3
+; GFX9-NEXT:    v_lshrrev_b32_e32 v51, 16, v2
+; GFX9-NEXT:    v_lshrrev_b32_e32 v55, 16, v1
+; GFX9-NEXT:    v_lshrrev_b32_e32 v53, 16, v0
+; GFX9-NEXT:    s_branch .LBB49_6
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
@@ -29509,7 +29977,7 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s42
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s41
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s40
-; GFX9-NEXT:  .LBB49_5: ; %end
+; GFX9-NEXT:  .LBB49_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -29571,12 +30039,12 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s9, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s8, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s10, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s7, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s10, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s47, s6, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s12, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s56, s4, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s9, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s57, s8, 16
@@ -29598,9 +30066,40 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s73, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s74, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s10
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-TRUE16-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB49_3
+; GFX11-TRUE16-NEXT:  .LBB49_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-TRUE16-NEXT:  .LBB49_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[22:23], s[6:7], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[20:21], s[4:5], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[18:19], s[8:9], 1.0
@@ -29637,34 +30136,8 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v51, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v55, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v53, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB49_5
-; GFX11-TRUE16-NEXT:  .LBB49_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    s_branch .LBB49_2
-; GFX11-TRUE16-NEXT:  .LBB49_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB49_6
+; GFX11-TRUE16-NEXT:  .LBB49_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -29687,9 +30160,9 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s59 :: v_dual_mov_b32 v34, s15
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s58 :: v_dual_mov_b32 v32, s14
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s57 :: v_dual_mov_b32 v30, s13
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s56 :: v_dual_mov_b32 v28, s12
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v55, s46 :: v_dual_mov_b32 v26, s11
-; GFX11-TRUE16-NEXT:  .LBB49_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s56 :: v_dual_mov_b32 v28, s11
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v55, s46 :: v_dual_mov_b32 v26, s10
+; GFX11-TRUE16-NEXT:  .LBB49_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v53.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v55.l
@@ -29728,12 +30201,12 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s9, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s8, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s10, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s7, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s10, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s47, s6, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s12, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s56, s4, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s9, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s57, s8, 16
@@ -29755,9 +30228,40 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s73, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s74, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s10
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-FAKE16-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB49_3
+; GFX11-FAKE16-NEXT:  .LBB49_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:  .LBB49_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[19:20], s[6:7], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[21:22], s[4:5], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[23:24], s[8:9], 1.0
@@ -29794,34 +30298,8 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v52, 16, v0
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v55, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v53, 16, v2
-; GFX11-FAKE16-NEXT:    s_branch .LBB49_5
-; GFX11-FAKE16-NEXT:  .LBB49_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    s_branch .LBB49_2
-; GFX11-FAKE16-NEXT:  .LBB49_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB49_6
+; GFX11-FAKE16-NEXT:  .LBB49_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v25, s20
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v11, s22
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v6, s16 :: v_dual_mov_b32 v9, s24
@@ -29845,8 +30323,8 @@ define inreg <48 x i16> @bitcast_v12f64_to_v48i16_scalar(<12 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v50, s43 :: v_dual_mov_b32 v37, s40
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v38, s41 :: v_dual_mov_b32 v35, s15
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v34, s14 :: v_dual_mov_b32 v31, s13
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v30, s12 :: v_dual_mov_b32 v29, s11
-; GFX11-FAKE16-NEXT:  .LBB49_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v30, s11 :: v_dual_mov_b32 v29, s10
+; GFX11-FAKE16-NEXT:  .LBB49_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v25, 0xffff, v25
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v64, 0xffff, v0
@@ -30988,10 +31466,8 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v24, s67, 17
 ; SI-NEXT:    v_writelane_b32 v24, s68, 18
 ; SI-NEXT:    v_writelane_b32 v24, s69, 19
-; SI-NEXT:    v_writelane_b32 v24, s70, 20
-; SI-NEXT:    v_writelane_b32 v24, s71, 21
-; SI-NEXT:    v_writelane_b32 v24, s30, 22
-; SI-NEXT:    v_writelane_b32 v24, s31, 23
+; SI-NEXT:    v_writelane_b32 v24, s30, 20
+; SI-NEXT:    v_writelane_b32 v24, s31, 21
 ; SI-NEXT:    v_readfirstlane_b32 s7, v9
 ; SI-NEXT:    v_readfirstlane_b32 s9, v8
 ; SI-NEXT:    v_readfirstlane_b32 s11, v7
@@ -31008,14 +31484,14 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s89, s26, 16
 ; SI-NEXT:    s_lshr_b32 s92, s25, 16
 ; SI-NEXT:    s_lshr_b32 s95, s24, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s22, 16
-; SI-NEXT:    s_lshr_b32 s34, s21, 16
-; SI-NEXT:    s_lshr_b32 s35, s20, 16
-; SI-NEXT:    s_lshr_b32 s68, s19, 16
-; SI-NEXT:    s_lshr_b32 s69, s18, 16
-; SI-NEXT:    s_lshr_b32 s70, s17, 16
-; SI-NEXT:    s_lshr_b32 s71, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; SI-NEXT:    s_lshr_b32 s30, s21, 16
+; SI-NEXT:    s_lshr_b32 s31, s20, 16
+; SI-NEXT:    s_lshr_b32 s34, s19, 16
+; SI-NEXT:    s_lshr_b32 s35, s18, 16
+; SI-NEXT:    s_lshr_b32 s68, s17, 16
+; SI-NEXT:    s_lshr_b32 s69, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -31028,31 +31504,31 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s93, s94, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -31102,46 +31578,55 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s59, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
@@ -31224,8 +31709,8 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s59, s4, 0x30000
-; SI-NEXT:  .LBB51_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v24, 22
+; SI-NEXT:  .LBB51_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v24, 20
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -31250,9 +31735,7 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v21, s57
 ; SI-NEXT:    v_mov_b32_e32 v22, s58
 ; SI-NEXT:    v_mov_b32_e32 v23, s59
-; SI-NEXT:    v_readlane_b32 s31, v24, 23
-; SI-NEXT:    v_readlane_b32 s71, v24, 21
-; SI-NEXT:    v_readlane_b32 s70, v24, 20
+; SI-NEXT:    v_readlane_b32 s31, v24, 21
 ; SI-NEXT:    v_readlane_b32 s69, v24, 19
 ; SI-NEXT:    v_readlane_b32 s68, v24, 18
 ; SI-NEXT:    v_readlane_b32 s67, v24, 17
@@ -31278,9 +31761,6 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v48i16_to_v12f64_scalar:
 ; VI:       ; %bb.0:
@@ -31312,10 +31792,8 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v24, s71, 21
 ; VI-NEXT:    v_writelane_b32 v24, s80, 22
 ; VI-NEXT:    v_writelane_b32 v24, s81, 23
-; VI-NEXT:    v_writelane_b32 v24, s82, 24
-; VI-NEXT:    v_writelane_b32 v24, s83, 25
-; VI-NEXT:    v_writelane_b32 v24, s30, 26
-; VI-NEXT:    v_writelane_b32 v24, s31, 27
+; VI-NEXT:    v_writelane_b32 v24, s30, 24
+; VI-NEXT:    v_writelane_b32 v24, s31, 25
 ; VI-NEXT:    v_readfirstlane_b32 s7, v9
 ; VI-NEXT:    v_readfirstlane_b32 s9, v8
 ; VI-NEXT:    v_readfirstlane_b32 s11, v7
@@ -31325,21 +31803,21 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s77, v3
 ; VI-NEXT:    v_readfirstlane_b32 s88, v2
 ; VI-NEXT:    v_readfirstlane_b32 s91, v1
-; VI-NEXT:    v_readfirstlane_b32 s34, v0
+; VI-NEXT:    v_readfirstlane_b32 s30, v0
 ; VI-NEXT:    s_lshr_b32 s72, s29, 16
 ; VI-NEXT:    s_lshr_b32 s75, s28, 16
 ; VI-NEXT:    s_lshr_b32 s78, s27, 16
 ; VI-NEXT:    s_lshr_b32 s89, s26, 16
-; VI-NEXT:    s_lshr_b32 s30, s25, 16
-; VI-NEXT:    s_lshr_b32 s35, s24, 16
-; VI-NEXT:    s_lshr_b32 s68, s23, 16
-; VI-NEXT:    s_lshr_b32 s69, s22, 16
-; VI-NEXT:    s_lshr_b32 s70, s21, 16
-; VI-NEXT:    s_lshr_b32 s71, s20, 16
-; VI-NEXT:    s_lshr_b32 s80, s19, 16
-; VI-NEXT:    s_lshr_b32 s81, s18, 16
-; VI-NEXT:    s_lshr_b32 s82, s17, 16
-; VI-NEXT:    s_lshr_b32 s83, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s25, 16
+; VI-NEXT:    s_lshr_b32 s31, s24, 16
+; VI-NEXT:    s_lshr_b32 s34, s23, 16
+; VI-NEXT:    s_lshr_b32 s35, s22, 16
+; VI-NEXT:    s_lshr_b32 s68, s21, 16
+; VI-NEXT:    s_lshr_b32 s69, s20, 16
+; VI-NEXT:    s_lshr_b32 s70, s19, 16
+; VI-NEXT:    s_lshr_b32 s71, s18, 16
+; VI-NEXT:    s_lshr_b32 s80, s17, 16
+; VI-NEXT:    s_lshr_b32 s81, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -31349,40 +31827,40 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s76, s77, 16
 ; VI-NEXT:    s_lshr_b32 s79, s88, 16
 ; VI-NEXT:    s_lshr_b32 s90, s91, 16
-; VI-NEXT:    s_lshr_b32 s31, s34, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s30, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v10
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
@@ -31396,8 +31874,8 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -31426,56 +31904,65 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
@@ -31497,10 +31984,10 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s34, s34, 3
+; VI-NEXT:    s_add_i32 s30, s30, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s34, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_and_b32 s4, s30, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s91, s91, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
@@ -31548,8 +32035,8 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s59, s4, 0x30000
-; VI-NEXT:  .LBB51_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v24, 26
+; VI-NEXT:  .LBB51_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v24, 24
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -31574,9 +32061,7 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v21, s57
 ; VI-NEXT:    v_mov_b32_e32 v22, s58
 ; VI-NEXT:    v_mov_b32_e32 v23, s59
-; VI-NEXT:    v_readlane_b32 s31, v24, 27
-; VI-NEXT:    v_readlane_b32 s83, v24, 25
-; VI-NEXT:    v_readlane_b32 s82, v24, 24
+; VI-NEXT:    v_readlane_b32 s31, v24, 25
 ; VI-NEXT:    v_readlane_b32 s81, v24, 23
 ; VI-NEXT:    v_readlane_b32 s80, v24, 22
 ; VI-NEXT:    v_readlane_b32 s71, v24, 21
@@ -31606,9 +32091,6 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v48i16_to_v12f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -31688,10 +32170,18 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s62
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s58, s58, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s60
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_4
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -31716,10 +32206,8 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v21, s57, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v22, s58, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v23, s59, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB51_5
-; GFX9-NEXT:  .LBB51_3:
-; GFX9-NEXT:    s_branch .LBB51_2
-; GFX9-NEXT:  .LBB51_4:
+; GFX9-NEXT:    s_branch .LBB51_6
+; GFX9-NEXT:  .LBB51_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -31752,7 +32240,7 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB51_5: ; %end
+; GFX9-NEXT:  .LBB51_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -31831,11 +32319,16 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s22, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB51_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB51_4
-; GFX11-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB51_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -31861,8 +32354,6 @@ define inreg <12 x double> @bitcast_v48i16_to_v12f64_scalar(<48 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v22, s22, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v23, s23, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB51_3:
-; GFX11-NEXT:    s_branch .LBB51_2
 ; GFX11-NEXT:  .LBB51_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -32520,10 +33011,8 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; SI-NEXT:    buffer_store_dword v40, off, s[0:3], s32 ; 4-byte Folded Spill
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v40, s34, 0
-; SI-NEXT:    v_writelane_b32 v40, s35, 1
-; SI-NEXT:    v_writelane_b32 v40, s30, 2
-; SI-NEXT:    v_writelane_b32 v40, s31, 3
+; SI-NEXT:    v_writelane_b32 v40, s30, 0
+; SI-NEXT:    v_writelane_b32 v40, s31, 1
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
 ; SI-NEXT:    v_readfirstlane_b32 s13, v9
 ; SI-NEXT:    v_readfirstlane_b32 s12, v8
@@ -32536,12 +33025,12 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_3
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s35, s13, 16
-; SI-NEXT:    s_lshr_b32 s34, s11, 16
-; SI-NEXT:    s_lshr_b32 s31, s9, 16
-; SI-NEXT:    s_lshr_b32 s30, s7, 16
+; SI-NEXT:    s_lshr_b32 s31, s13, 16
+; SI-NEXT:    s_lshr_b32 s30, s11, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s9, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s7, 16
 ; SI-NEXT:    s_lshr_b32 s95, s5, 16
 ; SI-NEXT:    s_lshr_b32 s94, s29, 16
 ; SI-NEXT:    s_lshr_b32 s93, s27, 16
@@ -32562,8 +33051,40 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB53_4
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[78:79], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[78:79], -1
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr89
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr91
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[78:79], s[78:79], exec
+; SI-NEXT:    s_cselect_b32 s15, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s15, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[22:23], s[12:13], 1.0
 ; SI-NEXT:    v_add_f64 v[20:21], s[10:11], 1.0
 ; SI-NEXT:    v_add_f64 v[18:19], s[8:9], 1.0
@@ -32600,34 +33121,8 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; SI-NEXT:    v_lshrrev_b32_e32 v54, 16, v5
 ; SI-NEXT:    v_lshrrev_b32_e32 v55, 16, v3
 ; SI-NEXT:    v_lshrrev_b32_e32 v36, 16, v1
-; SI-NEXT:    s_branch .LBB53_5
-; SI-NEXT:  .LBB53_3:
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr89
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr91
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    s_branch .LBB53_2
-; SI-NEXT:  .LBB53_4:
+; SI-NEXT:    s_branch .LBB53_6
+; SI-NEXT:  .LBB53_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
@@ -32652,10 +33147,10 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v18, s8
 ; SI-NEXT:    v_mov_b32_e32 v20, s10
 ; SI-NEXT:    v_mov_b32_e32 v22, s12
-; SI-NEXT:    v_mov_b32_e32 v37, s35
-; SI-NEXT:    v_mov_b32_e32 v38, s34
-; SI-NEXT:    v_mov_b32_e32 v39, s31
-; SI-NEXT:    v_mov_b32_e32 v48, s30
+; SI-NEXT:    v_mov_b32_e32 v37, s31
+; SI-NEXT:    v_mov_b32_e32 v38, s30
+; SI-NEXT:    v_mov_b32_e32 v39, vcc_hi
+; SI-NEXT:    v_mov_b32_e32 v48, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v49, s95
 ; SI-NEXT:    v_mov_b32_e32 v50, s94
 ; SI-NEXT:    v_mov_b32_e32 v51, s93
@@ -32676,7 +33171,7 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v26, s42
 ; SI-NEXT:    v_mov_b32_e32 v25, s40
 ; SI-NEXT:    v_mov_b32_e32 v24, s14
-; SI-NEXT:  .LBB53_5: ; %end
+; SI-NEXT:  .LBB53_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v35, 16, v35
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -32737,7 +33232,7 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; SI-NEXT:    v_or_b32_e32 v22, v22, v24
 ; SI-NEXT:    v_and_b32_e32 v23, 0xffff, v23
 ; SI-NEXT:    v_lshlrev_b32_e32 v24, 16, v37
-; SI-NEXT:    v_readlane_b32 s30, v40, 2
+; SI-NEXT:    v_readlane_b32 s30, v40, 0
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v35
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v34
 ; SI-NEXT:    v_or_b32_e32 v5, v5, v33
@@ -32750,9 +33245,7 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; SI-NEXT:    v_or_b32_e32 v19, v19, v26
 ; SI-NEXT:    v_or_b32_e32 v21, v21, v25
 ; SI-NEXT:    v_or_b32_e32 v23, v23, v24
-; SI-NEXT:    v_readlane_b32 s31, v40, 3
-; SI-NEXT:    v_readlane_b32 s35, v40, 1
-; SI-NEXT:    v_readlane_b32 s34, v40, 0
+; SI-NEXT:    v_readlane_b32 s31, v40, 1
 ; SI-NEXT:    s_or_saveexec_b64 s[4:5], -1
 ; SI-NEXT:    buffer_load_dword v40, off, s[0:3], s32 ; 4-byte Folded Reload
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -32774,7 +33267,7 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s5, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_3
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s40, s9, 16
 ; VI-NEXT:    s_lshr_b32 s60, s8, 16
@@ -32800,8 +33293,40 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; VI-NEXT:    s_lshr_b32 s78, s18, 16
 ; VI-NEXT:    s_lshr_b32 s59, s17, 16
 ; VI-NEXT:    s_lshr_b32 s79, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB53_4
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[14:15], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[14:15], -1
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr41
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr40
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; VI-NEXT:    s_cselect_b32 s14, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s14, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[22:23], s[8:9], 1.0
 ; VI-NEXT:    v_add_f64 v[20:21], s[10:11], 1.0
 ; VI-NEXT:    v_add_f64 v[18:19], s[12:13], 1.0
@@ -32838,34 +33363,8 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; VI-NEXT:    v_lshrrev_b32_e32 v51, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v55, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v53, 16, v0
-; VI-NEXT:    s_branch .LBB53_5
-; VI-NEXT:  .LBB53_3:
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr41
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr40
-; VI-NEXT:    s_branch .LBB53_2
-; VI-NEXT:  .LBB53_4:
+; VI-NEXT:    s_branch .LBB53_6
+; VI-NEXT:  .LBB53_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
@@ -32914,7 +33413,7 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v30, s42
 ; VI-NEXT:    v_mov_b32_e32 v28, s41
 ; VI-NEXT:    v_mov_b32_e32 v26, s40
-; VI-NEXT:  .LBB53_5: ; %end
+; VI-NEXT:  .LBB53_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v53, 16, v53
 ; VI-NEXT:    v_lshlrev_b32_e32 v51, 16, v51
 ; VI-NEXT:    v_lshlrev_b32_e32 v49, 16, v49
@@ -32980,7 +33479,7 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s40, s9, 16
 ; GFX9-NEXT:    s_lshr_b32 s60, s8, 16
@@ -33006,8 +33505,40 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; GFX9-NEXT:    s_lshr_b32 s78, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s59, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s79, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_4
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[14:15], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[14:15], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr41
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr40
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; GFX9-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[22:23], s[8:9], 1.0
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[10:11], 1.0
 ; GFX9-NEXT:    v_add_f64 v[18:19], s[12:13], 1.0
@@ -33044,34 +33575,8 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v51, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v55, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v53, 16, v0
-; GFX9-NEXT:    s_branch .LBB53_5
-; GFX9-NEXT:  .LBB53_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr41
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr40
-; GFX9-NEXT:    s_branch .LBB53_2
-; GFX9-NEXT:  .LBB53_4:
+; GFX9-NEXT:    s_branch .LBB53_6
+; GFX9-NEXT:  .LBB53_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
@@ -33120,7 +33625,7 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s42
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s41
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s40
-; GFX9-NEXT:  .LBB53_5: ; %end
+; GFX9-NEXT:  .LBB53_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -33182,12 +33687,12 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s9, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s8, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s10, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s7, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s10, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s47, s6, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s12, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s56, s4, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s9, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s57, s8, 16
@@ -33209,9 +33714,40 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s73, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s74, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s10
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-TRUE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB53_3
+; GFX11-TRUE16-NEXT:  .LBB53_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-TRUE16-NEXT:  .LBB53_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[22:23], s[6:7], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[20:21], s[4:5], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[18:19], s[8:9], 1.0
@@ -33248,34 +33784,8 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v51, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v55, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v53, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB53_5
-; GFX11-TRUE16-NEXT:  .LBB53_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    s_branch .LBB53_2
-; GFX11-TRUE16-NEXT:  .LBB53_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB53_6
+; GFX11-TRUE16-NEXT:  .LBB53_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -33298,9 +33808,9 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s59 :: v_dual_mov_b32 v34, s15
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s58 :: v_dual_mov_b32 v32, s14
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s57 :: v_dual_mov_b32 v30, s13
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s56 :: v_dual_mov_b32 v28, s12
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v55, s46 :: v_dual_mov_b32 v26, s11
-; GFX11-TRUE16-NEXT:  .LBB53_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s56 :: v_dual_mov_b32 v28, s11
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v55, s46 :: v_dual_mov_b32 v26, s10
+; GFX11-TRUE16-NEXT:  .LBB53_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v53.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v55.l
@@ -33339,12 +33849,12 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s9, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s8, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s10, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s7, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s10, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s47, s6, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s12, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s56, s4, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s9, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s57, s8, 16
@@ -33366,9 +33876,40 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s73, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s74, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s10
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-FAKE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB53_3
+; GFX11-FAKE16-NEXT:  .LBB53_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:  .LBB53_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[19:20], s[6:7], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[21:22], s[4:5], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[23:24], s[8:9], 1.0
@@ -33405,34 +33946,8 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v52, 16, v0
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v55, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v53, 16, v2
-; GFX11-FAKE16-NEXT:    s_branch .LBB53_5
-; GFX11-FAKE16-NEXT:  .LBB53_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    s_branch .LBB53_2
-; GFX11-FAKE16-NEXT:  .LBB53_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB53_6
+; GFX11-FAKE16-NEXT:  .LBB53_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v25, s20
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v11, s22
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v6, s16 :: v_dual_mov_b32 v9, s24
@@ -33456,8 +33971,8 @@ define inreg <48 x half> @bitcast_v12f64_to_v48f16_scalar(<12 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v50, s43 :: v_dual_mov_b32 v37, s40
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v38, s41 :: v_dual_mov_b32 v35, s15
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v34, s14 :: v_dual_mov_b32 v31, s13
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v30, s12 :: v_dual_mov_b32 v29, s11
-; GFX11-FAKE16-NEXT:  .LBB53_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v30, s11 :: v_dual_mov_b32 v29, s10
+; GFX11-FAKE16-NEXT:  .LBB53_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v25, 0xffff, v25
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v64, 0xffff, v0
@@ -34711,10 +35226,8 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; SI-NEXT:    v_writelane_b32 v32, s67, 17
 ; SI-NEXT:    v_writelane_b32 v32, s68, 18
 ; SI-NEXT:    v_writelane_b32 v32, s69, 19
-; SI-NEXT:    v_writelane_b32 v32, s70, 20
-; SI-NEXT:    v_writelane_b32 v32, s71, 21
-; SI-NEXT:    v_writelane_b32 v32, s30, 22
-; SI-NEXT:    v_writelane_b32 v32, s31, 23
+; SI-NEXT:    v_writelane_b32 v32, s30, 20
+; SI-NEXT:    v_writelane_b32 v32, s31, 21
 ; SI-NEXT:    v_readfirstlane_b32 s6, v9
 ; SI-NEXT:    v_readfirstlane_b32 s8, v8
 ; SI-NEXT:    v_readfirstlane_b32 s10, v7
@@ -34731,14 +35244,14 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; SI-NEXT:    s_lshr_b32 s93, s26, 16
 ; SI-NEXT:    s_lshr_b32 s94, s25, 16
 ; SI-NEXT:    s_lshr_b32 s95, s24, 16
-; SI-NEXT:    s_lshr_b32 s30, s23, 16
-; SI-NEXT:    s_lshr_b32 s31, s22, 16
-; SI-NEXT:    s_lshr_b32 s34, s21, 16
-; SI-NEXT:    s_lshr_b32 s35, s20, 16
-; SI-NEXT:    s_lshr_b32 s68, s19, 16
-; SI-NEXT:    s_lshr_b32 s69, s18, 16
-; SI-NEXT:    s_lshr_b32 s70, s17, 16
-; SI-NEXT:    s_lshr_b32 s71, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; SI-NEXT:    s_lshr_b32 s30, s21, 16
+; SI-NEXT:    s_lshr_b32 s31, s20, 16
+; SI-NEXT:    s_lshr_b32 s34, s19, 16
+; SI-NEXT:    s_lshr_b32 s35, s18, 16
+; SI-NEXT:    s_lshr_b32 s68, s17, 16
+; SI-NEXT:    s_lshr_b32 s69, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -34751,31 +35264,31 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; SI-NEXT:    s_lshr_b32 s91, s89, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -34825,11 +35338,20 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s59, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s71
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s69
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s68
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -34839,7 +35361,7 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, s35
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v5, s19
@@ -34849,20 +35371,20 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s34
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s31
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s20
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s30
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
@@ -34872,7 +35394,7 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_or_b32_e32 v4, v4, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, vcc_hi
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s22
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
@@ -34881,7 +35403,7 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, vcc_lo
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v6, v8, v6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s23
@@ -35019,11 +35541,8 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; SI-NEXT:    v_or_b32_e32 v22, v23, v22
 ; SI-NEXT:    v_lshlrev_b32_e32 v23, 16, v24
 ; SI-NEXT:    v_or_b32_e32 v23, v25, v23
-; SI-NEXT:    s_branch .LBB55_5
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:    s_branch .LBB55_6
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -35056,11 +35575,9 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB55_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 22
-; SI-NEXT:    v_readlane_b32 s31, v32, 23
-; SI-NEXT:    v_readlane_b32 s71, v32, 21
-; SI-NEXT:    v_readlane_b32 s70, v32, 20
+; SI-NEXT:  .LBB55_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 20
+; SI-NEXT:    v_readlane_b32 s31, v32, 21
 ; SI-NEXT:    v_readlane_b32 s69, v32, 19
 ; SI-NEXT:    v_readlane_b32 s68, v32, 18
 ; SI-NEXT:    v_readlane_b32 s67, v32, 17
@@ -35117,10 +35634,8 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; VI-NEXT:    v_writelane_b32 v32, s71, 21
 ; VI-NEXT:    v_writelane_b32 v32, s80, 22
 ; VI-NEXT:    v_writelane_b32 v32, s81, 23
-; VI-NEXT:    v_writelane_b32 v32, s82, 24
-; VI-NEXT:    v_writelane_b32 v32, s83, 25
-; VI-NEXT:    v_writelane_b32 v32, s30, 26
-; VI-NEXT:    v_writelane_b32 v32, s31, 27
+; VI-NEXT:    v_writelane_b32 v32, s30, 24
+; VI-NEXT:    v_writelane_b32 v32, s31, 25
 ; VI-NEXT:    v_readfirstlane_b32 s6, v9
 ; VI-NEXT:    v_readfirstlane_b32 s8, v8
 ; VI-NEXT:    v_readfirstlane_b32 s10, v7
@@ -35130,21 +35645,21 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s76, v3
 ; VI-NEXT:    v_readfirstlane_b32 s79, v2
 ; VI-NEXT:    v_readfirstlane_b32 s91, v1
-; VI-NEXT:    v_readfirstlane_b32 s34, v0
+; VI-NEXT:    v_readfirstlane_b32 s30, v0
 ; VI-NEXT:    s_lshr_b32 s72, s29, 16
 ; VI-NEXT:    s_lshr_b32 s74, s28, 16
 ; VI-NEXT:    s_lshr_b32 s77, s27, 16
 ; VI-NEXT:    s_lshr_b32 s88, s26, 16
 ; VI-NEXT:    s_lshr_b32 s90, s25, 16
-; VI-NEXT:    s_lshr_b32 s31, s24, 16
-; VI-NEXT:    s_lshr_b32 s68, s23, 16
-; VI-NEXT:    s_lshr_b32 s69, s22, 16
-; VI-NEXT:    s_lshr_b32 s70, s21, 16
-; VI-NEXT:    s_lshr_b32 s71, s20, 16
-; VI-NEXT:    s_lshr_b32 s80, s19, 16
-; VI-NEXT:    s_lshr_b32 s81, s18, 16
-; VI-NEXT:    s_lshr_b32 s82, s17, 16
-; VI-NEXT:    s_lshr_b32 s83, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s24, 16
+; VI-NEXT:    s_lshr_b32 s34, s23, 16
+; VI-NEXT:    s_lshr_b32 s35, s22, 16
+; VI-NEXT:    s_lshr_b32 s68, s21, 16
+; VI-NEXT:    s_lshr_b32 s69, s20, 16
+; VI-NEXT:    s_lshr_b32 s70, s19, 16
+; VI-NEXT:    s_lshr_b32 s71, s18, 16
+; VI-NEXT:    s_lshr_b32 s80, s17, 16
+; VI-NEXT:    s_lshr_b32 s81, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -35153,38 +35668,38 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; VI-NEXT:    s_lshr_b32 s75, s73, 16
 ; VI-NEXT:    s_lshr_b32 s78, s76, 16
 ; VI-NEXT:    s_lshr_b32 s89, s79, 16
-; VI-NEXT:    s_lshr_b32 s30, s91, 16
-; VI-NEXT:    s_lshr_b32 s35, s34, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s91, 16
+; VI-NEXT:    s_lshr_b32 s31, s30, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v10
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s37, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -35201,11 +35716,11 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s79
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
@@ -35231,42 +35746,51 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v23, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s83
-; VI-NEXT:    v_mov_b32_e32 v2, s82
+; VI-NEXT:    v_mov_b32_e32 v0, s81
+; VI-NEXT:    v_mov_b32_e32 v2, s80
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v23
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v23
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s81
+; VI-NEXT:    v_mov_b32_e32 v2, s71
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v23
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s80
+; VI-NEXT:    v_mov_b32_e32 v3, s70
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v23
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s71
+; VI-NEXT:    v_mov_b32_e32 v4, s69
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v23
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s70
+; VI-NEXT:    v_mov_b32_e32 v5, s68
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v23
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s69
+; VI-NEXT:    v_mov_b32_e32 v6, s35
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v23
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s68
+; VI-NEXT:    v_mov_b32_e32 v7, s34
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v23
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s31
+; VI-NEXT:    v_mov_b32_e32 v8, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v23
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
@@ -35290,11 +35814,11 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v23
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s35
+; VI-NEXT:    v_mov_b32_e32 v14, s31
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s34, v23
+; VI-NEXT:    v_add_f16_e32 v15, s30, v23
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s30
+; VI-NEXT:    v_mov_b32_e32 v15, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v16, s91, v23
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
@@ -35330,11 +35854,8 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; VI-NEXT:    v_add_f16_sdwa v24, v24, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v23, s6, v23
 ; VI-NEXT:    v_or_b32_e32 v23, v23, v24
-; VI-NEXT:    s_branch .LBB55_5
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:    s_branch .LBB55_6
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -35367,11 +35888,9 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB55_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 26
-; VI-NEXT:    v_readlane_b32 s31, v32, 27
-; VI-NEXT:    v_readlane_b32 s83, v32, 25
-; VI-NEXT:    v_readlane_b32 s82, v32, 24
+; VI-NEXT:  .LBB55_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 24
+; VI-NEXT:    v_readlane_b32 s31, v32, 25
 ; VI-NEXT:    v_readlane_b32 s81, v32, 23
 ; VI-NEXT:    v_readlane_b32 s80, v32, 22
 ; VI-NEXT:    v_readlane_b32 s71, v32, 21
@@ -35480,10 +35999,18 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s57, s57, s62
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s58, s58, s61
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s60
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v23, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v23 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v23 op_sel_hi:[1,0]
@@ -35509,10 +36036,8 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; GFX9-NEXT:    v_pk_add_f16 v21, s57, v23 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v22, s58, v23 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v23, s59, v23 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB55_5
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:    s_branch .LBB55_6
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -35545,7 +36070,7 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB55_5: ; %end
+; GFX9-NEXT:  .LBB55_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -35624,11 +36149,16 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s21, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s22, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -35654,8 +36184,6 @@ define inreg <12 x double> @bitcast_v48f16_to_v12f64_scalar(<48 x half> inreg %a
 ; GFX11-NEXT:    v_pk_add_f16 v22, 0x200, s22 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v23, 0x200, s23 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -36848,9 +37376,9 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s38, s21, 16
 ; SI-NEXT:    s_lshr_b32 s66, s20, 16
 ; SI-NEXT:    s_lshr_b32 s37, s19, 16
-; SI-NEXT:    s_lshr_b32 s63, s18, 16
+; SI-NEXT:    s_lshr_b32 s73, s18, 16
 ; SI-NEXT:    s_lshr_b32 s36, s17, 16
-; SI-NEXT:    s_lshr_b32 s61, s16, 16
+; SI-NEXT:    s_lshr_b32 s63, s16, 16
 ; SI-NEXT:    s_lshr_b32 s55, s99, 16
 ; SI-NEXT:    s_lshr_b32 s64, s65, 16
 ; SI-NEXT:    s_lshr_b32 s54, s96, 16
@@ -36863,26 +37391,26 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s80, s81, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s36, 16
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s60, s61, 16
-; SI-NEXT:    s_mov_b32 s9, s61
+; SI-NEXT:    s_lshl_b32 s60, s63, 16
 ; SI-NEXT:    s_or_b32 s61, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s37, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s60
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s62, s63, 16
-; SI-NEXT:    s_mov_b32 s11, s63
+; SI-NEXT:    s_lshl_b32 s62, s73, 16
+; SI-NEXT:    s_mov_b32 s9, s63
 ; SI-NEXT:    s_or_b32 s63, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s21, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s38, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s62
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
 ; SI-NEXT:    s_lshl_b32 s72, s66, 16
+; SI-NEXT:    s_mov_b32 s11, s73
 ; SI-NEXT:    s_or_b32 s73, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s39, 16
@@ -36935,19 +37463,19 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s7, s55, 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[58:59], 16
 ; SI-NEXT:    s_and_b32 s58, s98, 0xffff
-; SI-NEXT:    s_or_b32 vcc_hi, s5, s7
-; SI-NEXT:    s_lshl_b32 vcc_lo, s64, 16
-; SI-NEXT:    s_mov_b32 s47, s61
-; SI-NEXT:    s_lshr_b64 s[60:61], s[60:61], 16
+; SI-NEXT:    s_or_b32 s31, s5, s7
+; SI-NEXT:    s_lshl_b32 s30, s64, 16
 ; SI-NEXT:    s_mov_b32 s45, s63
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[62:63], 16
-; SI-NEXT:    s_or_b32 s58, s58, s56
-; SI-NEXT:    s_lshr_b64 s[30:31], s[56:57], 16
-; SI-NEXT:    s_and_b32 s56, s65, 0xffff
-; SI-NEXT:    s_mov_b32 s61, s9
-; SI-NEXT:    s_mov_b32 s63, s11
 ; SI-NEXT:    s_mov_b32 s43, s73
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[72:73], 16
+; SI-NEXT:    s_or_b32 s58, s58, s56
+; SI-NEXT:    s_lshr_b64 vcc, s[56:57], 16
+; SI-NEXT:    s_and_b32 s56, s65, 0xffff
+; SI-NEXT:    s_mov_b32 s47, s61
+; SI-NEXT:    s_lshr_b64 s[60:61], s[60:61], 16
+; SI-NEXT:    s_mov_b32 s63, s9
+; SI-NEXT:    s_mov_b32 s73, s11
 ; SI-NEXT:    s_mov_b32 s41, s75
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[74:75], 16
 ; SI-NEXT:    s_mov_b32 s15, s77
@@ -36962,11 +37490,43 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[92:93], 16
 ; SI-NEXT:    s_mov_b32 s5, s59
 ; SI-NEXT:    s_mov_b32 s59, s57
-; SI-NEXT:    s_or_b32 s56, s56, vcc_lo
-; SI-NEXT:    s_mov_b32 s57, vcc_hi
-; SI-NEXT:    s_lshr_b64 s[34:35], vcc, 16
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_or_b32 s56, s56, s30
+; SI-NEXT:    s_mov_b32 s57, s31
+; SI-NEXT:    s_lshr_b64 s[30:31], s[30:31], 16
+; SI-NEXT:    s_mov_b64 s[34:35], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[34:35], -1
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; SI-NEXT:    s_cselect_b32 s61, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s61, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s65, s65, 3
 ; SI-NEXT:    s_and_b32 s4, s65, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s64, 16
@@ -37057,7 +37617,7 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s43, s20, 0x30000
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s20, s63, 16
+; SI-NEXT:    s_lshl_b32 s20, s73, 16
 ; SI-NEXT:    s_or_b32 s18, s20, s18
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s44, s18, 0x30000
@@ -37067,7 +37627,7 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s45, s18, 0x30000
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s18, s61, 16
+; SI-NEXT:    s_lshl_b32 s18, s63, 16
 ; SI-NEXT:    s_or_b32 s16, s18, s16
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s46, s16, 0x30000
@@ -37097,8 +37657,8 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[8:9], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[4:5], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[58:59], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[56:57], 16
+; SI-NEXT:    s_lshr_b64 vcc, s[58:59], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[56:57], 16
 ; SI-NEXT:    s_lshr_b32 s36, s47, 16
 ; SI-NEXT:    s_lshr_b32 s37, s45, 16
 ; SI-NEXT:    s_lshr_b32 s38, s43, 16
@@ -37111,7 +37671,7 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s53, s5, 16
 ; SI-NEXT:    s_lshr_b32 s54, s59, 16
 ; SI-NEXT:    s_lshr_b32 s55, s57, 16
-; SI-NEXT:  .LBB57_3: ; %end
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    s_and_b32 s16, s46, 0xffff
 ; SI-NEXT:    s_lshl_b32 s17, s60, 16
 ; SI-NEXT:    s_or_b32 s16, s16, s17
@@ -37173,13 +37733,13 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s24, s53, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s24
 ; SI-NEXT:    s_and_b32 s24, s58, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s30, 16
+; SI-NEXT:    s_lshl_b32 s25, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s24, s24, s25
 ; SI-NEXT:    s_and_b32 s25, s59, 0xffff
 ; SI-NEXT:    s_lshl_b32 s26, s54, 16
 ; SI-NEXT:    s_or_b32 s25, s25, s26
 ; SI-NEXT:    s_and_b32 s26, s56, 0xffff
-; SI-NEXT:    s_lshl_b32 s27, s34, 16
+; SI-NEXT:    s_lshl_b32 s27, s30, 16
 ; SI-NEXT:    s_or_b32 s26, s26, s27
 ; SI-NEXT:    s_and_b32 s27, s57, 0xffff
 ; SI-NEXT:    s_lshl_b32 s28, s55, 16
@@ -37249,32 +37809,6 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v48i16_to_v48f16_scalar:
 ; VI:       ; %bb.0:
@@ -37315,10 +37849,18 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s73, s72, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v10
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_add_i32 s79, s79, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
@@ -37367,7 +37909,7 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s9, s9, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s6, s6, 3
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s79, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -37465,8 +38007,6 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v22, s8
 ; VI-NEXT:    v_mov_b32_e32 v23, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v48i16_to_v48f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -37507,10 +38047,18 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s44, s62, 16
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v10
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_4
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s79, s61
 ; GFX9-NEXT:    v_pk_add_u16 v23, s4, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s78, s60
@@ -37583,10 +38131,8 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v26, 16, v21
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v25, 16, v22
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v24, 16, v23
-; GFX9-NEXT:    s_branch .LBB57_5
-; GFX9-NEXT:  .LBB57_3:
-; GFX9-NEXT:    s_branch .LBB57_2
-; GFX9-NEXT:  .LBB57_4:
+; GFX9-NEXT:    s_branch .LBB57_6
+; GFX9-NEXT:  .LBB57_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s79
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s78
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s77
@@ -37635,7 +38181,7 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v53, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v54, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v55, s6
-; GFX9-NEXT:  .LBB57_5: ; %end
+; GFX9-NEXT:  .LBB57_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -37722,11 +38268,16 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s60, 16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s74, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s74, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s74
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-TRUE16-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s74, -1
+; GFX11-TRUE16-NEXT:  .LBB57_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s74, s74, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s74, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s74, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s57, s72, s57
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s47, s63, s47
 ; GFX11-TRUE16-NEXT:    v_pk_add_u16 v23, s57, 3 op_sel_hi:[1,0]
@@ -37800,8 +38351,6 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v25, 16, v22
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v24, 16, v23
 ; GFX11-TRUE16-NEXT:    s_branch .LBB57_5
-; GFX11-TRUE16-NEXT:  .LBB57_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB57_2
 ; GFX11-TRUE16-NEXT:  .LBB57_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s72 :: v_dual_mov_b32 v22, s63
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s73 :: v_dual_mov_b32 v20, s62
@@ -37892,11 +38441,16 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s60, 16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s74, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s74, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s74
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-FAKE16-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s74, -1
+; GFX11-FAKE16-NEXT:  .LBB57_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s74, s74, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s74, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s74, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s57, s72, s57
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s47, s63, s47
 ; GFX11-FAKE16-NEXT:    v_pk_add_u16 v19, s57, 3 op_sel_hi:[1,0]
@@ -37970,8 +38524,6 @@ define inreg <48 x half> @bitcast_v48i16_to_v48f16_scalar(<48 x i16> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v25, 16, v20
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v24, 16, v19
 ; GFX11-FAKE16-NEXT:    s_branch .LBB57_5
-; GFX11-FAKE16-NEXT:  .LBB57_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB57_2
 ; GFX11-FAKE16-NEXT:  .LBB57_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v19, s72 :: v_dual_mov_b32 v20, s63
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v21, s73 :: v_dual_mov_b32 v22, s62
@@ -38896,10 +39448,18 @@ define inreg <48 x i16> @bitcast_v48f16_to_v48i16_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s74, s10, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_3
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB59_4
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s78
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s77
 ; SI-NEXT:    v_cvt_f32_f16_e32 v5, s76
@@ -39120,10 +39680,8 @@ define inreg <48 x i16> @bitcast_v48f16_to_v48i16_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_lshr_b64 v[50:51], v[4:5], 16
 ; SI-NEXT:    v_lshr_b64 v[48:49], v[6:7], 16
 ; SI-NEXT:    v_lshr_b64 v[38:39], v[8:9], 16
-; SI-NEXT:    s_branch .LBB59_5
-; SI-NEXT:  .LBB59_3:
-; SI-NEXT:    s_branch .LBB59_2
-; SI-NEXT:  .LBB59_4:
+; SI-NEXT:    s_branch .LBB59_6
+; SI-NEXT:  .LBB59_5:
 ; SI-NEXT:    v_mov_b32_e32 v25, s72
 ; SI-NEXT:    s_waitcnt expcnt(6)
 ; SI-NEXT:    v_mov_b32_e32 v57, s58
@@ -39179,7 +39737,7 @@ define inreg <48 x i16> @bitcast_v48f16_to_v48i16_scalar(<48 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v28, s61
 ; SI-NEXT:    v_mov_b32_e32 v26, s57
 ; SI-NEXT:    v_mov_b32_e32 v24, s47
-; SI-NEXT:  .LBB59_5: ; %end
+; SI-NEXT:  .LBB59_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v54
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v47
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
@@ -39314,10 +39872,18 @@ define inreg <48 x i16> @bitcast_v48f16_to_v48i16_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s79, s78, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v10
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_3
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_4
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v24, 0x200
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v24
 ; VI-NEXT:    v_add_f16_e32 v55, s43, v24
@@ -39367,10 +39933,8 @@ define inreg <48 x i16> @bitcast_v48f16_to_v48i16_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v25, s47, v24
 ; VI-NEXT:    v_add_f16_e32 v23, s44, v24
 ; VI-NEXT:    v_add_f16_e32 v24, s45, v24
-; VI-NEXT:    s_branch .LBB59_5
-; VI-NEXT:  .LBB59_3:
-; VI-NEXT:    s_branch .LBB59_2
-; VI-NEXT:  .LBB59_4:
+; VI-NEXT:    s_branch .LBB59_6
+; VI-NEXT:  .LBB59_5:
 ; VI-NEXT:    v_mov_b32_e32 v24, s45
 ; VI-NEXT:    v_mov_b32_e32 v23, s44
 ; VI-NEXT:    v_mov_b32_e32 v25, s47
@@ -39419,7 +39983,7 @@ define inreg <48 x i16> @bitcast_v48f16_to_v48i16_scalar(<48 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v55, s43
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
-; VI-NEXT:  .LBB59_5: ; %end
+; VI-NEXT:  .LBB59_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v55, 16, v55
 ; VI-NEXT:    v_lshlrev_b32_e32 v54, 16, v54
 ; VI-NEXT:    v_lshlrev_b32_e32 v53, 16, v53
@@ -39509,10 +40073,18 @@ define inreg <48 x i16> @bitcast_v48f16_to_v48i16_scalar(<48 x half> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s44, s62, 16
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v10
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_4
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s79, s61
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v23, s4, v0 op_sel_hi:[1,0]
@@ -39586,10 +40158,8 @@ define inreg <48 x i16> @bitcast_v48f16_to_v48i16_scalar(<48 x half> inreg %a, i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v26, 16, v21
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v25, 16, v22
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v24, 16, v23
-; GFX9-NEXT:    s_branch .LBB59_5
-; GFX9-NEXT:  .LBB59_3:
-; GFX9-NEXT:    s_branch .LBB59_2
-; GFX9-NEXT:  .LBB59_4:
+; GFX9-NEXT:    s_branch .LBB59_6
+; GFX9-NEXT:  .LBB59_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s79
 ; GFX9-NEXT:    v_mov_b32_e32 v22, s78
 ; GFX9-NEXT:    v_mov_b32_e32 v21, s77
@@ -39638,7 +40208,7 @@ define inreg <48 x i16> @bitcast_v48f16_to_v48i16_scalar(<48 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v53, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v54, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v55, s6
-; GFX9-NEXT:  .LBB59_5: ; %end
+; GFX9-NEXT:  .LBB59_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -39725,11 +40295,16 @@ define inreg <48 x i16> @bitcast_v48f16_to_v48i16_scalar(<48 x half> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s60, 16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s74, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s74, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s74
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-TRUE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s74, -1
+; GFX11-TRUE16-NEXT:  .LBB59_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s74, s74, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s74, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s74, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s57, s72, s57
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s47, s63, s47
 ; GFX11-TRUE16-NEXT:    v_pk_add_f16 v23, 0x200, s57 op_sel_hi:[0,1]
@@ -39803,8 +40378,6 @@ define inreg <48 x i16> @bitcast_v48f16_to_v48i16_scalar(<48 x half> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v25, 16, v22
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v24, 16, v23
 ; GFX11-TRUE16-NEXT:    s_branch .LBB59_5
-; GFX11-TRUE16-NEXT:  .LBB59_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB59_2
 ; GFX11-TRUE16-NEXT:  .LBB59_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s72 :: v_dual_mov_b32 v22, s63
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v21, s73 :: v_dual_mov_b32 v20, s62
@@ -39895,11 +40468,16 @@ define inreg <48 x i16> @bitcast_v48f16_to_v48i16_scalar(<48 x half> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s60, 16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s74, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s74, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s74
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-FAKE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s74, -1
+; GFX11-FAKE16-NEXT:  .LBB59_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s74, s74, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s74, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s74, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s57, s72, s57
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s47, s63, s47
 ; GFX11-FAKE16-NEXT:    v_pk_add_f16 v19, 0x200, s57 op_sel_hi:[0,1]
@@ -39973,8 +40551,6 @@ define inreg <48 x i16> @bitcast_v48f16_to_v48i16_scalar(<48 x half> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v25, 16, v20
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v24, 16, v19
 ; GFX11-FAKE16-NEXT:    s_branch .LBB59_5
-; GFX11-FAKE16-NEXT:  .LBB59_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB59_2
 ; GFX11-FAKE16-NEXT:  .LBB59_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v19, s72 :: v_dual_mov_b32 v20, s63
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v21, s73 :: v_dual_mov_b32 v22, s62

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.832bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.832bit.ll
index bae36084f83f9..d6648e84e21cb 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.832bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.832bit.ll
@@ -198,10 +198,18 @@ define inreg <26 x float> @bitcast_v26i32_to_v26f32_scalar(<26 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s40, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s41, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -228,7 +236,7 @@ define inreg <26 x float> @bitcast_v26i32_to_v26f32_scalar(<26 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -256,8 +264,6 @@ define inreg <26 x float> @bitcast_v26i32_to_v26f32_scalar(<26 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v24, s7
 ; SI-NEXT:    v_mov_b32_e32 v25, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v26i32_to_v26f32_scalar:
 ; VI:       ; %bb.0:
@@ -276,10 +282,18 @@ define inreg <26 x float> @bitcast_v26i32_to_v26f32_scalar(<26 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s40, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s41, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -306,7 +320,7 @@ define inreg <26 x float> @bitcast_v26i32_to_v26f32_scalar(<26 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -334,8 +348,6 @@ define inreg <26 x float> @bitcast_v26i32_to_v26f32_scalar(<26 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v24, s7
 ; VI-NEXT:    v_mov_b32_e32 v25, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v26i32_to_v26f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -354,10 +366,18 @@ define inreg <26 x float> @bitcast_v26i32_to_v26f32_scalar(<26 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s41, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -384,7 +404,7 @@ define inreg <26 x float> @bitcast_v26i32_to_v26f32_scalar(<26 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -412,8 +432,6 @@ define inreg <26 x float> @bitcast_v26i32_to_v26f32_scalar(<26 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v26i32_to_v26f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -429,11 +447,16 @@ define inreg <26 x float> @bitcast_v26i32_to_v26f32_scalar(<26 x i32> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s11, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s12, 0
 ; GFX11-NEXT:    s_mov_b32 s12, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s12, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -460,7 +483,7 @@ define inreg <26 x float> @bitcast_v26i32_to_v26f32_scalar(<26 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -476,8 +499,6 @@ define inreg <26 x float> @bitcast_v26i32_to_v26f32_scalar(<26 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s7 :: v_dual_mov_b32 v23, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s5 :: v_dual_mov_b32 v25, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -704,10 +725,18 @@ define inreg <26 x i32> @bitcast_v26f32_to_v26i32_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v25, s61, 1.0
 ; SI-NEXT:    v_add_f32_e64 v24, s60, 1.0
 ; SI-NEXT:    v_add_f32_e64 v23, s59, 1.0
@@ -734,10 +763,8 @@ define inreg <26 x i32> @bitcast_v26f32_to_v26i32_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB3_5
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:    s_branch .LBB3_6
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -770,7 +797,7 @@ define inreg <26 x i32> @bitcast_v26f32_to_v26i32_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB3_5: ; %end
+; SI-NEXT:  .LBB3_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -835,10 +862,18 @@ define inreg <26 x i32> @bitcast_v26f32_to_v26i32_scalar(<26 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v25, s61, 1.0
 ; VI-NEXT:    v_add_f32_e64 v24, s60, 1.0
 ; VI-NEXT:    v_add_f32_e64 v23, s59, 1.0
@@ -865,10 +900,8 @@ define inreg <26 x i32> @bitcast_v26f32_to_v26i32_scalar(<26 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB3_5
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:    s_branch .LBB3_6
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -901,7 +934,7 @@ define inreg <26 x i32> @bitcast_v26f32_to_v26i32_scalar(<26 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB3_5: ; %end
+; VI-NEXT:  .LBB3_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -966,10 +999,18 @@ define inreg <26 x i32> @bitcast_v26f32_to_v26i32_scalar(<26 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v25, s61, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v24, s60, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v23, s59, 1.0
@@ -996,10 +1037,8 @@ define inreg <26 x i32> @bitcast_v26f32_to_v26i32_scalar(<26 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB3_5
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:    s_branch .LBB3_6
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -1032,7 +1071,7 @@ define inreg <26 x i32> @bitcast_v26f32_to_v26i32_scalar(<26 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB3_5: ; %end
+; GFX9-NEXT:  .LBB3_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -1098,11 +1137,16 @@ define inreg <26 x i32> @bitcast_v26f32_to_v26i32_scalar(<26 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v25, s61, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v24, s60, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v23, s59, 1.0
@@ -1130,8 +1174,6 @@ define inreg <26 x i32> @bitcast_v26f32_to_v26i32_scalar(<26 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB3_5
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -1376,10 +1418,18 @@ define inreg <13 x i64> @bitcast_v26i32_to_v13i64_scalar(<26 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s40, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s41, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -1406,7 +1456,7 @@ define inreg <13 x i64> @bitcast_v26i32_to_v13i64_scalar(<26 x i32> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1434,8 +1484,6 @@ define inreg <13 x i64> @bitcast_v26i32_to_v13i64_scalar(<26 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v24, s7
 ; SI-NEXT:    v_mov_b32_e32 v25, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v26i32_to_v13i64_scalar:
 ; VI:       ; %bb.0:
@@ -1454,10 +1502,18 @@ define inreg <13 x i64> @bitcast_v26i32_to_v13i64_scalar(<26 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s40, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s41, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -1484,7 +1540,7 @@ define inreg <13 x i64> @bitcast_v26i32_to_v13i64_scalar(<26 x i32> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1512,8 +1568,6 @@ define inreg <13 x i64> @bitcast_v26i32_to_v13i64_scalar(<26 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v24, s7
 ; VI-NEXT:    v_mov_b32_e32 v25, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v26i32_to_v13i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -1532,10 +1586,18 @@ define inreg <13 x i64> @bitcast_v26i32_to_v13i64_scalar(<26 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s41, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -1562,7 +1624,7 @@ define inreg <13 x i64> @bitcast_v26i32_to_v13i64_scalar(<26 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1590,8 +1652,6 @@ define inreg <13 x i64> @bitcast_v26i32_to_v13i64_scalar(<26 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v26i32_to_v13i64_scalar:
 ; GFX11:       ; %bb.0:
@@ -1607,11 +1667,16 @@ define inreg <13 x i64> @bitcast_v26i32_to_v13i64_scalar(<26 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s11, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s12, 0
 ; GFX11-NEXT:    s_mov_b32 s12, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s12, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -1638,7 +1703,7 @@ define inreg <13 x i64> @bitcast_v26i32_to_v13i64_scalar(<26 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1654,8 +1719,6 @@ define inreg <13 x i64> @bitcast_v26i32_to_v13i64_scalar(<26 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s7 :: v_dual_mov_b32 v23, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s5 :: v_dual_mov_b32 v25, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1872,10 +1935,18 @@ define inreg <26 x i32> @bitcast_v13i64_to_v26i32_scalar(<13 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s40, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s41, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -1902,7 +1973,7 @@ define inreg <26 x i32> @bitcast_v13i64_to_v26i32_scalar(<13 x i64> inreg %a, i3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1930,8 +2001,6 @@ define inreg <26 x i32> @bitcast_v13i64_to_v26i32_scalar(<13 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v24, s7
 ; SI-NEXT:    v_mov_b32_e32 v25, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v13i64_to_v26i32_scalar:
 ; VI:       ; %bb.0:
@@ -1950,10 +2019,18 @@ define inreg <26 x i32> @bitcast_v13i64_to_v26i32_scalar(<13 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s40, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s41, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -1980,7 +2057,7 @@ define inreg <26 x i32> @bitcast_v13i64_to_v26i32_scalar(<13 x i64> inreg %a, i3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2008,8 +2085,6 @@ define inreg <26 x i32> @bitcast_v13i64_to_v26i32_scalar(<13 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v24, s7
 ; VI-NEXT:    v_mov_b32_e32 v25, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v13i64_to_v26i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -2028,10 +2103,18 @@ define inreg <26 x i32> @bitcast_v13i64_to_v26i32_scalar(<13 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s41, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -2058,7 +2141,7 @@ define inreg <26 x i32> @bitcast_v13i64_to_v26i32_scalar(<13 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB7_3: ; %end
+; GFX9-NEXT:  .LBB7_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2086,8 +2169,6 @@ define inreg <26 x i32> @bitcast_v13i64_to_v26i32_scalar(<13 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_4:
-; GFX9-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-LABEL: bitcast_v13i64_to_v26i32_scalar:
 ; GFX11:       ; %bb.0:
@@ -2103,11 +2184,16 @@ define inreg <26 x i32> @bitcast_v13i64_to_v26i32_scalar(<13 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s11, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s12, 0
 ; GFX11-NEXT:    s_mov_b32 s12, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_3
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s12, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -2134,7 +2220,7 @@ define inreg <26 x i32> @bitcast_v13i64_to_v26i32_scalar(<13 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB7_3: ; %end
+; GFX11-NEXT:  .LBB7_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2150,8 +2236,6 @@ define inreg <26 x i32> @bitcast_v13i64_to_v26i32_scalar(<13 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s7 :: v_dual_mov_b32 v23, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s5 :: v_dual_mov_b32 v25, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_4:
-; GFX11-NEXT:    s_branch .LBB7_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2361,10 +2445,18 @@ define inreg <13 x double> @bitcast_v26i32_to_v13f64_scalar(<26 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s40, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s41, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -2391,7 +2483,7 @@ define inreg <13 x double> @bitcast_v26i32_to_v13f64_scalar(<26 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2419,8 +2511,6 @@ define inreg <13 x double> @bitcast_v26i32_to_v13f64_scalar(<26 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v24, s7
 ; SI-NEXT:    v_mov_b32_e32 v25, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v26i32_to_v13f64_scalar:
 ; VI:       ; %bb.0:
@@ -2439,10 +2529,18 @@ define inreg <13 x double> @bitcast_v26i32_to_v13f64_scalar(<26 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s40, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s41, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -2469,7 +2567,7 @@ define inreg <13 x double> @bitcast_v26i32_to_v13f64_scalar(<26 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2497,8 +2595,6 @@ define inreg <13 x double> @bitcast_v26i32_to_v13f64_scalar(<26 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v24, s7
 ; VI-NEXT:    v_mov_b32_e32 v25, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v26i32_to_v13f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -2517,10 +2613,18 @@ define inreg <13 x double> @bitcast_v26i32_to_v13f64_scalar(<26 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s41, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -2547,7 +2651,7 @@ define inreg <13 x double> @bitcast_v26i32_to_v13f64_scalar(<26 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2575,8 +2679,6 @@ define inreg <13 x double> @bitcast_v26i32_to_v13f64_scalar(<26 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v26i32_to_v13f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -2592,11 +2694,16 @@ define inreg <13 x double> @bitcast_v26i32_to_v13f64_scalar(<26 x i32> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s11, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s12, 0
 ; GFX11-NEXT:    s_mov_b32 s12, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s12, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -2623,7 +2730,7 @@ define inreg <13 x double> @bitcast_v26i32_to_v13f64_scalar(<26 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2639,8 +2746,6 @@ define inreg <13 x double> @bitcast_v26i32_to_v13f64_scalar(<26 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s7 :: v_dual_mov_b32 v23, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s5 :: v_dual_mov_b32 v25, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2828,10 +2933,18 @@ define inreg <26 x i32> @bitcast_v13f64_to_v26i32_scalar(<13 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; SI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; SI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
@@ -2845,10 +2958,8 @@ define inreg <26 x i32> @bitcast_v13f64_to_v26i32_scalar(<13 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB11_5
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:    s_branch .LBB11_6
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -2881,7 +2992,7 @@ define inreg <26 x i32> @bitcast_v13f64_to_v26i32_scalar(<13 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB11_5: ; %end
+; SI-NEXT:  .LBB11_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -2946,10 +3057,18 @@ define inreg <26 x i32> @bitcast_v13f64_to_v26i32_scalar(<13 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; VI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; VI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
@@ -2963,10 +3082,8 @@ define inreg <26 x i32> @bitcast_v13f64_to_v26i32_scalar(<13 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB11_5
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:    s_branch .LBB11_6
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -2999,7 +3116,7 @@ define inreg <26 x i32> @bitcast_v13f64_to_v26i32_scalar(<13 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB11_5: ; %end
+; VI-NEXT:  .LBB11_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -3064,10 +3181,18 @@ define inreg <26 x i32> @bitcast_v13f64_to_v26i32_scalar(<13 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; GFX9-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
@@ -3081,10 +3206,8 @@ define inreg <26 x i32> @bitcast_v13f64_to_v26i32_scalar(<13 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB11_5
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:    s_branch .LBB11_6
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -3117,7 +3240,7 @@ define inreg <26 x i32> @bitcast_v13f64_to_v26i32_scalar(<13 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB11_5: ; %end
+; GFX9-NEXT:  .LBB11_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -3183,11 +3306,16 @@ define inreg <26 x i32> @bitcast_v13f64_to_v26i32_scalar(<13 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; GFX11-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; GFX11-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
@@ -3202,8 +3330,6 @@ define inreg <26 x i32> @bitcast_v13f64_to_v26i32_scalar(<13 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB11_5
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -4027,10 +4153,8 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v26, s36, 2
 ; SI-NEXT:    v_writelane_b32 v26, s37, 3
 ; SI-NEXT:    v_writelane_b32 v26, s38, 4
-; SI-NEXT:    v_writelane_b32 v26, s39, 5
-; SI-NEXT:    v_writelane_b32 v26, s48, 6
-; SI-NEXT:    v_writelane_b32 v26, s30, 7
-; SI-NEXT:    v_writelane_b32 v26, s31, 8
+; SI-NEXT:    v_writelane_b32 v26, s30, 5
+; SI-NEXT:    v_writelane_b32 v26, s31, 6
 ; SI-NEXT:    v_readfirstlane_b32 s14, v12
 ; SI-NEXT:    v_readfirstlane_b32 s5, v11
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
@@ -4045,21 +4169,21 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s15, v1
 ; SI-NEXT:    s_cmp_lg_u32 s14, 0
 ; SI-NEXT:    v_readfirstlane_b32 s14, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s92, s5, 16
 ; SI-NEXT:    s_lshr_b32 s93, s7, 16
 ; SI-NEXT:    s_lshr_b32 s94, s9, 16
 ; SI-NEXT:    s_lshr_b32 s95, s11, 16
-; SI-NEXT:    s_lshr_b32 s30, s13, 16
-; SI-NEXT:    s_lshr_b32 s31, s15, 16
-; SI-NEXT:    s_lshr_b32 s34, s29, 16
-; SI-NEXT:    s_lshr_b32 s35, s27, 16
-; SI-NEXT:    s_lshr_b32 s36, s25, 16
-; SI-NEXT:    s_lshr_b32 s37, s23, 16
-; SI-NEXT:    s_lshr_b32 s38, s21, 16
-; SI-NEXT:    s_lshr_b32 s39, s19, 16
-; SI-NEXT:    s_lshr_b32 s48, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s13, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s15, 16
+; SI-NEXT:    s_lshr_b32 s30, s29, 16
+; SI-NEXT:    s_lshr_b32 s31, s27, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s35, s23, 16
+; SI-NEXT:    s_lshr_b32 s36, s21, 16
+; SI-NEXT:    s_lshr_b32 s37, s19, 16
+; SI-NEXT:    s_lshr_b32 s38, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[8:9], 16
@@ -4073,8 +4197,42 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[90:91], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[90:91], -1
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[90:91], s[90:91], exec
+; SI-NEXT:    s_cselect_b32 s41, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s41, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -4112,75 +4270,75 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s93, s7, 16
 ; SI-NEXT:    s_lshr_b32 s94, s9, 16
 ; SI-NEXT:    s_lshr_b32 s95, s11, 16
-; SI-NEXT:    s_lshr_b32 s30, s13, 16
-; SI-NEXT:    s_lshr_b32 s31, s15, 16
-; SI-NEXT:    s_lshr_b32 s34, s29, 16
-; SI-NEXT:    s_lshr_b32 s35, s27, 16
-; SI-NEXT:    s_lshr_b32 s36, s25, 16
-; SI-NEXT:    s_lshr_b32 s37, s23, 16
-; SI-NEXT:    s_lshr_b32 s38, s21, 16
-; SI-NEXT:    s_lshr_b32 s39, s19, 16
-; SI-NEXT:    s_lshr_b32 s48, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s13, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s15, 16
+; SI-NEXT:    s_lshr_b32 s30, s29, 16
+; SI-NEXT:    s_lshr_b32 s31, s27, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s35, s23, 16
+; SI-NEXT:    s_lshr_b32 s36, s21, 16
+; SI-NEXT:    s_lshr_b32 s37, s19, 16
+; SI-NEXT:    s_lshr_b32 s38, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[26:27], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[16:17], 16
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s41, s88, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s41
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s48, 16
+; SI-NEXT:    s_lshl_b32 s41, s38, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s41
 ; SI-NEXT:    s_lshl_b32 s41, s78, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s18, s18, s41
 ; SI-NEXT:    s_and_b32 s19, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s39, 16
+; SI-NEXT:    s_lshl_b32 s41, s37, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s41
 ; SI-NEXT:    s_lshl_b32 s41, s76, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s20, s20, s41
 ; SI-NEXT:    s_and_b32 s21, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s38, 16
+; SI-NEXT:    s_lshl_b32 s41, s36, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s41
 ; SI-NEXT:    s_lshl_b32 s41, s74, 16
 ; SI-NEXT:    s_and_b32 s22, s22, 0xffff
 ; SI-NEXT:    s_or_b32 s22, s22, s41
 ; SI-NEXT:    s_and_b32 s23, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s37, 16
+; SI-NEXT:    s_lshl_b32 s41, s35, 16
 ; SI-NEXT:    s_or_b32 s23, s23, s41
 ; SI-NEXT:    s_lshl_b32 s41, s72, 16
 ; SI-NEXT:    s_and_b32 s24, s24, 0xffff
 ; SI-NEXT:    s_or_b32 s24, s24, s41
 ; SI-NEXT:    s_and_b32 s25, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s36, 16
+; SI-NEXT:    s_lshl_b32 s41, s34, 16
 ; SI-NEXT:    s_or_b32 s25, s25, s41
 ; SI-NEXT:    s_and_b32 s26, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s62, 16
 ; SI-NEXT:    s_or_b32 s26, s26, s41
 ; SI-NEXT:    s_and_b32 s27, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s35, 16
+; SI-NEXT:    s_lshl_b32 s41, s31, 16
 ; SI-NEXT:    s_or_b32 s27, s27, s41
 ; SI-NEXT:    s_and_b32 s28, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s60, 16
 ; SI-NEXT:    s_or_b32 s28, s28, s41
 ; SI-NEXT:    s_and_b32 s29, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s34, 16
+; SI-NEXT:    s_lshl_b32 s41, s30, 16
 ; SI-NEXT:    s_or_b32 s29, s29, s41
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s58, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s41
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s31, 16
+; SI-NEXT:    s_lshl_b32 s41, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s41
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s56, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s41
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s30, 16
+; SI-NEXT:    s_lshl_b32 s41, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s41
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s46, 16
@@ -4206,7 +4364,7 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s40, s92, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s41
 ; SI-NEXT:    s_or_b32 s5, s5, s40
-; SI-NEXT:    v_readlane_b32 s30, v26, 7
+; SI-NEXT:    v_readlane_b32 s30, v26, 5
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4233,9 +4391,7 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v23, s7
 ; SI-NEXT:    v_mov_b32_e32 v24, s4
 ; SI-NEXT:    v_mov_b32_e32 v25, s5
-; SI-NEXT:    v_readlane_b32 s31, v26, 8
-; SI-NEXT:    v_readlane_b32 s48, v26, 6
-; SI-NEXT:    v_readlane_b32 s39, v26, 5
+; SI-NEXT:    v_readlane_b32 s31, v26, 6
 ; SI-NEXT:    v_readlane_b32 s38, v26, 4
 ; SI-NEXT:    v_readlane_b32 s37, v26, 3
 ; SI-NEXT:    v_readlane_b32 s36, v26, 2
@@ -4246,34 +4402,6 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_v26i32_to_v52i16_scalar:
 ; VI:       ; %bb.0:
@@ -4292,7 +4420,7 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s40, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s41, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s42, s6, 16
 ; VI-NEXT:    s_lshr_b32 s43, s7, 16
@@ -4320,8 +4448,42 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s18, 16
 ; VI-NEXT:    s_lshr_b32 s90, s17, 16
 ; VI-NEXT:    s_lshr_b32 s91, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -4374,7 +4536,7 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s18, 16
 ; VI-NEXT:    s_lshr_b32 s90, s17, 16
 ; VI-NEXT:    s_lshr_b32 s91, s16, 16
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -4480,34 +4642,6 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v24, s7
 ; VI-NEXT:    v_mov_b32_e32 v25, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v26i32_to_v52i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -4526,7 +4660,7 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s41, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s42, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s43, s7, 16
@@ -4554,8 +4688,42 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s89, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s90, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s91, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -4608,7 +4776,7 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s89, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s90, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s91, s16, 16
-; GFX9-NEXT:  .LBB13_3: ; %end
+; GFX9-NEXT:  .LBB13_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s91
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s90
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s89
@@ -4662,34 +4830,6 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_v26i32_to_v52i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -4705,7 +4845,7 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s11, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s12, 0
 ; GFX11-NEXT:    s_mov_b32 s78, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s12, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s13, s5, 16
@@ -4733,9 +4873,42 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s75, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s76, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s77, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s78
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB13_3
+; GFX11-NEXT:  .LBB13_2:
+; GFX11-NEXT:    s_mov_b32 s78, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:  .LBB13_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s78, s78, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s78, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s78, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -4788,7 +4961,7 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s75, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s76, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s77, s0, 16
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s77
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s76
@@ -4830,34 +5003,6 @@ define inreg <52 x i16> @bitcast_v26i32_to_v52i16_scalar(<26 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s7 :: v_dual_mov_b32 v23, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s5 :: v_dual_mov_b32 v25, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -6056,10 +6201,8 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v26, s71, 21
 ; SI-NEXT:    v_writelane_b32 v26, s80, 22
 ; SI-NEXT:    v_writelane_b32 v26, s81, 23
-; SI-NEXT:    v_writelane_b32 v26, s82, 24
-; SI-NEXT:    v_writelane_b32 v26, s83, 25
-; SI-NEXT:    v_writelane_b32 v26, s30, 26
-; SI-NEXT:    v_writelane_b32 v26, s31, 27
+; SI-NEXT:    v_writelane_b32 v26, s30, 24
+; SI-NEXT:    v_writelane_b32 v26, s31, 25
 ; SI-NEXT:    v_readfirstlane_b32 s7, v11
 ; SI-NEXT:    v_readfirstlane_b32 s9, v10
 ; SI-NEXT:    v_readfirstlane_b32 s11, v9
@@ -6070,22 +6213,22 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s78, v4
 ; SI-NEXT:    v_readfirstlane_b32 s90, v3
 ; SI-NEXT:    v_readfirstlane_b32 s93, v2
-; SI-NEXT:    v_readfirstlane_b32 s30, v1
-; SI-NEXT:    v_readfirstlane_b32 s35, v0
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v1
+; SI-NEXT:    v_readfirstlane_b32 s31, v0
 ; SI-NEXT:    s_lshr_b32 s76, s29, 16
 ; SI-NEXT:    s_lshr_b32 s79, s28, 16
 ; SI-NEXT:    s_lshr_b32 s89, s27, 16
 ; SI-NEXT:    s_lshr_b32 s91, s26, 16
 ; SI-NEXT:    s_lshr_b32 s94, s25, 16
-; SI-NEXT:    s_lshr_b32 s31, s24, 16
-; SI-NEXT:    s_lshr_b32 s68, s23, 16
-; SI-NEXT:    s_lshr_b32 s69, s22, 16
-; SI-NEXT:    s_lshr_b32 s70, s21, 16
-; SI-NEXT:    s_lshr_b32 s71, s20, 16
-; SI-NEXT:    s_lshr_b32 s80, s19, 16
-; SI-NEXT:    s_lshr_b32 s81, s18, 16
-; SI-NEXT:    s_lshr_b32 s82, s17, 16
-; SI-NEXT:    s_lshr_b32 s83, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s24, 16
+; SI-NEXT:    s_lshr_b32 s34, s23, 16
+; SI-NEXT:    s_lshr_b32 s35, s22, 16
+; SI-NEXT:    s_lshr_b32 s68, s21, 16
+; SI-NEXT:    s_lshr_b32 s69, s20, 16
+; SI-NEXT:    s_lshr_b32 s70, s19, 16
+; SI-NEXT:    s_lshr_b32 s71, s18, 16
+; SI-NEXT:    s_lshr_b32 s80, s17, 16
+; SI-NEXT:    s_lshr_b32 s81, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -6096,38 +6239,38 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s77, s78, 16
 ; SI-NEXT:    s_lshr_b32 s88, s90, 16
 ; SI-NEXT:    s_lshr_b32 s92, s93, 16
-; SI-NEXT:    s_lshr_b32 s95, s30, 16
-; SI-NEXT:    s_lshr_b32 s34, s35, 16
+; SI-NEXT:    s_lshr_b32 s95, vcc_lo, 16
+; SI-NEXT:    s_lshr_b32 s30, s31, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s94, 16
@@ -6144,10 +6287,10 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s76, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s93, 0xffff
@@ -6180,51 +6323,60 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s61, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
@@ -6251,14 +6403,14 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s76, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s35, s35, 3
+; SI-NEXT:    s_add_i32 s31, s31, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s30, s30, 3
+; SI-NEXT:    s_add_i32 vcc_lo, vcc_lo, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s93, s93, 3
@@ -6312,8 +6464,8 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s61, s4, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v26, 26
+; SI-NEXT:  .LBB15_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v26, 24
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -6340,9 +6492,7 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v23, s59
 ; SI-NEXT:    v_mov_b32_e32 v24, s60
 ; SI-NEXT:    v_mov_b32_e32 v25, s61
-; SI-NEXT:    v_readlane_b32 s31, v26, 27
-; SI-NEXT:    v_readlane_b32 s83, v26, 25
-; SI-NEXT:    v_readlane_b32 s82, v26, 24
+; SI-NEXT:    v_readlane_b32 s31, v26, 25
 ; SI-NEXT:    v_readlane_b32 s81, v26, 23
 ; SI-NEXT:    v_readlane_b32 s80, v26, 22
 ; SI-NEXT:    v_readlane_b32 s71, v26, 21
@@ -6372,9 +6522,6 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v52i16_to_v26i32_scalar:
 ; VI:       ; %bb.0:
@@ -6410,10 +6557,8 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    v_writelane_b32 v26, s83, 25
 ; VI-NEXT:    v_writelane_b32 v26, s84, 26
 ; VI-NEXT:    v_writelane_b32 v26, s85, 27
-; VI-NEXT:    v_writelane_b32 v26, s86, 28
-; VI-NEXT:    v_writelane_b32 v26, s87, 29
-; VI-NEXT:    v_writelane_b32 v26, s30, 30
-; VI-NEXT:    v_writelane_b32 v26, s31, 31
+; VI-NEXT:    v_writelane_b32 v26, s30, 28
+; VI-NEXT:    v_writelane_b32 v26, s31, 29
 ; VI-NEXT:    v_readfirstlane_b32 s7, v11
 ; VI-NEXT:    v_readfirstlane_b32 s9, v10
 ; VI-NEXT:    v_readfirstlane_b32 s11, v9
@@ -6423,23 +6568,23 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s75, v5
 ; VI-NEXT:    v_readfirstlane_b32 s78, v4
 ; VI-NEXT:    v_readfirstlane_b32 s90, v3
-; VI-NEXT:    v_readfirstlane_b32 s31, v2
-; VI-NEXT:    v_readfirstlane_b32 s68, v1
-; VI-NEXT:    v_readfirstlane_b32 s71, v0
+; VI-NEXT:    v_readfirstlane_b32 vcc_hi, v2
+; VI-NEXT:    v_readfirstlane_b32 s34, v1
+; VI-NEXT:    v_readfirstlane_b32 s69, v0
 ; VI-NEXT:    s_lshr_b32 s76, s29, 16
 ; VI-NEXT:    s_lshr_b32 s79, s28, 16
 ; VI-NEXT:    s_lshr_b32 s89, s27, 16
 ; VI-NEXT:    s_lshr_b32 s91, s26, 16
-; VI-NEXT:    s_lshr_b32 s34, s25, 16
-; VI-NEXT:    s_lshr_b32 s69, s24, 16
-; VI-NEXT:    s_lshr_b32 s80, s23, 16
-; VI-NEXT:    s_lshr_b32 s81, s22, 16
-; VI-NEXT:    s_lshr_b32 s82, s21, 16
-; VI-NEXT:    s_lshr_b32 s83, s20, 16
-; VI-NEXT:    s_lshr_b32 s84, s19, 16
-; VI-NEXT:    s_lshr_b32 s85, s18, 16
-; VI-NEXT:    s_lshr_b32 s86, s17, 16
-; VI-NEXT:    s_lshr_b32 s87, s16, 16
+; VI-NEXT:    s_lshr_b32 s30, s25, 16
+; VI-NEXT:    s_lshr_b32 s35, s24, 16
+; VI-NEXT:    s_lshr_b32 s70, s23, 16
+; VI-NEXT:    s_lshr_b32 s71, s22, 16
+; VI-NEXT:    s_lshr_b32 s80, s21, 16
+; VI-NEXT:    s_lshr_b32 s81, s20, 16
+; VI-NEXT:    s_lshr_b32 s82, s19, 16
+; VI-NEXT:    s_lshr_b32 s83, s18, 16
+; VI-NEXT:    s_lshr_b32 s84, s17, 16
+; VI-NEXT:    s_lshr_b32 s85, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -6449,42 +6594,42 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s74, s75, 16
 ; VI-NEXT:    s_lshr_b32 s77, s78, 16
 ; VI-NEXT:    s_lshr_b32 s88, s90, 16
-; VI-NEXT:    s_lshr_b32 s30, s31, 16
-; VI-NEXT:    s_lshr_b32 s35, s68, 16
-; VI-NEXT:    s_lshr_b32 s70, s71, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, vcc_hi, 16
+; VI-NEXT:    s_lshr_b32 s31, s34, 16
+; VI-NEXT:    s_lshr_b32 s68, s69, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v12
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s86, 16
+; VI-NEXT:    s_lshl_b32 s41, s84, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -6498,14 +6643,14 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s68
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s34
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s31
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_hi
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s90
 ; VI-NEXT:    s_lshl_b32 s5, s88, 16
@@ -6534,56 +6679,65 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
@@ -6605,20 +6759,20 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s71, s71, 3
+; VI-NEXT:    s_add_i32 s69, s69, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s71, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, s69, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s68, s68, 3
+; VI-NEXT:    s_add_i32 s34, s34, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s68, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, s34, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s31, s31, 3
+; VI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; VI-NEXT:    s_add_i32 s51, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s31, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s90, s90, 3
 ; VI-NEXT:    s_add_i32 s52, s4, 0x30000
@@ -6666,8 +6820,8 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s61, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v26, 30
+; VI-NEXT:  .LBB15_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v26, 28
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -6694,9 +6848,7 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v23, s59
 ; VI-NEXT:    v_mov_b32_e32 v24, s60
 ; VI-NEXT:    v_mov_b32_e32 v25, s61
-; VI-NEXT:    v_readlane_b32 s31, v26, 31
-; VI-NEXT:    v_readlane_b32 s87, v26, 29
-; VI-NEXT:    v_readlane_b32 s86, v26, 28
+; VI-NEXT:    v_readlane_b32 s31, v26, 29
 ; VI-NEXT:    v_readlane_b32 s85, v26, 27
 ; VI-NEXT:    v_readlane_b32 s84, v26, 26
 ; VI-NEXT:    v_readlane_b32 s83, v26, 25
@@ -6730,9 +6882,6 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v52i16_to_v26i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -6818,10 +6967,18 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s72
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s60, s60, s63
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s62
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -6848,10 +7005,8 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v23, s59, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v24, s60, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v25, s61, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB15_5
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:    s_branch .LBB15_6
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -6884,7 +7039,7 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB15_5: ; %end
+; GFX9-NEXT:  .LBB15_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -6969,11 +7124,16 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s24, s47, s60
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -7001,8 +7161,6 @@ define inreg <26 x i32> @bitcast_v52i16_to_v26i32_scalar(<52 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v24, s24, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v25, s25, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -7809,10 +7967,8 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v26, s36, 2
 ; SI-NEXT:    v_writelane_b32 v26, s37, 3
 ; SI-NEXT:    v_writelane_b32 v26, s38, 4
-; SI-NEXT:    v_writelane_b32 v26, s39, 5
-; SI-NEXT:    v_writelane_b32 v26, s48, 6
-; SI-NEXT:    v_writelane_b32 v26, s30, 7
-; SI-NEXT:    v_writelane_b32 v26, s31, 8
+; SI-NEXT:    v_writelane_b32 v26, s30, 5
+; SI-NEXT:    v_writelane_b32 v26, s31, 6
 ; SI-NEXT:    v_readfirstlane_b32 s14, v12
 ; SI-NEXT:    v_readfirstlane_b32 s5, v11
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
@@ -7827,21 +7983,21 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s15, v1
 ; SI-NEXT:    s_cmp_lg_u32 s14, 0
 ; SI-NEXT:    v_readfirstlane_b32 s14, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s92, s5, 16
 ; SI-NEXT:    s_lshr_b32 s93, s7, 16
 ; SI-NEXT:    s_lshr_b32 s94, s9, 16
 ; SI-NEXT:    s_lshr_b32 s95, s11, 16
-; SI-NEXT:    s_lshr_b32 s30, s13, 16
-; SI-NEXT:    s_lshr_b32 s31, s15, 16
-; SI-NEXT:    s_lshr_b32 s34, s29, 16
-; SI-NEXT:    s_lshr_b32 s35, s27, 16
-; SI-NEXT:    s_lshr_b32 s36, s25, 16
-; SI-NEXT:    s_lshr_b32 s37, s23, 16
-; SI-NEXT:    s_lshr_b32 s38, s21, 16
-; SI-NEXT:    s_lshr_b32 s39, s19, 16
-; SI-NEXT:    s_lshr_b32 s48, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s13, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s15, 16
+; SI-NEXT:    s_lshr_b32 s30, s29, 16
+; SI-NEXT:    s_lshr_b32 s31, s27, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s35, s23, 16
+; SI-NEXT:    s_lshr_b32 s36, s21, 16
+; SI-NEXT:    s_lshr_b32 s37, s19, 16
+; SI-NEXT:    s_lshr_b32 s38, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[8:9], 16
@@ -7855,8 +8011,42 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[90:91], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[90:91], -1
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[90:91], s[90:91], exec
+; SI-NEXT:    s_cselect_b32 s41, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s41, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -7894,75 +8084,75 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s93, s7, 16
 ; SI-NEXT:    s_lshr_b32 s94, s9, 16
 ; SI-NEXT:    s_lshr_b32 s95, s11, 16
-; SI-NEXT:    s_lshr_b32 s30, s13, 16
-; SI-NEXT:    s_lshr_b32 s31, s15, 16
-; SI-NEXT:    s_lshr_b32 s34, s29, 16
-; SI-NEXT:    s_lshr_b32 s35, s27, 16
-; SI-NEXT:    s_lshr_b32 s36, s25, 16
-; SI-NEXT:    s_lshr_b32 s37, s23, 16
-; SI-NEXT:    s_lshr_b32 s38, s21, 16
-; SI-NEXT:    s_lshr_b32 s39, s19, 16
-; SI-NEXT:    s_lshr_b32 s48, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s13, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s15, 16
+; SI-NEXT:    s_lshr_b32 s30, s29, 16
+; SI-NEXT:    s_lshr_b32 s31, s27, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s35, s23, 16
+; SI-NEXT:    s_lshr_b32 s36, s21, 16
+; SI-NEXT:    s_lshr_b32 s37, s19, 16
+; SI-NEXT:    s_lshr_b32 s38, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[26:27], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[16:17], 16
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s41, s88, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s41
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s48, 16
+; SI-NEXT:    s_lshl_b32 s41, s38, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s41
 ; SI-NEXT:    s_lshl_b32 s41, s78, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s18, s18, s41
 ; SI-NEXT:    s_and_b32 s19, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s39, 16
+; SI-NEXT:    s_lshl_b32 s41, s37, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s41
 ; SI-NEXT:    s_lshl_b32 s41, s76, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s20, s20, s41
 ; SI-NEXT:    s_and_b32 s21, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s38, 16
+; SI-NEXT:    s_lshl_b32 s41, s36, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s41
 ; SI-NEXT:    s_lshl_b32 s41, s74, 16
 ; SI-NEXT:    s_and_b32 s22, s22, 0xffff
 ; SI-NEXT:    s_or_b32 s22, s22, s41
 ; SI-NEXT:    s_and_b32 s23, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s37, 16
+; SI-NEXT:    s_lshl_b32 s41, s35, 16
 ; SI-NEXT:    s_or_b32 s23, s23, s41
 ; SI-NEXT:    s_lshl_b32 s41, s72, 16
 ; SI-NEXT:    s_and_b32 s24, s24, 0xffff
 ; SI-NEXT:    s_or_b32 s24, s24, s41
 ; SI-NEXT:    s_and_b32 s25, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s36, 16
+; SI-NEXT:    s_lshl_b32 s41, s34, 16
 ; SI-NEXT:    s_or_b32 s25, s25, s41
 ; SI-NEXT:    s_and_b32 s26, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s62, 16
 ; SI-NEXT:    s_or_b32 s26, s26, s41
 ; SI-NEXT:    s_and_b32 s27, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s35, 16
+; SI-NEXT:    s_lshl_b32 s41, s31, 16
 ; SI-NEXT:    s_or_b32 s27, s27, s41
 ; SI-NEXT:    s_and_b32 s28, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s60, 16
 ; SI-NEXT:    s_or_b32 s28, s28, s41
 ; SI-NEXT:    s_and_b32 s29, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s34, 16
+; SI-NEXT:    s_lshl_b32 s41, s30, 16
 ; SI-NEXT:    s_or_b32 s29, s29, s41
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s58, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s41
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s31, 16
+; SI-NEXT:    s_lshl_b32 s41, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s41
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s56, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s41
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s30, 16
+; SI-NEXT:    s_lshl_b32 s41, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s41
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s46, 16
@@ -7988,7 +8178,7 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s40, s92, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s41
 ; SI-NEXT:    s_or_b32 s5, s5, s40
-; SI-NEXT:    v_readlane_b32 s30, v26, 7
+; SI-NEXT:    v_readlane_b32 s30, v26, 5
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8015,9 +8205,7 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v23, s7
 ; SI-NEXT:    v_mov_b32_e32 v24, s4
 ; SI-NEXT:    v_mov_b32_e32 v25, s5
-; SI-NEXT:    v_readlane_b32 s31, v26, 8
-; SI-NEXT:    v_readlane_b32 s48, v26, 6
-; SI-NEXT:    v_readlane_b32 s39, v26, 5
+; SI-NEXT:    v_readlane_b32 s31, v26, 6
 ; SI-NEXT:    v_readlane_b32 s38, v26, 4
 ; SI-NEXT:    v_readlane_b32 s37, v26, 3
 ; SI-NEXT:    v_readlane_b32 s36, v26, 2
@@ -8028,34 +8216,6 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_v26i32_to_v52f16_scalar:
 ; VI:       ; %bb.0:
@@ -8074,7 +8234,7 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s40, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s41, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s42, s6, 16
 ; VI-NEXT:    s_lshr_b32 s43, s7, 16
@@ -8102,8 +8262,42 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s89, s18, 16
 ; VI-NEXT:    s_lshr_b32 s90, s17, 16
 ; VI-NEXT:    s_lshr_b32 s91, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -8156,7 +8350,7 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s89, s18, 16
 ; VI-NEXT:    s_lshr_b32 s90, s17, 16
 ; VI-NEXT:    s_lshr_b32 s91, s16, 16
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -8262,34 +8456,6 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v24, s7
 ; VI-NEXT:    v_mov_b32_e32 v25, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v26i32_to_v52f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -8308,7 +8474,7 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s41, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s42, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s43, s7, 16
@@ -8336,8 +8502,42 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s89, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s90, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s91, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -8390,7 +8590,7 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s89, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s90, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s91, s16, 16
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s91
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s90
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s89
@@ -8444,34 +8644,6 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v26i32_to_v52f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -8487,7 +8659,7 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s11, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s12, 0
 ; GFX11-NEXT:    s_mov_b32 s78, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s12, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s13, s5, 16
@@ -8515,9 +8687,42 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s75, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s76, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s77, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s78
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB17_3
+; GFX11-NEXT:  .LBB17_2:
+; GFX11-NEXT:    s_mov_b32 s78, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:  .LBB17_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s78, s78, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s78, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s78, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -8570,7 +8775,7 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s75, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s76, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s77, s0, 16
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s77
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s76
@@ -8612,34 +8817,6 @@ define inreg <52 x half> @bitcast_v26i32_to_v52f16_scalar(<26 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s7 :: v_dual_mov_b32 v23, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s5 :: v_dual_mov_b32 v25, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -9959,10 +10136,8 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v32, s71, 21
 ; SI-NEXT:    v_writelane_b32 v32, s80, 22
 ; SI-NEXT:    v_writelane_b32 v32, s81, 23
-; SI-NEXT:    v_writelane_b32 v32, s82, 24
-; SI-NEXT:    v_writelane_b32 v32, s83, 25
-; SI-NEXT:    v_writelane_b32 v32, s30, 26
-; SI-NEXT:    v_writelane_b32 v32, s31, 27
+; SI-NEXT:    v_writelane_b32 v32, s30, 24
+; SI-NEXT:    v_writelane_b32 v32, s31, 25
 ; SI-NEXT:    v_readfirstlane_b32 s6, v11
 ; SI-NEXT:    v_readfirstlane_b32 s8, v10
 ; SI-NEXT:    v_readfirstlane_b32 s10, v9
@@ -9977,18 +10152,18 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s94, v0
 ; SI-NEXT:    s_lshr_b32 s90, s29, 16
 ; SI-NEXT:    s_lshr_b32 s93, s28, 16
-; SI-NEXT:    s_lshr_b32 s30, s27, 16
-; SI-NEXT:    s_lshr_b32 s31, s26, 16
-; SI-NEXT:    s_lshr_b32 s34, s25, 16
-; SI-NEXT:    s_lshr_b32 s35, s24, 16
-; SI-NEXT:    s_lshr_b32 s68, s23, 16
-; SI-NEXT:    s_lshr_b32 s69, s22, 16
-; SI-NEXT:    s_lshr_b32 s70, s21, 16
-; SI-NEXT:    s_lshr_b32 s71, s20, 16
-; SI-NEXT:    s_lshr_b32 s80, s19, 16
-; SI-NEXT:    s_lshr_b32 s81, s18, 16
-; SI-NEXT:    s_lshr_b32 s82, s17, 16
-; SI-NEXT:    s_lshr_b32 s83, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s27, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s26, 16
+; SI-NEXT:    s_lshr_b32 s30, s25, 16
+; SI-NEXT:    s_lshr_b32 s31, s24, 16
+; SI-NEXT:    s_lshr_b32 s34, s23, 16
+; SI-NEXT:    s_lshr_b32 s35, s22, 16
+; SI-NEXT:    s_lshr_b32 s68, s21, 16
+; SI-NEXT:    s_lshr_b32 s69, s20, 16
+; SI-NEXT:    s_lshr_b32 s70, s19, 16
+; SI-NEXT:    s_lshr_b32 s71, s18, 16
+; SI-NEXT:    s_lshr_b32 s80, s17, 16
+; SI-NEXT:    s_lshr_b32 s81, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -10003,43 +10178,43 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s95, s94, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -10083,11 +10258,20 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s61, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s83
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s81
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s80
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -10099,7 +10283,7 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s18
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s71
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -10107,11 +10291,11 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s80
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, s70
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v4, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s19
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s69
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -10122,7 +10306,7 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s20
 ; SI-NEXT:    v_or_b32_e32 v3, v4, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s68
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
@@ -10131,11 +10315,11 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s35
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s22
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s34
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
@@ -10146,7 +10330,7 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s23
 ; SI-NEXT:    v_or_b32_e32 v6, v7, v6
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s31
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s24
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
@@ -10155,11 +10339,11 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s30
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_or_b32_e32 v8, v10, v8
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s25
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, vcc_hi
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
@@ -10170,7 +10354,7 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s26
 ; SI-NEXT:    v_or_b32_e32 v9, v10, v9
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v11
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, vcc_lo
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s27
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
@@ -10293,11 +10477,8 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v24, v25, v24
 ; SI-NEXT:    v_lshlrev_b32_e32 v25, 16, v26
 ; SI-NEXT:    v_or_b32_e32 v25, v27, v25
-; SI-NEXT:    s_branch .LBB19_5
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:    s_branch .LBB19_6
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -10330,11 +10511,9 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB19_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 26
-; SI-NEXT:    v_readlane_b32 s31, v32, 27
-; SI-NEXT:    v_readlane_b32 s83, v32, 25
-; SI-NEXT:    v_readlane_b32 s82, v32, 24
+; SI-NEXT:  .LBB19_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 24
+; SI-NEXT:    v_readlane_b32 s31, v32, 25
 ; SI-NEXT:    v_readlane_b32 s81, v32, 23
 ; SI-NEXT:    v_readlane_b32 s80, v32, 22
 ; SI-NEXT:    v_readlane_b32 s71, v32, 21
@@ -10399,10 +10578,8 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    v_writelane_b32 v32, s83, 25
 ; VI-NEXT:    v_writelane_b32 v32, s84, 26
 ; VI-NEXT:    v_writelane_b32 v32, s85, 27
-; VI-NEXT:    v_writelane_b32 v32, s86, 28
-; VI-NEXT:    v_writelane_b32 v32, s87, 29
-; VI-NEXT:    v_writelane_b32 v32, s30, 30
-; VI-NEXT:    v_writelane_b32 v32, s31, 31
+; VI-NEXT:    v_writelane_b32 v32, s30, 28
+; VI-NEXT:    v_writelane_b32 v32, s31, 29
 ; VI-NEXT:    v_readfirstlane_b32 s6, v11
 ; VI-NEXT:    v_readfirstlane_b32 s8, v10
 ; VI-NEXT:    v_readfirstlane_b32 s10, v9
@@ -10412,23 +10589,23 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s75, v5
 ; VI-NEXT:    v_readfirstlane_b32 s78, v4
 ; VI-NEXT:    v_readfirstlane_b32 s89, v3
-; VI-NEXT:    v_readfirstlane_b32 s30, v2
-; VI-NEXT:    v_readfirstlane_b32 s35, v1
-; VI-NEXT:    v_readfirstlane_b32 s71, v0
+; VI-NEXT:    v_readfirstlane_b32 vcc_lo, v2
+; VI-NEXT:    v_readfirstlane_b32 s31, v1
+; VI-NEXT:    v_readfirstlane_b32 s69, v0
 ; VI-NEXT:    s_lshr_b32 s74, s29, 16
 ; VI-NEXT:    s_lshr_b32 s77, s28, 16
 ; VI-NEXT:    s_lshr_b32 s88, s27, 16
 ; VI-NEXT:    s_lshr_b32 s90, s26, 16
-; VI-NEXT:    s_lshr_b32 s31, s25, 16
-; VI-NEXT:    s_lshr_b32 s68, s24, 16
-; VI-NEXT:    s_lshr_b32 s70, s23, 16
-; VI-NEXT:    s_lshr_b32 s81, s22, 16
-; VI-NEXT:    s_lshr_b32 s82, s21, 16
-; VI-NEXT:    s_lshr_b32 s83, s20, 16
-; VI-NEXT:    s_lshr_b32 s84, s19, 16
-; VI-NEXT:    s_lshr_b32 s85, s18, 16
-; VI-NEXT:    s_lshr_b32 s86, s17, 16
-; VI-NEXT:    s_lshr_b32 s87, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s25, 16
+; VI-NEXT:    s_lshr_b32 s34, s24, 16
+; VI-NEXT:    s_lshr_b32 s68, s23, 16
+; VI-NEXT:    s_lshr_b32 s71, s22, 16
+; VI-NEXT:    s_lshr_b32 s80, s21, 16
+; VI-NEXT:    s_lshr_b32 s81, s20, 16
+; VI-NEXT:    s_lshr_b32 s82, s19, 16
+; VI-NEXT:    s_lshr_b32 s83, s18, 16
+; VI-NEXT:    s_lshr_b32 s84, s17, 16
+; VI-NEXT:    s_lshr_b32 s85, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -10438,42 +10615,42 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s76, s75, 16
 ; VI-NEXT:    s_lshr_b32 s79, s78, 16
 ; VI-NEXT:    s_lshr_b32 s91, s89, 16
-; VI-NEXT:    s_lshr_b32 s34, s30, 16
-; VI-NEXT:    s_lshr_b32 s69, s35, 16
-; VI-NEXT:    s_lshr_b32 s80, s71, 16
+; VI-NEXT:    s_lshr_b32 s30, vcc_lo, 16
+; VI-NEXT:    s_lshr_b32 s35, s31, 16
+; VI-NEXT:    s_lshr_b32 s70, s69, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v12
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s86, 16
+; VI-NEXT:    s_lshl_b32 s41, s84, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -10487,14 +10664,14 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s35
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s31
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s30
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_lo
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s89
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -10523,46 +10700,55 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v25, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s87
-; VI-NEXT:    v_mov_b32_e32 v2, s86
+; VI-NEXT:    v_mov_b32_e32 v0, s85
+; VI-NEXT:    v_mov_b32_e32 v2, s84
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v25
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v25
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s85
+; VI-NEXT:    v_mov_b32_e32 v2, s83
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v25
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s84
+; VI-NEXT:    v_mov_b32_e32 v3, s82
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v25
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s83
+; VI-NEXT:    v_mov_b32_e32 v4, s81
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v25
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s82
+; VI-NEXT:    v_mov_b32_e32 v5, s80
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v25
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s81
+; VI-NEXT:    v_mov_b32_e32 v6, s71
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v25
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s70
+; VI-NEXT:    v_mov_b32_e32 v7, s68
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v25
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s68
+; VI-NEXT:    v_mov_b32_e32 v8, s34
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v25
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
-; VI-NEXT:    v_mov_b32_e32 v9, s31
+; VI-NEXT:    v_mov_b32_e32 v9, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v9, v9, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v10, s25, v25
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
@@ -10582,17 +10768,17 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v25
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s80
+; VI-NEXT:    v_mov_b32_e32 v14, s70
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s71, v25
+; VI-NEXT:    v_add_f16_e32 v15, s69, v25
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s69
+; VI-NEXT:    v_mov_b32_e32 v15, s35
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v16, s35, v25
+; VI-NEXT:    v_add_f16_e32 v16, s31, v25
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
-; VI-NEXT:    v_mov_b32_e32 v16, s34
+; VI-NEXT:    v_mov_b32_e32 v16, s30
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v17, s30, v25
+; VI-NEXT:    v_add_f16_e32 v17, vcc_lo, v25
 ; VI-NEXT:    v_or_b32_e32 v16, v17, v16
 ; VI-NEXT:    v_mov_b32_e32 v17, s91
 ; VI-NEXT:    v_add_f16_sdwa v17, v17, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
@@ -10630,11 +10816,8 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v26, v26, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v25, s6, v25
 ; VI-NEXT:    v_or_b32_e32 v25, v25, v26
-; VI-NEXT:    s_branch .LBB19_5
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:    s_branch .LBB19_6
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -10667,11 +10850,9 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB19_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 30
-; VI-NEXT:    v_readlane_b32 s31, v32, 31
-; VI-NEXT:    v_readlane_b32 s87, v32, 29
-; VI-NEXT:    v_readlane_b32 s86, v32, 28
+; VI-NEXT:  .LBB19_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 28
+; VI-NEXT:    v_readlane_b32 s31, v32, 29
 ; VI-NEXT:    v_readlane_b32 s85, v32, 27
 ; VI-NEXT:    v_readlane_b32 s84, v32, 26
 ; VI-NEXT:    v_readlane_b32 s83, v32, 25
@@ -10790,10 +10971,18 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s72
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s60, s60, s63
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s62
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v25, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v25 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v25 op_sel_hi:[1,0]
@@ -10821,10 +11010,8 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v23, s59, v25 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v24, s60, v25 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v25, s61, v25 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB19_5
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:    s_branch .LBB19_6
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -10857,7 +11044,7 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB19_5: ; %end
+; GFX9-NEXT:  .LBB19_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -10942,11 +11129,16 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s24, s47, s60
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -10974,8 +11166,6 @@ define inreg <26 x i32> @bitcast_v52f16_to_v26i32_scalar(<52 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v24, 0x200, s24 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v25, 0x200, s25 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -11220,10 +11410,18 @@ define inreg <13 x i64> @bitcast_v26f32_to_v13i64_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_3
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB21_4
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v25, s61, 1.0
 ; SI-NEXT:    v_add_f32_e64 v24, s60, 1.0
 ; SI-NEXT:    v_add_f32_e64 v23, s59, 1.0
@@ -11250,10 +11448,8 @@ define inreg <13 x i64> @bitcast_v26f32_to_v13i64_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB21_5
-; SI-NEXT:  .LBB21_3:
-; SI-NEXT:    s_branch .LBB21_2
-; SI-NEXT:  .LBB21_4:
+; SI-NEXT:    s_branch .LBB21_6
+; SI-NEXT:  .LBB21_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -11286,7 +11482,7 @@ define inreg <13 x i64> @bitcast_v26f32_to_v13i64_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB21_5: ; %end
+; SI-NEXT:  .LBB21_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -11351,10 +11547,18 @@ define inreg <13 x i64> @bitcast_v26f32_to_v13i64_scalar(<26 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_3
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_4
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v25, s61, 1.0
 ; VI-NEXT:    v_add_f32_e64 v24, s60, 1.0
 ; VI-NEXT:    v_add_f32_e64 v23, s59, 1.0
@@ -11381,10 +11585,8 @@ define inreg <13 x i64> @bitcast_v26f32_to_v13i64_scalar(<26 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB21_5
-; VI-NEXT:  .LBB21_3:
-; VI-NEXT:    s_branch .LBB21_2
-; VI-NEXT:  .LBB21_4:
+; VI-NEXT:    s_branch .LBB21_6
+; VI-NEXT:  .LBB21_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -11417,7 +11619,7 @@ define inreg <13 x i64> @bitcast_v26f32_to_v13i64_scalar(<26 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB21_5: ; %end
+; VI-NEXT:  .LBB21_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -11482,10 +11684,18 @@ define inreg <13 x i64> @bitcast_v26f32_to_v13i64_scalar(<26 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_4
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v25, s61, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v24, s60, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v23, s59, 1.0
@@ -11512,10 +11722,8 @@ define inreg <13 x i64> @bitcast_v26f32_to_v13i64_scalar(<26 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB21_5
-; GFX9-NEXT:  .LBB21_3:
-; GFX9-NEXT:    s_branch .LBB21_2
-; GFX9-NEXT:  .LBB21_4:
+; GFX9-NEXT:    s_branch .LBB21_6
+; GFX9-NEXT:  .LBB21_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -11548,7 +11756,7 @@ define inreg <13 x i64> @bitcast_v26f32_to_v13i64_scalar(<26 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB21_5: ; %end
+; GFX9-NEXT:  .LBB21_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -11614,11 +11822,16 @@ define inreg <13 x i64> @bitcast_v26f32_to_v13i64_scalar(<26 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_4
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v25, s61, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v24, s60, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v23, s59, 1.0
@@ -11646,8 +11859,6 @@ define inreg <13 x i64> @bitcast_v26f32_to_v13i64_scalar(<26 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB21_5
-; GFX11-NEXT:  .LBB21_3:
-; GFX11-NEXT:    s_branch .LBB21_2
 ; GFX11-NEXT:  .LBB21_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -11899,10 +12110,18 @@ define inreg <26 x float> @bitcast_v13i64_to_v26f32_scalar(<13 x i64> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s40, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s41, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -11929,7 +12148,7 @@ define inreg <26 x float> @bitcast_v13i64_to_v26f32_scalar(<13 x i64> inreg %a,
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -11957,8 +12176,6 @@ define inreg <26 x float> @bitcast_v13i64_to_v26f32_scalar(<13 x i64> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v24, s7
 ; SI-NEXT:    v_mov_b32_e32 v25, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v13i64_to_v26f32_scalar:
 ; VI:       ; %bb.0:
@@ -11977,10 +12194,18 @@ define inreg <26 x float> @bitcast_v13i64_to_v26f32_scalar(<13 x i64> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s40, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s41, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_4
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_3
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -12007,7 +12232,7 @@ define inreg <26 x float> @bitcast_v13i64_to_v26f32_scalar(<13 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB23_3: ; %end
+; VI-NEXT:  .LBB23_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -12035,8 +12260,6 @@ define inreg <26 x float> @bitcast_v13i64_to_v26f32_scalar(<13 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v24, s7
 ; VI-NEXT:    v_mov_b32_e32 v25, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_4:
-; VI-NEXT:    s_branch .LBB23_2
 ;
 ; GFX9-LABEL: bitcast_v13i64_to_v26f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -12055,10 +12278,18 @@ define inreg <26 x float> @bitcast_v13i64_to_v26f32_scalar(<13 x i64> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s41, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_3
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -12085,7 +12316,7 @@ define inreg <26 x float> @bitcast_v13i64_to_v26f32_scalar(<13 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB23_3: ; %end
+; GFX9-NEXT:  .LBB23_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -12113,8 +12344,6 @@ define inreg <26 x float> @bitcast_v13i64_to_v26f32_scalar(<13 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_4:
-; GFX9-NEXT:    s_branch .LBB23_2
 ;
 ; GFX11-LABEL: bitcast_v13i64_to_v26f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -12130,11 +12359,16 @@ define inreg <26 x float> @bitcast_v13i64_to_v26f32_scalar(<13 x i64> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s11, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s12, 0
 ; GFX11-NEXT:    s_mov_b32 s12, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_3
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s12, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -12161,7 +12395,7 @@ define inreg <26 x float> @bitcast_v13i64_to_v26f32_scalar(<13 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB23_3: ; %end
+; GFX11-NEXT:  .LBB23_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -12177,8 +12411,6 @@ define inreg <26 x float> @bitcast_v13i64_to_v26f32_scalar(<13 x i64> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s7 :: v_dual_mov_b32 v23, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s5 :: v_dual_mov_b32 v25, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_4:
-; GFX11-NEXT:    s_branch .LBB23_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -12405,10 +12637,18 @@ define inreg <13 x double> @bitcast_v26f32_to_v13f64_scalar(<26 x float> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_3
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB25_4
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v25, s61, 1.0
 ; SI-NEXT:    v_add_f32_e64 v24, s60, 1.0
 ; SI-NEXT:    v_add_f32_e64 v23, s59, 1.0
@@ -12435,10 +12675,8 @@ define inreg <13 x double> @bitcast_v26f32_to_v13f64_scalar(<26 x float> inreg %
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB25_5
-; SI-NEXT:  .LBB25_3:
-; SI-NEXT:    s_branch .LBB25_2
-; SI-NEXT:  .LBB25_4:
+; SI-NEXT:    s_branch .LBB25_6
+; SI-NEXT:  .LBB25_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -12471,7 +12709,7 @@ define inreg <13 x double> @bitcast_v26f32_to_v13f64_scalar(<26 x float> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB25_5: ; %end
+; SI-NEXT:  .LBB25_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -12536,10 +12774,18 @@ define inreg <13 x double> @bitcast_v26f32_to_v13f64_scalar(<26 x float> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_3
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB25_4
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v25, s61, 1.0
 ; VI-NEXT:    v_add_f32_e64 v24, s60, 1.0
 ; VI-NEXT:    v_add_f32_e64 v23, s59, 1.0
@@ -12566,10 +12812,8 @@ define inreg <13 x double> @bitcast_v26f32_to_v13f64_scalar(<26 x float> inreg %
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB25_5
-; VI-NEXT:  .LBB25_3:
-; VI-NEXT:    s_branch .LBB25_2
-; VI-NEXT:  .LBB25_4:
+; VI-NEXT:    s_branch .LBB25_6
+; VI-NEXT:  .LBB25_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -12602,7 +12846,7 @@ define inreg <13 x double> @bitcast_v26f32_to_v13f64_scalar(<26 x float> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB25_5: ; %end
+; VI-NEXT:  .LBB25_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -12667,10 +12911,18 @@ define inreg <13 x double> @bitcast_v26f32_to_v13f64_scalar(<26 x float> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_4
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v25, s61, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v24, s60, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v23, s59, 1.0
@@ -12697,10 +12949,8 @@ define inreg <13 x double> @bitcast_v26f32_to_v13f64_scalar(<26 x float> inreg %
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB25_5
-; GFX9-NEXT:  .LBB25_3:
-; GFX9-NEXT:    s_branch .LBB25_2
-; GFX9-NEXT:  .LBB25_4:
+; GFX9-NEXT:    s_branch .LBB25_6
+; GFX9-NEXT:  .LBB25_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -12733,7 +12983,7 @@ define inreg <13 x double> @bitcast_v26f32_to_v13f64_scalar(<26 x float> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB25_5: ; %end
+; GFX9-NEXT:  .LBB25_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -12799,11 +13049,16 @@ define inreg <13 x double> @bitcast_v26f32_to_v13f64_scalar(<26 x float> inreg %
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_4
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB25_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v25, s61, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v24, s60, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v23, s59, 1.0
@@ -12831,8 +13086,6 @@ define inreg <13 x double> @bitcast_v26f32_to_v13f64_scalar(<26 x float> inreg %
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB25_5
-; GFX11-NEXT:  .LBB25_3:
-; GFX11-NEXT:    s_branch .LBB25_2
 ; GFX11-NEXT:  .LBB25_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -13055,10 +13308,18 @@ define inreg <26 x float> @bitcast_v13f64_to_v26f32_scalar(<13 x double> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB27_3
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB27_4
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; SI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; SI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
@@ -13072,10 +13333,8 @@ define inreg <26 x float> @bitcast_v13f64_to_v26f32_scalar(<13 x double> inreg %
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB27_5
-; SI-NEXT:  .LBB27_3:
-; SI-NEXT:    s_branch .LBB27_2
-; SI-NEXT:  .LBB27_4:
+; SI-NEXT:    s_branch .LBB27_6
+; SI-NEXT:  .LBB27_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -13108,7 +13367,7 @@ define inreg <26 x float> @bitcast_v13f64_to_v26f32_scalar(<13 x double> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB27_5: ; %end
+; SI-NEXT:  .LBB27_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -13173,10 +13432,18 @@ define inreg <26 x float> @bitcast_v13f64_to_v26f32_scalar(<13 x double> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_3
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB27_4
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; VI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; VI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
@@ -13190,10 +13457,8 @@ define inreg <26 x float> @bitcast_v13f64_to_v26f32_scalar(<13 x double> inreg %
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB27_5
-; VI-NEXT:  .LBB27_3:
-; VI-NEXT:    s_branch .LBB27_2
-; VI-NEXT:  .LBB27_4:
+; VI-NEXT:    s_branch .LBB27_6
+; VI-NEXT:  .LBB27_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -13226,7 +13491,7 @@ define inreg <26 x float> @bitcast_v13f64_to_v26f32_scalar(<13 x double> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB27_5: ; %end
+; VI-NEXT:  .LBB27_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -13291,10 +13556,18 @@ define inreg <26 x float> @bitcast_v13f64_to_v26f32_scalar(<13 x double> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_4
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; GFX9-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
@@ -13308,10 +13581,8 @@ define inreg <26 x float> @bitcast_v13f64_to_v26f32_scalar(<13 x double> inreg %
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB27_5
-; GFX9-NEXT:  .LBB27_3:
-; GFX9-NEXT:    s_branch .LBB27_2
-; GFX9-NEXT:  .LBB27_4:
+; GFX9-NEXT:    s_branch .LBB27_6
+; GFX9-NEXT:  .LBB27_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -13344,7 +13615,7 @@ define inreg <26 x float> @bitcast_v13f64_to_v26f32_scalar(<13 x double> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB27_5: ; %end
+; GFX9-NEXT:  .LBB27_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -13410,11 +13681,16 @@ define inreg <26 x float> @bitcast_v13f64_to_v26f32_scalar(<13 x double> inreg %
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_4
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB27_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; GFX11-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; GFX11-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
@@ -13429,8 +13705,6 @@ define inreg <26 x float> @bitcast_v13f64_to_v26f32_scalar(<13 x double> inreg %
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB27_5
-; GFX11-NEXT:  .LBB27_3:
-; GFX11-NEXT:    s_branch .LBB27_2
 ; GFX11-NEXT:  .LBB27_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -14233,10 +14507,8 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v45, s36, 2
 ; SI-NEXT:    v_writelane_b32 v45, s37, 3
 ; SI-NEXT:    v_writelane_b32 v45, s38, 4
-; SI-NEXT:    v_writelane_b32 v45, s39, 5
-; SI-NEXT:    v_writelane_b32 v45, s48, 6
-; SI-NEXT:    v_writelane_b32 v45, s30, 7
-; SI-NEXT:    v_writelane_b32 v45, s31, 8
+; SI-NEXT:    v_writelane_b32 v45, s30, 5
+; SI-NEXT:    v_writelane_b32 v45, s31, 6
 ; SI-NEXT:    v_readfirstlane_b32 s14, v12
 ; SI-NEXT:    v_readfirstlane_b32 s5, v11
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
@@ -14251,17 +14523,17 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s15, v1
 ; SI-NEXT:    s_cmp_lg_u32 s14, 0
 ; SI-NEXT:    v_readfirstlane_b32 s14, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s48, s5, 16
-; SI-NEXT:    s_lshr_b32 s39, s7, 16
-; SI-NEXT:    s_lshr_b32 s38, s9, 16
-; SI-NEXT:    s_lshr_b32 s37, s11, 16
-; SI-NEXT:    s_lshr_b32 s36, s13, 16
-; SI-NEXT:    s_lshr_b32 s35, s15, 16
-; SI-NEXT:    s_lshr_b32 s34, s29, 16
-; SI-NEXT:    s_lshr_b32 s31, s27, 16
-; SI-NEXT:    s_lshr_b32 s30, s25, 16
+; SI-NEXT:    s_lshr_b32 s38, s5, 16
+; SI-NEXT:    s_lshr_b32 s37, s7, 16
+; SI-NEXT:    s_lshr_b32 s36, s9, 16
+; SI-NEXT:    s_lshr_b32 s35, s11, 16
+; SI-NEXT:    s_lshr_b32 s34, s13, 16
+; SI-NEXT:    s_lshr_b32 s31, s15, 16
+; SI-NEXT:    s_lshr_b32 s30, s29, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s27, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s25, 16
 ; SI-NEXT:    s_lshr_b32 s95, s23, 16
 ; SI-NEXT:    s_lshr_b32 s94, s21, 16
 ; SI-NEXT:    s_lshr_b32 s93, s19, 16
@@ -14279,8 +14551,42 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[90:91], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[90:91], -1
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[90:91], s[90:91], exec
+; SI-NEXT:    s_cselect_b32 s41, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s41, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v25, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v24, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v23, s7, 1.0
@@ -14338,36 +14644,8 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v43, 16, v3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshrrev_b32_e32 v44, 16, v1
-; SI-NEXT:    s_branch .LBB29_5
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:    s_branch .LBB29_6
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -14399,15 +14677,15 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v43, s93
 ; SI-NEXT:    v_mov_b32_e32 v42, s94
 ; SI-NEXT:    v_mov_b32_e32 v41, s95
-; SI-NEXT:    v_mov_b32_e32 v40, s30
-; SI-NEXT:    v_mov_b32_e32 v55, s31
-; SI-NEXT:    v_mov_b32_e32 v54, s34
-; SI-NEXT:    v_mov_b32_e32 v53, s35
-; SI-NEXT:    v_mov_b32_e32 v52, s36
-; SI-NEXT:    v_mov_b32_e32 v51, s37
-; SI-NEXT:    v_mov_b32_e32 v50, s38
-; SI-NEXT:    v_mov_b32_e32 v49, s39
-; SI-NEXT:    v_mov_b32_e32 v48, s48
+; SI-NEXT:    v_mov_b32_e32 v40, vcc_lo
+; SI-NEXT:    v_mov_b32_e32 v55, vcc_hi
+; SI-NEXT:    v_mov_b32_e32 v54, s30
+; SI-NEXT:    v_mov_b32_e32 v53, s31
+; SI-NEXT:    v_mov_b32_e32 v52, s34
+; SI-NEXT:    v_mov_b32_e32 v51, s35
+; SI-NEXT:    v_mov_b32_e32 v50, s36
+; SI-NEXT:    v_mov_b32_e32 v49, s37
+; SI-NEXT:    v_mov_b32_e32 v48, s38
 ; SI-NEXT:    v_mov_b32_e32 v26, s40
 ; SI-NEXT:    v_mov_b32_e32 v27, s42
 ; SI-NEXT:    v_mov_b32_e32 v28, s44
@@ -14421,7 +14699,7 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v36, s76
 ; SI-NEXT:    v_mov_b32_e32 v37, s78
 ; SI-NEXT:    v_mov_b32_e32 v38, s88
-; SI-NEXT:  .LBB29_5: ; %end
+; SI-NEXT:  .LBB29_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v38, 16, v38
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v37, 16, v37
@@ -14492,7 +14770,7 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v24, v24, v26
 ; SI-NEXT:    v_and_b32_e32 v25, 0xffff, v25
 ; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v48
-; SI-NEXT:    v_readlane_b32 s30, v45, 7
+; SI-NEXT:    v_readlane_b32 s30, v45, 5
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v38
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v37
 ; SI-NEXT:    v_or_b32_e32 v5, v5, v36
@@ -14506,9 +14784,7 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v21, v21, v28
 ; SI-NEXT:    v_or_b32_e32 v23, v23, v27
 ; SI-NEXT:    v_or_b32_e32 v25, v25, v26
-; SI-NEXT:    v_readlane_b32 s31, v45, 8
-; SI-NEXT:    v_readlane_b32 s48, v45, 6
-; SI-NEXT:    v_readlane_b32 s39, v45, 5
+; SI-NEXT:    v_readlane_b32 s31, v45, 6
 ; SI-NEXT:    v_readlane_b32 s38, v45, 4
 ; SI-NEXT:    v_readlane_b32 s37, v45, 3
 ; SI-NEXT:    v_readlane_b32 s36, v45, 2
@@ -14541,7 +14817,7 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s40, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s41, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s42, s6, 16
 ; VI-NEXT:    s_lshr_b32 s43, s7, 16
@@ -14569,8 +14845,42 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s89, s18, 16
 ; VI-NEXT:    s_lshr_b32 s90, s17, 16
 ; VI-NEXT:    s_lshr_b32 s91, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v25, s6, 1.0
 ; VI-NEXT:    v_add_f32_e64 v24, s7, 1.0
 ; VI-NEXT:    v_add_f32_e64 v23, s8, 1.0
@@ -14623,36 +14933,8 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v41, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v42, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v43, 16, v0
-; VI-NEXT:    s_branch .LBB29_5
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:    s_branch .LBB29_6
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -14705,7 +14987,7 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v28, s44
 ; VI-NEXT:    v_mov_b32_e32 v27, s43
 ; VI-NEXT:    v_mov_b32_e32 v26, s42
-; VI-NEXT:  .LBB29_5: ; %end
+; VI-NEXT:  .LBB29_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v43, 16, v43
 ; VI-NEXT:    v_lshlrev_b32_e32 v42, 16, v42
 ; VI-NEXT:    v_lshlrev_b32_e32 v41, 16, v41
@@ -14786,7 +15068,7 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s41, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s42, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s43, s7, 16
@@ -14814,8 +15096,42 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s89, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s90, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s91, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v25, s6, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v24, s7, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v23, s8, 1.0
@@ -14868,36 +15184,8 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v41, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v42, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v43, 16, v0
-; GFX9-NEXT:    s_branch .LBB29_5
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:    s_branch .LBB29_6
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -14950,7 +15238,7 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s44
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s43
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s42
-; GFX9-NEXT:  .LBB29_5: ; %end
+; GFX9-NEXT:  .LBB29_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -15023,11 +15311,11 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s11, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s12, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s14, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s12, s4, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s6, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s40, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s8, 16
@@ -15052,9 +15340,42 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s76, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s77, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s78, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-TRUE16-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB29_3
+; GFX11-TRUE16-NEXT:  .LBB29_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:  .LBB29_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s14, s14, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v25, s4, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v24, s5, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v23, s6, 1.0
@@ -15107,36 +15428,8 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v65, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v66, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v67, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB29_5
-; GFX11-TRUE16-NEXT:  .LBB29_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    s_branch .LBB29_2
-; GFX11-TRUE16-NEXT:  .LBB29_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB29_6
+; GFX11-TRUE16-NEXT:  .LBB29_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -15162,8 +15455,8 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v33, s44 :: v_dual_mov_b32 v32, s43
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
-; GFX11-TRUE16-NEXT:  .LBB29_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s13 :: v_dual_mov_b32 v26, s12
+; GFX11-TRUE16-NEXT:  .LBB29_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v67.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v66.l
@@ -15206,11 +15499,11 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s11, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s12, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s14, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s12, s4, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s6, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s40, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s8, 16
@@ -15235,9 +15528,42 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s76, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s77, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s78, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-FAKE16-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB29_3
+; GFX11-FAKE16-NEXT:  .LBB29_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:  .LBB29_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s14, s14, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v21, s4, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v22, s5, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v23, s6, 1.0
@@ -15290,36 +15616,8 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v65, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v66, 16, v4
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v67, 16, v5
-; GFX11-FAKE16-NEXT:    s_branch .LBB29_5
-; GFX11-FAKE16-NEXT:  .LBB29_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    s_branch .LBB29_2
-; GFX11-FAKE16-NEXT:  .LBB29_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB29_6
+; GFX11-FAKE16-NEXT:  .LBB29_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v5, s0 :: v_dual_mov_b32 v4, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, s2 :: v_dual_mov_b32 v2, s3
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s16 :: v_dual_mov_b32 v1, s17
@@ -15345,8 +15643,8 @@ define inreg <52 x i16> @bitcast_v26f32_to_v52i16_scalar(<26 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v33, s44 :: v_dual_mov_b32 v32, s43
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
-; GFX11-FAKE16-NEXT:  .LBB29_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v27, s13 :: v_dual_mov_b32 v26, s12
+; GFX11-FAKE16-NEXT:  .LBB29_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v5
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v4
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v69, 0xffff, v0
@@ -16598,10 +16896,8 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v26, s71, 21
 ; SI-NEXT:    v_writelane_b32 v26, s80, 22
 ; SI-NEXT:    v_writelane_b32 v26, s81, 23
-; SI-NEXT:    v_writelane_b32 v26, s82, 24
-; SI-NEXT:    v_writelane_b32 v26, s83, 25
-; SI-NEXT:    v_writelane_b32 v26, s30, 26
-; SI-NEXT:    v_writelane_b32 v26, s31, 27
+; SI-NEXT:    v_writelane_b32 v26, s30, 24
+; SI-NEXT:    v_writelane_b32 v26, s31, 25
 ; SI-NEXT:    v_readfirstlane_b32 s7, v11
 ; SI-NEXT:    v_readfirstlane_b32 s9, v10
 ; SI-NEXT:    v_readfirstlane_b32 s11, v9
@@ -16612,22 +16908,22 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s78, v4
 ; SI-NEXT:    v_readfirstlane_b32 s90, v3
 ; SI-NEXT:    v_readfirstlane_b32 s93, v2
-; SI-NEXT:    v_readfirstlane_b32 s30, v1
-; SI-NEXT:    v_readfirstlane_b32 s35, v0
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v1
+; SI-NEXT:    v_readfirstlane_b32 s31, v0
 ; SI-NEXT:    s_lshr_b32 s76, s29, 16
 ; SI-NEXT:    s_lshr_b32 s79, s28, 16
 ; SI-NEXT:    s_lshr_b32 s89, s27, 16
 ; SI-NEXT:    s_lshr_b32 s91, s26, 16
 ; SI-NEXT:    s_lshr_b32 s94, s25, 16
-; SI-NEXT:    s_lshr_b32 s31, s24, 16
-; SI-NEXT:    s_lshr_b32 s68, s23, 16
-; SI-NEXT:    s_lshr_b32 s69, s22, 16
-; SI-NEXT:    s_lshr_b32 s70, s21, 16
-; SI-NEXT:    s_lshr_b32 s71, s20, 16
-; SI-NEXT:    s_lshr_b32 s80, s19, 16
-; SI-NEXT:    s_lshr_b32 s81, s18, 16
-; SI-NEXT:    s_lshr_b32 s82, s17, 16
-; SI-NEXT:    s_lshr_b32 s83, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s24, 16
+; SI-NEXT:    s_lshr_b32 s34, s23, 16
+; SI-NEXT:    s_lshr_b32 s35, s22, 16
+; SI-NEXT:    s_lshr_b32 s68, s21, 16
+; SI-NEXT:    s_lshr_b32 s69, s20, 16
+; SI-NEXT:    s_lshr_b32 s70, s19, 16
+; SI-NEXT:    s_lshr_b32 s71, s18, 16
+; SI-NEXT:    s_lshr_b32 s80, s17, 16
+; SI-NEXT:    s_lshr_b32 s81, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -16638,38 +16934,38 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s77, s78, 16
 ; SI-NEXT:    s_lshr_b32 s88, s90, 16
 ; SI-NEXT:    s_lshr_b32 s92, s93, 16
-; SI-NEXT:    s_lshr_b32 s95, s30, 16
-; SI-NEXT:    s_lshr_b32 s34, s35, 16
+; SI-NEXT:    s_lshr_b32 s95, vcc_lo, 16
+; SI-NEXT:    s_lshr_b32 s30, s31, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_4
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s94, 16
@@ -16686,10 +16982,10 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s76, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s93, 0xffff
@@ -16722,51 +17018,60 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s61, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB31_3
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
@@ -16793,14 +17098,14 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s76, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s35, s35, 3
+; SI-NEXT:    s_add_i32 s31, s31, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s30, s30, 3
+; SI-NEXT:    s_add_i32 vcc_lo, vcc_lo, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s93, s93, 3
@@ -16854,8 +17159,8 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s61, s4, 0x30000
-; SI-NEXT:  .LBB31_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v26, 26
+; SI-NEXT:  .LBB31_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v26, 24
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -16882,9 +17187,7 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v23, s59
 ; SI-NEXT:    v_mov_b32_e32 v24, s60
 ; SI-NEXT:    v_mov_b32_e32 v25, s61
-; SI-NEXT:    v_readlane_b32 s31, v26, 27
-; SI-NEXT:    v_readlane_b32 s83, v26, 25
-; SI-NEXT:    v_readlane_b32 s82, v26, 24
+; SI-NEXT:    v_readlane_b32 s31, v26, 25
 ; SI-NEXT:    v_readlane_b32 s81, v26, 23
 ; SI-NEXT:    v_readlane_b32 s80, v26, 22
 ; SI-NEXT:    v_readlane_b32 s71, v26, 21
@@ -16914,9 +17217,6 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB31_2
 ;
 ; VI-LABEL: bitcast_v52i16_to_v26f32_scalar:
 ; VI:       ; %bb.0:
@@ -16952,10 +17252,8 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v26, s83, 25
 ; VI-NEXT:    v_writelane_b32 v26, s84, 26
 ; VI-NEXT:    v_writelane_b32 v26, s85, 27
-; VI-NEXT:    v_writelane_b32 v26, s86, 28
-; VI-NEXT:    v_writelane_b32 v26, s87, 29
-; VI-NEXT:    v_writelane_b32 v26, s30, 30
-; VI-NEXT:    v_writelane_b32 v26, s31, 31
+; VI-NEXT:    v_writelane_b32 v26, s30, 28
+; VI-NEXT:    v_writelane_b32 v26, s31, 29
 ; VI-NEXT:    v_readfirstlane_b32 s7, v11
 ; VI-NEXT:    v_readfirstlane_b32 s9, v10
 ; VI-NEXT:    v_readfirstlane_b32 s11, v9
@@ -16965,23 +17263,23 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s75, v5
 ; VI-NEXT:    v_readfirstlane_b32 s78, v4
 ; VI-NEXT:    v_readfirstlane_b32 s90, v3
-; VI-NEXT:    v_readfirstlane_b32 s31, v2
-; VI-NEXT:    v_readfirstlane_b32 s68, v1
-; VI-NEXT:    v_readfirstlane_b32 s71, v0
+; VI-NEXT:    v_readfirstlane_b32 vcc_hi, v2
+; VI-NEXT:    v_readfirstlane_b32 s34, v1
+; VI-NEXT:    v_readfirstlane_b32 s69, v0
 ; VI-NEXT:    s_lshr_b32 s76, s29, 16
 ; VI-NEXT:    s_lshr_b32 s79, s28, 16
 ; VI-NEXT:    s_lshr_b32 s89, s27, 16
 ; VI-NEXT:    s_lshr_b32 s91, s26, 16
-; VI-NEXT:    s_lshr_b32 s34, s25, 16
-; VI-NEXT:    s_lshr_b32 s69, s24, 16
-; VI-NEXT:    s_lshr_b32 s80, s23, 16
-; VI-NEXT:    s_lshr_b32 s81, s22, 16
-; VI-NEXT:    s_lshr_b32 s82, s21, 16
-; VI-NEXT:    s_lshr_b32 s83, s20, 16
-; VI-NEXT:    s_lshr_b32 s84, s19, 16
-; VI-NEXT:    s_lshr_b32 s85, s18, 16
-; VI-NEXT:    s_lshr_b32 s86, s17, 16
-; VI-NEXT:    s_lshr_b32 s87, s16, 16
+; VI-NEXT:    s_lshr_b32 s30, s25, 16
+; VI-NEXT:    s_lshr_b32 s35, s24, 16
+; VI-NEXT:    s_lshr_b32 s70, s23, 16
+; VI-NEXT:    s_lshr_b32 s71, s22, 16
+; VI-NEXT:    s_lshr_b32 s80, s21, 16
+; VI-NEXT:    s_lshr_b32 s81, s20, 16
+; VI-NEXT:    s_lshr_b32 s82, s19, 16
+; VI-NEXT:    s_lshr_b32 s83, s18, 16
+; VI-NEXT:    s_lshr_b32 s84, s17, 16
+; VI-NEXT:    s_lshr_b32 s85, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -16991,42 +17289,42 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s74, s75, 16
 ; VI-NEXT:    s_lshr_b32 s77, s78, 16
 ; VI-NEXT:    s_lshr_b32 s88, s90, 16
-; VI-NEXT:    s_lshr_b32 s30, s31, 16
-; VI-NEXT:    s_lshr_b32 s35, s68, 16
-; VI-NEXT:    s_lshr_b32 s70, s71, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, vcc_hi, 16
+; VI-NEXT:    s_lshr_b32 s31, s34, 16
+; VI-NEXT:    s_lshr_b32 s68, s69, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v12
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_4
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s86, 16
+; VI-NEXT:    s_lshl_b32 s41, s84, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -17040,14 +17338,14 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s68
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s34
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s31
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_hi
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s90
 ; VI-NEXT:    s_lshl_b32 s5, s88, 16
@@ -17076,56 +17374,65 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB31_3
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
@@ -17147,20 +17454,20 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s71, s71, 3
+; VI-NEXT:    s_add_i32 s69, s69, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s71, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, s69, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s68, s68, 3
+; VI-NEXT:    s_add_i32 s34, s34, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s68, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, s34, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s31, s31, 3
+; VI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; VI-NEXT:    s_add_i32 s51, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s31, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s90, s90, 3
 ; VI-NEXT:    s_add_i32 s52, s4, 0x30000
@@ -17208,8 +17515,8 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s61, s4, 0x30000
-; VI-NEXT:  .LBB31_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v26, 30
+; VI-NEXT:  .LBB31_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v26, 28
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -17236,9 +17543,7 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v23, s59
 ; VI-NEXT:    v_mov_b32_e32 v24, s60
 ; VI-NEXT:    v_mov_b32_e32 v25, s61
-; VI-NEXT:    v_readlane_b32 s31, v26, 31
-; VI-NEXT:    v_readlane_b32 s87, v26, 29
-; VI-NEXT:    v_readlane_b32 s86, v26, 28
+; VI-NEXT:    v_readlane_b32 s31, v26, 29
 ; VI-NEXT:    v_readlane_b32 s85, v26, 27
 ; VI-NEXT:    v_readlane_b32 s84, v26, 26
 ; VI-NEXT:    v_readlane_b32 s83, v26, 25
@@ -17272,9 +17577,6 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB31_2
 ;
 ; GFX9-LABEL: bitcast_v52i16_to_v26f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -17360,10 +17662,18 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s72
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s60, s60, s63
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s62
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_4
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -17390,10 +17700,8 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v23, s59, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v24, s60, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v25, s61, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB31_5
-; GFX9-NEXT:  .LBB31_3:
-; GFX9-NEXT:    s_branch .LBB31_2
-; GFX9-NEXT:  .LBB31_4:
+; GFX9-NEXT:    s_branch .LBB31_6
+; GFX9-NEXT:  .LBB31_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -17426,7 +17734,7 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB31_5: ; %end
+; GFX9-NEXT:  .LBB31_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -17511,11 +17819,16 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s24, s47, s60
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_4
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -17543,8 +17856,6 @@ define inreg <26 x float> @bitcast_v52i16_to_v26f32_scalar(<52 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v24, s24, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v25, s25, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_3:
-; GFX11-NEXT:    s_branch .LBB31_2
 ; GFX11-NEXT:  .LBB31_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -18330,10 +18641,8 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v45, s36, 2
 ; SI-NEXT:    v_writelane_b32 v45, s37, 3
 ; SI-NEXT:    v_writelane_b32 v45, s38, 4
-; SI-NEXT:    v_writelane_b32 v45, s39, 5
-; SI-NEXT:    v_writelane_b32 v45, s48, 6
-; SI-NEXT:    v_writelane_b32 v45, s30, 7
-; SI-NEXT:    v_writelane_b32 v45, s31, 8
+; SI-NEXT:    v_writelane_b32 v45, s30, 5
+; SI-NEXT:    v_writelane_b32 v45, s31, 6
 ; SI-NEXT:    v_readfirstlane_b32 s14, v12
 ; SI-NEXT:    v_readfirstlane_b32 s5, v11
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
@@ -18348,17 +18657,17 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s15, v1
 ; SI-NEXT:    s_cmp_lg_u32 s14, 0
 ; SI-NEXT:    v_readfirstlane_b32 s14, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s48, s5, 16
-; SI-NEXT:    s_lshr_b32 s39, s7, 16
-; SI-NEXT:    s_lshr_b32 s38, s9, 16
-; SI-NEXT:    s_lshr_b32 s37, s11, 16
-; SI-NEXT:    s_lshr_b32 s36, s13, 16
-; SI-NEXT:    s_lshr_b32 s35, s15, 16
-; SI-NEXT:    s_lshr_b32 s34, s29, 16
-; SI-NEXT:    s_lshr_b32 s31, s27, 16
-; SI-NEXT:    s_lshr_b32 s30, s25, 16
+; SI-NEXT:    s_lshr_b32 s38, s5, 16
+; SI-NEXT:    s_lshr_b32 s37, s7, 16
+; SI-NEXT:    s_lshr_b32 s36, s9, 16
+; SI-NEXT:    s_lshr_b32 s35, s11, 16
+; SI-NEXT:    s_lshr_b32 s34, s13, 16
+; SI-NEXT:    s_lshr_b32 s31, s15, 16
+; SI-NEXT:    s_lshr_b32 s30, s29, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s27, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s25, 16
 ; SI-NEXT:    s_lshr_b32 s95, s23, 16
 ; SI-NEXT:    s_lshr_b32 s94, s21, 16
 ; SI-NEXT:    s_lshr_b32 s93, s19, 16
@@ -18376,8 +18685,42 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[90:91], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[90:91], -1
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[90:91], s[90:91], exec
+; SI-NEXT:    s_cselect_b32 s41, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s41, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v25, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v24, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v23, s7, 1.0
@@ -18435,36 +18778,8 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v43, 16, v3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshrrev_b32_e32 v44, 16, v1
-; SI-NEXT:    s_branch .LBB33_5
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:    s_branch .LBB33_6
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -18496,15 +18811,15 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v43, s93
 ; SI-NEXT:    v_mov_b32_e32 v42, s94
 ; SI-NEXT:    v_mov_b32_e32 v41, s95
-; SI-NEXT:    v_mov_b32_e32 v40, s30
-; SI-NEXT:    v_mov_b32_e32 v55, s31
-; SI-NEXT:    v_mov_b32_e32 v54, s34
-; SI-NEXT:    v_mov_b32_e32 v53, s35
-; SI-NEXT:    v_mov_b32_e32 v52, s36
-; SI-NEXT:    v_mov_b32_e32 v51, s37
-; SI-NEXT:    v_mov_b32_e32 v50, s38
-; SI-NEXT:    v_mov_b32_e32 v49, s39
-; SI-NEXT:    v_mov_b32_e32 v48, s48
+; SI-NEXT:    v_mov_b32_e32 v40, vcc_lo
+; SI-NEXT:    v_mov_b32_e32 v55, vcc_hi
+; SI-NEXT:    v_mov_b32_e32 v54, s30
+; SI-NEXT:    v_mov_b32_e32 v53, s31
+; SI-NEXT:    v_mov_b32_e32 v52, s34
+; SI-NEXT:    v_mov_b32_e32 v51, s35
+; SI-NEXT:    v_mov_b32_e32 v50, s36
+; SI-NEXT:    v_mov_b32_e32 v49, s37
+; SI-NEXT:    v_mov_b32_e32 v48, s38
 ; SI-NEXT:    v_mov_b32_e32 v26, s40
 ; SI-NEXT:    v_mov_b32_e32 v27, s42
 ; SI-NEXT:    v_mov_b32_e32 v28, s44
@@ -18518,7 +18833,7 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v36, s76
 ; SI-NEXT:    v_mov_b32_e32 v37, s78
 ; SI-NEXT:    v_mov_b32_e32 v38, s88
-; SI-NEXT:  .LBB33_5: ; %end
+; SI-NEXT:  .LBB33_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v38, 16, v38
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v37, 16, v37
@@ -18589,7 +18904,7 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v24, v24, v26
 ; SI-NEXT:    v_and_b32_e32 v25, 0xffff, v25
 ; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v48
-; SI-NEXT:    v_readlane_b32 s30, v45, 7
+; SI-NEXT:    v_readlane_b32 s30, v45, 5
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v38
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v37
 ; SI-NEXT:    v_or_b32_e32 v5, v5, v36
@@ -18603,9 +18918,7 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v21, v21, v28
 ; SI-NEXT:    v_or_b32_e32 v23, v23, v27
 ; SI-NEXT:    v_or_b32_e32 v25, v25, v26
-; SI-NEXT:    v_readlane_b32 s31, v45, 8
-; SI-NEXT:    v_readlane_b32 s48, v45, 6
-; SI-NEXT:    v_readlane_b32 s39, v45, 5
+; SI-NEXT:    v_readlane_b32 s31, v45, 6
 ; SI-NEXT:    v_readlane_b32 s38, v45, 4
 ; SI-NEXT:    v_readlane_b32 s37, v45, 3
 ; SI-NEXT:    v_readlane_b32 s36, v45, 2
@@ -18638,7 +18951,7 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s40, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s41, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s42, s6, 16
 ; VI-NEXT:    s_lshr_b32 s43, s7, 16
@@ -18666,8 +18979,42 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s89, s18, 16
 ; VI-NEXT:    s_lshr_b32 s90, s17, 16
 ; VI-NEXT:    s_lshr_b32 s91, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v25, s6, 1.0
 ; VI-NEXT:    v_add_f32_e64 v24, s7, 1.0
 ; VI-NEXT:    v_add_f32_e64 v23, s8, 1.0
@@ -18720,36 +19067,8 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v41, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v42, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v43, 16, v0
-; VI-NEXT:    s_branch .LBB33_5
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:    s_branch .LBB33_6
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -18802,7 +19121,7 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v28, s44
 ; VI-NEXT:    v_mov_b32_e32 v27, s43
 ; VI-NEXT:    v_mov_b32_e32 v26, s42
-; VI-NEXT:  .LBB33_5: ; %end
+; VI-NEXT:  .LBB33_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v43, 16, v43
 ; VI-NEXT:    v_lshlrev_b32_e32 v42, 16, v42
 ; VI-NEXT:    v_lshlrev_b32_e32 v41, 16, v41
@@ -18883,7 +19202,7 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s41, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s42, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s43, s7, 16
@@ -18911,8 +19230,42 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s89, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s90, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s91, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v25, s6, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v24, s7, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v23, s8, 1.0
@@ -18965,36 +19318,8 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v41, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v42, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v43, 16, v0
-; GFX9-NEXT:    s_branch .LBB33_5
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:    s_branch .LBB33_6
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -19047,7 +19372,7 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s44
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s43
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s42
-; GFX9-NEXT:  .LBB33_5: ; %end
+; GFX9-NEXT:  .LBB33_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -19120,11 +19445,11 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s11, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s12, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s14, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s12, s4, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s6, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s40, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s8, 16
@@ -19149,9 +19474,42 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s76, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s77, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s78, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-TRUE16-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB33_3
+; GFX11-TRUE16-NEXT:  .LBB33_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:  .LBB33_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s14, s14, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v25, s4, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v24, s5, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v23, s6, 1.0
@@ -19204,36 +19562,8 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v65, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v66, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v67, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB33_5
-; GFX11-TRUE16-NEXT:  .LBB33_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    s_branch .LBB33_2
-; GFX11-TRUE16-NEXT:  .LBB33_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB33_6
+; GFX11-TRUE16-NEXT:  .LBB33_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -19259,8 +19589,8 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v33, s44 :: v_dual_mov_b32 v32, s43
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
-; GFX11-TRUE16-NEXT:  .LBB33_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s13 :: v_dual_mov_b32 v26, s12
+; GFX11-TRUE16-NEXT:  .LBB33_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v67.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v66.l
@@ -19303,11 +19633,11 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s10, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s11, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s12, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s14, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s12, s4, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s6, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s40, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s8, 16
@@ -19332,9 +19662,42 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s76, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s77, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s78, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-FAKE16-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB33_3
+; GFX11-FAKE16-NEXT:  .LBB33_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:  .LBB33_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s14, s14, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v21, s4, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v22, s5, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v23, s6, 1.0
@@ -19387,36 +19750,8 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v65, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v66, 16, v4
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v67, 16, v5
-; GFX11-FAKE16-NEXT:    s_branch .LBB33_5
-; GFX11-FAKE16-NEXT:  .LBB33_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    s_branch .LBB33_2
-; GFX11-FAKE16-NEXT:  .LBB33_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB33_6
+; GFX11-FAKE16-NEXT:  .LBB33_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v5, s0 :: v_dual_mov_b32 v4, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, s2 :: v_dual_mov_b32 v2, s3
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s16 :: v_dual_mov_b32 v1, s17
@@ -19442,8 +19777,8 @@ define inreg <52 x half> @bitcast_v26f32_to_v52f16_scalar(<26 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v33, s44 :: v_dual_mov_b32 v32, s43
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v27, s14 :: v_dual_mov_b32 v26, s13
-; GFX11-FAKE16-NEXT:  .LBB33_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v27, s13 :: v_dual_mov_b32 v26, s12
+; GFX11-FAKE16-NEXT:  .LBB33_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v5
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v4
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v69, 0xffff, v0
@@ -20816,10 +21151,8 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v32, s71, 21
 ; SI-NEXT:    v_writelane_b32 v32, s80, 22
 ; SI-NEXT:    v_writelane_b32 v32, s81, 23
-; SI-NEXT:    v_writelane_b32 v32, s82, 24
-; SI-NEXT:    v_writelane_b32 v32, s83, 25
-; SI-NEXT:    v_writelane_b32 v32, s30, 26
-; SI-NEXT:    v_writelane_b32 v32, s31, 27
+; SI-NEXT:    v_writelane_b32 v32, s30, 24
+; SI-NEXT:    v_writelane_b32 v32, s31, 25
 ; SI-NEXT:    v_readfirstlane_b32 s6, v11
 ; SI-NEXT:    v_readfirstlane_b32 s8, v10
 ; SI-NEXT:    v_readfirstlane_b32 s10, v9
@@ -20834,18 +21167,18 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s94, v0
 ; SI-NEXT:    s_lshr_b32 s90, s29, 16
 ; SI-NEXT:    s_lshr_b32 s93, s28, 16
-; SI-NEXT:    s_lshr_b32 s30, s27, 16
-; SI-NEXT:    s_lshr_b32 s31, s26, 16
-; SI-NEXT:    s_lshr_b32 s34, s25, 16
-; SI-NEXT:    s_lshr_b32 s35, s24, 16
-; SI-NEXT:    s_lshr_b32 s68, s23, 16
-; SI-NEXT:    s_lshr_b32 s69, s22, 16
-; SI-NEXT:    s_lshr_b32 s70, s21, 16
-; SI-NEXT:    s_lshr_b32 s71, s20, 16
-; SI-NEXT:    s_lshr_b32 s80, s19, 16
-; SI-NEXT:    s_lshr_b32 s81, s18, 16
-; SI-NEXT:    s_lshr_b32 s82, s17, 16
-; SI-NEXT:    s_lshr_b32 s83, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s27, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s26, 16
+; SI-NEXT:    s_lshr_b32 s30, s25, 16
+; SI-NEXT:    s_lshr_b32 s31, s24, 16
+; SI-NEXT:    s_lshr_b32 s34, s23, 16
+; SI-NEXT:    s_lshr_b32 s35, s22, 16
+; SI-NEXT:    s_lshr_b32 s68, s21, 16
+; SI-NEXT:    s_lshr_b32 s69, s20, 16
+; SI-NEXT:    s_lshr_b32 s70, s19, 16
+; SI-NEXT:    s_lshr_b32 s71, s18, 16
+; SI-NEXT:    s_lshr_b32 s80, s17, 16
+; SI-NEXT:    s_lshr_b32 s81, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -20860,43 +21193,43 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s95, s94, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_3
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -20940,11 +21273,20 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s61, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB35_4
-; SI-NEXT:  .LBB35_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s83
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s81
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s80
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -20956,7 +21298,7 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s18
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s71
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -20964,11 +21306,11 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s80
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, s70
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v4, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s19
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s69
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -20979,7 +21321,7 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s20
 ; SI-NEXT:    v_or_b32_e32 v3, v4, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s68
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
@@ -20988,11 +21330,11 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s35
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s22
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s34
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
@@ -21003,7 +21345,7 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s23
 ; SI-NEXT:    v_or_b32_e32 v6, v7, v6
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s31
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s24
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
@@ -21012,11 +21354,11 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s30
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_or_b32_e32 v8, v10, v8
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s25
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, vcc_hi
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
@@ -21027,7 +21369,7 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s26
 ; SI-NEXT:    v_or_b32_e32 v9, v10, v9
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v11
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, vcc_lo
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s27
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
@@ -21150,11 +21492,8 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v24, v25, v24
 ; SI-NEXT:    v_lshlrev_b32_e32 v25, 16, v26
 ; SI-NEXT:    v_or_b32_e32 v25, v27, v25
-; SI-NEXT:    s_branch .LBB35_5
-; SI-NEXT:  .LBB35_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB35_2
-; SI-NEXT:  .LBB35_4:
+; SI-NEXT:    s_branch .LBB35_6
+; SI-NEXT:  .LBB35_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -21187,11 +21526,9 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB35_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 26
-; SI-NEXT:    v_readlane_b32 s31, v32, 27
-; SI-NEXT:    v_readlane_b32 s83, v32, 25
-; SI-NEXT:    v_readlane_b32 s82, v32, 24
+; SI-NEXT:  .LBB35_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 24
+; SI-NEXT:    v_readlane_b32 s31, v32, 25
 ; SI-NEXT:    v_readlane_b32 s81, v32, 23
 ; SI-NEXT:    v_readlane_b32 s80, v32, 22
 ; SI-NEXT:    v_readlane_b32 s71, v32, 21
@@ -21256,10 +21593,8 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v32, s83, 25
 ; VI-NEXT:    v_writelane_b32 v32, s84, 26
 ; VI-NEXT:    v_writelane_b32 v32, s85, 27
-; VI-NEXT:    v_writelane_b32 v32, s86, 28
-; VI-NEXT:    v_writelane_b32 v32, s87, 29
-; VI-NEXT:    v_writelane_b32 v32, s30, 30
-; VI-NEXT:    v_writelane_b32 v32, s31, 31
+; VI-NEXT:    v_writelane_b32 v32, s30, 28
+; VI-NEXT:    v_writelane_b32 v32, s31, 29
 ; VI-NEXT:    v_readfirstlane_b32 s6, v11
 ; VI-NEXT:    v_readfirstlane_b32 s8, v10
 ; VI-NEXT:    v_readfirstlane_b32 s10, v9
@@ -21269,23 +21604,23 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s75, v5
 ; VI-NEXT:    v_readfirstlane_b32 s78, v4
 ; VI-NEXT:    v_readfirstlane_b32 s89, v3
-; VI-NEXT:    v_readfirstlane_b32 s30, v2
-; VI-NEXT:    v_readfirstlane_b32 s35, v1
-; VI-NEXT:    v_readfirstlane_b32 s71, v0
+; VI-NEXT:    v_readfirstlane_b32 vcc_lo, v2
+; VI-NEXT:    v_readfirstlane_b32 s31, v1
+; VI-NEXT:    v_readfirstlane_b32 s69, v0
 ; VI-NEXT:    s_lshr_b32 s74, s29, 16
 ; VI-NEXT:    s_lshr_b32 s77, s28, 16
 ; VI-NEXT:    s_lshr_b32 s88, s27, 16
 ; VI-NEXT:    s_lshr_b32 s90, s26, 16
-; VI-NEXT:    s_lshr_b32 s31, s25, 16
-; VI-NEXT:    s_lshr_b32 s68, s24, 16
-; VI-NEXT:    s_lshr_b32 s70, s23, 16
-; VI-NEXT:    s_lshr_b32 s81, s22, 16
-; VI-NEXT:    s_lshr_b32 s82, s21, 16
-; VI-NEXT:    s_lshr_b32 s83, s20, 16
-; VI-NEXT:    s_lshr_b32 s84, s19, 16
-; VI-NEXT:    s_lshr_b32 s85, s18, 16
-; VI-NEXT:    s_lshr_b32 s86, s17, 16
-; VI-NEXT:    s_lshr_b32 s87, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s25, 16
+; VI-NEXT:    s_lshr_b32 s34, s24, 16
+; VI-NEXT:    s_lshr_b32 s68, s23, 16
+; VI-NEXT:    s_lshr_b32 s71, s22, 16
+; VI-NEXT:    s_lshr_b32 s80, s21, 16
+; VI-NEXT:    s_lshr_b32 s81, s20, 16
+; VI-NEXT:    s_lshr_b32 s82, s19, 16
+; VI-NEXT:    s_lshr_b32 s83, s18, 16
+; VI-NEXT:    s_lshr_b32 s84, s17, 16
+; VI-NEXT:    s_lshr_b32 s85, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -21295,42 +21630,42 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s76, s75, 16
 ; VI-NEXT:    s_lshr_b32 s79, s78, 16
 ; VI-NEXT:    s_lshr_b32 s91, s89, 16
-; VI-NEXT:    s_lshr_b32 s34, s30, 16
-; VI-NEXT:    s_lshr_b32 s69, s35, 16
-; VI-NEXT:    s_lshr_b32 s80, s71, 16
+; VI-NEXT:    s_lshr_b32 s30, vcc_lo, 16
+; VI-NEXT:    s_lshr_b32 s35, s31, 16
+; VI-NEXT:    s_lshr_b32 s70, s69, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v12
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s86, 16
+; VI-NEXT:    s_lshl_b32 s41, s84, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -21344,14 +21679,14 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s35
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s31
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s30
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_lo
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s89
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -21380,46 +21715,55 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v25, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s87
-; VI-NEXT:    v_mov_b32_e32 v2, s86
+; VI-NEXT:    v_mov_b32_e32 v0, s85
+; VI-NEXT:    v_mov_b32_e32 v2, s84
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v25
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v25
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s85
+; VI-NEXT:    v_mov_b32_e32 v2, s83
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v25
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s84
+; VI-NEXT:    v_mov_b32_e32 v3, s82
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v25
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s83
+; VI-NEXT:    v_mov_b32_e32 v4, s81
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v25
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s82
+; VI-NEXT:    v_mov_b32_e32 v5, s80
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v25
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s81
+; VI-NEXT:    v_mov_b32_e32 v6, s71
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v25
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s70
+; VI-NEXT:    v_mov_b32_e32 v7, s68
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v25
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s68
+; VI-NEXT:    v_mov_b32_e32 v8, s34
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v25
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
-; VI-NEXT:    v_mov_b32_e32 v9, s31
+; VI-NEXT:    v_mov_b32_e32 v9, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v9, v9, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v10, s25, v25
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
@@ -21439,17 +21783,17 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v25
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s80
+; VI-NEXT:    v_mov_b32_e32 v14, s70
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s71, v25
+; VI-NEXT:    v_add_f16_e32 v15, s69, v25
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s69
+; VI-NEXT:    v_mov_b32_e32 v15, s35
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v16, s35, v25
+; VI-NEXT:    v_add_f16_e32 v16, s31, v25
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
-; VI-NEXT:    v_mov_b32_e32 v16, s34
+; VI-NEXT:    v_mov_b32_e32 v16, s30
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v17, s30, v25
+; VI-NEXT:    v_add_f16_e32 v17, vcc_lo, v25
 ; VI-NEXT:    v_or_b32_e32 v16, v17, v16
 ; VI-NEXT:    v_mov_b32_e32 v17, s91
 ; VI-NEXT:    v_add_f16_sdwa v17, v17, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
@@ -21487,11 +21831,8 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_sdwa v26, v26, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v25, s6, v25
 ; VI-NEXT:    v_or_b32_e32 v25, v25, v26
-; VI-NEXT:    s_branch .LBB35_5
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:    s_branch .LBB35_6
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -21524,11 +21865,9 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB35_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 30
-; VI-NEXT:    v_readlane_b32 s31, v32, 31
-; VI-NEXT:    v_readlane_b32 s87, v32, 29
-; VI-NEXT:    v_readlane_b32 s86, v32, 28
+; VI-NEXT:  .LBB35_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 28
+; VI-NEXT:    v_readlane_b32 s31, v32, 29
 ; VI-NEXT:    v_readlane_b32 s85, v32, 27
 ; VI-NEXT:    v_readlane_b32 s84, v32, 26
 ; VI-NEXT:    v_readlane_b32 s83, v32, 25
@@ -21647,10 +21986,18 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s72
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s60, s60, s63
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s62
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v25, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v25 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v25 op_sel_hi:[1,0]
@@ -21678,10 +22025,8 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v23, s59, v25 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v24, s60, v25 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v25, s61, v25 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB35_5
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:    s_branch .LBB35_6
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -21714,7 +22059,7 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB35_5: ; %end
+; GFX9-NEXT:  .LBB35_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -21799,11 +22144,16 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s24, s47, s60
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -21831,8 +22181,6 @@ define inreg <26 x float> @bitcast_v52f16_to_v26f32_scalar(<52 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v24, 0x200, s24 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v25, 0x200, s25 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -22067,10 +22415,18 @@ define inreg <13 x double> @bitcast_v13i64_to_v13f64_scalar(<13 x i64> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s40, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s41, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_4
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB37_3
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
@@ -22097,7 +22453,7 @@ define inreg <13 x double> @bitcast_v13i64_to_v13f64_scalar(<13 x i64> inreg %a,
 ; SI-NEXT:    s_addc_u32 s8, s8, 0
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
-; SI-NEXT:  .LBB37_3: ; %end
+; SI-NEXT:  .LBB37_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -22125,8 +22481,6 @@ define inreg <13 x double> @bitcast_v13i64_to_v13f64_scalar(<13 x i64> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v24, s7
 ; SI-NEXT:    v_mov_b32_e32 v25, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB37_4:
-; SI-NEXT:    s_branch .LBB37_2
 ;
 ; VI-LABEL: bitcast_v13i64_to_v13f64_scalar:
 ; VI:       ; %bb.0:
@@ -22145,10 +22499,18 @@ define inreg <13 x double> @bitcast_v13i64_to_v13f64_scalar(<13 x i64> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s40, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s41, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_4
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_3
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -22175,7 +22537,7 @@ define inreg <13 x double> @bitcast_v13i64_to_v13f64_scalar(<13 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s8, s8, 0
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
-; VI-NEXT:  .LBB37_3: ; %end
+; VI-NEXT:  .LBB37_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -22203,8 +22565,6 @@ define inreg <13 x double> @bitcast_v13i64_to_v13f64_scalar(<13 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v24, s7
 ; VI-NEXT:    v_mov_b32_e32 v25, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_4:
-; VI-NEXT:    s_branch .LBB37_2
 ;
 ; GFX9-LABEL: bitcast_v13i64_to_v13f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -22223,10 +22583,18 @@ define inreg <13 x double> @bitcast_v13i64_to_v13f64_scalar(<13 x i64> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s41, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_3
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -22253,7 +22621,7 @@ define inreg <13 x double> @bitcast_v13i64_to_v13f64_scalar(<13 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s8, s8, 0
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
-; GFX9-NEXT:  .LBB37_3: ; %end
+; GFX9-NEXT:  .LBB37_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -22281,8 +22649,6 @@ define inreg <13 x double> @bitcast_v13i64_to_v13f64_scalar(<13 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_4:
-; GFX9-NEXT:    s_branch .LBB37_2
 ;
 ; GFX11-LABEL: bitcast_v13i64_to_v13f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -22298,11 +22664,16 @@ define inreg <13 x double> @bitcast_v13i64_to_v13f64_scalar(<13 x i64> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s11, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s12, 0
 ; GFX11-NEXT:    s_mov_b32 s12, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_3
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s12, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -22329,7 +22700,7 @@ define inreg <13 x double> @bitcast_v13i64_to_v13f64_scalar(<13 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
-; GFX11-NEXT:  .LBB37_3: ; %end
+; GFX11-NEXT:  .LBB37_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -22344,8 +22715,6 @@ define inreg <13 x double> @bitcast_v13i64_to_v13f64_scalar(<13 x i64> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s7 :: v_dual_mov_b32 v23, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s5 :: v_dual_mov_b32 v25, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_4:
-; GFX11-NEXT:    s_branch .LBB37_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -22533,10 +22902,18 @@ define inreg <13 x i64> @bitcast_v13f64_to_v13i64_scalar(<13 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_3
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB39_4
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -22550,10 +22927,8 @@ define inreg <13 x i64> @bitcast_v13f64_to_v13i64_scalar(<13 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; SI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; SI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
-; SI-NEXT:    s_branch .LBB39_5
-; SI-NEXT:  .LBB39_3:
-; SI-NEXT:    s_branch .LBB39_2
-; SI-NEXT:  .LBB39_4:
+; SI-NEXT:    s_branch .LBB39_6
+; SI-NEXT:  .LBB39_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -22586,7 +22961,7 @@ define inreg <13 x i64> @bitcast_v13f64_to_v13i64_scalar(<13 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB39_5: ; %end
+; SI-NEXT:  .LBB39_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -22651,10 +23026,18 @@ define inreg <13 x i64> @bitcast_v13f64_to_v13i64_scalar(<13 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_3
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_4
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -22668,10 +23051,8 @@ define inreg <13 x i64> @bitcast_v13f64_to_v13i64_scalar(<13 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; VI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; VI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
-; VI-NEXT:    s_branch .LBB39_5
-; VI-NEXT:  .LBB39_3:
-; VI-NEXT:    s_branch .LBB39_2
-; VI-NEXT:  .LBB39_4:
+; VI-NEXT:    s_branch .LBB39_6
+; VI-NEXT:  .LBB39_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -22704,7 +23085,7 @@ define inreg <13 x i64> @bitcast_v13f64_to_v13i64_scalar(<13 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB39_5: ; %end
+; VI-NEXT:  .LBB39_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -22769,10 +23150,18 @@ define inreg <13 x i64> @bitcast_v13f64_to_v13i64_scalar(<13 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_4
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -22786,10 +23175,8 @@ define inreg <13 x i64> @bitcast_v13f64_to_v13i64_scalar(<13 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[56:57], 1.0
 ; GFX9-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; GFX9-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
-; GFX9-NEXT:    s_branch .LBB39_5
-; GFX9-NEXT:  .LBB39_3:
-; GFX9-NEXT:    s_branch .LBB39_2
-; GFX9-NEXT:  .LBB39_4:
+; GFX9-NEXT:    s_branch .LBB39_6
+; GFX9-NEXT:  .LBB39_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -22822,7 +23209,7 @@ define inreg <13 x i64> @bitcast_v13f64_to_v13i64_scalar(<13 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB39_5: ; %end
+; GFX9-NEXT:  .LBB39_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -22888,11 +23275,16 @@ define inreg <13 x i64> @bitcast_v13f64_to_v13i64_scalar(<13 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -22907,8 +23299,6 @@ define inreg <13 x i64> @bitcast_v13f64_to_v13i64_scalar(<13 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; GFX11-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; GFX11-NEXT:    s_branch .LBB39_5
-; GFX11-NEXT:  .LBB39_3:
-; GFX11-NEXT:    s_branch .LBB39_2
 ; GFX11-NEXT:  .LBB39_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -23746,10 +24136,8 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v26, s36, 2
 ; SI-NEXT:    v_writelane_b32 v26, s37, 3
 ; SI-NEXT:    v_writelane_b32 v26, s38, 4
-; SI-NEXT:    v_writelane_b32 v26, s39, 5
-; SI-NEXT:    v_writelane_b32 v26, s48, 6
-; SI-NEXT:    v_writelane_b32 v26, s30, 7
-; SI-NEXT:    v_writelane_b32 v26, s31, 8
+; SI-NEXT:    v_writelane_b32 v26, s30, 5
+; SI-NEXT:    v_writelane_b32 v26, s31, 6
 ; SI-NEXT:    v_readfirstlane_b32 s14, v12
 ; SI-NEXT:    v_readfirstlane_b32 s5, v11
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
@@ -23764,21 +24152,21 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s15, v1
 ; SI-NEXT:    s_cmp_lg_u32 s14, 0
 ; SI-NEXT:    v_readfirstlane_b32 s14, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_4
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s92, s5, 16
 ; SI-NEXT:    s_lshr_b32 s93, s7, 16
 ; SI-NEXT:    s_lshr_b32 s94, s9, 16
 ; SI-NEXT:    s_lshr_b32 s95, s11, 16
-; SI-NEXT:    s_lshr_b32 s30, s13, 16
-; SI-NEXT:    s_lshr_b32 s31, s15, 16
-; SI-NEXT:    s_lshr_b32 s34, s29, 16
-; SI-NEXT:    s_lshr_b32 s35, s27, 16
-; SI-NEXT:    s_lshr_b32 s36, s25, 16
-; SI-NEXT:    s_lshr_b32 s37, s23, 16
-; SI-NEXT:    s_lshr_b32 s38, s21, 16
-; SI-NEXT:    s_lshr_b32 s39, s19, 16
-; SI-NEXT:    s_lshr_b32 s48, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s13, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s15, 16
+; SI-NEXT:    s_lshr_b32 s30, s29, 16
+; SI-NEXT:    s_lshr_b32 s31, s27, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s35, s23, 16
+; SI-NEXT:    s_lshr_b32 s36, s21, 16
+; SI-NEXT:    s_lshr_b32 s37, s19, 16
+; SI-NEXT:    s_lshr_b32 s38, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[8:9], 16
@@ -23792,8 +24180,42 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB41_3
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[90:91], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[90:91], -1
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[90:91], s[90:91], exec
+; SI-NEXT:    s_cselect_b32 s41, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s41, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -23824,15 +24246,15 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s93, s7, 16
 ; SI-NEXT:    s_lshr_b32 s94, s9, 16
 ; SI-NEXT:    s_lshr_b32 s95, s11, 16
-; SI-NEXT:    s_lshr_b32 s30, s13, 16
-; SI-NEXT:    s_lshr_b32 s31, s15, 16
-; SI-NEXT:    s_lshr_b32 s34, s29, 16
-; SI-NEXT:    s_lshr_b32 s35, s27, 16
-; SI-NEXT:    s_lshr_b32 s36, s25, 16
-; SI-NEXT:    s_lshr_b32 s37, s23, 16
-; SI-NEXT:    s_lshr_b32 s38, s21, 16
-; SI-NEXT:    s_lshr_b32 s39, s19, 16
-; SI-NEXT:    s_lshr_b32 s48, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s13, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s15, 16
+; SI-NEXT:    s_lshr_b32 s30, s29, 16
+; SI-NEXT:    s_lshr_b32 s31, s27, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s35, s23, 16
+; SI-NEXT:    s_lshr_b32 s36, s21, 16
+; SI-NEXT:    s_lshr_b32 s37, s19, 16
+; SI-NEXT:    s_lshr_b32 s38, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[8:9], 16
@@ -23846,60 +24268,60 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[16:17], 16
-; SI-NEXT:  .LBB41_3: ; %end
+; SI-NEXT:  .LBB41_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s41, s88, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s41
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s48, 16
+; SI-NEXT:    s_lshl_b32 s41, s38, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s41
 ; SI-NEXT:    s_lshl_b32 s41, s78, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s18, s18, s41
 ; SI-NEXT:    s_and_b32 s19, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s39, 16
+; SI-NEXT:    s_lshl_b32 s41, s37, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s41
 ; SI-NEXT:    s_lshl_b32 s41, s76, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s20, s20, s41
 ; SI-NEXT:    s_and_b32 s21, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s38, 16
+; SI-NEXT:    s_lshl_b32 s41, s36, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s41
 ; SI-NEXT:    s_lshl_b32 s41, s74, 16
 ; SI-NEXT:    s_and_b32 s22, s22, 0xffff
 ; SI-NEXT:    s_or_b32 s22, s22, s41
 ; SI-NEXT:    s_and_b32 s23, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s37, 16
+; SI-NEXT:    s_lshl_b32 s41, s35, 16
 ; SI-NEXT:    s_or_b32 s23, s23, s41
 ; SI-NEXT:    s_lshl_b32 s41, s72, 16
 ; SI-NEXT:    s_and_b32 s24, s24, 0xffff
 ; SI-NEXT:    s_or_b32 s24, s24, s41
 ; SI-NEXT:    s_and_b32 s25, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s36, 16
+; SI-NEXT:    s_lshl_b32 s41, s34, 16
 ; SI-NEXT:    s_or_b32 s25, s25, s41
 ; SI-NEXT:    s_and_b32 s26, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s62, 16
 ; SI-NEXT:    s_or_b32 s26, s26, s41
 ; SI-NEXT:    s_and_b32 s27, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s35, 16
+; SI-NEXT:    s_lshl_b32 s41, s31, 16
 ; SI-NEXT:    s_or_b32 s27, s27, s41
 ; SI-NEXT:    s_and_b32 s28, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s60, 16
 ; SI-NEXT:    s_or_b32 s28, s28, s41
 ; SI-NEXT:    s_and_b32 s29, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s34, 16
+; SI-NEXT:    s_lshl_b32 s41, s30, 16
 ; SI-NEXT:    s_or_b32 s29, s29, s41
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s58, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s41
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s31, 16
+; SI-NEXT:    s_lshl_b32 s41, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s41
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s56, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s41
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s30, 16
+; SI-NEXT:    s_lshl_b32 s41, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s41
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s46, 16
@@ -23925,7 +24347,7 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s40, s92, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s41
 ; SI-NEXT:    s_or_b32 s5, s5, s40
-; SI-NEXT:    v_readlane_b32 s30, v26, 7
+; SI-NEXT:    v_readlane_b32 s30, v26, 5
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -23952,9 +24374,7 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v23, s7
 ; SI-NEXT:    v_mov_b32_e32 v24, s4
 ; SI-NEXT:    v_mov_b32_e32 v25, s5
-; SI-NEXT:    v_readlane_b32 s31, v26, 8
-; SI-NEXT:    v_readlane_b32 s48, v26, 6
-; SI-NEXT:    v_readlane_b32 s39, v26, 5
+; SI-NEXT:    v_readlane_b32 s31, v26, 6
 ; SI-NEXT:    v_readlane_b32 s38, v26, 4
 ; SI-NEXT:    v_readlane_b32 s37, v26, 3
 ; SI-NEXT:    v_readlane_b32 s36, v26, 2
@@ -23965,34 +24385,6 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB41_4:
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    s_branch .LBB41_2
 ;
 ; VI-LABEL: bitcast_v13i64_to_v52i16_scalar:
 ; VI:       ; %bb.0:
@@ -24011,7 +24403,7 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s40, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s41, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_4
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s42, s6, 16
 ; VI-NEXT:    s_lshr_b32 s43, s7, 16
@@ -24039,8 +24431,42 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s18, 16
 ; VI-NEXT:    s_lshr_b32 s90, s17, 16
 ; VI-NEXT:    s_lshr_b32 s91, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB41_3
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -24093,7 +24519,7 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s18, 16
 ; VI-NEXT:    s_lshr_b32 s90, s17, 16
 ; VI-NEXT:    s_lshr_b32 s91, s16, 16
-; VI-NEXT:  .LBB41_3: ; %end
+; VI-NEXT:  .LBB41_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -24199,34 +24625,6 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v24, s7
 ; VI-NEXT:    v_mov_b32_e32 v25, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_4:
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    s_branch .LBB41_2
 ;
 ; GFX9-LABEL: bitcast_v13i64_to_v52i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -24245,7 +24643,7 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s41, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s42, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s43, s7, 16
@@ -24273,8 +24671,42 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s89, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s90, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s91, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_3
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -24327,7 +24759,7 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s89, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s90, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s91, s16, 16
-; GFX9-NEXT:  .LBB41_3: ; %end
+; GFX9-NEXT:  .LBB41_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s91
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s90
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s89
@@ -24381,34 +24813,6 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    s_branch .LBB41_2
 ;
 ; GFX11-LABEL: bitcast_v13i64_to_v52i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -24424,7 +24828,7 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s11, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s12, 0
 ; GFX11-NEXT:    s_mov_b32 s78, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s12, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s13, s5, 16
@@ -24452,9 +24856,42 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s75, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s76, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s77, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s78
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_3
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB41_3
+; GFX11-NEXT:  .LBB41_2:
+; GFX11-NEXT:    s_mov_b32 s78, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:  .LBB41_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s78, s78, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s78, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s78, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -24507,7 +24944,7 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s75, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s76, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s77, s0, 16
-; GFX11-NEXT:  .LBB41_3: ; %end
+; GFX11-NEXT:  .LBB41_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s77
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s76
@@ -24549,34 +24986,6 @@ define inreg <52 x i16> @bitcast_v13i64_to_v52i16_scalar(<13 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s7 :: v_dual_mov_b32 v23, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s5 :: v_dual_mov_b32 v25, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    s_branch .LBB41_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -25775,10 +26184,8 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v26, s71, 21
 ; SI-NEXT:    v_writelane_b32 v26, s80, 22
 ; SI-NEXT:    v_writelane_b32 v26, s81, 23
-; SI-NEXT:    v_writelane_b32 v26, s82, 24
-; SI-NEXT:    v_writelane_b32 v26, s83, 25
-; SI-NEXT:    v_writelane_b32 v26, s30, 26
-; SI-NEXT:    v_writelane_b32 v26, s31, 27
+; SI-NEXT:    v_writelane_b32 v26, s30, 24
+; SI-NEXT:    v_writelane_b32 v26, s31, 25
 ; SI-NEXT:    v_readfirstlane_b32 s7, v11
 ; SI-NEXT:    v_readfirstlane_b32 s9, v10
 ; SI-NEXT:    v_readfirstlane_b32 s11, v9
@@ -25789,22 +26196,22 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s78, v4
 ; SI-NEXT:    v_readfirstlane_b32 s90, v3
 ; SI-NEXT:    v_readfirstlane_b32 s93, v2
-; SI-NEXT:    v_readfirstlane_b32 s30, v1
-; SI-NEXT:    v_readfirstlane_b32 s35, v0
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v1
+; SI-NEXT:    v_readfirstlane_b32 s31, v0
 ; SI-NEXT:    s_lshr_b32 s76, s29, 16
 ; SI-NEXT:    s_lshr_b32 s79, s28, 16
 ; SI-NEXT:    s_lshr_b32 s89, s27, 16
 ; SI-NEXT:    s_lshr_b32 s91, s26, 16
 ; SI-NEXT:    s_lshr_b32 s94, s25, 16
-; SI-NEXT:    s_lshr_b32 s31, s24, 16
-; SI-NEXT:    s_lshr_b32 s68, s23, 16
-; SI-NEXT:    s_lshr_b32 s69, s22, 16
-; SI-NEXT:    s_lshr_b32 s70, s21, 16
-; SI-NEXT:    s_lshr_b32 s71, s20, 16
-; SI-NEXT:    s_lshr_b32 s80, s19, 16
-; SI-NEXT:    s_lshr_b32 s81, s18, 16
-; SI-NEXT:    s_lshr_b32 s82, s17, 16
-; SI-NEXT:    s_lshr_b32 s83, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s24, 16
+; SI-NEXT:    s_lshr_b32 s34, s23, 16
+; SI-NEXT:    s_lshr_b32 s35, s22, 16
+; SI-NEXT:    s_lshr_b32 s68, s21, 16
+; SI-NEXT:    s_lshr_b32 s69, s20, 16
+; SI-NEXT:    s_lshr_b32 s70, s19, 16
+; SI-NEXT:    s_lshr_b32 s71, s18, 16
+; SI-NEXT:    s_lshr_b32 s80, s17, 16
+; SI-NEXT:    s_lshr_b32 s81, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -25815,38 +26222,38 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s77, s78, 16
 ; SI-NEXT:    s_lshr_b32 s88, s90, 16
 ; SI-NEXT:    s_lshr_b32 s92, s93, 16
-; SI-NEXT:    s_lshr_b32 s95, s30, 16
-; SI-NEXT:    s_lshr_b32 s34, s35, 16
+; SI-NEXT:    s_lshr_b32 s95, vcc_lo, 16
+; SI-NEXT:    s_lshr_b32 s30, s31, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_4
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s94, 16
@@ -25863,10 +26270,10 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s76, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s93, 0xffff
@@ -25899,51 +26306,60 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s61, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB43_3
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
@@ -25970,14 +26386,14 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s76, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s35, s35, 3
+; SI-NEXT:    s_add_i32 s31, s31, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s30, s30, 3
+; SI-NEXT:    s_add_i32 vcc_lo, vcc_lo, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s93, s93, 3
@@ -26031,8 +26447,8 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s61, s4, 0x30000
-; SI-NEXT:  .LBB43_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v26, 26
+; SI-NEXT:  .LBB43_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v26, 24
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -26059,9 +26475,7 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v23, s59
 ; SI-NEXT:    v_mov_b32_e32 v24, s60
 ; SI-NEXT:    v_mov_b32_e32 v25, s61
-; SI-NEXT:    v_readlane_b32 s31, v26, 27
-; SI-NEXT:    v_readlane_b32 s83, v26, 25
-; SI-NEXT:    v_readlane_b32 s82, v26, 24
+; SI-NEXT:    v_readlane_b32 s31, v26, 25
 ; SI-NEXT:    v_readlane_b32 s81, v26, 23
 ; SI-NEXT:    v_readlane_b32 s80, v26, 22
 ; SI-NEXT:    v_readlane_b32 s71, v26, 21
@@ -26091,9 +26505,6 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB43_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB43_2
 ;
 ; VI-LABEL: bitcast_v52i16_to_v13i64_scalar:
 ; VI:       ; %bb.0:
@@ -26129,10 +26540,8 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    v_writelane_b32 v26, s83, 25
 ; VI-NEXT:    v_writelane_b32 v26, s84, 26
 ; VI-NEXT:    v_writelane_b32 v26, s85, 27
-; VI-NEXT:    v_writelane_b32 v26, s86, 28
-; VI-NEXT:    v_writelane_b32 v26, s87, 29
-; VI-NEXT:    v_writelane_b32 v26, s30, 30
-; VI-NEXT:    v_writelane_b32 v26, s31, 31
+; VI-NEXT:    v_writelane_b32 v26, s30, 28
+; VI-NEXT:    v_writelane_b32 v26, s31, 29
 ; VI-NEXT:    v_readfirstlane_b32 s7, v11
 ; VI-NEXT:    v_readfirstlane_b32 s9, v10
 ; VI-NEXT:    v_readfirstlane_b32 s11, v9
@@ -26142,23 +26551,23 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s75, v5
 ; VI-NEXT:    v_readfirstlane_b32 s78, v4
 ; VI-NEXT:    v_readfirstlane_b32 s90, v3
-; VI-NEXT:    v_readfirstlane_b32 s31, v2
-; VI-NEXT:    v_readfirstlane_b32 s68, v1
-; VI-NEXT:    v_readfirstlane_b32 s71, v0
+; VI-NEXT:    v_readfirstlane_b32 vcc_hi, v2
+; VI-NEXT:    v_readfirstlane_b32 s34, v1
+; VI-NEXT:    v_readfirstlane_b32 s69, v0
 ; VI-NEXT:    s_lshr_b32 s76, s29, 16
 ; VI-NEXT:    s_lshr_b32 s79, s28, 16
 ; VI-NEXT:    s_lshr_b32 s89, s27, 16
 ; VI-NEXT:    s_lshr_b32 s91, s26, 16
-; VI-NEXT:    s_lshr_b32 s34, s25, 16
-; VI-NEXT:    s_lshr_b32 s69, s24, 16
-; VI-NEXT:    s_lshr_b32 s80, s23, 16
-; VI-NEXT:    s_lshr_b32 s81, s22, 16
-; VI-NEXT:    s_lshr_b32 s82, s21, 16
-; VI-NEXT:    s_lshr_b32 s83, s20, 16
-; VI-NEXT:    s_lshr_b32 s84, s19, 16
-; VI-NEXT:    s_lshr_b32 s85, s18, 16
-; VI-NEXT:    s_lshr_b32 s86, s17, 16
-; VI-NEXT:    s_lshr_b32 s87, s16, 16
+; VI-NEXT:    s_lshr_b32 s30, s25, 16
+; VI-NEXT:    s_lshr_b32 s35, s24, 16
+; VI-NEXT:    s_lshr_b32 s70, s23, 16
+; VI-NEXT:    s_lshr_b32 s71, s22, 16
+; VI-NEXT:    s_lshr_b32 s80, s21, 16
+; VI-NEXT:    s_lshr_b32 s81, s20, 16
+; VI-NEXT:    s_lshr_b32 s82, s19, 16
+; VI-NEXT:    s_lshr_b32 s83, s18, 16
+; VI-NEXT:    s_lshr_b32 s84, s17, 16
+; VI-NEXT:    s_lshr_b32 s85, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -26168,42 +26577,42 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s74, s75, 16
 ; VI-NEXT:    s_lshr_b32 s77, s78, 16
 ; VI-NEXT:    s_lshr_b32 s88, s90, 16
-; VI-NEXT:    s_lshr_b32 s30, s31, 16
-; VI-NEXT:    s_lshr_b32 s35, s68, 16
-; VI-NEXT:    s_lshr_b32 s70, s71, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, vcc_hi, 16
+; VI-NEXT:    s_lshr_b32 s31, s34, 16
+; VI-NEXT:    s_lshr_b32 s68, s69, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v12
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_4
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s86, 16
+; VI-NEXT:    s_lshl_b32 s41, s84, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -26217,14 +26626,14 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s68
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s34
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s31
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_hi
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s90
 ; VI-NEXT:    s_lshl_b32 s5, s88, 16
@@ -26253,56 +26662,65 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB43_3
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
@@ -26324,20 +26742,20 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s71, s71, 3
+; VI-NEXT:    s_add_i32 s69, s69, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s71, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, s69, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s68, s68, 3
+; VI-NEXT:    s_add_i32 s34, s34, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s68, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, s34, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s31, s31, 3
+; VI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; VI-NEXT:    s_add_i32 s51, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s31, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s90, s90, 3
 ; VI-NEXT:    s_add_i32 s52, s4, 0x30000
@@ -26385,8 +26803,8 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s61, s4, 0x30000
-; VI-NEXT:  .LBB43_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v26, 30
+; VI-NEXT:  .LBB43_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v26, 28
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -26413,9 +26831,7 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v23, s59
 ; VI-NEXT:    v_mov_b32_e32 v24, s60
 ; VI-NEXT:    v_mov_b32_e32 v25, s61
-; VI-NEXT:    v_readlane_b32 s31, v26, 31
-; VI-NEXT:    v_readlane_b32 s87, v26, 29
-; VI-NEXT:    v_readlane_b32 s86, v26, 28
+; VI-NEXT:    v_readlane_b32 s31, v26, 29
 ; VI-NEXT:    v_readlane_b32 s85, v26, 27
 ; VI-NEXT:    v_readlane_b32 s84, v26, 26
 ; VI-NEXT:    v_readlane_b32 s83, v26, 25
@@ -26449,9 +26865,6 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB43_2
 ;
 ; GFX9-LABEL: bitcast_v52i16_to_v13i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -26537,10 +26950,18 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s72
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s60, s60, s63
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s62
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -26567,10 +26988,8 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v23, s59, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v24, s60, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v25, s61, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB43_5
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:    s_branch .LBB43_6
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -26603,7 +27022,7 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB43_5: ; %end
+; GFX9-NEXT:  .LBB43_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -26688,11 +27107,16 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s24, s47, s60
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB43_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -26720,8 +27144,6 @@ define inreg <13 x i64> @bitcast_v52i16_to_v13i64_scalar(<52 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v24, s24, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v25, s25, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_3:
-; GFX11-NEXT:    s_branch .LBB43_2
 ; GFX11-NEXT:  .LBB43_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -27542,10 +27964,8 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v26, s36, 2
 ; SI-NEXT:    v_writelane_b32 v26, s37, 3
 ; SI-NEXT:    v_writelane_b32 v26, s38, 4
-; SI-NEXT:    v_writelane_b32 v26, s39, 5
-; SI-NEXT:    v_writelane_b32 v26, s48, 6
-; SI-NEXT:    v_writelane_b32 v26, s30, 7
-; SI-NEXT:    v_writelane_b32 v26, s31, 8
+; SI-NEXT:    v_writelane_b32 v26, s30, 5
+; SI-NEXT:    v_writelane_b32 v26, s31, 6
 ; SI-NEXT:    v_readfirstlane_b32 s14, v12
 ; SI-NEXT:    v_readfirstlane_b32 s5, v11
 ; SI-NEXT:    v_readfirstlane_b32 s4, v10
@@ -27560,21 +27980,21 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s15, v1
 ; SI-NEXT:    s_cmp_lg_u32 s14, 0
 ; SI-NEXT:    v_readfirstlane_b32 s14, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_4
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s92, s5, 16
 ; SI-NEXT:    s_lshr_b32 s93, s7, 16
 ; SI-NEXT:    s_lshr_b32 s94, s9, 16
 ; SI-NEXT:    s_lshr_b32 s95, s11, 16
-; SI-NEXT:    s_lshr_b32 s30, s13, 16
-; SI-NEXT:    s_lshr_b32 s31, s15, 16
-; SI-NEXT:    s_lshr_b32 s34, s29, 16
-; SI-NEXT:    s_lshr_b32 s35, s27, 16
-; SI-NEXT:    s_lshr_b32 s36, s25, 16
-; SI-NEXT:    s_lshr_b32 s37, s23, 16
-; SI-NEXT:    s_lshr_b32 s38, s21, 16
-; SI-NEXT:    s_lshr_b32 s39, s19, 16
-; SI-NEXT:    s_lshr_b32 s48, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s13, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s15, 16
+; SI-NEXT:    s_lshr_b32 s30, s29, 16
+; SI-NEXT:    s_lshr_b32 s31, s27, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s35, s23, 16
+; SI-NEXT:    s_lshr_b32 s36, s21, 16
+; SI-NEXT:    s_lshr_b32 s37, s19, 16
+; SI-NEXT:    s_lshr_b32 s38, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[8:9], 16
@@ -27588,8 +28008,42 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB45_3
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[90:91], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[90:91], -1
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[90:91], s[90:91], exec
+; SI-NEXT:    s_cselect_b32 s41, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s41, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -27620,15 +28074,15 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s93, s7, 16
 ; SI-NEXT:    s_lshr_b32 s94, s9, 16
 ; SI-NEXT:    s_lshr_b32 s95, s11, 16
-; SI-NEXT:    s_lshr_b32 s30, s13, 16
-; SI-NEXT:    s_lshr_b32 s31, s15, 16
-; SI-NEXT:    s_lshr_b32 s34, s29, 16
-; SI-NEXT:    s_lshr_b32 s35, s27, 16
-; SI-NEXT:    s_lshr_b32 s36, s25, 16
-; SI-NEXT:    s_lshr_b32 s37, s23, 16
-; SI-NEXT:    s_lshr_b32 s38, s21, 16
-; SI-NEXT:    s_lshr_b32 s39, s19, 16
-; SI-NEXT:    s_lshr_b32 s48, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s13, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s15, 16
+; SI-NEXT:    s_lshr_b32 s30, s29, 16
+; SI-NEXT:    s_lshr_b32 s31, s27, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s35, s23, 16
+; SI-NEXT:    s_lshr_b32 s36, s21, 16
+; SI-NEXT:    s_lshr_b32 s37, s19, 16
+; SI-NEXT:    s_lshr_b32 s38, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[40:41], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[8:9], 16
@@ -27642,60 +28096,60 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[16:17], 16
-; SI-NEXT:  .LBB45_3: ; %end
+; SI-NEXT:  .LBB45_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s41, s88, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s41
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s48, 16
+; SI-NEXT:    s_lshl_b32 s41, s38, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s41
 ; SI-NEXT:    s_lshl_b32 s41, s78, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s18, s18, s41
 ; SI-NEXT:    s_and_b32 s19, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s39, 16
+; SI-NEXT:    s_lshl_b32 s41, s37, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s41
 ; SI-NEXT:    s_lshl_b32 s41, s76, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s20, s20, s41
 ; SI-NEXT:    s_and_b32 s21, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s38, 16
+; SI-NEXT:    s_lshl_b32 s41, s36, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s41
 ; SI-NEXT:    s_lshl_b32 s41, s74, 16
 ; SI-NEXT:    s_and_b32 s22, s22, 0xffff
 ; SI-NEXT:    s_or_b32 s22, s22, s41
 ; SI-NEXT:    s_and_b32 s23, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s37, 16
+; SI-NEXT:    s_lshl_b32 s41, s35, 16
 ; SI-NEXT:    s_or_b32 s23, s23, s41
 ; SI-NEXT:    s_lshl_b32 s41, s72, 16
 ; SI-NEXT:    s_and_b32 s24, s24, 0xffff
 ; SI-NEXT:    s_or_b32 s24, s24, s41
 ; SI-NEXT:    s_and_b32 s25, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s36, 16
+; SI-NEXT:    s_lshl_b32 s41, s34, 16
 ; SI-NEXT:    s_or_b32 s25, s25, s41
 ; SI-NEXT:    s_and_b32 s26, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s62, 16
 ; SI-NEXT:    s_or_b32 s26, s26, s41
 ; SI-NEXT:    s_and_b32 s27, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s35, 16
+; SI-NEXT:    s_lshl_b32 s41, s31, 16
 ; SI-NEXT:    s_or_b32 s27, s27, s41
 ; SI-NEXT:    s_and_b32 s28, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s60, 16
 ; SI-NEXT:    s_or_b32 s28, s28, s41
 ; SI-NEXT:    s_and_b32 s29, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s34, 16
+; SI-NEXT:    s_lshl_b32 s41, s30, 16
 ; SI-NEXT:    s_or_b32 s29, s29, s41
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s58, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s41
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s31, 16
+; SI-NEXT:    s_lshl_b32 s41, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s41
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s56, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s41
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s30, 16
+; SI-NEXT:    s_lshl_b32 s41, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s41
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_lshl_b32 s41, s46, 16
@@ -27721,7 +28175,7 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s40, s92, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s41
 ; SI-NEXT:    s_or_b32 s5, s5, s40
-; SI-NEXT:    v_readlane_b32 s30, v26, 7
+; SI-NEXT:    v_readlane_b32 s30, v26, 5
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -27748,9 +28202,7 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v23, s7
 ; SI-NEXT:    v_mov_b32_e32 v24, s4
 ; SI-NEXT:    v_mov_b32_e32 v25, s5
-; SI-NEXT:    v_readlane_b32 s31, v26, 8
-; SI-NEXT:    v_readlane_b32 s48, v26, 6
-; SI-NEXT:    v_readlane_b32 s39, v26, 5
+; SI-NEXT:    v_readlane_b32 s31, v26, 6
 ; SI-NEXT:    v_readlane_b32 s38, v26, 4
 ; SI-NEXT:    v_readlane_b32 s37, v26, 3
 ; SI-NEXT:    v_readlane_b32 s36, v26, 2
@@ -27761,34 +28213,6 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB45_4:
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    s_branch .LBB45_2
 ;
 ; VI-LABEL: bitcast_v13i64_to_v52f16_scalar:
 ; VI:       ; %bb.0:
@@ -27807,7 +28231,7 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s40, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s41, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_4
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s42, s6, 16
 ; VI-NEXT:    s_lshr_b32 s43, s7, 16
@@ -27835,8 +28259,42 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s89, s18, 16
 ; VI-NEXT:    s_lshr_b32 s90, s17, 16
 ; VI-NEXT:    s_lshr_b32 s91, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB45_3
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -27889,7 +28347,7 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s89, s18, 16
 ; VI-NEXT:    s_lshr_b32 s90, s17, 16
 ; VI-NEXT:    s_lshr_b32 s91, s16, 16
-; VI-NEXT:  .LBB45_3: ; %end
+; VI-NEXT:  .LBB45_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -27995,34 +28453,6 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v24, s7
 ; VI-NEXT:    v_mov_b32_e32 v25, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_4:
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    s_branch .LBB45_2
 ;
 ; GFX9-LABEL: bitcast_v13i64_to_v52f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -28041,7 +28471,7 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s40, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s41, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s42, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s43, s7, 16
@@ -28069,8 +28499,42 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s89, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s90, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s91, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_3
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -28123,7 +28587,7 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s89, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s90, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s91, s16, 16
-; GFX9-NEXT:  .LBB45_3: ; %end
+; GFX9-NEXT:  .LBB45_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s91
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s90
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s89
@@ -28177,34 +28641,6 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    s_branch .LBB45_2
 ;
 ; GFX11-LABEL: bitcast_v13i64_to_v52f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -28220,7 +28656,7 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s11, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s12, 0
 ; GFX11-NEXT:    s_mov_b32 s78, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s12, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s13, s5, 16
@@ -28248,9 +28684,42 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s75, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s76, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s77, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s78
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_3
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB45_3
+; GFX11-NEXT:  .LBB45_2:
+; GFX11-NEXT:    s_mov_b32 s78, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:  .LBB45_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s78, s78, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s78, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s78, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -28303,7 +28772,7 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s75, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s76, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s77, s0, 16
-; GFX11-NEXT:  .LBB45_3: ; %end
+; GFX11-NEXT:  .LBB45_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s77
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s76
@@ -28345,34 +28814,6 @@ define inreg <52 x half> @bitcast_v13i64_to_v52f16_scalar(<13 x i64> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v22, s7 :: v_dual_mov_b32 v23, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s5 :: v_dual_mov_b32 v25, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    s_branch .LBB45_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -29692,10 +30133,8 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v32, s71, 21
 ; SI-NEXT:    v_writelane_b32 v32, s80, 22
 ; SI-NEXT:    v_writelane_b32 v32, s81, 23
-; SI-NEXT:    v_writelane_b32 v32, s82, 24
-; SI-NEXT:    v_writelane_b32 v32, s83, 25
-; SI-NEXT:    v_writelane_b32 v32, s30, 26
-; SI-NEXT:    v_writelane_b32 v32, s31, 27
+; SI-NEXT:    v_writelane_b32 v32, s30, 24
+; SI-NEXT:    v_writelane_b32 v32, s31, 25
 ; SI-NEXT:    v_readfirstlane_b32 s6, v11
 ; SI-NEXT:    v_readfirstlane_b32 s8, v10
 ; SI-NEXT:    v_readfirstlane_b32 s10, v9
@@ -29710,18 +30149,18 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s94, v0
 ; SI-NEXT:    s_lshr_b32 s90, s29, 16
 ; SI-NEXT:    s_lshr_b32 s93, s28, 16
-; SI-NEXT:    s_lshr_b32 s30, s27, 16
-; SI-NEXT:    s_lshr_b32 s31, s26, 16
-; SI-NEXT:    s_lshr_b32 s34, s25, 16
-; SI-NEXT:    s_lshr_b32 s35, s24, 16
-; SI-NEXT:    s_lshr_b32 s68, s23, 16
-; SI-NEXT:    s_lshr_b32 s69, s22, 16
-; SI-NEXT:    s_lshr_b32 s70, s21, 16
-; SI-NEXT:    s_lshr_b32 s71, s20, 16
-; SI-NEXT:    s_lshr_b32 s80, s19, 16
-; SI-NEXT:    s_lshr_b32 s81, s18, 16
-; SI-NEXT:    s_lshr_b32 s82, s17, 16
-; SI-NEXT:    s_lshr_b32 s83, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s27, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s26, 16
+; SI-NEXT:    s_lshr_b32 s30, s25, 16
+; SI-NEXT:    s_lshr_b32 s31, s24, 16
+; SI-NEXT:    s_lshr_b32 s34, s23, 16
+; SI-NEXT:    s_lshr_b32 s35, s22, 16
+; SI-NEXT:    s_lshr_b32 s68, s21, 16
+; SI-NEXT:    s_lshr_b32 s69, s20, 16
+; SI-NEXT:    s_lshr_b32 s70, s19, 16
+; SI-NEXT:    s_lshr_b32 s71, s18, 16
+; SI-NEXT:    s_lshr_b32 s80, s17, 16
+; SI-NEXT:    s_lshr_b32 s81, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -29736,43 +30175,43 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s95, s94, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB47_3
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -29816,11 +30255,20 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s61, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB47_4
-; SI-NEXT:  .LBB47_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s83
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s81
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s80
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -29832,7 +30280,7 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s18
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s71
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -29840,11 +30288,11 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s80
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, s70
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v4, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s19
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s69
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -29855,7 +30303,7 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s20
 ; SI-NEXT:    v_or_b32_e32 v3, v4, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s68
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
@@ -29864,11 +30312,11 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s35
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s22
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s34
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
@@ -29879,7 +30327,7 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s23
 ; SI-NEXT:    v_or_b32_e32 v6, v7, v6
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s31
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s24
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
@@ -29888,11 +30336,11 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s30
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_or_b32_e32 v8, v10, v8
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s25
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, vcc_hi
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
@@ -29903,7 +30351,7 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s26
 ; SI-NEXT:    v_or_b32_e32 v9, v10, v9
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v11
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, vcc_lo
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s27
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
@@ -30026,11 +30474,8 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v24, v25, v24
 ; SI-NEXT:    v_lshlrev_b32_e32 v25, 16, v26
 ; SI-NEXT:    v_or_b32_e32 v25, v27, v25
-; SI-NEXT:    s_branch .LBB47_5
-; SI-NEXT:  .LBB47_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB47_2
-; SI-NEXT:  .LBB47_4:
+; SI-NEXT:    s_branch .LBB47_6
+; SI-NEXT:  .LBB47_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -30063,11 +30508,9 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB47_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 26
-; SI-NEXT:    v_readlane_b32 s31, v32, 27
-; SI-NEXT:    v_readlane_b32 s83, v32, 25
-; SI-NEXT:    v_readlane_b32 s82, v32, 24
+; SI-NEXT:  .LBB47_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 24
+; SI-NEXT:    v_readlane_b32 s31, v32, 25
 ; SI-NEXT:    v_readlane_b32 s81, v32, 23
 ; SI-NEXT:    v_readlane_b32 s80, v32, 22
 ; SI-NEXT:    v_readlane_b32 s71, v32, 21
@@ -30132,10 +30575,8 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    v_writelane_b32 v32, s83, 25
 ; VI-NEXT:    v_writelane_b32 v32, s84, 26
 ; VI-NEXT:    v_writelane_b32 v32, s85, 27
-; VI-NEXT:    v_writelane_b32 v32, s86, 28
-; VI-NEXT:    v_writelane_b32 v32, s87, 29
-; VI-NEXT:    v_writelane_b32 v32, s30, 30
-; VI-NEXT:    v_writelane_b32 v32, s31, 31
+; VI-NEXT:    v_writelane_b32 v32, s30, 28
+; VI-NEXT:    v_writelane_b32 v32, s31, 29
 ; VI-NEXT:    v_readfirstlane_b32 s6, v11
 ; VI-NEXT:    v_readfirstlane_b32 s8, v10
 ; VI-NEXT:    v_readfirstlane_b32 s10, v9
@@ -30145,23 +30586,23 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s75, v5
 ; VI-NEXT:    v_readfirstlane_b32 s78, v4
 ; VI-NEXT:    v_readfirstlane_b32 s89, v3
-; VI-NEXT:    v_readfirstlane_b32 s30, v2
-; VI-NEXT:    v_readfirstlane_b32 s35, v1
-; VI-NEXT:    v_readfirstlane_b32 s71, v0
+; VI-NEXT:    v_readfirstlane_b32 vcc_lo, v2
+; VI-NEXT:    v_readfirstlane_b32 s31, v1
+; VI-NEXT:    v_readfirstlane_b32 s69, v0
 ; VI-NEXT:    s_lshr_b32 s74, s29, 16
 ; VI-NEXT:    s_lshr_b32 s77, s28, 16
 ; VI-NEXT:    s_lshr_b32 s88, s27, 16
 ; VI-NEXT:    s_lshr_b32 s90, s26, 16
-; VI-NEXT:    s_lshr_b32 s31, s25, 16
-; VI-NEXT:    s_lshr_b32 s68, s24, 16
-; VI-NEXT:    s_lshr_b32 s70, s23, 16
-; VI-NEXT:    s_lshr_b32 s81, s22, 16
-; VI-NEXT:    s_lshr_b32 s82, s21, 16
-; VI-NEXT:    s_lshr_b32 s83, s20, 16
-; VI-NEXT:    s_lshr_b32 s84, s19, 16
-; VI-NEXT:    s_lshr_b32 s85, s18, 16
-; VI-NEXT:    s_lshr_b32 s86, s17, 16
-; VI-NEXT:    s_lshr_b32 s87, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s25, 16
+; VI-NEXT:    s_lshr_b32 s34, s24, 16
+; VI-NEXT:    s_lshr_b32 s68, s23, 16
+; VI-NEXT:    s_lshr_b32 s71, s22, 16
+; VI-NEXT:    s_lshr_b32 s80, s21, 16
+; VI-NEXT:    s_lshr_b32 s81, s20, 16
+; VI-NEXT:    s_lshr_b32 s82, s19, 16
+; VI-NEXT:    s_lshr_b32 s83, s18, 16
+; VI-NEXT:    s_lshr_b32 s84, s17, 16
+; VI-NEXT:    s_lshr_b32 s85, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -30171,42 +30612,42 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s76, s75, 16
 ; VI-NEXT:    s_lshr_b32 s79, s78, 16
 ; VI-NEXT:    s_lshr_b32 s91, s89, 16
-; VI-NEXT:    s_lshr_b32 s34, s30, 16
-; VI-NEXT:    s_lshr_b32 s69, s35, 16
-; VI-NEXT:    s_lshr_b32 s80, s71, 16
+; VI-NEXT:    s_lshr_b32 s30, vcc_lo, 16
+; VI-NEXT:    s_lshr_b32 s35, s31, 16
+; VI-NEXT:    s_lshr_b32 s70, s69, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v12
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s86, 16
+; VI-NEXT:    s_lshl_b32 s41, s84, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -30220,14 +30661,14 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s35
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s31
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s30
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_lo
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s89
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -30256,46 +30697,55 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v25, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s87
-; VI-NEXT:    v_mov_b32_e32 v2, s86
+; VI-NEXT:    v_mov_b32_e32 v0, s85
+; VI-NEXT:    v_mov_b32_e32 v2, s84
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v25
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v25
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s85
+; VI-NEXT:    v_mov_b32_e32 v2, s83
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v25
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s84
+; VI-NEXT:    v_mov_b32_e32 v3, s82
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v25
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s83
+; VI-NEXT:    v_mov_b32_e32 v4, s81
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v25
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s82
+; VI-NEXT:    v_mov_b32_e32 v5, s80
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v25
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s81
+; VI-NEXT:    v_mov_b32_e32 v6, s71
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v25
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s70
+; VI-NEXT:    v_mov_b32_e32 v7, s68
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v25
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s68
+; VI-NEXT:    v_mov_b32_e32 v8, s34
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v25
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
-; VI-NEXT:    v_mov_b32_e32 v9, s31
+; VI-NEXT:    v_mov_b32_e32 v9, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v9, v9, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v10, s25, v25
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
@@ -30315,17 +30765,17 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v25
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s80
+; VI-NEXT:    v_mov_b32_e32 v14, s70
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s71, v25
+; VI-NEXT:    v_add_f16_e32 v15, s69, v25
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s69
+; VI-NEXT:    v_mov_b32_e32 v15, s35
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v16, s35, v25
+; VI-NEXT:    v_add_f16_e32 v16, s31, v25
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
-; VI-NEXT:    v_mov_b32_e32 v16, s34
+; VI-NEXT:    v_mov_b32_e32 v16, s30
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v17, s30, v25
+; VI-NEXT:    v_add_f16_e32 v17, vcc_lo, v25
 ; VI-NEXT:    v_or_b32_e32 v16, v17, v16
 ; VI-NEXT:    v_mov_b32_e32 v17, s91
 ; VI-NEXT:    v_add_f16_sdwa v17, v17, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
@@ -30363,11 +30813,8 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v26, v26, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v25, s6, v25
 ; VI-NEXT:    v_or_b32_e32 v25, v25, v26
-; VI-NEXT:    s_branch .LBB47_5
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:    s_branch .LBB47_6
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -30400,11 +30847,9 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB47_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 30
-; VI-NEXT:    v_readlane_b32 s31, v32, 31
-; VI-NEXT:    v_readlane_b32 s87, v32, 29
-; VI-NEXT:    v_readlane_b32 s86, v32, 28
+; VI-NEXT:  .LBB47_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 28
+; VI-NEXT:    v_readlane_b32 s31, v32, 29
 ; VI-NEXT:    v_readlane_b32 s85, v32, 27
 ; VI-NEXT:    v_readlane_b32 s84, v32, 26
 ; VI-NEXT:    v_readlane_b32 s83, v32, 25
@@ -30523,10 +30968,18 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s72
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s60, s60, s63
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s62
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v25, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v25 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v25 op_sel_hi:[1,0]
@@ -30554,10 +31007,8 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v23, s59, v25 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v24, s60, v25 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v25, s61, v25 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB47_5
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:    s_branch .LBB47_6
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -30590,7 +31041,7 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB47_5: ; %end
+; GFX9-NEXT:  .LBB47_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -30675,11 +31126,16 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s24, s47, s60
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB47_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -30707,8 +31163,6 @@ define inreg <13 x i64> @bitcast_v52f16_to_v13i64_scalar(<52 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v24, 0x200, s24 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v25, 0x200, s25 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB47_3:
-; GFX11-NEXT:    s_branch .LBB47_2
 ; GFX11-NEXT:  .LBB47_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -31455,10 +31909,8 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v45, s36, 2
 ; SI-NEXT:    v_writelane_b32 v45, s37, 3
 ; SI-NEXT:    v_writelane_b32 v45, s38, 4
-; SI-NEXT:    v_writelane_b32 v45, s39, 5
-; SI-NEXT:    v_writelane_b32 v45, s48, 6
-; SI-NEXT:    v_writelane_b32 v45, s30, 7
-; SI-NEXT:    v_writelane_b32 v45, s31, 8
+; SI-NEXT:    v_writelane_b32 v45, s30, 5
+; SI-NEXT:    v_writelane_b32 v45, s31, 6
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
 ; SI-NEXT:    v_readfirstlane_b32 s13, v11
 ; SI-NEXT:    v_readfirstlane_b32 s12, v10
@@ -31473,17 +31925,17 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_3
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s48, s13, 16
-; SI-NEXT:    s_lshr_b32 s39, s15, 16
-; SI-NEXT:    s_lshr_b32 s38, s11, 16
-; SI-NEXT:    s_lshr_b32 s37, s9, 16
-; SI-NEXT:    s_lshr_b32 s36, s7, 16
-; SI-NEXT:    s_lshr_b32 s35, s5, 16
-; SI-NEXT:    s_lshr_b32 s34, s29, 16
-; SI-NEXT:    s_lshr_b32 s31, s27, 16
-; SI-NEXT:    s_lshr_b32 s30, s25, 16
+; SI-NEXT:    s_lshr_b32 s38, s13, 16
+; SI-NEXT:    s_lshr_b32 s37, s15, 16
+; SI-NEXT:    s_lshr_b32 s36, s11, 16
+; SI-NEXT:    s_lshr_b32 s35, s9, 16
+; SI-NEXT:    s_lshr_b32 s34, s7, 16
+; SI-NEXT:    s_lshr_b32 s31, s5, 16
+; SI-NEXT:    s_lshr_b32 s30, s29, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s27, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s25, 16
 ; SI-NEXT:    s_lshr_b32 s95, s23, 16
 ; SI-NEXT:    s_lshr_b32 s94, s21, 16
 ; SI-NEXT:    s_lshr_b32 s93, s19, 16
@@ -31501,8 +31953,42 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB49_4
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[90:91], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[90:91], -1
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[90:91], s[90:91], exec
+; SI-NEXT:    s_cselect_b32 s41, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s41, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[24:25], s[12:13], 1.0
 ; SI-NEXT:    v_add_f64 v[22:23], s[14:15], 1.0
 ; SI-NEXT:    v_add_f64 v[20:21], s[10:11], 1.0
@@ -31547,36 +32033,8 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v43, 16, v3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshrrev_b32_e32 v44, 16, v1
-; SI-NEXT:    s_branch .LBB49_5
-; SI-NEXT:  .LBB49_3:
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    s_branch .LBB49_2
-; SI-NEXT:  .LBB49_4:
+; SI-NEXT:    s_branch .LBB49_6
+; SI-NEXT:  .LBB49_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
@@ -31603,16 +32061,16 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v22, s14
 ; SI-NEXT:    v_mov_b32_e32 v25, s13
 ; SI-NEXT:    v_mov_b32_e32 v24, s12
-; SI-NEXT:    v_mov_b32_e32 v48, s48
-; SI-NEXT:    v_mov_b32_e32 v49, s39
-; SI-NEXT:    v_mov_b32_e32 v50, s38
-; SI-NEXT:    v_mov_b32_e32 v51, s37
-; SI-NEXT:    v_mov_b32_e32 v52, s36
-; SI-NEXT:    v_mov_b32_e32 v53, s35
-; SI-NEXT:    v_mov_b32_e32 v54, s34
-; SI-NEXT:    v_mov_b32_e32 v55, s31
+; SI-NEXT:    v_mov_b32_e32 v48, s38
+; SI-NEXT:    v_mov_b32_e32 v49, s37
+; SI-NEXT:    v_mov_b32_e32 v50, s36
+; SI-NEXT:    v_mov_b32_e32 v51, s35
+; SI-NEXT:    v_mov_b32_e32 v52, s34
+; SI-NEXT:    v_mov_b32_e32 v53, s31
+; SI-NEXT:    v_mov_b32_e32 v54, s30
+; SI-NEXT:    v_mov_b32_e32 v55, vcc_hi
 ; SI-NEXT:    s_waitcnt expcnt(4)
-; SI-NEXT:    v_mov_b32_e32 v40, s30
+; SI-NEXT:    v_mov_b32_e32 v40, vcc_lo
 ; SI-NEXT:    s_waitcnt expcnt(3)
 ; SI-NEXT:    v_mov_b32_e32 v41, s95
 ; SI-NEXT:    s_waitcnt expcnt(2)
@@ -31634,7 +32092,7 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v28, s44
 ; SI-NEXT:    v_mov_b32_e32 v27, s42
 ; SI-NEXT:    v_mov_b32_e32 v26, s40
-; SI-NEXT:  .LBB49_5: ; %end
+; SI-NEXT:  .LBB49_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v38, 16, v38
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v37, 16, v37
@@ -31705,7 +32163,7 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v24, v24, v26
 ; SI-NEXT:    v_and_b32_e32 v25, 0xffff, v25
 ; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v48
-; SI-NEXT:    v_readlane_b32 s30, v45, 7
+; SI-NEXT:    v_readlane_b32 s30, v45, 5
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v38
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v37
 ; SI-NEXT:    v_or_b32_e32 v5, v5, v36
@@ -31719,9 +32177,7 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v21, v21, v28
 ; SI-NEXT:    v_or_b32_e32 v23, v23, v27
 ; SI-NEXT:    v_or_b32_e32 v25, v25, v26
-; SI-NEXT:    v_readlane_b32 s31, v45, 8
-; SI-NEXT:    v_readlane_b32 s48, v45, 6
-; SI-NEXT:    v_readlane_b32 s39, v45, 5
+; SI-NEXT:    v_readlane_b32 s31, v45, 6
 ; SI-NEXT:    v_readlane_b32 s38, v45, 4
 ; SI-NEXT:    v_readlane_b32 s37, v45, 3
 ; SI-NEXT:    v_readlane_b32 s36, v45, 2
@@ -31754,7 +32210,7 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s5, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_3
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s42, s9, 16
 ; VI-NEXT:    s_lshr_b32 s63, s8, 16
@@ -31782,8 +32238,42 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s90, s18, 16
 ; VI-NEXT:    s_lshr_b32 s62, s17, 16
 ; VI-NEXT:    s_lshr_b32 s91, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB49_4
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[40:41], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[40:41], -1
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[40:41], s[40:41], exec
+; VI-NEXT:    s_cselect_b32 s40, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s40, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[24:25], s[8:9], 1.0
 ; VI-NEXT:    v_add_f64 v[22:23], s[10:11], 1.0
 ; VI-NEXT:    v_add_f64 v[20:21], s[12:13], 1.0
@@ -31823,36 +32313,8 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v54, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v43, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v40, 16, v0
-; VI-NEXT:    s_branch .LBB49_5
-; VI-NEXT:  .LBB49_3:
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    s_branch .LBB49_2
-; VI-NEXT:  .LBB49_4:
+; VI-NEXT:    s_branch .LBB49_6
+; VI-NEXT:  .LBB49_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
@@ -31905,7 +32367,7 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v33, s44
 ; VI-NEXT:    v_mov_b32_e32 v31, s43
 ; VI-NEXT:    v_mov_b32_e32 v28, s42
-; VI-NEXT:  .LBB49_5: ; %end
+; VI-NEXT:  .LBB49_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v40, 16, v40
 ; VI-NEXT:    v_or_b32_sdwa v0, v0, v40 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_lshlrev_b32_e32 v40, 16, v43
@@ -31986,7 +32448,7 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s42, s9, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s8, 16
@@ -32014,8 +32476,42 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s90, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s91, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[40:41], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[40:41], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr43
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr42
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[40:41], s[40:41], exec
+; GFX9-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[24:25], s[8:9], 1.0
 ; GFX9-NEXT:    v_add_f64 v[22:23], s[10:11], 1.0
 ; GFX9-NEXT:    v_add_f64 v[20:21], s[12:13], 1.0
@@ -32055,36 +32551,8 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v54, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v43, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v40, 16, v0
-; GFX9-NEXT:    s_branch .LBB49_5
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr43
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:    s_branch .LBB49_6
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
@@ -32137,7 +32605,7 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v33, s44
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s43
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s42
-; GFX9-NEXT:  .LBB49_5: ; %end
+; GFX9-NEXT:  .LBB49_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v3, 0xffff, v3
@@ -32210,12 +32678,12 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s11, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s10, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s12, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s9, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s12, s9, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s58, s8, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s14, s7, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s59, s6, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s60, s4, 16
@@ -32239,9 +32707,42 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s77, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s57, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s78, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-TRUE16-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB49_3
+; GFX11-TRUE16-NEXT:  .LBB49_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:  .LBB49_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s14, s14, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[24:25], s[8:9], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[22:23], s[6:7], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[20:21], s[4:5], 1.0
@@ -32281,36 +32782,8 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v54, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v67, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v64, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB49_5
-; GFX11-TRUE16-NEXT:  .LBB49_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    s_branch .LBB49_2
-; GFX11-TRUE16-NEXT:  .LBB49_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB49_6
+; GFX11-TRUE16-NEXT:  .LBB49_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -32336,8 +32809,8 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v30, s61 :: v_dual_mov_b32 v37, s41
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v26, s58 :: v_dual_mov_b32 v35, s40
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v66, s56 :: v_dual_mov_b32 v33, s15
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s14 :: v_dual_mov_b32 v28, s13
-; GFX11-TRUE16-NEXT:  .LBB49_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s13 :: v_dual_mov_b32 v28, s12
+; GFX11-TRUE16-NEXT:  .LBB49_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v64.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v67.l
@@ -32380,12 +32853,12 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s11, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s10, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s12, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s9, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s12, s9, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s58, s8, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s14, s7, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s59, s6, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s60, s4, 16
@@ -32409,50 +32882,9 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s77, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s57, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s78, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-FAKE16-NEXT:  .LBB49_2: ; %cmp.true
-; GFX11-FAKE16-NEXT:    v_add_f64 v[21:22], s[8:9], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[23:24], s[6:7], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[25:26], s[4:5], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[16:17], s[10:11], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[18:19], s[28:29], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[11:12], s[26:27], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[13:14], s[24:25], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[27:28], s[22:23], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[6:7], s[20:21], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[8:9], s[18:19], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[4:5], s[0:1], 1.0
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v31, 16, v22
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v29, 16, v21
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v32, 16, v24
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v30, 16, v23
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v33, 16, v26
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v20, 16, v25
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v36, 16, v17
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v34, 16, v16
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v37, 16, v19
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v18
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v12
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v15, 16, v11
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v48, 16, v14
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v38, 16, v13
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v49, 16, v28
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v10, 16, v27
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v52, 16, v7
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v50, 16, v6
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v53, 16, v9
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v51, 16, v8
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v65, 16, v1
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v54, 16, v0
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v66, 16, v3
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v55, 16, v2
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v67, 16, v5
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v64, 16, v4
-; GFX11-FAKE16-NEXT:    s_branch .LBB49_5
-; GFX11-FAKE16-NEXT:  .LBB49_3:
+; GFX11-FAKE16-NEXT:    s_branch .LBB49_3
+; GFX11-FAKE16-NEXT:  .LBB49_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, -1
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
@@ -32476,11 +32908,57 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    s_branch .LBB49_2
-; GFX11-FAKE16-NEXT:  .LBB49_4:
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:  .LBB49_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s14, s14, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
+; GFX11-FAKE16-NEXT:    v_add_f64 v[21:22], s[8:9], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[23:24], s[6:7], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[25:26], s[4:5], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[16:17], s[10:11], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[18:19], s[28:29], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[11:12], s[26:27], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[13:14], s[24:25], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[27:28], s[22:23], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[6:7], s[20:21], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[8:9], s[18:19], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[2:3], s[2:3], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[4:5], s[0:1], 1.0
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v31, 16, v22
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v29, 16, v21
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v32, 16, v24
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v30, 16, v23
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v33, 16, v26
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v20, 16, v25
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v36, 16, v17
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v34, 16, v16
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v37, 16, v19
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v18
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v12
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v15, 16, v11
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v48, 16, v14
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v38, 16, v13
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v49, 16, v28
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v10, 16, v27
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v52, 16, v7
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v50, 16, v6
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v53, 16, v9
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v51, 16, v8
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v65, 16, v1
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v54, 16, v0
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v66, 16, v3
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v55, 16, v2
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v67, 16, v5
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v64, 16, v4
+; GFX11-FAKE16-NEXT:    s_branch .LBB49_6
+; GFX11-FAKE16-NEXT:  .LBB49_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v27, s22
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v13, s24
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s16 :: v_dual_mov_b32 v11, s26
@@ -32506,8 +32984,8 @@ define inreg <52 x i16> @bitcast_v13f64_to_v52i16_scalar(<13 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v52, s45 :: v_dual_mov_b32 v39, s42
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v48, s43 :: v_dual_mov_b32 v37, s41
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v36, s40 :: v_dual_mov_b32 v33, s15
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v32, s14 :: v_dual_mov_b32 v31, s13
-; GFX11-FAKE16-NEXT:  .LBB49_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v32, s13 :: v_dual_mov_b32 v31, s12
+; GFX11-FAKE16-NEXT:  .LBB49_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v27, 0xffff, v27
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v4
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v68, 0xffff, v0
@@ -33759,10 +34237,8 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v26, s71, 21
 ; SI-NEXT:    v_writelane_b32 v26, s80, 22
 ; SI-NEXT:    v_writelane_b32 v26, s81, 23
-; SI-NEXT:    v_writelane_b32 v26, s82, 24
-; SI-NEXT:    v_writelane_b32 v26, s83, 25
-; SI-NEXT:    v_writelane_b32 v26, s30, 26
-; SI-NEXT:    v_writelane_b32 v26, s31, 27
+; SI-NEXT:    v_writelane_b32 v26, s30, 24
+; SI-NEXT:    v_writelane_b32 v26, s31, 25
 ; SI-NEXT:    v_readfirstlane_b32 s7, v11
 ; SI-NEXT:    v_readfirstlane_b32 s9, v10
 ; SI-NEXT:    v_readfirstlane_b32 s11, v9
@@ -33773,22 +34249,22 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s78, v4
 ; SI-NEXT:    v_readfirstlane_b32 s90, v3
 ; SI-NEXT:    v_readfirstlane_b32 s93, v2
-; SI-NEXT:    v_readfirstlane_b32 s30, v1
-; SI-NEXT:    v_readfirstlane_b32 s35, v0
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v1
+; SI-NEXT:    v_readfirstlane_b32 s31, v0
 ; SI-NEXT:    s_lshr_b32 s76, s29, 16
 ; SI-NEXT:    s_lshr_b32 s79, s28, 16
 ; SI-NEXT:    s_lshr_b32 s89, s27, 16
 ; SI-NEXT:    s_lshr_b32 s91, s26, 16
 ; SI-NEXT:    s_lshr_b32 s94, s25, 16
-; SI-NEXT:    s_lshr_b32 s31, s24, 16
-; SI-NEXT:    s_lshr_b32 s68, s23, 16
-; SI-NEXT:    s_lshr_b32 s69, s22, 16
-; SI-NEXT:    s_lshr_b32 s70, s21, 16
-; SI-NEXT:    s_lshr_b32 s71, s20, 16
-; SI-NEXT:    s_lshr_b32 s80, s19, 16
-; SI-NEXT:    s_lshr_b32 s81, s18, 16
-; SI-NEXT:    s_lshr_b32 s82, s17, 16
-; SI-NEXT:    s_lshr_b32 s83, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s24, 16
+; SI-NEXT:    s_lshr_b32 s34, s23, 16
+; SI-NEXT:    s_lshr_b32 s35, s22, 16
+; SI-NEXT:    s_lshr_b32 s68, s21, 16
+; SI-NEXT:    s_lshr_b32 s69, s20, 16
+; SI-NEXT:    s_lshr_b32 s70, s19, 16
+; SI-NEXT:    s_lshr_b32 s71, s18, 16
+; SI-NEXT:    s_lshr_b32 s80, s17, 16
+; SI-NEXT:    s_lshr_b32 s81, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -33799,38 +34275,38 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s77, s78, 16
 ; SI-NEXT:    s_lshr_b32 s88, s90, 16
 ; SI-NEXT:    s_lshr_b32 s92, s93, 16
-; SI-NEXT:    s_lshr_b32 s95, s30, 16
-; SI-NEXT:    s_lshr_b32 s34, s35, 16
+; SI-NEXT:    s_lshr_b32 s95, vcc_lo, 16
+; SI-NEXT:    s_lshr_b32 s30, s31, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s94, 16
@@ -33847,10 +34323,10 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s76, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s93, 0xffff
@@ -33883,51 +34359,60 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s61, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
@@ -33954,14 +34439,14 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s76, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s35, s35, 3
+; SI-NEXT:    s_add_i32 s31, s31, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s30, s30, 3
+; SI-NEXT:    s_add_i32 vcc_lo, vcc_lo, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s93, s93, 3
@@ -34015,8 +34500,8 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s61, s4, 0x30000
-; SI-NEXT:  .LBB51_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v26, 26
+; SI-NEXT:  .LBB51_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v26, 24
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -34043,9 +34528,7 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v23, s59
 ; SI-NEXT:    v_mov_b32_e32 v24, s60
 ; SI-NEXT:    v_mov_b32_e32 v25, s61
-; SI-NEXT:    v_readlane_b32 s31, v26, 27
-; SI-NEXT:    v_readlane_b32 s83, v26, 25
-; SI-NEXT:    v_readlane_b32 s82, v26, 24
+; SI-NEXT:    v_readlane_b32 s31, v26, 25
 ; SI-NEXT:    v_readlane_b32 s81, v26, 23
 ; SI-NEXT:    v_readlane_b32 s80, v26, 22
 ; SI-NEXT:    v_readlane_b32 s71, v26, 21
@@ -34075,9 +34558,6 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v52i16_to_v13f64_scalar:
 ; VI:       ; %bb.0:
@@ -34113,10 +34593,8 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v26, s83, 25
 ; VI-NEXT:    v_writelane_b32 v26, s84, 26
 ; VI-NEXT:    v_writelane_b32 v26, s85, 27
-; VI-NEXT:    v_writelane_b32 v26, s86, 28
-; VI-NEXT:    v_writelane_b32 v26, s87, 29
-; VI-NEXT:    v_writelane_b32 v26, s30, 30
-; VI-NEXT:    v_writelane_b32 v26, s31, 31
+; VI-NEXT:    v_writelane_b32 v26, s30, 28
+; VI-NEXT:    v_writelane_b32 v26, s31, 29
 ; VI-NEXT:    v_readfirstlane_b32 s7, v11
 ; VI-NEXT:    v_readfirstlane_b32 s9, v10
 ; VI-NEXT:    v_readfirstlane_b32 s11, v9
@@ -34126,23 +34604,23 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s75, v5
 ; VI-NEXT:    v_readfirstlane_b32 s78, v4
 ; VI-NEXT:    v_readfirstlane_b32 s90, v3
-; VI-NEXT:    v_readfirstlane_b32 s31, v2
-; VI-NEXT:    v_readfirstlane_b32 s68, v1
-; VI-NEXT:    v_readfirstlane_b32 s71, v0
+; VI-NEXT:    v_readfirstlane_b32 vcc_hi, v2
+; VI-NEXT:    v_readfirstlane_b32 s34, v1
+; VI-NEXT:    v_readfirstlane_b32 s69, v0
 ; VI-NEXT:    s_lshr_b32 s76, s29, 16
 ; VI-NEXT:    s_lshr_b32 s79, s28, 16
 ; VI-NEXT:    s_lshr_b32 s89, s27, 16
 ; VI-NEXT:    s_lshr_b32 s91, s26, 16
-; VI-NEXT:    s_lshr_b32 s34, s25, 16
-; VI-NEXT:    s_lshr_b32 s69, s24, 16
-; VI-NEXT:    s_lshr_b32 s80, s23, 16
-; VI-NEXT:    s_lshr_b32 s81, s22, 16
-; VI-NEXT:    s_lshr_b32 s82, s21, 16
-; VI-NEXT:    s_lshr_b32 s83, s20, 16
-; VI-NEXT:    s_lshr_b32 s84, s19, 16
-; VI-NEXT:    s_lshr_b32 s85, s18, 16
-; VI-NEXT:    s_lshr_b32 s86, s17, 16
-; VI-NEXT:    s_lshr_b32 s87, s16, 16
+; VI-NEXT:    s_lshr_b32 s30, s25, 16
+; VI-NEXT:    s_lshr_b32 s35, s24, 16
+; VI-NEXT:    s_lshr_b32 s70, s23, 16
+; VI-NEXT:    s_lshr_b32 s71, s22, 16
+; VI-NEXT:    s_lshr_b32 s80, s21, 16
+; VI-NEXT:    s_lshr_b32 s81, s20, 16
+; VI-NEXT:    s_lshr_b32 s82, s19, 16
+; VI-NEXT:    s_lshr_b32 s83, s18, 16
+; VI-NEXT:    s_lshr_b32 s84, s17, 16
+; VI-NEXT:    s_lshr_b32 s85, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s8, s9, 16
 ; VI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -34152,42 +34630,42 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s74, s75, 16
 ; VI-NEXT:    s_lshr_b32 s77, s78, 16
 ; VI-NEXT:    s_lshr_b32 s88, s90, 16
-; VI-NEXT:    s_lshr_b32 s30, s31, 16
-; VI-NEXT:    s_lshr_b32 s35, s68, 16
-; VI-NEXT:    s_lshr_b32 s70, s71, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, vcc_hi, 16
+; VI-NEXT:    s_lshr_b32 s31, s34, 16
+; VI-NEXT:    s_lshr_b32 s68, s69, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v12
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s86, 16
+; VI-NEXT:    s_lshl_b32 s41, s84, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -34201,14 +34679,14 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s68
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s34
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s31
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_hi
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s90
 ; VI-NEXT:    s_lshl_b32 s5, s88, 16
@@ -34237,56 +34715,65 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s7
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
@@ -34308,20 +34795,20 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s71, s71, 3
+; VI-NEXT:    s_add_i32 s69, s69, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s71, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, s69, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s68, s68, 3
+; VI-NEXT:    s_add_i32 s34, s34, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s68, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, s34, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s31, s31, 3
+; VI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; VI-NEXT:    s_add_i32 s51, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s31, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s90, s90, 3
 ; VI-NEXT:    s_add_i32 s52, s4, 0x30000
@@ -34369,8 +34856,8 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    s_lshl_b32 s5, s6, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s61, s4, 0x30000
-; VI-NEXT:  .LBB51_3: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v26, 30
+; VI-NEXT:  .LBB51_5: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v26, 28
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -34397,9 +34884,7 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v23, s59
 ; VI-NEXT:    v_mov_b32_e32 v24, s60
 ; VI-NEXT:    v_mov_b32_e32 v25, s61
-; VI-NEXT:    v_readlane_b32 s31, v26, 31
-; VI-NEXT:    v_readlane_b32 s87, v26, 29
-; VI-NEXT:    v_readlane_b32 s86, v26, 28
+; VI-NEXT:    v_readlane_b32 s31, v26, 29
 ; VI-NEXT:    v_readlane_b32 s85, v26, 27
 ; VI-NEXT:    v_readlane_b32 s84, v26, 26
 ; VI-NEXT:    v_readlane_b32 s83, v26, 25
@@ -34433,9 +34918,6 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v52i16_to_v13f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -34521,10 +35003,18 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s72
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s60, s60, s63
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s62
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_4
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -34551,10 +35041,8 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v23, s59, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v24, s60, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v25, s61, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB51_5
-; GFX9-NEXT:  .LBB51_3:
-; GFX9-NEXT:    s_branch .LBB51_2
-; GFX9-NEXT:  .LBB51_4:
+; GFX9-NEXT:    s_branch .LBB51_6
+; GFX9-NEXT:  .LBB51_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -34587,7 +35075,7 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB51_5: ; %end
+; GFX9-NEXT:  .LBB51_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -34672,11 +35160,16 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s24, s47, s60
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB51_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB51_4
-; GFX11-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB51_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -34704,8 +35197,6 @@ define inreg <13 x double> @bitcast_v52i16_to_v13f64_scalar(<52 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v24, s24, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v25, s25, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB51_3:
-; GFX11-NEXT:    s_branch .LBB51_2
 ; GFX11-NEXT:  .LBB51_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -35452,10 +35943,8 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; SI-NEXT:    v_writelane_b32 v45, s36, 2
 ; SI-NEXT:    v_writelane_b32 v45, s37, 3
 ; SI-NEXT:    v_writelane_b32 v45, s38, 4
-; SI-NEXT:    v_writelane_b32 v45, s39, 5
-; SI-NEXT:    v_writelane_b32 v45, s48, 6
-; SI-NEXT:    v_writelane_b32 v45, s30, 7
-; SI-NEXT:    v_writelane_b32 v45, s31, 8
+; SI-NEXT:    v_writelane_b32 v45, s30, 5
+; SI-NEXT:    v_writelane_b32 v45, s31, 6
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
 ; SI-NEXT:    v_readfirstlane_b32 s13, v11
 ; SI-NEXT:    v_readfirstlane_b32 s12, v10
@@ -35470,17 +35959,17 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_3
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s48, s13, 16
-; SI-NEXT:    s_lshr_b32 s39, s15, 16
-; SI-NEXT:    s_lshr_b32 s38, s11, 16
-; SI-NEXT:    s_lshr_b32 s37, s9, 16
-; SI-NEXT:    s_lshr_b32 s36, s7, 16
-; SI-NEXT:    s_lshr_b32 s35, s5, 16
-; SI-NEXT:    s_lshr_b32 s34, s29, 16
-; SI-NEXT:    s_lshr_b32 s31, s27, 16
-; SI-NEXT:    s_lshr_b32 s30, s25, 16
+; SI-NEXT:    s_lshr_b32 s38, s13, 16
+; SI-NEXT:    s_lshr_b32 s37, s15, 16
+; SI-NEXT:    s_lshr_b32 s36, s11, 16
+; SI-NEXT:    s_lshr_b32 s35, s9, 16
+; SI-NEXT:    s_lshr_b32 s34, s7, 16
+; SI-NEXT:    s_lshr_b32 s31, s5, 16
+; SI-NEXT:    s_lshr_b32 s30, s29, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s27, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s25, 16
 ; SI-NEXT:    s_lshr_b32 s95, s23, 16
 ; SI-NEXT:    s_lshr_b32 s94, s21, 16
 ; SI-NEXT:    s_lshr_b32 s93, s19, 16
@@ -35498,8 +35987,42 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB53_4
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[90:91], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[90:91], -1
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr93
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr95
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[90:91], s[90:91], exec
+; SI-NEXT:    s_cselect_b32 s41, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s41, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[24:25], s[12:13], 1.0
 ; SI-NEXT:    v_add_f64 v[22:23], s[14:15], 1.0
 ; SI-NEXT:    v_add_f64 v[20:21], s[10:11], 1.0
@@ -35544,36 +36067,8 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; SI-NEXT:    v_lshrrev_b32_e32 v43, 16, v3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshrrev_b32_e32 v44, 16, v1
-; SI-NEXT:    s_branch .LBB53_5
-; SI-NEXT:  .LBB53_3:
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr93
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr95
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    s_branch .LBB53_2
-; SI-NEXT:  .LBB53_4:
+; SI-NEXT:    s_branch .LBB53_6
+; SI-NEXT:  .LBB53_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
@@ -35600,16 +36095,16 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v22, s14
 ; SI-NEXT:    v_mov_b32_e32 v25, s13
 ; SI-NEXT:    v_mov_b32_e32 v24, s12
-; SI-NEXT:    v_mov_b32_e32 v48, s48
-; SI-NEXT:    v_mov_b32_e32 v49, s39
-; SI-NEXT:    v_mov_b32_e32 v50, s38
-; SI-NEXT:    v_mov_b32_e32 v51, s37
-; SI-NEXT:    v_mov_b32_e32 v52, s36
-; SI-NEXT:    v_mov_b32_e32 v53, s35
-; SI-NEXT:    v_mov_b32_e32 v54, s34
-; SI-NEXT:    v_mov_b32_e32 v55, s31
+; SI-NEXT:    v_mov_b32_e32 v48, s38
+; SI-NEXT:    v_mov_b32_e32 v49, s37
+; SI-NEXT:    v_mov_b32_e32 v50, s36
+; SI-NEXT:    v_mov_b32_e32 v51, s35
+; SI-NEXT:    v_mov_b32_e32 v52, s34
+; SI-NEXT:    v_mov_b32_e32 v53, s31
+; SI-NEXT:    v_mov_b32_e32 v54, s30
+; SI-NEXT:    v_mov_b32_e32 v55, vcc_hi
 ; SI-NEXT:    s_waitcnt expcnt(4)
-; SI-NEXT:    v_mov_b32_e32 v40, s30
+; SI-NEXT:    v_mov_b32_e32 v40, vcc_lo
 ; SI-NEXT:    s_waitcnt expcnt(3)
 ; SI-NEXT:    v_mov_b32_e32 v41, s95
 ; SI-NEXT:    s_waitcnt expcnt(2)
@@ -35631,7 +36126,7 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v28, s44
 ; SI-NEXT:    v_mov_b32_e32 v27, s42
 ; SI-NEXT:    v_mov_b32_e32 v26, s40
-; SI-NEXT:  .LBB53_5: ; %end
+; SI-NEXT:  .LBB53_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v38, 16, v38
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v37, 16, v37
@@ -35702,7 +36197,7 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; SI-NEXT:    v_or_b32_e32 v24, v24, v26
 ; SI-NEXT:    v_and_b32_e32 v25, 0xffff, v25
 ; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v48
-; SI-NEXT:    v_readlane_b32 s30, v45, 7
+; SI-NEXT:    v_readlane_b32 s30, v45, 5
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v38
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v37
 ; SI-NEXT:    v_or_b32_e32 v5, v5, v36
@@ -35716,9 +36211,7 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; SI-NEXT:    v_or_b32_e32 v21, v21, v28
 ; SI-NEXT:    v_or_b32_e32 v23, v23, v27
 ; SI-NEXT:    v_or_b32_e32 v25, v25, v26
-; SI-NEXT:    v_readlane_b32 s31, v45, 8
-; SI-NEXT:    v_readlane_b32 s48, v45, 6
-; SI-NEXT:    v_readlane_b32 s39, v45, 5
+; SI-NEXT:    v_readlane_b32 s31, v45, 6
 ; SI-NEXT:    v_readlane_b32 s38, v45, 4
 ; SI-NEXT:    v_readlane_b32 s37, v45, 3
 ; SI-NEXT:    v_readlane_b32 s36, v45, 2
@@ -35751,7 +36244,7 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s5, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_3
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s42, s9, 16
 ; VI-NEXT:    s_lshr_b32 s63, s8, 16
@@ -35779,8 +36272,42 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; VI-NEXT:    s_lshr_b32 s90, s18, 16
 ; VI-NEXT:    s_lshr_b32 s62, s17, 16
 ; VI-NEXT:    s_lshr_b32 s91, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB53_4
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[40:41], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[40:41], -1
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr43
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr42
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[40:41], s[40:41], exec
+; VI-NEXT:    s_cselect_b32 s40, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s40, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[24:25], s[8:9], 1.0
 ; VI-NEXT:    v_add_f64 v[22:23], s[10:11], 1.0
 ; VI-NEXT:    v_add_f64 v[20:21], s[12:13], 1.0
@@ -35820,36 +36347,8 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; VI-NEXT:    v_lshrrev_b32_e32 v54, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v43, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v40, 16, v0
-; VI-NEXT:    s_branch .LBB53_5
-; VI-NEXT:  .LBB53_3:
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr43
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr42
-; VI-NEXT:    s_branch .LBB53_2
-; VI-NEXT:  .LBB53_4:
+; VI-NEXT:    s_branch .LBB53_6
+; VI-NEXT:  .LBB53_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
@@ -35902,7 +36401,7 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v33, s44
 ; VI-NEXT:    v_mov_b32_e32 v31, s43
 ; VI-NEXT:    v_mov_b32_e32 v28, s42
-; VI-NEXT:  .LBB53_5: ; %end
+; VI-NEXT:  .LBB53_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v40, 16, v40
 ; VI-NEXT:    v_or_b32_sdwa v0, v0, v40 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_lshlrev_b32_e32 v40, 16, v43
@@ -35983,7 +36482,7 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s42, s9, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s8, 16
@@ -36011,49 +36510,10 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; GFX9-NEXT:    s_lshr_b32 s90, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s91, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_4
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
-; GFX9-NEXT:    v_add_f64 v[24:25], s[8:9], 1.0
-; GFX9-NEXT:    v_add_f64 v[22:23], s[10:11], 1.0
-; GFX9-NEXT:    v_add_f64 v[20:21], s[12:13], 1.0
-; GFX9-NEXT:    v_add_f64 v[18:19], s[14:15], 1.0
-; GFX9-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
-; GFX9-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
-; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
-; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
-; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
-; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
-; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
-; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
-; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; GFX9-NEXT:    v_lshrrev_b32_e32 v28, 16, v25
-; GFX9-NEXT:    v_lshrrev_b32_e32 v26, 16, v24
-; GFX9-NEXT:    v_lshrrev_b32_e32 v31, 16, v23
-; GFX9-NEXT:    v_lshrrev_b32_e32 v27, 16, v22
-; GFX9-NEXT:    v_lshrrev_b32_e32 v33, 16, v21
-; GFX9-NEXT:    v_lshrrev_b32_e32 v29, 16, v20
-; GFX9-NEXT:    v_lshrrev_b32_e32 v35, 16, v19
-; GFX9-NEXT:    v_lshrrev_b32_e32 v30, 16, v18
-; GFX9-NEXT:    v_lshrrev_b32_e32 v37, 16, v17
-; GFX9-NEXT:    v_lshrrev_b32_e32 v32, 16, v16
-; GFX9-NEXT:    v_lshrrev_b32_e32 v39, 16, v15
-; GFX9-NEXT:    v_lshrrev_b32_e32 v34, 16, v14
-; GFX9-NEXT:    v_lshrrev_b32_e32 v49, 16, v13
-; GFX9-NEXT:    v_lshrrev_b32_e32 v36, 16, v12
-; GFX9-NEXT:    v_lshrrev_b32_e32 v51, 16, v11
-; GFX9-NEXT:    v_lshrrev_b32_e32 v38, 16, v10
-; GFX9-NEXT:    v_lshrrev_b32_e32 v53, 16, v9
-; GFX9-NEXT:    v_lshrrev_b32_e32 v48, 16, v8
-; GFX9-NEXT:    v_lshrrev_b32_e32 v55, 16, v7
-; GFX9-NEXT:    v_lshrrev_b32_e32 v50, 16, v6
-; GFX9-NEXT:    v_lshrrev_b32_e32 v41, 16, v5
-; GFX9-NEXT:    v_lshrrev_b32_e32 v52, 16, v4
-; GFX9-NEXT:    v_lshrrev_b32_e32 v42, 16, v3
-; GFX9-NEXT:    v_lshrrev_b32_e32 v54, 16, v2
-; GFX9-NEXT:    v_lshrrev_b32_e32 v43, 16, v1
-; GFX9-NEXT:    v_lshrrev_b32_e32 v40, 16, v0
-; GFX9-NEXT:    s_branch .LBB53_5
-; GFX9-NEXT:  .LBB53_3:
+; GFX9-NEXT:    s_mov_b64 s[40:41], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[40:41], -1
 ; GFX9-NEXT:    ; implicit-def: $sgpr91
 ; GFX9-NEXT:    ; implicit-def: $sgpr62
 ; GFX9-NEXT:    ; implicit-def: $sgpr90
@@ -36080,8 +36540,53 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; GFX9-NEXT:    ; implicit-def: $sgpr43
 ; GFX9-NEXT:    ; implicit-def: $sgpr63
 ; GFX9-NEXT:    ; implicit-def: $sgpr42
-; GFX9-NEXT:    s_branch .LBB53_2
-; GFX9-NEXT:  .LBB53_4:
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[40:41], s[40:41], exec
+; GFX9-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
+; GFX9-NEXT:    v_add_f64 v[24:25], s[8:9], 1.0
+; GFX9-NEXT:    v_add_f64 v[22:23], s[10:11], 1.0
+; GFX9-NEXT:    v_add_f64 v[20:21], s[12:13], 1.0
+; GFX9-NEXT:    v_add_f64 v[18:19], s[14:15], 1.0
+; GFX9-NEXT:    v_add_f64 v[16:17], s[6:7], 1.0
+; GFX9-NEXT:    v_add_f64 v[14:15], s[4:5], 1.0
+; GFX9-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
+; GFX9-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
+; GFX9-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
+; GFX9-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
+; GFX9-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
+; GFX9-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
+; GFX9-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
+; GFX9-NEXT:    v_lshrrev_b32_e32 v28, 16, v25
+; GFX9-NEXT:    v_lshrrev_b32_e32 v26, 16, v24
+; GFX9-NEXT:    v_lshrrev_b32_e32 v31, 16, v23
+; GFX9-NEXT:    v_lshrrev_b32_e32 v27, 16, v22
+; GFX9-NEXT:    v_lshrrev_b32_e32 v33, 16, v21
+; GFX9-NEXT:    v_lshrrev_b32_e32 v29, 16, v20
+; GFX9-NEXT:    v_lshrrev_b32_e32 v35, 16, v19
+; GFX9-NEXT:    v_lshrrev_b32_e32 v30, 16, v18
+; GFX9-NEXT:    v_lshrrev_b32_e32 v37, 16, v17
+; GFX9-NEXT:    v_lshrrev_b32_e32 v32, 16, v16
+; GFX9-NEXT:    v_lshrrev_b32_e32 v39, 16, v15
+; GFX9-NEXT:    v_lshrrev_b32_e32 v34, 16, v14
+; GFX9-NEXT:    v_lshrrev_b32_e32 v49, 16, v13
+; GFX9-NEXT:    v_lshrrev_b32_e32 v36, 16, v12
+; GFX9-NEXT:    v_lshrrev_b32_e32 v51, 16, v11
+; GFX9-NEXT:    v_lshrrev_b32_e32 v38, 16, v10
+; GFX9-NEXT:    v_lshrrev_b32_e32 v53, 16, v9
+; GFX9-NEXT:    v_lshrrev_b32_e32 v48, 16, v8
+; GFX9-NEXT:    v_lshrrev_b32_e32 v55, 16, v7
+; GFX9-NEXT:    v_lshrrev_b32_e32 v50, 16, v6
+; GFX9-NEXT:    v_lshrrev_b32_e32 v41, 16, v5
+; GFX9-NEXT:    v_lshrrev_b32_e32 v52, 16, v4
+; GFX9-NEXT:    v_lshrrev_b32_e32 v42, 16, v3
+; GFX9-NEXT:    v_lshrrev_b32_e32 v54, 16, v2
+; GFX9-NEXT:    v_lshrrev_b32_e32 v43, 16, v1
+; GFX9-NEXT:    v_lshrrev_b32_e32 v40, 16, v0
+; GFX9-NEXT:    s_branch .LBB53_6
+; GFX9-NEXT:  .LBB53_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
@@ -36134,7 +36639,7 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v33, s44
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s43
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s42
-; GFX9-NEXT:  .LBB53_5: ; %end
+; GFX9-NEXT:  .LBB53_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v3, 0xffff, v3
@@ -36207,12 +36712,12 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s11, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s10, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s12, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s9, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s12, s9, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s58, s8, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s14, s7, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s13, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s59, s6, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s60, s4, 16
@@ -36236,9 +36741,42 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s77, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s57, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s78, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-TRUE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB53_3
+; GFX11-TRUE16-NEXT:  .LBB53_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:  .LBB53_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s14, s14, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[24:25], s[8:9], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[22:23], s[6:7], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[20:21], s[4:5], 1.0
@@ -36278,36 +36816,8 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v54, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v67, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v64, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB53_5
-; GFX11-TRUE16-NEXT:  .LBB53_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    s_branch .LBB53_2
-; GFX11-TRUE16-NEXT:  .LBB53_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB53_6
+; GFX11-TRUE16-NEXT:  .LBB53_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -36333,8 +36843,8 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v30, s61 :: v_dual_mov_b32 v37, s41
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v26, s58 :: v_dual_mov_b32 v35, s40
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v66, s56 :: v_dual_mov_b32 v33, s15
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s14 :: v_dual_mov_b32 v28, s13
-; GFX11-TRUE16-NEXT:  .LBB53_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s13 :: v_dual_mov_b32 v28, s12
+; GFX11-TRUE16-NEXT:  .LBB53_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v64.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v67.l
@@ -36377,12 +36887,12 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s11, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s10, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s12, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s9, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s12, s9, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s58, s8, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s14, s7, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s13, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s59, s6, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s60, s4, 16
@@ -36406,9 +36916,42 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s77, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s57, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s78, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s12
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-FAKE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB53_3
+; GFX11-FAKE16-NEXT:  .LBB53_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:  .LBB53_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s14, s14, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[21:22], s[8:9], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[23:24], s[6:7], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[25:26], s[4:5], 1.0
@@ -36448,36 +36991,8 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v55, 16, v2
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v67, 16, v5
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v64, 16, v4
-; GFX11-FAKE16-NEXT:    s_branch .LBB53_5
-; GFX11-FAKE16-NEXT:  .LBB53_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    s_branch .LBB53_2
-; GFX11-FAKE16-NEXT:  .LBB53_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB53_6
+; GFX11-FAKE16-NEXT:  .LBB53_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v27, s22
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v13, s24
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s16 :: v_dual_mov_b32 v11, s26
@@ -36503,8 +37018,8 @@ define inreg <52 x half> @bitcast_v13f64_to_v52f16_scalar(<13 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v52, s45 :: v_dual_mov_b32 v39, s42
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v48, s43 :: v_dual_mov_b32 v37, s41
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v36, s40 :: v_dual_mov_b32 v33, s15
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v32, s14 :: v_dual_mov_b32 v31, s13
-; GFX11-FAKE16-NEXT:  .LBB53_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v32, s13 :: v_dual_mov_b32 v31, s12
+; GFX11-FAKE16-NEXT:  .LBB53_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v27, 0xffff, v27
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v4
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v68, 0xffff, v0
@@ -37877,10 +38392,8 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; SI-NEXT:    v_writelane_b32 v32, s71, 21
 ; SI-NEXT:    v_writelane_b32 v32, s80, 22
 ; SI-NEXT:    v_writelane_b32 v32, s81, 23
-; SI-NEXT:    v_writelane_b32 v32, s82, 24
-; SI-NEXT:    v_writelane_b32 v32, s83, 25
-; SI-NEXT:    v_writelane_b32 v32, s30, 26
-; SI-NEXT:    v_writelane_b32 v32, s31, 27
+; SI-NEXT:    v_writelane_b32 v32, s30, 24
+; SI-NEXT:    v_writelane_b32 v32, s31, 25
 ; SI-NEXT:    v_readfirstlane_b32 s6, v11
 ; SI-NEXT:    v_readfirstlane_b32 s8, v10
 ; SI-NEXT:    v_readfirstlane_b32 s10, v9
@@ -37895,18 +38408,18 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s94, v0
 ; SI-NEXT:    s_lshr_b32 s90, s29, 16
 ; SI-NEXT:    s_lshr_b32 s93, s28, 16
-; SI-NEXT:    s_lshr_b32 s30, s27, 16
-; SI-NEXT:    s_lshr_b32 s31, s26, 16
-; SI-NEXT:    s_lshr_b32 s34, s25, 16
-; SI-NEXT:    s_lshr_b32 s35, s24, 16
-; SI-NEXT:    s_lshr_b32 s68, s23, 16
-; SI-NEXT:    s_lshr_b32 s69, s22, 16
-; SI-NEXT:    s_lshr_b32 s70, s21, 16
-; SI-NEXT:    s_lshr_b32 s71, s20, 16
-; SI-NEXT:    s_lshr_b32 s80, s19, 16
-; SI-NEXT:    s_lshr_b32 s81, s18, 16
-; SI-NEXT:    s_lshr_b32 s82, s17, 16
-; SI-NEXT:    s_lshr_b32 s83, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s27, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s26, 16
+; SI-NEXT:    s_lshr_b32 s30, s25, 16
+; SI-NEXT:    s_lshr_b32 s31, s24, 16
+; SI-NEXT:    s_lshr_b32 s34, s23, 16
+; SI-NEXT:    s_lshr_b32 s35, s22, 16
+; SI-NEXT:    s_lshr_b32 s68, s21, 16
+; SI-NEXT:    s_lshr_b32 s69, s20, 16
+; SI-NEXT:    s_lshr_b32 s70, s19, 16
+; SI-NEXT:    s_lshr_b32 s71, s18, 16
+; SI-NEXT:    s_lshr_b32 s80, s17, 16
+; SI-NEXT:    s_lshr_b32 s81, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -37921,43 +38434,43 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; SI-NEXT:    s_lshr_b32 s95, s94, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -38001,11 +38514,20 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s61, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s83
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s81
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s80
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -38017,7 +38539,7 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s18
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s71
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -38025,11 +38547,11 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
-; SI-NEXT:    v_cvt_f32_f16_e32 v3, s80
+; SI-NEXT:    v_cvt_f32_f16_e32 v3, s70
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v4, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s19
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s69
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
@@ -38040,7 +38562,7 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s20
 ; SI-NEXT:    v_or_b32_e32 v3, v4, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s68
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
@@ -38049,11 +38571,11 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s35
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s22
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s34
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
@@ -38064,7 +38586,7 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s23
 ; SI-NEXT:    v_or_b32_e32 v6, v7, v6
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s31
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s24
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
@@ -38073,11 +38595,11 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s30
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
 ; SI-NEXT:    v_or_b32_e32 v8, v10, v8
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s25
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, vcc_hi
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
@@ -38088,7 +38610,7 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s26
 ; SI-NEXT:    v_or_b32_e32 v9, v10, v9
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v11
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, vcc_lo
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s27
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
@@ -38211,11 +38733,8 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; SI-NEXT:    v_or_b32_e32 v24, v25, v24
 ; SI-NEXT:    v_lshlrev_b32_e32 v25, 16, v26
 ; SI-NEXT:    v_or_b32_e32 v25, v27, v25
-; SI-NEXT:    s_branch .LBB55_5
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:    s_branch .LBB55_6
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -38248,11 +38767,9 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB55_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 26
-; SI-NEXT:    v_readlane_b32 s31, v32, 27
-; SI-NEXT:    v_readlane_b32 s83, v32, 25
-; SI-NEXT:    v_readlane_b32 s82, v32, 24
+; SI-NEXT:  .LBB55_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 24
+; SI-NEXT:    v_readlane_b32 s31, v32, 25
 ; SI-NEXT:    v_readlane_b32 s81, v32, 23
 ; SI-NEXT:    v_readlane_b32 s80, v32, 22
 ; SI-NEXT:    v_readlane_b32 s71, v32, 21
@@ -38317,10 +38834,8 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; VI-NEXT:    v_writelane_b32 v32, s83, 25
 ; VI-NEXT:    v_writelane_b32 v32, s84, 26
 ; VI-NEXT:    v_writelane_b32 v32, s85, 27
-; VI-NEXT:    v_writelane_b32 v32, s86, 28
-; VI-NEXT:    v_writelane_b32 v32, s87, 29
-; VI-NEXT:    v_writelane_b32 v32, s30, 30
-; VI-NEXT:    v_writelane_b32 v32, s31, 31
+; VI-NEXT:    v_writelane_b32 v32, s30, 28
+; VI-NEXT:    v_writelane_b32 v32, s31, 29
 ; VI-NEXT:    v_readfirstlane_b32 s6, v11
 ; VI-NEXT:    v_readfirstlane_b32 s8, v10
 ; VI-NEXT:    v_readfirstlane_b32 s10, v9
@@ -38330,23 +38845,23 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s75, v5
 ; VI-NEXT:    v_readfirstlane_b32 s78, v4
 ; VI-NEXT:    v_readfirstlane_b32 s89, v3
-; VI-NEXT:    v_readfirstlane_b32 s30, v2
-; VI-NEXT:    v_readfirstlane_b32 s35, v1
-; VI-NEXT:    v_readfirstlane_b32 s71, v0
+; VI-NEXT:    v_readfirstlane_b32 vcc_lo, v2
+; VI-NEXT:    v_readfirstlane_b32 s31, v1
+; VI-NEXT:    v_readfirstlane_b32 s69, v0
 ; VI-NEXT:    s_lshr_b32 s74, s29, 16
 ; VI-NEXT:    s_lshr_b32 s77, s28, 16
 ; VI-NEXT:    s_lshr_b32 s88, s27, 16
 ; VI-NEXT:    s_lshr_b32 s90, s26, 16
-; VI-NEXT:    s_lshr_b32 s31, s25, 16
-; VI-NEXT:    s_lshr_b32 s68, s24, 16
-; VI-NEXT:    s_lshr_b32 s70, s23, 16
-; VI-NEXT:    s_lshr_b32 s81, s22, 16
-; VI-NEXT:    s_lshr_b32 s82, s21, 16
-; VI-NEXT:    s_lshr_b32 s83, s20, 16
-; VI-NEXT:    s_lshr_b32 s84, s19, 16
-; VI-NEXT:    s_lshr_b32 s85, s18, 16
-; VI-NEXT:    s_lshr_b32 s86, s17, 16
-; VI-NEXT:    s_lshr_b32 s87, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s25, 16
+; VI-NEXT:    s_lshr_b32 s34, s24, 16
+; VI-NEXT:    s_lshr_b32 s68, s23, 16
+; VI-NEXT:    s_lshr_b32 s71, s22, 16
+; VI-NEXT:    s_lshr_b32 s80, s21, 16
+; VI-NEXT:    s_lshr_b32 s81, s20, 16
+; VI-NEXT:    s_lshr_b32 s82, s19, 16
+; VI-NEXT:    s_lshr_b32 s83, s18, 16
+; VI-NEXT:    s_lshr_b32 s84, s17, 16
+; VI-NEXT:    s_lshr_b32 s85, s16, 16
 ; VI-NEXT:    s_lshr_b32 s7, s6, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -38356,42 +38871,42 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; VI-NEXT:    s_lshr_b32 s76, s75, 16
 ; VI-NEXT:    s_lshr_b32 s79, s78, 16
 ; VI-NEXT:    s_lshr_b32 s91, s89, 16
-; VI-NEXT:    s_lshr_b32 s34, s30, 16
-; VI-NEXT:    s_lshr_b32 s69, s35, 16
-; VI-NEXT:    s_lshr_b32 s80, s71, 16
+; VI-NEXT:    s_lshr_b32 s30, vcc_lo, 16
+; VI-NEXT:    s_lshr_b32 s35, s31, 16
+; VI-NEXT:    s_lshr_b32 s70, s69, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v12
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s86, 16
+; VI-NEXT:    s_lshl_b32 s41, s84, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -38405,14 +38920,14 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s35
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s31
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s30
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_lo
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s89
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
@@ -38441,46 +38956,55 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v25, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s87
-; VI-NEXT:    v_mov_b32_e32 v2, s86
+; VI-NEXT:    v_mov_b32_e32 v0, s85
+; VI-NEXT:    v_mov_b32_e32 v2, s84
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v25
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v25
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s85
+; VI-NEXT:    v_mov_b32_e32 v2, s83
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v25
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s84
+; VI-NEXT:    v_mov_b32_e32 v3, s82
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v25
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s83
+; VI-NEXT:    v_mov_b32_e32 v4, s81
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v25
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s82
+; VI-NEXT:    v_mov_b32_e32 v5, s80
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v25
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s81
+; VI-NEXT:    v_mov_b32_e32 v6, s71
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v25
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s70
+; VI-NEXT:    v_mov_b32_e32 v7, s68
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v25
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s68
+; VI-NEXT:    v_mov_b32_e32 v8, s34
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v25
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
-; VI-NEXT:    v_mov_b32_e32 v9, s31
+; VI-NEXT:    v_mov_b32_e32 v9, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v9, v9, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v10, s25, v25
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
@@ -38500,17 +39024,17 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v25
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s80
+; VI-NEXT:    v_mov_b32_e32 v14, s70
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s71, v25
+; VI-NEXT:    v_add_f16_e32 v15, s69, v25
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s69
+; VI-NEXT:    v_mov_b32_e32 v15, s35
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v16, s35, v25
+; VI-NEXT:    v_add_f16_e32 v16, s31, v25
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
-; VI-NEXT:    v_mov_b32_e32 v16, s34
+; VI-NEXT:    v_mov_b32_e32 v16, s30
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v17, s30, v25
+; VI-NEXT:    v_add_f16_e32 v17, vcc_lo, v25
 ; VI-NEXT:    v_or_b32_e32 v16, v17, v16
 ; VI-NEXT:    v_mov_b32_e32 v17, s91
 ; VI-NEXT:    v_add_f16_sdwa v17, v17, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
@@ -38548,11 +39072,8 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; VI-NEXT:    v_add_f16_sdwa v26, v26, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v25, s6, v25
 ; VI-NEXT:    v_or_b32_e32 v25, v25, v26
-; VI-NEXT:    s_branch .LBB55_5
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:    s_branch .LBB55_6
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -38585,11 +39106,9 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB55_5: ; %end
-; VI-NEXT:    v_readlane_b32 s30, v32, 30
-; VI-NEXT:    v_readlane_b32 s31, v32, 31
-; VI-NEXT:    v_readlane_b32 s87, v32, 29
-; VI-NEXT:    v_readlane_b32 s86, v32, 28
+; VI-NEXT:  .LBB55_6: ; %end
+; VI-NEXT:    v_readlane_b32 s30, v32, 28
+; VI-NEXT:    v_readlane_b32 s31, v32, 29
 ; VI-NEXT:    v_readlane_b32 s85, v32, 27
 ; VI-NEXT:    v_readlane_b32 s84, v32, 26
 ; VI-NEXT:    v_readlane_b32 s83, v32, 25
@@ -38708,10 +39227,18 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s59, s59, s72
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s60, s60, s63
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s62
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v25, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v25 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v25 op_sel_hi:[1,0]
@@ -38739,10 +39266,8 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; GFX9-NEXT:    v_pk_add_f16 v23, s59, v25 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v24, s60, v25 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v25, s61, v25 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB55_5
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:    s_branch .LBB55_6
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -38775,7 +39300,7 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB55_5: ; %end
+; GFX9-NEXT:  .LBB55_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -38860,11 +39385,16 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s23, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s24, s47, s60
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s46, s59
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -38892,8 +39422,6 @@ define inreg <13 x double> @bitcast_v52f16_to_v13f64_scalar(<52 x half> inreg %a
 ; GFX11-NEXT:    v_pk_add_f16 v24, 0x200, s24 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v25, 0x200, s25 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -40212,19 +40740,19 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s84, v1
 ; SI-NEXT:    v_readfirstlane_b32 s86, v0
 ; SI-NEXT:    s_lshr_b32 s54, s29, 16
-; SI-NEXT:    s_lshr_b32 s91, s28, 16
+; SI-NEXT:    s_lshr_b32 s93, s28, 16
 ; SI-NEXT:    s_lshr_b32 s53, s27, 16
-; SI-NEXT:    s_lshr_b32 s89, s26, 16
+; SI-NEXT:    s_lshr_b32 s91, s26, 16
 ; SI-NEXT:    s_lshr_b32 s52, s25, 16
-; SI-NEXT:    s_lshr_b32 s79, s24, 16
+; SI-NEXT:    s_lshr_b32 s89, s24, 16
 ; SI-NEXT:    s_lshr_b32 s51, s23, 16
-; SI-NEXT:    s_lshr_b32 s77, s22, 16
+; SI-NEXT:    s_lshr_b32 s79, s22, 16
 ; SI-NEXT:    s_lshr_b32 s50, s21, 16
-; SI-NEXT:    s_lshr_b32 s75, s20, 16
+; SI-NEXT:    s_lshr_b32 s77, s20, 16
 ; SI-NEXT:    s_lshr_b32 s49, s19, 16
-; SI-NEXT:    s_lshr_b32 s73, s18, 16
+; SI-NEXT:    s_lshr_b32 s75, s18, 16
 ; SI-NEXT:    s_lshr_b32 s48, s17, 16
-; SI-NEXT:    s_lshr_b32 s63, s16, 16
+; SI-NEXT:    s_lshr_b32 s73, s16, 16
 ; SI-NEXT:    s_lshr_b32 s68, s85, 16
 ; SI-NEXT:    s_lshr_b32 s96, s99, 16
 ; SI-NEXT:    s_lshr_b32 s67, s81, 16
@@ -40234,49 +40762,45 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s65, s98, 16
 ; SI-NEXT:    s_lshr_b32 s31, s69, 16
 ; SI-NEXT:    s_lshr_b32 s64, s87, 16
-; SI-NEXT:    s_lshr_b32 s95, s97, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s97, 16
 ; SI-NEXT:    s_lshr_b32 s55, s84, 16
-; SI-NEXT:    s_lshr_b32 s93, s86, 16
+; SI-NEXT:    s_lshr_b32 s95, s86, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s48, 16
-; SI-NEXT:    s_lshl_b32 s62, s63, 16
-; SI-NEXT:    s_mov_b32 s9, s63
 ; SI-NEXT:    s_or_b32 s63, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s19, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s49, 16
-; SI-NEXT:    s_lshl_b32 s72, s73, 16
-; SI-NEXT:    s_mov_b32 s11, s73
+; SI-NEXT:    s_lshl_b32 s62, s73, 16
+; SI-NEXT:    s_mov_b32 s9, s73
 ; SI-NEXT:    s_or_b32 s73, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s21, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s50, 16
-; SI-NEXT:    s_lshl_b32 s74, s75, 16
-; SI-NEXT:    s_mov_b32 s90, s75
+; SI-NEXT:    s_lshl_b32 s72, s75, 16
+; SI-NEXT:    s_mov_b32 s11, s75
 ; SI-NEXT:    s_or_b32 s75, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s51, 16
-; SI-NEXT:    s_lshl_b32 s76, s77, 16
-; SI-NEXT:    s_lshl_b32 s60, s91, 16
-; SI-NEXT:    s_mov_b32 s94, s91
-; SI-NEXT:    s_mov_b32 s91, s77
+; SI-NEXT:    s_lshl_b32 s74, s77, 16
+; SI-NEXT:    s_mov_b32 s90, s77
 ; SI-NEXT:    s_or_b32 s77, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s25, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s52, 16
-; SI-NEXT:    s_lshl_b32 s78, s79, 16
-; SI-NEXT:    s_mov_b32 s92, s79
+; SI-NEXT:    s_lshl_b32 s76, s79, 16
+; SI-NEXT:    s_lshl_b32 s88, s91, 16
+; SI-NEXT:    s_lshl_b32 s60, s93, 16
+; SI-NEXT:    s_mov_b32 s94, s93
+; SI-NEXT:    s_mov_b32 s93, s91
+; SI-NEXT:    s_mov_b32 s91, s79
 ; SI-NEXT:    s_or_b32 s79, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s53, 16
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s88, s89, 16
-; SI-NEXT:    s_lshl_b32 s58, s93, 16
-; SI-NEXT:    s_lshl_b32 s56, s95, 16
-; SI-NEXT:    s_mov_b32 s30, s95
-; SI-NEXT:    s_mov_b32 s95, s93
-; SI-NEXT:    s_mov_b32 s93, s89
+; SI-NEXT:    s_lshl_b32 s78, s89, 16
+; SI-NEXT:    s_mov_b32 s92, s89
 ; SI-NEXT:    s_or_b32 s89, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s54, 16
@@ -40307,66 +40831,104 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s7, s67, 16
 ; SI-NEXT:    s_mov_b32 s15, s73
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[72:73], 16
+; SI-NEXT:    s_mov_b32 s13, s75
+; SI-NEXT:    s_lshr_b64 s[74:75], s[74:75], 16
 ; SI-NEXT:    s_or_b32 s6, s4, s88
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
 ; SI-NEXT:    s_or_b32 s43, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s85, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s68, 16
-; SI-NEXT:    s_mov_b32 s41, s63
-; SI-NEXT:    s_lshr_b64 s[62:63], s[62:63], 16
-; SI-NEXT:    s_mov_b32 s73, s11
-; SI-NEXT:    s_mov_b32 s13, s75
-; SI-NEXT:    s_lshr_b64 s[74:75], s[74:75], 16
+; SI-NEXT:    s_mov_b32 s73, s9
+; SI-NEXT:    s_mov_b32 s75, s11
 ; SI-NEXT:    s_mov_b32 s11, s77
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[76:77], 16
-; SI-NEXT:    s_or_b32 s4, s4, s60
-; SI-NEXT:    s_or_b32 vcc_hi, s5, s7
-; SI-NEXT:    s_mov_b32 s63, s9
-; SI-NEXT:    s_mov_b32 s75, s90
-; SI-NEXT:    s_mov_b32 s77, s91
 ; SI-NEXT:    s_mov_b32 s9, s79
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[78:79], 16
+; SI-NEXT:    s_or_b32 s4, s4, s60
+; SI-NEXT:    s_lshl_b32 s58, s95, 16
+; SI-NEXT:    s_or_b32 s37, s5, s7
+; SI-NEXT:    s_mov_b32 s77, s90
+; SI-NEXT:    s_mov_b32 s79, s91
 ; SI-NEXT:    s_mov_b32 s7, s89
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[88:89], 16
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[60:61], 16
 ; SI-NEXT:    s_and_b32 s60, s86, 0xffff
-; SI-NEXT:    s_mov_b32 s79, s92
-; SI-NEXT:    s_mov_b32 s89, s93
+; SI-NEXT:    s_lshl_b32 s56, vcc_hi, 16
+; SI-NEXT:    s_mov_b32 s41, s63
+; SI-NEXT:    s_lshr_b64 s[62:63], s[62:63], 16
+; SI-NEXT:    s_mov_b32 s89, s92
+; SI-NEXT:    s_mov_b32 s91, s93
 ; SI-NEXT:    s_or_b32 s60, s60, s58
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[58:59], 16
 ; SI-NEXT:    s_and_b32 s58, s97, 0xffff
 ; SI-NEXT:    s_lshl_b32 s46, s31, 16
-; SI-NEXT:    s_mov_b32 s91, s94
-; SI-NEXT:    s_mov_b32 s93, s95
+; SI-NEXT:    s_mov_b32 s93, s94
 ; SI-NEXT:    s_or_b32 s58, s58, s56
+; SI-NEXT:    s_mov_b32 s63, s95
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[56:57], 16
 ; SI-NEXT:    s_and_b32 s56, s69, 0xffff
 ; SI-NEXT:    s_lshl_b32 s44, s71, 16
-; SI-NEXT:    s_mov_b32 s95, s30
+; SI-NEXT:    s_mov_b32 s95, s63
 ; SI-NEXT:    s_or_b32 s56, s56, s46
-; SI-NEXT:    s_mov_b32 s34, s31
-; SI-NEXT:    s_lshr_b64 s[30:31], s[46:47], 16
+; SI-NEXT:    s_mov_b32 s63, vcc_hi
+; SI-NEXT:    s_lshr_b64 vcc, s[46:47], 16
 ; SI-NEXT:    s_and_b32 s46, s80, 0xffff
 ; SI-NEXT:    s_lshl_b32 s42, s82, 16
-; SI-NEXT:    s_mov_b32 s31, s34
+; SI-NEXT:    s_mov_b32 vcc_hi, s63
 ; SI-NEXT:    s_or_b32 s46, s46, s44
-; SI-NEXT:    s_lshr_b64 s[34:35], s[44:45], 16
+; SI-NEXT:    s_mov_b32 s63, s31
+; SI-NEXT:    s_lshr_b64 s[30:31], s[44:45], 16
 ; SI-NEXT:    s_and_b32 s44, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 vcc_lo, s96, 16
+; SI-NEXT:    s_lshl_b32 s36, s96, 16
 ; SI-NEXT:    s_or_b32 s44, s44, s42
-; SI-NEXT:    s_lshr_b64 s[36:37], s[42:43], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[42:43], 16
 ; SI-NEXT:    s_and_b32 s42, s99, 0xffff
 ; SI-NEXT:    s_mov_b32 s5, s61
 ; SI-NEXT:    s_mov_b32 s61, s59
 ; SI-NEXT:    s_mov_b32 s59, s57
 ; SI-NEXT:    s_mov_b32 s57, s47
 ; SI-NEXT:    s_mov_b32 s47, s45
+; SI-NEXT:    s_mov_b32 s31, s63
 ; SI-NEXT:    s_mov_b32 s45, s43
-; SI-NEXT:    s_or_b32 s42, s42, vcc_lo
-; SI-NEXT:    s_mov_b32 s43, vcc_hi
-; SI-NEXT:    s_lshr_b64 s[38:39], vcc, 16
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_or_b32 s42, s42, s36
+; SI-NEXT:    s_mov_b32 s43, s37
+; SI-NEXT:    s_lshr_b64 s[36:37], s[36:37], 16
+; SI-NEXT:    s_mov_b64 s[38:39], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[38:39], -1
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[38:39], s[38:39], exec
+; SI-NEXT:    s_cselect_b32 s63, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s63, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s99, s99, 3
 ; SI-NEXT:    s_and_b32 s4, s99, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s96, 16
@@ -40409,7 +40971,7 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s97, s97, 3
 ; SI-NEXT:    s_add_i32 s57, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s97, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s95, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s87, s87, 3
 ; SI-NEXT:    s_add_i32 s58, s4, 0x30000
@@ -40419,7 +40981,7 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s86, s86, 3
 ; SI-NEXT:    s_add_i32 s59, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s86, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s93, 16
+; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s84, s84, 3
 ; SI-NEXT:    s_add_i32 s60, s4, 0x30000
@@ -40429,7 +40991,7 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s28, s28, 3
 ; SI-NEXT:    s_add_i32 s61, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s91, 16
+; SI-NEXT:    s_lshl_b32 s5, s93, 16
 ; SI-NEXT:    s_add_i32 s29, s29, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_and_b32 s5, s29, 0xffff
@@ -40437,7 +40999,7 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_and_b32 s6, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s89, 16
+; SI-NEXT:    s_lshl_b32 s7, s91, 16
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_and_b32 s7, s27, 0xffff
@@ -40445,7 +41007,7 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_or_b32 s7, s8, s7
 ; SI-NEXT:    s_and_b32 s8, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s9, s79, 16
+; SI-NEXT:    s_lshl_b32 s9, s89, 16
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_and_b32 s9, s25, 0xffff
@@ -40453,7 +41015,7 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_or_b32 s9, s10, s9
 ; SI-NEXT:    s_and_b32 s10, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s11, s77, 16
+; SI-NEXT:    s_lshl_b32 s11, s79, 16
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_or_b32 s10, s11, s10
 ; SI-NEXT:    s_and_b32 s11, s23, 0xffff
@@ -40461,7 +41023,7 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_or_b32 s11, s12, s11
 ; SI-NEXT:    s_and_b32 s12, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s13, s75, 16
+; SI-NEXT:    s_lshl_b32 s13, s77, 16
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_or_b32 s12, s13, s12
 ; SI-NEXT:    s_and_b32 s13, s21, 0xffff
@@ -40469,7 +41031,7 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s13, s14, s13
 ; SI-NEXT:    s_and_b32 s14, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s15, s73, 16
+; SI-NEXT:    s_lshl_b32 s15, s75, 16
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_or_b32 s14, s15, s14
 ; SI-NEXT:    s_and_b32 s15, s19, 0xffff
@@ -40477,7 +41039,7 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_or_b32 s15, s18, s15
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s18, s63, 16
+; SI-NEXT:    s_lshl_b32 s18, s73, 16
 ; SI-NEXT:    s_or_b32 s16, s18, s16
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s40, s16, 0x30000
@@ -40506,10 +41068,10 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[60:61], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[58:59], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[56:57], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[46:47], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[44:45], 16
-; SI-NEXT:    s_lshr_b64 s[38:39], s[42:43], 16
+; SI-NEXT:    s_lshr_b64 vcc, s[56:57], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[46:47], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[44:45], 16
+; SI-NEXT:    s_lshr_b64 s[36:37], s[42:43], 16
 ; SI-NEXT:    s_lshr_b32 s48, s41, 16
 ; SI-NEXT:    s_lshr_b32 s49, s15, 16
 ; SI-NEXT:    s_lshr_b32 s50, s13, 16
@@ -40523,7 +41085,7 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s66, s47, 16
 ; SI-NEXT:    s_lshr_b32 s67, s45, 16
 ; SI-NEXT:    s_lshr_b32 s68, s43, 16
-; SI-NEXT:  .LBB57_3: ; %end
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    s_and_b32 s16, s40, 0xffff
 ; SI-NEXT:    s_lshl_b32 s17, s62, 16
 ; SI-NEXT:    s_or_b32 s16, s16, s17
@@ -40579,25 +41141,25 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s22, s64, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s22
 ; SI-NEXT:    s_and_b32 s22, s56, 0xffff
-; SI-NEXT:    s_lshl_b32 s23, s30, 16
+; SI-NEXT:    s_lshl_b32 s23, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s22, s22, s23
 ; SI-NEXT:    s_and_b32 s23, s57, 0xffff
 ; SI-NEXT:    s_lshl_b32 s24, s65, 16
 ; SI-NEXT:    s_or_b32 s23, s23, s24
 ; SI-NEXT:    s_and_b32 s24, s46, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s34, 16
+; SI-NEXT:    s_lshl_b32 s25, s30, 16
 ; SI-NEXT:    s_or_b32 s24, s24, s25
 ; SI-NEXT:    s_and_b32 s25, s47, 0xffff
 ; SI-NEXT:    s_lshl_b32 s26, s66, 16
 ; SI-NEXT:    s_or_b32 s25, s25, s26
 ; SI-NEXT:    s_and_b32 s26, s44, 0xffff
-; SI-NEXT:    s_lshl_b32 s27, s36, 16
+; SI-NEXT:    s_lshl_b32 s27, s34, 16
 ; SI-NEXT:    s_or_b32 s26, s26, s27
 ; SI-NEXT:    s_and_b32 s27, s45, 0xffff
 ; SI-NEXT:    s_lshl_b32 s28, s67, 16
 ; SI-NEXT:    s_or_b32 s27, s27, s28
 ; SI-NEXT:    s_and_b32 s28, s42, 0xffff
-; SI-NEXT:    s_lshl_b32 s29, s38, 16
+; SI-NEXT:    s_lshl_b32 s29, s36, 16
 ; SI-NEXT:    s_or_b32 s28, s28, s29
 ; SI-NEXT:    s_and_b32 s29, s43, 0xffff
 ; SI-NEXT:    s_lshl_b32 s40, s68, 16
@@ -40669,34 +41231,6 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v52i16_to_v52f16_scalar:
 ; VI:       ; %bb.0:
@@ -40741,10 +41275,18 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s78, s77, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v12
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_add_i32 s91, s91, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
@@ -40797,7 +41339,7 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s9, s9, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s6, s6, 3
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
 ; VI-NEXT:    s_lshl_b32 s5, s91, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
@@ -40903,8 +41445,6 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v24, s8
 ; VI-NEXT:    v_mov_b32_e32 v25, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v52i16_to_v52f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -40953,10 +41493,18 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s44, s72, 16
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v12
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_4
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s91, s63
 ; GFX9-NEXT:    v_pk_add_u16 v25, s4, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s90, s62
@@ -41035,10 +41583,8 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v28, 16, v23
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v27, 16, v24
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v26, 16, v25
-; GFX9-NEXT:    s_branch .LBB57_5
-; GFX9-NEXT:  .LBB57_3:
-; GFX9-NEXT:    s_branch .LBB57_2
-; GFX9-NEXT:  .LBB57_4:
+; GFX9-NEXT:    s_branch .LBB57_6
+; GFX9-NEXT:  .LBB57_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s91
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s90
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s89
@@ -41091,7 +41637,7 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v41, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v42, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v43, s6
-; GFX9-NEXT:  .LBB57_5: ; %end
+; GFX9-NEXT:  .LBB57_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -41191,11 +41737,16 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s62, 16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s78, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s78, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s78
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-TRUE16-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s78, -1
+; GFX11-TRUE16-NEXT:  .LBB57_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s78, s78, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s78, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s78, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s57, s74, s57
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s47, s72, s47
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s61, s77, s61
@@ -41275,8 +41826,6 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v27, 16, v24
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v26, 16, v25
 ; GFX11-TRUE16-NEXT:    s_branch .LBB57_5
-; GFX11-TRUE16-NEXT:  .LBB57_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB57_2
 ; GFX11-TRUE16-NEXT:  .LBB57_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s77 :: v_dual_mov_b32 v24, s76
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s74 :: v_dual_mov_b32 v22, s72
@@ -41375,11 +41924,16 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s62, 16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s78, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s78, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s78
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-FAKE16-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s78, -1
+; GFX11-FAKE16-NEXT:  .LBB57_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s78, s78, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s78, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s78, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s57, s74, s57
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s47, s72, s47
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s61, s77, s61
@@ -41459,8 +42013,6 @@ define inreg <52 x half> @bitcast_v52i16_to_v52f16_scalar(<52 x i16> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v27, 16, v22
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v26, 16, v21
 ; GFX11-FAKE16-NEXT:    s_branch .LBB57_5
-; GFX11-FAKE16-NEXT:  .LBB57_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB57_2
 ; GFX11-FAKE16-NEXT:  .LBB57_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v21, s77 :: v_dual_mov_b32 v22, s76
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v23, s74 :: v_dual_mov_b32 v24, s72
@@ -42493,10 +43045,18 @@ define inreg <52 x i16> @bitcast_v52f16_to_v52i16_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s76, s79, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_3
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB59_4
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s91
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s90
@@ -42735,10 +43295,8 @@ define inreg <52 x i16> @bitcast_v52f16_to_v52i16_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    buffer_load_dword v27, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v24, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload
 ; SI-NEXT:    v_lshr_b64 v[42:43], v[0:1], 16
-; SI-NEXT:    s_branch .LBB59_5
-; SI-NEXT:  .LBB59_3:
-; SI-NEXT:    s_branch .LBB59_2
-; SI-NEXT:  .LBB59_4:
+; SI-NEXT:    s_branch .LBB59_6
+; SI-NEXT:  .LBB59_5:
 ; SI-NEXT:    v_mov_b32_e32 v45, s61
 ; SI-NEXT:    v_mov_b32_e32 v47, s59
 ; SI-NEXT:    v_mov_b32_e32 v29, s56
@@ -42797,7 +43355,7 @@ define inreg <52 x i16> @bitcast_v52f16_to_v52i16_scalar(<52 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v30, s58
 ; SI-NEXT:    v_mov_b32_e32 v55, s47
 ; SI-NEXT:    v_mov_b32_e32 v26, s44
-; SI-NEXT:  .LBB59_5: ; %end
+; SI-NEXT:  .LBB59_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v42
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
@@ -42943,10 +43501,18 @@ define inreg <52 x i16> @bitcast_v52f16_to_v52i16_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s91, s90, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v12
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_3
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_4
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v26, 0x200
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v26
 ; VI-NEXT:    v_add_f16_e32 v43, s43, v26
@@ -43000,10 +43566,8 @@ define inreg <52 x i16> @bitcast_v52f16_to_v52i16_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v27, s47, v26
 ; VI-NEXT:    v_add_f16_e32 v25, s44, v26
 ; VI-NEXT:    v_add_f16_e32 v26, s45, v26
-; VI-NEXT:    s_branch .LBB59_5
-; VI-NEXT:  .LBB59_3:
-; VI-NEXT:    s_branch .LBB59_2
-; VI-NEXT:  .LBB59_4:
+; VI-NEXT:    s_branch .LBB59_6
+; VI-NEXT:  .LBB59_5:
 ; VI-NEXT:    v_mov_b32_e32 v26, s45
 ; VI-NEXT:    v_mov_b32_e32 v25, s44
 ; VI-NEXT:    v_mov_b32_e32 v27, s47
@@ -43056,7 +43620,7 @@ define inreg <52 x i16> @bitcast_v52f16_to_v52i16_scalar(<52 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v43, s43
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
-; VI-NEXT:  .LBB59_5: ; %end
+; VI-NEXT:  .LBB59_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v43, 16, v43
 ; VI-NEXT:    v_lshlrev_b32_e32 v42, 16, v42
 ; VI-NEXT:    v_lshlrev_b32_e32 v41, 16, v41
@@ -43163,10 +43727,18 @@ define inreg <52 x i16> @bitcast_v52f16_to_v52i16_scalar(<52 x half> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s44, s72, 16
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v12
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_4
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s91, s63
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v25, s4, v0 op_sel_hi:[1,0]
@@ -43246,10 +43818,8 @@ define inreg <52 x i16> @bitcast_v52f16_to_v52i16_scalar(<52 x half> inreg %a, i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v28, 16, v23
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v27, 16, v24
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v26, 16, v25
-; GFX9-NEXT:    s_branch .LBB59_5
-; GFX9-NEXT:  .LBB59_3:
-; GFX9-NEXT:    s_branch .LBB59_2
-; GFX9-NEXT:  .LBB59_4:
+; GFX9-NEXT:    s_branch .LBB59_6
+; GFX9-NEXT:  .LBB59_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s91
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s90
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s89
@@ -43302,7 +43872,7 @@ define inreg <52 x i16> @bitcast_v52f16_to_v52i16_scalar(<52 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v41, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v42, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v43, s6
-; GFX9-NEXT:  .LBB59_5: ; %end
+; GFX9-NEXT:  .LBB59_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -43402,11 +43972,16 @@ define inreg <52 x i16> @bitcast_v52f16_to_v52i16_scalar(<52 x half> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s62, 16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s78, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s78, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s78
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-TRUE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s78, -1
+; GFX11-TRUE16-NEXT:  .LBB59_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s78, s78, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s78, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s78, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s57, s74, s57
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s47, s72, s47
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s61, s77, s61
@@ -43486,8 +44061,6 @@ define inreg <52 x i16> @bitcast_v52f16_to_v52i16_scalar(<52 x half> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v27, 16, v24
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v26, 16, v25
 ; GFX11-TRUE16-NEXT:    s_branch .LBB59_5
-; GFX11-TRUE16-NEXT:  .LBB59_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB59_2
 ; GFX11-TRUE16-NEXT:  .LBB59_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s77 :: v_dual_mov_b32 v24, s76
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v23, s74 :: v_dual_mov_b32 v22, s72
@@ -43586,11 +44159,16 @@ define inreg <52 x i16> @bitcast_v52f16_to_v52i16_scalar(<52 x half> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s62, 16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s78, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s78, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s78
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-FAKE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s78, -1
+; GFX11-FAKE16-NEXT:  .LBB59_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s78, s78, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s78, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s78, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s57, s74, s57
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s47, s72, s47
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s61, s77, s61
@@ -43670,8 +44248,6 @@ define inreg <52 x i16> @bitcast_v52f16_to_v52i16_scalar(<52 x half> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v27, 16, v22
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v26, 16, v21
 ; GFX11-FAKE16-NEXT:    s_branch .LBB59_5
-; GFX11-FAKE16-NEXT:  .LBB59_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB59_2
 ; GFX11-FAKE16-NEXT:  .LBB59_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v21, s77 :: v_dual_mov_b32 v22, s76
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v23, s74 :: v_dual_mov_b32 v24, s72

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.896bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.896bit.ll
index 22b1bc3ed9468..358779c3a73b2 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.896bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.896bit.ll
@@ -208,10 +208,18 @@ define inreg <28 x float> @bitcast_v28i32_to_v28f32_scalar(<28 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s42, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s43, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -240,7 +248,7 @@ define inreg <28 x float> @bitcast_v28i32_to_v28f32_scalar(<28 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -270,8 +278,6 @@ define inreg <28 x float> @bitcast_v28i32_to_v28f32_scalar(<28 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v26, s7
 ; SI-NEXT:    v_mov_b32_e32 v27, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v28i32_to_v28f32_scalar:
 ; VI:       ; %bb.0:
@@ -292,10 +298,18 @@ define inreg <28 x float> @bitcast_v28i32_to_v28f32_scalar(<28 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s42, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s43, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -324,7 +338,7 @@ define inreg <28 x float> @bitcast_v28i32_to_v28f32_scalar(<28 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -354,8 +368,6 @@ define inreg <28 x float> @bitcast_v28i32_to_v28f32_scalar(<28 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v26, s7
 ; VI-NEXT:    v_mov_b32_e32 v27, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v28i32_to_v28f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -376,10 +388,18 @@ define inreg <28 x float> @bitcast_v28i32_to_v28f32_scalar(<28 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s42, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s43, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -408,7 +428,7 @@ define inreg <28 x float> @bitcast_v28i32_to_v28f32_scalar(<28 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -438,8 +458,6 @@ define inreg <28 x float> @bitcast_v28i32_to_v28f32_scalar(<28 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v28i32_to_v28f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -457,11 +475,16 @@ define inreg <28 x float> @bitcast_v28i32_to_v28f32_scalar(<28 x i32> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s13, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s14, 0
 ; GFX11-NEXT:    s_mov_b32 s14, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s14, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s14, s14, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -490,7 +513,7 @@ define inreg <28 x float> @bitcast_v28i32_to_v28f32_scalar(<28 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -507,8 +530,6 @@ define inreg <28 x float> @bitcast_v28i32_to_v28f32_scalar(<28 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s7 :: v_dual_mov_b32 v25, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s5 :: v_dual_mov_b32 v27, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -744,10 +765,18 @@ define inreg <28 x i32> @bitcast_v28f32_to_v28i32_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v27, s63, 1.0
 ; SI-NEXT:    v_add_f32_e64 v26, s62, 1.0
 ; SI-NEXT:    v_add_f32_e64 v25, s61, 1.0
@@ -776,10 +805,8 @@ define inreg <28 x i32> @bitcast_v28f32_to_v28i32_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB3_5
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:    s_branch .LBB3_6
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -812,7 +839,7 @@ define inreg <28 x i32> @bitcast_v28f32_to_v28i32_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB3_5: ; %end
+; SI-NEXT:  .LBB3_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -879,10 +906,18 @@ define inreg <28 x i32> @bitcast_v28f32_to_v28i32_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v27, s63, 1.0
 ; VI-NEXT:    v_add_f32_e64 v26, s62, 1.0
 ; VI-NEXT:    v_add_f32_e64 v25, s61, 1.0
@@ -911,10 +946,8 @@ define inreg <28 x i32> @bitcast_v28f32_to_v28i32_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB3_5
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:    s_branch .LBB3_6
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -947,7 +980,7 @@ define inreg <28 x i32> @bitcast_v28f32_to_v28i32_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB3_5: ; %end
+; VI-NEXT:  .LBB3_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -1014,10 +1047,18 @@ define inreg <28 x i32> @bitcast_v28f32_to_v28i32_scalar(<28 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v27, s63, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v26, s62, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v25, s61, 1.0
@@ -1046,10 +1087,8 @@ define inreg <28 x i32> @bitcast_v28f32_to_v28i32_scalar(<28 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB3_5
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:    s_branch .LBB3_6
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -1082,7 +1121,7 @@ define inreg <28 x i32> @bitcast_v28f32_to_v28i32_scalar(<28 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB3_5: ; %end
+; GFX9-NEXT:  .LBB3_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -1150,11 +1189,16 @@ define inreg <28 x i32> @bitcast_v28f32_to_v28i32_scalar(<28 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v27, s63, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v26, s62, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v25, s61, 1.0
@@ -1184,8 +1228,6 @@ define inreg <28 x i32> @bitcast_v28f32_to_v28i32_scalar(<28 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB3_5
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -1440,10 +1482,18 @@ define inreg <14 x i64> @bitcast_v28i32_to_v14i64_scalar(<28 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s42, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s43, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -1472,7 +1522,7 @@ define inreg <14 x i64> @bitcast_v28i32_to_v14i64_scalar(<28 x i32> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1502,8 +1552,6 @@ define inreg <14 x i64> @bitcast_v28i32_to_v14i64_scalar(<28 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v26, s7
 ; SI-NEXT:    v_mov_b32_e32 v27, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v28i32_to_v14i64_scalar:
 ; VI:       ; %bb.0:
@@ -1524,10 +1572,18 @@ define inreg <14 x i64> @bitcast_v28i32_to_v14i64_scalar(<28 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s42, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s43, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -1556,7 +1612,7 @@ define inreg <14 x i64> @bitcast_v28i32_to_v14i64_scalar(<28 x i32> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1586,8 +1642,6 @@ define inreg <14 x i64> @bitcast_v28i32_to_v14i64_scalar(<28 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v26, s7
 ; VI-NEXT:    v_mov_b32_e32 v27, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v28i32_to_v14i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -1608,10 +1662,18 @@ define inreg <14 x i64> @bitcast_v28i32_to_v14i64_scalar(<28 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s42, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s43, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -1640,7 +1702,7 @@ define inreg <14 x i64> @bitcast_v28i32_to_v14i64_scalar(<28 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1670,8 +1732,6 @@ define inreg <14 x i64> @bitcast_v28i32_to_v14i64_scalar(<28 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v28i32_to_v14i64_scalar:
 ; GFX11:       ; %bb.0:
@@ -1689,11 +1749,16 @@ define inreg <14 x i64> @bitcast_v28i32_to_v14i64_scalar(<28 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s13, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s14, 0
 ; GFX11-NEXT:    s_mov_b32 s14, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s14, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s14, s14, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -1722,7 +1787,7 @@ define inreg <14 x i64> @bitcast_v28i32_to_v14i64_scalar(<28 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1739,8 +1804,6 @@ define inreg <14 x i64> @bitcast_v28i32_to_v14i64_scalar(<28 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s7 :: v_dual_mov_b32 v25, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s5 :: v_dual_mov_b32 v27, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1967,10 +2030,18 @@ define inreg <28 x i32> @bitcast_v14i64_to_v28i32_scalar(<14 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s42, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s43, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -1999,7 +2070,7 @@ define inreg <28 x i32> @bitcast_v14i64_to_v28i32_scalar(<14 x i64> inreg %a, i3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2029,8 +2100,6 @@ define inreg <28 x i32> @bitcast_v14i64_to_v28i32_scalar(<14 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v26, s7
 ; SI-NEXT:    v_mov_b32_e32 v27, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v14i64_to_v28i32_scalar:
 ; VI:       ; %bb.0:
@@ -2051,10 +2120,18 @@ define inreg <28 x i32> @bitcast_v14i64_to_v28i32_scalar(<14 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s42, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s43, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -2083,7 +2160,7 @@ define inreg <28 x i32> @bitcast_v14i64_to_v28i32_scalar(<14 x i64> inreg %a, i3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2113,8 +2190,6 @@ define inreg <28 x i32> @bitcast_v14i64_to_v28i32_scalar(<14 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v26, s7
 ; VI-NEXT:    v_mov_b32_e32 v27, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v14i64_to_v28i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -2135,10 +2210,18 @@ define inreg <28 x i32> @bitcast_v14i64_to_v28i32_scalar(<14 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s42, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s43, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -2167,7 +2250,7 @@ define inreg <28 x i32> @bitcast_v14i64_to_v28i32_scalar(<14 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB7_3: ; %end
+; GFX9-NEXT:  .LBB7_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2197,8 +2280,6 @@ define inreg <28 x i32> @bitcast_v14i64_to_v28i32_scalar(<14 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_4:
-; GFX9-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-LABEL: bitcast_v14i64_to_v28i32_scalar:
 ; GFX11:       ; %bb.0:
@@ -2216,11 +2297,16 @@ define inreg <28 x i32> @bitcast_v14i64_to_v28i32_scalar(<14 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s13, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s14, 0
 ; GFX11-NEXT:    s_mov_b32 s14, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_3
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s14, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s14, s14, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -2249,7 +2335,7 @@ define inreg <28 x i32> @bitcast_v14i64_to_v28i32_scalar(<14 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB7_3: ; %end
+; GFX11-NEXT:  .LBB7_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2266,8 +2352,6 @@ define inreg <28 x i32> @bitcast_v14i64_to_v28i32_scalar(<14 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s7 :: v_dual_mov_b32 v25, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s5 :: v_dual_mov_b32 v27, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_4:
-; GFX11-NEXT:    s_branch .LBB7_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2487,10 +2571,18 @@ define inreg <14 x double> @bitcast_v28i32_to_v14f64_scalar(<28 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s42, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s43, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -2519,7 +2611,7 @@ define inreg <14 x double> @bitcast_v28i32_to_v14f64_scalar(<28 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2549,8 +2641,6 @@ define inreg <14 x double> @bitcast_v28i32_to_v14f64_scalar(<28 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v26, s7
 ; SI-NEXT:    v_mov_b32_e32 v27, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v28i32_to_v14f64_scalar:
 ; VI:       ; %bb.0:
@@ -2571,10 +2661,18 @@ define inreg <14 x double> @bitcast_v28i32_to_v14f64_scalar(<28 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s42, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s43, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -2603,7 +2701,7 @@ define inreg <14 x double> @bitcast_v28i32_to_v14f64_scalar(<28 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2633,8 +2731,6 @@ define inreg <14 x double> @bitcast_v28i32_to_v14f64_scalar(<28 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v26, s7
 ; VI-NEXT:    v_mov_b32_e32 v27, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v28i32_to_v14f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -2655,10 +2751,18 @@ define inreg <14 x double> @bitcast_v28i32_to_v14f64_scalar(<28 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s42, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s43, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -2687,7 +2791,7 @@ define inreg <14 x double> @bitcast_v28i32_to_v14f64_scalar(<28 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2717,8 +2821,6 @@ define inreg <14 x double> @bitcast_v28i32_to_v14f64_scalar(<28 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v28i32_to_v14f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -2736,11 +2838,16 @@ define inreg <14 x double> @bitcast_v28i32_to_v14f64_scalar(<28 x i32> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s13, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s14, 0
 ; GFX11-NEXT:    s_mov_b32 s14, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s14, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s14, s14, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -2769,7 +2876,7 @@ define inreg <14 x double> @bitcast_v28i32_to_v14f64_scalar(<28 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2786,8 +2893,6 @@ define inreg <14 x double> @bitcast_v28i32_to_v14f64_scalar(<28 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s7 :: v_dual_mov_b32 v25, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s5 :: v_dual_mov_b32 v27, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2981,10 +3086,18 @@ define inreg <28 x i32> @bitcast_v14f64_to_v28i32_scalar(<14 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; SI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; SI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
@@ -2999,10 +3112,8 @@ define inreg <28 x i32> @bitcast_v14f64_to_v28i32_scalar(<14 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB11_5
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:    s_branch .LBB11_6
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -3035,7 +3146,7 @@ define inreg <28 x i32> @bitcast_v14f64_to_v28i32_scalar(<14 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB11_5: ; %end
+; SI-NEXT:  .LBB11_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -3102,10 +3213,18 @@ define inreg <28 x i32> @bitcast_v14f64_to_v28i32_scalar(<14 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; VI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; VI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
@@ -3120,10 +3239,8 @@ define inreg <28 x i32> @bitcast_v14f64_to_v28i32_scalar(<14 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB11_5
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:    s_branch .LBB11_6
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -3156,7 +3273,7 @@ define inreg <28 x i32> @bitcast_v14f64_to_v28i32_scalar(<14 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB11_5: ; %end
+; VI-NEXT:  .LBB11_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -3223,10 +3340,18 @@ define inreg <28 x i32> @bitcast_v14f64_to_v28i32_scalar(<14 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; GFX9-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; GFX9-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
@@ -3241,10 +3366,8 @@ define inreg <28 x i32> @bitcast_v14f64_to_v28i32_scalar(<14 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB11_5
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:    s_branch .LBB11_6
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -3277,7 +3400,7 @@ define inreg <28 x i32> @bitcast_v14f64_to_v28i32_scalar(<14 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB11_5: ; %end
+; GFX9-NEXT:  .LBB11_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -3345,11 +3468,16 @@ define inreg <28 x i32> @bitcast_v14f64_to_v28i32_scalar(<14 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; GFX11-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; GFX11-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
@@ -3365,8 +3493,6 @@ define inreg <28 x i32> @bitcast_v14f64_to_v28i32_scalar(<14 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB11_5
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -4273,10 +4399,8 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v28, s49, 7
 ; SI-NEXT:    v_writelane_b32 v28, s50, 8
 ; SI-NEXT:    v_writelane_b32 v28, s51, 9
-; SI-NEXT:    v_writelane_b32 v28, s52, 10
-; SI-NEXT:    v_writelane_b32 v28, s53, 11
-; SI-NEXT:    v_writelane_b32 v28, s30, 12
-; SI-NEXT:    v_writelane_b32 v28, s31, 13
+; SI-NEXT:    v_writelane_b32 v28, s30, 10
+; SI-NEXT:    v_writelane_b32 v28, s31, 11
 ; SI-NEXT:    v_readfirstlane_b32 s40, v14
 ; SI-NEXT:    v_readfirstlane_b32 s5, v13
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
@@ -4293,22 +4417,22 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s41, v1
 ; SI-NEXT:    s_cmp_lg_u32 s40, 0
 ; SI-NEXT:    v_readfirstlane_b32 s40, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s30, s5, 16
-; SI-NEXT:    s_lshr_b32 s31, s7, 16
-; SI-NEXT:    s_lshr_b32 s34, s9, 16
-; SI-NEXT:    s_lshr_b32 s35, s11, 16
-; SI-NEXT:    s_lshr_b32 s36, s13, 16
-; SI-NEXT:    s_lshr_b32 s37, s15, 16
-; SI-NEXT:    s_lshr_b32 s38, s41, 16
-; SI-NEXT:    s_lshr_b32 s39, s29, 16
-; SI-NEXT:    s_lshr_b32 s48, s27, 16
-; SI-NEXT:    s_lshr_b32 s49, s25, 16
-; SI-NEXT:    s_lshr_b32 s50, s23, 16
-; SI-NEXT:    s_lshr_b32 s51, s21, 16
-; SI-NEXT:    s_lshr_b32 s52, s19, 16
-; SI-NEXT:    s_lshr_b32 s53, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s5, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s7, 16
+; SI-NEXT:    s_lshr_b32 s30, s9, 16
+; SI-NEXT:    s_lshr_b32 s31, s11, 16
+; SI-NEXT:    s_lshr_b32 s34, s13, 16
+; SI-NEXT:    s_lshr_b32 s35, s15, 16
+; SI-NEXT:    s_lshr_b32 s36, s41, 16
+; SI-NEXT:    s_lshr_b32 s37, s29, 16
+; SI-NEXT:    s_lshr_b32 s38, s27, 16
+; SI-NEXT:    s_lshr_b32 s39, s25, 16
+; SI-NEXT:    s_lshr_b32 s48, s23, 16
+; SI-NEXT:    s_lshr_b32 s49, s21, 16
+; SI-NEXT:    s_lshr_b32 s50, s19, 16
+; SI-NEXT:    s_lshr_b32 s51, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 16
@@ -4323,8 +4447,44 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[94:95], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[94:95], -1
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[94:95], s[94:95], exec
+; SI-NEXT:    s_cselect_b32 s43, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s43, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -4362,97 +4522,97 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[40:41], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[28:29], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[26:27], 16
-; SI-NEXT:    s_lshr_b32 s30, s5, 16
-; SI-NEXT:    s_lshr_b32 s31, s7, 16
-; SI-NEXT:    s_lshr_b32 s34, s9, 16
-; SI-NEXT:    s_lshr_b32 s35, s11, 16
-; SI-NEXT:    s_lshr_b32 s36, s13, 16
-; SI-NEXT:    s_lshr_b32 s37, s15, 16
-; SI-NEXT:    s_lshr_b32 s38, s41, 16
-; SI-NEXT:    s_lshr_b32 s39, s29, 16
-; SI-NEXT:    s_lshr_b32 s48, s27, 16
-; SI-NEXT:    s_lshr_b32 s49, s25, 16
-; SI-NEXT:    s_lshr_b32 s50, s23, 16
-; SI-NEXT:    s_lshr_b32 s51, s21, 16
-; SI-NEXT:    s_lshr_b32 s52, s19, 16
-; SI-NEXT:    s_lshr_b32 s53, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s5, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s7, 16
+; SI-NEXT:    s_lshr_b32 s30, s9, 16
+; SI-NEXT:    s_lshr_b32 s31, s11, 16
+; SI-NEXT:    s_lshr_b32 s34, s13, 16
+; SI-NEXT:    s_lshr_b32 s35, s15, 16
+; SI-NEXT:    s_lshr_b32 s36, s41, 16
+; SI-NEXT:    s_lshr_b32 s37, s29, 16
+; SI-NEXT:    s_lshr_b32 s38, s27, 16
+; SI-NEXT:    s_lshr_b32 s39, s25, 16
+; SI-NEXT:    s_lshr_b32 s48, s23, 16
+; SI-NEXT:    s_lshr_b32 s49, s21, 16
+; SI-NEXT:    s_lshr_b32 s50, s19, 16
+; SI-NEXT:    s_lshr_b32 s51, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[16:17], 16
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s43, s92, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s43
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s53, 16
+; SI-NEXT:    s_lshl_b32 s43, s51, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s43
 ; SI-NEXT:    s_lshl_b32 s43, s90, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s18, s18, s43
 ; SI-NEXT:    s_and_b32 s19, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s52, 16
+; SI-NEXT:    s_lshl_b32 s43, s50, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s43
 ; SI-NEXT:    s_lshl_b32 s43, s88, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s20, s20, s43
 ; SI-NEXT:    s_and_b32 s21, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s51, 16
+; SI-NEXT:    s_lshl_b32 s43, s49, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s43
 ; SI-NEXT:    s_lshl_b32 s43, s78, 16
 ; SI-NEXT:    s_and_b32 s22, s22, 0xffff
 ; SI-NEXT:    s_or_b32 s22, s22, s43
 ; SI-NEXT:    s_and_b32 s23, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s50, 16
+; SI-NEXT:    s_lshl_b32 s43, s48, 16
 ; SI-NEXT:    s_or_b32 s23, s23, s43
 ; SI-NEXT:    s_and_b32 s24, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s76, 16
 ; SI-NEXT:    s_or_b32 s24, s24, s43
 ; SI-NEXT:    s_and_b32 s25, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s49, 16
+; SI-NEXT:    s_lshl_b32 s43, s39, 16
 ; SI-NEXT:    s_or_b32 s25, s25, s43
 ; SI-NEXT:    s_and_b32 s26, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s74, 16
 ; SI-NEXT:    s_or_b32 s26, s26, s43
 ; SI-NEXT:    s_and_b32 s27, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s48, 16
+; SI-NEXT:    s_lshl_b32 s43, s38, 16
 ; SI-NEXT:    s_or_b32 s27, s27, s43
 ; SI-NEXT:    s_and_b32 s28, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s72, 16
 ; SI-NEXT:    s_or_b32 s28, s28, s43
 ; SI-NEXT:    s_and_b32 s29, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s39, 16
+; SI-NEXT:    s_lshl_b32 s43, s37, 16
 ; SI-NEXT:    s_or_b32 s29, s29, s43
 ; SI-NEXT:    s_and_b32 s40, s40, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s62, 16
 ; SI-NEXT:    s_or_b32 s40, s40, s43
 ; SI-NEXT:    s_and_b32 s41, s41, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s38, 16
+; SI-NEXT:    s_lshl_b32 s43, s36, 16
 ; SI-NEXT:    s_or_b32 s41, s41, s43
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s60, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s43
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s37, 16
+; SI-NEXT:    s_lshl_b32 s43, s35, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s43
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s58, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s43
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s36, 16
+; SI-NEXT:    s_lshl_b32 s43, s34, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s43
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s56, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s43
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s35, 16
+; SI-NEXT:    s_lshl_b32 s43, s31, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s43
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s46, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s43
 ; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s34, 16
+; SI-NEXT:    s_lshl_b32 s43, s30, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s43
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s44, 16
@@ -4460,13 +4620,13 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s42, s42, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s43
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s31, 16
+; SI-NEXT:    s_lshl_b32 s43, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s42
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_lshl_b32 s42, s30, 16
+; SI-NEXT:    s_lshl_b32 s42, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s43
 ; SI-NEXT:    s_or_b32 s5, s5, s42
-; SI-NEXT:    v_readlane_b32 s30, v28, 12
+; SI-NEXT:    v_readlane_b32 s30, v28, 10
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4495,9 +4655,7 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v25, s7
 ; SI-NEXT:    v_mov_b32_e32 v26, s4
 ; SI-NEXT:    v_mov_b32_e32 v27, s5
-; SI-NEXT:    v_readlane_b32 s31, v28, 13
-; SI-NEXT:    v_readlane_b32 s53, v28, 11
-; SI-NEXT:    v_readlane_b32 s52, v28, 10
+; SI-NEXT:    v_readlane_b32 s31, v28, 11
 ; SI-NEXT:    v_readlane_b32 s51, v28, 9
 ; SI-NEXT:    v_readlane_b32 s50, v28, 8
 ; SI-NEXT:    v_readlane_b32 s49, v28, 7
@@ -4513,36 +4671,6 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_v28i32_to_v56i16_scalar:
 ; VI:       ; %bb.0:
@@ -4550,10 +4678,8 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_store_dword v28, off, s[0:3], s32 ; 4-byte Folded Spill
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
-; VI-NEXT:    v_writelane_b32 v28, s34, 0
-; VI-NEXT:    v_writelane_b32 v28, s35, 1
-; VI-NEXT:    v_writelane_b32 v28, s30, 2
-; VI-NEXT:    v_writelane_b32 v28, s31, 3
+; VI-NEXT:    v_writelane_b32 v28, s30, 0
+; VI-NEXT:    v_writelane_b32 v28, s31, 1
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
 ; VI-NEXT:    v_readfirstlane_b32 s6, v13
 ; VI-NEXT:    v_readfirstlane_b32 s7, v12
@@ -4570,7 +4696,7 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s42, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s43, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s44, s6, 16
 ; VI-NEXT:    s_lshr_b32 s45, s7, 16
@@ -4596,12 +4722,48 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -4654,22 +4816,22 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_and_b32 s5, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s16, s34, 16
+; VI-NEXT:    s_lshl_b32 s16, s30, 16
 ; VI-NEXT:    s_or_b32 s5, s5, s16
 ; VI-NEXT:    s_and_b32 s16, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s17, s31, 16
+; VI-NEXT:    s_lshl_b32 s17, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s16, s16, s17
 ; VI-NEXT:    s_and_b32 s17, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s18, s30, 16
+; VI-NEXT:    s_lshl_b32 s18, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s17, s17, s18
 ; VI-NEXT:    s_and_b32 s18, 0xffff, s20
 ; VI-NEXT:    s_lshl_b32 s19, s91, 16
@@ -4743,7 +4905,7 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s6, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s42, s44, 16
 ; VI-NEXT:    s_or_b32 s6, s6, s42
-; VI-NEXT:    v_readlane_b32 s30, v28, 2
+; VI-NEXT:    v_readlane_b32 s30, v28, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    v_mov_b32_e32 v1, s5
 ; VI-NEXT:    v_mov_b32_e32 v2, s16
@@ -4772,44 +4934,12 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v25, s8
 ; VI-NEXT:    v_mov_b32_e32 v26, s7
 ; VI-NEXT:    v_mov_b32_e32 v27, s6
-; VI-NEXT:    v_readlane_b32 s31, v28, 3
-; VI-NEXT:    v_readlane_b32 s35, v28, 1
-; VI-NEXT:    v_readlane_b32 s34, v28, 0
+; VI-NEXT:    v_readlane_b32 s31, v28, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v28, off, s[0:3], s32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v28i32_to_v56i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -4830,7 +4960,7 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s42, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s43, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s44, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s45, s7, 16
@@ -4860,8 +4990,44 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s93, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -4918,7 +5084,7 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s93, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s16, 16
-; GFX9-NEXT:  .LBB13_3: ; %end
+; GFX9-NEXT:  .LBB13_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s95
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s94
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s93
@@ -4976,36 +5142,6 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_v28i32_to_v56i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -5023,7 +5159,7 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s13, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s14, 0
 ; GFX11-NEXT:    s_mov_b32 s90, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s14, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s15, s5, 16
@@ -5053,9 +5189,44 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s79, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s88, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s89, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s90
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB13_3
+; GFX11-NEXT:  .LBB13_2:
+; GFX11-NEXT:    s_mov_b32 s90, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr89
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr79
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:  .LBB13_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s90, s90, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s90, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s90, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -5112,7 +5283,7 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s79, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s88, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s89, s0, 16
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s89
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s88
@@ -5157,36 +5328,6 @@ define inreg <56 x i16> @bitcast_v28i32_to_v56i16_scalar(<28 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s7 :: v_dual_mov_b32 v25, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s5 :: v_dual_mov_b32 v27, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr89
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr79
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -6485,10 +6626,8 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v28, s83, 25
 ; SI-NEXT:    v_writelane_b32 v28, s84, 26
 ; SI-NEXT:    v_writelane_b32 v28, s85, 27
-; SI-NEXT:    v_writelane_b32 v28, s86, 28
-; SI-NEXT:    v_writelane_b32 v28, s87, 29
-; SI-NEXT:    v_writelane_b32 v28, s30, 30
-; SI-NEXT:    v_writelane_b32 v28, s31, 31
+; SI-NEXT:    v_writelane_b32 v28, s30, 28
+; SI-NEXT:    v_writelane_b32 v28, s31, 29
 ; SI-NEXT:    v_readfirstlane_b32 s7, v13
 ; SI-NEXT:    v_readfirstlane_b32 s9, v12
 ; SI-NEXT:    v_readfirstlane_b32 s11, v11
@@ -6500,23 +6639,23 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s88, v5
 ; SI-NEXT:    v_readfirstlane_b32 s91, v4
 ; SI-NEXT:    v_readfirstlane_b32 s94, v3
-; SI-NEXT:    v_readfirstlane_b32 s31, v2
-; SI-NEXT:    v_readfirstlane_b32 s69, v1
-; SI-NEXT:    v_readfirstlane_b32 s80, v0
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v2
+; SI-NEXT:    v_readfirstlane_b32 s35, v1
+; SI-NEXT:    v_readfirstlane_b32 s70, v0
 ; SI-NEXT:    s_lshr_b32 s78, s29, 16
 ; SI-NEXT:    s_lshr_b32 s89, s28, 16
 ; SI-NEXT:    s_lshr_b32 s92, s27, 16
 ; SI-NEXT:    s_lshr_b32 s95, s26, 16
-; SI-NEXT:    s_lshr_b32 s34, s25, 16
-; SI-NEXT:    s_lshr_b32 s68, s24, 16
-; SI-NEXT:    s_lshr_b32 s70, s23, 16
-; SI-NEXT:    s_lshr_b32 s81, s22, 16
-; SI-NEXT:    s_lshr_b32 s82, s21, 16
-; SI-NEXT:    s_lshr_b32 s83, s20, 16
-; SI-NEXT:    s_lshr_b32 s84, s19, 16
-; SI-NEXT:    s_lshr_b32 s85, s18, 16
-; SI-NEXT:    s_lshr_b32 s86, s17, 16
-; SI-NEXT:    s_lshr_b32 s87, s16, 16
+; SI-NEXT:    s_lshr_b32 s30, s25, 16
+; SI-NEXT:    s_lshr_b32 s34, s24, 16
+; SI-NEXT:    s_lshr_b32 s68, s23, 16
+; SI-NEXT:    s_lshr_b32 s71, s22, 16
+; SI-NEXT:    s_lshr_b32 s80, s21, 16
+; SI-NEXT:    s_lshr_b32 s81, s20, 16
+; SI-NEXT:    s_lshr_b32 s82, s19, 16
+; SI-NEXT:    s_lshr_b32 s83, s18, 16
+; SI-NEXT:    s_lshr_b32 s84, s17, 16
+; SI-NEXT:    s_lshr_b32 s85, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -6528,42 +6667,42 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s79, s88, 16
 ; SI-NEXT:    s_lshr_b32 s90, s91, 16
 ; SI-NEXT:    s_lshr_b32 s93, s94, 16
-; SI-NEXT:    s_lshr_b32 s30, s31, 16
-; SI-NEXT:    s_lshr_b32 s35, s69, 16
-; SI-NEXT:    s_lshr_b32 s71, s80, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, vcc_hi, 16
+; SI-NEXT:    s_lshr_b32 s31, s35, 16
+; SI-NEXT:    s_lshr_b32 s69, s70, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -6577,14 +6716,14 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s78, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s69, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s35, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -6619,56 +6758,65 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
@@ -6690,20 +6838,20 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s78, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s80, s80, 3
+; SI-NEXT:    s_add_i32 s70, s70, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s69, s69, 3
+; SI-NEXT:    s_add_i32 s35, s35, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s69, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s35, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s31, s31, 3
+; SI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s94, s94, 3
 ; SI-NEXT:    s_add_i32 s52, s4, 0x30000
@@ -6761,8 +6909,8 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s63, s4, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v28, 30
+; SI-NEXT:  .LBB15_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v28, 28
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -6791,9 +6939,7 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v25, s61
 ; SI-NEXT:    v_mov_b32_e32 v26, s62
 ; SI-NEXT:    v_mov_b32_e32 v27, s63
-; SI-NEXT:    v_readlane_b32 s31, v28, 31
-; SI-NEXT:    v_readlane_b32 s87, v28, 29
-; SI-NEXT:    v_readlane_b32 s86, v28, 28
+; SI-NEXT:    v_readlane_b32 s31, v28, 29
 ; SI-NEXT:    v_readlane_b32 s85, v28, 27
 ; SI-NEXT:    v_readlane_b32 s84, v28, 26
 ; SI-NEXT:    v_readlane_b32 s83, v28, 25
@@ -6827,9 +6973,6 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v56i16_to_v28i32_scalar:
 ; VI:       ; %bb.0:
@@ -6870,54 +7013,54 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    v_writelane_b32 v28, s87, 29
 ; VI-NEXT:    v_writelane_b32 v28, s30, 30
 ; VI-NEXT:    v_writelane_b32 v28, s31, 31
-; VI-NEXT:    v_readfirstlane_b32 s86, v13
-; VI-NEXT:    v_readfirstlane_b32 s6, v12
+; VI-NEXT:    v_readfirstlane_b32 s81, v13
+; VI-NEXT:    v_readfirstlane_b32 s83, v12
 ; VI-NEXT:    v_readfirstlane_b32 s9, v11
-; VI-NEXT:    v_readfirstlane_b32 s8, v10
-; VI-NEXT:    v_readfirstlane_b32 s87, v9
-; VI-NEXT:    v_readfirstlane_b32 s12, v8
+; VI-NEXT:    v_readfirstlane_b32 s84, v10
+; VI-NEXT:    v_readfirstlane_b32 s85, v9
+; VI-NEXT:    v_readfirstlane_b32 s8, v8
 ; VI-NEXT:    v_readfirstlane_b32 s73, v7
-; VI-NEXT:    v_readfirstlane_b32 s77, v6
-; VI-NEXT:    v_readfirstlane_b32 s88, v5
+; VI-NEXT:    v_readfirstlane_b32 s75, v6
+; VI-NEXT:    v_readfirstlane_b32 s77, v5
 ; VI-NEXT:    v_readfirstlane_b32 s91, v4
-; VI-NEXT:    v_readfirstlane_b32 s34, v3
-; VI-NEXT:    v_readfirstlane_b32 s69, v2
-; VI-NEXT:    v_readfirstlane_b32 s81, v1
-; VI-NEXT:    v_readfirstlane_b32 s84, v0
+; VI-NEXT:    v_readfirstlane_b32 s30, v3
+; VI-NEXT:    v_readfirstlane_b32 s35, v2
+; VI-NEXT:    v_readfirstlane_b32 s71, v1
+; VI-NEXT:    v_readfirstlane_b32 s82, v0
 ; VI-NEXT:    s_lshr_b32 s79, s29, 16
 ; VI-NEXT:    s_lshr_b32 s90, s28, 16
-; VI-NEXT:    s_lshr_b32 s31, s27, 16
-; VI-NEXT:    s_lshr_b32 s67, s26, 16
-; VI-NEXT:    s_lshr_b32 s70, s25, 16
-; VI-NEXT:    s_lshr_b32 s80, s24, 16
-; VI-NEXT:    s_lshr_b32 s82, s23, 16
-; VI-NEXT:    s_lshr_b32 s85, s22, 16
-; VI-NEXT:    s_lshr_b32 s7, s21, 16
-; VI-NEXT:    s_lshr_b32 s11, s20, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s27, 16
+; VI-NEXT:    s_lshr_b32 s34, s26, 16
+; VI-NEXT:    s_lshr_b32 s66, s25, 16
+; VI-NEXT:    s_lshr_b32 s68, s24, 16
+; VI-NEXT:    s_lshr_b32 s69, s23, 16
+; VI-NEXT:    s_lshr_b32 s80, s22, 16
+; VI-NEXT:    s_lshr_b32 s86, s21, 16
+; VI-NEXT:    s_lshr_b32 s87, s20, 16
 ; VI-NEXT:    s_lshr_b32 s13, s19, 16
 ; VI-NEXT:    s_lshr_b32 s15, s18, 16
-; VI-NEXT:    s_lshr_b32 s10, s17, 16
-; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:    s_lshr_b32 s64, s86, 16
-; VI-NEXT:    s_lshr_b32 s65, s6, 16
-; VI-NEXT:    s_lshr_b32 s66, s9, 16
-; VI-NEXT:    s_lshr_b32 s14, s8, 16
-; VI-NEXT:    s_lshr_b32 s72, s87, 16
-; VI-NEXT:    s_lshr_b32 s74, s12, 16
+; VI-NEXT:    s_lshr_b32 s88, s17, 16
+; VI-NEXT:    s_lshr_b32 s7, s16, 16
+; VI-NEXT:    s_lshr_b32 s64, s81, 16
+; VI-NEXT:    s_lshr_b32 s10, s83, 16
+; VI-NEXT:    s_lshr_b32 s12, s9, 16
+; VI-NEXT:    s_lshr_b32 s14, s84, 16
+; VI-NEXT:    s_lshr_b32 s72, s85, 16
+; VI-NEXT:    s_lshr_b32 s74, s8, 16
 ; VI-NEXT:    s_lshr_b32 s76, s73, 16
-; VI-NEXT:    s_lshr_b32 s78, s77, 16
-; VI-NEXT:    s_lshr_b32 s89, s88, 16
-; VI-NEXT:    s_lshr_b32 s30, s91, 16
-; VI-NEXT:    s_lshr_b32 s35, s34, 16
-; VI-NEXT:    s_lshr_b32 s68, s69, 16
-; VI-NEXT:    s_lshr_b32 s71, s81, 16
-; VI-NEXT:    s_lshr_b32 s83, s84, 16
+; VI-NEXT:    s_lshr_b32 s78, s75, 16
+; VI-NEXT:    s_lshr_b32 s89, s77, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s91, 16
+; VI-NEXT:    s_lshr_b32 s31, s30, 16
+; VI-NEXT:    s_lshr_b32 s65, s35, 16
+; VI-NEXT:    s_lshr_b32 s67, s71, 16
+; VI-NEXT:    s_lshr_b32 s70, s82, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s75, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
 ; VI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -6925,32 +7068,32 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
 ; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s10, 16
+; VI-NEXT:    s_lshl_b32 s41, s88, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s11, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s7, 16
+; VI-NEXT:    s_lshl_b32 s5, s86, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -6958,58 +7101,146 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s79, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s84
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s82
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s81
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s71
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s69
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s35
+; VI-NEXT:    s_lshl_b32 s5, s65, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s88
+; VI-NEXT:    s_and_b32 s4, 0xffff, s77
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s77
+; VI-NEXT:    s_and_b32 s4, 0xffff, s75
 ; VI-NEXT:    s_lshl_b32 s5, s78, 16
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s73
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s12
+; VI-NEXT:    s_and_b32 s4, 0xffff, s8
 ; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s58, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s87
+; VI-NEXT:    s_and_b32 s4, 0xffff, s85
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s8
+; VI-NEXT:    s_and_b32 s4, 0xffff, s84
 ; VI-NEXT:    s_lshl_b32 s5, s14, 16
 ; VI-NEXT:    s_or_b32 s60, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s9
-; VI-NEXT:    s_lshl_b32 s5, s66, 16
+; VI-NEXT:    s_lshl_b32 s5, s12, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s6
-; VI-NEXT:    s_lshl_b32 s5, s65, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s83
+; VI-NEXT:    s_lshl_b32 s5, s10, 16
 ; VI-NEXT:    s_or_b32 s62, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s86
+; VI-NEXT:    s_and_b32 s4, 0xffff, s81
 ; VI-NEXT:    s_lshl_b32 s5, s64, 16
 ; VI-NEXT:    s_or_b32 s63, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    ; implicit-def: $vgpr29 : SGPR spill to VGPR lane
+; VI-NEXT:    s_mov_b32 s11, s9
+; VI-NEXT:    v_writelane_b32 v29, s26, 0
+; VI-NEXT:    s_mov_b32 s26, s27
+; VI-NEXT:    s_mov_b32 s27, s77
+; VI-NEXT:    v_writelane_b32 v29, s91, 1
+; VI-NEXT:    s_mov_b32 s91, s88
+; VI-NEXT:    s_mov_b32 s88, s28
+; VI-NEXT:    s_mov_b32 s28, s75
+; VI-NEXT:    s_mov_b32 s77, s29
+; VI-NEXT:    s_mov_b32 s29, s81
+; VI-NEXT:    s_mov_b32 s81, s68
+; VI-NEXT:    s_mov_b32 s68, s34
+; VI-NEXT:    s_mov_b32 s34, s31
+; VI-NEXT:    s_mov_b32 s31, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, s90
+; VI-NEXT:    s_mov_b32 s90, s89
+; VI-NEXT:    s_mov_b32 s89, s79
+; VI-NEXT:    s_mov_b32 s79, s78
+; VI-NEXT:    s_mov_b32 s78, s76
+; VI-NEXT:    s_mov_b32 s76, s74
+; VI-NEXT:    s_mov_b32 s74, s72
+; VI-NEXT:    s_mov_b32 s72, s14
+; VI-NEXT:    s_mov_b32 s14, s12
+; VI-NEXT:    s_mov_b32 s12, s10
+; VI-NEXT:    s_mov_b32 s10, s64
+; VI-NEXT:    s_mov_b32 s9, s83
+; VI-NEXT:    s_mov_b32 s83, s69
+; VI-NEXT:    s_mov_b32 s69, s65
+; VI-NEXT:    s_mov_b32 s6, s13
+; VI-NEXT:    s_mov_b32 s13, s84
+; VI-NEXT:    s_mov_b32 s84, s70
+; VI-NEXT:    s_mov_b32 s70, s66
+; VI-NEXT:    s_mov_b32 s75, s73
+; VI-NEXT:    s_mov_b32 s73, s8
+; VI-NEXT:    s_mov_b32 s8, s15
+; VI-NEXT:    s_mov_b32 s15, s85
+; VI-NEXT:    s_mov_b32 s85, s80
+; VI-NEXT:    s_mov_b32 s80, s67
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    s_mov_b32 s67, s80
+; VI-NEXT:    s_mov_b32 s80, s85
+; VI-NEXT:    s_mov_b32 s85, s15
+; VI-NEXT:    s_mov_b32 s15, s8
+; VI-NEXT:    s_mov_b32 s8, s73
+; VI-NEXT:    s_mov_b32 s73, s75
+; VI-NEXT:    s_mov_b32 s66, s70
+; VI-NEXT:    s_mov_b32 s70, s84
+; VI-NEXT:    s_mov_b32 s84, s13
+; VI-NEXT:    s_mov_b32 s13, s6
+; VI-NEXT:    s_mov_b32 s65, s69
+; VI-NEXT:    s_mov_b32 s69, s83
+; VI-NEXT:    s_mov_b32 s83, s9
+; VI-NEXT:    s_mov_b32 s9, s11
+; VI-NEXT:    s_mov_b32 s64, s10
+; VI-NEXT:    s_mov_b32 s10, s12
+; VI-NEXT:    s_mov_b32 s12, s14
+; VI-NEXT:    s_mov_b32 s14, s72
+; VI-NEXT:    s_mov_b32 s72, s74
+; VI-NEXT:    s_mov_b32 s74, s76
+; VI-NEXT:    s_mov_b32 s76, s78
+; VI-NEXT:    s_mov_b32 s78, s79
+; VI-NEXT:    s_mov_b32 s79, s89
+; VI-NEXT:    s_mov_b32 s89, s90
+; VI-NEXT:    s_mov_b32 s90, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, s31
+; VI-NEXT:    s_mov_b32 s31, s34
+; VI-NEXT:    s_mov_b32 s34, s68
+; VI-NEXT:    s_mov_b32 s68, s81
+; VI-NEXT:    s_mov_b32 s81, s29
+; VI-NEXT:    s_mov_b32 s29, s77
+; VI-NEXT:    s_mov_b32 s75, s28
+; VI-NEXT:    s_mov_b32 s28, s88
+; VI-NEXT:    s_mov_b32 s88, s91
+; VI-NEXT:    v_readlane_b32 s91, v29, 1
+; VI-NEXT:    s_mov_b32 s77, s27
+; VI-NEXT:    s_mov_b32 s27, s26
+; VI-NEXT:    v_readlane_b32 s26, v29, 0
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s75, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_and_b32 s5, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s10, s10, 16
-; VI-NEXT:    s_or_b32 s5, s10, s5
+; VI-NEXT:    s_lshl_b32 s6, s88, 16
+; VI-NEXT:    s_or_b32 s5, s6, s5
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_add_i32 s37, s5, 0x30000
@@ -7024,42 +7255,42 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s11, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s7, 16
+; VI-NEXT:    s_lshl_b32 s5, s86, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s26, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s27, s27, 3
 ; VI-NEXT:    s_add_i32 s46, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s27, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s28, s28, 3
 ; VI-NEXT:    s_add_i32 s47, s4, 0x30000
@@ -7071,37 +7302,37 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s79, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s84, s84, 3
+; VI-NEXT:    s_add_i32 s82, s82, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s84, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_and_b32 s4, s82, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s81, s81, 3
+; VI-NEXT:    s_add_i32 s71, s71, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s81, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_and_b32 s4, s71, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s69, s69, 3
+; VI-NEXT:    s_add_i32 s35, s35, 3
 ; VI-NEXT:    s_add_i32 s51, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s69, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_and_b32 s4, s35, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s65, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s34, s34, 3
+; VI-NEXT:    s_add_i32 s30, s30, 3
 ; VI-NEXT:    s_add_i32 s52, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s34, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, s30, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s91, s91, 3
 ; VI-NEXT:    s_add_i32 s53, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s91, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s88, s88, 3
+; VI-NEXT:    s_add_i32 s88, s77, 3
 ; VI-NEXT:    s_add_i32 s54, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s88, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s77, s77, 3
+; VI-NEXT:    s_add_i32 s77, s75, 3
 ; VI-NEXT:    s_add_i32 s55, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s77, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s78, 16
@@ -7111,17 +7342,17 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, s75, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s73, s12, 3
+; VI-NEXT:    s_add_i32 s73, s8, 3
 ; VI-NEXT:    s_add_i32 s57, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s73, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s15, s87, 3
+; VI-NEXT:    s_add_i32 s15, s85, 3
 ; VI-NEXT:    s_add_i32 s58, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s15, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s13, s8, 3
+; VI-NEXT:    s_add_i32 s13, s84, 3
 ; VI-NEXT:    s_add_i32 s59, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s13, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s14, 16
@@ -7129,20 +7360,20 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s11, s9, 3
 ; VI-NEXT:    s_add_i32 s60, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s11, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s66, 16
+; VI-NEXT:    s_lshl_b32 s5, s12, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s9, s6, 3
+; VI-NEXT:    s_add_i32 s9, s83, 3
 ; VI-NEXT:    s_add_i32 s61, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s9, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s65, 16
+; VI-NEXT:    s_lshl_b32 s5, s10, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s7, s86, 3
+; VI-NEXT:    s_add_i32 s7, s81, 3
 ; VI-NEXT:    s_add_i32 s62, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s64, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s63, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
+; VI-NEXT:  .LBB15_5: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v28, 30
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
@@ -7209,96 +7440,6 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    ; implicit-def: $vgpr29 : SGPR spill to VGPR lane
-; VI-NEXT:    s_mov_b32 vcc_lo, s64
-; VI-NEXT:    v_writelane_b32 v29, s75, 0
-; VI-NEXT:    s_mov_b32 vcc_hi, s65
-; VI-NEXT:    s_mov_b32 s75, s73
-; VI-NEXT:    s_mov_b32 s73, s12
-; VI-NEXT:    v_writelane_b32 v29, s25, 1
-; VI-NEXT:    s_mov_b32 s25, s91
-; VI-NEXT:    s_mov_b32 s91, s26
-; VI-NEXT:    s_mov_b32 s26, s27
-; VI-NEXT:    s_mov_b32 s27, s88
-; VI-NEXT:    s_mov_b32 s88, s28
-; VI-NEXT:    s_mov_b32 s28, s77
-; VI-NEXT:    s_mov_b32 s77, s29
-; VI-NEXT:    s_mov_b32 s29, s15
-; VI-NEXT:    s_mov_b32 s15, s87
-; VI-NEXT:    s_mov_b32 s87, s85
-; VI-NEXT:    s_mov_b32 s85, s82
-; VI-NEXT:    s_mov_b32 s82, s71
-; VI-NEXT:    s_mov_b32 s71, s68
-; VI-NEXT:    s_mov_b32 s68, s35
-; VI-NEXT:    s_mov_b32 s35, s31
-; VI-NEXT:    s_mov_b32 s31, s30
-; VI-NEXT:    s_mov_b32 s30, s90
-; VI-NEXT:    s_mov_b32 s90, s89
-; VI-NEXT:    s_mov_b32 s89, s79
-; VI-NEXT:    s_mov_b32 s79, s78
-; VI-NEXT:    s_mov_b32 s78, s76
-; VI-NEXT:    s_mov_b32 s76, s74
-; VI-NEXT:    s_mov_b32 s74, s72
-; VI-NEXT:    s_mov_b32 s72, s14
-; VI-NEXT:    s_mov_b32 s14, s66
-; VI-NEXT:    s_mov_b32 s12, s10
-; VI-NEXT:    s_mov_b32 s10, s13
-; VI-NEXT:    s_mov_b32 s13, s8
-; VI-NEXT:    s_mov_b32 s8, s11
-; VI-NEXT:    s_mov_b32 s11, s9
-; VI-NEXT:    s_mov_b32 s9, s6
-; VI-NEXT:    s_mov_b32 s6, s7
-; VI-NEXT:    s_mov_b32 s7, s86
-; VI-NEXT:    s_mov_b32 s86, s83
-; VI-NEXT:    s_mov_b32 s83, s80
-; VI-NEXT:    s_mov_b32 s80, s70
-; VI-NEXT:    s_mov_b32 s70, s67
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_mov_b32 s67, s70
-; VI-NEXT:    s_mov_b32 s70, s80
-; VI-NEXT:    s_mov_b32 s80, s83
-; VI-NEXT:    s_mov_b32 s83, s86
-; VI-NEXT:    s_mov_b32 s86, s7
-; VI-NEXT:    s_mov_b32 s7, s6
-; VI-NEXT:    s_mov_b32 s6, s9
-; VI-NEXT:    s_mov_b32 s9, s11
-; VI-NEXT:    s_mov_b32 s11, s8
-; VI-NEXT:    s_mov_b32 s8, s13
-; VI-NEXT:    s_mov_b32 s13, s10
-; VI-NEXT:    s_mov_b32 s10, s12
-; VI-NEXT:    s_mov_b32 s66, s14
-; VI-NEXT:    s_mov_b32 s14, s72
-; VI-NEXT:    s_mov_b32 s72, s74
-; VI-NEXT:    s_mov_b32 s74, s76
-; VI-NEXT:    s_mov_b32 s76, s78
-; VI-NEXT:    s_mov_b32 s78, s79
-; VI-NEXT:    s_mov_b32 s79, s89
-; VI-NEXT:    s_mov_b32 s89, s90
-; VI-NEXT:    s_mov_b32 s90, s30
-; VI-NEXT:    s_mov_b32 s30, s31
-; VI-NEXT:    s_mov_b32 s31, s35
-; VI-NEXT:    s_mov_b32 s35, s68
-; VI-NEXT:    s_mov_b32 s68, s71
-; VI-NEXT:    s_mov_b32 s71, s82
-; VI-NEXT:    s_mov_b32 s82, s85
-; VI-NEXT:    s_mov_b32 s85, s87
-; VI-NEXT:    s_mov_b32 s87, s15
-; VI-NEXT:    s_mov_b32 s15, s29
-; VI-NEXT:    s_mov_b32 s29, s77
-; VI-NEXT:    s_mov_b32 s77, s28
-; VI-NEXT:    s_mov_b32 s28, s88
-; VI-NEXT:    s_mov_b32 s88, s27
-; VI-NEXT:    s_mov_b32 s27, s26
-; VI-NEXT:    s_mov_b32 s26, s91
-; VI-NEXT:    s_mov_b32 s91, s25
-; VI-NEXT:    v_readlane_b32 s25, v29, 1
-; VI-NEXT:    s_mov_b32 s12, s73
-; VI-NEXT:    s_mov_b32 s73, s75
-; VI-NEXT:    v_readlane_b32 s75, v29, 0
-; VI-NEXT:    s_mov_b32 s65, vcc_hi
-; VI-NEXT:    s_mov_b32 s64, vcc_lo
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v56i16_to_v28i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -7390,10 +7531,18 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s74
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s62, s62, s73
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s72
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -7422,10 +7571,8 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v25, s61, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v26, s62, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v27, s63, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB15_5
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:    s_branch .LBB15_6
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -7458,7 +7605,7 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB15_5: ; %end
+; GFX9-NEXT:  .LBB15_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -7549,11 +7696,16 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s26, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -7583,8 +7735,6 @@ define inreg <28 x i32> @bitcast_v56i16_to_v28i32_scalar(<56 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v26, s26, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v27, s27, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -8474,10 +8624,8 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v28, s49, 7
 ; SI-NEXT:    v_writelane_b32 v28, s50, 8
 ; SI-NEXT:    v_writelane_b32 v28, s51, 9
-; SI-NEXT:    v_writelane_b32 v28, s52, 10
-; SI-NEXT:    v_writelane_b32 v28, s53, 11
-; SI-NEXT:    v_writelane_b32 v28, s30, 12
-; SI-NEXT:    v_writelane_b32 v28, s31, 13
+; SI-NEXT:    v_writelane_b32 v28, s30, 10
+; SI-NEXT:    v_writelane_b32 v28, s31, 11
 ; SI-NEXT:    v_readfirstlane_b32 s40, v14
 ; SI-NEXT:    v_readfirstlane_b32 s5, v13
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
@@ -8494,22 +8642,22 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s41, v1
 ; SI-NEXT:    s_cmp_lg_u32 s40, 0
 ; SI-NEXT:    v_readfirstlane_b32 s40, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s30, s5, 16
-; SI-NEXT:    s_lshr_b32 s31, s7, 16
-; SI-NEXT:    s_lshr_b32 s34, s9, 16
-; SI-NEXT:    s_lshr_b32 s35, s11, 16
-; SI-NEXT:    s_lshr_b32 s36, s13, 16
-; SI-NEXT:    s_lshr_b32 s37, s15, 16
-; SI-NEXT:    s_lshr_b32 s38, s41, 16
-; SI-NEXT:    s_lshr_b32 s39, s29, 16
-; SI-NEXT:    s_lshr_b32 s48, s27, 16
-; SI-NEXT:    s_lshr_b32 s49, s25, 16
-; SI-NEXT:    s_lshr_b32 s50, s23, 16
-; SI-NEXT:    s_lshr_b32 s51, s21, 16
-; SI-NEXT:    s_lshr_b32 s52, s19, 16
-; SI-NEXT:    s_lshr_b32 s53, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s5, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s7, 16
+; SI-NEXT:    s_lshr_b32 s30, s9, 16
+; SI-NEXT:    s_lshr_b32 s31, s11, 16
+; SI-NEXT:    s_lshr_b32 s34, s13, 16
+; SI-NEXT:    s_lshr_b32 s35, s15, 16
+; SI-NEXT:    s_lshr_b32 s36, s41, 16
+; SI-NEXT:    s_lshr_b32 s37, s29, 16
+; SI-NEXT:    s_lshr_b32 s38, s27, 16
+; SI-NEXT:    s_lshr_b32 s39, s25, 16
+; SI-NEXT:    s_lshr_b32 s48, s23, 16
+; SI-NEXT:    s_lshr_b32 s49, s21, 16
+; SI-NEXT:    s_lshr_b32 s50, s19, 16
+; SI-NEXT:    s_lshr_b32 s51, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 16
@@ -8524,8 +8672,44 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[94:95], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[94:95], -1
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[94:95], s[94:95], exec
+; SI-NEXT:    s_cselect_b32 s43, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s43, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -8563,97 +8747,97 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[62:63], s[40:41], 16
 ; SI-NEXT:    s_lshr_b64 s[72:73], s[28:29], 16
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[26:27], 16
-; SI-NEXT:    s_lshr_b32 s30, s5, 16
-; SI-NEXT:    s_lshr_b32 s31, s7, 16
-; SI-NEXT:    s_lshr_b32 s34, s9, 16
-; SI-NEXT:    s_lshr_b32 s35, s11, 16
-; SI-NEXT:    s_lshr_b32 s36, s13, 16
-; SI-NEXT:    s_lshr_b32 s37, s15, 16
-; SI-NEXT:    s_lshr_b32 s38, s41, 16
-; SI-NEXT:    s_lshr_b32 s39, s29, 16
-; SI-NEXT:    s_lshr_b32 s48, s27, 16
-; SI-NEXT:    s_lshr_b32 s49, s25, 16
-; SI-NEXT:    s_lshr_b32 s50, s23, 16
-; SI-NEXT:    s_lshr_b32 s51, s21, 16
-; SI-NEXT:    s_lshr_b32 s52, s19, 16
-; SI-NEXT:    s_lshr_b32 s53, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s5, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s7, 16
+; SI-NEXT:    s_lshr_b32 s30, s9, 16
+; SI-NEXT:    s_lshr_b32 s31, s11, 16
+; SI-NEXT:    s_lshr_b32 s34, s13, 16
+; SI-NEXT:    s_lshr_b32 s35, s15, 16
+; SI-NEXT:    s_lshr_b32 s36, s41, 16
+; SI-NEXT:    s_lshr_b32 s37, s29, 16
+; SI-NEXT:    s_lshr_b32 s38, s27, 16
+; SI-NEXT:    s_lshr_b32 s39, s25, 16
+; SI-NEXT:    s_lshr_b32 s48, s23, 16
+; SI-NEXT:    s_lshr_b32 s49, s21, 16
+; SI-NEXT:    s_lshr_b32 s50, s19, 16
+; SI-NEXT:    s_lshr_b32 s51, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[24:25], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[16:17], 16
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s43, s92, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s43
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s53, 16
+; SI-NEXT:    s_lshl_b32 s43, s51, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s43
 ; SI-NEXT:    s_lshl_b32 s43, s90, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s18, s18, s43
 ; SI-NEXT:    s_and_b32 s19, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s52, 16
+; SI-NEXT:    s_lshl_b32 s43, s50, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s43
 ; SI-NEXT:    s_lshl_b32 s43, s88, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s20, s20, s43
 ; SI-NEXT:    s_and_b32 s21, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s51, 16
+; SI-NEXT:    s_lshl_b32 s43, s49, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s43
 ; SI-NEXT:    s_lshl_b32 s43, s78, 16
 ; SI-NEXT:    s_and_b32 s22, s22, 0xffff
 ; SI-NEXT:    s_or_b32 s22, s22, s43
 ; SI-NEXT:    s_and_b32 s23, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s50, 16
+; SI-NEXT:    s_lshl_b32 s43, s48, 16
 ; SI-NEXT:    s_or_b32 s23, s23, s43
 ; SI-NEXT:    s_and_b32 s24, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s76, 16
 ; SI-NEXT:    s_or_b32 s24, s24, s43
 ; SI-NEXT:    s_and_b32 s25, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s49, 16
+; SI-NEXT:    s_lshl_b32 s43, s39, 16
 ; SI-NEXT:    s_or_b32 s25, s25, s43
 ; SI-NEXT:    s_and_b32 s26, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s74, 16
 ; SI-NEXT:    s_or_b32 s26, s26, s43
 ; SI-NEXT:    s_and_b32 s27, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s48, 16
+; SI-NEXT:    s_lshl_b32 s43, s38, 16
 ; SI-NEXT:    s_or_b32 s27, s27, s43
 ; SI-NEXT:    s_and_b32 s28, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s72, 16
 ; SI-NEXT:    s_or_b32 s28, s28, s43
 ; SI-NEXT:    s_and_b32 s29, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s39, 16
+; SI-NEXT:    s_lshl_b32 s43, s37, 16
 ; SI-NEXT:    s_or_b32 s29, s29, s43
 ; SI-NEXT:    s_and_b32 s40, s40, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s62, 16
 ; SI-NEXT:    s_or_b32 s40, s40, s43
 ; SI-NEXT:    s_and_b32 s41, s41, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s38, 16
+; SI-NEXT:    s_lshl_b32 s43, s36, 16
 ; SI-NEXT:    s_or_b32 s41, s41, s43
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s60, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s43
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s37, 16
+; SI-NEXT:    s_lshl_b32 s43, s35, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s43
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s58, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s43
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s36, 16
+; SI-NEXT:    s_lshl_b32 s43, s34, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s43
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s56, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s43
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s35, 16
+; SI-NEXT:    s_lshl_b32 s43, s31, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s43
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s46, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s43
 ; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s34, 16
+; SI-NEXT:    s_lshl_b32 s43, s30, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s43
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s44, 16
@@ -8661,13 +8845,13 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s42, s42, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s43
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s31, 16
+; SI-NEXT:    s_lshl_b32 s43, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s42
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_lshl_b32 s42, s30, 16
+; SI-NEXT:    s_lshl_b32 s42, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s43
 ; SI-NEXT:    s_or_b32 s5, s5, s42
-; SI-NEXT:    v_readlane_b32 s30, v28, 12
+; SI-NEXT:    v_readlane_b32 s30, v28, 10
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -8696,9 +8880,7 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v25, s7
 ; SI-NEXT:    v_mov_b32_e32 v26, s4
 ; SI-NEXT:    v_mov_b32_e32 v27, s5
-; SI-NEXT:    v_readlane_b32 s31, v28, 13
-; SI-NEXT:    v_readlane_b32 s53, v28, 11
-; SI-NEXT:    v_readlane_b32 s52, v28, 10
+; SI-NEXT:    v_readlane_b32 s31, v28, 11
 ; SI-NEXT:    v_readlane_b32 s51, v28, 9
 ; SI-NEXT:    v_readlane_b32 s50, v28, 8
 ; SI-NEXT:    v_readlane_b32 s49, v28, 7
@@ -8714,36 +8896,6 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_v28i32_to_v56f16_scalar:
 ; VI:       ; %bb.0:
@@ -8751,10 +8903,8 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_store_dword v28, off, s[0:3], s32 ; 4-byte Folded Spill
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
-; VI-NEXT:    v_writelane_b32 v28, s34, 0
-; VI-NEXT:    v_writelane_b32 v28, s35, 1
-; VI-NEXT:    v_writelane_b32 v28, s30, 2
-; VI-NEXT:    v_writelane_b32 v28, s31, 3
+; VI-NEXT:    v_writelane_b32 v28, s30, 0
+; VI-NEXT:    v_writelane_b32 v28, s31, 1
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
 ; VI-NEXT:    v_readfirstlane_b32 s6, v13
 ; VI-NEXT:    v_readfirstlane_b32 s7, v12
@@ -8771,7 +8921,7 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s42, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s43, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s44, s6, 16
 ; VI-NEXT:    s_lshr_b32 s45, s7, 16
@@ -8797,12 +8947,48 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -8855,22 +9041,22 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_and_b32 s5, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s16, s34, 16
+; VI-NEXT:    s_lshl_b32 s16, s30, 16
 ; VI-NEXT:    s_or_b32 s5, s5, s16
 ; VI-NEXT:    s_and_b32 s16, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s17, s31, 16
+; VI-NEXT:    s_lshl_b32 s17, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s16, s16, s17
 ; VI-NEXT:    s_and_b32 s17, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s18, s30, 16
+; VI-NEXT:    s_lshl_b32 s18, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s17, s17, s18
 ; VI-NEXT:    s_and_b32 s18, 0xffff, s20
 ; VI-NEXT:    s_lshl_b32 s19, s91, 16
@@ -8944,7 +9130,7 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; VI-NEXT:    s_and_b32 s6, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s42, s44, 16
 ; VI-NEXT:    s_or_b32 s6, s6, s42
-; VI-NEXT:    v_readlane_b32 s30, v28, 2
+; VI-NEXT:    v_readlane_b32 s30, v28, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    v_mov_b32_e32 v1, s5
 ; VI-NEXT:    v_mov_b32_e32 v2, s16
@@ -8973,44 +9159,12 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v25, s8
 ; VI-NEXT:    v_mov_b32_e32 v26, s7
 ; VI-NEXT:    v_mov_b32_e32 v27, s6
-; VI-NEXT:    v_readlane_b32 s31, v28, 3
-; VI-NEXT:    v_readlane_b32 s35, v28, 1
-; VI-NEXT:    v_readlane_b32 s34, v28, 0
+; VI-NEXT:    v_readlane_b32 s31, v28, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v28, off, s[0:3], s32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v28i32_to_v56f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -9031,7 +9185,7 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s42, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s43, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s44, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s45, s7, 16
@@ -9061,8 +9215,44 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s93, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -9119,7 +9309,7 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s93, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s16, 16
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s95
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s94
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s93
@@ -9177,36 +9367,6 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v28i32_to_v56f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -9224,7 +9384,7 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s13, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s14, 0
 ; GFX11-NEXT:    s_mov_b32 s90, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s14, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s15, s5, 16
@@ -9254,9 +9414,44 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s79, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s88, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s89, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s90
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB17_3
+; GFX11-NEXT:  .LBB17_2:
+; GFX11-NEXT:    s_mov_b32 s90, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr89
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr79
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:  .LBB17_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s90, s90, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s90, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s90, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -9313,7 +9508,7 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s79, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s88, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s89, s0, 16
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s89
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s88
@@ -9358,36 +9553,6 @@ define inreg <56 x half> @bitcast_v28i32_to_v56f16_scalar(<28 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s7 :: v_dual_mov_b32 v25, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s5 :: v_dual_mov_b32 v27, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr89
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr79
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -10823,10 +10988,8 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v32, s83, 25
 ; SI-NEXT:    v_writelane_b32 v32, s84, 26
 ; SI-NEXT:    v_writelane_b32 v32, s85, 27
-; SI-NEXT:    v_writelane_b32 v32, s86, 28
-; SI-NEXT:    v_writelane_b32 v32, s87, 29
-; SI-NEXT:    v_writelane_b32 v32, s30, 30
-; SI-NEXT:    v_writelane_b32 v32, s31, 31
+; SI-NEXT:    v_writelane_b32 v32, s30, 28
+; SI-NEXT:    v_writelane_b32 v32, s31, 29
 ; SI-NEXT:    v_readfirstlane_b32 s6, v13
 ; SI-NEXT:    v_readfirstlane_b32 s8, v12
 ; SI-NEXT:    v_readfirstlane_b32 s10, v11
@@ -10840,21 +11003,21 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s90, v3
 ; SI-NEXT:    v_readfirstlane_b32 s92, v2
 ; SI-NEXT:    v_readfirstlane_b32 s95, v1
-; SI-NEXT:    v_readfirstlane_b32 s34, v0
+; SI-NEXT:    v_readfirstlane_b32 s30, v0
 ; SI-NEXT:    s_lshr_b32 s94, s29, 16
-; SI-NEXT:    s_lshr_b32 s30, s28, 16
-; SI-NEXT:    s_lshr_b32 s35, s27, 16
-; SI-NEXT:    s_lshr_b32 s69, s26, 16
-; SI-NEXT:    s_lshr_b32 s70, s25, 16
-; SI-NEXT:    s_lshr_b32 s71, s24, 16
-; SI-NEXT:    s_lshr_b32 s80, s23, 16
-; SI-NEXT:    s_lshr_b32 s81, s22, 16
-; SI-NEXT:    s_lshr_b32 s82, s21, 16
-; SI-NEXT:    s_lshr_b32 s83, s20, 16
-; SI-NEXT:    s_lshr_b32 s84, s19, 16
-; SI-NEXT:    s_lshr_b32 s85, s18, 16
-; SI-NEXT:    s_lshr_b32 s86, s17, 16
-; SI-NEXT:    s_lshr_b32 s87, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s28, 16
+; SI-NEXT:    s_lshr_b32 s31, s27, 16
+; SI-NEXT:    s_lshr_b32 s35, s26, 16
+; SI-NEXT:    s_lshr_b32 s68, s25, 16
+; SI-NEXT:    s_lshr_b32 s69, s24, 16
+; SI-NEXT:    s_lshr_b32 s70, s23, 16
+; SI-NEXT:    s_lshr_b32 s71, s22, 16
+; SI-NEXT:    s_lshr_b32 s80, s21, 16
+; SI-NEXT:    s_lshr_b32 s81, s20, 16
+; SI-NEXT:    s_lshr_b32 s82, s19, 16
+; SI-NEXT:    s_lshr_b32 s83, s18, 16
+; SI-NEXT:    s_lshr_b32 s84, s17, 16
+; SI-NEXT:    s_lshr_b32 s85, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -10867,59 +11030,59 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s89, s88, 16
 ; SI-NEXT:    s_lshr_b32 s91, s90, 16
 ; SI-NEXT:    s_lshr_b32 s93, s92, 16
-; SI-NEXT:    s_lshr_b32 s31, s95, 16
-; SI-NEXT:    s_lshr_b32 s68, s34, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s95, 16
+; SI-NEXT:    s_lshr_b32 s34, s30, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s48, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s94, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s34, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s95, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s92, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -10957,11 +11120,20 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s87
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s85
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s86
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s84
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
@@ -10971,14 +11143,14 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s85
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s83
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s84
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s82
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
@@ -10988,7 +11160,7 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v5, s19
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s83
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s81
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s20
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
@@ -10997,11 +11169,11 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s80
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s21
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, s71
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
@@ -11012,7 +11184,7 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s22
 ; SI-NEXT:    v_or_b32_e32 v5, v6, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s80
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, s70
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s23
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
@@ -11021,11 +11193,11 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
 ; SI-NEXT:    v_or_b32_e32 v6, v8, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s69
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s24
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v10, s68
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
@@ -11036,7 +11208,7 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v11, s25
 ; SI-NEXT:    v_or_b32_e32 v8, v9, v8
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v10
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v10, s35
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s26
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
 ; SI-NEXT:    v_cvt_f16_f32_e32 v11, v11
@@ -11045,11 +11217,11 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
 ; SI-NEXT:    v_or_b32_e32 v9, v11, v9
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, s31
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
 ; SI-NEXT:    v_or_b32_e32 v10, v12, v10
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s27
-; SI-NEXT:    v_cvt_f32_f16_e32 v13, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v13, vcc_lo
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
 ; SI-NEXT:    v_cvt_f16_f32_e32 v11, v11
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
@@ -11069,11 +11241,11 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_or_b32_e32 v12, v14, v12
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s34
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
 ; SI-NEXT:    v_or_b32_e32 v13, v15, v13
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s34
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, vcc_hi
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
 ; SI-NEXT:    v_cvt_f16_f32_e32 v14, v14
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
@@ -11183,11 +11355,8 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v26, v27, v26
 ; SI-NEXT:    v_lshlrev_b32_e32 v27, 16, v28
 ; SI-NEXT:    v_or_b32_e32 v27, v29, v27
-; SI-NEXT:    s_branch .LBB19_5
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:    s_branch .LBB19_6
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -11220,11 +11389,9 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB19_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 30
-; SI-NEXT:    v_readlane_b32 s31, v32, 31
-; SI-NEXT:    v_readlane_b32 s87, v32, 29
-; SI-NEXT:    v_readlane_b32 s86, v32, 28
+; SI-NEXT:  .LBB19_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 28
+; SI-NEXT:    v_readlane_b32 s31, v32, 29
 ; SI-NEXT:    v_readlane_b32 s85, v32, 27
 ; SI-NEXT:    v_readlane_b32 s84, v32, 26
 ; SI-NEXT:    v_readlane_b32 s83, v32, 25
@@ -11298,12 +11465,9 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_writelane_b32 v32, s87, 29
 ; VI-NEXT:    v_writelane_b32 v32, s30, 30
 ; VI-NEXT:    v_writelane_b32 v32, s31, 31
+; VI-NEXT:    v_readfirstlane_b32 s6, v13
 ; VI-NEXT:    v_readfirstlane_b32 s8, v12
-; VI-NEXT:    s_lshr_b32 s15, s8, 16
 ; VI-NEXT:    v_readfirstlane_b32 s10, v11
-; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
-; VI-NEXT:    v_readfirstlane_b32 s6, v13
-; VI-NEXT:    s_lshr_b32 s61, s10, 16
 ; VI-NEXT:    v_readfirstlane_b32 s12, v10
 ; VI-NEXT:    v_readfirstlane_b32 s14, v9
 ; VI-NEXT:    v_readfirstlane_b32 s72, v8
@@ -11311,178 +11475,198 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s76, v6
 ; VI-NEXT:    v_readfirstlane_b32 s79, v5
 ; VI-NEXT:    v_readfirstlane_b32 s91, v4
-; VI-NEXT:    v_readfirstlane_b32 s34, v3
-; VI-NEXT:    v_readfirstlane_b32 s69, v2
-; VI-NEXT:    v_readfirstlane_b32 s80, v1
-; VI-NEXT:    v_readfirstlane_b32 s83, v0
-; VI-NEXT:    v_writelane_b32 v33, s15, 0
+; VI-NEXT:    v_readfirstlane_b32 s30, v3
+; VI-NEXT:    v_readfirstlane_b32 s35, v2
+; VI-NEXT:    v_readfirstlane_b32 s70, v1
+; VI-NEXT:    v_readfirstlane_b32 s81, v0
 ; VI-NEXT:    s_lshr_b32 s56, s29, 16
-; VI-NEXT:    s_lshr_b32 s75, s28, 16
+; VI-NEXT:    s_lshr_b32 s61, s28, 16
 ; VI-NEXT:    s_lshr_b32 s90, s27, 16
-; VI-NEXT:    s_lshr_b32 s31, s26, 16
-; VI-NEXT:    s_lshr_b32 s68, s25, 16
-; VI-NEXT:    s_lshr_b32 s70, s24, 16
-; VI-NEXT:    s_lshr_b32 s81, s23, 16
-; VI-NEXT:    s_lshr_b32 s84, s22, 16
-; VI-NEXT:    s_lshr_b32 s86, s21, 16
-; VI-NEXT:    s_lshr_b32 s87, s20, 16
-; VI-NEXT:    s_lshr_b32 s7, s19, 16
-; VI-NEXT:    s_lshr_b32 s9, s18, 16
-; VI-NEXT:    s_lshr_b32 s11, s17, 16
-; VI-NEXT:    s_lshr_b32 s13, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s26, 16
+; VI-NEXT:    s_lshr_b32 s34, s25, 16
+; VI-NEXT:    s_lshr_b32 s68, s24, 16
+; VI-NEXT:    s_lshr_b32 s71, s23, 16
+; VI-NEXT:    s_lshr_b32 s82, s22, 16
+; VI-NEXT:    s_lshr_b32 s84, s21, 16
+; VI-NEXT:    s_lshr_b32 s85, s20, 16
+; VI-NEXT:    s_lshr_b32 s86, s19, 16
+; VI-NEXT:    s_lshr_b32 s87, s18, 16
+; VI-NEXT:    s_lshr_b32 s7, s17, 16
+; VI-NEXT:    s_lshr_b32 s9, s16, 16
 ; VI-NEXT:    s_lshr_b32 s63, s6, 16
-; VI-NEXT:    s_lshr_b32 s60, s12, 16
+; VI-NEXT:    s_lshr_b32 s11, s8, 16
+; VI-NEXT:    s_lshr_b32 s13, s10, 16
+; VI-NEXT:    s_lshr_b32 s15, s12, 16
 ; VI-NEXT:    s_lshr_b32 s59, s14, 16
 ; VI-NEXT:    s_lshr_b32 s58, s72, 16
 ; VI-NEXT:    s_lshr_b32 s57, s74, 16
-; VI-NEXT:    s_lshr_b32 s62, s76, 16
+; VI-NEXT:    s_lshr_b32 s60, s76, 16
 ; VI-NEXT:    s_lshr_b32 s89, s79, 16
-; VI-NEXT:    s_lshr_b32 s30, s91, 16
-; VI-NEXT:    s_lshr_b32 s35, s34, 16
-; VI-NEXT:    s_lshr_b32 s71, s69, 16
-; VI-NEXT:    s_lshr_b32 s82, s80, 16
-; VI-NEXT:    s_lshr_b32 s85, s83, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s91, 16
+; VI-NEXT:    s_lshr_b32 s31, s30, 16
+; VI-NEXT:    s_lshr_b32 s69, s35, 16
+; VI-NEXT:    s_lshr_b32 s80, s70, 16
+; VI-NEXT:    s_lshr_b32 s83, s81, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
-; VI-NEXT:    v_writelane_b32 v33, s61, 1
+; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    v_writelane_b32 v33, s60, 2
-; VI-NEXT:    v_writelane_b32 v33, s59, 3
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    v_writelane_b32 v33, s15, 0
+; VI-NEXT:    v_writelane_b32 v33, s59, 1
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s13, 16
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s9, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s7, 16
+; VI-NEXT:    s_lshl_b32 s5, s86, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s11, 16
+; VI-NEXT:    s_lshl_b32 s41, s7, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
-; VI-NEXT:    s_lshl_b32 s5, s75, 16
+; VI-NEXT:    s_lshl_b32 s5, s61, 16
 ; VI-NEXT:    s_or_b32 s48, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s56, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s83
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s81
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s80
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s70
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s69
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s35
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s79
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s76
-; VI-NEXT:    s_lshl_b32 s5, s62, 16
-; VI-NEXT:    s_mov_b32 s77, s56
+; VI-NEXT:    s_lshl_b32 s5, s60, 16
+; VI-NEXT:    s_mov_b32 s73, s56
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s74
 ; VI-NEXT:    s_lshl_b32 s5, s57, 16
-; VI-NEXT:    s_mov_b32 s73, s75
-; VI-NEXT:    s_mov_b32 s75, s57
+; VI-NEXT:    s_mov_b32 s78, s57
 ; VI-NEXT:    s_or_b32 s57, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s72
 ; VI-NEXT:    s_lshl_b32 s5, s58, 16
-; VI-NEXT:    s_mov_b32 s78, s58
+; VI-NEXT:    s_mov_b32 s77, s58
 ; VI-NEXT:    s_or_b32 s58, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s14
 ; VI-NEXT:    s_lshl_b32 s5, s59, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s12
-; VI-NEXT:    s_lshl_b32 s5, s60, 16
+; VI-NEXT:    s_lshl_b32 s5, s15, 16
+; VI-NEXT:    s_mov_b32 s88, s60
 ; VI-NEXT:    s_or_b32 s60, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s10
-; VI-NEXT:    s_lshl_b32 s5, s61, 16
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
+; VI-NEXT:    s_mov_b32 s75, s61
 ; VI-NEXT:    s_or_b32 s61, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s8
-; VI-NEXT:    s_lshl_b32 s5, s15, 16
-; VI-NEXT:    s_mov_b32 s88, s62
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_or_b32 s62, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s63, 16
-; VI-NEXT:    s_mov_b32 s15, s63
+; VI-NEXT:    s_mov_b32 s15, s13
+; VI-NEXT:    s_mov_b32 s13, s11
+; VI-NEXT:    s_mov_b32 s11, s63
 ; VI-NEXT:    s_or_b32 s63, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b32 s75, s61
+; VI-NEXT:    s_mov_b32 s88, s60
+; VI-NEXT:    s_mov_b32 s73, s56
+; VI-NEXT:    s_mov_b32 s78, s57
+; VI-NEXT:    s_mov_b32 s77, s58
+; VI-NEXT:    s_mov_b32 s15, s13
+; VI-NEXT:    s_mov_b32 s13, s11
+; VI-NEXT:    s_mov_b32 s11, s63
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v27, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s13
-; VI-NEXT:    v_mov_b32_e32 v2, s11
+; VI-NEXT:    v_mov_b32_e32 v0, s9
+; VI-NEXT:    v_mov_b32_e32 v2, s7
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v27
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v27
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s9
+; VI-NEXT:    v_mov_b32_e32 v2, s87
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v27
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s7
+; VI-NEXT:    v_mov_b32_e32 v3, s86
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v27
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s87
+; VI-NEXT:    v_mov_b32_e32 v4, s85
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v27
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s86
+; VI-NEXT:    v_mov_b32_e32 v5, s84
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v27
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s84
+; VI-NEXT:    v_mov_b32_e32 v6, s82
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v27
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s81
+; VI-NEXT:    v_mov_b32_e32 v7, s71
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v27
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s70
+; VI-NEXT:    v_mov_b32_e32 v8, s68
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v27
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
-; VI-NEXT:    v_mov_b32_e32 v9, s68
+; VI-NEXT:    v_mov_b32_e32 v9, s34
 ; VI-NEXT:    v_add_f16_sdwa v9, v9, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v10, s25, v27
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
-; VI-NEXT:    v_mov_b32_e32 v10, s31
+; VI-NEXT:    v_mov_b32_e32 v10, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v10, v10, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v11, s26, v27
 ; VI-NEXT:    v_or_b32_e32 v10, v11, v10
@@ -11490,31 +11674,31 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v11, v11, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v12, s27, v27
 ; VI-NEXT:    v_or_b32_e32 v11, v12, v11
-; VI-NEXT:    v_mov_b32_e32 v12, s73
+; VI-NEXT:    v_mov_b32_e32 v12, s75
 ; VI-NEXT:    v_add_f16_sdwa v12, v12, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v13, s28, v27
 ; VI-NEXT:    v_or_b32_e32 v12, v13, v12
-; VI-NEXT:    v_mov_b32_e32 v13, s77
+; VI-NEXT:    v_mov_b32_e32 v13, s73
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v27
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s85
+; VI-NEXT:    v_mov_b32_e32 v14, s83
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s83, v27
+; VI-NEXT:    v_add_f16_e32 v15, s81, v27
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s82
+; VI-NEXT:    v_mov_b32_e32 v15, s80
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v16, s80, v27
+; VI-NEXT:    v_add_f16_e32 v16, s70, v27
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
-; VI-NEXT:    v_mov_b32_e32 v16, s71
+; VI-NEXT:    v_mov_b32_e32 v16, s69
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v17, s69, v27
+; VI-NEXT:    v_add_f16_e32 v17, s35, v27
 ; VI-NEXT:    v_or_b32_e32 v16, v17, v16
-; VI-NEXT:    v_mov_b32_e32 v17, s35
+; VI-NEXT:    v_mov_b32_e32 v17, s31
 ; VI-NEXT:    v_add_f16_sdwa v17, v17, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v18, s34, v27
+; VI-NEXT:    v_add_f16_e32 v18, s30, v27
 ; VI-NEXT:    v_or_b32_e32 v17, v18, v17
-; VI-NEXT:    v_mov_b32_e32 v18, s30
+; VI-NEXT:    v_mov_b32_e32 v18, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v18, v18, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v19, s91, v27
 ; VI-NEXT:    v_or_b32_e32 v18, v19, v18
@@ -11526,49 +11710,38 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v20, v20, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v21, s76, v27
 ; VI-NEXT:    v_or_b32_e32 v20, v21, v20
-; VI-NEXT:    v_mov_b32_e32 v21, s75
+; VI-NEXT:    v_mov_b32_e32 v21, s78
 ; VI-NEXT:    v_add_f16_sdwa v21, v21, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v22, s74, v27
 ; VI-NEXT:    v_or_b32_e32 v21, v22, v21
-; VI-NEXT:    v_mov_b32_e32 v22, s78
+; VI-NEXT:    v_mov_b32_e32 v22, s77
 ; VI-NEXT:    v_add_f16_sdwa v22, v22, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v23, s72, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 3
+; VI-NEXT:    v_readlane_b32 s4, v33, 1
 ; VI-NEXT:    v_or_b32_e32 v22, v23, v22
 ; VI-NEXT:    v_mov_b32_e32 v23, s4
 ; VI-NEXT:    v_add_f16_sdwa v23, v23, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v24, s14, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 2
+; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v23, v24, v23
 ; VI-NEXT:    v_mov_b32_e32 v24, s4
 ; VI-NEXT:    v_add_f16_sdwa v24, v24, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v25, s12, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 1
 ; VI-NEXT:    v_or_b32_e32 v24, v25, v24
-; VI-NEXT:    v_mov_b32_e32 v25, s4
+; VI-NEXT:    v_mov_b32_e32 v25, s15
 ; VI-NEXT:    v_add_f16_sdwa v25, v25, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v26, s10, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v25, v26, v25
-; VI-NEXT:    v_mov_b32_e32 v26, s4
+; VI-NEXT:    v_mov_b32_e32 v26, s13
 ; VI-NEXT:    v_add_f16_sdwa v26, v26, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v28, s8, v27
 ; VI-NEXT:    v_or_b32_e32 v26, v28, v26
-; VI-NEXT:    v_mov_b32_e32 v28, s15
+; VI-NEXT:    v_mov_b32_e32 v28, s11
 ; VI-NEXT:    v_add_f16_sdwa v28, v28, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v27, s6, v27
 ; VI-NEXT:    v_or_b32_e32 v27, v27, v28
-; VI-NEXT:    s_branch .LBB19_5
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    s_mov_b32 s73, s75
-; VI-NEXT:    s_mov_b32 s88, s62
-; VI-NEXT:    s_mov_b32 s77, s56
-; VI-NEXT:    s_mov_b32 s75, s57
-; VI-NEXT:    s_mov_b32 s78, s58
-; VI-NEXT:    s_mov_b32 s15, s63
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:    s_branch .LBB19_6
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -11601,7 +11774,7 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB19_5: ; %end
+; VI-NEXT:  .LBB19_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 30
 ; VI-NEXT:    v_readlane_b32 s31, v32, 31
 ; VI-NEXT:    v_readlane_b32 s87, v32, 29
@@ -11731,10 +11904,18 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s74
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s62, s62, s73
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s72
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v27, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v27 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v27 op_sel_hi:[1,0]
@@ -11764,10 +11945,8 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v25, s61, v27 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v26, s62, v27 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v27, s63, v27 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB19_5
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:    s_branch .LBB19_6
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -11800,7 +11979,7 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB19_5: ; %end
+; GFX9-NEXT:  .LBB19_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -11891,11 +12070,16 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s26, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -11925,8 +12109,6 @@ define inreg <28 x i32> @bitcast_v56f16_to_v28i32_scalar(<56 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v26, 0x200, s26 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v27, 0x200, s27 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -12180,10 +12362,18 @@ define inreg <14 x i64> @bitcast_v28f32_to_v14i64_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_3
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB21_4
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v27, s63, 1.0
 ; SI-NEXT:    v_add_f32_e64 v26, s62, 1.0
 ; SI-NEXT:    v_add_f32_e64 v25, s61, 1.0
@@ -12212,10 +12402,8 @@ define inreg <14 x i64> @bitcast_v28f32_to_v14i64_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB21_5
-; SI-NEXT:  .LBB21_3:
-; SI-NEXT:    s_branch .LBB21_2
-; SI-NEXT:  .LBB21_4:
+; SI-NEXT:    s_branch .LBB21_6
+; SI-NEXT:  .LBB21_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -12248,7 +12436,7 @@ define inreg <14 x i64> @bitcast_v28f32_to_v14i64_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB21_5: ; %end
+; SI-NEXT:  .LBB21_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -12315,10 +12503,18 @@ define inreg <14 x i64> @bitcast_v28f32_to_v14i64_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_3
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_4
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v27, s63, 1.0
 ; VI-NEXT:    v_add_f32_e64 v26, s62, 1.0
 ; VI-NEXT:    v_add_f32_e64 v25, s61, 1.0
@@ -12347,10 +12543,8 @@ define inreg <14 x i64> @bitcast_v28f32_to_v14i64_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB21_5
-; VI-NEXT:  .LBB21_3:
-; VI-NEXT:    s_branch .LBB21_2
-; VI-NEXT:  .LBB21_4:
+; VI-NEXT:    s_branch .LBB21_6
+; VI-NEXT:  .LBB21_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -12383,7 +12577,7 @@ define inreg <14 x i64> @bitcast_v28f32_to_v14i64_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB21_5: ; %end
+; VI-NEXT:  .LBB21_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -12450,10 +12644,18 @@ define inreg <14 x i64> @bitcast_v28f32_to_v14i64_scalar(<28 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_4
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v27, s63, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v26, s62, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v25, s61, 1.0
@@ -12482,10 +12684,8 @@ define inreg <14 x i64> @bitcast_v28f32_to_v14i64_scalar(<28 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB21_5
-; GFX9-NEXT:  .LBB21_3:
-; GFX9-NEXT:    s_branch .LBB21_2
-; GFX9-NEXT:  .LBB21_4:
+; GFX9-NEXT:    s_branch .LBB21_6
+; GFX9-NEXT:  .LBB21_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -12518,7 +12718,7 @@ define inreg <14 x i64> @bitcast_v28f32_to_v14i64_scalar(<28 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB21_5: ; %end
+; GFX9-NEXT:  .LBB21_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -12586,11 +12786,16 @@ define inreg <14 x i64> @bitcast_v28f32_to_v14i64_scalar(<28 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_4
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v27, s63, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v26, s62, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v25, s61, 1.0
@@ -12620,8 +12825,6 @@ define inreg <14 x i64> @bitcast_v28f32_to_v14i64_scalar(<28 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB21_5
-; GFX11-NEXT:  .LBB21_3:
-; GFX11-NEXT:    s_branch .LBB21_2
 ; GFX11-NEXT:  .LBB21_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -12883,10 +13086,18 @@ define inreg <28 x float> @bitcast_v14i64_to_v28f32_scalar(<14 x i64> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s42, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s43, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -12915,7 +13126,7 @@ define inreg <28 x float> @bitcast_v14i64_to_v28f32_scalar(<14 x i64> inreg %a,
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -12945,8 +13156,6 @@ define inreg <28 x float> @bitcast_v14i64_to_v28f32_scalar(<14 x i64> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v26, s7
 ; SI-NEXT:    v_mov_b32_e32 v27, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v14i64_to_v28f32_scalar:
 ; VI:       ; %bb.0:
@@ -12967,10 +13176,18 @@ define inreg <28 x float> @bitcast_v14i64_to_v28f32_scalar(<14 x i64> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s42, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s43, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_4
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_3
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -12999,7 +13216,7 @@ define inreg <28 x float> @bitcast_v14i64_to_v28f32_scalar(<14 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB23_3: ; %end
+; VI-NEXT:  .LBB23_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13029,8 +13246,6 @@ define inreg <28 x float> @bitcast_v14i64_to_v28f32_scalar(<14 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v26, s7
 ; VI-NEXT:    v_mov_b32_e32 v27, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_4:
-; VI-NEXT:    s_branch .LBB23_2
 ;
 ; GFX9-LABEL: bitcast_v14i64_to_v28f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -13051,10 +13266,18 @@ define inreg <28 x float> @bitcast_v14i64_to_v28f32_scalar(<14 x i64> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s42, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s43, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_3
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -13083,7 +13306,7 @@ define inreg <28 x float> @bitcast_v14i64_to_v28f32_scalar(<14 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB23_3: ; %end
+; GFX9-NEXT:  .LBB23_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -13113,8 +13336,6 @@ define inreg <28 x float> @bitcast_v14i64_to_v28f32_scalar(<14 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_4:
-; GFX9-NEXT:    s_branch .LBB23_2
 ;
 ; GFX11-LABEL: bitcast_v14i64_to_v28f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -13132,11 +13353,16 @@ define inreg <28 x float> @bitcast_v14i64_to_v28f32_scalar(<14 x i64> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s13, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s14, 0
 ; GFX11-NEXT:    s_mov_b32 s14, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_3
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s14, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s14, s14, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -13165,7 +13391,7 @@ define inreg <28 x float> @bitcast_v14i64_to_v28f32_scalar(<14 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB23_3: ; %end
+; GFX11-NEXT:  .LBB23_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -13182,8 +13408,6 @@ define inreg <28 x float> @bitcast_v14i64_to_v28f32_scalar(<14 x i64> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s7 :: v_dual_mov_b32 v25, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s5 :: v_dual_mov_b32 v27, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_4:
-; GFX11-NEXT:    s_branch .LBB23_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -13419,10 +13643,18 @@ define inreg <14 x double> @bitcast_v28f32_to_v14f64_scalar(<28 x float> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_3
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB25_4
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v27, s63, 1.0
 ; SI-NEXT:    v_add_f32_e64 v26, s62, 1.0
 ; SI-NEXT:    v_add_f32_e64 v25, s61, 1.0
@@ -13451,10 +13683,8 @@ define inreg <14 x double> @bitcast_v28f32_to_v14f64_scalar(<28 x float> inreg %
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB25_5
-; SI-NEXT:  .LBB25_3:
-; SI-NEXT:    s_branch .LBB25_2
-; SI-NEXT:  .LBB25_4:
+; SI-NEXT:    s_branch .LBB25_6
+; SI-NEXT:  .LBB25_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -13487,7 +13717,7 @@ define inreg <14 x double> @bitcast_v28f32_to_v14f64_scalar(<28 x float> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB25_5: ; %end
+; SI-NEXT:  .LBB25_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -13554,10 +13784,18 @@ define inreg <14 x double> @bitcast_v28f32_to_v14f64_scalar(<28 x float> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_3
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB25_4
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v27, s63, 1.0
 ; VI-NEXT:    v_add_f32_e64 v26, s62, 1.0
 ; VI-NEXT:    v_add_f32_e64 v25, s61, 1.0
@@ -13586,10 +13824,8 @@ define inreg <14 x double> @bitcast_v28f32_to_v14f64_scalar(<28 x float> inreg %
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB25_5
-; VI-NEXT:  .LBB25_3:
-; VI-NEXT:    s_branch .LBB25_2
-; VI-NEXT:  .LBB25_4:
+; VI-NEXT:    s_branch .LBB25_6
+; VI-NEXT:  .LBB25_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -13622,7 +13858,7 @@ define inreg <14 x double> @bitcast_v28f32_to_v14f64_scalar(<28 x float> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB25_5: ; %end
+; VI-NEXT:  .LBB25_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -13689,10 +13925,18 @@ define inreg <14 x double> @bitcast_v28f32_to_v14f64_scalar(<28 x float> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_4
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v27, s63, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v26, s62, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v25, s61, 1.0
@@ -13721,10 +13965,8 @@ define inreg <14 x double> @bitcast_v28f32_to_v14f64_scalar(<28 x float> inreg %
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB25_5
-; GFX9-NEXT:  .LBB25_3:
-; GFX9-NEXT:    s_branch .LBB25_2
-; GFX9-NEXT:  .LBB25_4:
+; GFX9-NEXT:    s_branch .LBB25_6
+; GFX9-NEXT:  .LBB25_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -13757,7 +13999,7 @@ define inreg <14 x double> @bitcast_v28f32_to_v14f64_scalar(<28 x float> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB25_5: ; %end
+; GFX9-NEXT:  .LBB25_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -13825,11 +14067,16 @@ define inreg <14 x double> @bitcast_v28f32_to_v14f64_scalar(<28 x float> inreg %
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_4
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB25_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v27, s63, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v26, s62, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v25, s61, 1.0
@@ -13859,8 +14106,6 @@ define inreg <14 x double> @bitcast_v28f32_to_v14f64_scalar(<28 x float> inreg %
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB25_5
-; GFX11-NEXT:  .LBB25_3:
-; GFX11-NEXT:    s_branch .LBB25_2
 ; GFX11-NEXT:  .LBB25_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -14089,10 +14334,18 @@ define inreg <28 x float> @bitcast_v14f64_to_v28f32_scalar(<14 x double> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB27_3
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB27_4
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; SI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; SI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
@@ -14107,10 +14360,8 @@ define inreg <28 x float> @bitcast_v14f64_to_v28f32_scalar(<14 x double> inreg %
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB27_5
-; SI-NEXT:  .LBB27_3:
-; SI-NEXT:    s_branch .LBB27_2
-; SI-NEXT:  .LBB27_4:
+; SI-NEXT:    s_branch .LBB27_6
+; SI-NEXT:  .LBB27_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -14143,7 +14394,7 @@ define inreg <28 x float> @bitcast_v14f64_to_v28f32_scalar(<14 x double> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB27_5: ; %end
+; SI-NEXT:  .LBB27_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -14210,10 +14461,18 @@ define inreg <28 x float> @bitcast_v14f64_to_v28f32_scalar(<14 x double> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_3
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB27_4
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; VI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; VI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
@@ -14228,10 +14487,8 @@ define inreg <28 x float> @bitcast_v14f64_to_v28f32_scalar(<14 x double> inreg %
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB27_5
-; VI-NEXT:  .LBB27_3:
-; VI-NEXT:    s_branch .LBB27_2
-; VI-NEXT:  .LBB27_4:
+; VI-NEXT:    s_branch .LBB27_6
+; VI-NEXT:  .LBB27_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -14264,7 +14521,7 @@ define inreg <28 x float> @bitcast_v14f64_to_v28f32_scalar(<14 x double> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB27_5: ; %end
+; VI-NEXT:  .LBB27_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -14331,10 +14588,18 @@ define inreg <28 x float> @bitcast_v14f64_to_v28f32_scalar(<14 x double> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_4
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; GFX9-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; GFX9-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
@@ -14349,10 +14614,8 @@ define inreg <28 x float> @bitcast_v14f64_to_v28f32_scalar(<14 x double> inreg %
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB27_5
-; GFX9-NEXT:  .LBB27_3:
-; GFX9-NEXT:    s_branch .LBB27_2
-; GFX9-NEXT:  .LBB27_4:
+; GFX9-NEXT:    s_branch .LBB27_6
+; GFX9-NEXT:  .LBB27_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -14385,7 +14648,7 @@ define inreg <28 x float> @bitcast_v14f64_to_v28f32_scalar(<14 x double> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB27_5: ; %end
+; GFX9-NEXT:  .LBB27_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -14453,11 +14716,16 @@ define inreg <28 x float> @bitcast_v14f64_to_v28f32_scalar(<14 x double> inreg %
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_4
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB27_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; GFX11-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; GFX11-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
@@ -14473,8 +14741,6 @@ define inreg <28 x float> @bitcast_v14f64_to_v28f32_scalar(<14 x double> inreg %
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB27_5
-; GFX11-NEXT:  .LBB27_3:
-; GFX11-NEXT:    s_branch .LBB27_2
 ; GFX11-NEXT:  .LBB27_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -15362,10 +15628,8 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v58, s49, 7
 ; SI-NEXT:    v_writelane_b32 v58, s50, 8
 ; SI-NEXT:    v_writelane_b32 v58, s51, 9
-; SI-NEXT:    v_writelane_b32 v58, s52, 10
-; SI-NEXT:    v_writelane_b32 v58, s53, 11
-; SI-NEXT:    v_writelane_b32 v58, s30, 12
-; SI-NEXT:    v_writelane_b32 v58, s31, 13
+; SI-NEXT:    v_writelane_b32 v58, s30, 10
+; SI-NEXT:    v_writelane_b32 v58, s31, 11
 ; SI-NEXT:    v_readfirstlane_b32 s40, v14
 ; SI-NEXT:    v_readfirstlane_b32 s5, v13
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
@@ -15382,22 +15646,22 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s41, v1
 ; SI-NEXT:    s_cmp_lg_u32 s40, 0
 ; SI-NEXT:    v_readfirstlane_b32 s40, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s53, s5, 16
-; SI-NEXT:    s_lshr_b32 s52, s7, 16
-; SI-NEXT:    s_lshr_b32 s51, s9, 16
-; SI-NEXT:    s_lshr_b32 s50, s11, 16
-; SI-NEXT:    s_lshr_b32 s49, s13, 16
-; SI-NEXT:    s_lshr_b32 s48, s15, 16
-; SI-NEXT:    s_lshr_b32 s39, s41, 16
-; SI-NEXT:    s_lshr_b32 s38, s29, 16
-; SI-NEXT:    s_lshr_b32 s37, s27, 16
-; SI-NEXT:    s_lshr_b32 s36, s25, 16
-; SI-NEXT:    s_lshr_b32 s35, s23, 16
-; SI-NEXT:    s_lshr_b32 s34, s21, 16
-; SI-NEXT:    s_lshr_b32 s31, s19, 16
-; SI-NEXT:    s_lshr_b32 s30, s17, 16
+; SI-NEXT:    s_lshr_b32 s51, s5, 16
+; SI-NEXT:    s_lshr_b32 s50, s7, 16
+; SI-NEXT:    s_lshr_b32 s49, s9, 16
+; SI-NEXT:    s_lshr_b32 s48, s11, 16
+; SI-NEXT:    s_lshr_b32 s39, s13, 16
+; SI-NEXT:    s_lshr_b32 s38, s15, 16
+; SI-NEXT:    s_lshr_b32 s37, s41, 16
+; SI-NEXT:    s_lshr_b32 s36, s29, 16
+; SI-NEXT:    s_lshr_b32 s35, s27, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s31, s23, 16
+; SI-NEXT:    s_lshr_b32 s30, s21, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s19, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 16
@@ -15412,8 +15676,44 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[94:95], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[94:95], -1
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[94:95], s[94:95], exec
+; SI-NEXT:    s_cselect_b32 s43, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s43, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v27, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v26, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v25, s7, 1.0
@@ -15477,38 +15777,8 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v56, 16, v3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshrrev_b32_e32 v57, 16, v1
-; SI-NEXT:    s_branch .LBB29_5
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:    s_branch .LBB29_6
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -15538,20 +15808,20 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v26, s4
 ; SI-NEXT:    v_mov_b32_e32 v27, s5
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v57, s30
-; SI-NEXT:    v_mov_b32_e32 v56, s31
-; SI-NEXT:    v_mov_b32_e32 v47, s34
-; SI-NEXT:    v_mov_b32_e32 v46, s35
-; SI-NEXT:    v_mov_b32_e32 v45, s36
-; SI-NEXT:    v_mov_b32_e32 v44, s37
-; SI-NEXT:    v_mov_b32_e32 v43, s38
-; SI-NEXT:    v_mov_b32_e32 v42, s39
-; SI-NEXT:    v_mov_b32_e32 v41, s48
-; SI-NEXT:    v_mov_b32_e32 v40, s49
-; SI-NEXT:    v_mov_b32_e32 v55, s50
-; SI-NEXT:    v_mov_b32_e32 v54, s51
-; SI-NEXT:    v_mov_b32_e32 v53, s52
-; SI-NEXT:    v_mov_b32_e32 v52, s53
+; SI-NEXT:    v_mov_b32_e32 v57, vcc_lo
+; SI-NEXT:    v_mov_b32_e32 v56, vcc_hi
+; SI-NEXT:    v_mov_b32_e32 v47, s30
+; SI-NEXT:    v_mov_b32_e32 v46, s31
+; SI-NEXT:    v_mov_b32_e32 v45, s34
+; SI-NEXT:    v_mov_b32_e32 v44, s35
+; SI-NEXT:    v_mov_b32_e32 v43, s36
+; SI-NEXT:    v_mov_b32_e32 v42, s37
+; SI-NEXT:    v_mov_b32_e32 v41, s38
+; SI-NEXT:    v_mov_b32_e32 v40, s39
+; SI-NEXT:    v_mov_b32_e32 v55, s48
+; SI-NEXT:    v_mov_b32_e32 v54, s49
+; SI-NEXT:    v_mov_b32_e32 v53, s50
+; SI-NEXT:    v_mov_b32_e32 v52, s51
 ; SI-NEXT:    v_mov_b32_e32 v28, s42
 ; SI-NEXT:    v_mov_b32_e32 v29, s44
 ; SI-NEXT:    v_mov_b32_e32 v30, s46
@@ -15566,7 +15836,7 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v48, s88
 ; SI-NEXT:    v_mov_b32_e32 v49, s90
 ; SI-NEXT:    v_mov_b32_e32 v50, s92
-; SI-NEXT:  .LBB29_5: ; %end
+; SI-NEXT:  .LBB29_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v39, 16, v50
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v39
@@ -15649,7 +15919,7 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v26, v26, v28
 ; SI-NEXT:    v_and_b32_e32 v27, 0xffff, v27
 ; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v52
-; SI-NEXT:    v_readlane_b32 s30, v58, 12
+; SI-NEXT:    v_readlane_b32 s30, v58, 10
 ; SI-NEXT:    v_or_b32_e32 v5, v5, v39
 ; SI-NEXT:    v_or_b32_e32 v7, v7, v38
 ; SI-NEXT:    v_or_b32_e32 v9, v9, v37
@@ -15662,9 +15932,7 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v23, v23, v30
 ; SI-NEXT:    v_or_b32_e32 v25, v25, v29
 ; SI-NEXT:    v_or_b32_e32 v27, v27, v28
-; SI-NEXT:    v_readlane_b32 s31, v58, 13
-; SI-NEXT:    v_readlane_b32 s53, v58, 11
-; SI-NEXT:    v_readlane_b32 s52, v58, 10
+; SI-NEXT:    v_readlane_b32 s31, v58, 11
 ; SI-NEXT:    v_readlane_b32 s51, v58, 9
 ; SI-NEXT:    v_readlane_b32 s50, v58, 8
 ; SI-NEXT:    v_readlane_b32 s49, v58, 7
@@ -15695,10 +15963,8 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    buffer_store_dword v45, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v46, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v47, off, s[0:3], s32 ; 4-byte Folded Spill
-; VI-NEXT:    v_writelane_b32 v56, s34, 0
-; VI-NEXT:    v_writelane_b32 v56, s35, 1
-; VI-NEXT:    v_writelane_b32 v56, s30, 2
-; VI-NEXT:    v_writelane_b32 v56, s31, 3
+; VI-NEXT:    v_writelane_b32 v56, s30, 0
+; VI-NEXT:    v_writelane_b32 v56, s31, 1
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
 ; VI-NEXT:    v_readfirstlane_b32 s6, v13
 ; VI-NEXT:    v_readfirstlane_b32 s7, v12
@@ -15715,7 +15981,7 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s42, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s43, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s44, s6, 16
 ; VI-NEXT:    s_lshr_b32 s45, s7, 16
@@ -15741,12 +16007,48 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v27, s6, 1.0
 ; VI-NEXT:    v_add_f32_e64 v26, s7, 1.0
 ; VI-NEXT:    v_add_f32_e64 v25, s8, 1.0
@@ -15803,38 +16105,8 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v45, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v46, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v47, 16, v0
-; VI-NEXT:    s_branch .LBB29_5
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:    s_branch .LBB29_6
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -15863,10 +16135,10 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v25, s8
 ; VI-NEXT:    v_mov_b32_e32 v26, s7
 ; VI-NEXT:    v_mov_b32_e32 v27, s6
-; VI-NEXT:    v_mov_b32_e32 v47, s35
-; VI-NEXT:    v_mov_b32_e32 v46, s34
-; VI-NEXT:    v_mov_b32_e32 v45, s31
-; VI-NEXT:    v_mov_b32_e32 v44, s30
+; VI-NEXT:    v_mov_b32_e32 v47, s31
+; VI-NEXT:    v_mov_b32_e32 v46, s30
+; VI-NEXT:    v_mov_b32_e32 v45, vcc_hi
+; VI-NEXT:    v_mov_b32_e32 v44, vcc_lo
 ; VI-NEXT:    v_mov_b32_e32 v43, s91
 ; VI-NEXT:    v_mov_b32_e32 v42, s90
 ; VI-NEXT:    v_mov_b32_e32 v41, s89
@@ -15891,7 +16163,7 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v30, s46
 ; VI-NEXT:    v_mov_b32_e32 v29, s45
 ; VI-NEXT:    v_mov_b32_e32 v28, s44
-; VI-NEXT:  .LBB29_5: ; %end
+; VI-NEXT:  .LBB29_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v47, 16, v47
 ; VI-NEXT:    v_lshlrev_b32_e32 v46, 16, v46
 ; VI-NEXT:    v_lshlrev_b32_e32 v45, 16, v45
@@ -15936,7 +16208,7 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_lshlrev_b32_e32 v30, 16, v30
 ; VI-NEXT:    v_lshlrev_b32_e32 v29, 16, v29
 ; VI-NEXT:    v_lshlrev_b32_e32 v28, 16, v28
-; VI-NEXT:    v_readlane_b32 s30, v56, 2
+; VI-NEXT:    v_readlane_b32 s30, v56, 0
 ; VI-NEXT:    v_or_b32_sdwa v8, v8, v55 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v9, v9, v54 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v10, v10, v53 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
@@ -15957,9 +16229,7 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_or_b32_sdwa v25, v25, v30 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v26, v26, v29 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v27, v27, v28 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; VI-NEXT:    v_readlane_b32 s31, v56, 3
-; VI-NEXT:    v_readlane_b32 s35, v56, 1
-; VI-NEXT:    v_readlane_b32 s34, v56, 0
+; VI-NEXT:    v_readlane_b32 s31, v56, 1
 ; VI-NEXT:    s_or_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -15993,7 +16263,7 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s42, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s43, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s44, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s45, s7, 16
@@ -16023,8 +16293,44 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s93, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v27, s6, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v26, s7, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v25, s8, 1.0
@@ -16081,38 +16387,8 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v45, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v46, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v47, 16, v0
-; GFX9-NEXT:    s_branch .LBB29_5
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:    s_branch .LBB29_6
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -16169,7 +16445,7 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s46
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s45
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s44
-; GFX9-NEXT:  .LBB29_5: ; %end
+; GFX9-NEXT:  .LBB29_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -16252,11 +16528,11 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s13, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s14, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s40, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s40, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s14, s4, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s6, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s43, s8, 16
@@ -16283,9 +16559,44 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s88, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s89, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s90, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-TRUE16-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB29_3
+; GFX11-TRUE16-NEXT:  .LBB29_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s40, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:  .LBB29_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v27, s4, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v26, s5, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v25, s6, 1.0
@@ -16342,38 +16653,8 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v69, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v70, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v71, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB29_5
-; GFX11-TRUE16-NEXT:  .LBB29_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    s_branch .LBB29_2
-; GFX11-TRUE16-NEXT:  .LBB29_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB29_6
+; GFX11-TRUE16-NEXT:  .LBB29_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -16401,8 +16682,8 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v35, s46 :: v_dual_mov_b32 v34, s45
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v33, s44 :: v_dual_mov_b32 v32, s43
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
-; GFX11-TRUE16-NEXT:  .LBB29_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s15 :: v_dual_mov_b32 v28, s14
+; GFX11-TRUE16-NEXT:  .LBB29_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v71.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v70.l
@@ -16449,11 +16730,11 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s13, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s14, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s40, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s40, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s14, s4, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s6, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s43, s8, 16
@@ -16480,9 +16761,44 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s88, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s89, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s90, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-FAKE16-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB29_3
+; GFX11-FAKE16-NEXT:  .LBB29_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s40, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:  .LBB29_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v23, s4, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v24, s5, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v25, s6, 1.0
@@ -16539,38 +16855,8 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v69, 16, v0
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v70, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v71, 16, v2
-; GFX11-FAKE16-NEXT:    s_branch .LBB29_5
-; GFX11-FAKE16-NEXT:  .LBB29_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    s_branch .LBB29_2
-; GFX11-FAKE16-NEXT:  .LBB29_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB29_6
+; GFX11-FAKE16-NEXT:  .LBB29_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v7, s3
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v6, s16 :: v_dual_mov_b32 v5, s17
@@ -16598,8 +16884,8 @@ define inreg <56 x i16> @bitcast_v28f32_to_v56i16_scalar(<28 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v35, s46 :: v_dual_mov_b32 v34, s45
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v33, s44 :: v_dual_mov_b32 v32, s43
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
-; GFX11-FAKE16-NEXT:  .LBB29_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v29, s15 :: v_dual_mov_b32 v28, s14
+; GFX11-FAKE16-NEXT:  .LBB29_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v80, 0xffff, v0
@@ -17955,10 +18241,8 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v28, s83, 25
 ; SI-NEXT:    v_writelane_b32 v28, s84, 26
 ; SI-NEXT:    v_writelane_b32 v28, s85, 27
-; SI-NEXT:    v_writelane_b32 v28, s86, 28
-; SI-NEXT:    v_writelane_b32 v28, s87, 29
-; SI-NEXT:    v_writelane_b32 v28, s30, 30
-; SI-NEXT:    v_writelane_b32 v28, s31, 31
+; SI-NEXT:    v_writelane_b32 v28, s30, 28
+; SI-NEXT:    v_writelane_b32 v28, s31, 29
 ; SI-NEXT:    v_readfirstlane_b32 s7, v13
 ; SI-NEXT:    v_readfirstlane_b32 s9, v12
 ; SI-NEXT:    v_readfirstlane_b32 s11, v11
@@ -17970,23 +18254,23 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s88, v5
 ; SI-NEXT:    v_readfirstlane_b32 s91, v4
 ; SI-NEXT:    v_readfirstlane_b32 s94, v3
-; SI-NEXT:    v_readfirstlane_b32 s31, v2
-; SI-NEXT:    v_readfirstlane_b32 s69, v1
-; SI-NEXT:    v_readfirstlane_b32 s80, v0
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v2
+; SI-NEXT:    v_readfirstlane_b32 s35, v1
+; SI-NEXT:    v_readfirstlane_b32 s70, v0
 ; SI-NEXT:    s_lshr_b32 s78, s29, 16
 ; SI-NEXT:    s_lshr_b32 s89, s28, 16
 ; SI-NEXT:    s_lshr_b32 s92, s27, 16
 ; SI-NEXT:    s_lshr_b32 s95, s26, 16
-; SI-NEXT:    s_lshr_b32 s34, s25, 16
-; SI-NEXT:    s_lshr_b32 s68, s24, 16
-; SI-NEXT:    s_lshr_b32 s70, s23, 16
-; SI-NEXT:    s_lshr_b32 s81, s22, 16
-; SI-NEXT:    s_lshr_b32 s82, s21, 16
-; SI-NEXT:    s_lshr_b32 s83, s20, 16
-; SI-NEXT:    s_lshr_b32 s84, s19, 16
-; SI-NEXT:    s_lshr_b32 s85, s18, 16
-; SI-NEXT:    s_lshr_b32 s86, s17, 16
-; SI-NEXT:    s_lshr_b32 s87, s16, 16
+; SI-NEXT:    s_lshr_b32 s30, s25, 16
+; SI-NEXT:    s_lshr_b32 s34, s24, 16
+; SI-NEXT:    s_lshr_b32 s68, s23, 16
+; SI-NEXT:    s_lshr_b32 s71, s22, 16
+; SI-NEXT:    s_lshr_b32 s80, s21, 16
+; SI-NEXT:    s_lshr_b32 s81, s20, 16
+; SI-NEXT:    s_lshr_b32 s82, s19, 16
+; SI-NEXT:    s_lshr_b32 s83, s18, 16
+; SI-NEXT:    s_lshr_b32 s84, s17, 16
+; SI-NEXT:    s_lshr_b32 s85, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -17998,42 +18282,42 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s79, s88, 16
 ; SI-NEXT:    s_lshr_b32 s90, s91, 16
 ; SI-NEXT:    s_lshr_b32 s93, s94, 16
-; SI-NEXT:    s_lshr_b32 s30, s31, 16
-; SI-NEXT:    s_lshr_b32 s35, s69, 16
-; SI-NEXT:    s_lshr_b32 s71, s80, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, vcc_hi, 16
+; SI-NEXT:    s_lshr_b32 s31, s35, 16
+; SI-NEXT:    s_lshr_b32 s69, s70, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_4
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -18047,14 +18331,14 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s78, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s69, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s35, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -18089,56 +18373,65 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB31_3
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
@@ -18160,20 +18453,20 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s78, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s80, s80, 3
+; SI-NEXT:    s_add_i32 s70, s70, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s69, s69, 3
+; SI-NEXT:    s_add_i32 s35, s35, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s69, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s35, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s31, s31, 3
+; SI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s94, s94, 3
 ; SI-NEXT:    s_add_i32 s52, s4, 0x30000
@@ -18231,8 +18524,8 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s63, s4, 0x30000
-; SI-NEXT:  .LBB31_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v28, 30
+; SI-NEXT:  .LBB31_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v28, 28
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -18261,9 +18554,7 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v25, s61
 ; SI-NEXT:    v_mov_b32_e32 v26, s62
 ; SI-NEXT:    v_mov_b32_e32 v27, s63
-; SI-NEXT:    v_readlane_b32 s31, v28, 31
-; SI-NEXT:    v_readlane_b32 s87, v28, 29
-; SI-NEXT:    v_readlane_b32 s86, v28, 28
+; SI-NEXT:    v_readlane_b32 s31, v28, 29
 ; SI-NEXT:    v_readlane_b32 s85, v28, 27
 ; SI-NEXT:    v_readlane_b32 s84, v28, 26
 ; SI-NEXT:    v_readlane_b32 s83, v28, 25
@@ -18297,9 +18588,6 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB31_2
 ;
 ; VI-LABEL: bitcast_v56i16_to_v28f32_scalar:
 ; VI:       ; %bb.0:
@@ -18340,54 +18628,54 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v28, s87, 29
 ; VI-NEXT:    v_writelane_b32 v28, s30, 30
 ; VI-NEXT:    v_writelane_b32 v28, s31, 31
-; VI-NEXT:    v_readfirstlane_b32 s86, v13
-; VI-NEXT:    v_readfirstlane_b32 s6, v12
+; VI-NEXT:    v_readfirstlane_b32 s81, v13
+; VI-NEXT:    v_readfirstlane_b32 s83, v12
 ; VI-NEXT:    v_readfirstlane_b32 s9, v11
-; VI-NEXT:    v_readfirstlane_b32 s8, v10
-; VI-NEXT:    v_readfirstlane_b32 s87, v9
-; VI-NEXT:    v_readfirstlane_b32 s12, v8
+; VI-NEXT:    v_readfirstlane_b32 s84, v10
+; VI-NEXT:    v_readfirstlane_b32 s85, v9
+; VI-NEXT:    v_readfirstlane_b32 s8, v8
 ; VI-NEXT:    v_readfirstlane_b32 s73, v7
-; VI-NEXT:    v_readfirstlane_b32 s77, v6
-; VI-NEXT:    v_readfirstlane_b32 s88, v5
+; VI-NEXT:    v_readfirstlane_b32 s75, v6
+; VI-NEXT:    v_readfirstlane_b32 s77, v5
 ; VI-NEXT:    v_readfirstlane_b32 s91, v4
-; VI-NEXT:    v_readfirstlane_b32 s34, v3
-; VI-NEXT:    v_readfirstlane_b32 s69, v2
-; VI-NEXT:    v_readfirstlane_b32 s81, v1
-; VI-NEXT:    v_readfirstlane_b32 s84, v0
+; VI-NEXT:    v_readfirstlane_b32 s30, v3
+; VI-NEXT:    v_readfirstlane_b32 s35, v2
+; VI-NEXT:    v_readfirstlane_b32 s71, v1
+; VI-NEXT:    v_readfirstlane_b32 s82, v0
 ; VI-NEXT:    s_lshr_b32 s79, s29, 16
 ; VI-NEXT:    s_lshr_b32 s90, s28, 16
-; VI-NEXT:    s_lshr_b32 s31, s27, 16
-; VI-NEXT:    s_lshr_b32 s67, s26, 16
-; VI-NEXT:    s_lshr_b32 s70, s25, 16
-; VI-NEXT:    s_lshr_b32 s80, s24, 16
-; VI-NEXT:    s_lshr_b32 s82, s23, 16
-; VI-NEXT:    s_lshr_b32 s85, s22, 16
-; VI-NEXT:    s_lshr_b32 s7, s21, 16
-; VI-NEXT:    s_lshr_b32 s11, s20, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s27, 16
+; VI-NEXT:    s_lshr_b32 s34, s26, 16
+; VI-NEXT:    s_lshr_b32 s66, s25, 16
+; VI-NEXT:    s_lshr_b32 s68, s24, 16
+; VI-NEXT:    s_lshr_b32 s69, s23, 16
+; VI-NEXT:    s_lshr_b32 s80, s22, 16
+; VI-NEXT:    s_lshr_b32 s86, s21, 16
+; VI-NEXT:    s_lshr_b32 s87, s20, 16
 ; VI-NEXT:    s_lshr_b32 s13, s19, 16
 ; VI-NEXT:    s_lshr_b32 s15, s18, 16
-; VI-NEXT:    s_lshr_b32 s10, s17, 16
-; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:    s_lshr_b32 s64, s86, 16
-; VI-NEXT:    s_lshr_b32 s65, s6, 16
-; VI-NEXT:    s_lshr_b32 s66, s9, 16
-; VI-NEXT:    s_lshr_b32 s14, s8, 16
-; VI-NEXT:    s_lshr_b32 s72, s87, 16
-; VI-NEXT:    s_lshr_b32 s74, s12, 16
+; VI-NEXT:    s_lshr_b32 s88, s17, 16
+; VI-NEXT:    s_lshr_b32 s7, s16, 16
+; VI-NEXT:    s_lshr_b32 s64, s81, 16
+; VI-NEXT:    s_lshr_b32 s10, s83, 16
+; VI-NEXT:    s_lshr_b32 s12, s9, 16
+; VI-NEXT:    s_lshr_b32 s14, s84, 16
+; VI-NEXT:    s_lshr_b32 s72, s85, 16
+; VI-NEXT:    s_lshr_b32 s74, s8, 16
 ; VI-NEXT:    s_lshr_b32 s76, s73, 16
-; VI-NEXT:    s_lshr_b32 s78, s77, 16
-; VI-NEXT:    s_lshr_b32 s89, s88, 16
-; VI-NEXT:    s_lshr_b32 s30, s91, 16
-; VI-NEXT:    s_lshr_b32 s35, s34, 16
-; VI-NEXT:    s_lshr_b32 s68, s69, 16
-; VI-NEXT:    s_lshr_b32 s71, s81, 16
-; VI-NEXT:    s_lshr_b32 s83, s84, 16
+; VI-NEXT:    s_lshr_b32 s78, s75, 16
+; VI-NEXT:    s_lshr_b32 s89, s77, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s91, 16
+; VI-NEXT:    s_lshr_b32 s31, s30, 16
+; VI-NEXT:    s_lshr_b32 s65, s35, 16
+; VI-NEXT:    s_lshr_b32 s67, s71, 16
+; VI-NEXT:    s_lshr_b32 s70, s82, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_4
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s75, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
 ; VI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -18395,32 +18683,32 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
 ; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s10, 16
+; VI-NEXT:    s_lshl_b32 s41, s88, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s11, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s7, 16
+; VI-NEXT:    s_lshl_b32 s5, s86, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -18428,58 +18716,146 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s79, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s84
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s82
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s81
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s71
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s69
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s35
+; VI-NEXT:    s_lshl_b32 s5, s65, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s88
+; VI-NEXT:    s_and_b32 s4, 0xffff, s77
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s77
+; VI-NEXT:    s_and_b32 s4, 0xffff, s75
 ; VI-NEXT:    s_lshl_b32 s5, s78, 16
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s73
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s12
+; VI-NEXT:    s_and_b32 s4, 0xffff, s8
 ; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s58, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s87
+; VI-NEXT:    s_and_b32 s4, 0xffff, s85
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s8
+; VI-NEXT:    s_and_b32 s4, 0xffff, s84
 ; VI-NEXT:    s_lshl_b32 s5, s14, 16
 ; VI-NEXT:    s_or_b32 s60, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s9
-; VI-NEXT:    s_lshl_b32 s5, s66, 16
+; VI-NEXT:    s_lshl_b32 s5, s12, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s6
-; VI-NEXT:    s_lshl_b32 s5, s65, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s83
+; VI-NEXT:    s_lshl_b32 s5, s10, 16
 ; VI-NEXT:    s_or_b32 s62, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s86
+; VI-NEXT:    s_and_b32 s4, 0xffff, s81
 ; VI-NEXT:    s_lshl_b32 s5, s64, 16
 ; VI-NEXT:    s_or_b32 s63, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB31_3
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    ; implicit-def: $vgpr29 : SGPR spill to VGPR lane
+; VI-NEXT:    s_mov_b32 s11, s9
+; VI-NEXT:    v_writelane_b32 v29, s26, 0
+; VI-NEXT:    s_mov_b32 s26, s27
+; VI-NEXT:    s_mov_b32 s27, s77
+; VI-NEXT:    v_writelane_b32 v29, s91, 1
+; VI-NEXT:    s_mov_b32 s91, s88
+; VI-NEXT:    s_mov_b32 s88, s28
+; VI-NEXT:    s_mov_b32 s28, s75
+; VI-NEXT:    s_mov_b32 s77, s29
+; VI-NEXT:    s_mov_b32 s29, s81
+; VI-NEXT:    s_mov_b32 s81, s68
+; VI-NEXT:    s_mov_b32 s68, s34
+; VI-NEXT:    s_mov_b32 s34, s31
+; VI-NEXT:    s_mov_b32 s31, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, s90
+; VI-NEXT:    s_mov_b32 s90, s89
+; VI-NEXT:    s_mov_b32 s89, s79
+; VI-NEXT:    s_mov_b32 s79, s78
+; VI-NEXT:    s_mov_b32 s78, s76
+; VI-NEXT:    s_mov_b32 s76, s74
+; VI-NEXT:    s_mov_b32 s74, s72
+; VI-NEXT:    s_mov_b32 s72, s14
+; VI-NEXT:    s_mov_b32 s14, s12
+; VI-NEXT:    s_mov_b32 s12, s10
+; VI-NEXT:    s_mov_b32 s10, s64
+; VI-NEXT:    s_mov_b32 s9, s83
+; VI-NEXT:    s_mov_b32 s83, s69
+; VI-NEXT:    s_mov_b32 s69, s65
+; VI-NEXT:    s_mov_b32 s6, s13
+; VI-NEXT:    s_mov_b32 s13, s84
+; VI-NEXT:    s_mov_b32 s84, s70
+; VI-NEXT:    s_mov_b32 s70, s66
+; VI-NEXT:    s_mov_b32 s75, s73
+; VI-NEXT:    s_mov_b32 s73, s8
+; VI-NEXT:    s_mov_b32 s8, s15
+; VI-NEXT:    s_mov_b32 s15, s85
+; VI-NEXT:    s_mov_b32 s85, s80
+; VI-NEXT:    s_mov_b32 s80, s67
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    s_mov_b32 s67, s80
+; VI-NEXT:    s_mov_b32 s80, s85
+; VI-NEXT:    s_mov_b32 s85, s15
+; VI-NEXT:    s_mov_b32 s15, s8
+; VI-NEXT:    s_mov_b32 s8, s73
+; VI-NEXT:    s_mov_b32 s73, s75
+; VI-NEXT:    s_mov_b32 s66, s70
+; VI-NEXT:    s_mov_b32 s70, s84
+; VI-NEXT:    s_mov_b32 s84, s13
+; VI-NEXT:    s_mov_b32 s13, s6
+; VI-NEXT:    s_mov_b32 s65, s69
+; VI-NEXT:    s_mov_b32 s69, s83
+; VI-NEXT:    s_mov_b32 s83, s9
+; VI-NEXT:    s_mov_b32 s9, s11
+; VI-NEXT:    s_mov_b32 s64, s10
+; VI-NEXT:    s_mov_b32 s10, s12
+; VI-NEXT:    s_mov_b32 s12, s14
+; VI-NEXT:    s_mov_b32 s14, s72
+; VI-NEXT:    s_mov_b32 s72, s74
+; VI-NEXT:    s_mov_b32 s74, s76
+; VI-NEXT:    s_mov_b32 s76, s78
+; VI-NEXT:    s_mov_b32 s78, s79
+; VI-NEXT:    s_mov_b32 s79, s89
+; VI-NEXT:    s_mov_b32 s89, s90
+; VI-NEXT:    s_mov_b32 s90, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, s31
+; VI-NEXT:    s_mov_b32 s31, s34
+; VI-NEXT:    s_mov_b32 s34, s68
+; VI-NEXT:    s_mov_b32 s68, s81
+; VI-NEXT:    s_mov_b32 s81, s29
+; VI-NEXT:    s_mov_b32 s29, s77
+; VI-NEXT:    s_mov_b32 s75, s28
+; VI-NEXT:    s_mov_b32 s28, s88
+; VI-NEXT:    s_mov_b32 s88, s91
+; VI-NEXT:    v_readlane_b32 s91, v29, 1
+; VI-NEXT:    s_mov_b32 s77, s27
+; VI-NEXT:    s_mov_b32 s27, s26
+; VI-NEXT:    v_readlane_b32 s26, v29, 0
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s75, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_and_b32 s5, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s10, s10, 16
-; VI-NEXT:    s_or_b32 s5, s10, s5
+; VI-NEXT:    s_lshl_b32 s6, s88, 16
+; VI-NEXT:    s_or_b32 s5, s6, s5
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_add_i32 s37, s5, 0x30000
@@ -18494,42 +18870,42 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s11, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s7, 16
+; VI-NEXT:    s_lshl_b32 s5, s86, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s26, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s27, s27, 3
 ; VI-NEXT:    s_add_i32 s46, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s27, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s28, s28, 3
 ; VI-NEXT:    s_add_i32 s47, s4, 0x30000
@@ -18541,37 +18917,37 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s79, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s84, s84, 3
+; VI-NEXT:    s_add_i32 s82, s82, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s84, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_and_b32 s4, s82, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s81, s81, 3
+; VI-NEXT:    s_add_i32 s71, s71, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s81, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_and_b32 s4, s71, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s69, s69, 3
+; VI-NEXT:    s_add_i32 s35, s35, 3
 ; VI-NEXT:    s_add_i32 s51, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s69, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_and_b32 s4, s35, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s65, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s34, s34, 3
+; VI-NEXT:    s_add_i32 s30, s30, 3
 ; VI-NEXT:    s_add_i32 s52, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s34, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, s30, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s91, s91, 3
 ; VI-NEXT:    s_add_i32 s53, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s91, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s88, s88, 3
+; VI-NEXT:    s_add_i32 s88, s77, 3
 ; VI-NEXT:    s_add_i32 s54, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s88, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s77, s77, 3
+; VI-NEXT:    s_add_i32 s77, s75, 3
 ; VI-NEXT:    s_add_i32 s55, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s77, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s78, 16
@@ -18581,17 +18957,17 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, s75, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s73, s12, 3
+; VI-NEXT:    s_add_i32 s73, s8, 3
 ; VI-NEXT:    s_add_i32 s57, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s73, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s15, s87, 3
+; VI-NEXT:    s_add_i32 s15, s85, 3
 ; VI-NEXT:    s_add_i32 s58, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s15, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s13, s8, 3
+; VI-NEXT:    s_add_i32 s13, s84, 3
 ; VI-NEXT:    s_add_i32 s59, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s13, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s14, 16
@@ -18599,20 +18975,20 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    s_add_i32 s11, s9, 3
 ; VI-NEXT:    s_add_i32 s60, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s11, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s66, 16
+; VI-NEXT:    s_lshl_b32 s5, s12, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s9, s6, 3
+; VI-NEXT:    s_add_i32 s9, s83, 3
 ; VI-NEXT:    s_add_i32 s61, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s9, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s65, 16
+; VI-NEXT:    s_lshl_b32 s5, s10, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s7, s86, 3
+; VI-NEXT:    s_add_i32 s7, s81, 3
 ; VI-NEXT:    s_add_i32 s62, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s64, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s63, s4, 0x30000
-; VI-NEXT:  .LBB31_3: ; %end
+; VI-NEXT:  .LBB31_5: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v28, 30
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
@@ -18679,96 +19055,6 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_4:
-; VI-NEXT:    ; implicit-def: $vgpr29 : SGPR spill to VGPR lane
-; VI-NEXT:    s_mov_b32 vcc_lo, s64
-; VI-NEXT:    v_writelane_b32 v29, s75, 0
-; VI-NEXT:    s_mov_b32 vcc_hi, s65
-; VI-NEXT:    s_mov_b32 s75, s73
-; VI-NEXT:    s_mov_b32 s73, s12
-; VI-NEXT:    v_writelane_b32 v29, s25, 1
-; VI-NEXT:    s_mov_b32 s25, s91
-; VI-NEXT:    s_mov_b32 s91, s26
-; VI-NEXT:    s_mov_b32 s26, s27
-; VI-NEXT:    s_mov_b32 s27, s88
-; VI-NEXT:    s_mov_b32 s88, s28
-; VI-NEXT:    s_mov_b32 s28, s77
-; VI-NEXT:    s_mov_b32 s77, s29
-; VI-NEXT:    s_mov_b32 s29, s15
-; VI-NEXT:    s_mov_b32 s15, s87
-; VI-NEXT:    s_mov_b32 s87, s85
-; VI-NEXT:    s_mov_b32 s85, s82
-; VI-NEXT:    s_mov_b32 s82, s71
-; VI-NEXT:    s_mov_b32 s71, s68
-; VI-NEXT:    s_mov_b32 s68, s35
-; VI-NEXT:    s_mov_b32 s35, s31
-; VI-NEXT:    s_mov_b32 s31, s30
-; VI-NEXT:    s_mov_b32 s30, s90
-; VI-NEXT:    s_mov_b32 s90, s89
-; VI-NEXT:    s_mov_b32 s89, s79
-; VI-NEXT:    s_mov_b32 s79, s78
-; VI-NEXT:    s_mov_b32 s78, s76
-; VI-NEXT:    s_mov_b32 s76, s74
-; VI-NEXT:    s_mov_b32 s74, s72
-; VI-NEXT:    s_mov_b32 s72, s14
-; VI-NEXT:    s_mov_b32 s14, s66
-; VI-NEXT:    s_mov_b32 s12, s10
-; VI-NEXT:    s_mov_b32 s10, s13
-; VI-NEXT:    s_mov_b32 s13, s8
-; VI-NEXT:    s_mov_b32 s8, s11
-; VI-NEXT:    s_mov_b32 s11, s9
-; VI-NEXT:    s_mov_b32 s9, s6
-; VI-NEXT:    s_mov_b32 s6, s7
-; VI-NEXT:    s_mov_b32 s7, s86
-; VI-NEXT:    s_mov_b32 s86, s83
-; VI-NEXT:    s_mov_b32 s83, s80
-; VI-NEXT:    s_mov_b32 s80, s70
-; VI-NEXT:    s_mov_b32 s70, s67
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_mov_b32 s67, s70
-; VI-NEXT:    s_mov_b32 s70, s80
-; VI-NEXT:    s_mov_b32 s80, s83
-; VI-NEXT:    s_mov_b32 s83, s86
-; VI-NEXT:    s_mov_b32 s86, s7
-; VI-NEXT:    s_mov_b32 s7, s6
-; VI-NEXT:    s_mov_b32 s6, s9
-; VI-NEXT:    s_mov_b32 s9, s11
-; VI-NEXT:    s_mov_b32 s11, s8
-; VI-NEXT:    s_mov_b32 s8, s13
-; VI-NEXT:    s_mov_b32 s13, s10
-; VI-NEXT:    s_mov_b32 s10, s12
-; VI-NEXT:    s_mov_b32 s66, s14
-; VI-NEXT:    s_mov_b32 s14, s72
-; VI-NEXT:    s_mov_b32 s72, s74
-; VI-NEXT:    s_mov_b32 s74, s76
-; VI-NEXT:    s_mov_b32 s76, s78
-; VI-NEXT:    s_mov_b32 s78, s79
-; VI-NEXT:    s_mov_b32 s79, s89
-; VI-NEXT:    s_mov_b32 s89, s90
-; VI-NEXT:    s_mov_b32 s90, s30
-; VI-NEXT:    s_mov_b32 s30, s31
-; VI-NEXT:    s_mov_b32 s31, s35
-; VI-NEXT:    s_mov_b32 s35, s68
-; VI-NEXT:    s_mov_b32 s68, s71
-; VI-NEXT:    s_mov_b32 s71, s82
-; VI-NEXT:    s_mov_b32 s82, s85
-; VI-NEXT:    s_mov_b32 s85, s87
-; VI-NEXT:    s_mov_b32 s87, s15
-; VI-NEXT:    s_mov_b32 s15, s29
-; VI-NEXT:    s_mov_b32 s29, s77
-; VI-NEXT:    s_mov_b32 s77, s28
-; VI-NEXT:    s_mov_b32 s28, s88
-; VI-NEXT:    s_mov_b32 s88, s27
-; VI-NEXT:    s_mov_b32 s27, s26
-; VI-NEXT:    s_mov_b32 s26, s91
-; VI-NEXT:    s_mov_b32 s91, s25
-; VI-NEXT:    v_readlane_b32 s25, v29, 1
-; VI-NEXT:    s_mov_b32 s12, s73
-; VI-NEXT:    s_mov_b32 s73, s75
-; VI-NEXT:    v_readlane_b32 s75, v29, 0
-; VI-NEXT:    s_mov_b32 s65, vcc_hi
-; VI-NEXT:    s_mov_b32 s64, vcc_lo
-; VI-NEXT:    s_branch .LBB31_2
 ;
 ; GFX9-LABEL: bitcast_v56i16_to_v28f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -18860,10 +19146,18 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s74
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s62, s62, s73
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s72
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_4
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -18892,10 +19186,8 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v25, s61, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v26, s62, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v27, s63, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB31_5
-; GFX9-NEXT:  .LBB31_3:
-; GFX9-NEXT:    s_branch .LBB31_2
-; GFX9-NEXT:  .LBB31_4:
+; GFX9-NEXT:    s_branch .LBB31_6
+; GFX9-NEXT:  .LBB31_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -18928,7 +19220,7 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB31_5: ; %end
+; GFX9-NEXT:  .LBB31_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -19019,11 +19311,16 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s26, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_4
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -19053,8 +19350,6 @@ define inreg <28 x float> @bitcast_v56i16_to_v28f32_scalar(<56 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v26, s26, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v27, s27, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_3:
-; GFX11-NEXT:    s_branch .LBB31_2
 ; GFX11-NEXT:  .LBB31_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -19925,10 +20220,8 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v58, s49, 7
 ; SI-NEXT:    v_writelane_b32 v58, s50, 8
 ; SI-NEXT:    v_writelane_b32 v58, s51, 9
-; SI-NEXT:    v_writelane_b32 v58, s52, 10
-; SI-NEXT:    v_writelane_b32 v58, s53, 11
-; SI-NEXT:    v_writelane_b32 v58, s30, 12
-; SI-NEXT:    v_writelane_b32 v58, s31, 13
+; SI-NEXT:    v_writelane_b32 v58, s30, 10
+; SI-NEXT:    v_writelane_b32 v58, s31, 11
 ; SI-NEXT:    v_readfirstlane_b32 s40, v14
 ; SI-NEXT:    v_readfirstlane_b32 s5, v13
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
@@ -19945,22 +20238,22 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s41, v1
 ; SI-NEXT:    s_cmp_lg_u32 s40, 0
 ; SI-NEXT:    v_readfirstlane_b32 s40, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s53, s5, 16
-; SI-NEXT:    s_lshr_b32 s52, s7, 16
-; SI-NEXT:    s_lshr_b32 s51, s9, 16
-; SI-NEXT:    s_lshr_b32 s50, s11, 16
-; SI-NEXT:    s_lshr_b32 s49, s13, 16
-; SI-NEXT:    s_lshr_b32 s48, s15, 16
-; SI-NEXT:    s_lshr_b32 s39, s41, 16
-; SI-NEXT:    s_lshr_b32 s38, s29, 16
-; SI-NEXT:    s_lshr_b32 s37, s27, 16
-; SI-NEXT:    s_lshr_b32 s36, s25, 16
-; SI-NEXT:    s_lshr_b32 s35, s23, 16
-; SI-NEXT:    s_lshr_b32 s34, s21, 16
-; SI-NEXT:    s_lshr_b32 s31, s19, 16
-; SI-NEXT:    s_lshr_b32 s30, s17, 16
+; SI-NEXT:    s_lshr_b32 s51, s5, 16
+; SI-NEXT:    s_lshr_b32 s50, s7, 16
+; SI-NEXT:    s_lshr_b32 s49, s9, 16
+; SI-NEXT:    s_lshr_b32 s48, s11, 16
+; SI-NEXT:    s_lshr_b32 s39, s13, 16
+; SI-NEXT:    s_lshr_b32 s38, s15, 16
+; SI-NEXT:    s_lshr_b32 s37, s41, 16
+; SI-NEXT:    s_lshr_b32 s36, s29, 16
+; SI-NEXT:    s_lshr_b32 s35, s27, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s31, s23, 16
+; SI-NEXT:    s_lshr_b32 s30, s21, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s19, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 16
@@ -19975,8 +20268,44 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[94:95], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[94:95], -1
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[94:95], s[94:95], exec
+; SI-NEXT:    s_cselect_b32 s43, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s43, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v27, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v26, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v25, s7, 1.0
@@ -20040,38 +20369,8 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v56, 16, v3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshrrev_b32_e32 v57, 16, v1
-; SI-NEXT:    s_branch .LBB33_5
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:    s_branch .LBB33_6
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -20101,20 +20400,20 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v26, s4
 ; SI-NEXT:    v_mov_b32_e32 v27, s5
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v57, s30
-; SI-NEXT:    v_mov_b32_e32 v56, s31
-; SI-NEXT:    v_mov_b32_e32 v47, s34
-; SI-NEXT:    v_mov_b32_e32 v46, s35
-; SI-NEXT:    v_mov_b32_e32 v45, s36
-; SI-NEXT:    v_mov_b32_e32 v44, s37
-; SI-NEXT:    v_mov_b32_e32 v43, s38
-; SI-NEXT:    v_mov_b32_e32 v42, s39
-; SI-NEXT:    v_mov_b32_e32 v41, s48
-; SI-NEXT:    v_mov_b32_e32 v40, s49
-; SI-NEXT:    v_mov_b32_e32 v55, s50
-; SI-NEXT:    v_mov_b32_e32 v54, s51
-; SI-NEXT:    v_mov_b32_e32 v53, s52
-; SI-NEXT:    v_mov_b32_e32 v52, s53
+; SI-NEXT:    v_mov_b32_e32 v57, vcc_lo
+; SI-NEXT:    v_mov_b32_e32 v56, vcc_hi
+; SI-NEXT:    v_mov_b32_e32 v47, s30
+; SI-NEXT:    v_mov_b32_e32 v46, s31
+; SI-NEXT:    v_mov_b32_e32 v45, s34
+; SI-NEXT:    v_mov_b32_e32 v44, s35
+; SI-NEXT:    v_mov_b32_e32 v43, s36
+; SI-NEXT:    v_mov_b32_e32 v42, s37
+; SI-NEXT:    v_mov_b32_e32 v41, s38
+; SI-NEXT:    v_mov_b32_e32 v40, s39
+; SI-NEXT:    v_mov_b32_e32 v55, s48
+; SI-NEXT:    v_mov_b32_e32 v54, s49
+; SI-NEXT:    v_mov_b32_e32 v53, s50
+; SI-NEXT:    v_mov_b32_e32 v52, s51
 ; SI-NEXT:    v_mov_b32_e32 v28, s42
 ; SI-NEXT:    v_mov_b32_e32 v29, s44
 ; SI-NEXT:    v_mov_b32_e32 v30, s46
@@ -20129,7 +20428,7 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v48, s88
 ; SI-NEXT:    v_mov_b32_e32 v49, s90
 ; SI-NEXT:    v_mov_b32_e32 v50, s92
-; SI-NEXT:  .LBB33_5: ; %end
+; SI-NEXT:  .LBB33_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v39, 16, v50
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v39
@@ -20212,7 +20511,7 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v26, v26, v28
 ; SI-NEXT:    v_and_b32_e32 v27, 0xffff, v27
 ; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v52
-; SI-NEXT:    v_readlane_b32 s30, v58, 12
+; SI-NEXT:    v_readlane_b32 s30, v58, 10
 ; SI-NEXT:    v_or_b32_e32 v5, v5, v39
 ; SI-NEXT:    v_or_b32_e32 v7, v7, v38
 ; SI-NEXT:    v_or_b32_e32 v9, v9, v37
@@ -20225,9 +20524,7 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v23, v23, v30
 ; SI-NEXT:    v_or_b32_e32 v25, v25, v29
 ; SI-NEXT:    v_or_b32_e32 v27, v27, v28
-; SI-NEXT:    v_readlane_b32 s31, v58, 13
-; SI-NEXT:    v_readlane_b32 s53, v58, 11
-; SI-NEXT:    v_readlane_b32 s52, v58, 10
+; SI-NEXT:    v_readlane_b32 s31, v58, 11
 ; SI-NEXT:    v_readlane_b32 s51, v58, 9
 ; SI-NEXT:    v_readlane_b32 s50, v58, 8
 ; SI-NEXT:    v_readlane_b32 s49, v58, 7
@@ -20258,10 +20555,8 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    buffer_store_dword v45, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v46, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v47, off, s[0:3], s32 ; 4-byte Folded Spill
-; VI-NEXT:    v_writelane_b32 v56, s34, 0
-; VI-NEXT:    v_writelane_b32 v56, s35, 1
-; VI-NEXT:    v_writelane_b32 v56, s30, 2
-; VI-NEXT:    v_writelane_b32 v56, s31, 3
+; VI-NEXT:    v_writelane_b32 v56, s30, 0
+; VI-NEXT:    v_writelane_b32 v56, s31, 1
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
 ; VI-NEXT:    v_readfirstlane_b32 s6, v13
 ; VI-NEXT:    v_readfirstlane_b32 s7, v12
@@ -20278,7 +20573,7 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s42, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s43, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s44, s6, 16
 ; VI-NEXT:    s_lshr_b32 s45, s7, 16
@@ -20304,12 +20599,48 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v27, s6, 1.0
 ; VI-NEXT:    v_add_f32_e64 v26, s7, 1.0
 ; VI-NEXT:    v_add_f32_e64 v25, s8, 1.0
@@ -20366,38 +20697,8 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v45, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v46, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v47, 16, v0
-; VI-NEXT:    s_branch .LBB33_5
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:    s_branch .LBB33_6
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -20426,10 +20727,10 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v25, s8
 ; VI-NEXT:    v_mov_b32_e32 v26, s7
 ; VI-NEXT:    v_mov_b32_e32 v27, s6
-; VI-NEXT:    v_mov_b32_e32 v47, s35
-; VI-NEXT:    v_mov_b32_e32 v46, s34
-; VI-NEXT:    v_mov_b32_e32 v45, s31
-; VI-NEXT:    v_mov_b32_e32 v44, s30
+; VI-NEXT:    v_mov_b32_e32 v47, s31
+; VI-NEXT:    v_mov_b32_e32 v46, s30
+; VI-NEXT:    v_mov_b32_e32 v45, vcc_hi
+; VI-NEXT:    v_mov_b32_e32 v44, vcc_lo
 ; VI-NEXT:    v_mov_b32_e32 v43, s91
 ; VI-NEXT:    v_mov_b32_e32 v42, s90
 ; VI-NEXT:    v_mov_b32_e32 v41, s89
@@ -20454,7 +20755,7 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v30, s46
 ; VI-NEXT:    v_mov_b32_e32 v29, s45
 ; VI-NEXT:    v_mov_b32_e32 v28, s44
-; VI-NEXT:  .LBB33_5: ; %end
+; VI-NEXT:  .LBB33_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v47, 16, v47
 ; VI-NEXT:    v_lshlrev_b32_e32 v46, 16, v46
 ; VI-NEXT:    v_lshlrev_b32_e32 v45, 16, v45
@@ -20499,7 +20800,7 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_lshlrev_b32_e32 v30, 16, v30
 ; VI-NEXT:    v_lshlrev_b32_e32 v29, 16, v29
 ; VI-NEXT:    v_lshlrev_b32_e32 v28, 16, v28
-; VI-NEXT:    v_readlane_b32 s30, v56, 2
+; VI-NEXT:    v_readlane_b32 s30, v56, 0
 ; VI-NEXT:    v_or_b32_sdwa v8, v8, v55 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v9, v9, v54 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v10, v10, v53 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
@@ -20520,9 +20821,7 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; VI-NEXT:    v_or_b32_sdwa v25, v25, v30 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v26, v26, v29 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v27, v27, v28 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; VI-NEXT:    v_readlane_b32 s31, v56, 3
-; VI-NEXT:    v_readlane_b32 s35, v56, 1
-; VI-NEXT:    v_readlane_b32 s34, v56, 0
+; VI-NEXT:    v_readlane_b32 s31, v56, 1
 ; VI-NEXT:    s_or_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -20556,7 +20855,7 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s42, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s43, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s44, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s45, s7, 16
@@ -20586,8 +20885,44 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s93, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v27, s6, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v26, s7, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v25, s8, 1.0
@@ -20644,38 +20979,8 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v45, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v46, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v47, 16, v0
-; GFX9-NEXT:    s_branch .LBB33_5
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:    s_branch .LBB33_6
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -20732,7 +21037,7 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s46
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s45
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s44
-; GFX9-NEXT:  .LBB33_5: ; %end
+; GFX9-NEXT:  .LBB33_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -20815,11 +21120,11 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s13, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s14, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s40, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s40, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s14, s4, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s6, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s43, s8, 16
@@ -20846,9 +21151,44 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s88, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s89, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s90, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-TRUE16-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB33_3
+; GFX11-TRUE16-NEXT:  .LBB33_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s40, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:  .LBB33_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v27, s4, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v26, s5, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v25, s6, 1.0
@@ -20905,38 +21245,8 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v69, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v70, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v71, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB33_5
-; GFX11-TRUE16-NEXT:  .LBB33_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    s_branch .LBB33_2
-; GFX11-TRUE16-NEXT:  .LBB33_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB33_6
+; GFX11-TRUE16-NEXT:  .LBB33_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -20964,8 +21274,8 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v35, s46 :: v_dual_mov_b32 v34, s45
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v33, s44 :: v_dual_mov_b32 v32, s43
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
-; GFX11-TRUE16-NEXT:  .LBB33_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s15 :: v_dual_mov_b32 v28, s14
+; GFX11-TRUE16-NEXT:  .LBB33_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v71.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v70.l
@@ -21012,11 +21322,11 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s12, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s13, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s14, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s40, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s40, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s14, s4, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s6, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s43, s8, 16
@@ -21043,9 +21353,44 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s88, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s89, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s90, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-FAKE16-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB33_3
+; GFX11-FAKE16-NEXT:  .LBB33_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s40, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:  .LBB33_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v23, s4, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v24, s5, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v25, s6, 1.0
@@ -21102,38 +21447,8 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v69, 16, v0
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v70, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v71, 16, v2
-; GFX11-FAKE16-NEXT:    s_branch .LBB33_5
-; GFX11-FAKE16-NEXT:  .LBB33_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    s_branch .LBB33_2
-; GFX11-FAKE16-NEXT:  .LBB33_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB33_6
+; GFX11-FAKE16-NEXT:  .LBB33_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v7, s3
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v6, s16 :: v_dual_mov_b32 v5, s17
@@ -21161,8 +21476,8 @@ define inreg <56 x half> @bitcast_v28f32_to_v56f16_scalar(<28 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v35, s46 :: v_dual_mov_b32 v34, s45
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v33, s44 :: v_dual_mov_b32 v32, s43
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v29, s40 :: v_dual_mov_b32 v28, s15
-; GFX11-FAKE16-NEXT:  .LBB33_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v29, s15 :: v_dual_mov_b32 v28, s14
+; GFX11-FAKE16-NEXT:  .LBB33_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v80, 0xffff, v0
@@ -22655,10 +22970,8 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v32, s83, 25
 ; SI-NEXT:    v_writelane_b32 v32, s84, 26
 ; SI-NEXT:    v_writelane_b32 v32, s85, 27
-; SI-NEXT:    v_writelane_b32 v32, s86, 28
-; SI-NEXT:    v_writelane_b32 v32, s87, 29
-; SI-NEXT:    v_writelane_b32 v32, s30, 30
-; SI-NEXT:    v_writelane_b32 v32, s31, 31
+; SI-NEXT:    v_writelane_b32 v32, s30, 28
+; SI-NEXT:    v_writelane_b32 v32, s31, 29
 ; SI-NEXT:    v_readfirstlane_b32 s6, v13
 ; SI-NEXT:    v_readfirstlane_b32 s8, v12
 ; SI-NEXT:    v_readfirstlane_b32 s10, v11
@@ -22672,21 +22985,21 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s90, v3
 ; SI-NEXT:    v_readfirstlane_b32 s92, v2
 ; SI-NEXT:    v_readfirstlane_b32 s95, v1
-; SI-NEXT:    v_readfirstlane_b32 s34, v0
+; SI-NEXT:    v_readfirstlane_b32 s30, v0
 ; SI-NEXT:    s_lshr_b32 s94, s29, 16
-; SI-NEXT:    s_lshr_b32 s30, s28, 16
-; SI-NEXT:    s_lshr_b32 s35, s27, 16
-; SI-NEXT:    s_lshr_b32 s69, s26, 16
-; SI-NEXT:    s_lshr_b32 s70, s25, 16
-; SI-NEXT:    s_lshr_b32 s71, s24, 16
-; SI-NEXT:    s_lshr_b32 s80, s23, 16
-; SI-NEXT:    s_lshr_b32 s81, s22, 16
-; SI-NEXT:    s_lshr_b32 s82, s21, 16
-; SI-NEXT:    s_lshr_b32 s83, s20, 16
-; SI-NEXT:    s_lshr_b32 s84, s19, 16
-; SI-NEXT:    s_lshr_b32 s85, s18, 16
-; SI-NEXT:    s_lshr_b32 s86, s17, 16
-; SI-NEXT:    s_lshr_b32 s87, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s28, 16
+; SI-NEXT:    s_lshr_b32 s31, s27, 16
+; SI-NEXT:    s_lshr_b32 s35, s26, 16
+; SI-NEXT:    s_lshr_b32 s68, s25, 16
+; SI-NEXT:    s_lshr_b32 s69, s24, 16
+; SI-NEXT:    s_lshr_b32 s70, s23, 16
+; SI-NEXT:    s_lshr_b32 s71, s22, 16
+; SI-NEXT:    s_lshr_b32 s80, s21, 16
+; SI-NEXT:    s_lshr_b32 s81, s20, 16
+; SI-NEXT:    s_lshr_b32 s82, s19, 16
+; SI-NEXT:    s_lshr_b32 s83, s18, 16
+; SI-NEXT:    s_lshr_b32 s84, s17, 16
+; SI-NEXT:    s_lshr_b32 s85, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -22699,59 +23012,59 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s89, s88, 16
 ; SI-NEXT:    s_lshr_b32 s91, s90, 16
 ; SI-NEXT:    s_lshr_b32 s93, s92, 16
-; SI-NEXT:    s_lshr_b32 s31, s95, 16
-; SI-NEXT:    s_lshr_b32 s68, s34, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s95, 16
+; SI-NEXT:    s_lshr_b32 s34, s30, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_3
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s48, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s94, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s34, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s95, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s92, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -22789,11 +23102,20 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB35_4
-; SI-NEXT:  .LBB35_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s87
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s85
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s86
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s84
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
@@ -22803,14 +23125,14 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s85
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s83
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s84
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s82
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
@@ -22820,7 +23142,7 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v5, s19
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s83
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s81
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s20
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
@@ -22829,11 +23151,11 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s80
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s21
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, s71
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
@@ -22844,7 +23166,7 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s22
 ; SI-NEXT:    v_or_b32_e32 v5, v6, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s80
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, s70
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s23
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
@@ -22853,11 +23175,11 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
 ; SI-NEXT:    v_or_b32_e32 v6, v8, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s69
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s24
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v10, s68
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
@@ -22868,7 +23190,7 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v11, s25
 ; SI-NEXT:    v_or_b32_e32 v8, v9, v8
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v10
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v10, s35
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s26
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
 ; SI-NEXT:    v_cvt_f16_f32_e32 v11, v11
@@ -22877,11 +23199,11 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
 ; SI-NEXT:    v_or_b32_e32 v9, v11, v9
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, s31
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
 ; SI-NEXT:    v_or_b32_e32 v10, v12, v10
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s27
-; SI-NEXT:    v_cvt_f32_f16_e32 v13, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v13, vcc_lo
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
 ; SI-NEXT:    v_cvt_f16_f32_e32 v11, v11
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
@@ -22901,11 +23223,11 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_or_b32_e32 v12, v14, v12
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s34
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
 ; SI-NEXT:    v_or_b32_e32 v13, v15, v13
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s34
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, vcc_hi
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
 ; SI-NEXT:    v_cvt_f16_f32_e32 v14, v14
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
@@ -23015,11 +23337,8 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v26, v27, v26
 ; SI-NEXT:    v_lshlrev_b32_e32 v27, 16, v28
 ; SI-NEXT:    v_or_b32_e32 v27, v29, v27
-; SI-NEXT:    s_branch .LBB35_5
-; SI-NEXT:  .LBB35_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB35_2
-; SI-NEXT:  .LBB35_4:
+; SI-NEXT:    s_branch .LBB35_6
+; SI-NEXT:  .LBB35_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -23052,11 +23371,9 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB35_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 30
-; SI-NEXT:    v_readlane_b32 s31, v32, 31
-; SI-NEXT:    v_readlane_b32 s87, v32, 29
-; SI-NEXT:    v_readlane_b32 s86, v32, 28
+; SI-NEXT:  .LBB35_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 28
+; SI-NEXT:    v_readlane_b32 s31, v32, 29
 ; SI-NEXT:    v_readlane_b32 s85, v32, 27
 ; SI-NEXT:    v_readlane_b32 s84, v32, 26
 ; SI-NEXT:    v_readlane_b32 s83, v32, 25
@@ -23130,12 +23447,9 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v32, s87, 29
 ; VI-NEXT:    v_writelane_b32 v32, s30, 30
 ; VI-NEXT:    v_writelane_b32 v32, s31, 31
+; VI-NEXT:    v_readfirstlane_b32 s6, v13
 ; VI-NEXT:    v_readfirstlane_b32 s8, v12
-; VI-NEXT:    s_lshr_b32 s15, s8, 16
 ; VI-NEXT:    v_readfirstlane_b32 s10, v11
-; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
-; VI-NEXT:    v_readfirstlane_b32 s6, v13
-; VI-NEXT:    s_lshr_b32 s61, s10, 16
 ; VI-NEXT:    v_readfirstlane_b32 s12, v10
 ; VI-NEXT:    v_readfirstlane_b32 s14, v9
 ; VI-NEXT:    v_readfirstlane_b32 s72, v8
@@ -23143,178 +23457,198 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s76, v6
 ; VI-NEXT:    v_readfirstlane_b32 s79, v5
 ; VI-NEXT:    v_readfirstlane_b32 s91, v4
-; VI-NEXT:    v_readfirstlane_b32 s34, v3
-; VI-NEXT:    v_readfirstlane_b32 s69, v2
-; VI-NEXT:    v_readfirstlane_b32 s80, v1
-; VI-NEXT:    v_readfirstlane_b32 s83, v0
-; VI-NEXT:    v_writelane_b32 v33, s15, 0
+; VI-NEXT:    v_readfirstlane_b32 s30, v3
+; VI-NEXT:    v_readfirstlane_b32 s35, v2
+; VI-NEXT:    v_readfirstlane_b32 s70, v1
+; VI-NEXT:    v_readfirstlane_b32 s81, v0
 ; VI-NEXT:    s_lshr_b32 s56, s29, 16
-; VI-NEXT:    s_lshr_b32 s75, s28, 16
+; VI-NEXT:    s_lshr_b32 s61, s28, 16
 ; VI-NEXT:    s_lshr_b32 s90, s27, 16
-; VI-NEXT:    s_lshr_b32 s31, s26, 16
-; VI-NEXT:    s_lshr_b32 s68, s25, 16
-; VI-NEXT:    s_lshr_b32 s70, s24, 16
-; VI-NEXT:    s_lshr_b32 s81, s23, 16
-; VI-NEXT:    s_lshr_b32 s84, s22, 16
-; VI-NEXT:    s_lshr_b32 s86, s21, 16
-; VI-NEXT:    s_lshr_b32 s87, s20, 16
-; VI-NEXT:    s_lshr_b32 s7, s19, 16
-; VI-NEXT:    s_lshr_b32 s9, s18, 16
-; VI-NEXT:    s_lshr_b32 s11, s17, 16
-; VI-NEXT:    s_lshr_b32 s13, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s26, 16
+; VI-NEXT:    s_lshr_b32 s34, s25, 16
+; VI-NEXT:    s_lshr_b32 s68, s24, 16
+; VI-NEXT:    s_lshr_b32 s71, s23, 16
+; VI-NEXT:    s_lshr_b32 s82, s22, 16
+; VI-NEXT:    s_lshr_b32 s84, s21, 16
+; VI-NEXT:    s_lshr_b32 s85, s20, 16
+; VI-NEXT:    s_lshr_b32 s86, s19, 16
+; VI-NEXT:    s_lshr_b32 s87, s18, 16
+; VI-NEXT:    s_lshr_b32 s7, s17, 16
+; VI-NEXT:    s_lshr_b32 s9, s16, 16
 ; VI-NEXT:    s_lshr_b32 s63, s6, 16
-; VI-NEXT:    s_lshr_b32 s60, s12, 16
+; VI-NEXT:    s_lshr_b32 s11, s8, 16
+; VI-NEXT:    s_lshr_b32 s13, s10, 16
+; VI-NEXT:    s_lshr_b32 s15, s12, 16
 ; VI-NEXT:    s_lshr_b32 s59, s14, 16
 ; VI-NEXT:    s_lshr_b32 s58, s72, 16
 ; VI-NEXT:    s_lshr_b32 s57, s74, 16
-; VI-NEXT:    s_lshr_b32 s62, s76, 16
+; VI-NEXT:    s_lshr_b32 s60, s76, 16
 ; VI-NEXT:    s_lshr_b32 s89, s79, 16
-; VI-NEXT:    s_lshr_b32 s30, s91, 16
-; VI-NEXT:    s_lshr_b32 s35, s34, 16
-; VI-NEXT:    s_lshr_b32 s71, s69, 16
-; VI-NEXT:    s_lshr_b32 s82, s80, 16
-; VI-NEXT:    s_lshr_b32 s85, s83, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s91, 16
+; VI-NEXT:    s_lshr_b32 s31, s30, 16
+; VI-NEXT:    s_lshr_b32 s69, s35, 16
+; VI-NEXT:    s_lshr_b32 s80, s70, 16
+; VI-NEXT:    s_lshr_b32 s83, s81, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
-; VI-NEXT:    v_writelane_b32 v33, s61, 1
+; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    v_writelane_b32 v33, s60, 2
-; VI-NEXT:    v_writelane_b32 v33, s59, 3
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    v_writelane_b32 v33, s15, 0
+; VI-NEXT:    v_writelane_b32 v33, s59, 1
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s13, 16
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s9, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s7, 16
+; VI-NEXT:    s_lshl_b32 s5, s86, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s11, 16
+; VI-NEXT:    s_lshl_b32 s41, s7, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
-; VI-NEXT:    s_lshl_b32 s5, s75, 16
+; VI-NEXT:    s_lshl_b32 s5, s61, 16
 ; VI-NEXT:    s_or_b32 s48, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s56, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s83
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s81
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s80
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s70
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s69
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s35
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s79
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s76
-; VI-NEXT:    s_lshl_b32 s5, s62, 16
-; VI-NEXT:    s_mov_b32 s77, s56
+; VI-NEXT:    s_lshl_b32 s5, s60, 16
+; VI-NEXT:    s_mov_b32 s73, s56
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s74
 ; VI-NEXT:    s_lshl_b32 s5, s57, 16
-; VI-NEXT:    s_mov_b32 s73, s75
-; VI-NEXT:    s_mov_b32 s75, s57
+; VI-NEXT:    s_mov_b32 s78, s57
 ; VI-NEXT:    s_or_b32 s57, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s72
 ; VI-NEXT:    s_lshl_b32 s5, s58, 16
-; VI-NEXT:    s_mov_b32 s78, s58
+; VI-NEXT:    s_mov_b32 s77, s58
 ; VI-NEXT:    s_or_b32 s58, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s14
 ; VI-NEXT:    s_lshl_b32 s5, s59, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s12
-; VI-NEXT:    s_lshl_b32 s5, s60, 16
+; VI-NEXT:    s_lshl_b32 s5, s15, 16
+; VI-NEXT:    s_mov_b32 s88, s60
 ; VI-NEXT:    s_or_b32 s60, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s10
-; VI-NEXT:    s_lshl_b32 s5, s61, 16
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
+; VI-NEXT:    s_mov_b32 s75, s61
 ; VI-NEXT:    s_or_b32 s61, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s8
-; VI-NEXT:    s_lshl_b32 s5, s15, 16
-; VI-NEXT:    s_mov_b32 s88, s62
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_or_b32 s62, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s63, 16
-; VI-NEXT:    s_mov_b32 s15, s63
+; VI-NEXT:    s_mov_b32 s15, s13
+; VI-NEXT:    s_mov_b32 s13, s11
+; VI-NEXT:    s_mov_b32 s11, s63
 ; VI-NEXT:    s_or_b32 s63, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b32 s75, s61
+; VI-NEXT:    s_mov_b32 s88, s60
+; VI-NEXT:    s_mov_b32 s73, s56
+; VI-NEXT:    s_mov_b32 s78, s57
+; VI-NEXT:    s_mov_b32 s77, s58
+; VI-NEXT:    s_mov_b32 s15, s13
+; VI-NEXT:    s_mov_b32 s13, s11
+; VI-NEXT:    s_mov_b32 s11, s63
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v27, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s13
-; VI-NEXT:    v_mov_b32_e32 v2, s11
+; VI-NEXT:    v_mov_b32_e32 v0, s9
+; VI-NEXT:    v_mov_b32_e32 v2, s7
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v27
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v27
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s9
+; VI-NEXT:    v_mov_b32_e32 v2, s87
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v27
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s7
+; VI-NEXT:    v_mov_b32_e32 v3, s86
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v27
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s87
+; VI-NEXT:    v_mov_b32_e32 v4, s85
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v27
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s86
+; VI-NEXT:    v_mov_b32_e32 v5, s84
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v27
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s84
+; VI-NEXT:    v_mov_b32_e32 v6, s82
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v27
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s81
+; VI-NEXT:    v_mov_b32_e32 v7, s71
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v27
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s70
+; VI-NEXT:    v_mov_b32_e32 v8, s68
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v27
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
-; VI-NEXT:    v_mov_b32_e32 v9, s68
+; VI-NEXT:    v_mov_b32_e32 v9, s34
 ; VI-NEXT:    v_add_f16_sdwa v9, v9, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v10, s25, v27
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
-; VI-NEXT:    v_mov_b32_e32 v10, s31
+; VI-NEXT:    v_mov_b32_e32 v10, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v10, v10, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v11, s26, v27
 ; VI-NEXT:    v_or_b32_e32 v10, v11, v10
@@ -23322,31 +23656,31 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_sdwa v11, v11, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v12, s27, v27
 ; VI-NEXT:    v_or_b32_e32 v11, v12, v11
-; VI-NEXT:    v_mov_b32_e32 v12, s73
+; VI-NEXT:    v_mov_b32_e32 v12, s75
 ; VI-NEXT:    v_add_f16_sdwa v12, v12, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v13, s28, v27
 ; VI-NEXT:    v_or_b32_e32 v12, v13, v12
-; VI-NEXT:    v_mov_b32_e32 v13, s77
+; VI-NEXT:    v_mov_b32_e32 v13, s73
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v27
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s85
+; VI-NEXT:    v_mov_b32_e32 v14, s83
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s83, v27
+; VI-NEXT:    v_add_f16_e32 v15, s81, v27
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s82
+; VI-NEXT:    v_mov_b32_e32 v15, s80
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v16, s80, v27
+; VI-NEXT:    v_add_f16_e32 v16, s70, v27
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
-; VI-NEXT:    v_mov_b32_e32 v16, s71
+; VI-NEXT:    v_mov_b32_e32 v16, s69
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v17, s69, v27
+; VI-NEXT:    v_add_f16_e32 v17, s35, v27
 ; VI-NEXT:    v_or_b32_e32 v16, v17, v16
-; VI-NEXT:    v_mov_b32_e32 v17, s35
+; VI-NEXT:    v_mov_b32_e32 v17, s31
 ; VI-NEXT:    v_add_f16_sdwa v17, v17, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v18, s34, v27
+; VI-NEXT:    v_add_f16_e32 v18, s30, v27
 ; VI-NEXT:    v_or_b32_e32 v17, v18, v17
-; VI-NEXT:    v_mov_b32_e32 v18, s30
+; VI-NEXT:    v_mov_b32_e32 v18, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v18, v18, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v19, s91, v27
 ; VI-NEXT:    v_or_b32_e32 v18, v19, v18
@@ -23358,49 +23692,38 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; VI-NEXT:    v_add_f16_sdwa v20, v20, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v21, s76, v27
 ; VI-NEXT:    v_or_b32_e32 v20, v21, v20
-; VI-NEXT:    v_mov_b32_e32 v21, s75
+; VI-NEXT:    v_mov_b32_e32 v21, s78
 ; VI-NEXT:    v_add_f16_sdwa v21, v21, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v22, s74, v27
 ; VI-NEXT:    v_or_b32_e32 v21, v22, v21
-; VI-NEXT:    v_mov_b32_e32 v22, s78
+; VI-NEXT:    v_mov_b32_e32 v22, s77
 ; VI-NEXT:    v_add_f16_sdwa v22, v22, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v23, s72, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 3
+; VI-NEXT:    v_readlane_b32 s4, v33, 1
 ; VI-NEXT:    v_or_b32_e32 v22, v23, v22
 ; VI-NEXT:    v_mov_b32_e32 v23, s4
 ; VI-NEXT:    v_add_f16_sdwa v23, v23, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v24, s14, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 2
+; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v23, v24, v23
 ; VI-NEXT:    v_mov_b32_e32 v24, s4
 ; VI-NEXT:    v_add_f16_sdwa v24, v24, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v25, s12, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 1
 ; VI-NEXT:    v_or_b32_e32 v24, v25, v24
-; VI-NEXT:    v_mov_b32_e32 v25, s4
+; VI-NEXT:    v_mov_b32_e32 v25, s15
 ; VI-NEXT:    v_add_f16_sdwa v25, v25, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v26, s10, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v25, v26, v25
-; VI-NEXT:    v_mov_b32_e32 v26, s4
+; VI-NEXT:    v_mov_b32_e32 v26, s13
 ; VI-NEXT:    v_add_f16_sdwa v26, v26, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v28, s8, v27
 ; VI-NEXT:    v_or_b32_e32 v26, v28, v26
-; VI-NEXT:    v_mov_b32_e32 v28, s15
+; VI-NEXT:    v_mov_b32_e32 v28, s11
 ; VI-NEXT:    v_add_f16_sdwa v28, v28, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v27, s6, v27
 ; VI-NEXT:    v_or_b32_e32 v27, v27, v28
-; VI-NEXT:    s_branch .LBB35_5
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    s_mov_b32 s73, s75
-; VI-NEXT:    s_mov_b32 s88, s62
-; VI-NEXT:    s_mov_b32 s77, s56
-; VI-NEXT:    s_mov_b32 s75, s57
-; VI-NEXT:    s_mov_b32 s78, s58
-; VI-NEXT:    s_mov_b32 s15, s63
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:    s_branch .LBB35_6
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -23433,7 +23756,7 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB35_5: ; %end
+; VI-NEXT:  .LBB35_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 30
 ; VI-NEXT:    v_readlane_b32 s31, v32, 31
 ; VI-NEXT:    v_readlane_b32 s87, v32, 29
@@ -23563,10 +23886,18 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s74
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s62, s62, s73
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s72
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v27, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v27 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v27 op_sel_hi:[1,0]
@@ -23596,10 +23927,8 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v25, s61, v27 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v26, s62, v27 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v27, s63, v27 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB35_5
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:    s_branch .LBB35_6
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -23632,7 +23961,7 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB35_5: ; %end
+; GFX9-NEXT:  .LBB35_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -23723,11 +24052,16 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s26, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -23757,8 +24091,6 @@ define inreg <28 x float> @bitcast_v56f16_to_v28f32_scalar(<56 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v26, 0x200, s26 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v27, 0x200, s27 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -24003,10 +24335,18 @@ define inreg <14 x double> @bitcast_v14i64_to_v14f64_scalar(<14 x i64> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s42, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s43, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_4
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB37_3
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
@@ -24035,7 +24375,7 @@ define inreg <14 x double> @bitcast_v14i64_to_v14f64_scalar(<14 x i64> inreg %a,
 ; SI-NEXT:    s_addc_u32 s8, s8, 0
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
-; SI-NEXT:  .LBB37_3: ; %end
+; SI-NEXT:  .LBB37_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -24065,8 +24405,6 @@ define inreg <14 x double> @bitcast_v14i64_to_v14f64_scalar(<14 x i64> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v26, s7
 ; SI-NEXT:    v_mov_b32_e32 v27, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB37_4:
-; SI-NEXT:    s_branch .LBB37_2
 ;
 ; VI-LABEL: bitcast_v14i64_to_v14f64_scalar:
 ; VI:       ; %bb.0:
@@ -24087,10 +24425,18 @@ define inreg <14 x double> @bitcast_v14i64_to_v14f64_scalar(<14 x i64> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s42, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s43, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_4
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_3
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -24119,7 +24465,7 @@ define inreg <14 x double> @bitcast_v14i64_to_v14f64_scalar(<14 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s8, s8, 0
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
-; VI-NEXT:  .LBB37_3: ; %end
+; VI-NEXT:  .LBB37_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -24149,8 +24495,6 @@ define inreg <14 x double> @bitcast_v14i64_to_v14f64_scalar(<14 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v26, s7
 ; VI-NEXT:    v_mov_b32_e32 v27, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_4:
-; VI-NEXT:    s_branch .LBB37_2
 ;
 ; GFX9-LABEL: bitcast_v14i64_to_v14f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -24171,10 +24515,18 @@ define inreg <14 x double> @bitcast_v14i64_to_v14f64_scalar(<14 x i64> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s42, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s43, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_3
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -24203,7 +24555,7 @@ define inreg <14 x double> @bitcast_v14i64_to_v14f64_scalar(<14 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s8, s8, 0
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
-; GFX9-NEXT:  .LBB37_3: ; %end
+; GFX9-NEXT:  .LBB37_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -24233,8 +24585,6 @@ define inreg <14 x double> @bitcast_v14i64_to_v14f64_scalar(<14 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_4:
-; GFX9-NEXT:    s_branch .LBB37_2
 ;
 ; GFX11-LABEL: bitcast_v14i64_to_v14f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -24252,11 +24602,16 @@ define inreg <14 x double> @bitcast_v14i64_to_v14f64_scalar(<14 x i64> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s13, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s14, 0
 ; GFX11-NEXT:    s_mov_b32 s14, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_3
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s14, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s14, s14, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s14, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s14, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -24285,7 +24640,7 @@ define inreg <14 x double> @bitcast_v14i64_to_v14f64_scalar(<14 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
-; GFX11-NEXT:  .LBB37_3: ; %end
+; GFX11-NEXT:  .LBB37_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -24301,8 +24656,6 @@ define inreg <14 x double> @bitcast_v14i64_to_v14f64_scalar(<14 x i64> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s7 :: v_dual_mov_b32 v25, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s5 :: v_dual_mov_b32 v27, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_4:
-; GFX11-NEXT:    s_branch .LBB37_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -24496,10 +24849,18 @@ define inreg <14 x i64> @bitcast_v14f64_to_v14i64_scalar(<14 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_3
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB39_4
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -24514,10 +24875,8 @@ define inreg <14 x i64> @bitcast_v14f64_to_v14i64_scalar(<14 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; SI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; SI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
-; SI-NEXT:    s_branch .LBB39_5
-; SI-NEXT:  .LBB39_3:
-; SI-NEXT:    s_branch .LBB39_2
-; SI-NEXT:  .LBB39_4:
+; SI-NEXT:    s_branch .LBB39_6
+; SI-NEXT:  .LBB39_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -24550,7 +24909,7 @@ define inreg <14 x i64> @bitcast_v14f64_to_v14i64_scalar(<14 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB39_5: ; %end
+; SI-NEXT:  .LBB39_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
 ; SI-NEXT:    v_readlane_b32 s54, v32, 10
 ; SI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -24617,10 +24976,18 @@ define inreg <14 x i64> @bitcast_v14f64_to_v14i64_scalar(<14 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_3
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_4
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -24635,10 +25002,8 @@ define inreg <14 x i64> @bitcast_v14f64_to_v14i64_scalar(<14 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; VI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; VI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
-; VI-NEXT:    s_branch .LBB39_5
-; VI-NEXT:  .LBB39_3:
-; VI-NEXT:    s_branch .LBB39_2
-; VI-NEXT:  .LBB39_4:
+; VI-NEXT:    s_branch .LBB39_6
+; VI-NEXT:  .LBB39_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -24671,7 +25036,7 @@ define inreg <14 x i64> @bitcast_v14f64_to_v14i64_scalar(<14 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB39_5: ; %end
+; VI-NEXT:  .LBB39_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
 ; VI-NEXT:    v_readlane_b32 s54, v32, 10
 ; VI-NEXT:    v_readlane_b32 s53, v32, 9
@@ -24738,10 +25103,18 @@ define inreg <14 x i64> @bitcast_v14f64_to_v14i64_scalar(<14 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_4
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -24756,10 +25129,8 @@ define inreg <14 x i64> @bitcast_v14f64_to_v14i64_scalar(<14 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[22:23], s[58:59], 1.0
 ; GFX9-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; GFX9-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
-; GFX9-NEXT:    s_branch .LBB39_5
-; GFX9-NEXT:  .LBB39_3:
-; GFX9-NEXT:    s_branch .LBB39_2
-; GFX9-NEXT:  .LBB39_4:
+; GFX9-NEXT:    s_branch .LBB39_6
+; GFX9-NEXT:  .LBB39_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -24792,7 +25163,7 @@ define inreg <14 x i64> @bitcast_v14f64_to_v14i64_scalar(<14 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB39_5: ; %end
+; GFX9-NEXT:  .LBB39_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -24860,11 +25231,16 @@ define inreg <14 x i64> @bitcast_v14f64_to_v14i64_scalar(<14 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -24880,8 +25256,6 @@ define inreg <14 x i64> @bitcast_v14f64_to_v14i64_scalar(<14 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; GFX11-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; GFX11-NEXT:    s_branch .LBB39_5
-; GFX11-NEXT:  .LBB39_3:
-; GFX11-NEXT:    s_branch .LBB39_2
 ; GFX11-NEXT:  .LBB39_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -25802,10 +26176,8 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v28, s49, 7
 ; SI-NEXT:    v_writelane_b32 v28, s50, 8
 ; SI-NEXT:    v_writelane_b32 v28, s51, 9
-; SI-NEXT:    v_writelane_b32 v28, s52, 10
-; SI-NEXT:    v_writelane_b32 v28, s53, 11
-; SI-NEXT:    v_writelane_b32 v28, s30, 12
-; SI-NEXT:    v_writelane_b32 v28, s31, 13
+; SI-NEXT:    v_writelane_b32 v28, s30, 10
+; SI-NEXT:    v_writelane_b32 v28, s31, 11
 ; SI-NEXT:    v_readfirstlane_b32 s40, v14
 ; SI-NEXT:    v_readfirstlane_b32 s5, v13
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
@@ -25822,22 +26194,22 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s41, v1
 ; SI-NEXT:    s_cmp_lg_u32 s40, 0
 ; SI-NEXT:    v_readfirstlane_b32 s40, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_4
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s30, s5, 16
-; SI-NEXT:    s_lshr_b32 s31, s7, 16
-; SI-NEXT:    s_lshr_b32 s34, s9, 16
-; SI-NEXT:    s_lshr_b32 s35, s11, 16
-; SI-NEXT:    s_lshr_b32 s36, s13, 16
-; SI-NEXT:    s_lshr_b32 s37, s15, 16
-; SI-NEXT:    s_lshr_b32 s38, s41, 16
-; SI-NEXT:    s_lshr_b32 s39, s29, 16
-; SI-NEXT:    s_lshr_b32 s48, s27, 16
-; SI-NEXT:    s_lshr_b32 s49, s25, 16
-; SI-NEXT:    s_lshr_b32 s50, s23, 16
-; SI-NEXT:    s_lshr_b32 s51, s21, 16
-; SI-NEXT:    s_lshr_b32 s52, s19, 16
-; SI-NEXT:    s_lshr_b32 s53, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s5, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s7, 16
+; SI-NEXT:    s_lshr_b32 s30, s9, 16
+; SI-NEXT:    s_lshr_b32 s31, s11, 16
+; SI-NEXT:    s_lshr_b32 s34, s13, 16
+; SI-NEXT:    s_lshr_b32 s35, s15, 16
+; SI-NEXT:    s_lshr_b32 s36, s41, 16
+; SI-NEXT:    s_lshr_b32 s37, s29, 16
+; SI-NEXT:    s_lshr_b32 s38, s27, 16
+; SI-NEXT:    s_lshr_b32 s39, s25, 16
+; SI-NEXT:    s_lshr_b32 s48, s23, 16
+; SI-NEXT:    s_lshr_b32 s49, s21, 16
+; SI-NEXT:    s_lshr_b32 s50, s19, 16
+; SI-NEXT:    s_lshr_b32 s51, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 16
@@ -25852,8 +26224,44 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB41_3
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[94:95], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[94:95], -1
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[94:95], s[94:95], exec
+; SI-NEXT:    s_cselect_b32 s43, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s43, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -25882,20 +26290,20 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:    s_lshr_b32 s30, s5, 16
-; SI-NEXT:    s_lshr_b32 s31, s7, 16
-; SI-NEXT:    s_lshr_b32 s34, s9, 16
-; SI-NEXT:    s_lshr_b32 s35, s11, 16
-; SI-NEXT:    s_lshr_b32 s36, s13, 16
-; SI-NEXT:    s_lshr_b32 s37, s15, 16
-; SI-NEXT:    s_lshr_b32 s38, s41, 16
-; SI-NEXT:    s_lshr_b32 s39, s29, 16
-; SI-NEXT:    s_lshr_b32 s48, s27, 16
-; SI-NEXT:    s_lshr_b32 s49, s25, 16
-; SI-NEXT:    s_lshr_b32 s50, s23, 16
-; SI-NEXT:    s_lshr_b32 s51, s21, 16
-; SI-NEXT:    s_lshr_b32 s52, s19, 16
-; SI-NEXT:    s_lshr_b32 s53, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s5, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s7, 16
+; SI-NEXT:    s_lshr_b32 s30, s9, 16
+; SI-NEXT:    s_lshr_b32 s31, s11, 16
+; SI-NEXT:    s_lshr_b32 s34, s13, 16
+; SI-NEXT:    s_lshr_b32 s35, s15, 16
+; SI-NEXT:    s_lshr_b32 s36, s41, 16
+; SI-NEXT:    s_lshr_b32 s37, s29, 16
+; SI-NEXT:    s_lshr_b32 s38, s27, 16
+; SI-NEXT:    s_lshr_b32 s39, s25, 16
+; SI-NEXT:    s_lshr_b32 s48, s23, 16
+; SI-NEXT:    s_lshr_b32 s49, s21, 16
+; SI-NEXT:    s_lshr_b32 s50, s19, 16
+; SI-NEXT:    s_lshr_b32 s51, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 16
@@ -25910,78 +26318,78 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[16:17], 16
-; SI-NEXT:  .LBB41_3: ; %end
+; SI-NEXT:  .LBB41_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s43, s92, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s43
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s53, 16
+; SI-NEXT:    s_lshl_b32 s43, s51, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s43
 ; SI-NEXT:    s_lshl_b32 s43, s90, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s18, s18, s43
 ; SI-NEXT:    s_and_b32 s19, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s52, 16
+; SI-NEXT:    s_lshl_b32 s43, s50, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s43
 ; SI-NEXT:    s_lshl_b32 s43, s88, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s20, s20, s43
 ; SI-NEXT:    s_and_b32 s21, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s51, 16
+; SI-NEXT:    s_lshl_b32 s43, s49, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s43
 ; SI-NEXT:    s_lshl_b32 s43, s78, 16
 ; SI-NEXT:    s_and_b32 s22, s22, 0xffff
 ; SI-NEXT:    s_or_b32 s22, s22, s43
 ; SI-NEXT:    s_and_b32 s23, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s50, 16
+; SI-NEXT:    s_lshl_b32 s43, s48, 16
 ; SI-NEXT:    s_or_b32 s23, s23, s43
 ; SI-NEXT:    s_and_b32 s24, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s76, 16
 ; SI-NEXT:    s_or_b32 s24, s24, s43
 ; SI-NEXT:    s_and_b32 s25, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s49, 16
+; SI-NEXT:    s_lshl_b32 s43, s39, 16
 ; SI-NEXT:    s_or_b32 s25, s25, s43
 ; SI-NEXT:    s_and_b32 s26, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s74, 16
 ; SI-NEXT:    s_or_b32 s26, s26, s43
 ; SI-NEXT:    s_and_b32 s27, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s48, 16
+; SI-NEXT:    s_lshl_b32 s43, s38, 16
 ; SI-NEXT:    s_or_b32 s27, s27, s43
 ; SI-NEXT:    s_and_b32 s28, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s72, 16
 ; SI-NEXT:    s_or_b32 s28, s28, s43
 ; SI-NEXT:    s_and_b32 s29, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s39, 16
+; SI-NEXT:    s_lshl_b32 s43, s37, 16
 ; SI-NEXT:    s_or_b32 s29, s29, s43
 ; SI-NEXT:    s_and_b32 s40, s40, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s62, 16
 ; SI-NEXT:    s_or_b32 s40, s40, s43
 ; SI-NEXT:    s_and_b32 s41, s41, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s38, 16
+; SI-NEXT:    s_lshl_b32 s43, s36, 16
 ; SI-NEXT:    s_or_b32 s41, s41, s43
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s60, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s43
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s37, 16
+; SI-NEXT:    s_lshl_b32 s43, s35, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s43
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s58, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s43
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s36, 16
+; SI-NEXT:    s_lshl_b32 s43, s34, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s43
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s56, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s43
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s35, 16
+; SI-NEXT:    s_lshl_b32 s43, s31, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s43
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s46, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s43
 ; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s34, 16
+; SI-NEXT:    s_lshl_b32 s43, s30, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s43
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s44, 16
@@ -25989,13 +26397,13 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s42, s42, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s43
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s31, 16
+; SI-NEXT:    s_lshl_b32 s43, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s42
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_lshl_b32 s42, s30, 16
+; SI-NEXT:    s_lshl_b32 s42, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s43
 ; SI-NEXT:    s_or_b32 s5, s5, s42
-; SI-NEXT:    v_readlane_b32 s30, v28, 12
+; SI-NEXT:    v_readlane_b32 s30, v28, 10
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -26024,9 +26432,7 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v25, s7
 ; SI-NEXT:    v_mov_b32_e32 v26, s4
 ; SI-NEXT:    v_mov_b32_e32 v27, s5
-; SI-NEXT:    v_readlane_b32 s31, v28, 13
-; SI-NEXT:    v_readlane_b32 s53, v28, 11
-; SI-NEXT:    v_readlane_b32 s52, v28, 10
+; SI-NEXT:    v_readlane_b32 s31, v28, 11
 ; SI-NEXT:    v_readlane_b32 s51, v28, 9
 ; SI-NEXT:    v_readlane_b32 s50, v28, 8
 ; SI-NEXT:    v_readlane_b32 s49, v28, 7
@@ -26042,36 +26448,6 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB41_4:
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    s_branch .LBB41_2
 ;
 ; VI-LABEL: bitcast_v14i64_to_v56i16_scalar:
 ; VI:       ; %bb.0:
@@ -26079,10 +26455,8 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_store_dword v28, off, s[0:3], s32 ; 4-byte Folded Spill
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
-; VI-NEXT:    v_writelane_b32 v28, s34, 0
-; VI-NEXT:    v_writelane_b32 v28, s35, 1
-; VI-NEXT:    v_writelane_b32 v28, s30, 2
-; VI-NEXT:    v_writelane_b32 v28, s31, 3
+; VI-NEXT:    v_writelane_b32 v28, s30, 0
+; VI-NEXT:    v_writelane_b32 v28, s31, 1
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
 ; VI-NEXT:    v_readfirstlane_b32 s6, v13
 ; VI-NEXT:    v_readfirstlane_b32 s7, v12
@@ -26099,7 +26473,7 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s42, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s43, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_4
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s44, s6, 16
 ; VI-NEXT:    s_lshr_b32 s45, s7, 16
@@ -26125,12 +26499,48 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB41_3
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -26183,22 +26593,22 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
-; VI-NEXT:  .LBB41_3: ; %end
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
+; VI-NEXT:  .LBB41_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_and_b32 s5, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s16, s34, 16
+; VI-NEXT:    s_lshl_b32 s16, s30, 16
 ; VI-NEXT:    s_or_b32 s5, s5, s16
 ; VI-NEXT:    s_and_b32 s16, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s17, s31, 16
+; VI-NEXT:    s_lshl_b32 s17, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s16, s16, s17
 ; VI-NEXT:    s_and_b32 s17, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s18, s30, 16
+; VI-NEXT:    s_lshl_b32 s18, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s17, s17, s18
 ; VI-NEXT:    s_and_b32 s18, 0xffff, s20
 ; VI-NEXT:    s_lshl_b32 s19, s91, 16
@@ -26272,7 +26682,7 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s6, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s42, s44, 16
 ; VI-NEXT:    s_or_b32 s6, s6, s42
-; VI-NEXT:    v_readlane_b32 s30, v28, 2
+; VI-NEXT:    v_readlane_b32 s30, v28, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    v_mov_b32_e32 v1, s5
 ; VI-NEXT:    v_mov_b32_e32 v2, s16
@@ -26301,44 +26711,12 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v25, s8
 ; VI-NEXT:    v_mov_b32_e32 v26, s7
 ; VI-NEXT:    v_mov_b32_e32 v27, s6
-; VI-NEXT:    v_readlane_b32 s31, v28, 3
-; VI-NEXT:    v_readlane_b32 s35, v28, 1
-; VI-NEXT:    v_readlane_b32 s34, v28, 0
+; VI-NEXT:    v_readlane_b32 s31, v28, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v28, off, s[0:3], s32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_4:
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    s_branch .LBB41_2
 ;
 ; GFX9-LABEL: bitcast_v14i64_to_v56i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -26359,7 +26737,7 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s42, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s43, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s44, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s45, s7, 16
@@ -26389,8 +26767,44 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s93, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_3
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -26447,7 +26861,7 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s93, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s16, 16
-; GFX9-NEXT:  .LBB41_3: ; %end
+; GFX9-NEXT:  .LBB41_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s95
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s94
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s93
@@ -26505,36 +26919,6 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    s_branch .LBB41_2
 ;
 ; GFX11-LABEL: bitcast_v14i64_to_v56i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -26552,7 +26936,7 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s13, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s14, 0
 ; GFX11-NEXT:    s_mov_b32 s90, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s14, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s15, s5, 16
@@ -26582,9 +26966,44 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s79, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s88, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s89, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s90
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_3
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB41_3
+; GFX11-NEXT:  .LBB41_2:
+; GFX11-NEXT:    s_mov_b32 s90, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr89
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr79
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:  .LBB41_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s90, s90, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s90, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s90, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -26641,7 +27060,7 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s79, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s88, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s89, s0, 16
-; GFX11-NEXT:  .LBB41_3: ; %end
+; GFX11-NEXT:  .LBB41_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s89
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s88
@@ -26686,36 +27105,6 @@ define inreg <56 x i16> @bitcast_v14i64_to_v56i16_scalar(<14 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s7 :: v_dual_mov_b32 v25, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s5 :: v_dual_mov_b32 v27, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr89
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr79
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    s_branch .LBB41_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -28014,10 +28403,8 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v28, s83, 25
 ; SI-NEXT:    v_writelane_b32 v28, s84, 26
 ; SI-NEXT:    v_writelane_b32 v28, s85, 27
-; SI-NEXT:    v_writelane_b32 v28, s86, 28
-; SI-NEXT:    v_writelane_b32 v28, s87, 29
-; SI-NEXT:    v_writelane_b32 v28, s30, 30
-; SI-NEXT:    v_writelane_b32 v28, s31, 31
+; SI-NEXT:    v_writelane_b32 v28, s30, 28
+; SI-NEXT:    v_writelane_b32 v28, s31, 29
 ; SI-NEXT:    v_readfirstlane_b32 s7, v13
 ; SI-NEXT:    v_readfirstlane_b32 s9, v12
 ; SI-NEXT:    v_readfirstlane_b32 s11, v11
@@ -28029,23 +28416,23 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s88, v5
 ; SI-NEXT:    v_readfirstlane_b32 s91, v4
 ; SI-NEXT:    v_readfirstlane_b32 s94, v3
-; SI-NEXT:    v_readfirstlane_b32 s31, v2
-; SI-NEXT:    v_readfirstlane_b32 s69, v1
-; SI-NEXT:    v_readfirstlane_b32 s80, v0
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v2
+; SI-NEXT:    v_readfirstlane_b32 s35, v1
+; SI-NEXT:    v_readfirstlane_b32 s70, v0
 ; SI-NEXT:    s_lshr_b32 s78, s29, 16
 ; SI-NEXT:    s_lshr_b32 s89, s28, 16
 ; SI-NEXT:    s_lshr_b32 s92, s27, 16
 ; SI-NEXT:    s_lshr_b32 s95, s26, 16
-; SI-NEXT:    s_lshr_b32 s34, s25, 16
-; SI-NEXT:    s_lshr_b32 s68, s24, 16
-; SI-NEXT:    s_lshr_b32 s70, s23, 16
-; SI-NEXT:    s_lshr_b32 s81, s22, 16
-; SI-NEXT:    s_lshr_b32 s82, s21, 16
-; SI-NEXT:    s_lshr_b32 s83, s20, 16
-; SI-NEXT:    s_lshr_b32 s84, s19, 16
-; SI-NEXT:    s_lshr_b32 s85, s18, 16
-; SI-NEXT:    s_lshr_b32 s86, s17, 16
-; SI-NEXT:    s_lshr_b32 s87, s16, 16
+; SI-NEXT:    s_lshr_b32 s30, s25, 16
+; SI-NEXT:    s_lshr_b32 s34, s24, 16
+; SI-NEXT:    s_lshr_b32 s68, s23, 16
+; SI-NEXT:    s_lshr_b32 s71, s22, 16
+; SI-NEXT:    s_lshr_b32 s80, s21, 16
+; SI-NEXT:    s_lshr_b32 s81, s20, 16
+; SI-NEXT:    s_lshr_b32 s82, s19, 16
+; SI-NEXT:    s_lshr_b32 s83, s18, 16
+; SI-NEXT:    s_lshr_b32 s84, s17, 16
+; SI-NEXT:    s_lshr_b32 s85, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -28057,42 +28444,42 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s79, s88, 16
 ; SI-NEXT:    s_lshr_b32 s90, s91, 16
 ; SI-NEXT:    s_lshr_b32 s93, s94, 16
-; SI-NEXT:    s_lshr_b32 s30, s31, 16
-; SI-NEXT:    s_lshr_b32 s35, s69, 16
-; SI-NEXT:    s_lshr_b32 s71, s80, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, vcc_hi, 16
+; SI-NEXT:    s_lshr_b32 s31, s35, 16
+; SI-NEXT:    s_lshr_b32 s69, s70, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_4
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -28106,14 +28493,14 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s78, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s69, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s35, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -28148,56 +28535,65 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB43_3
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
@@ -28219,20 +28615,20 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s78, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s80, s80, 3
+; SI-NEXT:    s_add_i32 s70, s70, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s69, s69, 3
+; SI-NEXT:    s_add_i32 s35, s35, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s69, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s35, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s31, s31, 3
+; SI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s94, s94, 3
 ; SI-NEXT:    s_add_i32 s52, s4, 0x30000
@@ -28290,8 +28686,8 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s63, s4, 0x30000
-; SI-NEXT:  .LBB43_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v28, 30
+; SI-NEXT:  .LBB43_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v28, 28
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -28320,9 +28716,7 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v25, s61
 ; SI-NEXT:    v_mov_b32_e32 v26, s62
 ; SI-NEXT:    v_mov_b32_e32 v27, s63
-; SI-NEXT:    v_readlane_b32 s31, v28, 31
-; SI-NEXT:    v_readlane_b32 s87, v28, 29
-; SI-NEXT:    v_readlane_b32 s86, v28, 28
+; SI-NEXT:    v_readlane_b32 s31, v28, 29
 ; SI-NEXT:    v_readlane_b32 s85, v28, 27
 ; SI-NEXT:    v_readlane_b32 s84, v28, 26
 ; SI-NEXT:    v_readlane_b32 s83, v28, 25
@@ -28356,9 +28750,6 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB43_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB43_2
 ;
 ; VI-LABEL: bitcast_v56i16_to_v14i64_scalar:
 ; VI:       ; %bb.0:
@@ -28399,54 +28790,54 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    v_writelane_b32 v28, s87, 29
 ; VI-NEXT:    v_writelane_b32 v28, s30, 30
 ; VI-NEXT:    v_writelane_b32 v28, s31, 31
-; VI-NEXT:    v_readfirstlane_b32 s86, v13
-; VI-NEXT:    v_readfirstlane_b32 s6, v12
+; VI-NEXT:    v_readfirstlane_b32 s81, v13
+; VI-NEXT:    v_readfirstlane_b32 s83, v12
 ; VI-NEXT:    v_readfirstlane_b32 s9, v11
-; VI-NEXT:    v_readfirstlane_b32 s8, v10
-; VI-NEXT:    v_readfirstlane_b32 s87, v9
-; VI-NEXT:    v_readfirstlane_b32 s12, v8
+; VI-NEXT:    v_readfirstlane_b32 s84, v10
+; VI-NEXT:    v_readfirstlane_b32 s85, v9
+; VI-NEXT:    v_readfirstlane_b32 s8, v8
 ; VI-NEXT:    v_readfirstlane_b32 s73, v7
-; VI-NEXT:    v_readfirstlane_b32 s77, v6
-; VI-NEXT:    v_readfirstlane_b32 s88, v5
+; VI-NEXT:    v_readfirstlane_b32 s75, v6
+; VI-NEXT:    v_readfirstlane_b32 s77, v5
 ; VI-NEXT:    v_readfirstlane_b32 s91, v4
-; VI-NEXT:    v_readfirstlane_b32 s34, v3
-; VI-NEXT:    v_readfirstlane_b32 s69, v2
-; VI-NEXT:    v_readfirstlane_b32 s81, v1
-; VI-NEXT:    v_readfirstlane_b32 s84, v0
+; VI-NEXT:    v_readfirstlane_b32 s30, v3
+; VI-NEXT:    v_readfirstlane_b32 s35, v2
+; VI-NEXT:    v_readfirstlane_b32 s71, v1
+; VI-NEXT:    v_readfirstlane_b32 s82, v0
 ; VI-NEXT:    s_lshr_b32 s79, s29, 16
 ; VI-NEXT:    s_lshr_b32 s90, s28, 16
-; VI-NEXT:    s_lshr_b32 s31, s27, 16
-; VI-NEXT:    s_lshr_b32 s67, s26, 16
-; VI-NEXT:    s_lshr_b32 s70, s25, 16
-; VI-NEXT:    s_lshr_b32 s80, s24, 16
-; VI-NEXT:    s_lshr_b32 s82, s23, 16
-; VI-NEXT:    s_lshr_b32 s85, s22, 16
-; VI-NEXT:    s_lshr_b32 s7, s21, 16
-; VI-NEXT:    s_lshr_b32 s11, s20, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s27, 16
+; VI-NEXT:    s_lshr_b32 s34, s26, 16
+; VI-NEXT:    s_lshr_b32 s66, s25, 16
+; VI-NEXT:    s_lshr_b32 s68, s24, 16
+; VI-NEXT:    s_lshr_b32 s69, s23, 16
+; VI-NEXT:    s_lshr_b32 s80, s22, 16
+; VI-NEXT:    s_lshr_b32 s86, s21, 16
+; VI-NEXT:    s_lshr_b32 s87, s20, 16
 ; VI-NEXT:    s_lshr_b32 s13, s19, 16
 ; VI-NEXT:    s_lshr_b32 s15, s18, 16
-; VI-NEXT:    s_lshr_b32 s10, s17, 16
-; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:    s_lshr_b32 s64, s86, 16
-; VI-NEXT:    s_lshr_b32 s65, s6, 16
-; VI-NEXT:    s_lshr_b32 s66, s9, 16
-; VI-NEXT:    s_lshr_b32 s14, s8, 16
-; VI-NEXT:    s_lshr_b32 s72, s87, 16
-; VI-NEXT:    s_lshr_b32 s74, s12, 16
+; VI-NEXT:    s_lshr_b32 s88, s17, 16
+; VI-NEXT:    s_lshr_b32 s7, s16, 16
+; VI-NEXT:    s_lshr_b32 s64, s81, 16
+; VI-NEXT:    s_lshr_b32 s10, s83, 16
+; VI-NEXT:    s_lshr_b32 s12, s9, 16
+; VI-NEXT:    s_lshr_b32 s14, s84, 16
+; VI-NEXT:    s_lshr_b32 s72, s85, 16
+; VI-NEXT:    s_lshr_b32 s74, s8, 16
 ; VI-NEXT:    s_lshr_b32 s76, s73, 16
-; VI-NEXT:    s_lshr_b32 s78, s77, 16
-; VI-NEXT:    s_lshr_b32 s89, s88, 16
-; VI-NEXT:    s_lshr_b32 s30, s91, 16
-; VI-NEXT:    s_lshr_b32 s35, s34, 16
-; VI-NEXT:    s_lshr_b32 s68, s69, 16
-; VI-NEXT:    s_lshr_b32 s71, s81, 16
-; VI-NEXT:    s_lshr_b32 s83, s84, 16
+; VI-NEXT:    s_lshr_b32 s78, s75, 16
+; VI-NEXT:    s_lshr_b32 s89, s77, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s91, 16
+; VI-NEXT:    s_lshr_b32 s31, s30, 16
+; VI-NEXT:    s_lshr_b32 s65, s35, 16
+; VI-NEXT:    s_lshr_b32 s67, s71, 16
+; VI-NEXT:    s_lshr_b32 s70, s82, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_4
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s75, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
 ; VI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -28454,32 +28845,32 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
 ; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s10, 16
+; VI-NEXT:    s_lshl_b32 s41, s88, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s11, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s7, 16
+; VI-NEXT:    s_lshl_b32 s5, s86, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -28487,58 +28878,146 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s79, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s84
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s82
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s81
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s71
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s69
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s35
+; VI-NEXT:    s_lshl_b32 s5, s65, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s88
+; VI-NEXT:    s_and_b32 s4, 0xffff, s77
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s77
+; VI-NEXT:    s_and_b32 s4, 0xffff, s75
 ; VI-NEXT:    s_lshl_b32 s5, s78, 16
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s73
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s12
+; VI-NEXT:    s_and_b32 s4, 0xffff, s8
 ; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s58, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s87
+; VI-NEXT:    s_and_b32 s4, 0xffff, s85
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s8
+; VI-NEXT:    s_and_b32 s4, 0xffff, s84
 ; VI-NEXT:    s_lshl_b32 s5, s14, 16
 ; VI-NEXT:    s_or_b32 s60, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s9
-; VI-NEXT:    s_lshl_b32 s5, s66, 16
+; VI-NEXT:    s_lshl_b32 s5, s12, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s6
-; VI-NEXT:    s_lshl_b32 s5, s65, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s83
+; VI-NEXT:    s_lshl_b32 s5, s10, 16
 ; VI-NEXT:    s_or_b32 s62, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s86
+; VI-NEXT:    s_and_b32 s4, 0xffff, s81
 ; VI-NEXT:    s_lshl_b32 s5, s64, 16
 ; VI-NEXT:    s_or_b32 s63, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB43_3
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    ; implicit-def: $vgpr29 : SGPR spill to VGPR lane
+; VI-NEXT:    s_mov_b32 s11, s9
+; VI-NEXT:    v_writelane_b32 v29, s26, 0
+; VI-NEXT:    s_mov_b32 s26, s27
+; VI-NEXT:    s_mov_b32 s27, s77
+; VI-NEXT:    v_writelane_b32 v29, s91, 1
+; VI-NEXT:    s_mov_b32 s91, s88
+; VI-NEXT:    s_mov_b32 s88, s28
+; VI-NEXT:    s_mov_b32 s28, s75
+; VI-NEXT:    s_mov_b32 s77, s29
+; VI-NEXT:    s_mov_b32 s29, s81
+; VI-NEXT:    s_mov_b32 s81, s68
+; VI-NEXT:    s_mov_b32 s68, s34
+; VI-NEXT:    s_mov_b32 s34, s31
+; VI-NEXT:    s_mov_b32 s31, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, s90
+; VI-NEXT:    s_mov_b32 s90, s89
+; VI-NEXT:    s_mov_b32 s89, s79
+; VI-NEXT:    s_mov_b32 s79, s78
+; VI-NEXT:    s_mov_b32 s78, s76
+; VI-NEXT:    s_mov_b32 s76, s74
+; VI-NEXT:    s_mov_b32 s74, s72
+; VI-NEXT:    s_mov_b32 s72, s14
+; VI-NEXT:    s_mov_b32 s14, s12
+; VI-NEXT:    s_mov_b32 s12, s10
+; VI-NEXT:    s_mov_b32 s10, s64
+; VI-NEXT:    s_mov_b32 s9, s83
+; VI-NEXT:    s_mov_b32 s83, s69
+; VI-NEXT:    s_mov_b32 s69, s65
+; VI-NEXT:    s_mov_b32 s6, s13
+; VI-NEXT:    s_mov_b32 s13, s84
+; VI-NEXT:    s_mov_b32 s84, s70
+; VI-NEXT:    s_mov_b32 s70, s66
+; VI-NEXT:    s_mov_b32 s75, s73
+; VI-NEXT:    s_mov_b32 s73, s8
+; VI-NEXT:    s_mov_b32 s8, s15
+; VI-NEXT:    s_mov_b32 s15, s85
+; VI-NEXT:    s_mov_b32 s85, s80
+; VI-NEXT:    s_mov_b32 s80, s67
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    s_mov_b32 s67, s80
+; VI-NEXT:    s_mov_b32 s80, s85
+; VI-NEXT:    s_mov_b32 s85, s15
+; VI-NEXT:    s_mov_b32 s15, s8
+; VI-NEXT:    s_mov_b32 s8, s73
+; VI-NEXT:    s_mov_b32 s73, s75
+; VI-NEXT:    s_mov_b32 s66, s70
+; VI-NEXT:    s_mov_b32 s70, s84
+; VI-NEXT:    s_mov_b32 s84, s13
+; VI-NEXT:    s_mov_b32 s13, s6
+; VI-NEXT:    s_mov_b32 s65, s69
+; VI-NEXT:    s_mov_b32 s69, s83
+; VI-NEXT:    s_mov_b32 s83, s9
+; VI-NEXT:    s_mov_b32 s9, s11
+; VI-NEXT:    s_mov_b32 s64, s10
+; VI-NEXT:    s_mov_b32 s10, s12
+; VI-NEXT:    s_mov_b32 s12, s14
+; VI-NEXT:    s_mov_b32 s14, s72
+; VI-NEXT:    s_mov_b32 s72, s74
+; VI-NEXT:    s_mov_b32 s74, s76
+; VI-NEXT:    s_mov_b32 s76, s78
+; VI-NEXT:    s_mov_b32 s78, s79
+; VI-NEXT:    s_mov_b32 s79, s89
+; VI-NEXT:    s_mov_b32 s89, s90
+; VI-NEXT:    s_mov_b32 s90, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, s31
+; VI-NEXT:    s_mov_b32 s31, s34
+; VI-NEXT:    s_mov_b32 s34, s68
+; VI-NEXT:    s_mov_b32 s68, s81
+; VI-NEXT:    s_mov_b32 s81, s29
+; VI-NEXT:    s_mov_b32 s29, s77
+; VI-NEXT:    s_mov_b32 s75, s28
+; VI-NEXT:    s_mov_b32 s28, s88
+; VI-NEXT:    s_mov_b32 s88, s91
+; VI-NEXT:    v_readlane_b32 s91, v29, 1
+; VI-NEXT:    s_mov_b32 s77, s27
+; VI-NEXT:    s_mov_b32 s27, s26
+; VI-NEXT:    v_readlane_b32 s26, v29, 0
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s75, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_and_b32 s5, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s10, s10, 16
-; VI-NEXT:    s_or_b32 s5, s10, s5
+; VI-NEXT:    s_lshl_b32 s6, s88, 16
+; VI-NEXT:    s_or_b32 s5, s6, s5
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_add_i32 s37, s5, 0x30000
@@ -28553,42 +29032,42 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s11, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s7, 16
+; VI-NEXT:    s_lshl_b32 s5, s86, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s26, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s27, s27, 3
 ; VI-NEXT:    s_add_i32 s46, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s27, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s28, s28, 3
 ; VI-NEXT:    s_add_i32 s47, s4, 0x30000
@@ -28600,37 +29079,37 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s79, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s84, s84, 3
+; VI-NEXT:    s_add_i32 s82, s82, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s84, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_and_b32 s4, s82, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s81, s81, 3
+; VI-NEXT:    s_add_i32 s71, s71, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s81, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_and_b32 s4, s71, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s69, s69, 3
+; VI-NEXT:    s_add_i32 s35, s35, 3
 ; VI-NEXT:    s_add_i32 s51, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s69, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_and_b32 s4, s35, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s65, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s34, s34, 3
+; VI-NEXT:    s_add_i32 s30, s30, 3
 ; VI-NEXT:    s_add_i32 s52, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s34, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, s30, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s91, s91, 3
 ; VI-NEXT:    s_add_i32 s53, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s91, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s88, s88, 3
+; VI-NEXT:    s_add_i32 s88, s77, 3
 ; VI-NEXT:    s_add_i32 s54, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s88, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s77, s77, 3
+; VI-NEXT:    s_add_i32 s77, s75, 3
 ; VI-NEXT:    s_add_i32 s55, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s77, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s78, 16
@@ -28640,17 +29119,17 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s4, s75, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s73, s12, 3
+; VI-NEXT:    s_add_i32 s73, s8, 3
 ; VI-NEXT:    s_add_i32 s57, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s73, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s15, s87, 3
+; VI-NEXT:    s_add_i32 s15, s85, 3
 ; VI-NEXT:    s_add_i32 s58, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s15, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s13, s8, 3
+; VI-NEXT:    s_add_i32 s13, s84, 3
 ; VI-NEXT:    s_add_i32 s59, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s13, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s14, 16
@@ -28658,20 +29137,20 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s11, s9, 3
 ; VI-NEXT:    s_add_i32 s60, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s11, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s66, 16
+; VI-NEXT:    s_lshl_b32 s5, s12, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s9, s6, 3
+; VI-NEXT:    s_add_i32 s9, s83, 3
 ; VI-NEXT:    s_add_i32 s61, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s9, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s65, 16
+; VI-NEXT:    s_lshl_b32 s5, s10, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s7, s86, 3
+; VI-NEXT:    s_add_i32 s7, s81, 3
 ; VI-NEXT:    s_add_i32 s62, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s64, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s63, s4, 0x30000
-; VI-NEXT:  .LBB43_3: ; %end
+; VI-NEXT:  .LBB43_5: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v28, 30
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
@@ -28738,96 +29217,6 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_4:
-; VI-NEXT:    ; implicit-def: $vgpr29 : SGPR spill to VGPR lane
-; VI-NEXT:    s_mov_b32 vcc_lo, s64
-; VI-NEXT:    v_writelane_b32 v29, s75, 0
-; VI-NEXT:    s_mov_b32 vcc_hi, s65
-; VI-NEXT:    s_mov_b32 s75, s73
-; VI-NEXT:    s_mov_b32 s73, s12
-; VI-NEXT:    v_writelane_b32 v29, s25, 1
-; VI-NEXT:    s_mov_b32 s25, s91
-; VI-NEXT:    s_mov_b32 s91, s26
-; VI-NEXT:    s_mov_b32 s26, s27
-; VI-NEXT:    s_mov_b32 s27, s88
-; VI-NEXT:    s_mov_b32 s88, s28
-; VI-NEXT:    s_mov_b32 s28, s77
-; VI-NEXT:    s_mov_b32 s77, s29
-; VI-NEXT:    s_mov_b32 s29, s15
-; VI-NEXT:    s_mov_b32 s15, s87
-; VI-NEXT:    s_mov_b32 s87, s85
-; VI-NEXT:    s_mov_b32 s85, s82
-; VI-NEXT:    s_mov_b32 s82, s71
-; VI-NEXT:    s_mov_b32 s71, s68
-; VI-NEXT:    s_mov_b32 s68, s35
-; VI-NEXT:    s_mov_b32 s35, s31
-; VI-NEXT:    s_mov_b32 s31, s30
-; VI-NEXT:    s_mov_b32 s30, s90
-; VI-NEXT:    s_mov_b32 s90, s89
-; VI-NEXT:    s_mov_b32 s89, s79
-; VI-NEXT:    s_mov_b32 s79, s78
-; VI-NEXT:    s_mov_b32 s78, s76
-; VI-NEXT:    s_mov_b32 s76, s74
-; VI-NEXT:    s_mov_b32 s74, s72
-; VI-NEXT:    s_mov_b32 s72, s14
-; VI-NEXT:    s_mov_b32 s14, s66
-; VI-NEXT:    s_mov_b32 s12, s10
-; VI-NEXT:    s_mov_b32 s10, s13
-; VI-NEXT:    s_mov_b32 s13, s8
-; VI-NEXT:    s_mov_b32 s8, s11
-; VI-NEXT:    s_mov_b32 s11, s9
-; VI-NEXT:    s_mov_b32 s9, s6
-; VI-NEXT:    s_mov_b32 s6, s7
-; VI-NEXT:    s_mov_b32 s7, s86
-; VI-NEXT:    s_mov_b32 s86, s83
-; VI-NEXT:    s_mov_b32 s83, s80
-; VI-NEXT:    s_mov_b32 s80, s70
-; VI-NEXT:    s_mov_b32 s70, s67
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_mov_b32 s67, s70
-; VI-NEXT:    s_mov_b32 s70, s80
-; VI-NEXT:    s_mov_b32 s80, s83
-; VI-NEXT:    s_mov_b32 s83, s86
-; VI-NEXT:    s_mov_b32 s86, s7
-; VI-NEXT:    s_mov_b32 s7, s6
-; VI-NEXT:    s_mov_b32 s6, s9
-; VI-NEXT:    s_mov_b32 s9, s11
-; VI-NEXT:    s_mov_b32 s11, s8
-; VI-NEXT:    s_mov_b32 s8, s13
-; VI-NEXT:    s_mov_b32 s13, s10
-; VI-NEXT:    s_mov_b32 s10, s12
-; VI-NEXT:    s_mov_b32 s66, s14
-; VI-NEXT:    s_mov_b32 s14, s72
-; VI-NEXT:    s_mov_b32 s72, s74
-; VI-NEXT:    s_mov_b32 s74, s76
-; VI-NEXT:    s_mov_b32 s76, s78
-; VI-NEXT:    s_mov_b32 s78, s79
-; VI-NEXT:    s_mov_b32 s79, s89
-; VI-NEXT:    s_mov_b32 s89, s90
-; VI-NEXT:    s_mov_b32 s90, s30
-; VI-NEXT:    s_mov_b32 s30, s31
-; VI-NEXT:    s_mov_b32 s31, s35
-; VI-NEXT:    s_mov_b32 s35, s68
-; VI-NEXT:    s_mov_b32 s68, s71
-; VI-NEXT:    s_mov_b32 s71, s82
-; VI-NEXT:    s_mov_b32 s82, s85
-; VI-NEXT:    s_mov_b32 s85, s87
-; VI-NEXT:    s_mov_b32 s87, s15
-; VI-NEXT:    s_mov_b32 s15, s29
-; VI-NEXT:    s_mov_b32 s29, s77
-; VI-NEXT:    s_mov_b32 s77, s28
-; VI-NEXT:    s_mov_b32 s28, s88
-; VI-NEXT:    s_mov_b32 s88, s27
-; VI-NEXT:    s_mov_b32 s27, s26
-; VI-NEXT:    s_mov_b32 s26, s91
-; VI-NEXT:    s_mov_b32 s91, s25
-; VI-NEXT:    v_readlane_b32 s25, v29, 1
-; VI-NEXT:    s_mov_b32 s12, s73
-; VI-NEXT:    s_mov_b32 s73, s75
-; VI-NEXT:    v_readlane_b32 s75, v29, 0
-; VI-NEXT:    s_mov_b32 s65, vcc_hi
-; VI-NEXT:    s_mov_b32 s64, vcc_lo
-; VI-NEXT:    s_branch .LBB43_2
 ;
 ; GFX9-LABEL: bitcast_v56i16_to_v14i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -28919,10 +29308,18 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s74
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s62, s62, s73
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s72
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -28951,10 +29348,8 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v25, s61, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v26, s62, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v27, s63, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB43_5
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:    s_branch .LBB43_6
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -28987,7 +29382,7 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB43_5: ; %end
+; GFX9-NEXT:  .LBB43_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -29078,11 +29473,16 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s26, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB43_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -29112,8 +29512,6 @@ define inreg <14 x i64> @bitcast_v56i16_to_v14i64_scalar(<56 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v26, s26, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v27, s27, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_3:
-; GFX11-NEXT:    s_branch .LBB43_2
 ; GFX11-NEXT:  .LBB43_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -30017,10 +30415,8 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v28, s49, 7
 ; SI-NEXT:    v_writelane_b32 v28, s50, 8
 ; SI-NEXT:    v_writelane_b32 v28, s51, 9
-; SI-NEXT:    v_writelane_b32 v28, s52, 10
-; SI-NEXT:    v_writelane_b32 v28, s53, 11
-; SI-NEXT:    v_writelane_b32 v28, s30, 12
-; SI-NEXT:    v_writelane_b32 v28, s31, 13
+; SI-NEXT:    v_writelane_b32 v28, s30, 10
+; SI-NEXT:    v_writelane_b32 v28, s31, 11
 ; SI-NEXT:    v_readfirstlane_b32 s40, v14
 ; SI-NEXT:    v_readfirstlane_b32 s5, v13
 ; SI-NEXT:    v_readfirstlane_b32 s4, v12
@@ -30037,22 +30433,22 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s41, v1
 ; SI-NEXT:    s_cmp_lg_u32 s40, 0
 ; SI-NEXT:    v_readfirstlane_b32 s40, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_4
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s30, s5, 16
-; SI-NEXT:    s_lshr_b32 s31, s7, 16
-; SI-NEXT:    s_lshr_b32 s34, s9, 16
-; SI-NEXT:    s_lshr_b32 s35, s11, 16
-; SI-NEXT:    s_lshr_b32 s36, s13, 16
-; SI-NEXT:    s_lshr_b32 s37, s15, 16
-; SI-NEXT:    s_lshr_b32 s38, s41, 16
-; SI-NEXT:    s_lshr_b32 s39, s29, 16
-; SI-NEXT:    s_lshr_b32 s48, s27, 16
-; SI-NEXT:    s_lshr_b32 s49, s25, 16
-; SI-NEXT:    s_lshr_b32 s50, s23, 16
-; SI-NEXT:    s_lshr_b32 s51, s21, 16
-; SI-NEXT:    s_lshr_b32 s52, s19, 16
-; SI-NEXT:    s_lshr_b32 s53, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s5, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s7, 16
+; SI-NEXT:    s_lshr_b32 s30, s9, 16
+; SI-NEXT:    s_lshr_b32 s31, s11, 16
+; SI-NEXT:    s_lshr_b32 s34, s13, 16
+; SI-NEXT:    s_lshr_b32 s35, s15, 16
+; SI-NEXT:    s_lshr_b32 s36, s41, 16
+; SI-NEXT:    s_lshr_b32 s37, s29, 16
+; SI-NEXT:    s_lshr_b32 s38, s27, 16
+; SI-NEXT:    s_lshr_b32 s39, s25, 16
+; SI-NEXT:    s_lshr_b32 s48, s23, 16
+; SI-NEXT:    s_lshr_b32 s49, s21, 16
+; SI-NEXT:    s_lshr_b32 s50, s19, 16
+; SI-NEXT:    s_lshr_b32 s51, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 16
@@ -30067,8 +30463,44 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB45_3
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[94:95], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[94:95], -1
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[94:95], s[94:95], exec
+; SI-NEXT:    s_cselect_b32 s43, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s43, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -30097,20 +30529,20 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:    s_lshr_b32 s30, s5, 16
-; SI-NEXT:    s_lshr_b32 s31, s7, 16
-; SI-NEXT:    s_lshr_b32 s34, s9, 16
-; SI-NEXT:    s_lshr_b32 s35, s11, 16
-; SI-NEXT:    s_lshr_b32 s36, s13, 16
-; SI-NEXT:    s_lshr_b32 s37, s15, 16
-; SI-NEXT:    s_lshr_b32 s38, s41, 16
-; SI-NEXT:    s_lshr_b32 s39, s29, 16
-; SI-NEXT:    s_lshr_b32 s48, s27, 16
-; SI-NEXT:    s_lshr_b32 s49, s25, 16
-; SI-NEXT:    s_lshr_b32 s50, s23, 16
-; SI-NEXT:    s_lshr_b32 s51, s21, 16
-; SI-NEXT:    s_lshr_b32 s52, s19, 16
-; SI-NEXT:    s_lshr_b32 s53, s17, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s5, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s7, 16
+; SI-NEXT:    s_lshr_b32 s30, s9, 16
+; SI-NEXT:    s_lshr_b32 s31, s11, 16
+; SI-NEXT:    s_lshr_b32 s34, s13, 16
+; SI-NEXT:    s_lshr_b32 s35, s15, 16
+; SI-NEXT:    s_lshr_b32 s36, s41, 16
+; SI-NEXT:    s_lshr_b32 s37, s29, 16
+; SI-NEXT:    s_lshr_b32 s38, s27, 16
+; SI-NEXT:    s_lshr_b32 s39, s25, 16
+; SI-NEXT:    s_lshr_b32 s48, s23, 16
+; SI-NEXT:    s_lshr_b32 s49, s21, 16
+; SI-NEXT:    s_lshr_b32 s50, s19, 16
+; SI-NEXT:    s_lshr_b32 s51, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 16
@@ -30125,78 +30557,78 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[16:17], 16
-; SI-NEXT:  .LBB45_3: ; %end
+; SI-NEXT:  .LBB45_5: ; %end
 ; SI-NEXT:    s_lshl_b32 s43, s92, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s43
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s53, 16
+; SI-NEXT:    s_lshl_b32 s43, s51, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s43
 ; SI-NEXT:    s_lshl_b32 s43, s90, 16
 ; SI-NEXT:    s_and_b32 s18, s18, 0xffff
 ; SI-NEXT:    s_or_b32 s18, s18, s43
 ; SI-NEXT:    s_and_b32 s19, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s52, 16
+; SI-NEXT:    s_lshl_b32 s43, s50, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s43
 ; SI-NEXT:    s_lshl_b32 s43, s88, 16
 ; SI-NEXT:    s_and_b32 s20, s20, 0xffff
 ; SI-NEXT:    s_or_b32 s20, s20, s43
 ; SI-NEXT:    s_and_b32 s21, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s51, 16
+; SI-NEXT:    s_lshl_b32 s43, s49, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s43
 ; SI-NEXT:    s_lshl_b32 s43, s78, 16
 ; SI-NEXT:    s_and_b32 s22, s22, 0xffff
 ; SI-NEXT:    s_or_b32 s22, s22, s43
 ; SI-NEXT:    s_and_b32 s23, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s50, 16
+; SI-NEXT:    s_lshl_b32 s43, s48, 16
 ; SI-NEXT:    s_or_b32 s23, s23, s43
 ; SI-NEXT:    s_and_b32 s24, s24, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s76, 16
 ; SI-NEXT:    s_or_b32 s24, s24, s43
 ; SI-NEXT:    s_and_b32 s25, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s49, 16
+; SI-NEXT:    s_lshl_b32 s43, s39, 16
 ; SI-NEXT:    s_or_b32 s25, s25, s43
 ; SI-NEXT:    s_and_b32 s26, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s74, 16
 ; SI-NEXT:    s_or_b32 s26, s26, s43
 ; SI-NEXT:    s_and_b32 s27, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s48, 16
+; SI-NEXT:    s_lshl_b32 s43, s38, 16
 ; SI-NEXT:    s_or_b32 s27, s27, s43
 ; SI-NEXT:    s_and_b32 s28, s28, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s72, 16
 ; SI-NEXT:    s_or_b32 s28, s28, s43
 ; SI-NEXT:    s_and_b32 s29, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s39, 16
+; SI-NEXT:    s_lshl_b32 s43, s37, 16
 ; SI-NEXT:    s_or_b32 s29, s29, s43
 ; SI-NEXT:    s_and_b32 s40, s40, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s62, 16
 ; SI-NEXT:    s_or_b32 s40, s40, s43
 ; SI-NEXT:    s_and_b32 s41, s41, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s38, 16
+; SI-NEXT:    s_lshl_b32 s43, s36, 16
 ; SI-NEXT:    s_or_b32 s41, s41, s43
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s60, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s43
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s37, 16
+; SI-NEXT:    s_lshl_b32 s43, s35, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s43
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s58, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s43
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s36, 16
+; SI-NEXT:    s_lshl_b32 s43, s34, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s43
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s56, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s43
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s35, 16
+; SI-NEXT:    s_lshl_b32 s43, s31, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s43
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s46, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s43
 ; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s34, 16
+; SI-NEXT:    s_lshl_b32 s43, s30, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s43
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s43, s44, 16
@@ -30204,13 +30636,13 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s42, s42, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s43
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s43, s31, 16
+; SI-NEXT:    s_lshl_b32 s43, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s42
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_lshl_b32 s42, s30, 16
+; SI-NEXT:    s_lshl_b32 s42, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s43
 ; SI-NEXT:    s_or_b32 s5, s5, s42
-; SI-NEXT:    v_readlane_b32 s30, v28, 12
+; SI-NEXT:    v_readlane_b32 s30, v28, 10
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -30239,9 +30671,7 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v25, s7
 ; SI-NEXT:    v_mov_b32_e32 v26, s4
 ; SI-NEXT:    v_mov_b32_e32 v27, s5
-; SI-NEXT:    v_readlane_b32 s31, v28, 13
-; SI-NEXT:    v_readlane_b32 s53, v28, 11
-; SI-NEXT:    v_readlane_b32 s52, v28, 10
+; SI-NEXT:    v_readlane_b32 s31, v28, 11
 ; SI-NEXT:    v_readlane_b32 s51, v28, 9
 ; SI-NEXT:    v_readlane_b32 s50, v28, 8
 ; SI-NEXT:    v_readlane_b32 s49, v28, 7
@@ -30257,36 +30687,6 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB45_4:
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    s_branch .LBB45_2
 ;
 ; VI-LABEL: bitcast_v14i64_to_v56f16_scalar:
 ; VI:       ; %bb.0:
@@ -30294,10 +30694,8 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_store_dword v28, off, s[0:3], s32 ; 4-byte Folded Spill
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
-; VI-NEXT:    v_writelane_b32 v28, s34, 0
-; VI-NEXT:    v_writelane_b32 v28, s35, 1
-; VI-NEXT:    v_writelane_b32 v28, s30, 2
-; VI-NEXT:    v_writelane_b32 v28, s31, 3
+; VI-NEXT:    v_writelane_b32 v28, s30, 0
+; VI-NEXT:    v_writelane_b32 v28, s31, 1
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
 ; VI-NEXT:    v_readfirstlane_b32 s6, v13
 ; VI-NEXT:    v_readfirstlane_b32 s7, v12
@@ -30314,7 +30712,7 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s42, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s43, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_4
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s44, s6, 16
 ; VI-NEXT:    s_lshr_b32 s45, s7, 16
@@ -30340,12 +30738,48 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB45_3
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -30398,22 +30832,22 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s89, s22, 16
 ; VI-NEXT:    s_lshr_b32 s90, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
-; VI-NEXT:  .LBB45_3: ; %end
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
+; VI-NEXT:  .LBB45_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_and_b32 s5, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s16, s34, 16
+; VI-NEXT:    s_lshl_b32 s16, s30, 16
 ; VI-NEXT:    s_or_b32 s5, s5, s16
 ; VI-NEXT:    s_and_b32 s16, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s17, s31, 16
+; VI-NEXT:    s_lshl_b32 s17, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s16, s16, s17
 ; VI-NEXT:    s_and_b32 s17, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s18, s30, 16
+; VI-NEXT:    s_lshl_b32 s18, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s17, s17, s18
 ; VI-NEXT:    s_and_b32 s18, 0xffff, s20
 ; VI-NEXT:    s_lshl_b32 s19, s91, 16
@@ -30487,7 +30921,7 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; VI-NEXT:    s_and_b32 s6, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s42, s44, 16
 ; VI-NEXT:    s_or_b32 s6, s6, s42
-; VI-NEXT:    v_readlane_b32 s30, v28, 2
+; VI-NEXT:    v_readlane_b32 s30, v28, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    v_mov_b32_e32 v1, s5
 ; VI-NEXT:    v_mov_b32_e32 v2, s16
@@ -30516,44 +30950,12 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v25, s8
 ; VI-NEXT:    v_mov_b32_e32 v26, s7
 ; VI-NEXT:    v_mov_b32_e32 v27, s6
-; VI-NEXT:    v_readlane_b32 s31, v28, 3
-; VI-NEXT:    v_readlane_b32 s35, v28, 1
-; VI-NEXT:    v_readlane_b32 s34, v28, 0
+; VI-NEXT:    v_readlane_b32 s31, v28, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v28, off, s[0:3], s32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_4:
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    s_branch .LBB45_2
 ;
 ; GFX9-LABEL: bitcast_v14i64_to_v56f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -30574,7 +30976,7 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s42, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s43, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s44, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s45, s7, 16
@@ -30604,8 +31006,44 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s93, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_3
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -30662,7 +31100,7 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s93, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s16, 16
-; GFX9-NEXT:  .LBB45_3: ; %end
+; GFX9-NEXT:  .LBB45_5: ; %end
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s95
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s94
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s93
@@ -30720,36 +31158,6 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    s_branch .LBB45_2
 ;
 ; GFX11-LABEL: bitcast_v14i64_to_v56f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -30767,7 +31175,7 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s13, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s14, 0
 ; GFX11-NEXT:    s_mov_b32 s90, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s14, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s15, s5, 16
@@ -30797,9 +31205,44 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s79, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s88, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s89, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s90
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_3
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB45_3
+; GFX11-NEXT:  .LBB45_2:
+; GFX11-NEXT:    s_mov_b32 s90, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr89
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr79
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:    ; implicit-def: $sgpr15
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:  .LBB45_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s90, s90, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s90, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s90, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -30856,7 +31299,7 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s79, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s88, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s89, s0, 16
-; GFX11-NEXT:  .LBB45_3: ; %end
+; GFX11-NEXT:  .LBB45_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s89
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s88
@@ -30901,36 +31344,6 @@ define inreg <56 x half> @bitcast_v14i64_to_v56f16_scalar(<14 x i64> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v24, s7 :: v_dual_mov_b32 v25, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s5 :: v_dual_mov_b32 v27, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr89
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr79
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    ; implicit-def: $sgpr15
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    s_branch .LBB45_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -32366,10 +32779,8 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v32, s83, 25
 ; SI-NEXT:    v_writelane_b32 v32, s84, 26
 ; SI-NEXT:    v_writelane_b32 v32, s85, 27
-; SI-NEXT:    v_writelane_b32 v32, s86, 28
-; SI-NEXT:    v_writelane_b32 v32, s87, 29
-; SI-NEXT:    v_writelane_b32 v32, s30, 30
-; SI-NEXT:    v_writelane_b32 v32, s31, 31
+; SI-NEXT:    v_writelane_b32 v32, s30, 28
+; SI-NEXT:    v_writelane_b32 v32, s31, 29
 ; SI-NEXT:    v_readfirstlane_b32 s6, v13
 ; SI-NEXT:    v_readfirstlane_b32 s8, v12
 ; SI-NEXT:    v_readfirstlane_b32 s10, v11
@@ -32383,21 +32794,21 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s90, v3
 ; SI-NEXT:    v_readfirstlane_b32 s92, v2
 ; SI-NEXT:    v_readfirstlane_b32 s95, v1
-; SI-NEXT:    v_readfirstlane_b32 s34, v0
+; SI-NEXT:    v_readfirstlane_b32 s30, v0
 ; SI-NEXT:    s_lshr_b32 s94, s29, 16
-; SI-NEXT:    s_lshr_b32 s30, s28, 16
-; SI-NEXT:    s_lshr_b32 s35, s27, 16
-; SI-NEXT:    s_lshr_b32 s69, s26, 16
-; SI-NEXT:    s_lshr_b32 s70, s25, 16
-; SI-NEXT:    s_lshr_b32 s71, s24, 16
-; SI-NEXT:    s_lshr_b32 s80, s23, 16
-; SI-NEXT:    s_lshr_b32 s81, s22, 16
-; SI-NEXT:    s_lshr_b32 s82, s21, 16
-; SI-NEXT:    s_lshr_b32 s83, s20, 16
-; SI-NEXT:    s_lshr_b32 s84, s19, 16
-; SI-NEXT:    s_lshr_b32 s85, s18, 16
-; SI-NEXT:    s_lshr_b32 s86, s17, 16
-; SI-NEXT:    s_lshr_b32 s87, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s28, 16
+; SI-NEXT:    s_lshr_b32 s31, s27, 16
+; SI-NEXT:    s_lshr_b32 s35, s26, 16
+; SI-NEXT:    s_lshr_b32 s68, s25, 16
+; SI-NEXT:    s_lshr_b32 s69, s24, 16
+; SI-NEXT:    s_lshr_b32 s70, s23, 16
+; SI-NEXT:    s_lshr_b32 s71, s22, 16
+; SI-NEXT:    s_lshr_b32 s80, s21, 16
+; SI-NEXT:    s_lshr_b32 s81, s20, 16
+; SI-NEXT:    s_lshr_b32 s82, s19, 16
+; SI-NEXT:    s_lshr_b32 s83, s18, 16
+; SI-NEXT:    s_lshr_b32 s84, s17, 16
+; SI-NEXT:    s_lshr_b32 s85, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -32410,59 +32821,59 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s89, s88, 16
 ; SI-NEXT:    s_lshr_b32 s91, s90, 16
 ; SI-NEXT:    s_lshr_b32 s93, s92, 16
-; SI-NEXT:    s_lshr_b32 s31, s95, 16
-; SI-NEXT:    s_lshr_b32 s68, s34, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s95, 16
+; SI-NEXT:    s_lshr_b32 s34, s30, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB47_3
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s48, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s94, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s34, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s95, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s92, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -32500,11 +32911,20 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB47_4
-; SI-NEXT:  .LBB47_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s87
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s85
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s86
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s84
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
@@ -32514,14 +32934,14 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s85
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s83
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s84
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s82
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
@@ -32531,7 +32951,7 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v5, s19
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s83
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s81
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s20
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
@@ -32540,11 +32960,11 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s80
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s21
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, s71
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
@@ -32555,7 +32975,7 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s22
 ; SI-NEXT:    v_or_b32_e32 v5, v6, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s80
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, s70
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s23
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
@@ -32564,11 +32984,11 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
 ; SI-NEXT:    v_or_b32_e32 v6, v8, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s69
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s24
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v10, s68
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
@@ -32579,7 +32999,7 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v11, s25
 ; SI-NEXT:    v_or_b32_e32 v8, v9, v8
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v10
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v10, s35
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s26
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
 ; SI-NEXT:    v_cvt_f16_f32_e32 v11, v11
@@ -32588,11 +33008,11 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
 ; SI-NEXT:    v_or_b32_e32 v9, v11, v9
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, s31
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
 ; SI-NEXT:    v_or_b32_e32 v10, v12, v10
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s27
-; SI-NEXT:    v_cvt_f32_f16_e32 v13, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v13, vcc_lo
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
 ; SI-NEXT:    v_cvt_f16_f32_e32 v11, v11
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
@@ -32612,11 +33032,11 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_or_b32_e32 v12, v14, v12
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s34
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
 ; SI-NEXT:    v_or_b32_e32 v13, v15, v13
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s34
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, vcc_hi
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
 ; SI-NEXT:    v_cvt_f16_f32_e32 v14, v14
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
@@ -32726,11 +33146,8 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v26, v27, v26
 ; SI-NEXT:    v_lshlrev_b32_e32 v27, 16, v28
 ; SI-NEXT:    v_or_b32_e32 v27, v29, v27
-; SI-NEXT:    s_branch .LBB47_5
-; SI-NEXT:  .LBB47_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB47_2
-; SI-NEXT:  .LBB47_4:
+; SI-NEXT:    s_branch .LBB47_6
+; SI-NEXT:  .LBB47_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -32763,11 +33180,9 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB47_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 30
-; SI-NEXT:    v_readlane_b32 s31, v32, 31
-; SI-NEXT:    v_readlane_b32 s87, v32, 29
-; SI-NEXT:    v_readlane_b32 s86, v32, 28
+; SI-NEXT:  .LBB47_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 28
+; SI-NEXT:    v_readlane_b32 s31, v32, 29
 ; SI-NEXT:    v_readlane_b32 s85, v32, 27
 ; SI-NEXT:    v_readlane_b32 s84, v32, 26
 ; SI-NEXT:    v_readlane_b32 s83, v32, 25
@@ -32841,12 +33256,9 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_writelane_b32 v32, s87, 29
 ; VI-NEXT:    v_writelane_b32 v32, s30, 30
 ; VI-NEXT:    v_writelane_b32 v32, s31, 31
+; VI-NEXT:    v_readfirstlane_b32 s6, v13
 ; VI-NEXT:    v_readfirstlane_b32 s8, v12
-; VI-NEXT:    s_lshr_b32 s15, s8, 16
 ; VI-NEXT:    v_readfirstlane_b32 s10, v11
-; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
-; VI-NEXT:    v_readfirstlane_b32 s6, v13
-; VI-NEXT:    s_lshr_b32 s61, s10, 16
 ; VI-NEXT:    v_readfirstlane_b32 s12, v10
 ; VI-NEXT:    v_readfirstlane_b32 s14, v9
 ; VI-NEXT:    v_readfirstlane_b32 s72, v8
@@ -32854,178 +33266,198 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s76, v6
 ; VI-NEXT:    v_readfirstlane_b32 s79, v5
 ; VI-NEXT:    v_readfirstlane_b32 s91, v4
-; VI-NEXT:    v_readfirstlane_b32 s34, v3
-; VI-NEXT:    v_readfirstlane_b32 s69, v2
-; VI-NEXT:    v_readfirstlane_b32 s80, v1
-; VI-NEXT:    v_readfirstlane_b32 s83, v0
-; VI-NEXT:    v_writelane_b32 v33, s15, 0
+; VI-NEXT:    v_readfirstlane_b32 s30, v3
+; VI-NEXT:    v_readfirstlane_b32 s35, v2
+; VI-NEXT:    v_readfirstlane_b32 s70, v1
+; VI-NEXT:    v_readfirstlane_b32 s81, v0
 ; VI-NEXT:    s_lshr_b32 s56, s29, 16
-; VI-NEXT:    s_lshr_b32 s75, s28, 16
+; VI-NEXT:    s_lshr_b32 s61, s28, 16
 ; VI-NEXT:    s_lshr_b32 s90, s27, 16
-; VI-NEXT:    s_lshr_b32 s31, s26, 16
-; VI-NEXT:    s_lshr_b32 s68, s25, 16
-; VI-NEXT:    s_lshr_b32 s70, s24, 16
-; VI-NEXT:    s_lshr_b32 s81, s23, 16
-; VI-NEXT:    s_lshr_b32 s84, s22, 16
-; VI-NEXT:    s_lshr_b32 s86, s21, 16
-; VI-NEXT:    s_lshr_b32 s87, s20, 16
-; VI-NEXT:    s_lshr_b32 s7, s19, 16
-; VI-NEXT:    s_lshr_b32 s9, s18, 16
-; VI-NEXT:    s_lshr_b32 s11, s17, 16
-; VI-NEXT:    s_lshr_b32 s13, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s26, 16
+; VI-NEXT:    s_lshr_b32 s34, s25, 16
+; VI-NEXT:    s_lshr_b32 s68, s24, 16
+; VI-NEXT:    s_lshr_b32 s71, s23, 16
+; VI-NEXT:    s_lshr_b32 s82, s22, 16
+; VI-NEXT:    s_lshr_b32 s84, s21, 16
+; VI-NEXT:    s_lshr_b32 s85, s20, 16
+; VI-NEXT:    s_lshr_b32 s86, s19, 16
+; VI-NEXT:    s_lshr_b32 s87, s18, 16
+; VI-NEXT:    s_lshr_b32 s7, s17, 16
+; VI-NEXT:    s_lshr_b32 s9, s16, 16
 ; VI-NEXT:    s_lshr_b32 s63, s6, 16
-; VI-NEXT:    s_lshr_b32 s60, s12, 16
+; VI-NEXT:    s_lshr_b32 s11, s8, 16
+; VI-NEXT:    s_lshr_b32 s13, s10, 16
+; VI-NEXT:    s_lshr_b32 s15, s12, 16
 ; VI-NEXT:    s_lshr_b32 s59, s14, 16
 ; VI-NEXT:    s_lshr_b32 s58, s72, 16
 ; VI-NEXT:    s_lshr_b32 s57, s74, 16
-; VI-NEXT:    s_lshr_b32 s62, s76, 16
+; VI-NEXT:    s_lshr_b32 s60, s76, 16
 ; VI-NEXT:    s_lshr_b32 s89, s79, 16
-; VI-NEXT:    s_lshr_b32 s30, s91, 16
-; VI-NEXT:    s_lshr_b32 s35, s34, 16
-; VI-NEXT:    s_lshr_b32 s71, s69, 16
-; VI-NEXT:    s_lshr_b32 s82, s80, 16
-; VI-NEXT:    s_lshr_b32 s85, s83, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s91, 16
+; VI-NEXT:    s_lshr_b32 s31, s30, 16
+; VI-NEXT:    s_lshr_b32 s69, s35, 16
+; VI-NEXT:    s_lshr_b32 s80, s70, 16
+; VI-NEXT:    s_lshr_b32 s83, s81, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
-; VI-NEXT:    v_writelane_b32 v33, s61, 1
+; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    v_writelane_b32 v33, s60, 2
-; VI-NEXT:    v_writelane_b32 v33, s59, 3
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    v_writelane_b32 v33, s15, 0
+; VI-NEXT:    v_writelane_b32 v33, s59, 1
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s13, 16
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s9, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s7, 16
+; VI-NEXT:    s_lshl_b32 s5, s86, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s11, 16
+; VI-NEXT:    s_lshl_b32 s41, s7, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
-; VI-NEXT:    s_lshl_b32 s5, s75, 16
+; VI-NEXT:    s_lshl_b32 s5, s61, 16
 ; VI-NEXT:    s_or_b32 s48, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s56, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s83
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s81
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s80
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s70
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s69
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s35
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s79
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s76
-; VI-NEXT:    s_lshl_b32 s5, s62, 16
-; VI-NEXT:    s_mov_b32 s77, s56
+; VI-NEXT:    s_lshl_b32 s5, s60, 16
+; VI-NEXT:    s_mov_b32 s73, s56
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s74
 ; VI-NEXT:    s_lshl_b32 s5, s57, 16
-; VI-NEXT:    s_mov_b32 s73, s75
-; VI-NEXT:    s_mov_b32 s75, s57
+; VI-NEXT:    s_mov_b32 s78, s57
 ; VI-NEXT:    s_or_b32 s57, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s72
 ; VI-NEXT:    s_lshl_b32 s5, s58, 16
-; VI-NEXT:    s_mov_b32 s78, s58
+; VI-NEXT:    s_mov_b32 s77, s58
 ; VI-NEXT:    s_or_b32 s58, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s14
 ; VI-NEXT:    s_lshl_b32 s5, s59, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s12
-; VI-NEXT:    s_lshl_b32 s5, s60, 16
+; VI-NEXT:    s_lshl_b32 s5, s15, 16
+; VI-NEXT:    s_mov_b32 s88, s60
 ; VI-NEXT:    s_or_b32 s60, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s10
-; VI-NEXT:    s_lshl_b32 s5, s61, 16
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
+; VI-NEXT:    s_mov_b32 s75, s61
 ; VI-NEXT:    s_or_b32 s61, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s8
-; VI-NEXT:    s_lshl_b32 s5, s15, 16
-; VI-NEXT:    s_mov_b32 s88, s62
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_or_b32 s62, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s63, 16
-; VI-NEXT:    s_mov_b32 s15, s63
+; VI-NEXT:    s_mov_b32 s15, s13
+; VI-NEXT:    s_mov_b32 s13, s11
+; VI-NEXT:    s_mov_b32 s11, s63
 ; VI-NEXT:    s_or_b32 s63, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b32 s75, s61
+; VI-NEXT:    s_mov_b32 s88, s60
+; VI-NEXT:    s_mov_b32 s73, s56
+; VI-NEXT:    s_mov_b32 s78, s57
+; VI-NEXT:    s_mov_b32 s77, s58
+; VI-NEXT:    s_mov_b32 s15, s13
+; VI-NEXT:    s_mov_b32 s13, s11
+; VI-NEXT:    s_mov_b32 s11, s63
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v27, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s13
-; VI-NEXT:    v_mov_b32_e32 v2, s11
+; VI-NEXT:    v_mov_b32_e32 v0, s9
+; VI-NEXT:    v_mov_b32_e32 v2, s7
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v27
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v27
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s9
+; VI-NEXT:    v_mov_b32_e32 v2, s87
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v27
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s7
+; VI-NEXT:    v_mov_b32_e32 v3, s86
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v27
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s87
+; VI-NEXT:    v_mov_b32_e32 v4, s85
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v27
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s86
+; VI-NEXT:    v_mov_b32_e32 v5, s84
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v27
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s84
+; VI-NEXT:    v_mov_b32_e32 v6, s82
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v27
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s81
+; VI-NEXT:    v_mov_b32_e32 v7, s71
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v27
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s70
+; VI-NEXT:    v_mov_b32_e32 v8, s68
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v27
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
-; VI-NEXT:    v_mov_b32_e32 v9, s68
+; VI-NEXT:    v_mov_b32_e32 v9, s34
 ; VI-NEXT:    v_add_f16_sdwa v9, v9, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v10, s25, v27
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
-; VI-NEXT:    v_mov_b32_e32 v10, s31
+; VI-NEXT:    v_mov_b32_e32 v10, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v10, v10, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v11, s26, v27
 ; VI-NEXT:    v_or_b32_e32 v10, v11, v10
@@ -33033,31 +33465,31 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v11, v11, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v12, s27, v27
 ; VI-NEXT:    v_or_b32_e32 v11, v12, v11
-; VI-NEXT:    v_mov_b32_e32 v12, s73
+; VI-NEXT:    v_mov_b32_e32 v12, s75
 ; VI-NEXT:    v_add_f16_sdwa v12, v12, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v13, s28, v27
 ; VI-NEXT:    v_or_b32_e32 v12, v13, v12
-; VI-NEXT:    v_mov_b32_e32 v13, s77
+; VI-NEXT:    v_mov_b32_e32 v13, s73
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v27
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s85
+; VI-NEXT:    v_mov_b32_e32 v14, s83
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s83, v27
+; VI-NEXT:    v_add_f16_e32 v15, s81, v27
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s82
+; VI-NEXT:    v_mov_b32_e32 v15, s80
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v16, s80, v27
+; VI-NEXT:    v_add_f16_e32 v16, s70, v27
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
-; VI-NEXT:    v_mov_b32_e32 v16, s71
+; VI-NEXT:    v_mov_b32_e32 v16, s69
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v17, s69, v27
+; VI-NEXT:    v_add_f16_e32 v17, s35, v27
 ; VI-NEXT:    v_or_b32_e32 v16, v17, v16
-; VI-NEXT:    v_mov_b32_e32 v17, s35
+; VI-NEXT:    v_mov_b32_e32 v17, s31
 ; VI-NEXT:    v_add_f16_sdwa v17, v17, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v18, s34, v27
+; VI-NEXT:    v_add_f16_e32 v18, s30, v27
 ; VI-NEXT:    v_or_b32_e32 v17, v18, v17
-; VI-NEXT:    v_mov_b32_e32 v18, s30
+; VI-NEXT:    v_mov_b32_e32 v18, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v18, v18, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v19, s91, v27
 ; VI-NEXT:    v_or_b32_e32 v18, v19, v18
@@ -33069,49 +33501,38 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_sdwa v20, v20, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v21, s76, v27
 ; VI-NEXT:    v_or_b32_e32 v20, v21, v20
-; VI-NEXT:    v_mov_b32_e32 v21, s75
+; VI-NEXT:    v_mov_b32_e32 v21, s78
 ; VI-NEXT:    v_add_f16_sdwa v21, v21, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v22, s74, v27
 ; VI-NEXT:    v_or_b32_e32 v21, v22, v21
-; VI-NEXT:    v_mov_b32_e32 v22, s78
+; VI-NEXT:    v_mov_b32_e32 v22, s77
 ; VI-NEXT:    v_add_f16_sdwa v22, v22, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v23, s72, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 3
+; VI-NEXT:    v_readlane_b32 s4, v33, 1
 ; VI-NEXT:    v_or_b32_e32 v22, v23, v22
 ; VI-NEXT:    v_mov_b32_e32 v23, s4
 ; VI-NEXT:    v_add_f16_sdwa v23, v23, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v24, s14, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 2
+; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v23, v24, v23
 ; VI-NEXT:    v_mov_b32_e32 v24, s4
 ; VI-NEXT:    v_add_f16_sdwa v24, v24, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v25, s12, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 1
 ; VI-NEXT:    v_or_b32_e32 v24, v25, v24
-; VI-NEXT:    v_mov_b32_e32 v25, s4
+; VI-NEXT:    v_mov_b32_e32 v25, s15
 ; VI-NEXT:    v_add_f16_sdwa v25, v25, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v26, s10, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v25, v26, v25
-; VI-NEXT:    v_mov_b32_e32 v26, s4
+; VI-NEXT:    v_mov_b32_e32 v26, s13
 ; VI-NEXT:    v_add_f16_sdwa v26, v26, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v28, s8, v27
 ; VI-NEXT:    v_or_b32_e32 v26, v28, v26
-; VI-NEXT:    v_mov_b32_e32 v28, s15
+; VI-NEXT:    v_mov_b32_e32 v28, s11
 ; VI-NEXT:    v_add_f16_sdwa v28, v28, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v27, s6, v27
 ; VI-NEXT:    v_or_b32_e32 v27, v27, v28
-; VI-NEXT:    s_branch .LBB47_5
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    s_mov_b32 s73, s75
-; VI-NEXT:    s_mov_b32 s88, s62
-; VI-NEXT:    s_mov_b32 s77, s56
-; VI-NEXT:    s_mov_b32 s75, s57
-; VI-NEXT:    s_mov_b32 s78, s58
-; VI-NEXT:    s_mov_b32 s15, s63
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:    s_branch .LBB47_6
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -33144,7 +33565,7 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB47_5: ; %end
+; VI-NEXT:  .LBB47_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 30
 ; VI-NEXT:    v_readlane_b32 s31, v32, 31
 ; VI-NEXT:    v_readlane_b32 s87, v32, 29
@@ -33274,10 +33695,18 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s74
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s62, s62, s73
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s72
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v27, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v27 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v27 op_sel_hi:[1,0]
@@ -33307,10 +33736,8 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v25, s61, v27 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v26, s62, v27 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v27, s63, v27 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB47_5
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:    s_branch .LBB47_6
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -33343,7 +33770,7 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB47_5: ; %end
+; GFX9-NEXT:  .LBB47_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -33434,11 +33861,16 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s26, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB47_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -33468,8 +33900,6 @@ define inreg <14 x i64> @bitcast_v56f16_to_v14i64_scalar(<56 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v26, 0x200, s26 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v27, 0x200, s27 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB47_3:
-; GFX11-NEXT:    s_branch .LBB47_2
 ; GFX11-NEXT:  .LBB47_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -34298,10 +34728,8 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v58, s49, 7
 ; SI-NEXT:    v_writelane_b32 v58, s50, 8
 ; SI-NEXT:    v_writelane_b32 v58, s51, 9
-; SI-NEXT:    v_writelane_b32 v58, s52, 10
-; SI-NEXT:    v_writelane_b32 v58, s53, 11
-; SI-NEXT:    v_writelane_b32 v58, s30, 12
-; SI-NEXT:    v_writelane_b32 v58, s31, 13
+; SI-NEXT:    v_writelane_b32 v58, s30, 10
+; SI-NEXT:    v_writelane_b32 v58, s31, 11
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
 ; SI-NEXT:    v_readfirstlane_b32 s41, v13
 ; SI-NEXT:    v_readfirstlane_b32 s40, v12
@@ -34318,22 +34746,22 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_3
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s53, s41, 16
-; SI-NEXT:    s_lshr_b32 s52, s15, 16
-; SI-NEXT:    s_lshr_b32 s51, s13, 16
-; SI-NEXT:    s_lshr_b32 s50, s11, 16
-; SI-NEXT:    s_lshr_b32 s49, s9, 16
-; SI-NEXT:    s_lshr_b32 s48, s7, 16
-; SI-NEXT:    s_lshr_b32 s39, s5, 16
-; SI-NEXT:    s_lshr_b32 s38, s29, 16
-; SI-NEXT:    s_lshr_b32 s37, s27, 16
-; SI-NEXT:    s_lshr_b32 s36, s25, 16
-; SI-NEXT:    s_lshr_b32 s35, s23, 16
-; SI-NEXT:    s_lshr_b32 s34, s21, 16
-; SI-NEXT:    s_lshr_b32 s31, s19, 16
-; SI-NEXT:    s_lshr_b32 s30, s17, 16
+; SI-NEXT:    s_lshr_b32 s51, s41, 16
+; SI-NEXT:    s_lshr_b32 s50, s15, 16
+; SI-NEXT:    s_lshr_b32 s49, s13, 16
+; SI-NEXT:    s_lshr_b32 s48, s11, 16
+; SI-NEXT:    s_lshr_b32 s39, s9, 16
+; SI-NEXT:    s_lshr_b32 s38, s7, 16
+; SI-NEXT:    s_lshr_b32 s37, s5, 16
+; SI-NEXT:    s_lshr_b32 s36, s29, 16
+; SI-NEXT:    s_lshr_b32 s35, s27, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s31, s23, 16
+; SI-NEXT:    s_lshr_b32 s30, s21, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s19, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[40:41], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[14:15], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[12:13], 16
@@ -34348,8 +34776,44 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB49_4
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[94:95], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[94:95], -1
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[94:95], s[94:95], exec
+; SI-NEXT:    s_cselect_b32 s43, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s43, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[26:27], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[24:25], s[14:15], 1.0
 ; SI-NEXT:    v_add_f64 v[22:23], s[12:13], 1.0
@@ -34399,38 +34863,8 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v56, 16, v3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshrrev_b32_e32 v57, 16, v1
-; SI-NEXT:    s_branch .LBB49_5
-; SI-NEXT:  .LBB49_3:
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    s_branch .LBB49_2
-; SI-NEXT:  .LBB49_4:
+; SI-NEXT:    s_branch .LBB49_6
+; SI-NEXT:  .LBB49_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
@@ -34459,27 +34893,27 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v22, s12
 ; SI-NEXT:    v_mov_b32_e32 v24, s14
 ; SI-NEXT:    v_mov_b32_e32 v26, s40
-; SI-NEXT:    v_mov_b32_e32 v52, s53
-; SI-NEXT:    v_mov_b32_e32 v53, s52
-; SI-NEXT:    v_mov_b32_e32 v54, s51
-; SI-NEXT:    v_mov_b32_e32 v55, s50
-; SI-NEXT:    v_mov_b32_e32 v40, s49
-; SI-NEXT:    v_mov_b32_e32 v41, s48
-; SI-NEXT:    v_mov_b32_e32 v42, s39
+; SI-NEXT:    v_mov_b32_e32 v52, s51
+; SI-NEXT:    v_mov_b32_e32 v53, s50
+; SI-NEXT:    v_mov_b32_e32 v54, s49
+; SI-NEXT:    v_mov_b32_e32 v55, s48
+; SI-NEXT:    v_mov_b32_e32 v40, s39
+; SI-NEXT:    v_mov_b32_e32 v41, s38
+; SI-NEXT:    v_mov_b32_e32 v42, s37
 ; SI-NEXT:    s_waitcnt expcnt(6)
-; SI-NEXT:    v_mov_b32_e32 v43, s38
+; SI-NEXT:    v_mov_b32_e32 v43, s36
 ; SI-NEXT:    s_waitcnt expcnt(5)
-; SI-NEXT:    v_mov_b32_e32 v44, s37
+; SI-NEXT:    v_mov_b32_e32 v44, s35
 ; SI-NEXT:    s_waitcnt expcnt(4)
-; SI-NEXT:    v_mov_b32_e32 v45, s36
+; SI-NEXT:    v_mov_b32_e32 v45, s34
 ; SI-NEXT:    s_waitcnt expcnt(3)
-; SI-NEXT:    v_mov_b32_e32 v46, s35
+; SI-NEXT:    v_mov_b32_e32 v46, s31
 ; SI-NEXT:    s_waitcnt expcnt(2)
-; SI-NEXT:    v_mov_b32_e32 v47, s34
+; SI-NEXT:    v_mov_b32_e32 v47, s30
 ; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_mov_b32_e32 v56, s31
+; SI-NEXT:    v_mov_b32_e32 v56, vcc_hi
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v57, s30
+; SI-NEXT:    v_mov_b32_e32 v57, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v50, s92
 ; SI-NEXT:    v_mov_b32_e32 v49, s90
 ; SI-NEXT:    v_mov_b32_e32 v48, s88
@@ -34494,7 +34928,7 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v30, s46
 ; SI-NEXT:    v_mov_b32_e32 v29, s44
 ; SI-NEXT:    v_mov_b32_e32 v28, s42
-; SI-NEXT:  .LBB49_5: ; %end
+; SI-NEXT:  .LBB49_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v39, 16, v50
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v39
@@ -34577,7 +35011,7 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v26, v26, v28
 ; SI-NEXT:    v_and_b32_e32 v27, 0xffff, v27
 ; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v52
-; SI-NEXT:    v_readlane_b32 s30, v58, 12
+; SI-NEXT:    v_readlane_b32 s30, v58, 10
 ; SI-NEXT:    v_or_b32_e32 v5, v5, v39
 ; SI-NEXT:    v_or_b32_e32 v7, v7, v38
 ; SI-NEXT:    v_or_b32_e32 v9, v9, v37
@@ -34590,9 +35024,7 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v23, v23, v30
 ; SI-NEXT:    v_or_b32_e32 v25, v25, v29
 ; SI-NEXT:    v_or_b32_e32 v27, v27, v28
-; SI-NEXT:    v_readlane_b32 s31, v58, 13
-; SI-NEXT:    v_readlane_b32 s53, v58, 11
-; SI-NEXT:    v_readlane_b32 s52, v58, 10
+; SI-NEXT:    v_readlane_b32 s31, v58, 11
 ; SI-NEXT:    v_readlane_b32 s51, v58, 9
 ; SI-NEXT:    v_readlane_b32 s50, v58, 8
 ; SI-NEXT:    v_readlane_b32 s49, v58, 7
@@ -34623,10 +35055,8 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; VI-NEXT:    buffer_store_dword v45, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v46, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v47, off, s[0:3], s32 ; 4-byte Folded Spill
-; VI-NEXT:    v_writelane_b32 v56, s34, 0
-; VI-NEXT:    v_writelane_b32 v56, s35, 1
-; VI-NEXT:    v_writelane_b32 v56, s30, 2
-; VI-NEXT:    v_writelane_b32 v56, s31, 3
+; VI-NEXT:    v_writelane_b32 v56, s30, 0
+; VI-NEXT:    v_writelane_b32 v56, s31, 1
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
 ; VI-NEXT:    v_readfirstlane_b32 s9, v13
 ; VI-NEXT:    v_readfirstlane_b32 s8, v12
@@ -34643,7 +35073,7 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s5, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_3
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s44, s9, 16
 ; VI-NEXT:    s_lshr_b32 s74, s8, 16
@@ -34666,15 +35096,51 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s61, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
 ; VI-NEXT:    s_lshr_b32 s62, s23, 16
-; VI-NEXT:    s_lshr_b32 s30, s22, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s22, 16
 ; VI-NEXT:    s_lshr_b32 s63, s21, 16
-; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s20, 16
 ; VI-NEXT:    s_lshr_b32 s72, s19, 16
-; VI-NEXT:    s_lshr_b32 s34, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s18, 16
 ; VI-NEXT:    s_lshr_b32 s73, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB49_4
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
+; VI-NEXT:    s_mov_b64 s[42:43], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[42:43], -1
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[42:43], s[42:43], exec
+; VI-NEXT:    s_cselect_b32 s42, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s42, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[26:27], s[8:9], 1.0
 ; VI-NEXT:    v_add_f64 v[24:25], s[10:11], 1.0
 ; VI-NEXT:    v_add_f64 v[22:23], s[12:13], 1.0
@@ -34717,38 +35183,8 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v42, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v47, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v44, 16, v0
-; VI-NEXT:    s_branch .LBB49_5
-; VI-NEXT:  .LBB49_3:
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    s_branch .LBB49_2
-; VI-NEXT:  .LBB49_4:
+; VI-NEXT:    s_branch .LBB49_6
+; VI-NEXT:  .LBB49_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
@@ -34777,10 +35213,10 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v25, s11
 ; VI-NEXT:    v_mov_b32_e32 v26, s8
 ; VI-NEXT:    v_mov_b32_e32 v27, s9
-; VI-NEXT:    v_mov_b32_e32 v44, s35
-; VI-NEXT:    v_mov_b32_e32 v42, s34
-; VI-NEXT:    v_mov_b32_e32 v40, s31
-; VI-NEXT:    v_mov_b32_e32 v54, s30
+; VI-NEXT:    v_mov_b32_e32 v44, s31
+; VI-NEXT:    v_mov_b32_e32 v42, s30
+; VI-NEXT:    v_mov_b32_e32 v40, vcc_hi
+; VI-NEXT:    v_mov_b32_e32 v54, vcc_lo
 ; VI-NEXT:    v_mov_b32_e32 v52, s91
 ; VI-NEXT:    v_mov_b32_e32 v50, s90
 ; VI-NEXT:    v_mov_b32_e32 v48, s89
@@ -34805,7 +35241,7 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v35, s46
 ; VI-NEXT:    v_mov_b32_e32 v33, s45
 ; VI-NEXT:    v_mov_b32_e32 v31, s44
-; VI-NEXT:  .LBB49_5: ; %end
+; VI-NEXT:  .LBB49_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v44, 16, v44
 ; VI-NEXT:    v_lshlrev_b32_e32 v42, 16, v42
 ; VI-NEXT:    v_lshlrev_b32_e32 v40, 16, v40
@@ -34859,7 +35295,7 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; VI-NEXT:    v_lshlrev_b32_e32 v29, 16, v33
 ; VI-NEXT:    v_or_b32_sdwa v26, v26, v28 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_lshlrev_b32_e32 v28, 16, v31
-; VI-NEXT:    v_readlane_b32 s30, v56, 2
+; VI-NEXT:    v_readlane_b32 s30, v56, 0
 ; VI-NEXT:    v_or_b32_sdwa v7, v7, v54 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v9, v9, v52 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v11, v11, v50 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
@@ -34871,9 +35307,7 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; VI-NEXT:    v_or_b32_sdwa v23, v23, v30 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v25, v25, v29 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v27, v27, v28 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; VI-NEXT:    v_readlane_b32 s31, v56, 3
-; VI-NEXT:    v_readlane_b32 s35, v56, 1
-; VI-NEXT:    v_readlane_b32 s34, v56, 0
+; VI-NEXT:    v_readlane_b32 s31, v56, 1
 ; VI-NEXT:    s_or_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -34907,7 +35341,7 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s44, s9, 16
 ; GFX9-NEXT:    s_lshr_b32 s74, s8, 16
@@ -34937,8 +35371,44 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s94, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s73, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[42:43], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[42:43], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[42:43], s[42:43], exec
+; GFX9-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[26:27], s[8:9], 1.0
 ; GFX9-NEXT:    v_add_f64 v[24:25], s[10:11], 1.0
 ; GFX9-NEXT:    v_add_f64 v[22:23], s[12:13], 1.0
@@ -34981,38 +35451,8 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v42, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v47, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v44, 16, v0
-; GFX9-NEXT:    s_branch .LBB49_5
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:    s_branch .LBB49_6
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
@@ -35069,7 +35509,7 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v35, s46
 ; GFX9-NEXT:    v_mov_b32_e32 v33, s45
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s44
-; GFX9-NEXT:  .LBB49_5: ; %end
+; GFX9-NEXT:  .LBB49_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -35152,12 +35592,12 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s13, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s12, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s14, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s40, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s11, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s14, s11, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s61, s10, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s40, s9, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s9, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s62, s8, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s63, s6, 16
@@ -35183,9 +35623,44 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s89, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s60, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s90, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-TRUE16-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB49_3
+; GFX11-TRUE16-NEXT:  .LBB49_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s40, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:  .LBB49_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[26:27], s[10:11], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[24:25], s[8:9], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[22:23], s[6:7], 1.0
@@ -35228,38 +35703,8 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v66, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v71, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v68, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB49_5
-; GFX11-TRUE16-NEXT:  .LBB49_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    s_branch .LBB49_2
-; GFX11-TRUE16-NEXT:  .LBB49_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB49_6
+; GFX11-TRUE16-NEXT:  .LBB49_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -35286,9 +35731,9 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v34, s73 :: v_dual_mov_b32 v39, s43
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v32, s72 :: v_dual_mov_b32 v37, s42
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v30, s63 :: v_dual_mov_b32 v35, s41
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v28, s61 :: v_dual_mov_b32 v33, s40
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v70, s59 :: v_dual_mov_b32 v31, s15
-; GFX11-TRUE16-NEXT:  .LBB49_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v28, s61 :: v_dual_mov_b32 v33, s15
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v70, s59 :: v_dual_mov_b32 v31, s14
+; GFX11-TRUE16-NEXT:  .LBB49_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v68.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v71.l
@@ -35336,12 +35781,12 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s13, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s12, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s14, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s40, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s11, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s14, s11, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s61, s10, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s40, s9, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s9, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s62, s8, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s63, s6, 16
@@ -35367,9 +35812,44 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s89, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s60, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s90, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-FAKE16-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB49_3
+; GFX11-FAKE16-NEXT:  .LBB49_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s40, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:  .LBB49_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[23:24], s[10:11], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[25:26], s[8:9], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[27:28], s[6:7], 1.0
@@ -35412,38 +35892,8 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v31
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v71, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v69, 16, v0
-; GFX11-FAKE16-NEXT:    s_branch .LBB49_5
-; GFX11-FAKE16-NEXT:  .LBB49_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    s_branch .LBB49_2
-; GFX11-FAKE16-NEXT:  .LBB49_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB49_6
+; GFX11-FAKE16-NEXT:  .LBB49_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v31, s2
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v5, s16 :: v_dual_mov_b32 v10, s20
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, s18 :: v_dual_mov_b32 v8, s22
@@ -35471,8 +35921,8 @@ define inreg <56 x i16> @bitcast_v14f64_to_v56i16_scalar(<14 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v65, s56 :: v_dual_mov_b32 v52, s45
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v51, s44 :: v_dual_mov_b32 v48, s42
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v49, s43 :: v_dual_mov_b32 v38, s41
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v36, s40 :: v_dual_mov_b32 v35, s15
-; GFX11-FAKE16-NEXT:  .LBB49_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v36, s15 :: v_dual_mov_b32 v35, s14
+; GFX11-FAKE16-NEXT:  .LBB49_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v31, 0xffff, v31
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v29, 0xffff, v29
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, 0xffff, v0
@@ -36828,10 +37278,8 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v28, s83, 25
 ; SI-NEXT:    v_writelane_b32 v28, s84, 26
 ; SI-NEXT:    v_writelane_b32 v28, s85, 27
-; SI-NEXT:    v_writelane_b32 v28, s86, 28
-; SI-NEXT:    v_writelane_b32 v28, s87, 29
-; SI-NEXT:    v_writelane_b32 v28, s30, 30
-; SI-NEXT:    v_writelane_b32 v28, s31, 31
+; SI-NEXT:    v_writelane_b32 v28, s30, 28
+; SI-NEXT:    v_writelane_b32 v28, s31, 29
 ; SI-NEXT:    v_readfirstlane_b32 s7, v13
 ; SI-NEXT:    v_readfirstlane_b32 s9, v12
 ; SI-NEXT:    v_readfirstlane_b32 s11, v11
@@ -36843,23 +37291,23 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s88, v5
 ; SI-NEXT:    v_readfirstlane_b32 s91, v4
 ; SI-NEXT:    v_readfirstlane_b32 s94, v3
-; SI-NEXT:    v_readfirstlane_b32 s31, v2
-; SI-NEXT:    v_readfirstlane_b32 s69, v1
-; SI-NEXT:    v_readfirstlane_b32 s80, v0
+; SI-NEXT:    v_readfirstlane_b32 vcc_hi, v2
+; SI-NEXT:    v_readfirstlane_b32 s35, v1
+; SI-NEXT:    v_readfirstlane_b32 s70, v0
 ; SI-NEXT:    s_lshr_b32 s78, s29, 16
 ; SI-NEXT:    s_lshr_b32 s89, s28, 16
 ; SI-NEXT:    s_lshr_b32 s92, s27, 16
 ; SI-NEXT:    s_lshr_b32 s95, s26, 16
-; SI-NEXT:    s_lshr_b32 s34, s25, 16
-; SI-NEXT:    s_lshr_b32 s68, s24, 16
-; SI-NEXT:    s_lshr_b32 s70, s23, 16
-; SI-NEXT:    s_lshr_b32 s81, s22, 16
-; SI-NEXT:    s_lshr_b32 s82, s21, 16
-; SI-NEXT:    s_lshr_b32 s83, s20, 16
-; SI-NEXT:    s_lshr_b32 s84, s19, 16
-; SI-NEXT:    s_lshr_b32 s85, s18, 16
-; SI-NEXT:    s_lshr_b32 s86, s17, 16
-; SI-NEXT:    s_lshr_b32 s87, s16, 16
+; SI-NEXT:    s_lshr_b32 s30, s25, 16
+; SI-NEXT:    s_lshr_b32 s34, s24, 16
+; SI-NEXT:    s_lshr_b32 s68, s23, 16
+; SI-NEXT:    s_lshr_b32 s71, s22, 16
+; SI-NEXT:    s_lshr_b32 s80, s21, 16
+; SI-NEXT:    s_lshr_b32 s81, s20, 16
+; SI-NEXT:    s_lshr_b32 s82, s19, 16
+; SI-NEXT:    s_lshr_b32 s83, s18, 16
+; SI-NEXT:    s_lshr_b32 s84, s17, 16
+; SI-NEXT:    s_lshr_b32 s85, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -36871,42 +37319,42 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s79, s88, 16
 ; SI-NEXT:    s_lshr_b32 s90, s91, 16
 ; SI-NEXT:    s_lshr_b32 s93, s94, 16
-; SI-NEXT:    s_lshr_b32 s30, s31, 16
-; SI-NEXT:    s_lshr_b32 s35, s69, 16
-; SI-NEXT:    s_lshr_b32 s71, s80, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, vcc_hi, 16
+; SI-NEXT:    s_lshr_b32 s31, s35, 16
+; SI-NEXT:    s_lshr_b32 s69, s70, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -36920,14 +37368,14 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s78, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s69, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s35, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -36962,56 +37410,65 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
@@ -37033,20 +37490,20 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s78, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s80, s80, 3
+; SI-NEXT:    s_add_i32 s70, s70, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s80, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_and_b32 s4, s70, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s69, s69, 3
+; SI-NEXT:    s_add_i32 s35, s35, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s69, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_and_b32 s4, s35, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s31, s31, 3
+; SI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s31, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s94, s94, 3
 ; SI-NEXT:    s_add_i32 s52, s4, 0x30000
@@ -37104,8 +37561,8 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s63, s4, 0x30000
-; SI-NEXT:  .LBB51_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v28, 30
+; SI-NEXT:  .LBB51_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v28, 28
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -37134,9 +37591,7 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v25, s61
 ; SI-NEXT:    v_mov_b32_e32 v26, s62
 ; SI-NEXT:    v_mov_b32_e32 v27, s63
-; SI-NEXT:    v_readlane_b32 s31, v28, 31
-; SI-NEXT:    v_readlane_b32 s87, v28, 29
-; SI-NEXT:    v_readlane_b32 s86, v28, 28
+; SI-NEXT:    v_readlane_b32 s31, v28, 29
 ; SI-NEXT:    v_readlane_b32 s85, v28, 27
 ; SI-NEXT:    v_readlane_b32 s84, v28, 26
 ; SI-NEXT:    v_readlane_b32 s83, v28, 25
@@ -37170,9 +37625,6 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v56i16_to_v14f64_scalar:
 ; VI:       ; %bb.0:
@@ -37213,54 +37665,54 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v28, s87, 29
 ; VI-NEXT:    v_writelane_b32 v28, s30, 30
 ; VI-NEXT:    v_writelane_b32 v28, s31, 31
-; VI-NEXT:    v_readfirstlane_b32 s86, v13
-; VI-NEXT:    v_readfirstlane_b32 s6, v12
+; VI-NEXT:    v_readfirstlane_b32 s81, v13
+; VI-NEXT:    v_readfirstlane_b32 s83, v12
 ; VI-NEXT:    v_readfirstlane_b32 s9, v11
-; VI-NEXT:    v_readfirstlane_b32 s8, v10
-; VI-NEXT:    v_readfirstlane_b32 s87, v9
-; VI-NEXT:    v_readfirstlane_b32 s12, v8
+; VI-NEXT:    v_readfirstlane_b32 s84, v10
+; VI-NEXT:    v_readfirstlane_b32 s85, v9
+; VI-NEXT:    v_readfirstlane_b32 s8, v8
 ; VI-NEXT:    v_readfirstlane_b32 s73, v7
-; VI-NEXT:    v_readfirstlane_b32 s77, v6
-; VI-NEXT:    v_readfirstlane_b32 s88, v5
+; VI-NEXT:    v_readfirstlane_b32 s75, v6
+; VI-NEXT:    v_readfirstlane_b32 s77, v5
 ; VI-NEXT:    v_readfirstlane_b32 s91, v4
-; VI-NEXT:    v_readfirstlane_b32 s34, v3
-; VI-NEXT:    v_readfirstlane_b32 s69, v2
-; VI-NEXT:    v_readfirstlane_b32 s81, v1
-; VI-NEXT:    v_readfirstlane_b32 s84, v0
+; VI-NEXT:    v_readfirstlane_b32 s30, v3
+; VI-NEXT:    v_readfirstlane_b32 s35, v2
+; VI-NEXT:    v_readfirstlane_b32 s71, v1
+; VI-NEXT:    v_readfirstlane_b32 s82, v0
 ; VI-NEXT:    s_lshr_b32 s79, s29, 16
 ; VI-NEXT:    s_lshr_b32 s90, s28, 16
-; VI-NEXT:    s_lshr_b32 s31, s27, 16
-; VI-NEXT:    s_lshr_b32 s67, s26, 16
-; VI-NEXT:    s_lshr_b32 s70, s25, 16
-; VI-NEXT:    s_lshr_b32 s80, s24, 16
-; VI-NEXT:    s_lshr_b32 s82, s23, 16
-; VI-NEXT:    s_lshr_b32 s85, s22, 16
-; VI-NEXT:    s_lshr_b32 s7, s21, 16
-; VI-NEXT:    s_lshr_b32 s11, s20, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s27, 16
+; VI-NEXT:    s_lshr_b32 s34, s26, 16
+; VI-NEXT:    s_lshr_b32 s66, s25, 16
+; VI-NEXT:    s_lshr_b32 s68, s24, 16
+; VI-NEXT:    s_lshr_b32 s69, s23, 16
+; VI-NEXT:    s_lshr_b32 s80, s22, 16
+; VI-NEXT:    s_lshr_b32 s86, s21, 16
+; VI-NEXT:    s_lshr_b32 s87, s20, 16
 ; VI-NEXT:    s_lshr_b32 s13, s19, 16
 ; VI-NEXT:    s_lshr_b32 s15, s18, 16
-; VI-NEXT:    s_lshr_b32 s10, s17, 16
-; VI-NEXT:    s_lshr_b32 s75, s16, 16
-; VI-NEXT:    s_lshr_b32 s64, s86, 16
-; VI-NEXT:    s_lshr_b32 s65, s6, 16
-; VI-NEXT:    s_lshr_b32 s66, s9, 16
-; VI-NEXT:    s_lshr_b32 s14, s8, 16
-; VI-NEXT:    s_lshr_b32 s72, s87, 16
-; VI-NEXT:    s_lshr_b32 s74, s12, 16
+; VI-NEXT:    s_lshr_b32 s88, s17, 16
+; VI-NEXT:    s_lshr_b32 s7, s16, 16
+; VI-NEXT:    s_lshr_b32 s64, s81, 16
+; VI-NEXT:    s_lshr_b32 s10, s83, 16
+; VI-NEXT:    s_lshr_b32 s12, s9, 16
+; VI-NEXT:    s_lshr_b32 s14, s84, 16
+; VI-NEXT:    s_lshr_b32 s72, s85, 16
+; VI-NEXT:    s_lshr_b32 s74, s8, 16
 ; VI-NEXT:    s_lshr_b32 s76, s73, 16
-; VI-NEXT:    s_lshr_b32 s78, s77, 16
-; VI-NEXT:    s_lshr_b32 s89, s88, 16
-; VI-NEXT:    s_lshr_b32 s30, s91, 16
-; VI-NEXT:    s_lshr_b32 s35, s34, 16
-; VI-NEXT:    s_lshr_b32 s68, s69, 16
-; VI-NEXT:    s_lshr_b32 s71, s81, 16
-; VI-NEXT:    s_lshr_b32 s83, s84, 16
+; VI-NEXT:    s_lshr_b32 s78, s75, 16
+; VI-NEXT:    s_lshr_b32 s89, s77, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s91, 16
+; VI-NEXT:    s_lshr_b32 s31, s30, 16
+; VI-NEXT:    s_lshr_b32 s65, s35, 16
+; VI-NEXT:    s_lshr_b32 s67, s71, 16
+; VI-NEXT:    s_lshr_b32 s70, s82, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s75, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
 ; VI-NEXT:    s_lshl_b32 s5, s15, 16
@@ -37268,32 +37720,32 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
 ; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s10, 16
+; VI-NEXT:    s_lshl_b32 s41, s88, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s11, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s7, 16
+; VI-NEXT:    s_lshl_b32 s5, s86, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
@@ -37301,58 +37753,146 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s79, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s84
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s82
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s81
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s71
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s69
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s35
+; VI-NEXT:    s_lshl_b32 s5, s65, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s88
+; VI-NEXT:    s_and_b32 s4, 0xffff, s77
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s77
+; VI-NEXT:    s_and_b32 s4, 0xffff, s75
 ; VI-NEXT:    s_lshl_b32 s5, s78, 16
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s73
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s12
+; VI-NEXT:    s_and_b32 s4, 0xffff, s8
 ; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s58, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s87
+; VI-NEXT:    s_and_b32 s4, 0xffff, s85
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s8
+; VI-NEXT:    s_and_b32 s4, 0xffff, s84
 ; VI-NEXT:    s_lshl_b32 s5, s14, 16
 ; VI-NEXT:    s_or_b32 s60, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s9
-; VI-NEXT:    s_lshl_b32 s5, s66, 16
+; VI-NEXT:    s_lshl_b32 s5, s12, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s6
-; VI-NEXT:    s_lshl_b32 s5, s65, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s83
+; VI-NEXT:    s_lshl_b32 s5, s10, 16
 ; VI-NEXT:    s_or_b32 s62, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s86
+; VI-NEXT:    s_and_b32 s4, 0xffff, s81
 ; VI-NEXT:    s_lshl_b32 s5, s64, 16
 ; VI-NEXT:    s_or_b32 s63, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    ; implicit-def: $vgpr29 : SGPR spill to VGPR lane
+; VI-NEXT:    s_mov_b32 s11, s9
+; VI-NEXT:    v_writelane_b32 v29, s26, 0
+; VI-NEXT:    s_mov_b32 s26, s27
+; VI-NEXT:    s_mov_b32 s27, s77
+; VI-NEXT:    v_writelane_b32 v29, s91, 1
+; VI-NEXT:    s_mov_b32 s91, s88
+; VI-NEXT:    s_mov_b32 s88, s28
+; VI-NEXT:    s_mov_b32 s28, s75
+; VI-NEXT:    s_mov_b32 s77, s29
+; VI-NEXT:    s_mov_b32 s29, s81
+; VI-NEXT:    s_mov_b32 s81, s68
+; VI-NEXT:    s_mov_b32 s68, s34
+; VI-NEXT:    s_mov_b32 s34, s31
+; VI-NEXT:    s_mov_b32 s31, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, s90
+; VI-NEXT:    s_mov_b32 s90, s89
+; VI-NEXT:    s_mov_b32 s89, s79
+; VI-NEXT:    s_mov_b32 s79, s78
+; VI-NEXT:    s_mov_b32 s78, s76
+; VI-NEXT:    s_mov_b32 s76, s74
+; VI-NEXT:    s_mov_b32 s74, s72
+; VI-NEXT:    s_mov_b32 s72, s14
+; VI-NEXT:    s_mov_b32 s14, s12
+; VI-NEXT:    s_mov_b32 s12, s10
+; VI-NEXT:    s_mov_b32 s10, s64
+; VI-NEXT:    s_mov_b32 s9, s83
+; VI-NEXT:    s_mov_b32 s83, s69
+; VI-NEXT:    s_mov_b32 s69, s65
+; VI-NEXT:    s_mov_b32 s6, s13
+; VI-NEXT:    s_mov_b32 s13, s84
+; VI-NEXT:    s_mov_b32 s84, s70
+; VI-NEXT:    s_mov_b32 s70, s66
+; VI-NEXT:    s_mov_b32 s75, s73
+; VI-NEXT:    s_mov_b32 s73, s8
+; VI-NEXT:    s_mov_b32 s8, s15
+; VI-NEXT:    s_mov_b32 s15, s85
+; VI-NEXT:    s_mov_b32 s85, s80
+; VI-NEXT:    s_mov_b32 s80, s67
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    s_mov_b32 s67, s80
+; VI-NEXT:    s_mov_b32 s80, s85
+; VI-NEXT:    s_mov_b32 s85, s15
+; VI-NEXT:    s_mov_b32 s15, s8
+; VI-NEXT:    s_mov_b32 s8, s73
+; VI-NEXT:    s_mov_b32 s73, s75
+; VI-NEXT:    s_mov_b32 s66, s70
+; VI-NEXT:    s_mov_b32 s70, s84
+; VI-NEXT:    s_mov_b32 s84, s13
+; VI-NEXT:    s_mov_b32 s13, s6
+; VI-NEXT:    s_mov_b32 s65, s69
+; VI-NEXT:    s_mov_b32 s69, s83
+; VI-NEXT:    s_mov_b32 s83, s9
+; VI-NEXT:    s_mov_b32 s9, s11
+; VI-NEXT:    s_mov_b32 s64, s10
+; VI-NEXT:    s_mov_b32 s10, s12
+; VI-NEXT:    s_mov_b32 s12, s14
+; VI-NEXT:    s_mov_b32 s14, s72
+; VI-NEXT:    s_mov_b32 s72, s74
+; VI-NEXT:    s_mov_b32 s74, s76
+; VI-NEXT:    s_mov_b32 s76, s78
+; VI-NEXT:    s_mov_b32 s78, s79
+; VI-NEXT:    s_mov_b32 s79, s89
+; VI-NEXT:    s_mov_b32 s89, s90
+; VI-NEXT:    s_mov_b32 s90, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, s31
+; VI-NEXT:    s_mov_b32 s31, s34
+; VI-NEXT:    s_mov_b32 s34, s68
+; VI-NEXT:    s_mov_b32 s68, s81
+; VI-NEXT:    s_mov_b32 s81, s29
+; VI-NEXT:    s_mov_b32 s29, s77
+; VI-NEXT:    s_mov_b32 s75, s28
+; VI-NEXT:    s_mov_b32 s28, s88
+; VI-NEXT:    s_mov_b32 s88, s91
+; VI-NEXT:    v_readlane_b32 s91, v29, 1
+; VI-NEXT:    s_mov_b32 s77, s27
+; VI-NEXT:    s_mov_b32 s27, s26
+; VI-NEXT:    v_readlane_b32 s26, v29, 0
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s75, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_and_b32 s5, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s10, s10, 16
-; VI-NEXT:    s_or_b32 s5, s10, s5
+; VI-NEXT:    s_lshl_b32 s6, s88, 16
+; VI-NEXT:    s_or_b32 s5, s6, s5
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; VI-NEXT:    s_add_i32 s37, s5, 0x30000
@@ -37367,42 +37907,42 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s11, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s7, 16
+; VI-NEXT:    s_lshl_b32 s5, s86, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s26, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s27, s27, 3
 ; VI-NEXT:    s_add_i32 s46, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s27, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s28, s28, 3
 ; VI-NEXT:    s_add_i32 s47, s4, 0x30000
@@ -37414,37 +37954,37 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s79, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s84, s84, 3
+; VI-NEXT:    s_add_i32 s82, s82, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s84, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_and_b32 s4, s82, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s81, s81, 3
+; VI-NEXT:    s_add_i32 s71, s71, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s81, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_and_b32 s4, s71, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s69, s69, 3
+; VI-NEXT:    s_add_i32 s35, s35, 3
 ; VI-NEXT:    s_add_i32 s51, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s69, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_and_b32 s4, s35, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s65, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s34, s34, 3
+; VI-NEXT:    s_add_i32 s30, s30, 3
 ; VI-NEXT:    s_add_i32 s52, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s34, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, s30, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s91, s91, 3
 ; VI-NEXT:    s_add_i32 s53, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s91, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s88, s88, 3
+; VI-NEXT:    s_add_i32 s88, s77, 3
 ; VI-NEXT:    s_add_i32 s54, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s88, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s77, s77, 3
+; VI-NEXT:    s_add_i32 s77, s75, 3
 ; VI-NEXT:    s_add_i32 s55, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s77, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s78, 16
@@ -37454,17 +37994,17 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    s_and_b32 s4, s75, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s73, s12, 3
+; VI-NEXT:    s_add_i32 s73, s8, 3
 ; VI-NEXT:    s_add_i32 s57, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s73, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s15, s87, 3
+; VI-NEXT:    s_add_i32 s15, s85, 3
 ; VI-NEXT:    s_add_i32 s58, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s15, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s72, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s13, s8, 3
+; VI-NEXT:    s_add_i32 s13, s84, 3
 ; VI-NEXT:    s_add_i32 s59, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s13, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s14, 16
@@ -37472,20 +38012,20 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    s_add_i32 s11, s9, 3
 ; VI-NEXT:    s_add_i32 s60, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s11, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s66, 16
+; VI-NEXT:    s_lshl_b32 s5, s12, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s9, s6, 3
+; VI-NEXT:    s_add_i32 s9, s83, 3
 ; VI-NEXT:    s_add_i32 s61, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s9, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s65, 16
+; VI-NEXT:    s_lshl_b32 s5, s10, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s7, s86, 3
+; VI-NEXT:    s_add_i32 s7, s81, 3
 ; VI-NEXT:    s_add_i32 s62, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s64, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s63, s4, 0x30000
-; VI-NEXT:  .LBB51_3: ; %end
+; VI-NEXT:  .LBB51_5: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v28, 30
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
@@ -37552,96 +38092,6 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    ; implicit-def: $vgpr29 : SGPR spill to VGPR lane
-; VI-NEXT:    s_mov_b32 vcc_lo, s64
-; VI-NEXT:    v_writelane_b32 v29, s75, 0
-; VI-NEXT:    s_mov_b32 vcc_hi, s65
-; VI-NEXT:    s_mov_b32 s75, s73
-; VI-NEXT:    s_mov_b32 s73, s12
-; VI-NEXT:    v_writelane_b32 v29, s25, 1
-; VI-NEXT:    s_mov_b32 s25, s91
-; VI-NEXT:    s_mov_b32 s91, s26
-; VI-NEXT:    s_mov_b32 s26, s27
-; VI-NEXT:    s_mov_b32 s27, s88
-; VI-NEXT:    s_mov_b32 s88, s28
-; VI-NEXT:    s_mov_b32 s28, s77
-; VI-NEXT:    s_mov_b32 s77, s29
-; VI-NEXT:    s_mov_b32 s29, s15
-; VI-NEXT:    s_mov_b32 s15, s87
-; VI-NEXT:    s_mov_b32 s87, s85
-; VI-NEXT:    s_mov_b32 s85, s82
-; VI-NEXT:    s_mov_b32 s82, s71
-; VI-NEXT:    s_mov_b32 s71, s68
-; VI-NEXT:    s_mov_b32 s68, s35
-; VI-NEXT:    s_mov_b32 s35, s31
-; VI-NEXT:    s_mov_b32 s31, s30
-; VI-NEXT:    s_mov_b32 s30, s90
-; VI-NEXT:    s_mov_b32 s90, s89
-; VI-NEXT:    s_mov_b32 s89, s79
-; VI-NEXT:    s_mov_b32 s79, s78
-; VI-NEXT:    s_mov_b32 s78, s76
-; VI-NEXT:    s_mov_b32 s76, s74
-; VI-NEXT:    s_mov_b32 s74, s72
-; VI-NEXT:    s_mov_b32 s72, s14
-; VI-NEXT:    s_mov_b32 s14, s66
-; VI-NEXT:    s_mov_b32 s12, s10
-; VI-NEXT:    s_mov_b32 s10, s13
-; VI-NEXT:    s_mov_b32 s13, s8
-; VI-NEXT:    s_mov_b32 s8, s11
-; VI-NEXT:    s_mov_b32 s11, s9
-; VI-NEXT:    s_mov_b32 s9, s6
-; VI-NEXT:    s_mov_b32 s6, s7
-; VI-NEXT:    s_mov_b32 s7, s86
-; VI-NEXT:    s_mov_b32 s86, s83
-; VI-NEXT:    s_mov_b32 s83, s80
-; VI-NEXT:    s_mov_b32 s80, s70
-; VI-NEXT:    s_mov_b32 s70, s67
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_mov_b32 s67, s70
-; VI-NEXT:    s_mov_b32 s70, s80
-; VI-NEXT:    s_mov_b32 s80, s83
-; VI-NEXT:    s_mov_b32 s83, s86
-; VI-NEXT:    s_mov_b32 s86, s7
-; VI-NEXT:    s_mov_b32 s7, s6
-; VI-NEXT:    s_mov_b32 s6, s9
-; VI-NEXT:    s_mov_b32 s9, s11
-; VI-NEXT:    s_mov_b32 s11, s8
-; VI-NEXT:    s_mov_b32 s8, s13
-; VI-NEXT:    s_mov_b32 s13, s10
-; VI-NEXT:    s_mov_b32 s10, s12
-; VI-NEXT:    s_mov_b32 s66, s14
-; VI-NEXT:    s_mov_b32 s14, s72
-; VI-NEXT:    s_mov_b32 s72, s74
-; VI-NEXT:    s_mov_b32 s74, s76
-; VI-NEXT:    s_mov_b32 s76, s78
-; VI-NEXT:    s_mov_b32 s78, s79
-; VI-NEXT:    s_mov_b32 s79, s89
-; VI-NEXT:    s_mov_b32 s89, s90
-; VI-NEXT:    s_mov_b32 s90, s30
-; VI-NEXT:    s_mov_b32 s30, s31
-; VI-NEXT:    s_mov_b32 s31, s35
-; VI-NEXT:    s_mov_b32 s35, s68
-; VI-NEXT:    s_mov_b32 s68, s71
-; VI-NEXT:    s_mov_b32 s71, s82
-; VI-NEXT:    s_mov_b32 s82, s85
-; VI-NEXT:    s_mov_b32 s85, s87
-; VI-NEXT:    s_mov_b32 s87, s15
-; VI-NEXT:    s_mov_b32 s15, s29
-; VI-NEXT:    s_mov_b32 s29, s77
-; VI-NEXT:    s_mov_b32 s77, s28
-; VI-NEXT:    s_mov_b32 s28, s88
-; VI-NEXT:    s_mov_b32 s88, s27
-; VI-NEXT:    s_mov_b32 s27, s26
-; VI-NEXT:    s_mov_b32 s26, s91
-; VI-NEXT:    s_mov_b32 s91, s25
-; VI-NEXT:    v_readlane_b32 s25, v29, 1
-; VI-NEXT:    s_mov_b32 s12, s73
-; VI-NEXT:    s_mov_b32 s73, s75
-; VI-NEXT:    v_readlane_b32 s75, v29, 0
-; VI-NEXT:    s_mov_b32 s65, vcc_hi
-; VI-NEXT:    s_mov_b32 s64, vcc_lo
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v56i16_to_v14f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -37733,10 +38183,18 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s74
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s62, s62, s73
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s72
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_4
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -37765,10 +38223,8 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v25, s61, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v26, s62, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v27, s63, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB51_5
-; GFX9-NEXT:  .LBB51_3:
-; GFX9-NEXT:    s_branch .LBB51_2
-; GFX9-NEXT:  .LBB51_4:
+; GFX9-NEXT:    s_branch .LBB51_6
+; GFX9-NEXT:  .LBB51_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -37801,7 +38257,7 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB51_5: ; %end
+; GFX9-NEXT:  .LBB51_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -37892,11 +38348,16 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s26, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB51_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB51_4
-; GFX11-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB51_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -37926,8 +38387,6 @@ define inreg <14 x double> @bitcast_v56i16_to_v14f64_scalar(<56 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v26, s26, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v27, s27, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB51_3:
-; GFX11-NEXT:    s_branch .LBB51_2
 ; GFX11-NEXT:  .LBB51_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -38756,10 +39215,8 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; SI-NEXT:    v_writelane_b32 v58, s49, 7
 ; SI-NEXT:    v_writelane_b32 v58, s50, 8
 ; SI-NEXT:    v_writelane_b32 v58, s51, 9
-; SI-NEXT:    v_writelane_b32 v58, s52, 10
-; SI-NEXT:    v_writelane_b32 v58, s53, 11
-; SI-NEXT:    v_writelane_b32 v58, s30, 12
-; SI-NEXT:    v_writelane_b32 v58, s31, 13
+; SI-NEXT:    v_writelane_b32 v58, s30, 10
+; SI-NEXT:    v_writelane_b32 v58, s31, 11
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
 ; SI-NEXT:    v_readfirstlane_b32 s41, v13
 ; SI-NEXT:    v_readfirstlane_b32 s40, v12
@@ -38776,22 +39233,22 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s5, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_3
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_lshr_b32 s53, s41, 16
-; SI-NEXT:    s_lshr_b32 s52, s15, 16
-; SI-NEXT:    s_lshr_b32 s51, s13, 16
-; SI-NEXT:    s_lshr_b32 s50, s11, 16
-; SI-NEXT:    s_lshr_b32 s49, s9, 16
-; SI-NEXT:    s_lshr_b32 s48, s7, 16
-; SI-NEXT:    s_lshr_b32 s39, s5, 16
-; SI-NEXT:    s_lshr_b32 s38, s29, 16
-; SI-NEXT:    s_lshr_b32 s37, s27, 16
-; SI-NEXT:    s_lshr_b32 s36, s25, 16
-; SI-NEXT:    s_lshr_b32 s35, s23, 16
-; SI-NEXT:    s_lshr_b32 s34, s21, 16
-; SI-NEXT:    s_lshr_b32 s31, s19, 16
-; SI-NEXT:    s_lshr_b32 s30, s17, 16
+; SI-NEXT:    s_lshr_b32 s51, s41, 16
+; SI-NEXT:    s_lshr_b32 s50, s15, 16
+; SI-NEXT:    s_lshr_b32 s49, s13, 16
+; SI-NEXT:    s_lshr_b32 s48, s11, 16
+; SI-NEXT:    s_lshr_b32 s39, s9, 16
+; SI-NEXT:    s_lshr_b32 s38, s7, 16
+; SI-NEXT:    s_lshr_b32 s37, s5, 16
+; SI-NEXT:    s_lshr_b32 s36, s29, 16
+; SI-NEXT:    s_lshr_b32 s35, s27, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s31, s23, 16
+; SI-NEXT:    s_lshr_b32 s30, s21, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s19, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[42:43], s[40:41], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[14:15], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[12:13], 16
@@ -38806,8 +39263,44 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; SI-NEXT:    s_lshr_b64 s[88:89], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB53_4
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[94:95], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[94:95], -1
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $vcc_hi
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr31
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[94:95], s[94:95], exec
+; SI-NEXT:    s_cselect_b32 s43, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s43, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[26:27], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[24:25], s[14:15], 1.0
 ; SI-NEXT:    v_add_f64 v[22:23], s[12:13], 1.0
@@ -38857,38 +39350,8 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; SI-NEXT:    v_lshrrev_b32_e32 v56, 16, v3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshrrev_b32_e32 v57, 16, v1
-; SI-NEXT:    s_branch .LBB53_5
-; SI-NEXT:  .LBB53_3:
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr31
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    s_branch .LBB53_2
-; SI-NEXT:  .LBB53_4:
+; SI-NEXT:    s_branch .LBB53_6
+; SI-NEXT:  .LBB53_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
@@ -38917,27 +39380,27 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v22, s12
 ; SI-NEXT:    v_mov_b32_e32 v24, s14
 ; SI-NEXT:    v_mov_b32_e32 v26, s40
-; SI-NEXT:    v_mov_b32_e32 v52, s53
-; SI-NEXT:    v_mov_b32_e32 v53, s52
-; SI-NEXT:    v_mov_b32_e32 v54, s51
-; SI-NEXT:    v_mov_b32_e32 v55, s50
-; SI-NEXT:    v_mov_b32_e32 v40, s49
-; SI-NEXT:    v_mov_b32_e32 v41, s48
-; SI-NEXT:    v_mov_b32_e32 v42, s39
+; SI-NEXT:    v_mov_b32_e32 v52, s51
+; SI-NEXT:    v_mov_b32_e32 v53, s50
+; SI-NEXT:    v_mov_b32_e32 v54, s49
+; SI-NEXT:    v_mov_b32_e32 v55, s48
+; SI-NEXT:    v_mov_b32_e32 v40, s39
+; SI-NEXT:    v_mov_b32_e32 v41, s38
+; SI-NEXT:    v_mov_b32_e32 v42, s37
 ; SI-NEXT:    s_waitcnt expcnt(6)
-; SI-NEXT:    v_mov_b32_e32 v43, s38
+; SI-NEXT:    v_mov_b32_e32 v43, s36
 ; SI-NEXT:    s_waitcnt expcnt(5)
-; SI-NEXT:    v_mov_b32_e32 v44, s37
+; SI-NEXT:    v_mov_b32_e32 v44, s35
 ; SI-NEXT:    s_waitcnt expcnt(4)
-; SI-NEXT:    v_mov_b32_e32 v45, s36
+; SI-NEXT:    v_mov_b32_e32 v45, s34
 ; SI-NEXT:    s_waitcnt expcnt(3)
-; SI-NEXT:    v_mov_b32_e32 v46, s35
+; SI-NEXT:    v_mov_b32_e32 v46, s31
 ; SI-NEXT:    s_waitcnt expcnt(2)
-; SI-NEXT:    v_mov_b32_e32 v47, s34
+; SI-NEXT:    v_mov_b32_e32 v47, s30
 ; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_mov_b32_e32 v56, s31
+; SI-NEXT:    v_mov_b32_e32 v56, vcc_hi
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_mov_b32_e32 v57, s30
+; SI-NEXT:    v_mov_b32_e32 v57, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v50, s92
 ; SI-NEXT:    v_mov_b32_e32 v49, s90
 ; SI-NEXT:    v_mov_b32_e32 v48, s88
@@ -38952,7 +39415,7 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v30, s46
 ; SI-NEXT:    v_mov_b32_e32 v29, s44
 ; SI-NEXT:    v_mov_b32_e32 v28, s42
-; SI-NEXT:  .LBB53_5: ; %end
+; SI-NEXT:  .LBB53_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v39, 16, v50
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v39
@@ -39035,7 +39498,7 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; SI-NEXT:    v_or_b32_e32 v26, v26, v28
 ; SI-NEXT:    v_and_b32_e32 v27, 0xffff, v27
 ; SI-NEXT:    v_lshlrev_b32_e32 v28, 16, v52
-; SI-NEXT:    v_readlane_b32 s30, v58, 12
+; SI-NEXT:    v_readlane_b32 s30, v58, 10
 ; SI-NEXT:    v_or_b32_e32 v5, v5, v39
 ; SI-NEXT:    v_or_b32_e32 v7, v7, v38
 ; SI-NEXT:    v_or_b32_e32 v9, v9, v37
@@ -39048,9 +39511,7 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; SI-NEXT:    v_or_b32_e32 v23, v23, v30
 ; SI-NEXT:    v_or_b32_e32 v25, v25, v29
 ; SI-NEXT:    v_or_b32_e32 v27, v27, v28
-; SI-NEXT:    v_readlane_b32 s31, v58, 13
-; SI-NEXT:    v_readlane_b32 s53, v58, 11
-; SI-NEXT:    v_readlane_b32 s52, v58, 10
+; SI-NEXT:    v_readlane_b32 s31, v58, 11
 ; SI-NEXT:    v_readlane_b32 s51, v58, 9
 ; SI-NEXT:    v_readlane_b32 s50, v58, 8
 ; SI-NEXT:    v_readlane_b32 s49, v58, 7
@@ -39081,10 +39542,8 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; VI-NEXT:    buffer_store_dword v45, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v46, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v47, off, s[0:3], s32 ; 4-byte Folded Spill
-; VI-NEXT:    v_writelane_b32 v56, s34, 0
-; VI-NEXT:    v_writelane_b32 v56, s35, 1
-; VI-NEXT:    v_writelane_b32 v56, s30, 2
-; VI-NEXT:    v_writelane_b32 v56, s31, 3
+; VI-NEXT:    v_writelane_b32 v56, s30, 0
+; VI-NEXT:    v_writelane_b32 v56, s31, 1
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
 ; VI-NEXT:    v_readfirstlane_b32 s9, v13
 ; VI-NEXT:    v_readfirstlane_b32 s8, v12
@@ -39101,7 +39560,7 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s5, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_3
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s44, s9, 16
 ; VI-NEXT:    s_lshr_b32 s74, s8, 16
@@ -39124,15 +39583,51 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; VI-NEXT:    s_lshr_b32 s61, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
 ; VI-NEXT:    s_lshr_b32 s62, s23, 16
-; VI-NEXT:    s_lshr_b32 s30, s22, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s22, 16
 ; VI-NEXT:    s_lshr_b32 s63, s21, 16
-; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s20, 16
 ; VI-NEXT:    s_lshr_b32 s72, s19, 16
-; VI-NEXT:    s_lshr_b32 s34, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s18, 16
 ; VI-NEXT:    s_lshr_b32 s73, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB53_4
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
+; VI-NEXT:    s_mov_b64 s[42:43], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[42:43], -1
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr45
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr44
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[42:43], s[42:43], exec
+; VI-NEXT:    s_cselect_b32 s42, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s42, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[26:27], s[8:9], 1.0
 ; VI-NEXT:    v_add_f64 v[24:25], s[10:11], 1.0
 ; VI-NEXT:    v_add_f64 v[22:23], s[12:13], 1.0
@@ -39175,38 +39670,8 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; VI-NEXT:    v_lshrrev_b32_e32 v42, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v47, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v44, 16, v0
-; VI-NEXT:    s_branch .LBB53_5
-; VI-NEXT:  .LBB53_3:
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr45
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr44
-; VI-NEXT:    s_branch .LBB53_2
-; VI-NEXT:  .LBB53_4:
+; VI-NEXT:    s_branch .LBB53_6
+; VI-NEXT:  .LBB53_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
@@ -39235,10 +39700,10 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v25, s11
 ; VI-NEXT:    v_mov_b32_e32 v26, s8
 ; VI-NEXT:    v_mov_b32_e32 v27, s9
-; VI-NEXT:    v_mov_b32_e32 v44, s35
-; VI-NEXT:    v_mov_b32_e32 v42, s34
-; VI-NEXT:    v_mov_b32_e32 v40, s31
-; VI-NEXT:    v_mov_b32_e32 v54, s30
+; VI-NEXT:    v_mov_b32_e32 v44, s31
+; VI-NEXT:    v_mov_b32_e32 v42, s30
+; VI-NEXT:    v_mov_b32_e32 v40, vcc_hi
+; VI-NEXT:    v_mov_b32_e32 v54, vcc_lo
 ; VI-NEXT:    v_mov_b32_e32 v52, s91
 ; VI-NEXT:    v_mov_b32_e32 v50, s90
 ; VI-NEXT:    v_mov_b32_e32 v48, s89
@@ -39263,7 +39728,7 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v35, s46
 ; VI-NEXT:    v_mov_b32_e32 v33, s45
 ; VI-NEXT:    v_mov_b32_e32 v31, s44
-; VI-NEXT:  .LBB53_5: ; %end
+; VI-NEXT:  .LBB53_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v44, 16, v44
 ; VI-NEXT:    v_lshlrev_b32_e32 v42, 16, v42
 ; VI-NEXT:    v_lshlrev_b32_e32 v40, 16, v40
@@ -39317,7 +39782,7 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; VI-NEXT:    v_lshlrev_b32_e32 v29, 16, v33
 ; VI-NEXT:    v_or_b32_sdwa v26, v26, v28 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_lshlrev_b32_e32 v28, 16, v31
-; VI-NEXT:    v_readlane_b32 s30, v56, 2
+; VI-NEXT:    v_readlane_b32 s30, v56, 0
 ; VI-NEXT:    v_or_b32_sdwa v7, v7, v54 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v9, v9, v52 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v11, v11, v50 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
@@ -39329,9 +39794,7 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; VI-NEXT:    v_or_b32_sdwa v23, v23, v30 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v25, v25, v29 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v27, v27, v28 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; VI-NEXT:    v_readlane_b32 s31, v56, 3
-; VI-NEXT:    v_readlane_b32 s35, v56, 1
-; VI-NEXT:    v_readlane_b32 s34, v56, 0
+; VI-NEXT:    v_readlane_b32 s31, v56, 1
 ; VI-NEXT:    s_or_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -39365,7 +39828,7 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s44, s9, 16
 ; GFX9-NEXT:    s_lshr_b32 s74, s8, 16
@@ -39395,8 +39858,44 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; GFX9-NEXT:    s_lshr_b32 s94, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s73, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_4
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[42:43], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[42:43], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr45
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr44
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[42:43], s[42:43], exec
+; GFX9-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[26:27], s[8:9], 1.0
 ; GFX9-NEXT:    v_add_f64 v[24:25], s[10:11], 1.0
 ; GFX9-NEXT:    v_add_f64 v[22:23], s[12:13], 1.0
@@ -39439,38 +39938,8 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v42, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v47, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v44, 16, v0
-; GFX9-NEXT:    s_branch .LBB53_5
-; GFX9-NEXT:  .LBB53_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr45
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr44
-; GFX9-NEXT:    s_branch .LBB53_2
-; GFX9-NEXT:  .LBB53_4:
+; GFX9-NEXT:    s_branch .LBB53_6
+; GFX9-NEXT:  .LBB53_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
@@ -39527,7 +39996,7 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v35, s46
 ; GFX9-NEXT:    v_mov_b32_e32 v33, s45
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s44
-; GFX9-NEXT:  .LBB53_5: ; %end
+; GFX9-NEXT:  .LBB53_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -39610,12 +40079,12 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s13, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s12, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s14, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s40, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s11, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s14, s11, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s61, s10, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s40, s9, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s15, s9, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s62, s8, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s63, s6, 16
@@ -39641,9 +40110,44 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s89, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s60, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s90, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-TRUE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB53_3
+; GFX11-TRUE16-NEXT:  .LBB53_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s40, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:  .LBB53_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[26:27], s[10:11], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[24:25], s[8:9], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[22:23], s[6:7], 1.0
@@ -39686,38 +40190,8 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v66, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v71, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v68, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB53_5
-; GFX11-TRUE16-NEXT:  .LBB53_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-TRUE16-NEXT:    s_branch .LBB53_2
-; GFX11-TRUE16-NEXT:  .LBB53_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB53_6
+; GFX11-TRUE16-NEXT:  .LBB53_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -39744,9 +40218,9 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v34, s73 :: v_dual_mov_b32 v39, s43
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v32, s72 :: v_dual_mov_b32 v37, s42
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v30, s63 :: v_dual_mov_b32 v35, s41
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v28, s61 :: v_dual_mov_b32 v33, s40
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v70, s59 :: v_dual_mov_b32 v31, s15
-; GFX11-TRUE16-NEXT:  .LBB53_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v28, s61 :: v_dual_mov_b32 v33, s15
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v70, s59 :: v_dual_mov_b32 v31, s14
+; GFX11-TRUE16-NEXT:  .LBB53_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v68.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v71.l
@@ -39794,12 +40268,12 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s13, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s12, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s14, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s40, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s11, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s14, s11, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s61, s10, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s40, s9, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s15, s9, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s62, s8, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s63, s6, 16
@@ -39825,9 +40299,44 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s89, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s60, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s90, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-FAKE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB53_3
+; GFX11-FAKE16-NEXT:  .LBB53_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s40, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:  .LBB53_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[23:24], s[10:11], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[25:26], s[8:9], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[27:28], s[6:7], 1.0
@@ -39870,38 +40379,8 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v31
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v71, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v69, 16, v0
-; GFX11-FAKE16-NEXT:    s_branch .LBB53_5
-; GFX11-FAKE16-NEXT:  .LBB53_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr15
-; GFX11-FAKE16-NEXT:    s_branch .LBB53_2
-; GFX11-FAKE16-NEXT:  .LBB53_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB53_6
+; GFX11-FAKE16-NEXT:  .LBB53_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v31, s2
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v5, s16 :: v_dual_mov_b32 v10, s20
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, s18 :: v_dual_mov_b32 v8, s22
@@ -39929,8 +40408,8 @@ define inreg <56 x half> @bitcast_v14f64_to_v56f16_scalar(<14 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v65, s56 :: v_dual_mov_b32 v52, s45
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v51, s44 :: v_dual_mov_b32 v48, s42
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v49, s43 :: v_dual_mov_b32 v38, s41
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v36, s40 :: v_dual_mov_b32 v35, s15
-; GFX11-FAKE16-NEXT:  .LBB53_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v36, s15 :: v_dual_mov_b32 v35, s14
+; GFX11-FAKE16-NEXT:  .LBB53_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v31, 0xffff, v31
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v29, 0xffff, v29
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, 0xffff, v0
@@ -41423,10 +41902,8 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; SI-NEXT:    v_writelane_b32 v32, s83, 25
 ; SI-NEXT:    v_writelane_b32 v32, s84, 26
 ; SI-NEXT:    v_writelane_b32 v32, s85, 27
-; SI-NEXT:    v_writelane_b32 v32, s86, 28
-; SI-NEXT:    v_writelane_b32 v32, s87, 29
-; SI-NEXT:    v_writelane_b32 v32, s30, 30
-; SI-NEXT:    v_writelane_b32 v32, s31, 31
+; SI-NEXT:    v_writelane_b32 v32, s30, 28
+; SI-NEXT:    v_writelane_b32 v32, s31, 29
 ; SI-NEXT:    v_readfirstlane_b32 s6, v13
 ; SI-NEXT:    v_readfirstlane_b32 s8, v12
 ; SI-NEXT:    v_readfirstlane_b32 s10, v11
@@ -41440,21 +41917,21 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s90, v3
 ; SI-NEXT:    v_readfirstlane_b32 s92, v2
 ; SI-NEXT:    v_readfirstlane_b32 s95, v1
-; SI-NEXT:    v_readfirstlane_b32 s34, v0
+; SI-NEXT:    v_readfirstlane_b32 s30, v0
 ; SI-NEXT:    s_lshr_b32 s94, s29, 16
-; SI-NEXT:    s_lshr_b32 s30, s28, 16
-; SI-NEXT:    s_lshr_b32 s35, s27, 16
-; SI-NEXT:    s_lshr_b32 s69, s26, 16
-; SI-NEXT:    s_lshr_b32 s70, s25, 16
-; SI-NEXT:    s_lshr_b32 s71, s24, 16
-; SI-NEXT:    s_lshr_b32 s80, s23, 16
-; SI-NEXT:    s_lshr_b32 s81, s22, 16
-; SI-NEXT:    s_lshr_b32 s82, s21, 16
-; SI-NEXT:    s_lshr_b32 s83, s20, 16
-; SI-NEXT:    s_lshr_b32 s84, s19, 16
-; SI-NEXT:    s_lshr_b32 s85, s18, 16
-; SI-NEXT:    s_lshr_b32 s86, s17, 16
-; SI-NEXT:    s_lshr_b32 s87, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_lo, s28, 16
+; SI-NEXT:    s_lshr_b32 s31, s27, 16
+; SI-NEXT:    s_lshr_b32 s35, s26, 16
+; SI-NEXT:    s_lshr_b32 s68, s25, 16
+; SI-NEXT:    s_lshr_b32 s69, s24, 16
+; SI-NEXT:    s_lshr_b32 s70, s23, 16
+; SI-NEXT:    s_lshr_b32 s71, s22, 16
+; SI-NEXT:    s_lshr_b32 s80, s21, 16
+; SI-NEXT:    s_lshr_b32 s81, s20, 16
+; SI-NEXT:    s_lshr_b32 s82, s19, 16
+; SI-NEXT:    s_lshr_b32 s83, s18, 16
+; SI-NEXT:    s_lshr_b32 s84, s17, 16
+; SI-NEXT:    s_lshr_b32 s85, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -41467,59 +41944,59 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; SI-NEXT:    s_lshr_b32 s89, s88, 16
 ; SI-NEXT:    s_lshr_b32 s91, s90, 16
 ; SI-NEXT:    s_lshr_b32 s93, s92, 16
-; SI-NEXT:    s_lshr_b32 s31, s95, 16
-; SI-NEXT:    s_lshr_b32 s68, s34, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s95, 16
+; SI-NEXT:    s_lshr_b32 s34, s30, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s37, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s70, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s35, 16
+; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s48, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s94, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s34, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s95, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s92, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s93, 16
@@ -41557,11 +42034,20 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s63, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s87
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s85
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s86
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s84
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
@@ -41571,14 +42057,14 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s85
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s83
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s84
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s82
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
@@ -41588,7 +42074,7 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v5, s19
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s83
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s81
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s20
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
@@ -41597,11 +42083,11 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
 ; SI-NEXT:    v_cvt_f16_f32_e32 v6, v6
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v5, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, s80
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v4, v6, v4
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, s21
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, s71
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; SI-NEXT:    v_add_f32_e32 v6, 0x38000000, v6
@@ -41612,7 +42098,7 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s22
 ; SI-NEXT:    v_or_b32_e32 v5, v6, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v7
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s80
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, s70
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s23
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
@@ -41621,11 +42107,11 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
 ; SI-NEXT:    v_cvt_f16_f32_e32 v9, v9
 ; SI-NEXT:    v_or_b32_e32 v6, v8, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v8, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v8, s69
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; SI-NEXT:    v_or_b32_e32 v7, v9, v7
 ; SI-NEXT:    v_cvt_f32_f16_e32 v9, s24
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v10, s68
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
 ; SI-NEXT:    v_add_f32_e32 v9, 0x38000000, v9
@@ -41636,7 +42122,7 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v11, s25
 ; SI-NEXT:    v_or_b32_e32 v8, v9, v8
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v10
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, s69
+; SI-NEXT:    v_cvt_f32_f16_e32 v10, s35
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s26
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
 ; SI-NEXT:    v_cvt_f16_f32_e32 v11, v11
@@ -41645,11 +42131,11 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
 ; SI-NEXT:    v_cvt_f16_f32_e32 v12, v12
 ; SI-NEXT:    v_or_b32_e32 v9, v11, v9
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v11, s31
 ; SI-NEXT:    v_lshlrev_b32_e32 v10, 16, v10
 ; SI-NEXT:    v_or_b32_e32 v10, v12, v10
 ; SI-NEXT:    v_cvt_f32_f16_e32 v12, s27
-; SI-NEXT:    v_cvt_f32_f16_e32 v13, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v13, vcc_lo
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
 ; SI-NEXT:    v_cvt_f16_f32_e32 v11, v11
 ; SI-NEXT:    v_add_f32_e32 v12, 0x38000000, v12
@@ -41669,11 +42155,11 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_or_b32_e32 v12, v14, v12
-; SI-NEXT:    v_cvt_f32_f16_e32 v14, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, s34
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
 ; SI-NEXT:    v_or_b32_e32 v13, v15, v13
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s34
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, vcc_hi
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
 ; SI-NEXT:    v_cvt_f16_f32_e32 v14, v14
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
@@ -41783,11 +42269,8 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; SI-NEXT:    v_or_b32_e32 v26, v27, v26
 ; SI-NEXT:    v_lshlrev_b32_e32 v27, 16, v28
 ; SI-NEXT:    v_or_b32_e32 v27, v29, v27
-; SI-NEXT:    s_branch .LBB55_5
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:    s_branch .LBB55_6
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -41820,11 +42303,9 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB55_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 30
-; SI-NEXT:    v_readlane_b32 s31, v32, 31
-; SI-NEXT:    v_readlane_b32 s87, v32, 29
-; SI-NEXT:    v_readlane_b32 s86, v32, 28
+; SI-NEXT:  .LBB55_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 28
+; SI-NEXT:    v_readlane_b32 s31, v32, 29
 ; SI-NEXT:    v_readlane_b32 s85, v32, 27
 ; SI-NEXT:    v_readlane_b32 s84, v32, 26
 ; SI-NEXT:    v_readlane_b32 s83, v32, 25
@@ -41898,12 +42379,9 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; VI-NEXT:    v_writelane_b32 v32, s87, 29
 ; VI-NEXT:    v_writelane_b32 v32, s30, 30
 ; VI-NEXT:    v_writelane_b32 v32, s31, 31
+; VI-NEXT:    v_readfirstlane_b32 s6, v13
 ; VI-NEXT:    v_readfirstlane_b32 s8, v12
-; VI-NEXT:    s_lshr_b32 s15, s8, 16
 ; VI-NEXT:    v_readfirstlane_b32 s10, v11
-; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
-; VI-NEXT:    v_readfirstlane_b32 s6, v13
-; VI-NEXT:    s_lshr_b32 s61, s10, 16
 ; VI-NEXT:    v_readfirstlane_b32 s12, v10
 ; VI-NEXT:    v_readfirstlane_b32 s14, v9
 ; VI-NEXT:    v_readfirstlane_b32 s72, v8
@@ -41911,178 +42389,198 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s76, v6
 ; VI-NEXT:    v_readfirstlane_b32 s79, v5
 ; VI-NEXT:    v_readfirstlane_b32 s91, v4
-; VI-NEXT:    v_readfirstlane_b32 s34, v3
-; VI-NEXT:    v_readfirstlane_b32 s69, v2
-; VI-NEXT:    v_readfirstlane_b32 s80, v1
-; VI-NEXT:    v_readfirstlane_b32 s83, v0
-; VI-NEXT:    v_writelane_b32 v33, s15, 0
+; VI-NEXT:    v_readfirstlane_b32 s30, v3
+; VI-NEXT:    v_readfirstlane_b32 s35, v2
+; VI-NEXT:    v_readfirstlane_b32 s70, v1
+; VI-NEXT:    v_readfirstlane_b32 s81, v0
 ; VI-NEXT:    s_lshr_b32 s56, s29, 16
-; VI-NEXT:    s_lshr_b32 s75, s28, 16
+; VI-NEXT:    s_lshr_b32 s61, s28, 16
 ; VI-NEXT:    s_lshr_b32 s90, s27, 16
-; VI-NEXT:    s_lshr_b32 s31, s26, 16
-; VI-NEXT:    s_lshr_b32 s68, s25, 16
-; VI-NEXT:    s_lshr_b32 s70, s24, 16
-; VI-NEXT:    s_lshr_b32 s81, s23, 16
-; VI-NEXT:    s_lshr_b32 s84, s22, 16
-; VI-NEXT:    s_lshr_b32 s86, s21, 16
-; VI-NEXT:    s_lshr_b32 s87, s20, 16
-; VI-NEXT:    s_lshr_b32 s7, s19, 16
-; VI-NEXT:    s_lshr_b32 s9, s18, 16
-; VI-NEXT:    s_lshr_b32 s11, s17, 16
-; VI-NEXT:    s_lshr_b32 s13, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s26, 16
+; VI-NEXT:    s_lshr_b32 s34, s25, 16
+; VI-NEXT:    s_lshr_b32 s68, s24, 16
+; VI-NEXT:    s_lshr_b32 s71, s23, 16
+; VI-NEXT:    s_lshr_b32 s82, s22, 16
+; VI-NEXT:    s_lshr_b32 s84, s21, 16
+; VI-NEXT:    s_lshr_b32 s85, s20, 16
+; VI-NEXT:    s_lshr_b32 s86, s19, 16
+; VI-NEXT:    s_lshr_b32 s87, s18, 16
+; VI-NEXT:    s_lshr_b32 s7, s17, 16
+; VI-NEXT:    s_lshr_b32 s9, s16, 16
 ; VI-NEXT:    s_lshr_b32 s63, s6, 16
-; VI-NEXT:    s_lshr_b32 s60, s12, 16
+; VI-NEXT:    s_lshr_b32 s11, s8, 16
+; VI-NEXT:    s_lshr_b32 s13, s10, 16
+; VI-NEXT:    s_lshr_b32 s15, s12, 16
 ; VI-NEXT:    s_lshr_b32 s59, s14, 16
 ; VI-NEXT:    s_lshr_b32 s58, s72, 16
 ; VI-NEXT:    s_lshr_b32 s57, s74, 16
-; VI-NEXT:    s_lshr_b32 s62, s76, 16
+; VI-NEXT:    s_lshr_b32 s60, s76, 16
 ; VI-NEXT:    s_lshr_b32 s89, s79, 16
-; VI-NEXT:    s_lshr_b32 s30, s91, 16
-; VI-NEXT:    s_lshr_b32 s35, s34, 16
-; VI-NEXT:    s_lshr_b32 s71, s69, 16
-; VI-NEXT:    s_lshr_b32 s82, s80, 16
-; VI-NEXT:    s_lshr_b32 s85, s83, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s91, 16
+; VI-NEXT:    s_lshr_b32 s31, s30, 16
+; VI-NEXT:    s_lshr_b32 s69, s35, 16
+; VI-NEXT:    s_lshr_b32 s80, s70, 16
+; VI-NEXT:    s_lshr_b32 s83, s81, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
-; VI-NEXT:    v_writelane_b32 v33, s61, 1
+; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    v_writelane_b32 v33, s60, 2
-; VI-NEXT:    v_writelane_b32 v33, s59, 3
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    v_writelane_b32 v33, s15, 0
+; VI-NEXT:    v_writelane_b32 v33, s59, 1
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s13, 16
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s9, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s7, 16
+; VI-NEXT:    s_lshl_b32 s5, s86, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s11, 16
+; VI-NEXT:    s_lshl_b32 s41, s7, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
 ; VI-NEXT:    s_lshl_b32 s5, s90, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
-; VI-NEXT:    s_lshl_b32 s5, s75, 16
+; VI-NEXT:    s_lshl_b32 s5, s61, 16
 ; VI-NEXT:    s_or_b32 s48, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s56, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s83
-; VI-NEXT:    s_lshl_b32 s5, s85, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s81
+; VI-NEXT:    s_lshl_b32 s5, s83, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s80
-; VI-NEXT:    s_lshl_b32 s5, s82, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s70
+; VI-NEXT:    s_lshl_b32 s5, s80, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s69
-; VI-NEXT:    s_lshl_b32 s5, s71, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s35
+; VI-NEXT:    s_lshl_b32 s5, s69, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s34
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s30
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s91
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s79
 ; VI-NEXT:    s_lshl_b32 s5, s89, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s76
-; VI-NEXT:    s_lshl_b32 s5, s62, 16
-; VI-NEXT:    s_mov_b32 s77, s56
+; VI-NEXT:    s_lshl_b32 s5, s60, 16
+; VI-NEXT:    s_mov_b32 s73, s56
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s74
 ; VI-NEXT:    s_lshl_b32 s5, s57, 16
-; VI-NEXT:    s_mov_b32 s73, s75
-; VI-NEXT:    s_mov_b32 s75, s57
+; VI-NEXT:    s_mov_b32 s78, s57
 ; VI-NEXT:    s_or_b32 s57, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s72
 ; VI-NEXT:    s_lshl_b32 s5, s58, 16
-; VI-NEXT:    s_mov_b32 s78, s58
+; VI-NEXT:    s_mov_b32 s77, s58
 ; VI-NEXT:    s_or_b32 s58, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s14
 ; VI-NEXT:    s_lshl_b32 s5, s59, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s12
-; VI-NEXT:    s_lshl_b32 s5, s60, 16
+; VI-NEXT:    s_lshl_b32 s5, s15, 16
+; VI-NEXT:    s_mov_b32 s88, s60
 ; VI-NEXT:    s_or_b32 s60, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s10
-; VI-NEXT:    s_lshl_b32 s5, s61, 16
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
+; VI-NEXT:    s_mov_b32 s75, s61
 ; VI-NEXT:    s_or_b32 s61, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s8
-; VI-NEXT:    s_lshl_b32 s5, s15, 16
-; VI-NEXT:    s_mov_b32 s88, s62
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_or_b32 s62, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s63, 16
-; VI-NEXT:    s_mov_b32 s15, s63
+; VI-NEXT:    s_mov_b32 s15, s13
+; VI-NEXT:    s_mov_b32 s13, s11
+; VI-NEXT:    s_mov_b32 s11, s63
 ; VI-NEXT:    s_or_b32 s63, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b32 s75, s61
+; VI-NEXT:    s_mov_b32 s88, s60
+; VI-NEXT:    s_mov_b32 s73, s56
+; VI-NEXT:    s_mov_b32 s78, s57
+; VI-NEXT:    s_mov_b32 s77, s58
+; VI-NEXT:    s_mov_b32 s15, s13
+; VI-NEXT:    s_mov_b32 s13, s11
+; VI-NEXT:    s_mov_b32 s11, s63
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v27, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s13
-; VI-NEXT:    v_mov_b32_e32 v2, s11
+; VI-NEXT:    v_mov_b32_e32 v0, s9
+; VI-NEXT:    v_mov_b32_e32 v2, s7
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v27
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v27
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s9
+; VI-NEXT:    v_mov_b32_e32 v2, s87
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v27
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s7
+; VI-NEXT:    v_mov_b32_e32 v3, s86
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v27
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s87
+; VI-NEXT:    v_mov_b32_e32 v4, s85
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v27
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s86
+; VI-NEXT:    v_mov_b32_e32 v5, s84
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v27
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s84
+; VI-NEXT:    v_mov_b32_e32 v6, s82
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v27
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s81
+; VI-NEXT:    v_mov_b32_e32 v7, s71
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v27
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s70
+; VI-NEXT:    v_mov_b32_e32 v8, s68
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v27
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
-; VI-NEXT:    v_mov_b32_e32 v9, s68
+; VI-NEXT:    v_mov_b32_e32 v9, s34
 ; VI-NEXT:    v_add_f16_sdwa v9, v9, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v10, s25, v27
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
-; VI-NEXT:    v_mov_b32_e32 v10, s31
+; VI-NEXT:    v_mov_b32_e32 v10, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v10, v10, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v11, s26, v27
 ; VI-NEXT:    v_or_b32_e32 v10, v11, v10
@@ -42090,31 +42588,31 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; VI-NEXT:    v_add_f16_sdwa v11, v11, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v12, s27, v27
 ; VI-NEXT:    v_or_b32_e32 v11, v12, v11
-; VI-NEXT:    v_mov_b32_e32 v12, s73
+; VI-NEXT:    v_mov_b32_e32 v12, s75
 ; VI-NEXT:    v_add_f16_sdwa v12, v12, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v13, s28, v27
 ; VI-NEXT:    v_or_b32_e32 v12, v13, v12
-; VI-NEXT:    v_mov_b32_e32 v13, s77
+; VI-NEXT:    v_mov_b32_e32 v13, s73
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v27
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s85
+; VI-NEXT:    v_mov_b32_e32 v14, s83
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s83, v27
+; VI-NEXT:    v_add_f16_e32 v15, s81, v27
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s82
+; VI-NEXT:    v_mov_b32_e32 v15, s80
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v16, s80, v27
+; VI-NEXT:    v_add_f16_e32 v16, s70, v27
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
-; VI-NEXT:    v_mov_b32_e32 v16, s71
+; VI-NEXT:    v_mov_b32_e32 v16, s69
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v17, s69, v27
+; VI-NEXT:    v_add_f16_e32 v17, s35, v27
 ; VI-NEXT:    v_or_b32_e32 v16, v17, v16
-; VI-NEXT:    v_mov_b32_e32 v17, s35
+; VI-NEXT:    v_mov_b32_e32 v17, s31
 ; VI-NEXT:    v_add_f16_sdwa v17, v17, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v18, s34, v27
+; VI-NEXT:    v_add_f16_e32 v18, s30, v27
 ; VI-NEXT:    v_or_b32_e32 v17, v18, v17
-; VI-NEXT:    v_mov_b32_e32 v18, s30
+; VI-NEXT:    v_mov_b32_e32 v18, vcc_lo
 ; VI-NEXT:    v_add_f16_sdwa v18, v18, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v19, s91, v27
 ; VI-NEXT:    v_or_b32_e32 v18, v19, v18
@@ -42126,49 +42624,38 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; VI-NEXT:    v_add_f16_sdwa v20, v20, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v21, s76, v27
 ; VI-NEXT:    v_or_b32_e32 v20, v21, v20
-; VI-NEXT:    v_mov_b32_e32 v21, s75
+; VI-NEXT:    v_mov_b32_e32 v21, s78
 ; VI-NEXT:    v_add_f16_sdwa v21, v21, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v22, s74, v27
 ; VI-NEXT:    v_or_b32_e32 v21, v22, v21
-; VI-NEXT:    v_mov_b32_e32 v22, s78
+; VI-NEXT:    v_mov_b32_e32 v22, s77
 ; VI-NEXT:    v_add_f16_sdwa v22, v22, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v23, s72, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 3
+; VI-NEXT:    v_readlane_b32 s4, v33, 1
 ; VI-NEXT:    v_or_b32_e32 v22, v23, v22
 ; VI-NEXT:    v_mov_b32_e32 v23, s4
 ; VI-NEXT:    v_add_f16_sdwa v23, v23, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v24, s14, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 2
+; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v23, v24, v23
 ; VI-NEXT:    v_mov_b32_e32 v24, s4
 ; VI-NEXT:    v_add_f16_sdwa v24, v24, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v25, s12, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 1
 ; VI-NEXT:    v_or_b32_e32 v24, v25, v24
-; VI-NEXT:    v_mov_b32_e32 v25, s4
+; VI-NEXT:    v_mov_b32_e32 v25, s15
 ; VI-NEXT:    v_add_f16_sdwa v25, v25, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v26, s10, v27
-; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v25, v26, v25
-; VI-NEXT:    v_mov_b32_e32 v26, s4
+; VI-NEXT:    v_mov_b32_e32 v26, s13
 ; VI-NEXT:    v_add_f16_sdwa v26, v26, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v28, s8, v27
 ; VI-NEXT:    v_or_b32_e32 v26, v28, v26
-; VI-NEXT:    v_mov_b32_e32 v28, s15
+; VI-NEXT:    v_mov_b32_e32 v28, s11
 ; VI-NEXT:    v_add_f16_sdwa v28, v28, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v27, s6, v27
 ; VI-NEXT:    v_or_b32_e32 v27, v27, v28
-; VI-NEXT:    s_branch .LBB55_5
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    s_mov_b32 s73, s75
-; VI-NEXT:    s_mov_b32 s88, s62
-; VI-NEXT:    s_mov_b32 s77, s56
-; VI-NEXT:    s_mov_b32 s75, s57
-; VI-NEXT:    s_mov_b32 s78, s58
-; VI-NEXT:    s_mov_b32 s15, s63
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:    s_branch .LBB55_6
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -42201,7 +42688,7 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB55_5: ; %end
+; VI-NEXT:  .LBB55_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 30
 ; VI-NEXT:    v_readlane_b32 s31, v32, 31
 ; VI-NEXT:    v_readlane_b32 s87, v32, 29
@@ -42331,10 +42818,18 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s61, s61, s74
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s62, s62, s73
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s72
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v27, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v27 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v27 op_sel_hi:[1,0]
@@ -42364,10 +42859,8 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; GFX9-NEXT:    v_pk_add_f16 v25, s61, v27 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v26, s62, v27 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v27, s63, v27 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB55_5
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:    s_branch .LBB55_6
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -42400,7 +42893,7 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB55_5: ; %end
+; GFX9-NEXT:  .LBB55_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
 ; GFX9-NEXT:    v_readlane_b32 s54, v32, 10
 ; GFX9-NEXT:    v_readlane_b32 s53, v32, 9
@@ -42491,11 +42984,16 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s25, s58, s63
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s26, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s44, s57
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -42525,8 +43023,6 @@ define inreg <14 x double> @bitcast_v56f16_to_v14f64_scalar(<56 x half> inreg %a
 ; GFX11-NEXT:    v_pk_add_f16 v26, 0x200, s26 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v27, 0x200, s27 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -43957,215 +44453,237 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v28, s99, 33
 ; SI-NEXT:    v_writelane_b32 v28, s30, 34
 ; SI-NEXT:    v_writelane_b32 v28, s31, 35
+; SI-NEXT:    v_readfirstlane_b32 s87, v4
+; SI-NEXT:    v_readfirstlane_b32 s83, v6
+; SI-NEXT:    s_lshr_b32 s5, s87, 16
+; SI-NEXT:    ; implicit-def: $vgpr29 : SGPR spill to VGPR lane
+; SI-NEXT:    v_readfirstlane_b32 s98, v8
+; SI-NEXT:    s_lshr_b32 s7, s83, 16
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_writelane_b32 v29, s5, 0
 ; SI-NEXT:    v_readfirstlane_b32 s54, v13
 ; SI-NEXT:    v_readfirstlane_b32 s55, v12
 ; SI-NEXT:    v_readfirstlane_b32 s52, v11
 ; SI-NEXT:    v_readfirstlane_b32 s53, v10
 ; SI-NEXT:    v_readfirstlane_b32 s86, v9
-; SI-NEXT:    v_readfirstlane_b32 s98, v8
+; SI-NEXT:    s_lshr_b32 s9, s98, 16
 ; SI-NEXT:    v_readfirstlane_b32 s96, v7
-; SI-NEXT:    v_readfirstlane_b32 s83, v6
 ; SI-NEXT:    v_readfirstlane_b32 s85, v5
-; SI-NEXT:    v_readfirstlane_b32 s87, v4
 ; SI-NEXT:    v_readfirstlane_b32 s82, v3
 ; SI-NEXT:    v_readfirstlane_b32 s84, v2
 ; SI-NEXT:    v_readfirstlane_b32 s97, v1
 ; SI-NEXT:    v_readfirstlane_b32 s99, v0
-; SI-NEXT:    s_lshr_b32 s64, s29, 16
+; SI-NEXT:    v_writelane_b32 v29, s7, 1
+; SI-NEXT:    s_lshr_b32 s66, s29, 16
 ; SI-NEXT:    s_lshr_b32 s37, s28, 16
 ; SI-NEXT:    s_lshr_b32 s65, s27, 16
 ; SI-NEXT:    s_lshr_b32 s35, s26, 16
-; SI-NEXT:    s_lshr_b32 s50, s25, 16
+; SI-NEXT:    s_lshr_b32 s64, s25, 16
 ; SI-NEXT:    s_lshr_b32 s31, s24, 16
 ; SI-NEXT:    s_lshr_b32 s89, s23, 16
-; SI-NEXT:    s_lshr_b32 s95, s22, 16
-; SI-NEXT:    s_lshr_b32 s77, s21, 16
-; SI-NEXT:    s_lshr_b32 s93, s20, 16
-; SI-NEXT:    s_lshr_b32 s75, s19, 16
-; SI-NEXT:    s_lshr_b32 s92, s18, 16
-; SI-NEXT:    s_lshr_b32 s73, s17, 16
-; SI-NEXT:    s_lshr_b32 s79, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; SI-NEXT:    s_lshr_b32 s79, s21, 16
+; SI-NEXT:    s_lshr_b32 s95, s20, 16
+; SI-NEXT:    s_lshr_b32 s77, s19, 16
+; SI-NEXT:    s_lshr_b32 s93, s18, 16
+; SI-NEXT:    s_lshr_b32 s75, s17, 16
+; SI-NEXT:    s_lshr_b32 s91, s16, 16
 ; SI-NEXT:    s_lshr_b32 s81, s54, 16
-; SI-NEXT:    s_lshr_b32 s11, s55, 16
-; SI-NEXT:    s_lshr_b32 s88, s52, 16
-; SI-NEXT:    s_lshr_b32 s80, s53, 16
-; SI-NEXT:    s_lshr_b32 s68, s86, 16
-; SI-NEXT:    s_lshr_b32 s91, s98, 16
+; SI-NEXT:    s_lshr_b32 s90, s55, 16
+; SI-NEXT:    s_lshr_b32 s80, s52, 16
+; SI-NEXT:    s_lshr_b32 s11, s53, 16
+; SI-NEXT:    s_lshr_b32 s71, s86, 16
 ; SI-NEXT:    s_lshr_b32 s70, s96, 16
-; SI-NEXT:    s_lshr_b32 s67, s83, 16
-; SI-NEXT:    s_lshr_b32 s66, s85, 16
-; SI-NEXT:    s_lshr_b32 s51, s87, 16
-; SI-NEXT:    s_lshr_b32 s71, s82, 16
+; SI-NEXT:    s_lshr_b32 s69, s85, 16
+; SI-NEXT:    s_lshr_b32 s68, s82, 16
 ; SI-NEXT:    s_lshr_b32 s49, s84, 16
-; SI-NEXT:    s_lshr_b32 s69, s97, 16
+; SI-NEXT:    s_lshr_b32 s67, s97, 16
 ; SI-NEXT:    s_lshr_b32 s39, s99, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
+; SI-NEXT:    v_writelane_b32 v29, s9, 2
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    ; implicit-def: $vgpr29 : SGPR spill to VGPR lane
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v29, s11, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    v_writelane_b32 v29, s11, 3
+; SI-NEXT:    v_writelane_b32 v29, s90, 4
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
+; SI-NEXT:    s_lshl_b32 s42, s5, 16
+; SI-NEXT:    s_lshl_b32 s40, s7, 16
 ; SI-NEXT:    s_and_b32 s5, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s73, 16
-; SI-NEXT:    s_mov_b32 s9, s73
+; SI-NEXT:    s_lshl_b32 s7, s75, 16
 ; SI-NEXT:    s_or_b32 s73, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s75, 16
+; SI-NEXT:    s_lshl_b32 s7, s77, 16
 ; SI-NEXT:    s_mov_b32 s78, s75
 ; SI-NEXT:    s_or_b32 s75, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s77, 16
-; SI-NEXT:    s_lshl_b32 s72, s79, 16
-; SI-NEXT:    s_mov_b32 s90, s79
+; SI-NEXT:    s_lshl_b32 s7, s79, 16
+; SI-NEXT:    s_mov_b32 s88, s79
 ; SI-NEXT:    s_mov_b32 s79, s77
 ; SI-NEXT:    s_or_b32 s77, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s23, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s89, 16
 ; SI-NEXT:    s_or_b32 s63, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s50, 16
+; SI-NEXT:    s_lshl_b32 s7, s64, 16
 ; SI-NEXT:    s_or_b32 s61, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s65, 16
 ; SI-NEXT:    s_or_b32 s59, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s64, 16
+; SI-NEXT:    s_lshl_b32 s7, s66, 16
 ; SI-NEXT:    s_or_b32 s57, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s97, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s69, 16
+; SI-NEXT:    s_lshl_b32 s7, s67, 16
 ; SI-NEXT:    s_or_b32 s47, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s82, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s71, 16
+; SI-NEXT:    s_lshl_b32 s7, s68, 16
 ; SI-NEXT:    s_or_b32 s45, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s85, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s66, 16
+; SI-NEXT:    s_lshl_b32 s7, s69, 16
 ; SI-NEXT:    s_or_b32 s43, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s96, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s70, 16
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
+; SI-NEXT:    s_lshl_b32 s72, s91, 16
 ; SI-NEXT:    s_or_b32 s41, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s86, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s68, 16
+; SI-NEXT:    s_lshl_b32 s7, s71, 16
 ; SI-NEXT:    s_or_b32 s10, s4, s72
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s74, s92, 16
+; SI-NEXT:    s_lshl_b32 s74, s93, 16
 ; SI-NEXT:    s_or_b32 s15, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s52, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s88, 16
-; SI-NEXT:    s_lshl_b32 vcc_lo, s11, 16
-; SI-NEXT:    s_mov_b32 s11, s73
-; SI-NEXT:    s_lshr_b64 s[72:73], s[72:73], 16
+; SI-NEXT:    s_lshl_b32 s7, s80, 16
 ; SI-NEXT:    s_or_b32 s8, s4, s74
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s76, s93, 16
+; SI-NEXT:    s_lshl_b32 s76, s95, 16
 ; SI-NEXT:    s_or_b32 s13, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s54, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s81, 16
-; SI-NEXT:    v_writelane_b32 v29, s72, 1
 ; SI-NEXT:    s_or_b32 s6, s4, s76
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s62, s95, 16
-; SI-NEXT:    s_or_b32 vcc_hi, s5, s7
-; SI-NEXT:    v_writelane_b32 v29, s73, 2
-; SI-NEXT:    s_mov_b32 s73, s9
+; SI-NEXT:    s_lshl_b32 s62, vcc_hi, 16
+; SI-NEXT:    s_lshl_b32 s44, s49, 16
+; SI-NEXT:    s_lshl_b32 s14, s9, 16
+; SI-NEXT:    s_mov_b32 s50, s49
+; SI-NEXT:    s_or_b32 s49, s5, s7
 ; SI-NEXT:    s_mov_b32 s9, s75
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[74:75], 16
 ; SI-NEXT:    s_mov_b32 s7, s77
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[76:77], 16
 ; SI-NEXT:    s_or_b32 s4, s4, s62
 ; SI-NEXT:    s_lshl_b32 s60, s31, 16
+; SI-NEXT:    s_lshl_b32 s12, s11, 16
+; SI-NEXT:    s_mov_b32 s11, s73
+; SI-NEXT:    s_lshr_b64 s[72:73], s[72:73], 16
 ; SI-NEXT:    s_mov_b32 s75, s78
 ; SI-NEXT:    s_mov_b32 s77, s79
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[62:63], 16
 ; SI-NEXT:    s_and_b32 s62, s24, 0xffff
-; SI-NEXT:    s_mov_b32 s5, s63
-; SI-NEXT:    s_or_b32 s62, s62, s60
-; SI-NEXT:    s_mov_b32 s63, s61
-; SI-NEXT:    s_lshr_b64 s[60:61], s[60:61], 16
-; SI-NEXT:    v_writelane_b32 v29, s60, 3
 ; SI-NEXT:    s_lshl_b32 s58, s35, 16
-; SI-NEXT:    v_writelane_b32 v29, s61, 4
+; SI-NEXT:    s_mov_b32 s79, s88
+; SI-NEXT:    s_or_b32 s62, s62, s60
+; SI-NEXT:    s_mov_b32 s73, s89
+; SI-NEXT:    s_lshr_b64 s[88:89], s[60:61], 16
 ; SI-NEXT:    s_and_b32 s60, s26, 0xffff
-; SI-NEXT:    s_or_b32 s60, s60, s58
-; SI-NEXT:    s_mov_b32 s61, s59
-; SI-NEXT:    s_lshr_b64 s[58:59], s[58:59], 16
-; SI-NEXT:    v_writelane_b32 v29, s58, 5
 ; SI-NEXT:    s_lshl_b32 s56, s37, 16
-; SI-NEXT:    v_writelane_b32 v29, s59, 6
+; SI-NEXT:    s_lshl_b32 s48, s90, 16
+; SI-NEXT:    s_mov_b32 s89, s73
+; SI-NEXT:    s_or_b32 s60, s60, s58
+; SI-NEXT:    s_mov_b32 s73, s91
+; SI-NEXT:    s_lshr_b64 s[90:91], s[58:59], 16
 ; SI-NEXT:    s_and_b32 s58, s28, 0xffff
-; SI-NEXT:    s_or_b32 s58, s58, s56
-; SI-NEXT:    s_mov_b32 s59, s57
-; SI-NEXT:    s_lshr_b64 s[56:57], s[56:57], 16
 ; SI-NEXT:    s_lshl_b32 s46, s39, 16
-; SI-NEXT:    v_writelane_b32 v29, s56, 7
-; SI-NEXT:    s_lshl_b32 s44, s49, 16
-; SI-NEXT:    v_writelane_b32 v29, s57, 8
+; SI-NEXT:    s_mov_b32 s91, s73
+; SI-NEXT:    s_or_b32 s58, s58, s56
+; SI-NEXT:    s_mov_b32 s73, s93
+; SI-NEXT:    s_lshr_b64 s[92:93], s[56:57], 16
 ; SI-NEXT:    s_and_b32 s56, s99, 0xffff
-; SI-NEXT:    s_mov_b32 s30, s95
-; SI-NEXT:    s_lshr_b64 s[94:95], s[46:47], 16
-; SI-NEXT:    s_lshl_b32 s42, s51, 16
+; SI-NEXT:    s_mov_b32 s93, s73
 ; SI-NEXT:    s_or_b32 s56, s56, s46
-; SI-NEXT:    s_mov_b32 s95, s30
+; SI-NEXT:    s_mov_b32 s73, s95
+; SI-NEXT:    s_lshr_b64 s[94:95], s[46:47], 16
 ; SI-NEXT:    s_and_b32 s46, s84, 0xffff
-; SI-NEXT:    s_mov_b32 s34, s31
-; SI-NEXT:    s_lshr_b64 s[30:31], s[44:45], 16
-; SI-NEXT:    s_lshl_b32 s40, s67, 16
+; SI-NEXT:    s_mov_b32 s95, s73
 ; SI-NEXT:    s_or_b32 s46, s46, s44
-; SI-NEXT:    s_mov_b32 s31, s34
+; SI-NEXT:    s_mov_b32 s73, vcc_hi
+; SI-NEXT:    s_lshr_b64 vcc, s[44:45], 16
 ; SI-NEXT:    s_and_b32 s44, s87, 0xffff
-; SI-NEXT:    s_mov_b32 s36, s35
-; SI-NEXT:    s_lshr_b64 s[34:35], s[42:43], 16
-; SI-NEXT:    s_lshl_b32 s14, s91, 16
+; SI-NEXT:    s_mov_b32 vcc_hi, s73
 ; SI-NEXT:    s_or_b32 s44, s44, s42
-; SI-NEXT:    s_mov_b32 s35, s36
+; SI-NEXT:    s_mov_b32 s73, s31
+; SI-NEXT:    s_lshr_b64 s[30:31], s[42:43], 16
 ; SI-NEXT:    s_and_b32 s42, s83, 0xffff
-; SI-NEXT:    s_mov_b32 s38, s37
-; SI-NEXT:    s_lshr_b64 s[36:37], s[40:41], 16
-; SI-NEXT:    s_lshl_b32 s12, s80, 16
+; SI-NEXT:    s_mov_b32 s31, s73
 ; SI-NEXT:    s_or_b32 s42, s42, s40
-; SI-NEXT:    s_mov_b32 s37, s38
+; SI-NEXT:    s_mov_b32 s73, s35
+; SI-NEXT:    s_lshr_b64 s[34:35], s[40:41], 16
 ; SI-NEXT:    s_and_b32 s40, s98, 0xffff
-; SI-NEXT:    s_mov_b32 s48, s39
-; SI-NEXT:    s_lshr_b64 s[38:39], s[14:15], 16
-; SI-NEXT:    s_mov_b32 s72, s80
-; SI-NEXT:    s_mov_b32 s80, s70
-; SI-NEXT:    s_mov_b32 s70, s68
-; SI-NEXT:    s_mov_b32 s68, s66
-; SI-NEXT:    s_mov_b32 s66, s19
+; SI-NEXT:    s_mov_b32 s35, s73
 ; SI-NEXT:    s_or_b32 s40, s40, s14
-; SI-NEXT:    s_mov_b32 s39, s48
+; SI-NEXT:    s_mov_b32 s73, s37
+; SI-NEXT:    s_lshr_b64 s[36:37], s[14:15], 16
 ; SI-NEXT:    s_and_b32 s14, s53, 0xffff
-; SI-NEXT:    s_mov_b32 s19, s64
-; SI-NEXT:    s_mov_b32 s64, s50
-; SI-NEXT:    s_mov_b32 s50, s49
-; SI-NEXT:    s_lshr_b64 s[48:49], s[12:13], 16
-; SI-NEXT:    s_mov_b32 s79, s90
+; SI-NEXT:    s_mov_b32 s37, s73
 ; SI-NEXT:    s_or_b32 s14, s14, s12
-; SI-NEXT:    s_mov_b32 s49, s50
-; SI-NEXT:    s_mov_b32 s50, s64
-; SI-NEXT:    s_mov_b32 s64, s19
-; SI-NEXT:    s_mov_b32 s19, s66
-; SI-NEXT:    s_mov_b32 s66, s68
-; SI-NEXT:    s_mov_b32 s68, s70
-; SI-NEXT:    s_mov_b32 s70, s80
+; SI-NEXT:    s_mov_b32 s73, s39
+; SI-NEXT:    s_lshr_b64 s[38:39], s[12:13], 16
 ; SI-NEXT:    s_and_b32 s12, s55, 0xffff
-; SI-NEXT:    s_mov_b32 s80, s91
-; SI-NEXT:    s_lshr_b64 s[90:91], vcc, 16
+; SI-NEXT:    s_mov_b32 s5, s63
+; SI-NEXT:    s_mov_b32 s63, s61
+; SI-NEXT:    s_mov_b32 s61, s59
+; SI-NEXT:    s_mov_b32 s59, s57
 ; SI-NEXT:    s_mov_b32 s57, s47
 ; SI-NEXT:    s_mov_b32 s47, s45
 ; SI-NEXT:    s_mov_b32 s45, s43
 ; SI-NEXT:    s_mov_b32 s43, s41
 ; SI-NEXT:    s_mov_b32 s41, s15
 ; SI-NEXT:    s_mov_b32 s15, s13
-; SI-NEXT:    s_or_b32 s12, s12, vcc_lo
-; SI-NEXT:    s_mov_b32 s13, vcc_hi
-; SI-NEXT:    s_mov_b32 s91, s80
-; SI-NEXT:    s_mov_b32 s80, s72
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_or_b32 s12, s12, s48
+; SI-NEXT:    s_mov_b32 s13, s49
+; SI-NEXT:    s_lshr_b64 s[48:49], s[48:49], 16
+; SI-NEXT:    s_mov_b32 s39, s73
+; SI-NEXT:    s_mov_b32 s49, s50
+; SI-NEXT:    s_mov_b64 s[50:51], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[50:51], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[50:51], s[50:51], exec
+; SI-NEXT:    s_cselect_b32 s73, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s73, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s55, s55, 3
-; SI-NEXT:    v_readlane_b32 s5, v29, 0
+; SI-NEXT:    v_readlane_b32 s5, v29, 4
 ; SI-NEXT:    s_and_b32 s4, s55, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
@@ -44175,29 +44693,32 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s53, s53, 3
+; SI-NEXT:    v_readlane_b32 s5, v29, 3
 ; SI-NEXT:    s_add_i32 s13, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s53, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s52, s52, 3
 ; SI-NEXT:    s_add_i32 s14, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s52, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s88, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s98, s98, 3
+; SI-NEXT:    v_readlane_b32 s5, v29, 2
 ; SI-NEXT:    s_add_i32 s15, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s98, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s91, 16
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s86, s86, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s86, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s83, s83, 3
+; SI-NEXT:    v_readlane_b32 s5, v29, 1
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s83, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s67, 16
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s96, s96, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
@@ -44205,14 +44726,15 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s87, s87, 3
+; SI-NEXT:    v_readlane_b32 s5, v29, 0
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s87, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s51, 16
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s85, s85, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s85, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s66, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s84, s84, 3
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
@@ -44222,7 +44744,7 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s82, s82, 3
 ; SI-NEXT:    s_add_i32 s46, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s82, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s68, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s99, s99, 3
 ; SI-NEXT:    s_add_i32 s47, s4, 0x30000
@@ -44232,7 +44754,7 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s97, s97, 3
 ; SI-NEXT:    s_add_i32 s56, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s97, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_lshl_b32 s5, s67, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s28, s28, 3
 ; SI-NEXT:    s_add_i32 s57, s4, 0x30000
@@ -44242,7 +44764,7 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s29, s29, 3
 ; SI-NEXT:    s_add_i32 s58, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s64, 16
+; SI-NEXT:    s_lshl_b32 s5, s66, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s59, s4, 0x30000
@@ -44262,12 +44784,12 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s62, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s50, 16
+; SI-NEXT:    s_lshl_b32 s5, s64, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s63, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s95, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_and_b32 s5, s23, 0xffff
@@ -44275,161 +44797,145 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_and_b32 s6, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s93, 16
+; SI-NEXT:    s_lshl_b32 s7, s95, 16
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_or_b32 s6, s7, s6
 ; SI-NEXT:    s_and_b32 s7, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s8, s77, 16
+; SI-NEXT:    s_lshl_b32 s8, s79, 16
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_or_b32 s7, s8, s7
 ; SI-NEXT:    s_and_b32 s8, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s9, s92, 16
+; SI-NEXT:    s_lshl_b32 s9, s93, 16
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_or_b32 s8, s9, s8
 ; SI-NEXT:    s_and_b32 s9, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s10, s75, 16
+; SI-NEXT:    s_lshl_b32 s10, s77, 16
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_or_b32 s9, s10, s9
 ; SI-NEXT:    s_and_b32 s10, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s11, s79, 16
+; SI-NEXT:    s_lshl_b32 s11, s91, 16
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_or_b32 s10, s11, s10
 ; SI-NEXT:    s_and_b32 s11, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s73, 16
-; SI-NEXT:    s_or_b32 s11, s16, s11
-; SI-NEXT:    s_add_i32 s10, s10, 0x30000
-; SI-NEXT:    s_add_i32 s11, s11, 0x30000
-; SI-NEXT:    s_lshr_b64 s[16:17], s[10:11], 16
-; SI-NEXT:    v_writelane_b32 v29, s16, 1
-; SI-NEXT:    v_writelane_b32 v29, s17, 2
-; SI-NEXT:    s_lshr_b64 s[16:17], s[62:63], 16
-; SI-NEXT:    v_writelane_b32 v29, s16, 3
-; SI-NEXT:    v_writelane_b32 v29, s17, 4
-; SI-NEXT:    s_lshr_b64 s[16:17], s[60:61], 16
+; SI-NEXT:    s_lshl_b32 s16, s75, 16
+; SI-NEXT:    s_add_i32 s4, s4, 0x30000
+; SI-NEXT:    s_add_i32 s5, s5, 0x30000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x30000
 ; SI-NEXT:    s_add_i32 s7, s7, 0x30000
 ; SI-NEXT:    s_add_i32 s8, s8, 0x30000
 ; SI-NEXT:    s_add_i32 s9, s9, 0x30000
-; SI-NEXT:    v_writelane_b32 v29, s16, 5
-; SI-NEXT:    s_add_i32 s4, s4, 0x30000
-; SI-NEXT:    s_add_i32 s5, s5, 0x30000
+; SI-NEXT:    s_or_b32 s11, s16, s11
+; SI-NEXT:    s_add_i32 s10, s10, 0x30000
+; SI-NEXT:    s_add_i32 s11, s11, 0x30000
 ; SI-NEXT:    s_lshr_b64 s[74:75], s[8:9], 16
 ; SI-NEXT:    s_lshr_b64 s[76:77], s[6:7], 16
-; SI-NEXT:    v_writelane_b32 v29, s17, 6
-; SI-NEXT:    s_lshr_b64 s[16:17], s[58:59], 16
 ; SI-NEXT:    s_lshr_b64 s[78:79], s[4:5], 16
-; SI-NEXT:    v_writelane_b32 v29, s16, 7
+; SI-NEXT:    s_lshr_b64 s[88:89], s[62:63], 16
+; SI-NEXT:    s_lshr_b64 s[72:73], s[10:11], 16
+; SI-NEXT:    s_lshr_b64 s[90:91], s[60:61], 16
+; SI-NEXT:    s_lshr_b64 s[92:93], s[58:59], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[56:57], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[46:47], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[44:45], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[42:43], 16
-; SI-NEXT:    s_lshr_b64 s[38:39], s[40:41], 16
-; SI-NEXT:    s_lshr_b64 s[48:49], s[14:15], 16
-; SI-NEXT:    s_lshr_b64 s[90:91], s[12:13], 16
-; SI-NEXT:    s_lshr_b32 s73, s11, 16
-; SI-NEXT:    s_lshr_b32 s75, s9, 16
-; SI-NEXT:    s_lshr_b32 s77, s7, 16
+; SI-NEXT:    s_lshr_b64 vcc, s[46:47], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[44:45], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[42:43], 16
+; SI-NEXT:    s_lshr_b64 s[36:37], s[40:41], 16
+; SI-NEXT:    s_lshr_b64 s[38:39], s[14:15], 16
+; SI-NEXT:    s_lshr_b64 s[48:49], s[12:13], 16
+; SI-NEXT:    s_lshr_b32 s75, s11, 16
+; SI-NEXT:    s_lshr_b32 s77, s9, 16
+; SI-NEXT:    s_lshr_b32 s79, s7, 16
 ; SI-NEXT:    s_lshr_b32 s89, s5, 16
-; SI-NEXT:    s_lshr_b32 s50, s63, 16
+; SI-NEXT:    s_lshr_b32 s64, s63, 16
 ; SI-NEXT:    s_lshr_b32 s65, s61, 16
-; SI-NEXT:    s_lshr_b32 s64, s59, 16
-; SI-NEXT:    s_lshr_b32 s69, s57, 16
-; SI-NEXT:    s_lshr_b32 s71, s47, 16
-; SI-NEXT:    s_lshr_b32 s66, s45, 16
+; SI-NEXT:    s_lshr_b32 s66, s59, 16
+; SI-NEXT:    s_lshr_b32 s67, s57, 16
+; SI-NEXT:    s_lshr_b32 s68, s47, 16
+; SI-NEXT:    s_lshr_b32 s69, s45, 16
 ; SI-NEXT:    s_lshr_b32 s70, s43, 16
-; SI-NEXT:    s_lshr_b32 s68, s41, 16
-; SI-NEXT:    s_lshr_b32 s88, s15, 16
+; SI-NEXT:    s_lshr_b32 s71, s41, 16
+; SI-NEXT:    s_lshr_b32 s80, s15, 16
 ; SI-NEXT:    s_lshr_b32 s81, s13, 16
-; SI-NEXT:    v_writelane_b32 v29, s17, 8
-; SI-NEXT:  .LBB57_3: ; %end
-; SI-NEXT:    v_readlane_b32 s16, v29, 1
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
+; SI-NEXT:    s_lshl_b32 s16, s72, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s16
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s73, 16
+; SI-NEXT:    s_lshl_b32 s16, s75, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s16
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
 ; SI-NEXT:    s_lshl_b32 s16, s74, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s16
 ; SI-NEXT:    s_and_b32 s9, s9, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s75, 16
+; SI-NEXT:    s_lshl_b32 s16, s77, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s16
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s16, s76, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s16
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s77, 16
+; SI-NEXT:    s_lshl_b32 s16, s79, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s16
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_lshl_b32 s16, s78, 16
-; SI-NEXT:    v_readlane_b32 s17, v29, 2
 ; SI-NEXT:    s_or_b32 s4, s4, s16
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-NEXT:    s_lshl_b32 s16, s89, 16
-; SI-NEXT:    v_readlane_b32 s18, v29, 3
 ; SI-NEXT:    s_or_b32 s5, s5, s16
 ; SI-NEXT:    s_and_b32 s16, s62, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s18, 16
-; SI-NEXT:    v_readlane_b32 s19, v29, 4
+; SI-NEXT:    s_lshl_b32 s17, s88, 16
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s63, 0xffff
-; SI-NEXT:    s_lshl_b32 s18, s50, 16
-; SI-NEXT:    v_readlane_b32 s20, v29, 5
+; SI-NEXT:    s_lshl_b32 s18, s64, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_and_b32 s18, s60, 0xffff
-; SI-NEXT:    s_lshl_b32 s19, s20, 16
-; SI-NEXT:    v_readlane_b32 s21, v29, 6
+; SI-NEXT:    s_lshl_b32 s19, s90, 16
 ; SI-NEXT:    s_or_b32 s18, s18, s19
 ; SI-NEXT:    s_and_b32 s19, s61, 0xffff
 ; SI-NEXT:    s_lshl_b32 s20, s65, 16
-; SI-NEXT:    v_readlane_b32 s22, v29, 7
 ; SI-NEXT:    s_or_b32 s19, s19, s20
 ; SI-NEXT:    s_and_b32 s20, s58, 0xffff
-; SI-NEXT:    s_lshl_b32 s21, s22, 16
-; SI-NEXT:    v_readlane_b32 s23, v29, 8
+; SI-NEXT:    s_lshl_b32 s21, s92, 16
 ; SI-NEXT:    s_or_b32 s20, s20, s21
 ; SI-NEXT:    s_and_b32 s21, s59, 0xffff
-; SI-NEXT:    s_lshl_b32 s22, s64, 16
+; SI-NEXT:    s_lshl_b32 s22, s66, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s22
 ; SI-NEXT:    s_and_b32 s22, s56, 0xffff
 ; SI-NEXT:    s_lshl_b32 s23, s94, 16
 ; SI-NEXT:    s_or_b32 s22, s22, s23
 ; SI-NEXT:    s_and_b32 s23, s57, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s69, 16
+; SI-NEXT:    s_lshl_b32 s24, s67, 16
 ; SI-NEXT:    s_or_b32 s23, s23, s24
 ; SI-NEXT:    s_and_b32 s24, s46, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s30, 16
+; SI-NEXT:    s_lshl_b32 s25, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s24, s24, s25
 ; SI-NEXT:    s_and_b32 s25, s47, 0xffff
-; SI-NEXT:    s_lshl_b32 s26, s71, 16
+; SI-NEXT:    s_lshl_b32 s26, s68, 16
 ; SI-NEXT:    s_or_b32 s25, s25, s26
 ; SI-NEXT:    s_and_b32 s26, s44, 0xffff
-; SI-NEXT:    s_lshl_b32 s27, s34, 16
+; SI-NEXT:    s_lshl_b32 s27, s30, 16
 ; SI-NEXT:    s_or_b32 s26, s26, s27
 ; SI-NEXT:    s_and_b32 s27, s45, 0xffff
-; SI-NEXT:    s_lshl_b32 s28, s66, 16
+; SI-NEXT:    s_lshl_b32 s28, s69, 16
 ; SI-NEXT:    s_or_b32 s27, s27, s28
 ; SI-NEXT:    s_and_b32 s28, s42, 0xffff
-; SI-NEXT:    s_lshl_b32 s29, s36, 16
+; SI-NEXT:    s_lshl_b32 s29, s34, 16
 ; SI-NEXT:    s_or_b32 s28, s28, s29
 ; SI-NEXT:    s_and_b32 s29, s43, 0xffff
 ; SI-NEXT:    s_lshl_b32 s42, s70, 16
 ; SI-NEXT:    s_or_b32 s29, s29, s42
 ; SI-NEXT:    s_and_b32 s40, s40, 0xffff
-; SI-NEXT:    s_lshl_b32 s42, s38, 16
+; SI-NEXT:    s_lshl_b32 s42, s36, 16
 ; SI-NEXT:    s_or_b32 s40, s40, s42
 ; SI-NEXT:    s_and_b32 s41, s41, 0xffff
-; SI-NEXT:    s_lshl_b32 s42, s68, 16
+; SI-NEXT:    s_lshl_b32 s42, s71, 16
 ; SI-NEXT:    s_or_b32 s41, s41, s42
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
-; SI-NEXT:    s_lshl_b32 s42, s48, 16
+; SI-NEXT:    s_lshl_b32 s42, s38, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s42
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_lshl_b32 s42, s88, 16
+; SI-NEXT:    s_lshl_b32 s42, s80, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s42
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
-; SI-NEXT:    s_lshl_b32 s42, s90, 16
+; SI-NEXT:    s_lshl_b32 s42, s48, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s42
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
 ; SI-NEXT:    s_lshl_b32 s42, s81, 16
@@ -44504,44 +45010,6 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    v_writelane_b32 v29, s4, 1
-; SI-NEXT:    v_writelane_b32 v29, s5, 2
-; SI-NEXT:    v_writelane_b32 v29, s12, 3
-; SI-NEXT:    v_writelane_b32 v29, s13, 4
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    v_writelane_b32 v29, s12, 5
-; SI-NEXT:    v_writelane_b32 v29, s13, 6
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    v_writelane_b32 v29, s12, 7
-; SI-NEXT:    v_writelane_b32 v29, s13, 8
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v56i16_to_v56f16_scalar:
 ; VI:       ; %bb.0:
@@ -44549,10 +45017,8 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_store_dword v28, off, s[0:3], s32 ; 4-byte Folded Spill
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
-; VI-NEXT:    v_writelane_b32 v28, s34, 0
-; VI-NEXT:    v_writelane_b32 v28, s35, 1
-; VI-NEXT:    v_writelane_b32 v28, s30, 2
-; VI-NEXT:    v_writelane_b32 v28, s31, 3
+; VI-NEXT:    v_writelane_b32 v28, s30, 0
+; VI-NEXT:    v_writelane_b32 v28, s31, 1
 ; VI-NEXT:    v_readfirstlane_b32 s7, v13
 ; VI-NEXT:    v_readfirstlane_b32 s8, v12
 ; VI-NEXT:    v_readfirstlane_b32 s10, v11
@@ -44577,10 +45043,10 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s75, s22, 16
 ; VI-NEXT:    s_lshr_b32 s78, s21, 16
 ; VI-NEXT:    s_lshr_b32 s89, s20, 16
-; VI-NEXT:    s_lshr_b32 s30, s19, 16
-; VI-NEXT:    s_lshr_b32 s31, s18, 16
-; VI-NEXT:    s_lshr_b32 s34, s17, 16
-; VI-NEXT:    s_lshr_b32 s35, s16, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; VI-NEXT:    s_lshr_b32 s30, s17, 16
+; VI-NEXT:    s_lshr_b32 s31, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -44597,18 +45063,26 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s91, s90, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:    s_add_i32 s35, s35, 3
+; VI-NEXT:    s_add_i32 s31, s31, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
-; VI-NEXT:    s_add_i32 s34, s34, 3
+; VI-NEXT:    s_add_i32 s30, s30, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
-; VI-NEXT:    s_add_i32 s31, s31, 3
+; VI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; VI-NEXT:    s_add_i32 s19, s19, 3
-; VI-NEXT:    s_add_i32 s30, s30, 3
+; VI-NEXT:    s_add_i32 vcc_lo, vcc_lo, 3
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s89, s89, 3
 ; VI-NEXT:    s_add_i32 s21, s21, 3
@@ -44657,18 +45131,18 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s9, s9, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s6, s6, 3
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_and_b32 s5, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s16, s34, 16
+; VI-NEXT:    s_lshl_b32 s16, s30, 16
 ; VI-NEXT:    s_or_b32 s5, s5, s16
 ; VI-NEXT:    s_and_b32 s16, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s17, s31, 16
+; VI-NEXT:    s_lshl_b32 s17, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s16, s16, s17
 ; VI-NEXT:    s_and_b32 s17, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s18, s30, 16
+; VI-NEXT:    s_lshl_b32 s18, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s17, s17, s18
 ; VI-NEXT:    s_and_b32 s18, 0xffff, s20
 ; VI-NEXT:    s_lshl_b32 s19, s89, 16
@@ -44742,7 +45216,7 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; VI-NEXT:    s_or_b32 s10, s10, s11
 ; VI-NEXT:    s_or_b32 s8, s8, s9
 ; VI-NEXT:    s_or_b32 s6, s7, s6
-; VI-NEXT:    v_readlane_b32 s30, v28, 2
+; VI-NEXT:    v_readlane_b32 s30, v28, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    v_mov_b32_e32 v1, s5
 ; VI-NEXT:    v_mov_b32_e32 v2, s16
@@ -44771,16 +45245,12 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v25, s10
 ; VI-NEXT:    v_mov_b32_e32 v26, s8
 ; VI-NEXT:    v_mov_b32_e32 v27, s6
-; VI-NEXT:    v_readlane_b32 s31, v28, 3
-; VI-NEXT:    v_readlane_b32 s35, v28, 1
-; VI-NEXT:    v_readlane_b32 s34, v28, 0
+; VI-NEXT:    v_readlane_b32 s31, v28, 1
 ; VI-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v28, off, s[0:3], s32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v56i16_to_v56f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -44837,10 +45307,18 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s44, s74, 16
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v14
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_4
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s95, s73
 ; GFX9-NEXT:    v_pk_add_u16 v27, s4, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s94, s72
@@ -44925,10 +45403,8 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v30, 16, v25
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v29, 16, v26
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v28, 16, v27
-; GFX9-NEXT:    s_branch .LBB57_5
-; GFX9-NEXT:  .LBB57_3:
-; GFX9-NEXT:    s_branch .LBB57_2
-; GFX9-NEXT:  .LBB57_4:
+; GFX9-NEXT:    s_branch .LBB57_6
+; GFX9-NEXT:  .LBB57_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s95
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s94
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s93
@@ -44985,7 +45461,7 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v45, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v46, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v47, s6
-; GFX9-NEXT:  .LBB57_5: ; %end
+; GFX9-NEXT:  .LBB57_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -45097,11 +45573,16 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s72, 16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s90, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s90, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s90
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-TRUE16-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s90, -1
+; GFX11-TRUE16-NEXT:  .LBB57_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s90, s90, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s90, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s90, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s59, s79, s59
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s57, s76, s57
 ; GFX11-TRUE16-NEXT:    v_pk_add_u16 v27, s59, 3 op_sel_hi:[1,0]
@@ -45187,8 +45668,6 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v29, 16, v26
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v28, 16, v27
 ; GFX11-TRUE16-NEXT:    s_branch .LBB57_5
-; GFX11-TRUE16-NEXT:  .LBB57_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB57_2
 ; GFX11-TRUE16-NEXT:  .LBB57_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s79 :: v_dual_mov_b32 v26, s89
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s88 :: v_dual_mov_b32 v24, s78
@@ -45295,11 +45774,16 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s72, 16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s90, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s90, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s90
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-FAKE16-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s90, -1
+; GFX11-FAKE16-NEXT:  .LBB57_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s90, s90, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s90, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s90, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s59, s79, s59
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s57, s76, s57
 ; GFX11-FAKE16-NEXT:    v_pk_add_u16 v23, s59, 3 op_sel_hi:[1,0]
@@ -45385,8 +45869,6 @@ define inreg <56 x half> @bitcast_v56i16_to_v56f16_scalar(<56 x i16> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v29, 16, v24
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v28, 16, v23
 ; GFX11-FAKE16-NEXT:    s_branch .LBB57_5
-; GFX11-FAKE16-NEXT:  .LBB57_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB57_2
 ; GFX11-FAKE16-NEXT:  .LBB57_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v23, s79 :: v_dual_mov_b32 v24, s89
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v25, s88 :: v_dual_mov_b32 v26, s78
@@ -46513,10 +46995,18 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s88, s92, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v14
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_3
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB59_4
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s95
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s94
@@ -46776,10 +47266,8 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v31, v29
 ; SI-NEXT:    v_lshr_b64 v[28:29], v[26:27], 16
 ; SI-NEXT:    buffer_load_dword v26, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload
-; SI-NEXT:    s_branch .LBB59_5
-; SI-NEXT:  .LBB59_3:
-; SI-NEXT:    s_branch .LBB59_2
-; SI-NEXT:  .LBB59_4:
+; SI-NEXT:    s_branch .LBB59_6
+; SI-NEXT:  .LBB59_5:
 ; SI-NEXT:    v_mov_b32_e32 v52, s72
 ; SI-NEXT:    v_mov_b32_e32 v31, s61
 ; SI-NEXT:    s_waitcnt expcnt(6)
@@ -46840,7 +47328,7 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v32, s59
 ; SI-NEXT:    v_mov_b32_e32 v30, s57
 ; SI-NEXT:    v_mov_b32_e32 v28, s46
-; SI-NEXT:  .LBB59_5: ; %end
+; SI-NEXT:  .LBB59_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v46
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
@@ -46961,10 +47449,8 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    buffer_store_dword v45, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v46, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
 ; VI-NEXT:    buffer_store_dword v47, off, s[0:3], s32 ; 4-byte Folded Spill
-; VI-NEXT:    v_writelane_b32 v56, s34, 0
-; VI-NEXT:    v_writelane_b32 v56, s35, 1
-; VI-NEXT:    v_writelane_b32 v56, s30, 2
-; VI-NEXT:    v_writelane_b32 v56, s31, 3
+; VI-NEXT:    v_writelane_b32 v56, s30, 0
+; VI-NEXT:    v_writelane_b32 v56, s31, 1
 ; VI-NEXT:    v_readfirstlane_b32 s44, v13
 ; VI-NEXT:    v_readfirstlane_b32 s46, v12
 ; VI-NEXT:    v_readfirstlane_b32 s56, v11
@@ -46977,8 +47463,8 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s78, v4
 ; VI-NEXT:    v_readfirstlane_b32 s88, v3
 ; VI-NEXT:    v_readfirstlane_b32 s90, v2
-; VI-NEXT:    v_readfirstlane_b32 s30, v1
-; VI-NEXT:    v_readfirstlane_b32 s34, v0
+; VI-NEXT:    v_readfirstlane_b32 vcc_lo, v1
+; VI-NEXT:    v_readfirstlane_b32 s30, v0
 ; VI-NEXT:    s_lshr_b32 s6, s29, 16
 ; VI-NEXT:    s_lshr_b32 s7, s28, 16
 ; VI-NEXT:    s_lshr_b32 s8, s27, 16
@@ -47005,14 +47491,22 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s79, s78, 16
 ; VI-NEXT:    s_lshr_b32 s89, s88, 16
 ; VI-NEXT:    s_lshr_b32 s91, s90, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, vcc_lo, 16
 ; VI-NEXT:    s_lshr_b32 s31, s30, 16
-; VI-NEXT:    s_lshr_b32 s35, s34, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v14
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_3
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_4
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v28, 0x200
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v28
 ; VI-NEXT:    v_add_f16_e32 v47, s43, v28
@@ -47042,10 +47536,10 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v51, s7, v28
 ; VI-NEXT:    v_add_f16_e32 v13, s29, v28
 ; VI-NEXT:    v_add_f16_e32 v50, s6, v28
-; VI-NEXT:    v_add_f16_e32 v14, s34, v28
-; VI-NEXT:    v_add_f16_e32 v49, s35, v28
-; VI-NEXT:    v_add_f16_e32 v15, s30, v28
-; VI-NEXT:    v_add_f16_e32 v48, s31, v28
+; VI-NEXT:    v_add_f16_e32 v14, s30, v28
+; VI-NEXT:    v_add_f16_e32 v49, s31, v28
+; VI-NEXT:    v_add_f16_e32 v15, vcc_lo, v28
+; VI-NEXT:    v_add_f16_e32 v48, vcc_hi, v28
 ; VI-NEXT:    v_add_f16_e32 v16, s90, v28
 ; VI-NEXT:    v_add_f16_e32 v39, s91, v28
 ; VI-NEXT:    v_add_f16_e32 v17, s88, v28
@@ -47070,10 +47564,8 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v29, s47, v28
 ; VI-NEXT:    v_add_f16_e32 v27, s44, v28
 ; VI-NEXT:    v_add_f16_e32 v28, s45, v28
-; VI-NEXT:    s_branch .LBB59_5
-; VI-NEXT:  .LBB59_3:
-; VI-NEXT:    s_branch .LBB59_2
-; VI-NEXT:  .LBB59_4:
+; VI-NEXT:    s_branch .LBB59_6
+; VI-NEXT:  .LBB59_5:
 ; VI-NEXT:    v_mov_b32_e32 v28, s45
 ; VI-NEXT:    v_mov_b32_e32 v27, s44
 ; VI-NEXT:    v_mov_b32_e32 v29, s47
@@ -47098,10 +47590,10 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v17, s88
 ; VI-NEXT:    v_mov_b32_e32 v39, s91
 ; VI-NEXT:    v_mov_b32_e32 v16, s90
-; VI-NEXT:    v_mov_b32_e32 v48, s31
-; VI-NEXT:    v_mov_b32_e32 v15, s30
-; VI-NEXT:    v_mov_b32_e32 v49, s35
-; VI-NEXT:    v_mov_b32_e32 v14, s34
+; VI-NEXT:    v_mov_b32_e32 v48, vcc_hi
+; VI-NEXT:    v_mov_b32_e32 v15, vcc_lo
+; VI-NEXT:    v_mov_b32_e32 v49, s31
+; VI-NEXT:    v_mov_b32_e32 v14, s30
 ; VI-NEXT:    v_mov_b32_e32 v50, s6
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v51, s7
@@ -47130,7 +47622,7 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v47, s43
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
-; VI-NEXT:  .LBB59_5: ; %end
+; VI-NEXT:  .LBB59_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v47, 16, v47
 ; VI-NEXT:    v_lshlrev_b32_e32 v46, 16, v46
 ; VI-NEXT:    v_lshlrev_b32_e32 v45, 16, v45
@@ -47175,7 +47667,7 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_lshlrev_b32_e32 v30, 16, v30
 ; VI-NEXT:    v_lshlrev_b32_e32 v29, 16, v29
 ; VI-NEXT:    v_lshlrev_b32_e32 v28, 16, v28
-; VI-NEXT:    v_readlane_b32 s30, v56, 2
+; VI-NEXT:    v_readlane_b32 s30, v56, 0
 ; VI-NEXT:    v_or_b32_sdwa v8, v8, v55 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v9, v9, v54 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v10, v10, v53 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
@@ -47196,9 +47688,7 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; VI-NEXT:    v_or_b32_sdwa v25, v25, v30 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v26, v26, v29 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v27, v27, v28 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; VI-NEXT:    v_readlane_b32 s31, v56, 3
-; VI-NEXT:    v_readlane_b32 s35, v56, 1
-; VI-NEXT:    v_readlane_b32 s34, v56, 0
+; VI-NEXT:    v_readlane_b32 s31, v56, 1
 ; VI-NEXT:    s_or_saveexec_b64 s[4:5], -1
 ; VI-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:32 ; 4-byte Folded Reload
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
@@ -47260,10 +47750,18 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s44, s74, 16
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v14
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_4
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s95, s73
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v27, s4, v0 op_sel_hi:[1,0]
@@ -47349,10 +47847,8 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v30, 16, v25
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v29, 16, v26
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v28, 16, v27
-; GFX9-NEXT:    s_branch .LBB59_5
-; GFX9-NEXT:  .LBB59_3:
-; GFX9-NEXT:    s_branch .LBB59_2
-; GFX9-NEXT:  .LBB59_4:
+; GFX9-NEXT:    s_branch .LBB59_6
+; GFX9-NEXT:  .LBB59_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s95
 ; GFX9-NEXT:    v_mov_b32_e32 v26, s94
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s93
@@ -47409,7 +47905,7 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v45, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v46, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v47, s6
-; GFX9-NEXT:  .LBB59_5: ; %end
+; GFX9-NEXT:  .LBB59_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -47521,11 +48017,16 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s72, 16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s90, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s90, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s90
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-TRUE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s90, -1
+; GFX11-TRUE16-NEXT:  .LBB59_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s90, s90, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s90, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s90, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s59, s79, s59
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s57, s76, s57
 ; GFX11-TRUE16-NEXT:    v_pk_add_f16 v27, 0x200, s59 op_sel_hi:[0,1]
@@ -47611,8 +48112,6 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v29, 16, v26
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v28, 16, v27
 ; GFX11-TRUE16-NEXT:    s_branch .LBB59_5
-; GFX11-TRUE16-NEXT:  .LBB59_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB59_2
 ; GFX11-TRUE16-NEXT:  .LBB59_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s79 :: v_dual_mov_b32 v26, s89
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v25, s88 :: v_dual_mov_b32 v24, s78
@@ -47719,11 +48218,16 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s72, 16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s90, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s90, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s90
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-FAKE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s90, -1
+; GFX11-FAKE16-NEXT:  .LBB59_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s90, s90, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s90, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s90, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s59, s79, s59
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s57, s76, s57
 ; GFX11-FAKE16-NEXT:    v_pk_add_f16 v23, 0x200, s59 op_sel_hi:[0,1]
@@ -47809,8 +48313,6 @@ define inreg <56 x i16> @bitcast_v56f16_to_v56i16_scalar(<56 x half> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v29, 16, v24
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v28, 16, v23
 ; GFX11-FAKE16-NEXT:    s_branch .LBB59_5
-; GFX11-FAKE16-NEXT:  .LBB59_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB59_2
 ; GFX11-FAKE16-NEXT:  .LBB59_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v23, s79 :: v_dual_mov_b32 v24, s89
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v25, s88 :: v_dual_mov_b32 v26, s78

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.960bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.960bit.ll
index 47a80c7161aae..68e80c289ca18 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.960bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.960bit.ll
@@ -218,10 +218,18 @@ define inreg <30 x float> @bitcast_v30i32_to_v30f32_scalar(<30 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s44, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s45, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -252,7 +260,7 @@ define inreg <30 x float> @bitcast_v30i32_to_v30f32_scalar(<30 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -284,8 +292,6 @@ define inreg <30 x float> @bitcast_v30i32_to_v30f32_scalar(<30 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v28, s7
 ; SI-NEXT:    v_mov_b32_e32 v29, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v30i32_to_v30f32_scalar:
 ; VI:       ; %bb.0:
@@ -308,10 +314,18 @@ define inreg <30 x float> @bitcast_v30i32_to_v30f32_scalar(<30 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s45, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -342,7 +356,7 @@ define inreg <30 x float> @bitcast_v30i32_to_v30f32_scalar(<30 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -374,8 +388,6 @@ define inreg <30 x float> @bitcast_v30i32_to_v30f32_scalar(<30 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v28, s7
 ; VI-NEXT:    v_mov_b32_e32 v29, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v30i32_to_v30f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -398,10 +410,18 @@ define inreg <30 x float> @bitcast_v30i32_to_v30f32_scalar(<30 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s45, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -432,7 +452,7 @@ define inreg <30 x float> @bitcast_v30i32_to_v30f32_scalar(<30 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -464,8 +484,6 @@ define inreg <30 x float> @bitcast_v30i32_to_v30f32_scalar(<30 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v30i32_to_v30f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -485,11 +503,16 @@ define inreg <30 x float> @bitcast_v30i32_to_v30f32_scalar(<30 x i32> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s15, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s40, 0
 ; GFX11-NEXT:    s_mov_b32 s40, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -520,7 +543,7 @@ define inreg <30 x float> @bitcast_v30i32_to_v30f32_scalar(<30 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -538,8 +561,6 @@ define inreg <30 x float> @bitcast_v30i32_to_v30f32_scalar(<30 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s7 :: v_dual_mov_b32 v27, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s5 :: v_dual_mov_b32 v29, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -786,10 +807,18 @@ define inreg <30 x i32> @bitcast_v30f32_to_v30i32_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v29, s65, 1.0
 ; SI-NEXT:    v_add_f32_e64 v28, s64, 1.0
 ; SI-NEXT:    v_add_f32_e64 v27, s63, 1.0
@@ -820,10 +849,8 @@ define inreg <30 x i32> @bitcast_v30f32_to_v30i32_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB3_5
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:    s_branch .LBB3_6
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -856,7 +883,7 @@ define inreg <30 x i32> @bitcast_v30f32_to_v30i32_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB3_5: ; %end
+; SI-NEXT:  .LBB3_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
 ; SI-NEXT:    v_readlane_b32 s64, v32, 12
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
@@ -929,10 +956,18 @@ define inreg <30 x i32> @bitcast_v30f32_to_v30i32_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v29, s65, 1.0
 ; VI-NEXT:    v_add_f32_e64 v28, s64, 1.0
 ; VI-NEXT:    v_add_f32_e64 v27, s63, 1.0
@@ -963,10 +998,8 @@ define inreg <30 x i32> @bitcast_v30f32_to_v30i32_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB3_5
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:    s_branch .LBB3_6
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -999,7 +1032,7 @@ define inreg <30 x i32> @bitcast_v30f32_to_v30i32_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB3_5: ; %end
+; VI-NEXT:  .LBB3_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
 ; VI-NEXT:    v_readlane_b32 s64, v32, 12
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
@@ -1072,10 +1105,18 @@ define inreg <30 x i32> @bitcast_v30f32_to_v30i32_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v29, s65, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v28, s64, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v27, s63, 1.0
@@ -1106,10 +1147,8 @@ define inreg <30 x i32> @bitcast_v30f32_to_v30i32_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB3_5
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:    s_branch .LBB3_6
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -1142,7 +1181,7 @@ define inreg <30 x i32> @bitcast_v30f32_to_v30i32_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB3_5: ; %end
+; GFX9-NEXT:  .LBB3_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
 ; GFX9-NEXT:    v_readlane_b32 s64, v32, 12
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
@@ -1216,11 +1255,16 @@ define inreg <30 x i32> @bitcast_v30f32_to_v30i32_scalar(<30 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v29, s65, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v28, s64, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v27, s63, 1.0
@@ -1252,8 +1296,6 @@ define inreg <30 x i32> @bitcast_v30f32_to_v30i32_scalar(<30 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB3_5
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -1520,10 +1562,18 @@ define inreg <15 x i64> @bitcast_v30i32_to_v15i64_scalar(<30 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s44, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s45, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -1554,7 +1604,7 @@ define inreg <15 x i64> @bitcast_v30i32_to_v15i64_scalar(<30 x i32> inreg %a, i3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1586,8 +1636,6 @@ define inreg <15 x i64> @bitcast_v30i32_to_v15i64_scalar(<30 x i32> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v28, s7
 ; SI-NEXT:    v_mov_b32_e32 v29, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v30i32_to_v15i64_scalar:
 ; VI:       ; %bb.0:
@@ -1610,10 +1658,18 @@ define inreg <15 x i64> @bitcast_v30i32_to_v15i64_scalar(<30 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s45, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -1644,7 +1700,7 @@ define inreg <15 x i64> @bitcast_v30i32_to_v15i64_scalar(<30 x i32> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -1676,8 +1732,6 @@ define inreg <15 x i64> @bitcast_v30i32_to_v15i64_scalar(<30 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v28, s7
 ; VI-NEXT:    v_mov_b32_e32 v29, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v30i32_to_v15i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -1700,10 +1754,18 @@ define inreg <15 x i64> @bitcast_v30i32_to_v15i64_scalar(<30 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s45, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -1734,7 +1796,7 @@ define inreg <15 x i64> @bitcast_v30i32_to_v15i64_scalar(<30 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -1766,8 +1828,6 @@ define inreg <15 x i64> @bitcast_v30i32_to_v15i64_scalar(<30 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v30i32_to_v15i64_scalar:
 ; GFX11:       ; %bb.0:
@@ -1787,11 +1847,16 @@ define inreg <15 x i64> @bitcast_v30i32_to_v15i64_scalar(<30 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s15, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s40, 0
 ; GFX11-NEXT:    s_mov_b32 s40, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -1822,7 +1887,7 @@ define inreg <15 x i64> @bitcast_v30i32_to_v15i64_scalar(<30 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -1840,8 +1905,6 @@ define inreg <15 x i64> @bitcast_v30i32_to_v15i64_scalar(<30 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s7 :: v_dual_mov_b32 v27, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s5 :: v_dual_mov_b32 v29, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2079,10 +2142,18 @@ define inreg <30 x i32> @bitcast_v15i64_to_v30i32_scalar(<15 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s44, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s45, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -2113,7 +2184,7 @@ define inreg <30 x i32> @bitcast_v15i64_to_v30i32_scalar(<15 x i64> inreg %a, i3
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2145,8 +2216,6 @@ define inreg <30 x i32> @bitcast_v15i64_to_v30i32_scalar(<15 x i64> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v28, s7
 ; SI-NEXT:    v_mov_b32_e32 v29, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v15i64_to_v30i32_scalar:
 ; VI:       ; %bb.0:
@@ -2169,10 +2238,18 @@ define inreg <30 x i32> @bitcast_v15i64_to_v30i32_scalar(<15 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s45, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -2203,7 +2280,7 @@ define inreg <30 x i32> @bitcast_v15i64_to_v30i32_scalar(<15 x i64> inreg %a, i3
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2235,8 +2312,6 @@ define inreg <30 x i32> @bitcast_v15i64_to_v30i32_scalar(<15 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v28, s7
 ; VI-NEXT:    v_mov_b32_e32 v29, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v15i64_to_v30i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -2259,10 +2334,18 @@ define inreg <30 x i32> @bitcast_v15i64_to_v30i32_scalar(<15 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s45, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -2293,7 +2376,7 @@ define inreg <30 x i32> @bitcast_v15i64_to_v30i32_scalar(<15 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB7_3: ; %end
+; GFX9-NEXT:  .LBB7_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2325,8 +2408,6 @@ define inreg <30 x i32> @bitcast_v15i64_to_v30i32_scalar(<15 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_4:
-; GFX9-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-LABEL: bitcast_v15i64_to_v30i32_scalar:
 ; GFX11:       ; %bb.0:
@@ -2346,11 +2427,16 @@ define inreg <30 x i32> @bitcast_v15i64_to_v30i32_scalar(<15 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s15, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s40, 0
 ; GFX11-NEXT:    s_mov_b32 s40, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_3
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB7_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -2381,7 +2467,7 @@ define inreg <30 x i32> @bitcast_v15i64_to_v30i32_scalar(<15 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB7_3: ; %end
+; GFX11-NEXT:  .LBB7_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2399,8 +2485,6 @@ define inreg <30 x i32> @bitcast_v15i64_to_v30i32_scalar(<15 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s7 :: v_dual_mov_b32 v27, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s5 :: v_dual_mov_b32 v29, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_4:
-; GFX11-NEXT:    s_branch .LBB7_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2630,10 +2714,18 @@ define inreg <15 x double> @bitcast_v30i32_to_v15f64_scalar(<30 x i32> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s44, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s45, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s6, s6, 3
 ; SI-NEXT:    s_add_i32 s7, s7, 3
 ; SI-NEXT:    s_add_i32 s8, s8, 3
@@ -2664,7 +2756,7 @@ define inreg <15 x double> @bitcast_v30i32_to_v15f64_scalar(<30 x i32> inreg %a,
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2696,8 +2788,6 @@ define inreg <15 x double> @bitcast_v30i32_to_v15f64_scalar(<30 x i32> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v28, s7
 ; SI-NEXT:    v_mov_b32_e32 v29, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v30i32_to_v15f64_scalar:
 ; VI:       ; %bb.0:
@@ -2720,10 +2810,18 @@ define inreg <15 x double> @bitcast_v30i32_to_v15f64_scalar(<30 x i32> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s45, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -2754,7 +2852,7 @@ define inreg <15 x double> @bitcast_v30i32_to_v15f64_scalar(<30 x i32> inreg %a,
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2786,8 +2884,6 @@ define inreg <15 x double> @bitcast_v30i32_to_v15f64_scalar(<30 x i32> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v28, s7
 ; VI-NEXT:    v_mov_b32_e32 v29, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v30i32_to_v15f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -2810,10 +2906,18 @@ define inreg <15 x double> @bitcast_v30i32_to_v15f64_scalar(<30 x i32> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s45, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -2844,7 +2948,7 @@ define inreg <15 x double> @bitcast_v30i32_to_v15f64_scalar(<30 x i32> inreg %a,
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2876,8 +2980,6 @@ define inreg <15 x double> @bitcast_v30i32_to_v15f64_scalar(<30 x i32> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v30i32_to_v15f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -2897,11 +2999,16 @@ define inreg <15 x double> @bitcast_v30i32_to_v15f64_scalar(<30 x i32> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s15, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s40, 0
 ; GFX11-NEXT:    s_mov_b32 s40, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -2932,7 +3039,7 @@ define inreg <15 x double> @bitcast_v30i32_to_v15f64_scalar(<30 x i32> inreg %a,
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -2950,8 +3057,6 @@ define inreg <15 x double> @bitcast_v30i32_to_v15f64_scalar(<30 x i32> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s7 :: v_dual_mov_b32 v27, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s5 :: v_dual_mov_b32 v29, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -3153,10 +3258,18 @@ define inreg <30 x i32> @bitcast_v15f64_to_v30i32_scalar(<15 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB11_3
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB11_4
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; SI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; SI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
@@ -3172,10 +3285,8 @@ define inreg <30 x i32> @bitcast_v15f64_to_v30i32_scalar(<15 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB11_5
-; SI-NEXT:  .LBB11_3:
-; SI-NEXT:    s_branch .LBB11_2
-; SI-NEXT:  .LBB11_4:
+; SI-NEXT:    s_branch .LBB11_6
+; SI-NEXT:  .LBB11_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -3208,7 +3319,7 @@ define inreg <30 x i32> @bitcast_v15f64_to_v30i32_scalar(<15 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB11_5: ; %end
+; SI-NEXT:  .LBB11_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
 ; SI-NEXT:    v_readlane_b32 s64, v32, 12
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
@@ -3281,10 +3392,18 @@ define inreg <30 x i32> @bitcast_v15f64_to_v30i32_scalar(<15 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; VI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; VI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
@@ -3300,10 +3419,8 @@ define inreg <30 x i32> @bitcast_v15f64_to_v30i32_scalar(<15 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB11_5
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:    s_branch .LBB11_6
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -3336,7 +3453,7 @@ define inreg <30 x i32> @bitcast_v15f64_to_v30i32_scalar(<15 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB11_5: ; %end
+; VI-NEXT:  .LBB11_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
 ; VI-NEXT:    v_readlane_b32 s64, v32, 12
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
@@ -3409,10 +3526,18 @@ define inreg <30 x i32> @bitcast_v15f64_to_v30i32_scalar(<15 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; GFX9-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; GFX9-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
@@ -3428,10 +3553,8 @@ define inreg <30 x i32> @bitcast_v15f64_to_v30i32_scalar(<15 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB11_5
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:    s_branch .LBB11_6
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -3464,7 +3587,7 @@ define inreg <30 x i32> @bitcast_v15f64_to_v30i32_scalar(<15 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB11_5: ; %end
+; GFX9-NEXT:  .LBB11_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
 ; GFX9-NEXT:    v_readlane_b32 s64, v32, 12
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
@@ -3538,11 +3661,16 @@ define inreg <30 x i32> @bitcast_v15f64_to_v30i32_scalar(<15 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB11_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; GFX11-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; GFX11-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
@@ -3559,8 +3687,6 @@ define inreg <30 x i32> @bitcast_v15f64_to_v30i32_scalar(<15 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB11_5
-; GFX11-NEXT:  .LBB11_3:
-; GFX11-NEXT:    s_branch .LBB11_2
 ; GFX11-NEXT:  .LBB11_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -4566,7 +4692,7 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s43, v1
 ; SI-NEXT:    s_cmp_lg_u32 s42, 0
 ; SI-NEXT:    v_readfirstlane_b32 s42, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s34, s5, 16
 ; SI-NEXT:    s_lshr_b32 s35, s7, 16
@@ -4597,9 +4723,47 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 16
+; SI-NEXT:    s_mov_b64 s[30:31], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[30:31], -1
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[30:31], s[30:31], exec
+; SI-NEXT:    s_cselect_b32 s45, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s45, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -4659,9 +4823,9 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
-; SI-NEXT:  .LBB13_3: ; %end
-; SI-NEXT:    s_lshl_b32 s45, s30, 16
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 16
+; SI-NEXT:  .LBB13_5: ; %end
+; SI-NEXT:    s_lshl_b32 s45, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s45
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
@@ -4803,38 +4967,6 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_v30i32_to_v60i16_scalar:
 ; VI:       ; %bb.0:
@@ -4846,10 +4978,8 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; VI-NEXT:    v_writelane_b32 v30, s35, 1
 ; VI-NEXT:    v_writelane_b32 v30, s36, 2
 ; VI-NEXT:    v_writelane_b32 v30, s37, 3
-; VI-NEXT:    v_writelane_b32 v30, s38, 4
-; VI-NEXT:    v_writelane_b32 v30, s39, 5
-; VI-NEXT:    v_writelane_b32 v30, s30, 6
-; VI-NEXT:    v_writelane_b32 v30, s31, 7
+; VI-NEXT:    v_writelane_b32 v30, s30, 4
+; VI-NEXT:    v_writelane_b32 v30, s31, 5
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
 ; VI-NEXT:    v_readfirstlane_b32 s6, v15
 ; VI-NEXT:    v_readfirstlane_b32 s7, v14
@@ -4868,7 +4998,7 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s45, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s46, s6, 16
 ; VI-NEXT:    s_lshr_b32 s47, s7, 16
@@ -4892,16 +5022,54 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s26, 16
 ; VI-NEXT:    s_lshr_b32 s90, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s36, s19, 16
-; VI-NEXT:    s_lshr_b32 s37, s18, 16
-; VI-NEXT:    s_lshr_b32 s38, s17, 16
-; VI-NEXT:    s_lshr_b32 s39, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s36, s17, 16
+; VI-NEXT:    s_lshr_b32 s37, s16, 16
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr37
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr35
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -4954,38 +5122,38 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s26, 16
 ; VI-NEXT:    s_lshr_b32 s90, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s36, s19, 16
-; VI-NEXT:    s_lshr_b32 s37, s18, 16
-; VI-NEXT:    s_lshr_b32 s38, s17, 16
-; VI-NEXT:    s_lshr_b32 s39, s16, 16
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s36, s17, 16
+; VI-NEXT:    s_lshr_b32 s37, s16, 16
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s39, 16
+; VI-NEXT:    s_lshl_b32 s5, s37, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_and_b32 s5, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s16, s38, 16
+; VI-NEXT:    s_lshl_b32 s16, s36, 16
 ; VI-NEXT:    s_or_b32 s5, s5, s16
 ; VI-NEXT:    s_and_b32 s16, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s17, s37, 16
+; VI-NEXT:    s_lshl_b32 s17, s35, 16
 ; VI-NEXT:    s_or_b32 s16, s16, s17
 ; VI-NEXT:    s_and_b32 s17, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s18, s36, 16
+; VI-NEXT:    s_lshl_b32 s18, s34, 16
 ; VI-NEXT:    s_or_b32 s17, s17, s18
 ; VI-NEXT:    s_and_b32 s18, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s19, s35, 16
+; VI-NEXT:    s_lshl_b32 s19, s31, 16
 ; VI-NEXT:    s_or_b32 s18, s18, s19
 ; VI-NEXT:    s_and_b32 s19, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s20, s34, 16
+; VI-NEXT:    s_lshl_b32 s20, s30, 16
 ; VI-NEXT:    s_or_b32 s19, s19, s20
 ; VI-NEXT:    s_and_b32 s20, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s21, s31, 16
+; VI-NEXT:    s_lshl_b32 s21, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s20, s20, s21
 ; VI-NEXT:    s_and_b32 s21, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s22, s30, 16
+; VI-NEXT:    s_lshl_b32 s22, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s21, s21, s22
 ; VI-NEXT:    s_and_b32 s22, 0xffff, s24
 ; VI-NEXT:    s_lshl_b32 s23, s91, 16
@@ -5053,7 +5221,7 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s6, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s44, s46, 16
 ; VI-NEXT:    s_or_b32 s6, s6, s44
-; VI-NEXT:    v_readlane_b32 s30, v30, 6
+; VI-NEXT:    v_readlane_b32 s30, v30, 4
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    v_mov_b32_e32 v1, s5
 ; VI-NEXT:    v_mov_b32_e32 v2, s16
@@ -5084,9 +5252,7 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v27, s8
 ; VI-NEXT:    v_mov_b32_e32 v28, s7
 ; VI-NEXT:    v_mov_b32_e32 v29, s6
-; VI-NEXT:    v_readlane_b32 s31, v30, 7
-; VI-NEXT:    v_readlane_b32 s39, v30, 5
-; VI-NEXT:    v_readlane_b32 s38, v30, 4
+; VI-NEXT:    v_readlane_b32 s31, v30, 5
 ; VI-NEXT:    v_readlane_b32 s37, v30, 3
 ; VI-NEXT:    v_readlane_b32 s36, v30, 2
 ; VI-NEXT:    v_readlane_b32 s35, v30, 1
@@ -5096,38 +5262,6 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    ; implicit-def: $sgpr39
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr37
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v30i32_to_v60i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -5135,10 +5269,8 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; GFX9-NEXT:    buffer_store_dword v30, off, s[0:3], s32 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
-; GFX9-NEXT:    v_writelane_b32 v30, s34, 0
-; GFX9-NEXT:    v_writelane_b32 v30, s35, 1
-; GFX9-NEXT:    v_writelane_b32 v30, s30, 2
-; GFX9-NEXT:    v_writelane_b32 v30, s31, 3
+; GFX9-NEXT:    v_writelane_b32 v30, s30, 0
+; GFX9-NEXT:    v_writelane_b32 v30, s31, 1
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v16
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v15
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v14
@@ -5157,7 +5289,7 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s45, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s46, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s47, s7, 16
@@ -5185,12 +5317,50 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s93, s22, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s21, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s31, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s34, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s30, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s31, s16, 16
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr31
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_hi
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -5247,15 +5417,15 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s93, s22, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s21, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s31, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s34, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s16, 16
-; GFX9-NEXT:  .LBB13_3: ; %end
-; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s35
-; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s34
-; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s31
-; GFX9-NEXT:    s_pack_ll_b32_b16 s17, s19, s30
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s30, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s31, s16, 16
+; GFX9-NEXT:  .LBB13_5: ; %end
+; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s31
+; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s30
+; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, vcc_hi
+; GFX9-NEXT:    s_pack_ll_b32_b16 s17, s19, vcc_lo
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s18, s20, s95
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s19, s21, s94
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s20, s22, s93
@@ -5282,7 +5452,7 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s8, s56
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s7, s7, s47
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s6, s6, s46
-; GFX9-NEXT:    v_readlane_b32 s30, v30, 2
+; GFX9-NEXT:    v_readlane_b32 s30, v30, 0
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s16
@@ -5313,46 +5483,12 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s6
-; GFX9-NEXT:    v_readlane_b32 s31, v30, 3
-; GFX9-NEXT:    v_readlane_b32 s35, v30, 1
-; GFX9-NEXT:    v_readlane_b32 s34, v30, 0
+; GFX9-NEXT:    v_readlane_b32 s31, v30, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; GFX9-NEXT:    buffer_load_dword v30, off, s[0:3], s32 ; 4-byte Folded Reload
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr35
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr31
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_v30i32_to_v60i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -5372,7 +5508,7 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s15, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s40, 0
 ; GFX11-NEXT:    s_mov_b32 s94, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s40, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s41, s5, 16
@@ -5404,9 +5540,46 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s91, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s92, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s93, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s94
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB13_3
+; GFX11-NEXT:  .LBB13_2:
+; GFX11-NEXT:    s_mov_b32 s94, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr93
+; GFX11-NEXT:    ; implicit-def: $sgpr92
+; GFX11-NEXT:    ; implicit-def: $sgpr91
+; GFX11-NEXT:    ; implicit-def: $sgpr90
+; GFX11-NEXT:    ; implicit-def: $sgpr89
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr79
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:  .LBB13_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s94, s94, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s94, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s94, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -5467,7 +5640,7 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s91, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s92, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s93, s0, 16
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s93
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s92
@@ -5515,38 +5688,6 @@ define inreg <60 x i16> @bitcast_v30i32_to_v60i16_scalar(<30 x i32> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s7 :: v_dual_mov_b32 v27, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s5 :: v_dual_mov_b32 v29, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr93
-; GFX11-NEXT:    ; implicit-def: $sgpr92
-; GFX11-NEXT:    ; implicit-def: $sgpr91
-; GFX11-NEXT:    ; implicit-def: $sgpr90
-; GFX11-NEXT:    ; implicit-def: $sgpr89
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr79
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -6949,10 +7090,8 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v30, s87, 29
 ; SI-NEXT:    v_writelane_b32 v30, s96, 30
 ; SI-NEXT:    v_writelane_b32 v30, s97, 31
-; SI-NEXT:    v_writelane_b32 v30, s98, 32
-; SI-NEXT:    v_writelane_b32 v30, s99, 33
-; SI-NEXT:    v_writelane_b32 v30, s30, 34
-; SI-NEXT:    v_writelane_b32 v30, s31, 35
+; SI-NEXT:    v_writelane_b32 v30, s30, 32
+; SI-NEXT:    v_writelane_b32 v30, s31, 33
 ; SI-NEXT:    v_readfirstlane_b32 s7, v15
 ; SI-NEXT:    v_readfirstlane_b32 s9, v14
 ; SI-NEXT:    v_readfirstlane_b32 s11, v13
@@ -6964,25 +7103,25 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s79, v7
 ; SI-NEXT:    v_readfirstlane_b32 s89, v6
 ; SI-NEXT:    v_readfirstlane_b32 s93, v5
-; SI-NEXT:    v_readfirstlane_b32 s30, v4
-; SI-NEXT:    v_readfirstlane_b32 s35, v3
-; SI-NEXT:    v_readfirstlane_b32 s70, v2
-; SI-NEXT:    v_readfirstlane_b32 s81, v1
-; SI-NEXT:    v_readfirstlane_b32 s84, v0
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v4
+; SI-NEXT:    v_readfirstlane_b32 s31, v3
+; SI-NEXT:    v_readfirstlane_b32 s68, v2
+; SI-NEXT:    v_readfirstlane_b32 s71, v1
+; SI-NEXT:    v_readfirstlane_b32 s82, v0
 ; SI-NEXT:    s_lshr_b32 s90, s29, 16
 ; SI-NEXT:    s_lshr_b32 s92, s28, 16
 ; SI-NEXT:    s_lshr_b32 s94, s27, 16
-; SI-NEXT:    s_lshr_b32 s31, s26, 16
-; SI-NEXT:    s_lshr_b32 s68, s25, 16
-; SI-NEXT:    s_lshr_b32 s71, s24, 16
-; SI-NEXT:    s_lshr_b32 s82, s23, 16
-; SI-NEXT:    s_lshr_b32 s85, s22, 16
-; SI-NEXT:    s_lshr_b32 s86, s21, 16
-; SI-NEXT:    s_lshr_b32 s87, s20, 16
-; SI-NEXT:    s_lshr_b32 s96, s19, 16
-; SI-NEXT:    s_lshr_b32 s97, s18, 16
-; SI-NEXT:    s_lshr_b32 s98, s17, 16
-; SI-NEXT:    s_lshr_b32 s99, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s26, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s69, s24, 16
+; SI-NEXT:    s_lshr_b32 s80, s23, 16
+; SI-NEXT:    s_lshr_b32 s83, s22, 16
+; SI-NEXT:    s_lshr_b32 s84, s21, 16
+; SI-NEXT:    s_lshr_b32 s85, s20, 16
+; SI-NEXT:    s_lshr_b32 s86, s19, 16
+; SI-NEXT:    s_lshr_b32 s87, s18, 16
+; SI-NEXT:    s_lshr_b32 s96, s17, 16
+; SI-NEXT:    s_lshr_b32 s97, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -6994,47 +7133,47 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s78, s79, 16
 ; SI-NEXT:    s_lshr_b32 s88, s89, 16
 ; SI-NEXT:    s_lshr_b32 s91, s93, 16
-; SI-NEXT:    s_lshr_b32 s95, s30, 16
-; SI-NEXT:    s_lshr_b32 s34, s35, 16
-; SI-NEXT:    s_lshr_b32 s69, s70, 16
-; SI-NEXT:    s_lshr_b32 s80, s81, 16
-; SI-NEXT:    s_lshr_b32 s83, s84, 16
+; SI-NEXT:    s_lshr_b32 s95, vcc_lo, 16
+; SI-NEXT:    s_lshr_b32 s30, s31, 16
+; SI-NEXT:    s_lshr_b32 s35, s68, 16
+; SI-NEXT:    s_lshr_b32 s70, s71, 16
+; SI-NEXT:    s_lshr_b32 s81, s82, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v16
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_4
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s98, 16
+; SI-NEXT:    s_lshl_b32 s41, s96, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s94, 16
@@ -7045,19 +7184,19 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s90, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s84, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_and_b32 s4, s82, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s81, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_and_b32 s4, s71, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_and_b32 s4, s68, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s54, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s93, 0xffff
@@ -7093,61 +7232,70 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB15_3
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s46, s4, 0x30000
@@ -7164,29 +7312,29 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s90, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s84, s84, 3
+; SI-NEXT:    s_add_i32 s82, s82, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s84, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_and_b32 s4, s82, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s81, s81, 3
+; SI-NEXT:    s_add_i32 s71, s71, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s81, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_and_b32 s4, s71, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s70, s70, 3
+; SI-NEXT:    s_add_i32 s68, s68, 3
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_and_b32 s4, s68, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s35, s35, 3
+; SI-NEXT:    s_add_i32 s31, s31, 3
 ; SI-NEXT:    s_add_i32 s52, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s30, s30, 3
+; SI-NEXT:    s_add_i32 vcc_lo, vcc_lo, 3
 ; SI-NEXT:    s_add_i32 s53, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s93, s93, 3
@@ -7245,8 +7393,8 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s65, s4, 0x30000
-; SI-NEXT:  .LBB15_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v30, 34
+; SI-NEXT:  .LBB15_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v30, 32
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -7277,9 +7425,7 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v27, s63
 ; SI-NEXT:    v_mov_b32_e32 v28, s64
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
-; SI-NEXT:    v_readlane_b32 s31, v30, 35
-; SI-NEXT:    v_readlane_b32 s99, v30, 33
-; SI-NEXT:    v_readlane_b32 s98, v30, 32
+; SI-NEXT:    v_readlane_b32 s31, v30, 33
 ; SI-NEXT:    v_readlane_b32 s97, v30, 31
 ; SI-NEXT:    v_readlane_b32 s96, v30, 30
 ; SI-NEXT:    v_readlane_b32 s87, v30, 29
@@ -7317,9 +7463,6 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB15_2
 ;
 ; VI-LABEL: bitcast_v60i16_to_v30i32_scalar:
 ; VI:       ; %bb.0:
@@ -7360,312 +7503,399 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; VI-NEXT:    v_writelane_b32 v30, s87, 29
 ; VI-NEXT:    v_writelane_b32 v30, s30, 30
 ; VI-NEXT:    v_writelane_b32 v30, s31, 31
-; VI-NEXT:    v_readfirstlane_b32 s11, v13
-; VI-NEXT:    s_lshr_b32 s63, s11, 16
-; VI-NEXT:    v_readfirstlane_b32 s13, v12
+; VI-NEXT:    s_lshr_b32 s14, s20, 16
 ; VI-NEXT:    ; implicit-def: $vgpr31 : SGPR spill to VGPR lane
-; VI-NEXT:    s_lshr_b32 s62, s13, 16
-; VI-NEXT:    v_readfirstlane_b32 s15, v11
-; VI-NEXT:    v_writelane_b32 v31, s63, 0
-; VI-NEXT:    s_lshr_b32 s61, s15, 16
-; VI-NEXT:    v_readfirstlane_b32 s73, v10
-; VI-NEXT:    v_writelane_b32 v31, s62, 1
-; VI-NEXT:    v_readfirstlane_b32 s7, v15
-; VI-NEXT:    v_readfirstlane_b32 s9, v14
-; VI-NEXT:    s_lshr_b32 s60, s73, 16
-; VI-NEXT:    v_readfirstlane_b32 s75, v9
+; VI-NEXT:    s_lshr_b32 s42, s19, 16
+; VI-NEXT:    v_writelane_b32 v31, s14, 0
+; VI-NEXT:    s_lshr_b32 s43, s18, 16
+; VI-NEXT:    v_readfirstlane_b32 s6, v15
+; VI-NEXT:    v_readfirstlane_b32 s8, v14
+; VI-NEXT:    v_readfirstlane_b32 s10, v13
+; VI-NEXT:    v_readfirstlane_b32 s12, v12
+; VI-NEXT:    v_readfirstlane_b32 s87, v11
+; VI-NEXT:    v_readfirstlane_b32 s15, v10
+; VI-NEXT:    v_readfirstlane_b32 s72, v9
 ; VI-NEXT:    v_readfirstlane_b32 s77, v8
 ; VI-NEXT:    v_readfirstlane_b32 s79, v7
 ; VI-NEXT:    v_readfirstlane_b32 s89, v6
-; VI-NEXT:    v_readfirstlane_b32 s31, v5
-; VI-NEXT:    v_readfirstlane_b32 s68, v4
-; VI-NEXT:    v_readfirstlane_b32 s71, v3
-; VI-NEXT:    v_readfirstlane_b32 s82, v2
-; VI-NEXT:    v_readfirstlane_b32 s85, v1
-; VI-NEXT:    v_readfirstlane_b32 s6, v0
-; VI-NEXT:    v_writelane_b32 v31, s61, 2
-; VI-NEXT:    s_lshr_b32 s90, s29, 16
-; VI-NEXT:    s_lshr_b32 s30, s28, 16
-; VI-NEXT:    s_lshr_b32 s34, s27, 16
-; VI-NEXT:    s_lshr_b32 s69, s26, 16
-; VI-NEXT:    s_lshr_b32 s80, s25, 16
-; VI-NEXT:    s_lshr_b32 s83, s24, 16
-; VI-NEXT:    s_lshr_b32 s86, s23, 16
-; VI-NEXT:    s_lshr_b32 s8, s22, 16
-; VI-NEXT:    s_lshr_b32 s10, s21, 16
-; VI-NEXT:    s_lshr_b32 s12, s20, 16
-; VI-NEXT:    s_lshr_b32 s14, s19, 16
-; VI-NEXT:    s_lshr_b32 s72, s18, 16
-; VI-NEXT:    s_lshr_b32 s74, s17, 16
-; VI-NEXT:    s_lshr_b32 s76, s16, 16
-; VI-NEXT:    s_lshr_b32 s66, s7, 16
-; VI-NEXT:    s_lshr_b32 s67, s9, 16
-; VI-NEXT:    s_lshr_b32 s59, s75, 16
-; VI-NEXT:    s_lshr_b32 s58, s77, 16
-; VI-NEXT:    s_lshr_b32 s78, s79, 16
-; VI-NEXT:    s_lshr_b32 s88, s89, 16
-; VI-NEXT:    s_lshr_b32 s91, s31, 16
-; VI-NEXT:    s_lshr_b32 s35, s68, 16
-; VI-NEXT:    s_lshr_b32 s70, s71, 16
-; VI-NEXT:    s_lshr_b32 s81, s82, 16
-; VI-NEXT:    s_lshr_b32 s84, s85, 16
-; VI-NEXT:    s_lshr_b32 s87, s6, 16
+; VI-NEXT:    v_readfirstlane_b32 vcc_hi, v5
+; VI-NEXT:    v_readfirstlane_b32 s34, v4
+; VI-NEXT:    v_readfirstlane_b32 s69, v3
+; VI-NEXT:    v_readfirstlane_b32 s80, v2
+; VI-NEXT:    v_readfirstlane_b32 s83, v1
+; VI-NEXT:    v_readfirstlane_b32 s86, v0
+; VI-NEXT:    v_writelane_b32 v31, s42, 1
+; VI-NEXT:    s_lshr_b32 s35, s29, 16
+; VI-NEXT:    s_lshr_b32 s68, s28, 16
+; VI-NEXT:    s_lshr_b32 s70, s27, 16
+; VI-NEXT:    s_lshr_b32 s81, s26, 16
+; VI-NEXT:    s_lshr_b32 s84, s25, 16
+; VI-NEXT:    s_lshr_b32 s7, s24, 16
+; VI-NEXT:    s_lshr_b32 s11, s23, 16
+; VI-NEXT:    s_lshr_b32 s73, s22, 16
+; VI-NEXT:    s_lshr_b32 s75, s21, 16
+; VI-NEXT:    s_lshr_b32 s41, s17, 16
+; VI-NEXT:    s_lshr_b32 s5, s16, 16
+; VI-NEXT:    s_lshr_b32 s66, s6, 16
+; VI-NEXT:    s_lshr_b32 s74, s8, 16
+; VI-NEXT:    s_lshr_b32 s76, s10, 16
+; VI-NEXT:    s_lshr_b32 s78, s12, 16
+; VI-NEXT:    s_lshr_b32 s88, s87, 16
+; VI-NEXT:    s_lshr_b32 s90, s15, 16
+; VI-NEXT:    s_lshr_b32 s91, s72, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s77, 16
+; VI-NEXT:    s_lshr_b32 s30, s79, 16
+; VI-NEXT:    s_lshr_b32 s31, s89, 16
+; VI-NEXT:    s_lshr_b32 s67, vcc_hi, 16
+; VI-NEXT:    s_lshr_b32 s71, s34, 16
+; VI-NEXT:    s_lshr_b32 s82, s69, 16
+; VI-NEXT:    s_lshr_b32 s85, s80, 16
+; VI-NEXT:    s_lshr_b32 s9, s83, 16
+; VI-NEXT:    s_lshr_b32 s13, s86, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
-; VI-NEXT:    v_writelane_b32 v31, s60, 3
+; VI-NEXT:    v_writelane_b32 v31, s43, 2
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    v_writelane_b32 v31, s59, 4
-; VI-NEXT:    v_writelane_b32 v31, s58, 5
-; VI-NEXT:    s_cbranch_scc0 .LBB15_4
+; VI-NEXT:    v_writelane_b32 v31, s41, 3
+; VI-NEXT:    v_writelane_b32 v31, s5, 4
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s76, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s72, 16
+; VI-NEXT:    s_lshl_b32 s5, s43, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s14, 16
+; VI-NEXT:    s_lshl_b32 s5, s42, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s74, 16
+; VI-NEXT:    s_lshl_b32 s41, s41, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s12, 16
+; VI-NEXT:    s_lshl_b32 s5, s14, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s10, 16
+; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s8, 16
+; VI-NEXT:    s_lshl_b32 s5, s73, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s48, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
-; VI-NEXT:    s_lshl_b32 s5, s90, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s6
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s86
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s85
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s83
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s82
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s80
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s68
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s34
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s31
-; VI-NEXT:    s_lshl_b32 s5, s91, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_hi
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s89
-; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s79
-; VI-NEXT:    s_lshl_b32 s5, s78, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s77
-; VI-NEXT:    s_lshl_b32 s5, s58, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s58, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s75
-; VI-NEXT:    s_lshl_b32 s5, s59, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s72
+; VI-NEXT:    s_lshl_b32 s5, s91, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s73
-; VI-NEXT:    s_lshl_b32 s5, s60, 16
-; VI-NEXT:    s_or_b32 s60, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s15
-; VI-NEXT:    s_lshl_b32 s5, s61, 16
+; VI-NEXT:    s_lshl_b32 s5, s90, 16
+; VI-NEXT:    s_or_b32 s60, s4, s5
+; VI-NEXT:    s_and_b32 s4, 0xffff, s87
+; VI-NEXT:    s_lshl_b32 s5, s88, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s13
-; VI-NEXT:    s_lshl_b32 s5, s62, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s12
+; VI-NEXT:    s_lshl_b32 s5, s78, 16
 ; VI-NEXT:    s_or_b32 s62, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s11
-; VI-NEXT:    s_lshl_b32 s5, s63, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s10
+; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s63, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s9
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s8
+; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s64, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s7
+; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s65, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB15_3
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    v_writelane_b32 v31, s26, 5
+; VI-NEXT:    s_mov_b32 s26, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, s27
+; VI-NEXT:    s_mov_b32 s27, s89
+; VI-NEXT:    s_mov_b32 s89, s28
+; VI-NEXT:    s_mov_b32 s28, s79
+; VI-NEXT:    s_mov_b32 s79, s29
+; VI-NEXT:    s_mov_b32 s29, s77
+; VI-NEXT:    s_mov_b32 s77, s13
+; VI-NEXT:    s_mov_b32 s14, s12
+; VI-NEXT:    s_mov_b32 s13, s11
+; VI-NEXT:    s_mov_b32 s12, s10
+; VI-NEXT:    s_mov_b32 s11, s9
+; VI-NEXT:    s_mov_b32 s10, s8
+; VI-NEXT:    s_mov_b32 s9, s7
+; VI-NEXT:    s_mov_b32 s8, s6
+; VI-NEXT:    s_mov_b32 s7, s85
+; VI-NEXT:    s_mov_b32 s85, s82
+; VI-NEXT:    s_mov_b32 s82, s71
+; VI-NEXT:    s_mov_b32 s71, s68
+; VI-NEXT:    s_mov_b32 s68, s35
+; VI-NEXT:    s_mov_b32 s35, s31
+; VI-NEXT:    s_mov_b32 s31, s30
+; VI-NEXT:    s_mov_b32 s30, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, s91
+; VI-NEXT:    s_mov_b32 s91, s90
+; VI-NEXT:    s_mov_b32 s90, s88
+; VI-NEXT:    s_mov_b32 s88, s78
+; VI-NEXT:    s_mov_b32 s78, s76
+; VI-NEXT:    s_mov_b32 s76, s74
+; VI-NEXT:    s_mov_b32 s74, s66
+; VI-NEXT:    s_mov_b32 s6, s75
+; VI-NEXT:    s_mov_b32 s75, s72
+; VI-NEXT:    s_mov_b32 s72, s73
+; VI-NEXT:    s_mov_b32 s73, s15
+; VI-NEXT:    s_mov_b32 s15, s87
+; VI-NEXT:    s_mov_b32 s87, s84
+; VI-NEXT:    s_mov_b32 s84, s81
+; VI-NEXT:    s_mov_b32 s81, s70
+; VI-NEXT:    s_mov_b32 s70, s67
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    s_mov_b32 s67, s70
+; VI-NEXT:    s_mov_b32 s70, s81
+; VI-NEXT:    s_mov_b32 s81, s84
+; VI-NEXT:    s_mov_b32 s84, s87
+; VI-NEXT:    s_mov_b32 s87, s15
+; VI-NEXT:    s_mov_b32 s15, s73
+; VI-NEXT:    s_mov_b32 s73, s72
+; VI-NEXT:    s_mov_b32 s72, s75
+; VI-NEXT:    s_mov_b32 s75, s6
+; VI-NEXT:    s_mov_b32 s66, s74
+; VI-NEXT:    s_mov_b32 s74, s76
+; VI-NEXT:    s_mov_b32 s76, s78
+; VI-NEXT:    s_mov_b32 s78, s88
+; VI-NEXT:    s_mov_b32 s88, s90
+; VI-NEXT:    s_mov_b32 s90, s91
+; VI-NEXT:    s_mov_b32 s91, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, s30
+; VI-NEXT:    s_mov_b32 s30, s31
+; VI-NEXT:    s_mov_b32 s31, s35
+; VI-NEXT:    s_mov_b32 s35, s68
+; VI-NEXT:    s_mov_b32 s68, s71
+; VI-NEXT:    s_mov_b32 s71, s82
+; VI-NEXT:    s_mov_b32 s82, s85
+; VI-NEXT:    s_mov_b32 s85, s7
+; VI-NEXT:    s_mov_b32 s6, s8
+; VI-NEXT:    s_mov_b32 s7, s9
+; VI-NEXT:    s_mov_b32 s8, s10
+; VI-NEXT:    s_mov_b32 s9, s11
+; VI-NEXT:    s_mov_b32 s10, s12
+; VI-NEXT:    s_mov_b32 s11, s13
+; VI-NEXT:    s_mov_b32 s12, s14
+; VI-NEXT:    s_mov_b32 s13, s77
+; VI-NEXT:    s_mov_b32 s77, s29
+; VI-NEXT:    s_mov_b32 s29, s79
+; VI-NEXT:    s_mov_b32 s79, s28
+; VI-NEXT:    s_mov_b32 s28, s89
+; VI-NEXT:    s_mov_b32 s89, s27
+; VI-NEXT:    s_mov_b32 s27, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, s26
+; VI-NEXT:    v_readlane_b32 s26, v31, 5
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 4
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s76, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_add_i32 s17, s17, 3
+; VI-NEXT:    v_readlane_b32 s14, v31, 3
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_and_b32 s5, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s16, s74, 16
-; VI-NEXT:    s_or_b32 s5, s16, s5
+; VI-NEXT:    s_lshl_b32 s14, s14, 16
+; VI-NEXT:    s_or_b32 s5, s14, s5
+; VI-NEXT:    s_add_i32 s37, s5, 0x30000
 ; VI-NEXT:    s_add_i32 s18, s18, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 2
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
-; VI-NEXT:    s_add_i32 s37, s5, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s72, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 1
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s14, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 0
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s12, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s10, 16
+; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s8, 16
+; VI-NEXT:    s_lshl_b32 s5, s73, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s26, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s27, s27, 3
 ; VI-NEXT:    s_add_i32 s46, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s27, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s28, s28, 3
 ; VI-NEXT:    s_add_i32 s47, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s28, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s29, s29, 3
 ; VI-NEXT:    s_add_i32 s48, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s90, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s6, s6, 3
+; VI-NEXT:    s_add_i32 s86, s86, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s6, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_and_b32 s4, s86, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s85, s85, 3
+; VI-NEXT:    s_add_i32 s83, s83, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s85, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_and_b32 s4, s83, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s82, s82, 3
+; VI-NEXT:    s_add_i32 s80, s80, 3
 ; VI-NEXT:    s_add_i32 s51, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s82, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_and_b32 s4, s80, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s71, s71, 3
+; VI-NEXT:    s_add_i32 s69, s69, 3
 ; VI-NEXT:    s_add_i32 s52, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s71, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, s69, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s68, s68, 3
+; VI-NEXT:    s_add_i32 s34, s34, 3
 ; VI-NEXT:    s_add_i32 s53, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s68, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, s34, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s31, s31, 3
+; VI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; VI-NEXT:    s_add_i32 s54, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s31, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s91, 16
+; VI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s89, s89, 3
 ; VI-NEXT:    s_add_i32 s55, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s89, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s79, s79, 3
 ; VI-NEXT:    s_add_i32 s56, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s79, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s78, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s77, s77, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 5
 ; VI-NEXT:    s_add_i32 s57, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s77, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s75, s75, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 4
+; VI-NEXT:    s_add_i32 s75, s72, 3
 ; VI-NEXT:    s_add_i32 s58, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s75, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s91, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s73, s73, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 3
+; VI-NEXT:    s_add_i32 s73, s15, 3
 ; VI-NEXT:    s_add_i32 s59, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s73, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s90, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s15, s15, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 2
+; VI-NEXT:    s_add_i32 s15, s87, 3
 ; VI-NEXT:    s_add_i32 s60, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s15, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s88, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s13, s13, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 1
+; VI-NEXT:    s_add_i32 s13, s12, 3
 ; VI-NEXT:    s_add_i32 s61, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s13, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s78, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s11, s11, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 0
+; VI-NEXT:    s_add_i32 s11, s10, 3
 ; VI-NEXT:    s_add_i32 s62, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s11, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s9, s9, 3
+; VI-NEXT:    s_add_i32 s9, s8, 3
 ; VI-NEXT:    s_add_i32 s63, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s9, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s7, s7, 3
+; VI-NEXT:    s_add_i32 s7, s6, 3
 ; VI-NEXT:    s_add_i32 s64, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s65, s4, 0x30000
-; VI-NEXT:  .LBB15_3: ; %end
+; VI-NEXT:  .LBB15_5: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v30, 30
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
@@ -7734,13 +7964,6 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_4:
-; VI-NEXT:    s_mov_b32 vcc_lo, s66
-; VI-NEXT:    s_mov_b32 vcc_hi, s67
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_mov_b32 s67, vcc_hi
-; VI-NEXT:    s_mov_b32 s66, vcc_lo
-; VI-NEXT:    s_branch .LBB15_2
 ;
 ; GFX9-LABEL: bitcast_v60i16_to_v30i32_scalar:
 ; GFX9:       ; %bb.0:
@@ -7840,10 +8063,18 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s76
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s64, s74, s75
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s65, s72, s73
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -7874,10 +8105,8 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v27, s63, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v28, s64, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v29, s65, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB15_5
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:    s_branch .LBB15_6
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -7910,7 +8139,7 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB15_5: ; %end
+; GFX9-NEXT:  .LBB15_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
 ; GFX9-NEXT:    v_readlane_b32 s64, v32, 12
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
@@ -8009,11 +8238,16 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s28, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s29, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -8045,8 +8279,6 @@ define inreg <30 x i32> @bitcast_v60i16_to_v30i32_scalar(<60 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v28, s28, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v29, s29, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -9033,7 +9265,7 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s43, v1
 ; SI-NEXT:    s_cmp_lg_u32 s42, 0
 ; SI-NEXT:    v_readfirstlane_b32 s42, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s34, s5, 16
 ; SI-NEXT:    s_lshr_b32 s35, s7, 16
@@ -9064,9 +9296,47 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 16
+; SI-NEXT:    s_mov_b64 s[30:31], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[30:31], -1
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[30:31], s[30:31], exec
+; SI-NEXT:    s_cselect_b32 s45, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s45, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s19, s19, 3
@@ -9126,9 +9396,9 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
-; SI-NEXT:  .LBB17_3: ; %end
-; SI-NEXT:    s_lshl_b32 s45, s30, 16
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 16
+; SI-NEXT:  .LBB17_5: ; %end
+; SI-NEXT:    s_lshl_b32 s45, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s45
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
@@ -9270,38 +9540,6 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_v30i32_to_v60f16_scalar:
 ; VI:       ; %bb.0:
@@ -9313,10 +9551,8 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; VI-NEXT:    v_writelane_b32 v30, s35, 1
 ; VI-NEXT:    v_writelane_b32 v30, s36, 2
 ; VI-NEXT:    v_writelane_b32 v30, s37, 3
-; VI-NEXT:    v_writelane_b32 v30, s38, 4
-; VI-NEXT:    v_writelane_b32 v30, s39, 5
-; VI-NEXT:    v_writelane_b32 v30, s30, 6
-; VI-NEXT:    v_writelane_b32 v30, s31, 7
+; VI-NEXT:    v_writelane_b32 v30, s30, 4
+; VI-NEXT:    v_writelane_b32 v30, s31, 5
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
 ; VI-NEXT:    v_readfirstlane_b32 s6, v15
 ; VI-NEXT:    v_readfirstlane_b32 s7, v14
@@ -9335,7 +9571,7 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s45, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s46, s6, 16
 ; VI-NEXT:    s_lshr_b32 s47, s7, 16
@@ -9359,16 +9595,54 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s89, s26, 16
 ; VI-NEXT:    s_lshr_b32 s90, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s36, s19, 16
-; VI-NEXT:    s_lshr_b32 s37, s18, 16
-; VI-NEXT:    s_lshr_b32 s38, s17, 16
-; VI-NEXT:    s_lshr_b32 s39, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s36, s17, 16
+; VI-NEXT:    s_lshr_b32 s37, s16, 16
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr37
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr35
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s6, s6, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s8, s8, 3
@@ -9421,38 +9695,38 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s89, s26, 16
 ; VI-NEXT:    s_lshr_b32 s90, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s36, s19, 16
-; VI-NEXT:    s_lshr_b32 s37, s18, 16
-; VI-NEXT:    s_lshr_b32 s38, s17, 16
-; VI-NEXT:    s_lshr_b32 s39, s16, 16
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s36, s17, 16
+; VI-NEXT:    s_lshr_b32 s37, s16, 16
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s39, 16
+; VI-NEXT:    s_lshl_b32 s5, s37, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_and_b32 s5, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s16, s38, 16
+; VI-NEXT:    s_lshl_b32 s16, s36, 16
 ; VI-NEXT:    s_or_b32 s5, s5, s16
 ; VI-NEXT:    s_and_b32 s16, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s17, s37, 16
+; VI-NEXT:    s_lshl_b32 s17, s35, 16
 ; VI-NEXT:    s_or_b32 s16, s16, s17
 ; VI-NEXT:    s_and_b32 s17, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s18, s36, 16
+; VI-NEXT:    s_lshl_b32 s18, s34, 16
 ; VI-NEXT:    s_or_b32 s17, s17, s18
 ; VI-NEXT:    s_and_b32 s18, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s19, s35, 16
+; VI-NEXT:    s_lshl_b32 s19, s31, 16
 ; VI-NEXT:    s_or_b32 s18, s18, s19
 ; VI-NEXT:    s_and_b32 s19, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s20, s34, 16
+; VI-NEXT:    s_lshl_b32 s20, s30, 16
 ; VI-NEXT:    s_or_b32 s19, s19, s20
 ; VI-NEXT:    s_and_b32 s20, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s21, s31, 16
+; VI-NEXT:    s_lshl_b32 s21, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s20, s20, s21
 ; VI-NEXT:    s_and_b32 s21, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s22, s30, 16
+; VI-NEXT:    s_lshl_b32 s22, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s21, s21, s22
 ; VI-NEXT:    s_and_b32 s22, 0xffff, s24
 ; VI-NEXT:    s_lshl_b32 s23, s91, 16
@@ -9520,7 +9794,7 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; VI-NEXT:    s_and_b32 s6, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s44, s46, 16
 ; VI-NEXT:    s_or_b32 s6, s6, s44
-; VI-NEXT:    v_readlane_b32 s30, v30, 6
+; VI-NEXT:    v_readlane_b32 s30, v30, 4
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    v_mov_b32_e32 v1, s5
 ; VI-NEXT:    v_mov_b32_e32 v2, s16
@@ -9551,9 +9825,7 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v27, s8
 ; VI-NEXT:    v_mov_b32_e32 v28, s7
 ; VI-NEXT:    v_mov_b32_e32 v29, s6
-; VI-NEXT:    v_readlane_b32 s31, v30, 7
-; VI-NEXT:    v_readlane_b32 s39, v30, 5
-; VI-NEXT:    v_readlane_b32 s38, v30, 4
+; VI-NEXT:    v_readlane_b32 s31, v30, 5
 ; VI-NEXT:    v_readlane_b32 s37, v30, 3
 ; VI-NEXT:    v_readlane_b32 s36, v30, 2
 ; VI-NEXT:    v_readlane_b32 s35, v30, 1
@@ -9563,38 +9835,6 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    ; implicit-def: $sgpr39
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr37
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v30i32_to_v60f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -9602,10 +9842,8 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; GFX9-NEXT:    buffer_store_dword v30, off, s[0:3], s32 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
-; GFX9-NEXT:    v_writelane_b32 v30, s34, 0
-; GFX9-NEXT:    v_writelane_b32 v30, s35, 1
-; GFX9-NEXT:    v_writelane_b32 v30, s30, 2
-; GFX9-NEXT:    v_writelane_b32 v30, s31, 3
+; GFX9-NEXT:    v_writelane_b32 v30, s30, 0
+; GFX9-NEXT:    v_writelane_b32 v30, s31, 1
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v16
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v15
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v14
@@ -9624,7 +9862,7 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s45, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s46, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s47, s7, 16
@@ -9652,12 +9890,50 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s93, s22, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s21, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s31, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s34, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s30, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s31, s16, 16
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr31
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_hi
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s6, s6, 3
 ; GFX9-NEXT:    s_add_i32 s7, s7, 3
 ; GFX9-NEXT:    s_add_i32 s8, s8, 3
@@ -9714,15 +9990,15 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s93, s22, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s21, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s31, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s34, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s16, 16
-; GFX9-NEXT:  .LBB17_3: ; %end
-; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s35
-; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s34
-; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s31
-; GFX9-NEXT:    s_pack_ll_b32_b16 s17, s19, s30
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s30, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s31, s16, 16
+; GFX9-NEXT:  .LBB17_5: ; %end
+; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s31
+; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s30
+; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, vcc_hi
+; GFX9-NEXT:    s_pack_ll_b32_b16 s17, s19, vcc_lo
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s18, s20, s95
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s19, s21, s94
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s20, s22, s93
@@ -9749,7 +10025,7 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s8, s56
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s7, s7, s47
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s6, s6, s46
-; GFX9-NEXT:    v_readlane_b32 s30, v30, 2
+; GFX9-NEXT:    v_readlane_b32 s30, v30, 0
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s16
@@ -9780,46 +10056,12 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s6
-; GFX9-NEXT:    v_readlane_b32 s31, v30, 3
-; GFX9-NEXT:    v_readlane_b32 s35, v30, 1
-; GFX9-NEXT:    v_readlane_b32 s34, v30, 0
+; GFX9-NEXT:    v_readlane_b32 s31, v30, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; GFX9-NEXT:    buffer_load_dword v30, off, s[0:3], s32 ; 4-byte Folded Reload
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr35
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr31
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v30i32_to_v60f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -9839,7 +10081,7 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s15, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s40, 0
 ; GFX11-NEXT:    s_mov_b32 s94, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s40, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s41, s5, 16
@@ -9871,9 +10113,46 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s91, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s92, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s93, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s94
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB17_3
+; GFX11-NEXT:  .LBB17_2:
+; GFX11-NEXT:    s_mov_b32 s94, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr93
+; GFX11-NEXT:    ; implicit-def: $sgpr92
+; GFX11-NEXT:    ; implicit-def: $sgpr91
+; GFX11-NEXT:    ; implicit-def: $sgpr90
+; GFX11-NEXT:    ; implicit-def: $sgpr89
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr79
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:  .LBB17_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s94, s94, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s94, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s94, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s4, s4, 3
 ; GFX11-NEXT:    s_add_i32 s5, s5, 3
 ; GFX11-NEXT:    s_add_i32 s6, s6, 3
@@ -9934,7 +10213,7 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s91, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s92, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s93, s0, 16
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s93
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s92
@@ -9982,38 +10261,6 @@ define inreg <60 x half> @bitcast_v30i32_to_v60f16_scalar(<30 x i32> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s7 :: v_dual_mov_b32 v27, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s5 :: v_dual_mov_b32 v29, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr93
-; GFX11-NEXT:    ; implicit-def: $sgpr92
-; GFX11-NEXT:    ; implicit-def: $sgpr91
-; GFX11-NEXT:    ; implicit-def: $sgpr90
-; GFX11-NEXT:    ; implicit-def: $sgpr89
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr79
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -11560,10 +11807,8 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v32, s87, 29
 ; SI-NEXT:    v_writelane_b32 v32, s96, 30
 ; SI-NEXT:    v_writelane_b32 v32, s97, 31
-; SI-NEXT:    v_writelane_b32 v32, s98, 32
-; SI-NEXT:    v_writelane_b32 v32, s99, 33
-; SI-NEXT:    v_writelane_b32 v32, s30, 34
-; SI-NEXT:    v_writelane_b32 v32, s31, 35
+; SI-NEXT:    v_writelane_b32 v32, s30, 32
+; SI-NEXT:    v_writelane_b32 v32, s31, 33
 ; SI-NEXT:    v_readfirstlane_b32 s6, v15
 ; SI-NEXT:    v_readfirstlane_b32 s8, v14
 ; SI-NEXT:    v_readfirstlane_b32 s10, v13
@@ -11577,23 +11822,23 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s90, v5
 ; SI-NEXT:    v_readfirstlane_b32 s92, v4
 ; SI-NEXT:    v_readfirstlane_b32 s94, v3
-; SI-NEXT:    v_readfirstlane_b32 s30, v2
-; SI-NEXT:    v_readfirstlane_b32 s35, v1
-; SI-NEXT:    v_readfirstlane_b32 s70, v0
-; SI-NEXT:    s_lshr_b32 s31, s29, 16
-; SI-NEXT:    s_lshr_b32 s68, s28, 16
-; SI-NEXT:    s_lshr_b32 s71, s27, 16
-; SI-NEXT:    s_lshr_b32 s81, s26, 16
-; SI-NEXT:    s_lshr_b32 s82, s25, 16
-; SI-NEXT:    s_lshr_b32 s83, s24, 16
-; SI-NEXT:    s_lshr_b32 s84, s23, 16
-; SI-NEXT:    s_lshr_b32 s85, s22, 16
-; SI-NEXT:    s_lshr_b32 s86, s21, 16
-; SI-NEXT:    s_lshr_b32 s87, s20, 16
-; SI-NEXT:    s_lshr_b32 s96, s19, 16
-; SI-NEXT:    s_lshr_b32 s97, s18, 16
-; SI-NEXT:    s_lshr_b32 s98, s17, 16
-; SI-NEXT:    s_lshr_b32 s99, s16, 16
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v2
+; SI-NEXT:    v_readfirstlane_b32 s31, v1
+; SI-NEXT:    v_readfirstlane_b32 s68, v0
+; SI-NEXT:    s_lshr_b32 vcc_hi, s29, 16
+; SI-NEXT:    s_lshr_b32 s34, s28, 16
+; SI-NEXT:    s_lshr_b32 s69, s27, 16
+; SI-NEXT:    s_lshr_b32 s71, s26, 16
+; SI-NEXT:    s_lshr_b32 s80, s25, 16
+; SI-NEXT:    s_lshr_b32 s81, s24, 16
+; SI-NEXT:    s_lshr_b32 s82, s23, 16
+; SI-NEXT:    s_lshr_b32 s83, s22, 16
+; SI-NEXT:    s_lshr_b32 s84, s21, 16
+; SI-NEXT:    s_lshr_b32 s85, s20, 16
+; SI-NEXT:    s_lshr_b32 s86, s19, 16
+; SI-NEXT:    s_lshr_b32 s87, s18, 16
+; SI-NEXT:    s_lshr_b32 s96, s17, 16
+; SI-NEXT:    s_lshr_b32 s97, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -11607,63 +11852,63 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s91, s90, 16
 ; SI-NEXT:    s_lshr_b32 s93, s92, 16
 ; SI-NEXT:    s_lshr_b32 s95, s94, 16
-; SI-NEXT:    s_lshr_b32 s34, s30, 16
-; SI-NEXT:    s_lshr_b32 s69, s35, 16
-; SI-NEXT:    s_lshr_b32 s80, s70, 16
+; SI-NEXT:    s_lshr_b32 s30, vcc_lo, 16
+; SI-NEXT:    s_lshr_b32 s35, s31, 16
+; SI-NEXT:    s_lshr_b32 s70, s68, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v16
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_3
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s98, 16
+; SI-NEXT:    s_lshl_b32 s41, s96, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s48, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_and_b32 s4, s68, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -11704,11 +11949,20 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB19_4
-; SI-NEXT:  .LBB19_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s99
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s97
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s98
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s96
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -11718,7 +11972,7 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s97
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, s87
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v5, s19
@@ -11728,20 +11982,20 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s96
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s86
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s87
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s85
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s20
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s86
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s84
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
@@ -11751,7 +12005,7 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_or_b32_e32 v4, v4, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s85
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s83
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s22
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
@@ -11760,11 +12014,11 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s84
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, s82
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v6, v8, v6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s23
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s83
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s81
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
@@ -11775,7 +12029,7 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s24
 ; SI-NEXT:    v_or_b32_e32 v7, v8, v7
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v9
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s80
 ; SI-NEXT:    v_cvt_f32_f16_e32 v11, s25
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
@@ -11784,11 +12038,11 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
 ; SI-NEXT:    v_cvt_f16_f32_e32 v11, v11
 ; SI-NEXT:    v_or_b32_e32 v8, v10, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v10, s71
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; SI-NEXT:    v_or_b32_e32 v9, v11, v9
 ; SI-NEXT:    v_cvt_f32_f16_e32 v11, s26
-; SI-NEXT:    v_cvt_f32_f16_e32 v12, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v12, s69
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
@@ -11799,7 +12053,7 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s27
 ; SI-NEXT:    v_or_b32_e32 v10, v11, v10
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v12
-; SI-NEXT:    v_cvt_f32_f16_e32 v12, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v12, s34
 ; SI-NEXT:    v_cvt_f32_f16_e32 v14, s28
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
 ; SI-NEXT:    v_cvt_f16_f32_e32 v13, v13
@@ -11808,11 +12062,11 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
 ; SI-NEXT:    v_cvt_f16_f32_e32 v14, v14
 ; SI-NEXT:    v_or_b32_e32 v11, v13, v11
-; SI-NEXT:    v_cvt_f32_f16_e32 v13, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v13, vcc_hi
 ; SI-NEXT:    v_lshlrev_b32_e32 v12, 16, v12
 ; SI-NEXT:    v_or_b32_e32 v12, v14, v12
 ; SI-NEXT:    v_cvt_f32_f16_e32 v14, s29
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s80
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s70
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
 ; SI-NEXT:    v_cvt_f16_f32_e32 v13, v13
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
@@ -11820,11 +12074,11 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v14, v14
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s68
 ; SI-NEXT:    v_or_b32_e32 v13, v14, v13
 ; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v15
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s69
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, s31
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
@@ -11832,10 +12086,10 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v17, 0x38000000, v17
 ; SI-NEXT:    v_cvt_f16_f32_e32 v17, v17
 ; SI-NEXT:    v_or_b32_e32 v14, v16, v14
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s30
 ; SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; SI-NEXT:    v_or_b32_e32 v15, v17, v15
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, vcc_lo
 ; SI-NEXT:    v_cvt_f32_f16_e32 v18, s95
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
@@ -11946,11 +12200,8 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v28, v29, v28
 ; SI-NEXT:    v_lshlrev_b32_e32 v29, 16, v30
 ; SI-NEXT:    v_or_b32_e32 v29, v31, v29
-; SI-NEXT:    s_branch .LBB19_5
-; SI-NEXT:  .LBB19_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB19_2
-; SI-NEXT:  .LBB19_4:
+; SI-NEXT:    s_branch .LBB19_6
+; SI-NEXT:  .LBB19_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -11983,11 +12234,9 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB19_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 34
-; SI-NEXT:    v_readlane_b32 s31, v32, 35
-; SI-NEXT:    v_readlane_b32 s99, v32, 33
-; SI-NEXT:    v_readlane_b32 s98, v32, 32
+; SI-NEXT:  .LBB19_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 32
+; SI-NEXT:    v_readlane_b32 s31, v32, 33
 ; SI-NEXT:    v_readlane_b32 s97, v32, 31
 ; SI-NEXT:    v_readlane_b32 s96, v32, 30
 ; SI-NEXT:    v_readlane_b32 s87, v32, 29
@@ -12065,136 +12314,136 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; VI-NEXT:    v_writelane_b32 v32, s87, 29
 ; VI-NEXT:    v_writelane_b32 v32, s30, 30
 ; VI-NEXT:    v_writelane_b32 v32, s31, 31
-; VI-NEXT:    v_readfirstlane_b32 s6, v15
-; VI-NEXT:    s_lshr_b32 vcc_lo, s6, 16
 ; VI-NEXT:    v_readfirstlane_b32 s8, v14
-; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
-; VI-NEXT:    s_lshr_b32 vcc_hi, s8, 16
+; VI-NEXT:    s_lshr_b32 s75, s8, 16
 ; VI-NEXT:    v_readfirstlane_b32 s10, v13
-; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 0
+; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; VI-NEXT:    s_lshr_b32 s63, s10, 16
 ; VI-NEXT:    v_readfirstlane_b32 s12, v12
-; VI-NEXT:    v_writelane_b32 v33, vcc_hi, 1
+; VI-NEXT:    v_writelane_b32 v33, s75, 0
 ; VI-NEXT:    s_lshr_b32 s62, s12, 16
 ; VI-NEXT:    v_readfirstlane_b32 s14, v11
-; VI-NEXT:    v_writelane_b32 v33, s63, 2
+; VI-NEXT:    v_writelane_b32 v33, s63, 1
+; VI-NEXT:    v_readfirstlane_b32 s6, v15
 ; VI-NEXT:    s_lshr_b32 s61, s14, 16
 ; VI-NEXT:    v_readfirstlane_b32 s72, v10
-; VI-NEXT:    v_writelane_b32 v33, s62, 3
-; VI-NEXT:    s_lshr_b32 s60, s72, 16
 ; VI-NEXT:    v_readfirstlane_b32 s74, v9
 ; VI-NEXT:    v_readfirstlane_b32 s76, v8
 ; VI-NEXT:    v_readfirstlane_b32 s78, v7
 ; VI-NEXT:    v_readfirstlane_b32 s89, v6
-; VI-NEXT:    v_readfirstlane_b32 s30, v5
-; VI-NEXT:    v_readfirstlane_b32 s35, v4
-; VI-NEXT:    v_readfirstlane_b32 s71, v3
-; VI-NEXT:    v_readfirstlane_b32 s82, v2
-; VI-NEXT:    v_readfirstlane_b32 s85, v1
-; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    v_writelane_b32 v33, s61, 4
+; VI-NEXT:    v_readfirstlane_b32 vcc_lo, v5
+; VI-NEXT:    v_readfirstlane_b32 s31, v4
+; VI-NEXT:    v_readfirstlane_b32 s69, v3
+; VI-NEXT:    v_readfirstlane_b32 s80, v2
+; VI-NEXT:    v_readfirstlane_b32 s83, v1
+; VI-NEXT:    v_readfirstlane_b32 s86, v0
+; VI-NEXT:    v_writelane_b32 v33, s62, 2
 ; VI-NEXT:    s_lshr_b32 s56, s29, 16
-; VI-NEXT:    s_lshr_b32 s88, s28, 16
-; VI-NEXT:    s_lshr_b32 s31, s27, 16
-; VI-NEXT:    s_lshr_b32 s68, s26, 16
-; VI-NEXT:    s_lshr_b32 s70, s25, 16
-; VI-NEXT:    s_lshr_b32 s81, s24, 16
-; VI-NEXT:    s_lshr_b32 s84, s23, 16
-; VI-NEXT:    s_lshr_b32 s86, s22, 16
-; VI-NEXT:    s_lshr_b32 s9, s21, 16
-; VI-NEXT:    s_lshr_b32 s13, s20, 16
-; VI-NEXT:    s_lshr_b32 s15, s19, 16
-; VI-NEXT:    s_lshr_b32 s73, s18, 16
-; VI-NEXT:    s_lshr_b32 s75, s17, 16
-; VI-NEXT:    s_lshr_b32 s77, s16, 16
+; VI-NEXT:    s_lshr_b32 s77, s28, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s27, 16
+; VI-NEXT:    s_lshr_b32 s34, s26, 16
+; VI-NEXT:    s_lshr_b32 s68, s25, 16
+; VI-NEXT:    s_lshr_b32 s71, s24, 16
+; VI-NEXT:    s_lshr_b32 s82, s23, 16
+; VI-NEXT:    s_lshr_b32 s84, s22, 16
+; VI-NEXT:    s_lshr_b32 s87, s21, 16
+; VI-NEXT:    s_lshr_b32 s9, s20, 16
+; VI-NEXT:    s_lshr_b32 s11, s19, 16
+; VI-NEXT:    s_lshr_b32 s13, s18, 16
+; VI-NEXT:    s_lshr_b32 s15, s17, 16
+; VI-NEXT:    s_lshr_b32 s73, s16, 16
+; VI-NEXT:    s_lshr_b32 s65, s6, 16
+; VI-NEXT:    s_lshr_b32 s60, s72, 16
 ; VI-NEXT:    s_lshr_b32 s59, s74, 16
 ; VI-NEXT:    s_lshr_b32 s58, s76, 16
 ; VI-NEXT:    s_lshr_b32 s57, s78, 16
-; VI-NEXT:    s_lshr_b32 s64, s89, 16
-; VI-NEXT:    s_lshr_b32 s34, s30, 16
-; VI-NEXT:    s_lshr_b32 s69, s35, 16
-; VI-NEXT:    s_lshr_b32 s80, s71, 16
-; VI-NEXT:    s_lshr_b32 s83, s82, 16
-; VI-NEXT:    s_lshr_b32 s87, s85, 16
-; VI-NEXT:    s_lshr_b32 s11, s7, 16
+; VI-NEXT:    s_lshr_b32 s88, s89, 16
+; VI-NEXT:    s_lshr_b32 s30, vcc_lo, 16
+; VI-NEXT:    s_lshr_b32 s35, s31, 16
+; VI-NEXT:    s_lshr_b32 s70, s69, 16
+; VI-NEXT:    s_lshr_b32 s81, s80, 16
+; VI-NEXT:    s_lshr_b32 s85, s83, 16
+; VI-NEXT:    s_lshr_b32 s7, s86, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
-; VI-NEXT:    v_writelane_b32 v33, s60, 5
+; VI-NEXT:    v_writelane_b32 v33, s61, 3
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    v_writelane_b32 v33, s59, 6
-; VI-NEXT:    v_writelane_b32 v33, s58, 7
-; VI-NEXT:    s_cbranch_scc0 .LBB19_3
+; VI-NEXT:    v_writelane_b32 v33, s60, 4
+; VI-NEXT:    v_writelane_b32 v33, s59, 5
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s77, 16
+; VI-NEXT:    s_lshl_b32 s5, s73, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s73, 16
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s15, 16
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s75, 16
+; VI-NEXT:    s_lshl_b32 s41, s15, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s13, 16
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s9, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
-; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_lshl_b32 s5, s77, 16
 ; VI-NEXT:    s_or_b32 s48, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s56, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s7
-; VI-NEXT:    s_lshl_b32 s5, s11, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s86
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s85
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s83
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s82
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s80
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s35
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s31
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s30
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_lo
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s89
-; VI-NEXT:    s_lshl_b32 s5, s64, 16
-; VI-NEXT:    s_mov_b32 s91, s56
+; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_mov_b32 s90, s56
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s78
 ; VI-NEXT:    s_lshl_b32 s5, s57, 16
-; VI-NEXT:    s_mov_b32 s79, s88
-; VI-NEXT:    s_mov_b32 s88, s57
+; VI-NEXT:    s_mov_b32 s91, s77
+; VI-NEXT:    s_mov_b32 s77, s57
 ; VI-NEXT:    s_or_b32 s57, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s76
 ; VI-NEXT:    s_lshl_b32 s5, s58, 16
+; VI-NEXT:    s_mov_b32 s79, s88
+; VI-NEXT:    s_mov_b32 s88, s58
 ; VI-NEXT:    s_or_b32 s58, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s74
 ; VI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -12212,152 +12461,158 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; VI-NEXT:    s_lshl_b32 s5, s63, 16
 ; VI-NEXT:    s_or_b32 s63, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s8
-; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
-; VI-NEXT:    s_mov_b32 s90, s64
+; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s64, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
-; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
+; VI-NEXT:    s_lshl_b32 s5, s65, 16
+; VI-NEXT:    s_mov_b32 s75, s65
 ; VI-NEXT:    s_or_b32 s65, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB19_4
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b32 s79, s88
+; VI-NEXT:    s_mov_b32 s91, s77
+; VI-NEXT:    s_mov_b32 s90, s56
+; VI-NEXT:    s_mov_b32 s77, s57
+; VI-NEXT:    s_mov_b32 s88, s58
+; VI-NEXT:    s_mov_b32 s75, s65
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v29, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s77
-; VI-NEXT:    v_mov_b32_e32 v2, s75
+; VI-NEXT:    v_mov_b32_e32 v0, s73
+; VI-NEXT:    v_mov_b32_e32 v2, s15
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v29
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v29
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s73
+; VI-NEXT:    v_mov_b32_e32 v2, s13
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v29
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s15
+; VI-NEXT:    v_mov_b32_e32 v3, s11
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v29
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s13
+; VI-NEXT:    v_mov_b32_e32 v4, s9
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v29
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s9
+; VI-NEXT:    v_mov_b32_e32 v5, s87
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v29
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s86
+; VI-NEXT:    v_mov_b32_e32 v6, s84
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v29
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s84
+; VI-NEXT:    v_mov_b32_e32 v7, s82
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v29
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s81
+; VI-NEXT:    v_mov_b32_e32 v8, s71
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v29
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
-; VI-NEXT:    v_mov_b32_e32 v9, s70
+; VI-NEXT:    v_mov_b32_e32 v9, s68
 ; VI-NEXT:    v_add_f16_sdwa v9, v9, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v10, s25, v29
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
-; VI-NEXT:    v_mov_b32_e32 v10, s68
+; VI-NEXT:    v_mov_b32_e32 v10, s34
 ; VI-NEXT:    v_add_f16_sdwa v10, v10, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v11, s26, v29
 ; VI-NEXT:    v_or_b32_e32 v10, v11, v10
-; VI-NEXT:    v_mov_b32_e32 v11, s31
+; VI-NEXT:    v_mov_b32_e32 v11, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v11, v11, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v12, s27, v29
 ; VI-NEXT:    v_or_b32_e32 v11, v12, v11
-; VI-NEXT:    v_mov_b32_e32 v12, s79
+; VI-NEXT:    v_mov_b32_e32 v12, s91
 ; VI-NEXT:    v_add_f16_sdwa v12, v12, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v13, s28, v29
 ; VI-NEXT:    v_or_b32_e32 v12, v13, v12
-; VI-NEXT:    v_mov_b32_e32 v13, s91
+; VI-NEXT:    v_mov_b32_e32 v13, s90
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v29
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s11
+; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s7, v29
+; VI-NEXT:    v_add_f16_e32 v15, s86, v29
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s87
+; VI-NEXT:    v_mov_b32_e32 v15, s85
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v16, s85, v29
+; VI-NEXT:    v_add_f16_e32 v16, s83, v29
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
-; VI-NEXT:    v_mov_b32_e32 v16, s83
+; VI-NEXT:    v_mov_b32_e32 v16, s81
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v17, s82, v29
+; VI-NEXT:    v_add_f16_e32 v17, s80, v29
 ; VI-NEXT:    v_or_b32_e32 v16, v17, v16
-; VI-NEXT:    v_mov_b32_e32 v17, s80
+; VI-NEXT:    v_mov_b32_e32 v17, s70
 ; VI-NEXT:    v_add_f16_sdwa v17, v17, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v18, s71, v29
+; VI-NEXT:    v_add_f16_e32 v18, s69, v29
 ; VI-NEXT:    v_or_b32_e32 v17, v18, v17
-; VI-NEXT:    v_mov_b32_e32 v18, s69
+; VI-NEXT:    v_mov_b32_e32 v18, s35
 ; VI-NEXT:    v_add_f16_sdwa v18, v18, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v19, s35, v29
+; VI-NEXT:    v_add_f16_e32 v19, s31, v29
 ; VI-NEXT:    v_or_b32_e32 v18, v19, v18
-; VI-NEXT:    v_mov_b32_e32 v19, s34
+; VI-NEXT:    v_mov_b32_e32 v19, s30
 ; VI-NEXT:    v_add_f16_sdwa v19, v19, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v20, s30, v29
+; VI-NEXT:    v_add_f16_e32 v20, vcc_lo, v29
 ; VI-NEXT:    v_or_b32_e32 v19, v20, v19
-; VI-NEXT:    v_mov_b32_e32 v20, s90
+; VI-NEXT:    v_mov_b32_e32 v20, s79
 ; VI-NEXT:    v_add_f16_sdwa v20, v20, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v21, s89, v29
 ; VI-NEXT:    v_or_b32_e32 v20, v21, v20
-; VI-NEXT:    v_mov_b32_e32 v21, s88
+; VI-NEXT:    v_mov_b32_e32 v21, s77
 ; VI-NEXT:    v_add_f16_sdwa v21, v21, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v22, s78, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 7
 ; VI-NEXT:    v_or_b32_e32 v21, v22, v21
-; VI-NEXT:    v_mov_b32_e32 v22, s4
+; VI-NEXT:    v_mov_b32_e32 v22, s88
 ; VI-NEXT:    v_add_f16_sdwa v22, v22, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v23, s76, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 6
+; VI-NEXT:    v_readlane_b32 s4, v33, 5
 ; VI-NEXT:    v_or_b32_e32 v22, v23, v22
 ; VI-NEXT:    v_mov_b32_e32 v23, s4
 ; VI-NEXT:    v_add_f16_sdwa v23, v23, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v24, s74, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 5
+; VI-NEXT:    v_readlane_b32 s4, v33, 4
 ; VI-NEXT:    v_or_b32_e32 v23, v24, v23
 ; VI-NEXT:    v_mov_b32_e32 v24, s4
 ; VI-NEXT:    v_add_f16_sdwa v24, v24, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v25, s72, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 4
+; VI-NEXT:    v_readlane_b32 s4, v33, 3
 ; VI-NEXT:    v_or_b32_e32 v24, v25, v24
 ; VI-NEXT:    v_mov_b32_e32 v25, s4
 ; VI-NEXT:    v_add_f16_sdwa v25, v25, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v26, s14, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 3
+; VI-NEXT:    v_readlane_b32 s4, v33, 2
 ; VI-NEXT:    v_or_b32_e32 v25, v26, v25
 ; VI-NEXT:    v_mov_b32_e32 v26, s4
 ; VI-NEXT:    v_add_f16_sdwa v26, v26, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v27, s12, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 2
+; VI-NEXT:    v_readlane_b32 s4, v33, 1
 ; VI-NEXT:    v_or_b32_e32 v26, v27, v26
 ; VI-NEXT:    v_mov_b32_e32 v27, s4
 ; VI-NEXT:    v_add_f16_sdwa v27, v27, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v28, s10, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 1
+; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v27, v28, v27
 ; VI-NEXT:    v_mov_b32_e32 v28, s4
 ; VI-NEXT:    v_add_f16_sdwa v28, v28, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v30, s8, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v28, v30, v28
-; VI-NEXT:    v_mov_b32_e32 v30, s4
+; VI-NEXT:    v_mov_b32_e32 v30, s75
 ; VI-NEXT:    v_add_f16_sdwa v30, v30, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v29, s6, v29
 ; VI-NEXT:    v_or_b32_e32 v29, v29, v30
-; VI-NEXT:    s_branch .LBB19_5
-; VI-NEXT:  .LBB19_3:
-; VI-NEXT:    s_mov_b32 s90, s64
-; VI-NEXT:    s_mov_b32 s79, s88
-; VI-NEXT:    s_mov_b32 s91, s56
-; VI-NEXT:    s_mov_b32 s88, s57
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB19_2
-; VI-NEXT:  .LBB19_4:
+; VI-NEXT:    s_branch .LBB19_6
+; VI-NEXT:  .LBB19_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -12390,7 +12645,7 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB19_5: ; %end
+; VI-NEXT:  .LBB19_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 30
 ; VI-NEXT:    v_readlane_b32 s31, v32, 31
 ; VI-NEXT:    v_readlane_b32 s87, v32, 29
@@ -12528,10 +12783,18 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s76
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s64, s74, s75
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s65, s72, s73
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v29, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v29 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v29 op_sel_hi:[1,0]
@@ -12563,10 +12826,8 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v27, s63, v29 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v28, s64, v29 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v29, s65, v29 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB19_5
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:    s_branch .LBB19_6
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -12599,7 +12860,7 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB19_5: ; %end
+; GFX9-NEXT:  .LBB19_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
 ; GFX9-NEXT:    v_readlane_b32 s64, v32, 12
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
@@ -12698,11 +12959,16 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s28, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s29, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -12734,8 +13000,6 @@ define inreg <30 x i32> @bitcast_v60f16_to_v30i32_scalar(<60 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v28, 0x200, s28 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v29, 0x200, s29 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -13000,10 +13264,18 @@ define inreg <15 x i64> @bitcast_v30f32_to_v15i64_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_3
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB21_4
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v29, s65, 1.0
 ; SI-NEXT:    v_add_f32_e64 v28, s64, 1.0
 ; SI-NEXT:    v_add_f32_e64 v27, s63, 1.0
@@ -13034,10 +13306,8 @@ define inreg <15 x i64> @bitcast_v30f32_to_v15i64_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB21_5
-; SI-NEXT:  .LBB21_3:
-; SI-NEXT:    s_branch .LBB21_2
-; SI-NEXT:  .LBB21_4:
+; SI-NEXT:    s_branch .LBB21_6
+; SI-NEXT:  .LBB21_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -13070,7 +13340,7 @@ define inreg <15 x i64> @bitcast_v30f32_to_v15i64_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB21_5: ; %end
+; SI-NEXT:  .LBB21_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
 ; SI-NEXT:    v_readlane_b32 s64, v32, 12
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
@@ -13143,10 +13413,18 @@ define inreg <15 x i64> @bitcast_v30f32_to_v15i64_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_3
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB21_4
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v29, s65, 1.0
 ; VI-NEXT:    v_add_f32_e64 v28, s64, 1.0
 ; VI-NEXT:    v_add_f32_e64 v27, s63, 1.0
@@ -13177,10 +13455,8 @@ define inreg <15 x i64> @bitcast_v30f32_to_v15i64_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB21_5
-; VI-NEXT:  .LBB21_3:
-; VI-NEXT:    s_branch .LBB21_2
-; VI-NEXT:  .LBB21_4:
+; VI-NEXT:    s_branch .LBB21_6
+; VI-NEXT:  .LBB21_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -13213,7 +13489,7 @@ define inreg <15 x i64> @bitcast_v30f32_to_v15i64_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB21_5: ; %end
+; VI-NEXT:  .LBB21_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
 ; VI-NEXT:    v_readlane_b32 s64, v32, 12
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
@@ -13286,10 +13562,18 @@ define inreg <15 x i64> @bitcast_v30f32_to_v15i64_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_4
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v29, s65, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v28, s64, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v27, s63, 1.0
@@ -13320,10 +13604,8 @@ define inreg <15 x i64> @bitcast_v30f32_to_v15i64_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB21_5
-; GFX9-NEXT:  .LBB21_3:
-; GFX9-NEXT:    s_branch .LBB21_2
-; GFX9-NEXT:  .LBB21_4:
+; GFX9-NEXT:    s_branch .LBB21_6
+; GFX9-NEXT:  .LBB21_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -13356,7 +13638,7 @@ define inreg <15 x i64> @bitcast_v30f32_to_v15i64_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB21_5: ; %end
+; GFX9-NEXT:  .LBB21_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
 ; GFX9-NEXT:    v_readlane_b32 s64, v32, 12
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
@@ -13430,11 +13712,16 @@ define inreg <15 x i64> @bitcast_v30f32_to_v15i64_scalar(<30 x float> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_4
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB21_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v29, s65, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v28, s64, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v27, s63, 1.0
@@ -13466,8 +13753,6 @@ define inreg <15 x i64> @bitcast_v30f32_to_v15i64_scalar(<30 x float> inreg %a,
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB21_5
-; GFX11-NEXT:  .LBB21_3:
-; GFX11-NEXT:    s_branch .LBB21_2
 ; GFX11-NEXT:  .LBB21_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -13742,10 +14027,18 @@ define inreg <30 x float> @bitcast_v15i64_to_v30f32_scalar(<15 x i64> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s44, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s45, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
 ; SI-NEXT:    s_add_u32 s9, s9, 3
@@ -13776,7 +14069,7 @@ define inreg <30 x float> @bitcast_v15i64_to_v30f32_scalar(<15 x i64> inreg %a,
 ; SI-NEXT:    s_addc_u32 s19, s19, 0
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13808,8 +14101,6 @@ define inreg <30 x float> @bitcast_v15i64_to_v30f32_scalar(<15 x i64> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v28, s7
 ; SI-NEXT:    v_mov_b32_e32 v29, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v15i64_to_v30f32_scalar:
 ; VI:       ; %bb.0:
@@ -13832,10 +14123,18 @@ define inreg <30 x float> @bitcast_v15i64_to_v30f32_scalar(<15 x i64> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s45, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_4
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB23_3
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -13866,7 +14165,7 @@ define inreg <30 x float> @bitcast_v15i64_to_v30f32_scalar(<15 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s19, s19, 0
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
-; VI-NEXT:  .LBB23_3: ; %end
+; VI-NEXT:  .LBB23_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13898,8 +14197,6 @@ define inreg <30 x float> @bitcast_v15i64_to_v30f32_scalar(<15 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v28, s7
 ; VI-NEXT:    v_mov_b32_e32 v29, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_4:
-; VI-NEXT:    s_branch .LBB23_2
 ;
 ; GFX9-LABEL: bitcast_v15i64_to_v30f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -13922,10 +14219,18 @@ define inreg <30 x float> @bitcast_v15i64_to_v30f32_scalar(<15 x i64> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s45, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_3
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -13956,7 +14261,7 @@ define inreg <30 x float> @bitcast_v15i64_to_v30f32_scalar(<15 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s19, s19, 0
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
-; GFX9-NEXT:  .LBB23_3: ; %end
+; GFX9-NEXT:  .LBB23_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -13988,8 +14293,6 @@ define inreg <30 x float> @bitcast_v15i64_to_v30f32_scalar(<15 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_4:
-; GFX9-NEXT:    s_branch .LBB23_2
 ;
 ; GFX11-LABEL: bitcast_v15i64_to_v30f32_scalar:
 ; GFX11:       ; %bb.0:
@@ -14009,11 +14312,16 @@ define inreg <30 x float> @bitcast_v15i64_to_v30f32_scalar(<15 x i64> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s15, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s40, 0
 ; GFX11-NEXT:    s_mov_b32 s40, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_3
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB23_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -14044,7 +14352,7 @@ define inreg <30 x float> @bitcast_v15i64_to_v30f32_scalar(<15 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s3, s3, 0
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
-; GFX11-NEXT:  .LBB23_3: ; %end
+; GFX11-NEXT:  .LBB23_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -14062,8 +14370,6 @@ define inreg <30 x float> @bitcast_v15i64_to_v30f32_scalar(<15 x i64> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s7 :: v_dual_mov_b32 v27, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s5 :: v_dual_mov_b32 v29, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_4:
-; GFX11-NEXT:    s_branch .LBB23_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -14310,10 +14616,18 @@ define inreg <15 x double> @bitcast_v30f32_to_v15f64_scalar(<30 x float> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_3
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB25_4
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v29, s65, 1.0
 ; SI-NEXT:    v_add_f32_e64 v28, s64, 1.0
 ; SI-NEXT:    v_add_f32_e64 v27, s63, 1.0
@@ -14344,10 +14658,8 @@ define inreg <15 x double> @bitcast_v30f32_to_v15f64_scalar(<30 x float> inreg %
 ; SI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; SI-NEXT:    s_branch .LBB25_5
-; SI-NEXT:  .LBB25_3:
-; SI-NEXT:    s_branch .LBB25_2
-; SI-NEXT:  .LBB25_4:
+; SI-NEXT:    s_branch .LBB25_6
+; SI-NEXT:  .LBB25_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -14380,7 +14692,7 @@ define inreg <15 x double> @bitcast_v30f32_to_v15f64_scalar(<30 x float> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB25_5: ; %end
+; SI-NEXT:  .LBB25_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
 ; SI-NEXT:    v_readlane_b32 s64, v32, 12
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
@@ -14453,10 +14765,18 @@ define inreg <15 x double> @bitcast_v30f32_to_v15f64_scalar(<30 x float> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_3
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB25_4
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v29, s65, 1.0
 ; VI-NEXT:    v_add_f32_e64 v28, s64, 1.0
 ; VI-NEXT:    v_add_f32_e64 v27, s63, 1.0
@@ -14487,10 +14807,8 @@ define inreg <15 x double> @bitcast_v30f32_to_v15f64_scalar(<30 x float> inreg %
 ; VI-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; VI-NEXT:    s_branch .LBB25_5
-; VI-NEXT:  .LBB25_3:
-; VI-NEXT:    s_branch .LBB25_2
-; VI-NEXT:  .LBB25_4:
+; VI-NEXT:    s_branch .LBB25_6
+; VI-NEXT:  .LBB25_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -14523,7 +14841,7 @@ define inreg <15 x double> @bitcast_v30f32_to_v15f64_scalar(<30 x float> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB25_5: ; %end
+; VI-NEXT:  .LBB25_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
 ; VI-NEXT:    v_readlane_b32 s64, v32, 12
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
@@ -14596,10 +14914,18 @@ define inreg <15 x double> @bitcast_v30f32_to_v15f64_scalar(<30 x float> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_4
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v29, s65, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v28, s64, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v27, s63, 1.0
@@ -14630,10 +14956,8 @@ define inreg <15 x double> @bitcast_v30f32_to_v15f64_scalar(<30 x float> inreg %
 ; GFX9-NEXT:    v_add_f32_e64 v2, s38, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s36, 1.0
-; GFX9-NEXT:    s_branch .LBB25_5
-; GFX9-NEXT:  .LBB25_3:
-; GFX9-NEXT:    s_branch .LBB25_2
-; GFX9-NEXT:  .LBB25_4:
+; GFX9-NEXT:    s_branch .LBB25_6
+; GFX9-NEXT:  .LBB25_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -14666,7 +14990,7 @@ define inreg <15 x double> @bitcast_v30f32_to_v15f64_scalar(<30 x float> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB25_5: ; %end
+; GFX9-NEXT:  .LBB25_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
 ; GFX9-NEXT:    v_readlane_b32 s64, v32, 12
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
@@ -14740,11 +15064,16 @@ define inreg <15 x double> @bitcast_v30f32_to_v15f64_scalar(<30 x float> inreg %
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_4
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB25_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v29, s65, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v28, s64, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v27, s63, 1.0
@@ -14776,8 +15105,6 @@ define inreg <15 x double> @bitcast_v30f32_to_v15f64_scalar(<30 x float> inreg %
 ; GFX11-NEXT:    v_add_f32_e64 v1, s37, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s36, 1.0
 ; GFX11-NEXT:    s_branch .LBB25_5
-; GFX11-NEXT:  .LBB25_3:
-; GFX11-NEXT:    s_branch .LBB25_2
 ; GFX11-NEXT:  .LBB25_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -15016,10 +15343,18 @@ define inreg <30 x float> @bitcast_v15f64_to_v30f32_scalar(<15 x double> inreg %
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB27_3
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB27_4
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; SI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; SI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
@@ -15035,10 +15370,8 @@ define inreg <30 x float> @bitcast_v15f64_to_v30f32_scalar(<15 x double> inreg %
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; SI-NEXT:    s_branch .LBB27_5
-; SI-NEXT:  .LBB27_3:
-; SI-NEXT:    s_branch .LBB27_2
-; SI-NEXT:  .LBB27_4:
+; SI-NEXT:    s_branch .LBB27_6
+; SI-NEXT:  .LBB27_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -15071,7 +15404,7 @@ define inreg <30 x float> @bitcast_v15f64_to_v30f32_scalar(<15 x double> inreg %
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB27_5: ; %end
+; SI-NEXT:  .LBB27_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
 ; SI-NEXT:    v_readlane_b32 s64, v32, 12
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
@@ -15144,10 +15477,18 @@ define inreg <30 x float> @bitcast_v15f64_to_v30f32_scalar(<15 x double> inreg %
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_3
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB27_4
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; VI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; VI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
@@ -15163,10 +15504,8 @@ define inreg <30 x float> @bitcast_v15f64_to_v30f32_scalar(<15 x double> inreg %
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; VI-NEXT:    s_branch .LBB27_5
-; VI-NEXT:  .LBB27_3:
-; VI-NEXT:    s_branch .LBB27_2
-; VI-NEXT:  .LBB27_4:
+; VI-NEXT:    s_branch .LBB27_6
+; VI-NEXT:  .LBB27_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -15199,7 +15538,7 @@ define inreg <30 x float> @bitcast_v15f64_to_v30f32_scalar(<15 x double> inreg %
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB27_5: ; %end
+; VI-NEXT:  .LBB27_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
 ; VI-NEXT:    v_readlane_b32 s64, v32, 12
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
@@ -15272,10 +15611,18 @@ define inreg <30 x float> @bitcast_v15f64_to_v30f32_scalar(<15 x double> inreg %
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_4
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; GFX9-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; GFX9-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
@@ -15291,10 +15638,8 @@ define inreg <30 x float> @bitcast_v15f64_to_v30f32_scalar(<15 x double> inreg %
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
-; GFX9-NEXT:    s_branch .LBB27_5
-; GFX9-NEXT:  .LBB27_3:
-; GFX9-NEXT:    s_branch .LBB27_2
-; GFX9-NEXT:  .LBB27_4:
+; GFX9-NEXT:    s_branch .LBB27_6
+; GFX9-NEXT:  .LBB27_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -15327,7 +15672,7 @@ define inreg <30 x float> @bitcast_v15f64_to_v30f32_scalar(<15 x double> inreg %
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB27_5: ; %end
+; GFX9-NEXT:  .LBB27_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
 ; GFX9-NEXT:    v_readlane_b32 s64, v32, 12
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
@@ -15401,11 +15746,16 @@ define inreg <30 x float> @bitcast_v15f64_to_v30f32_scalar(<15 x double> inreg %
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB27_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB27_4
-; GFX11-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB27_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB27_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; GFX11-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; GFX11-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
@@ -15422,8 +15772,6 @@ define inreg <30 x float> @bitcast_v15f64_to_v30f32_scalar(<15 x double> inreg %
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    s_branch .LBB27_5
-; GFX11-NEXT:  .LBB27_3:
-; GFX11-NEXT:    s_branch .LBB27_2
 ; GFX11-NEXT:  .LBB27_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -16412,7 +16760,7 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s43, v1
 ; SI-NEXT:    s_cmp_lg_u32 s42, 0
 ; SI-NEXT:    v_readfirstlane_b32 s42, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s64, s5, 16
 ; SI-NEXT:    s_lshr_b32 s55, s7, 16
@@ -16429,7 +16777,7 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s36, s21, 16
 ; SI-NEXT:    s_lshr_b32 s35, s19, 16
 ; SI-NEXT:    s_lshr_b32 s34, s17, 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[4:5], 16
+; SI-NEXT:    s_lshr_b64 vcc, s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[10:11], 16
@@ -16444,8 +16792,46 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[30:31], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[30:31], -1
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[30:31], s[30:31], exec
+; SI-NEXT:    s_cselect_b32 s45, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s45, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v29, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v28, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v27, s7, 1.0
@@ -16513,40 +16899,8 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v60, 16, v3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshrrev_b32_e32 v61, 16, v1
-; SI-NEXT:    s_branch .LBB29_5
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:    s_branch .LBB29_6
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -16593,7 +16947,7 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v41, s54
 ; SI-NEXT:    v_mov_b32_e32 v40, s55
 ; SI-NEXT:    v_mov_b32_e32 v55, s64
-; SI-NEXT:    v_mov_b32_e32 v30, s30
+; SI-NEXT:    v_mov_b32_e32 v30, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v31, s44
 ; SI-NEXT:    v_mov_b32_e32 v32, s46
 ; SI-NEXT:    v_mov_b32_e32 v33, s56
@@ -16608,7 +16962,7 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v51, s90
 ; SI-NEXT:    v_mov_b32_e32 v52, s92
 ; SI-NEXT:    v_mov_b32_e32 v53, s94
-; SI-NEXT:  .LBB29_5: ; %end
+; SI-NEXT:  .LBB29_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v39, 16, v53
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v39
@@ -16758,10 +17112,8 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v60, s35, 1
 ; VI-NEXT:    v_writelane_b32 v60, s36, 2
 ; VI-NEXT:    v_writelane_b32 v60, s37, 3
-; VI-NEXT:    v_writelane_b32 v60, s38, 4
-; VI-NEXT:    v_writelane_b32 v60, s39, 5
-; VI-NEXT:    v_writelane_b32 v60, s30, 6
-; VI-NEXT:    v_writelane_b32 v60, s31, 7
+; VI-NEXT:    v_writelane_b32 v60, s30, 4
+; VI-NEXT:    v_writelane_b32 v60, s31, 5
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
 ; VI-NEXT:    v_readfirstlane_b32 s6, v15
 ; VI-NEXT:    v_readfirstlane_b32 s7, v14
@@ -16780,7 +17132,7 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s45, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s46, s6, 16
 ; VI-NEXT:    s_lshr_b32 s47, s7, 16
@@ -16804,16 +17156,54 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s89, s26, 16
 ; VI-NEXT:    s_lshr_b32 s90, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s36, s19, 16
-; VI-NEXT:    s_lshr_b32 s37, s18, 16
-; VI-NEXT:    s_lshr_b32 s38, s17, 16
-; VI-NEXT:    s_lshr_b32 s39, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s36, s17, 16
+; VI-NEXT:    s_lshr_b32 s37, s16, 16
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr37
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr35
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v29, s6, 1.0
 ; VI-NEXT:    v_add_f32_e64 v28, s7, 1.0
 ; VI-NEXT:    v_add_f32_e64 v27, s8, 1.0
@@ -16874,40 +17264,8 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v57, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v58, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v59, 16, v0
-; VI-NEXT:    s_branch .LBB29_5
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    ; implicit-def: $sgpr39
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr37
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:    s_branch .LBB29_6
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -16938,14 +17296,14 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v27, s8
 ; VI-NEXT:    v_mov_b32_e32 v28, s7
 ; VI-NEXT:    v_mov_b32_e32 v29, s6
-; VI-NEXT:    v_mov_b32_e32 v59, s39
-; VI-NEXT:    v_mov_b32_e32 v58, s38
-; VI-NEXT:    v_mov_b32_e32 v57, s37
-; VI-NEXT:    v_mov_b32_e32 v56, s36
-; VI-NEXT:    v_mov_b32_e32 v47, s35
-; VI-NEXT:    v_mov_b32_e32 v46, s34
-; VI-NEXT:    v_mov_b32_e32 v45, s31
-; VI-NEXT:    v_mov_b32_e32 v44, s30
+; VI-NEXT:    v_mov_b32_e32 v59, s37
+; VI-NEXT:    v_mov_b32_e32 v58, s36
+; VI-NEXT:    v_mov_b32_e32 v57, s35
+; VI-NEXT:    v_mov_b32_e32 v56, s34
+; VI-NEXT:    v_mov_b32_e32 v47, s31
+; VI-NEXT:    v_mov_b32_e32 v46, s30
+; VI-NEXT:    v_mov_b32_e32 v45, vcc_hi
+; VI-NEXT:    v_mov_b32_e32 v44, vcc_lo
 ; VI-NEXT:    v_mov_b32_e32 v43, s91
 ; VI-NEXT:    v_mov_b32_e32 v42, s90
 ; VI-NEXT:    v_mov_b32_e32 v41, s89
@@ -16968,7 +17326,7 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v32, s56
 ; VI-NEXT:    v_mov_b32_e32 v31, s47
 ; VI-NEXT:    v_mov_b32_e32 v30, s46
-; VI-NEXT:  .LBB29_5: ; %end
+; VI-NEXT:  .LBB29_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v59, 16, v59
 ; VI-NEXT:    v_lshlrev_b32_e32 v58, 16, v58
 ; VI-NEXT:    v_lshlrev_b32_e32 v57, 16, v57
@@ -17023,7 +17381,7 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_lshlrev_b32_e32 v32, 16, v32
 ; VI-NEXT:    v_lshlrev_b32_e32 v31, 16, v31
 ; VI-NEXT:    v_lshlrev_b32_e32 v30, 16, v30
-; VI-NEXT:    v_readlane_b32 s30, v60, 6
+; VI-NEXT:    v_readlane_b32 s30, v60, 4
 ; VI-NEXT:    v_or_b32_sdwa v12, v12, v55 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v13, v13, v54 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v14, v14, v53 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
@@ -17042,9 +17400,7 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_or_b32_sdwa v27, v27, v32 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v28, v28, v31 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v29, v29, v30 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; VI-NEXT:    v_readlane_b32 s31, v60, 7
-; VI-NEXT:    v_readlane_b32 s39, v60, 5
-; VI-NEXT:    v_readlane_b32 s38, v60, 4
+; VI-NEXT:    v_readlane_b32 s31, v60, 5
 ; VI-NEXT:    v_readlane_b32 s37, v60, 3
 ; VI-NEXT:    v_readlane_b32 s36, v60, 2
 ; VI-NEXT:    v_readlane_b32 s35, v60, 1
@@ -17073,10 +17429,8 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    buffer_store_dword v57, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
 ; GFX9-NEXT:    buffer_store_dword v58, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
 ; GFX9-NEXT:    buffer_store_dword v59, off, s[0:3], s32 ; 4-byte Folded Spill
-; GFX9-NEXT:    v_writelane_b32 v60, s34, 0
-; GFX9-NEXT:    v_writelane_b32 v60, s35, 1
-; GFX9-NEXT:    v_writelane_b32 v60, s30, 2
-; GFX9-NEXT:    v_writelane_b32 v60, s31, 3
+; GFX9-NEXT:    v_writelane_b32 v60, s30, 0
+; GFX9-NEXT:    v_writelane_b32 v60, s31, 1
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v16
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v15
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v14
@@ -17095,7 +17449,7 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s45, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s46, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s47, s7, 16
@@ -17123,12 +17477,50 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s93, s22, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s21, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s31, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s34, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s30, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s31, s16, 16
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr31
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_hi
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v29, s6, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v28, s7, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v27, s8, 1.0
@@ -17189,40 +17581,8 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v57, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v58, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v59, 16, v0
-; GFX9-NEXT:    s_branch .LBB29_5
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr35
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr31
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:    s_branch .LBB29_6
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -17253,10 +17613,10 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s6
-; GFX9-NEXT:    v_mov_b32_e32 v59, s35
-; GFX9-NEXT:    v_mov_b32_e32 v58, s34
-; GFX9-NEXT:    v_mov_b32_e32 v57, s31
-; GFX9-NEXT:    v_mov_b32_e32 v56, s30
+; GFX9-NEXT:    v_mov_b32_e32 v59, s31
+; GFX9-NEXT:    v_mov_b32_e32 v58, s30
+; GFX9-NEXT:    v_mov_b32_e32 v57, vcc_hi
+; GFX9-NEXT:    v_mov_b32_e32 v56, vcc_lo
 ; GFX9-NEXT:    v_mov_b32_e32 v47, s95
 ; GFX9-NEXT:    v_mov_b32_e32 v46, s94
 ; GFX9-NEXT:    v_mov_b32_e32 v45, s93
@@ -17283,7 +17643,7 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v32, s56
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s47
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s46
-; GFX9-NEXT:  .LBB29_5: ; %end
+; GFX9-NEXT:  .LBB29_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -17338,7 +17698,7 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_and_b32_e32 v27, 0xffff, v27
 ; GFX9-NEXT:    v_and_b32_e32 v28, 0xffff, v28
 ; GFX9-NEXT:    v_and_b32_e32 v29, 0xffff, v29
-; GFX9-NEXT:    v_readlane_b32 s30, v60, 2
+; GFX9-NEXT:    v_readlane_b32 s30, v60, 0
 ; GFX9-NEXT:    v_lshl_or_b32 v12, v55, 16, v12
 ; GFX9-NEXT:    v_lshl_or_b32 v13, v54, 16, v13
 ; GFX9-NEXT:    v_lshl_or_b32 v14, v53, 16, v14
@@ -17357,9 +17717,7 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_lshl_or_b32 v27, v32, 16, v27
 ; GFX9-NEXT:    v_lshl_or_b32 v28, v31, 16, v28
 ; GFX9-NEXT:    v_lshl_or_b32 v29, v30, 16, v29
-; GFX9-NEXT:    v_readlane_b32 s31, v60, 3
-; GFX9-NEXT:    v_readlane_b32 s35, v60, 1
-; GFX9-NEXT:    v_readlane_b32 s34, v60, 0
+; GFX9-NEXT:    v_readlane_b32 s31, v60, 1
 ; GFX9-NEXT:    s_or_saveexec_b64 s[4:5], -1
 ; GFX9-NEXT:    buffer_load_dword v60, off, s[0:3], s32 offset:48 ; 4-byte Folded Reload
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
@@ -17383,11 +17741,11 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s15, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s40, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s40, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s42, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s40, s4, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s43, s6, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s44, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s45, s8, 16
@@ -17416,9 +17774,46 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s92, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s93, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s94, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-TRUE16-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB29_3
+; GFX11-TRUE16-NEXT:  .LBB29_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s42, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr94
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr93
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr92
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr91
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:  .LBB29_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v29, s4, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v28, s5, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v27, s6, 1.0
@@ -17479,40 +17874,8 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v81, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v82, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v83, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB29_5
-; GFX11-TRUE16-NEXT:  .LBB29_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr94
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr93
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr92
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr91
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    s_branch .LBB29_2
-; GFX11-TRUE16-NEXT:  .LBB29_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB29_6
+; GFX11-TRUE16-NEXT:  .LBB29_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -17542,8 +17905,8 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v37, s56 :: v_dual_mov_b32 v36, s47
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v35, s46 :: v_dual_mov_b32 v34, s45
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v33, s44 :: v_dual_mov_b32 v32, s43
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
-; GFX11-TRUE16-NEXT:  .LBB29_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s41 :: v_dual_mov_b32 v30, s40
+; GFX11-TRUE16-NEXT:  .LBB29_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v83.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v82.l
@@ -17594,11 +17957,11 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s15, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s40, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s40, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s42, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s40, s4, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s43, s6, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s44, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s45, s8, 16
@@ -17627,9 +17990,46 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s92, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s93, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s94, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-FAKE16-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB29_3
+; GFX11-FAKE16-NEXT:  .LBB29_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s42, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr94
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr93
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr92
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr91
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:  .LBB29_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v25, s4, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v26, s5, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v27, s6, 1.0
@@ -17690,40 +18090,8 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v81, 16, v2
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v82, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v83, 16, v4
-; GFX11-FAKE16-NEXT:    s_branch .LBB29_5
-; GFX11-FAKE16-NEXT:  .LBB29_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr94
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr93
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr92
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr91
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    s_branch .LBB29_2
-; GFX11-FAKE16-NEXT:  .LBB29_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB29_6
+; GFX11-FAKE16-NEXT:  .LBB29_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v3, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v1, s3
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s16 :: v_dual_mov_b32 v9, s17
@@ -17753,8 +18121,8 @@ define inreg <60 x i16> @bitcast_v30f32_to_v60i16_scalar(<30 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v37, s56 :: v_dual_mov_b32 v36, s47
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v35, s46 :: v_dual_mov_b32 v34, s45
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v33, s44 :: v_dual_mov_b32 v32, s43
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
-; GFX11-FAKE16-NEXT:  .LBB29_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v31, s41 :: v_dual_mov_b32 v30, s40
+; GFX11-FAKE16-NEXT:  .LBB29_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v4
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v3
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v84, 0xffff, v1
@@ -19218,10 +19586,8 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v30, s87, 29
 ; SI-NEXT:    v_writelane_b32 v30, s96, 30
 ; SI-NEXT:    v_writelane_b32 v30, s97, 31
-; SI-NEXT:    v_writelane_b32 v30, s98, 32
-; SI-NEXT:    v_writelane_b32 v30, s99, 33
-; SI-NEXT:    v_writelane_b32 v30, s30, 34
-; SI-NEXT:    v_writelane_b32 v30, s31, 35
+; SI-NEXT:    v_writelane_b32 v30, s30, 32
+; SI-NEXT:    v_writelane_b32 v30, s31, 33
 ; SI-NEXT:    v_readfirstlane_b32 s7, v15
 ; SI-NEXT:    v_readfirstlane_b32 s9, v14
 ; SI-NEXT:    v_readfirstlane_b32 s11, v13
@@ -19233,25 +19599,25 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s79, v7
 ; SI-NEXT:    v_readfirstlane_b32 s89, v6
 ; SI-NEXT:    v_readfirstlane_b32 s93, v5
-; SI-NEXT:    v_readfirstlane_b32 s30, v4
-; SI-NEXT:    v_readfirstlane_b32 s35, v3
-; SI-NEXT:    v_readfirstlane_b32 s70, v2
-; SI-NEXT:    v_readfirstlane_b32 s81, v1
-; SI-NEXT:    v_readfirstlane_b32 s84, v0
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v4
+; SI-NEXT:    v_readfirstlane_b32 s31, v3
+; SI-NEXT:    v_readfirstlane_b32 s68, v2
+; SI-NEXT:    v_readfirstlane_b32 s71, v1
+; SI-NEXT:    v_readfirstlane_b32 s82, v0
 ; SI-NEXT:    s_lshr_b32 s90, s29, 16
 ; SI-NEXT:    s_lshr_b32 s92, s28, 16
 ; SI-NEXT:    s_lshr_b32 s94, s27, 16
-; SI-NEXT:    s_lshr_b32 s31, s26, 16
-; SI-NEXT:    s_lshr_b32 s68, s25, 16
-; SI-NEXT:    s_lshr_b32 s71, s24, 16
-; SI-NEXT:    s_lshr_b32 s82, s23, 16
-; SI-NEXT:    s_lshr_b32 s85, s22, 16
-; SI-NEXT:    s_lshr_b32 s86, s21, 16
-; SI-NEXT:    s_lshr_b32 s87, s20, 16
-; SI-NEXT:    s_lshr_b32 s96, s19, 16
-; SI-NEXT:    s_lshr_b32 s97, s18, 16
-; SI-NEXT:    s_lshr_b32 s98, s17, 16
-; SI-NEXT:    s_lshr_b32 s99, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s26, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s69, s24, 16
+; SI-NEXT:    s_lshr_b32 s80, s23, 16
+; SI-NEXT:    s_lshr_b32 s83, s22, 16
+; SI-NEXT:    s_lshr_b32 s84, s21, 16
+; SI-NEXT:    s_lshr_b32 s85, s20, 16
+; SI-NEXT:    s_lshr_b32 s86, s19, 16
+; SI-NEXT:    s_lshr_b32 s87, s18, 16
+; SI-NEXT:    s_lshr_b32 s96, s17, 16
+; SI-NEXT:    s_lshr_b32 s97, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -19263,47 +19629,47 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s78, s79, 16
 ; SI-NEXT:    s_lshr_b32 s88, s89, 16
 ; SI-NEXT:    s_lshr_b32 s91, s93, 16
-; SI-NEXT:    s_lshr_b32 s95, s30, 16
-; SI-NEXT:    s_lshr_b32 s34, s35, 16
-; SI-NEXT:    s_lshr_b32 s69, s70, 16
-; SI-NEXT:    s_lshr_b32 s80, s81, 16
-; SI-NEXT:    s_lshr_b32 s83, s84, 16
+; SI-NEXT:    s_lshr_b32 s95, vcc_lo, 16
+; SI-NEXT:    s_lshr_b32 s30, s31, 16
+; SI-NEXT:    s_lshr_b32 s35, s68, 16
+; SI-NEXT:    s_lshr_b32 s70, s71, 16
+; SI-NEXT:    s_lshr_b32 s81, s82, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v16
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_4
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s98, 16
+; SI-NEXT:    s_lshl_b32 s41, s96, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s94, 16
@@ -19314,19 +19680,19 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s90, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s84, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_and_b32 s4, s82, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s81, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_and_b32 s4, s71, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_and_b32 s4, s68, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s54, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s93, 0xffff
@@ -19362,61 +19728,70 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB31_3
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s46, s4, 0x30000
@@ -19433,29 +19808,29 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s90, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s84, s84, 3
+; SI-NEXT:    s_add_i32 s82, s82, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s84, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_and_b32 s4, s82, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s81, s81, 3
+; SI-NEXT:    s_add_i32 s71, s71, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s81, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_and_b32 s4, s71, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s70, s70, 3
+; SI-NEXT:    s_add_i32 s68, s68, 3
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_and_b32 s4, s68, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s35, s35, 3
+; SI-NEXT:    s_add_i32 s31, s31, 3
 ; SI-NEXT:    s_add_i32 s52, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s30, s30, 3
+; SI-NEXT:    s_add_i32 vcc_lo, vcc_lo, 3
 ; SI-NEXT:    s_add_i32 s53, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s93, s93, 3
@@ -19514,8 +19889,8 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s65, s4, 0x30000
-; SI-NEXT:  .LBB31_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v30, 34
+; SI-NEXT:  .LBB31_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v30, 32
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -19546,9 +19921,7 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v27, s63
 ; SI-NEXT:    v_mov_b32_e32 v28, s64
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
-; SI-NEXT:    v_readlane_b32 s31, v30, 35
-; SI-NEXT:    v_readlane_b32 s99, v30, 33
-; SI-NEXT:    v_readlane_b32 s98, v30, 32
+; SI-NEXT:    v_readlane_b32 s31, v30, 33
 ; SI-NEXT:    v_readlane_b32 s97, v30, 31
 ; SI-NEXT:    v_readlane_b32 s96, v30, 30
 ; SI-NEXT:    v_readlane_b32 s87, v30, 29
@@ -19586,9 +19959,6 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB31_2
 ;
 ; VI-LABEL: bitcast_v60i16_to_v30f32_scalar:
 ; VI:       ; %bb.0:
@@ -19629,312 +19999,399 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v30, s87, 29
 ; VI-NEXT:    v_writelane_b32 v30, s30, 30
 ; VI-NEXT:    v_writelane_b32 v30, s31, 31
-; VI-NEXT:    v_readfirstlane_b32 s11, v13
-; VI-NEXT:    s_lshr_b32 s63, s11, 16
-; VI-NEXT:    v_readfirstlane_b32 s13, v12
+; VI-NEXT:    s_lshr_b32 s14, s20, 16
 ; VI-NEXT:    ; implicit-def: $vgpr31 : SGPR spill to VGPR lane
-; VI-NEXT:    s_lshr_b32 s62, s13, 16
-; VI-NEXT:    v_readfirstlane_b32 s15, v11
-; VI-NEXT:    v_writelane_b32 v31, s63, 0
-; VI-NEXT:    s_lshr_b32 s61, s15, 16
-; VI-NEXT:    v_readfirstlane_b32 s73, v10
-; VI-NEXT:    v_writelane_b32 v31, s62, 1
-; VI-NEXT:    v_readfirstlane_b32 s7, v15
-; VI-NEXT:    v_readfirstlane_b32 s9, v14
-; VI-NEXT:    s_lshr_b32 s60, s73, 16
-; VI-NEXT:    v_readfirstlane_b32 s75, v9
+; VI-NEXT:    s_lshr_b32 s42, s19, 16
+; VI-NEXT:    v_writelane_b32 v31, s14, 0
+; VI-NEXT:    s_lshr_b32 s43, s18, 16
+; VI-NEXT:    v_readfirstlane_b32 s6, v15
+; VI-NEXT:    v_readfirstlane_b32 s8, v14
+; VI-NEXT:    v_readfirstlane_b32 s10, v13
+; VI-NEXT:    v_readfirstlane_b32 s12, v12
+; VI-NEXT:    v_readfirstlane_b32 s87, v11
+; VI-NEXT:    v_readfirstlane_b32 s15, v10
+; VI-NEXT:    v_readfirstlane_b32 s72, v9
 ; VI-NEXT:    v_readfirstlane_b32 s77, v8
 ; VI-NEXT:    v_readfirstlane_b32 s79, v7
 ; VI-NEXT:    v_readfirstlane_b32 s89, v6
-; VI-NEXT:    v_readfirstlane_b32 s31, v5
-; VI-NEXT:    v_readfirstlane_b32 s68, v4
-; VI-NEXT:    v_readfirstlane_b32 s71, v3
-; VI-NEXT:    v_readfirstlane_b32 s82, v2
-; VI-NEXT:    v_readfirstlane_b32 s85, v1
-; VI-NEXT:    v_readfirstlane_b32 s6, v0
-; VI-NEXT:    v_writelane_b32 v31, s61, 2
-; VI-NEXT:    s_lshr_b32 s90, s29, 16
-; VI-NEXT:    s_lshr_b32 s30, s28, 16
-; VI-NEXT:    s_lshr_b32 s34, s27, 16
-; VI-NEXT:    s_lshr_b32 s69, s26, 16
-; VI-NEXT:    s_lshr_b32 s80, s25, 16
-; VI-NEXT:    s_lshr_b32 s83, s24, 16
-; VI-NEXT:    s_lshr_b32 s86, s23, 16
-; VI-NEXT:    s_lshr_b32 s8, s22, 16
-; VI-NEXT:    s_lshr_b32 s10, s21, 16
-; VI-NEXT:    s_lshr_b32 s12, s20, 16
-; VI-NEXT:    s_lshr_b32 s14, s19, 16
-; VI-NEXT:    s_lshr_b32 s72, s18, 16
-; VI-NEXT:    s_lshr_b32 s74, s17, 16
-; VI-NEXT:    s_lshr_b32 s76, s16, 16
-; VI-NEXT:    s_lshr_b32 s66, s7, 16
-; VI-NEXT:    s_lshr_b32 s67, s9, 16
-; VI-NEXT:    s_lshr_b32 s59, s75, 16
-; VI-NEXT:    s_lshr_b32 s58, s77, 16
-; VI-NEXT:    s_lshr_b32 s78, s79, 16
-; VI-NEXT:    s_lshr_b32 s88, s89, 16
-; VI-NEXT:    s_lshr_b32 s91, s31, 16
-; VI-NEXT:    s_lshr_b32 s35, s68, 16
-; VI-NEXT:    s_lshr_b32 s70, s71, 16
-; VI-NEXT:    s_lshr_b32 s81, s82, 16
-; VI-NEXT:    s_lshr_b32 s84, s85, 16
-; VI-NEXT:    s_lshr_b32 s87, s6, 16
+; VI-NEXT:    v_readfirstlane_b32 vcc_hi, v5
+; VI-NEXT:    v_readfirstlane_b32 s34, v4
+; VI-NEXT:    v_readfirstlane_b32 s69, v3
+; VI-NEXT:    v_readfirstlane_b32 s80, v2
+; VI-NEXT:    v_readfirstlane_b32 s83, v1
+; VI-NEXT:    v_readfirstlane_b32 s86, v0
+; VI-NEXT:    v_writelane_b32 v31, s42, 1
+; VI-NEXT:    s_lshr_b32 s35, s29, 16
+; VI-NEXT:    s_lshr_b32 s68, s28, 16
+; VI-NEXT:    s_lshr_b32 s70, s27, 16
+; VI-NEXT:    s_lshr_b32 s81, s26, 16
+; VI-NEXT:    s_lshr_b32 s84, s25, 16
+; VI-NEXT:    s_lshr_b32 s7, s24, 16
+; VI-NEXT:    s_lshr_b32 s11, s23, 16
+; VI-NEXT:    s_lshr_b32 s73, s22, 16
+; VI-NEXT:    s_lshr_b32 s75, s21, 16
+; VI-NEXT:    s_lshr_b32 s41, s17, 16
+; VI-NEXT:    s_lshr_b32 s5, s16, 16
+; VI-NEXT:    s_lshr_b32 s66, s6, 16
+; VI-NEXT:    s_lshr_b32 s74, s8, 16
+; VI-NEXT:    s_lshr_b32 s76, s10, 16
+; VI-NEXT:    s_lshr_b32 s78, s12, 16
+; VI-NEXT:    s_lshr_b32 s88, s87, 16
+; VI-NEXT:    s_lshr_b32 s90, s15, 16
+; VI-NEXT:    s_lshr_b32 s91, s72, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s77, 16
+; VI-NEXT:    s_lshr_b32 s30, s79, 16
+; VI-NEXT:    s_lshr_b32 s31, s89, 16
+; VI-NEXT:    s_lshr_b32 s67, vcc_hi, 16
+; VI-NEXT:    s_lshr_b32 s71, s34, 16
+; VI-NEXT:    s_lshr_b32 s82, s69, 16
+; VI-NEXT:    s_lshr_b32 s85, s80, 16
+; VI-NEXT:    s_lshr_b32 s9, s83, 16
+; VI-NEXT:    s_lshr_b32 s13, s86, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
-; VI-NEXT:    v_writelane_b32 v31, s60, 3
+; VI-NEXT:    v_writelane_b32 v31, s43, 2
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    v_writelane_b32 v31, s59, 4
-; VI-NEXT:    v_writelane_b32 v31, s58, 5
-; VI-NEXT:    s_cbranch_scc0 .LBB31_4
+; VI-NEXT:    v_writelane_b32 v31, s41, 3
+; VI-NEXT:    v_writelane_b32 v31, s5, 4
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s76, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s72, 16
+; VI-NEXT:    s_lshl_b32 s5, s43, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s14, 16
+; VI-NEXT:    s_lshl_b32 s5, s42, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s74, 16
+; VI-NEXT:    s_lshl_b32 s41, s41, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s12, 16
+; VI-NEXT:    s_lshl_b32 s5, s14, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s10, 16
+; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s8, 16
+; VI-NEXT:    s_lshl_b32 s5, s73, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s48, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
-; VI-NEXT:    s_lshl_b32 s5, s90, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s6
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s86
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s85
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s83
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s82
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s80
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s68
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s34
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s31
-; VI-NEXT:    s_lshl_b32 s5, s91, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_hi
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s89
-; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s79
-; VI-NEXT:    s_lshl_b32 s5, s78, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s77
-; VI-NEXT:    s_lshl_b32 s5, s58, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s58, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s75
-; VI-NEXT:    s_lshl_b32 s5, s59, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s72
+; VI-NEXT:    s_lshl_b32 s5, s91, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s73
-; VI-NEXT:    s_lshl_b32 s5, s60, 16
-; VI-NEXT:    s_or_b32 s60, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s15
-; VI-NEXT:    s_lshl_b32 s5, s61, 16
+; VI-NEXT:    s_lshl_b32 s5, s90, 16
+; VI-NEXT:    s_or_b32 s60, s4, s5
+; VI-NEXT:    s_and_b32 s4, 0xffff, s87
+; VI-NEXT:    s_lshl_b32 s5, s88, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s13
-; VI-NEXT:    s_lshl_b32 s5, s62, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s12
+; VI-NEXT:    s_lshl_b32 s5, s78, 16
 ; VI-NEXT:    s_or_b32 s62, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s11
-; VI-NEXT:    s_lshl_b32 s5, s63, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s10
+; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s63, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s9
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s8
+; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s64, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s7
+; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s65, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB31_3
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    v_writelane_b32 v31, s26, 5
+; VI-NEXT:    s_mov_b32 s26, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, s27
+; VI-NEXT:    s_mov_b32 s27, s89
+; VI-NEXT:    s_mov_b32 s89, s28
+; VI-NEXT:    s_mov_b32 s28, s79
+; VI-NEXT:    s_mov_b32 s79, s29
+; VI-NEXT:    s_mov_b32 s29, s77
+; VI-NEXT:    s_mov_b32 s77, s13
+; VI-NEXT:    s_mov_b32 s14, s12
+; VI-NEXT:    s_mov_b32 s13, s11
+; VI-NEXT:    s_mov_b32 s12, s10
+; VI-NEXT:    s_mov_b32 s11, s9
+; VI-NEXT:    s_mov_b32 s10, s8
+; VI-NEXT:    s_mov_b32 s9, s7
+; VI-NEXT:    s_mov_b32 s8, s6
+; VI-NEXT:    s_mov_b32 s7, s85
+; VI-NEXT:    s_mov_b32 s85, s82
+; VI-NEXT:    s_mov_b32 s82, s71
+; VI-NEXT:    s_mov_b32 s71, s68
+; VI-NEXT:    s_mov_b32 s68, s35
+; VI-NEXT:    s_mov_b32 s35, s31
+; VI-NEXT:    s_mov_b32 s31, s30
+; VI-NEXT:    s_mov_b32 s30, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, s91
+; VI-NEXT:    s_mov_b32 s91, s90
+; VI-NEXT:    s_mov_b32 s90, s88
+; VI-NEXT:    s_mov_b32 s88, s78
+; VI-NEXT:    s_mov_b32 s78, s76
+; VI-NEXT:    s_mov_b32 s76, s74
+; VI-NEXT:    s_mov_b32 s74, s66
+; VI-NEXT:    s_mov_b32 s6, s75
+; VI-NEXT:    s_mov_b32 s75, s72
+; VI-NEXT:    s_mov_b32 s72, s73
+; VI-NEXT:    s_mov_b32 s73, s15
+; VI-NEXT:    s_mov_b32 s15, s87
+; VI-NEXT:    s_mov_b32 s87, s84
+; VI-NEXT:    s_mov_b32 s84, s81
+; VI-NEXT:    s_mov_b32 s81, s70
+; VI-NEXT:    s_mov_b32 s70, s67
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    s_mov_b32 s67, s70
+; VI-NEXT:    s_mov_b32 s70, s81
+; VI-NEXT:    s_mov_b32 s81, s84
+; VI-NEXT:    s_mov_b32 s84, s87
+; VI-NEXT:    s_mov_b32 s87, s15
+; VI-NEXT:    s_mov_b32 s15, s73
+; VI-NEXT:    s_mov_b32 s73, s72
+; VI-NEXT:    s_mov_b32 s72, s75
+; VI-NEXT:    s_mov_b32 s75, s6
+; VI-NEXT:    s_mov_b32 s66, s74
+; VI-NEXT:    s_mov_b32 s74, s76
+; VI-NEXT:    s_mov_b32 s76, s78
+; VI-NEXT:    s_mov_b32 s78, s88
+; VI-NEXT:    s_mov_b32 s88, s90
+; VI-NEXT:    s_mov_b32 s90, s91
+; VI-NEXT:    s_mov_b32 s91, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, s30
+; VI-NEXT:    s_mov_b32 s30, s31
+; VI-NEXT:    s_mov_b32 s31, s35
+; VI-NEXT:    s_mov_b32 s35, s68
+; VI-NEXT:    s_mov_b32 s68, s71
+; VI-NEXT:    s_mov_b32 s71, s82
+; VI-NEXT:    s_mov_b32 s82, s85
+; VI-NEXT:    s_mov_b32 s85, s7
+; VI-NEXT:    s_mov_b32 s6, s8
+; VI-NEXT:    s_mov_b32 s7, s9
+; VI-NEXT:    s_mov_b32 s8, s10
+; VI-NEXT:    s_mov_b32 s9, s11
+; VI-NEXT:    s_mov_b32 s10, s12
+; VI-NEXT:    s_mov_b32 s11, s13
+; VI-NEXT:    s_mov_b32 s12, s14
+; VI-NEXT:    s_mov_b32 s13, s77
+; VI-NEXT:    s_mov_b32 s77, s29
+; VI-NEXT:    s_mov_b32 s29, s79
+; VI-NEXT:    s_mov_b32 s79, s28
+; VI-NEXT:    s_mov_b32 s28, s89
+; VI-NEXT:    s_mov_b32 s89, s27
+; VI-NEXT:    s_mov_b32 s27, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, s26
+; VI-NEXT:    v_readlane_b32 s26, v31, 5
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 4
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s76, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_add_i32 s17, s17, 3
+; VI-NEXT:    v_readlane_b32 s14, v31, 3
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_and_b32 s5, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s16, s74, 16
-; VI-NEXT:    s_or_b32 s5, s16, s5
+; VI-NEXT:    s_lshl_b32 s14, s14, 16
+; VI-NEXT:    s_or_b32 s5, s14, s5
+; VI-NEXT:    s_add_i32 s37, s5, 0x30000
 ; VI-NEXT:    s_add_i32 s18, s18, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 2
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
-; VI-NEXT:    s_add_i32 s37, s5, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s72, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 1
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s14, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 0
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s12, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s10, 16
+; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s8, 16
+; VI-NEXT:    s_lshl_b32 s5, s73, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s26, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s27, s27, 3
 ; VI-NEXT:    s_add_i32 s46, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s27, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s28, s28, 3
 ; VI-NEXT:    s_add_i32 s47, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s28, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s29, s29, 3
 ; VI-NEXT:    s_add_i32 s48, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s90, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s6, s6, 3
+; VI-NEXT:    s_add_i32 s86, s86, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s6, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_and_b32 s4, s86, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s85, s85, 3
+; VI-NEXT:    s_add_i32 s83, s83, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s85, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_and_b32 s4, s83, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s82, s82, 3
+; VI-NEXT:    s_add_i32 s80, s80, 3
 ; VI-NEXT:    s_add_i32 s51, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s82, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_and_b32 s4, s80, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s71, s71, 3
+; VI-NEXT:    s_add_i32 s69, s69, 3
 ; VI-NEXT:    s_add_i32 s52, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s71, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, s69, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s68, s68, 3
+; VI-NEXT:    s_add_i32 s34, s34, 3
 ; VI-NEXT:    s_add_i32 s53, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s68, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, s34, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s31, s31, 3
+; VI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; VI-NEXT:    s_add_i32 s54, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s31, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s91, 16
+; VI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s89, s89, 3
 ; VI-NEXT:    s_add_i32 s55, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s89, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s79, s79, 3
 ; VI-NEXT:    s_add_i32 s56, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s79, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s78, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s77, s77, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 5
 ; VI-NEXT:    s_add_i32 s57, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s77, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s75, s75, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 4
+; VI-NEXT:    s_add_i32 s75, s72, 3
 ; VI-NEXT:    s_add_i32 s58, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s75, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s91, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s73, s73, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 3
+; VI-NEXT:    s_add_i32 s73, s15, 3
 ; VI-NEXT:    s_add_i32 s59, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s73, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s90, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s15, s15, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 2
+; VI-NEXT:    s_add_i32 s15, s87, 3
 ; VI-NEXT:    s_add_i32 s60, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s15, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s88, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s13, s13, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 1
+; VI-NEXT:    s_add_i32 s13, s12, 3
 ; VI-NEXT:    s_add_i32 s61, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s13, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s78, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s11, s11, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 0
+; VI-NEXT:    s_add_i32 s11, s10, 3
 ; VI-NEXT:    s_add_i32 s62, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s11, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s9, s9, 3
+; VI-NEXT:    s_add_i32 s9, s8, 3
 ; VI-NEXT:    s_add_i32 s63, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s9, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s7, s7, 3
+; VI-NEXT:    s_add_i32 s7, s6, 3
 ; VI-NEXT:    s_add_i32 s64, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s65, s4, 0x30000
-; VI-NEXT:  .LBB31_3: ; %end
+; VI-NEXT:  .LBB31_5: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v30, 30
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
@@ -20003,13 +20460,6 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_4:
-; VI-NEXT:    s_mov_b32 vcc_lo, s66
-; VI-NEXT:    s_mov_b32 vcc_hi, s67
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_mov_b32 s67, vcc_hi
-; VI-NEXT:    s_mov_b32 s66, vcc_lo
-; VI-NEXT:    s_branch .LBB31_2
 ;
 ; GFX9-LABEL: bitcast_v60i16_to_v30f32_scalar:
 ; GFX9:       ; %bb.0:
@@ -20109,10 +20559,18 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s76
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s64, s74, s75
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s65, s72, s73
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_4
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -20143,10 +20601,8 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v27, s63, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v28, s64, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v29, s65, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB31_5
-; GFX9-NEXT:  .LBB31_3:
-; GFX9-NEXT:    s_branch .LBB31_2
-; GFX9-NEXT:  .LBB31_4:
+; GFX9-NEXT:    s_branch .LBB31_6
+; GFX9-NEXT:  .LBB31_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -20179,7 +20635,7 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB31_5: ; %end
+; GFX9-NEXT:  .LBB31_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
 ; GFX9-NEXT:    v_readlane_b32 s64, v32, 12
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
@@ -20278,11 +20734,16 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s28, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s29, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_4
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -20314,8 +20775,6 @@ define inreg <30 x float> @bitcast_v60i16_to_v30f32_scalar(<60 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v28, s28, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v29, s29, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_3:
-; GFX11-NEXT:    s_branch .LBB31_2
 ; GFX11-NEXT:  .LBB31_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -21285,7 +21744,7 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s43, v1
 ; SI-NEXT:    s_cmp_lg_u32 s42, 0
 ; SI-NEXT:    v_readfirstlane_b32 s42, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s64, s5, 16
 ; SI-NEXT:    s_lshr_b32 s55, s7, 16
@@ -21302,7 +21761,7 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s36, s21, 16
 ; SI-NEXT:    s_lshr_b32 s35, s19, 16
 ; SI-NEXT:    s_lshr_b32 s34, s17, 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[4:5], 16
+; SI-NEXT:    s_lshr_b64 vcc, s[4:5], 16
 ; SI-NEXT:    s_lshr_b64 s[44:45], s[6:7], 16
 ; SI-NEXT:    s_lshr_b64 s[46:47], s[8:9], 16
 ; SI-NEXT:    s_lshr_b64 s[56:57], s[10:11], 16
@@ -21317,8 +21776,46 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[30:31], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[30:31], -1
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[30:31], s[30:31], exec
+; SI-NEXT:    s_cselect_b32 s45, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s45, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v29, s5, 1.0
 ; SI-NEXT:    v_add_f32_e64 v28, s4, 1.0
 ; SI-NEXT:    v_add_f32_e64 v27, s7, 1.0
@@ -21386,40 +21883,8 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    v_lshrrev_b32_e32 v60, 16, v3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshrrev_b32_e32 v61, 16, v1
-; SI-NEXT:    s_branch .LBB33_5
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:    s_branch .LBB33_6
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -21466,7 +21931,7 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v41, s54
 ; SI-NEXT:    v_mov_b32_e32 v40, s55
 ; SI-NEXT:    v_mov_b32_e32 v55, s64
-; SI-NEXT:    v_mov_b32_e32 v30, s30
+; SI-NEXT:    v_mov_b32_e32 v30, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v31, s44
 ; SI-NEXT:    v_mov_b32_e32 v32, s46
 ; SI-NEXT:    v_mov_b32_e32 v33, s56
@@ -21481,7 +21946,7 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v51, s90
 ; SI-NEXT:    v_mov_b32_e32 v52, s92
 ; SI-NEXT:    v_mov_b32_e32 v53, s94
-; SI-NEXT:  .LBB33_5: ; %end
+; SI-NEXT:  .LBB33_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v39, 16, v53
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v39
@@ -21631,10 +22096,8 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v60, s35, 1
 ; VI-NEXT:    v_writelane_b32 v60, s36, 2
 ; VI-NEXT:    v_writelane_b32 v60, s37, 3
-; VI-NEXT:    v_writelane_b32 v60, s38, 4
-; VI-NEXT:    v_writelane_b32 v60, s39, 5
-; VI-NEXT:    v_writelane_b32 v60, s30, 6
-; VI-NEXT:    v_writelane_b32 v60, s31, 7
+; VI-NEXT:    v_writelane_b32 v60, s30, 4
+; VI-NEXT:    v_writelane_b32 v60, s31, 5
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
 ; VI-NEXT:    v_readfirstlane_b32 s6, v15
 ; VI-NEXT:    v_readfirstlane_b32 s7, v14
@@ -21653,7 +22116,7 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s45, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s46, s6, 16
 ; VI-NEXT:    s_lshr_b32 s47, s7, 16
@@ -21677,16 +22140,54 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s89, s26, 16
 ; VI-NEXT:    s_lshr_b32 s90, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s36, s19, 16
-; VI-NEXT:    s_lshr_b32 s37, s18, 16
-; VI-NEXT:    s_lshr_b32 s38, s17, 16
-; VI-NEXT:    s_lshr_b32 s39, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s36, s17, 16
+; VI-NEXT:    s_lshr_b32 s37, s16, 16
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr37
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr35
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v29, s6, 1.0
 ; VI-NEXT:    v_add_f32_e64 v28, s7, 1.0
 ; VI-NEXT:    v_add_f32_e64 v27, s8, 1.0
@@ -21747,40 +22248,8 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v57, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v58, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v59, 16, v0
-; VI-NEXT:    s_branch .LBB33_5
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    ; implicit-def: $sgpr39
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr37
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:    s_branch .LBB33_6
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -21811,14 +22280,14 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v27, s8
 ; VI-NEXT:    v_mov_b32_e32 v28, s7
 ; VI-NEXT:    v_mov_b32_e32 v29, s6
-; VI-NEXT:    v_mov_b32_e32 v59, s39
-; VI-NEXT:    v_mov_b32_e32 v58, s38
-; VI-NEXT:    v_mov_b32_e32 v57, s37
-; VI-NEXT:    v_mov_b32_e32 v56, s36
-; VI-NEXT:    v_mov_b32_e32 v47, s35
-; VI-NEXT:    v_mov_b32_e32 v46, s34
-; VI-NEXT:    v_mov_b32_e32 v45, s31
-; VI-NEXT:    v_mov_b32_e32 v44, s30
+; VI-NEXT:    v_mov_b32_e32 v59, s37
+; VI-NEXT:    v_mov_b32_e32 v58, s36
+; VI-NEXT:    v_mov_b32_e32 v57, s35
+; VI-NEXT:    v_mov_b32_e32 v56, s34
+; VI-NEXT:    v_mov_b32_e32 v47, s31
+; VI-NEXT:    v_mov_b32_e32 v46, s30
+; VI-NEXT:    v_mov_b32_e32 v45, vcc_hi
+; VI-NEXT:    v_mov_b32_e32 v44, vcc_lo
 ; VI-NEXT:    v_mov_b32_e32 v43, s91
 ; VI-NEXT:    v_mov_b32_e32 v42, s90
 ; VI-NEXT:    v_mov_b32_e32 v41, s89
@@ -21841,7 +22310,7 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v32, s56
 ; VI-NEXT:    v_mov_b32_e32 v31, s47
 ; VI-NEXT:    v_mov_b32_e32 v30, s46
-; VI-NEXT:  .LBB33_5: ; %end
+; VI-NEXT:  .LBB33_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v59, 16, v59
 ; VI-NEXT:    v_lshlrev_b32_e32 v58, 16, v58
 ; VI-NEXT:    v_lshlrev_b32_e32 v57, 16, v57
@@ -21896,7 +22365,7 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_lshlrev_b32_e32 v32, 16, v32
 ; VI-NEXT:    v_lshlrev_b32_e32 v31, 16, v31
 ; VI-NEXT:    v_lshlrev_b32_e32 v30, 16, v30
-; VI-NEXT:    v_readlane_b32 s30, v60, 6
+; VI-NEXT:    v_readlane_b32 s30, v60, 4
 ; VI-NEXT:    v_or_b32_sdwa v12, v12, v55 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v13, v13, v54 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v14, v14, v53 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
@@ -21915,9 +22384,7 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; VI-NEXT:    v_or_b32_sdwa v27, v27, v32 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v28, v28, v31 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v29, v29, v30 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; VI-NEXT:    v_readlane_b32 s31, v60, 7
-; VI-NEXT:    v_readlane_b32 s39, v60, 5
-; VI-NEXT:    v_readlane_b32 s38, v60, 4
+; VI-NEXT:    v_readlane_b32 s31, v60, 5
 ; VI-NEXT:    v_readlane_b32 s37, v60, 3
 ; VI-NEXT:    v_readlane_b32 s36, v60, 2
 ; VI-NEXT:    v_readlane_b32 s35, v60, 1
@@ -21946,10 +22413,8 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    buffer_store_dword v57, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
 ; GFX9-NEXT:    buffer_store_dword v58, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
 ; GFX9-NEXT:    buffer_store_dword v59, off, s[0:3], s32 ; 4-byte Folded Spill
-; GFX9-NEXT:    v_writelane_b32 v60, s34, 0
-; GFX9-NEXT:    v_writelane_b32 v60, s35, 1
-; GFX9-NEXT:    v_writelane_b32 v60, s30, 2
-; GFX9-NEXT:    v_writelane_b32 v60, s31, 3
+; GFX9-NEXT:    v_writelane_b32 v60, s30, 0
+; GFX9-NEXT:    v_writelane_b32 v60, s31, 1
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v16
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v15
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v14
@@ -21968,7 +22433,7 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s45, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s46, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s47, s7, 16
@@ -21996,12 +22461,50 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s93, s22, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s21, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s31, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s34, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s30, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s31, s16, 16
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr31
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_hi
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v29, s6, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v28, s7, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v27, s8, 1.0
@@ -22062,40 +22565,8 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v57, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v58, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v59, 16, v0
-; GFX9-NEXT:    s_branch .LBB33_5
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr35
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr31
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:    s_branch .LBB33_6
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -22126,10 +22597,10 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s6
-; GFX9-NEXT:    v_mov_b32_e32 v59, s35
-; GFX9-NEXT:    v_mov_b32_e32 v58, s34
-; GFX9-NEXT:    v_mov_b32_e32 v57, s31
-; GFX9-NEXT:    v_mov_b32_e32 v56, s30
+; GFX9-NEXT:    v_mov_b32_e32 v59, s31
+; GFX9-NEXT:    v_mov_b32_e32 v58, s30
+; GFX9-NEXT:    v_mov_b32_e32 v57, vcc_hi
+; GFX9-NEXT:    v_mov_b32_e32 v56, vcc_lo
 ; GFX9-NEXT:    v_mov_b32_e32 v47, s95
 ; GFX9-NEXT:    v_mov_b32_e32 v46, s94
 ; GFX9-NEXT:    v_mov_b32_e32 v45, s93
@@ -22156,7 +22627,7 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v32, s56
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s47
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s46
-; GFX9-NEXT:  .LBB33_5: ; %end
+; GFX9-NEXT:  .LBB33_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -22211,7 +22682,7 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_and_b32_e32 v27, 0xffff, v27
 ; GFX9-NEXT:    v_and_b32_e32 v28, 0xffff, v28
 ; GFX9-NEXT:    v_and_b32_e32 v29, 0xffff, v29
-; GFX9-NEXT:    v_readlane_b32 s30, v60, 2
+; GFX9-NEXT:    v_readlane_b32 s30, v60, 0
 ; GFX9-NEXT:    v_lshl_or_b32 v12, v55, 16, v12
 ; GFX9-NEXT:    v_lshl_or_b32 v13, v54, 16, v13
 ; GFX9-NEXT:    v_lshl_or_b32 v14, v53, 16, v14
@@ -22230,9 +22701,7 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX9-NEXT:    v_lshl_or_b32 v27, v32, 16, v27
 ; GFX9-NEXT:    v_lshl_or_b32 v28, v31, 16, v28
 ; GFX9-NEXT:    v_lshl_or_b32 v29, v30, 16, v29
-; GFX9-NEXT:    v_readlane_b32 s31, v60, 3
-; GFX9-NEXT:    v_readlane_b32 s35, v60, 1
-; GFX9-NEXT:    v_readlane_b32 s34, v60, 0
+; GFX9-NEXT:    v_readlane_b32 s31, v60, 1
 ; GFX9-NEXT:    s_or_saveexec_b64 s[4:5], -1
 ; GFX9-NEXT:    buffer_load_dword v60, off, s[0:3], s32 offset:48 ; 4-byte Folded Reload
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
@@ -22256,11 +22725,11 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s15, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s40, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s40, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s42, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s4, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s5, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s40, s4, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s5, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s43, s6, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s44, s7, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s45, s8, 16
@@ -22289,9 +22758,46 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s92, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s93, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s94, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-TRUE16-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB33_3
+; GFX11-TRUE16-NEXT:  .LBB33_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s42, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr94
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr93
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr92
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr91
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:  .LBB33_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v29, s4, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v28, s5, 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v27, s6, 1.0
@@ -22352,40 +22858,8 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v81, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v82, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v83, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB33_5
-; GFX11-TRUE16-NEXT:  .LBB33_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr94
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr93
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr92
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr91
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    s_branch .LBB33_2
-; GFX11-TRUE16-NEXT:  .LBB33_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB33_6
+; GFX11-TRUE16-NEXT:  .LBB33_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -22415,8 +22889,8 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v37, s56 :: v_dual_mov_b32 v36, s47
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v35, s46 :: v_dual_mov_b32 v34, s45
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v33, s44 :: v_dual_mov_b32 v32, s43
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
-; GFX11-TRUE16-NEXT:  .LBB33_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v31, s41 :: v_dual_mov_b32 v30, s40
+; GFX11-TRUE16-NEXT:  .LBB33_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v83.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v82.l
@@ -22467,11 +22941,11 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s14, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s15, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s40, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s40, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s42, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s4, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s5, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s40, s4, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s5, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s43, s6, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s44, s7, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s45, s8, 16
@@ -22500,9 +22974,46 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s92, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s93, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s94, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-FAKE16-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB33_3
+; GFX11-FAKE16-NEXT:  .LBB33_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s42, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr94
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr93
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr92
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr91
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:  .LBB33_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v25, s4, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v26, s5, 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v27, s6, 1.0
@@ -22563,40 +23074,8 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v81, 16, v2
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v82, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v83, 16, v4
-; GFX11-FAKE16-NEXT:    s_branch .LBB33_5
-; GFX11-FAKE16-NEXT:  .LBB33_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr94
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr93
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr92
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr91
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    s_branch .LBB33_2
-; GFX11-FAKE16-NEXT:  .LBB33_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB33_6
+; GFX11-FAKE16-NEXT:  .LBB33_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v3, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v1, s3
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s16 :: v_dual_mov_b32 v9, s17
@@ -22626,8 +23105,8 @@ define inreg <60 x half> @bitcast_v30f32_to_v60f16_scalar(<30 x float> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v37, s56 :: v_dual_mov_b32 v36, s47
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v35, s46 :: v_dual_mov_b32 v34, s45
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v33, s44 :: v_dual_mov_b32 v32, s43
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v31, s42 :: v_dual_mov_b32 v30, s41
-; GFX11-FAKE16-NEXT:  .LBB33_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v31, s41 :: v_dual_mov_b32 v30, s40
+; GFX11-FAKE16-NEXT:  .LBB33_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v4
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v3
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v84, 0xffff, v1
@@ -24235,10 +24714,8 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v32, s87, 29
 ; SI-NEXT:    v_writelane_b32 v32, s96, 30
 ; SI-NEXT:    v_writelane_b32 v32, s97, 31
-; SI-NEXT:    v_writelane_b32 v32, s98, 32
-; SI-NEXT:    v_writelane_b32 v32, s99, 33
-; SI-NEXT:    v_writelane_b32 v32, s30, 34
-; SI-NEXT:    v_writelane_b32 v32, s31, 35
+; SI-NEXT:    v_writelane_b32 v32, s30, 32
+; SI-NEXT:    v_writelane_b32 v32, s31, 33
 ; SI-NEXT:    v_readfirstlane_b32 s6, v15
 ; SI-NEXT:    v_readfirstlane_b32 s8, v14
 ; SI-NEXT:    v_readfirstlane_b32 s10, v13
@@ -24252,23 +24729,23 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s90, v5
 ; SI-NEXT:    v_readfirstlane_b32 s92, v4
 ; SI-NEXT:    v_readfirstlane_b32 s94, v3
-; SI-NEXT:    v_readfirstlane_b32 s30, v2
-; SI-NEXT:    v_readfirstlane_b32 s35, v1
-; SI-NEXT:    v_readfirstlane_b32 s70, v0
-; SI-NEXT:    s_lshr_b32 s31, s29, 16
-; SI-NEXT:    s_lshr_b32 s68, s28, 16
-; SI-NEXT:    s_lshr_b32 s71, s27, 16
-; SI-NEXT:    s_lshr_b32 s81, s26, 16
-; SI-NEXT:    s_lshr_b32 s82, s25, 16
-; SI-NEXT:    s_lshr_b32 s83, s24, 16
-; SI-NEXT:    s_lshr_b32 s84, s23, 16
-; SI-NEXT:    s_lshr_b32 s85, s22, 16
-; SI-NEXT:    s_lshr_b32 s86, s21, 16
-; SI-NEXT:    s_lshr_b32 s87, s20, 16
-; SI-NEXT:    s_lshr_b32 s96, s19, 16
-; SI-NEXT:    s_lshr_b32 s97, s18, 16
-; SI-NEXT:    s_lshr_b32 s98, s17, 16
-; SI-NEXT:    s_lshr_b32 s99, s16, 16
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v2
+; SI-NEXT:    v_readfirstlane_b32 s31, v1
+; SI-NEXT:    v_readfirstlane_b32 s68, v0
+; SI-NEXT:    s_lshr_b32 vcc_hi, s29, 16
+; SI-NEXT:    s_lshr_b32 s34, s28, 16
+; SI-NEXT:    s_lshr_b32 s69, s27, 16
+; SI-NEXT:    s_lshr_b32 s71, s26, 16
+; SI-NEXT:    s_lshr_b32 s80, s25, 16
+; SI-NEXT:    s_lshr_b32 s81, s24, 16
+; SI-NEXT:    s_lshr_b32 s82, s23, 16
+; SI-NEXT:    s_lshr_b32 s83, s22, 16
+; SI-NEXT:    s_lshr_b32 s84, s21, 16
+; SI-NEXT:    s_lshr_b32 s85, s20, 16
+; SI-NEXT:    s_lshr_b32 s86, s19, 16
+; SI-NEXT:    s_lshr_b32 s87, s18, 16
+; SI-NEXT:    s_lshr_b32 s96, s17, 16
+; SI-NEXT:    s_lshr_b32 s97, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -24282,63 +24759,63 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s91, s90, 16
 ; SI-NEXT:    s_lshr_b32 s93, s92, 16
 ; SI-NEXT:    s_lshr_b32 s95, s94, 16
-; SI-NEXT:    s_lshr_b32 s34, s30, 16
-; SI-NEXT:    s_lshr_b32 s69, s35, 16
-; SI-NEXT:    s_lshr_b32 s80, s70, 16
+; SI-NEXT:    s_lshr_b32 s30, vcc_lo, 16
+; SI-NEXT:    s_lshr_b32 s35, s31, 16
+; SI-NEXT:    s_lshr_b32 s70, s68, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v16
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_3
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s98, 16
+; SI-NEXT:    s_lshl_b32 s41, s96, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s48, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_and_b32 s4, s68, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -24379,11 +24856,20 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB35_4
-; SI-NEXT:  .LBB35_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s99
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s97
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s98
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s96
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -24393,7 +24879,7 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s97
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, s87
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v5, s19
@@ -24403,20 +24889,20 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s96
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s86
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s87
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s85
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s20
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s86
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s84
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
@@ -24426,7 +24912,7 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_or_b32_e32 v4, v4, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s85
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s83
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s22
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
@@ -24435,11 +24921,11 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s84
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, s82
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v6, v8, v6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s23
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s83
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s81
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
@@ -24450,7 +24936,7 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s24
 ; SI-NEXT:    v_or_b32_e32 v7, v8, v7
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v9
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s80
 ; SI-NEXT:    v_cvt_f32_f16_e32 v11, s25
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
@@ -24459,11 +24945,11 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
 ; SI-NEXT:    v_cvt_f16_f32_e32 v11, v11
 ; SI-NEXT:    v_or_b32_e32 v8, v10, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v10, s71
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; SI-NEXT:    v_or_b32_e32 v9, v11, v9
 ; SI-NEXT:    v_cvt_f32_f16_e32 v11, s26
-; SI-NEXT:    v_cvt_f32_f16_e32 v12, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v12, s69
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
@@ -24474,7 +24960,7 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s27
 ; SI-NEXT:    v_or_b32_e32 v10, v11, v10
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v12
-; SI-NEXT:    v_cvt_f32_f16_e32 v12, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v12, s34
 ; SI-NEXT:    v_cvt_f32_f16_e32 v14, s28
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
 ; SI-NEXT:    v_cvt_f16_f32_e32 v13, v13
@@ -24483,11 +24969,11 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
 ; SI-NEXT:    v_cvt_f16_f32_e32 v14, v14
 ; SI-NEXT:    v_or_b32_e32 v11, v13, v11
-; SI-NEXT:    v_cvt_f32_f16_e32 v13, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v13, vcc_hi
 ; SI-NEXT:    v_lshlrev_b32_e32 v12, 16, v12
 ; SI-NEXT:    v_or_b32_e32 v12, v14, v12
 ; SI-NEXT:    v_cvt_f32_f16_e32 v14, s29
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s80
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s70
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
 ; SI-NEXT:    v_cvt_f16_f32_e32 v13, v13
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
@@ -24495,11 +24981,11 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    v_cvt_f16_f32_e32 v14, v14
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s68
 ; SI-NEXT:    v_or_b32_e32 v13, v14, v13
 ; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v15
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s69
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, s31
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
@@ -24507,10 +24993,10 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v17, 0x38000000, v17
 ; SI-NEXT:    v_cvt_f16_f32_e32 v17, v17
 ; SI-NEXT:    v_or_b32_e32 v14, v16, v14
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s30
 ; SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; SI-NEXT:    v_or_b32_e32 v15, v17, v15
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, vcc_lo
 ; SI-NEXT:    v_cvt_f32_f16_e32 v18, s95
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
@@ -24621,11 +25107,8 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    v_or_b32_e32 v28, v29, v28
 ; SI-NEXT:    v_lshlrev_b32_e32 v29, 16, v30
 ; SI-NEXT:    v_or_b32_e32 v29, v31, v29
-; SI-NEXT:    s_branch .LBB35_5
-; SI-NEXT:  .LBB35_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB35_2
-; SI-NEXT:  .LBB35_4:
+; SI-NEXT:    s_branch .LBB35_6
+; SI-NEXT:  .LBB35_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -24658,11 +25141,9 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB35_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 34
-; SI-NEXT:    v_readlane_b32 s31, v32, 35
-; SI-NEXT:    v_readlane_b32 s99, v32, 33
-; SI-NEXT:    v_readlane_b32 s98, v32, 32
+; SI-NEXT:  .LBB35_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 32
+; SI-NEXT:    v_readlane_b32 s31, v32, 33
 ; SI-NEXT:    v_readlane_b32 s97, v32, 31
 ; SI-NEXT:    v_readlane_b32 s96, v32, 30
 ; SI-NEXT:    v_readlane_b32 s87, v32, 29
@@ -24740,136 +25221,136 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v32, s87, 29
 ; VI-NEXT:    v_writelane_b32 v32, s30, 30
 ; VI-NEXT:    v_writelane_b32 v32, s31, 31
-; VI-NEXT:    v_readfirstlane_b32 s6, v15
-; VI-NEXT:    s_lshr_b32 vcc_lo, s6, 16
 ; VI-NEXT:    v_readfirstlane_b32 s8, v14
-; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
-; VI-NEXT:    s_lshr_b32 vcc_hi, s8, 16
+; VI-NEXT:    s_lshr_b32 s75, s8, 16
 ; VI-NEXT:    v_readfirstlane_b32 s10, v13
-; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 0
+; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; VI-NEXT:    s_lshr_b32 s63, s10, 16
 ; VI-NEXT:    v_readfirstlane_b32 s12, v12
-; VI-NEXT:    v_writelane_b32 v33, vcc_hi, 1
+; VI-NEXT:    v_writelane_b32 v33, s75, 0
 ; VI-NEXT:    s_lshr_b32 s62, s12, 16
 ; VI-NEXT:    v_readfirstlane_b32 s14, v11
-; VI-NEXT:    v_writelane_b32 v33, s63, 2
+; VI-NEXT:    v_writelane_b32 v33, s63, 1
+; VI-NEXT:    v_readfirstlane_b32 s6, v15
 ; VI-NEXT:    s_lshr_b32 s61, s14, 16
 ; VI-NEXT:    v_readfirstlane_b32 s72, v10
-; VI-NEXT:    v_writelane_b32 v33, s62, 3
-; VI-NEXT:    s_lshr_b32 s60, s72, 16
 ; VI-NEXT:    v_readfirstlane_b32 s74, v9
 ; VI-NEXT:    v_readfirstlane_b32 s76, v8
 ; VI-NEXT:    v_readfirstlane_b32 s78, v7
 ; VI-NEXT:    v_readfirstlane_b32 s89, v6
-; VI-NEXT:    v_readfirstlane_b32 s30, v5
-; VI-NEXT:    v_readfirstlane_b32 s35, v4
-; VI-NEXT:    v_readfirstlane_b32 s71, v3
-; VI-NEXT:    v_readfirstlane_b32 s82, v2
-; VI-NEXT:    v_readfirstlane_b32 s85, v1
-; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    v_writelane_b32 v33, s61, 4
+; VI-NEXT:    v_readfirstlane_b32 vcc_lo, v5
+; VI-NEXT:    v_readfirstlane_b32 s31, v4
+; VI-NEXT:    v_readfirstlane_b32 s69, v3
+; VI-NEXT:    v_readfirstlane_b32 s80, v2
+; VI-NEXT:    v_readfirstlane_b32 s83, v1
+; VI-NEXT:    v_readfirstlane_b32 s86, v0
+; VI-NEXT:    v_writelane_b32 v33, s62, 2
 ; VI-NEXT:    s_lshr_b32 s56, s29, 16
-; VI-NEXT:    s_lshr_b32 s88, s28, 16
-; VI-NEXT:    s_lshr_b32 s31, s27, 16
-; VI-NEXT:    s_lshr_b32 s68, s26, 16
-; VI-NEXT:    s_lshr_b32 s70, s25, 16
-; VI-NEXT:    s_lshr_b32 s81, s24, 16
-; VI-NEXT:    s_lshr_b32 s84, s23, 16
-; VI-NEXT:    s_lshr_b32 s86, s22, 16
-; VI-NEXT:    s_lshr_b32 s9, s21, 16
-; VI-NEXT:    s_lshr_b32 s13, s20, 16
-; VI-NEXT:    s_lshr_b32 s15, s19, 16
-; VI-NEXT:    s_lshr_b32 s73, s18, 16
-; VI-NEXT:    s_lshr_b32 s75, s17, 16
-; VI-NEXT:    s_lshr_b32 s77, s16, 16
+; VI-NEXT:    s_lshr_b32 s77, s28, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s27, 16
+; VI-NEXT:    s_lshr_b32 s34, s26, 16
+; VI-NEXT:    s_lshr_b32 s68, s25, 16
+; VI-NEXT:    s_lshr_b32 s71, s24, 16
+; VI-NEXT:    s_lshr_b32 s82, s23, 16
+; VI-NEXT:    s_lshr_b32 s84, s22, 16
+; VI-NEXT:    s_lshr_b32 s87, s21, 16
+; VI-NEXT:    s_lshr_b32 s9, s20, 16
+; VI-NEXT:    s_lshr_b32 s11, s19, 16
+; VI-NEXT:    s_lshr_b32 s13, s18, 16
+; VI-NEXT:    s_lshr_b32 s15, s17, 16
+; VI-NEXT:    s_lshr_b32 s73, s16, 16
+; VI-NEXT:    s_lshr_b32 s65, s6, 16
+; VI-NEXT:    s_lshr_b32 s60, s72, 16
 ; VI-NEXT:    s_lshr_b32 s59, s74, 16
 ; VI-NEXT:    s_lshr_b32 s58, s76, 16
 ; VI-NEXT:    s_lshr_b32 s57, s78, 16
-; VI-NEXT:    s_lshr_b32 s64, s89, 16
-; VI-NEXT:    s_lshr_b32 s34, s30, 16
-; VI-NEXT:    s_lshr_b32 s69, s35, 16
-; VI-NEXT:    s_lshr_b32 s80, s71, 16
-; VI-NEXT:    s_lshr_b32 s83, s82, 16
-; VI-NEXT:    s_lshr_b32 s87, s85, 16
-; VI-NEXT:    s_lshr_b32 s11, s7, 16
+; VI-NEXT:    s_lshr_b32 s88, s89, 16
+; VI-NEXT:    s_lshr_b32 s30, vcc_lo, 16
+; VI-NEXT:    s_lshr_b32 s35, s31, 16
+; VI-NEXT:    s_lshr_b32 s70, s69, 16
+; VI-NEXT:    s_lshr_b32 s81, s80, 16
+; VI-NEXT:    s_lshr_b32 s85, s83, 16
+; VI-NEXT:    s_lshr_b32 s7, s86, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
-; VI-NEXT:    v_writelane_b32 v33, s60, 5
+; VI-NEXT:    v_writelane_b32 v33, s61, 3
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    v_writelane_b32 v33, s59, 6
-; VI-NEXT:    v_writelane_b32 v33, s58, 7
-; VI-NEXT:    s_cbranch_scc0 .LBB35_3
+; VI-NEXT:    v_writelane_b32 v33, s60, 4
+; VI-NEXT:    v_writelane_b32 v33, s59, 5
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s77, 16
+; VI-NEXT:    s_lshl_b32 s5, s73, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s73, 16
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s15, 16
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s75, 16
+; VI-NEXT:    s_lshl_b32 s41, s15, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s13, 16
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s9, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
-; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_lshl_b32 s5, s77, 16
 ; VI-NEXT:    s_or_b32 s48, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s56, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s7
-; VI-NEXT:    s_lshl_b32 s5, s11, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s86
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s85
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s83
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s82
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s80
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s35
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s31
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s30
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_lo
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s89
-; VI-NEXT:    s_lshl_b32 s5, s64, 16
-; VI-NEXT:    s_mov_b32 s91, s56
+; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_mov_b32 s90, s56
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s78
 ; VI-NEXT:    s_lshl_b32 s5, s57, 16
-; VI-NEXT:    s_mov_b32 s79, s88
-; VI-NEXT:    s_mov_b32 s88, s57
+; VI-NEXT:    s_mov_b32 s91, s77
+; VI-NEXT:    s_mov_b32 s77, s57
 ; VI-NEXT:    s_or_b32 s57, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s76
 ; VI-NEXT:    s_lshl_b32 s5, s58, 16
+; VI-NEXT:    s_mov_b32 s79, s88
+; VI-NEXT:    s_mov_b32 s88, s58
 ; VI-NEXT:    s_or_b32 s58, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s74
 ; VI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -24887,152 +25368,158 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; VI-NEXT:    s_lshl_b32 s5, s63, 16
 ; VI-NEXT:    s_or_b32 s63, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s8
-; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
-; VI-NEXT:    s_mov_b32 s90, s64
+; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s64, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
-; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
+; VI-NEXT:    s_lshl_b32 s5, s65, 16
+; VI-NEXT:    s_mov_b32 s75, s65
 ; VI-NEXT:    s_or_b32 s65, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB35_4
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b32 s79, s88
+; VI-NEXT:    s_mov_b32 s91, s77
+; VI-NEXT:    s_mov_b32 s90, s56
+; VI-NEXT:    s_mov_b32 s77, s57
+; VI-NEXT:    s_mov_b32 s88, s58
+; VI-NEXT:    s_mov_b32 s75, s65
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v29, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s77
-; VI-NEXT:    v_mov_b32_e32 v2, s75
+; VI-NEXT:    v_mov_b32_e32 v0, s73
+; VI-NEXT:    v_mov_b32_e32 v2, s15
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v29
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v29
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s73
+; VI-NEXT:    v_mov_b32_e32 v2, s13
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v29
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s15
+; VI-NEXT:    v_mov_b32_e32 v3, s11
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v29
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s13
+; VI-NEXT:    v_mov_b32_e32 v4, s9
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v29
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s9
+; VI-NEXT:    v_mov_b32_e32 v5, s87
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v29
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s86
+; VI-NEXT:    v_mov_b32_e32 v6, s84
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v29
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s84
+; VI-NEXT:    v_mov_b32_e32 v7, s82
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v29
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s81
+; VI-NEXT:    v_mov_b32_e32 v8, s71
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v29
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
-; VI-NEXT:    v_mov_b32_e32 v9, s70
+; VI-NEXT:    v_mov_b32_e32 v9, s68
 ; VI-NEXT:    v_add_f16_sdwa v9, v9, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v10, s25, v29
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
-; VI-NEXT:    v_mov_b32_e32 v10, s68
+; VI-NEXT:    v_mov_b32_e32 v10, s34
 ; VI-NEXT:    v_add_f16_sdwa v10, v10, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v11, s26, v29
 ; VI-NEXT:    v_or_b32_e32 v10, v11, v10
-; VI-NEXT:    v_mov_b32_e32 v11, s31
+; VI-NEXT:    v_mov_b32_e32 v11, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v11, v11, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v12, s27, v29
 ; VI-NEXT:    v_or_b32_e32 v11, v12, v11
-; VI-NEXT:    v_mov_b32_e32 v12, s79
+; VI-NEXT:    v_mov_b32_e32 v12, s91
 ; VI-NEXT:    v_add_f16_sdwa v12, v12, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v13, s28, v29
 ; VI-NEXT:    v_or_b32_e32 v12, v13, v12
-; VI-NEXT:    v_mov_b32_e32 v13, s91
+; VI-NEXT:    v_mov_b32_e32 v13, s90
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v29
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s11
+; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s7, v29
+; VI-NEXT:    v_add_f16_e32 v15, s86, v29
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s87
+; VI-NEXT:    v_mov_b32_e32 v15, s85
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v16, s85, v29
+; VI-NEXT:    v_add_f16_e32 v16, s83, v29
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
-; VI-NEXT:    v_mov_b32_e32 v16, s83
+; VI-NEXT:    v_mov_b32_e32 v16, s81
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v17, s82, v29
+; VI-NEXT:    v_add_f16_e32 v17, s80, v29
 ; VI-NEXT:    v_or_b32_e32 v16, v17, v16
-; VI-NEXT:    v_mov_b32_e32 v17, s80
+; VI-NEXT:    v_mov_b32_e32 v17, s70
 ; VI-NEXT:    v_add_f16_sdwa v17, v17, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v18, s71, v29
+; VI-NEXT:    v_add_f16_e32 v18, s69, v29
 ; VI-NEXT:    v_or_b32_e32 v17, v18, v17
-; VI-NEXT:    v_mov_b32_e32 v18, s69
+; VI-NEXT:    v_mov_b32_e32 v18, s35
 ; VI-NEXT:    v_add_f16_sdwa v18, v18, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v19, s35, v29
+; VI-NEXT:    v_add_f16_e32 v19, s31, v29
 ; VI-NEXT:    v_or_b32_e32 v18, v19, v18
-; VI-NEXT:    v_mov_b32_e32 v19, s34
+; VI-NEXT:    v_mov_b32_e32 v19, s30
 ; VI-NEXT:    v_add_f16_sdwa v19, v19, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v20, s30, v29
+; VI-NEXT:    v_add_f16_e32 v20, vcc_lo, v29
 ; VI-NEXT:    v_or_b32_e32 v19, v20, v19
-; VI-NEXT:    v_mov_b32_e32 v20, s90
+; VI-NEXT:    v_mov_b32_e32 v20, s79
 ; VI-NEXT:    v_add_f16_sdwa v20, v20, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v21, s89, v29
 ; VI-NEXT:    v_or_b32_e32 v20, v21, v20
-; VI-NEXT:    v_mov_b32_e32 v21, s88
+; VI-NEXT:    v_mov_b32_e32 v21, s77
 ; VI-NEXT:    v_add_f16_sdwa v21, v21, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v22, s78, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 7
 ; VI-NEXT:    v_or_b32_e32 v21, v22, v21
-; VI-NEXT:    v_mov_b32_e32 v22, s4
+; VI-NEXT:    v_mov_b32_e32 v22, s88
 ; VI-NEXT:    v_add_f16_sdwa v22, v22, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v23, s76, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 6
+; VI-NEXT:    v_readlane_b32 s4, v33, 5
 ; VI-NEXT:    v_or_b32_e32 v22, v23, v22
 ; VI-NEXT:    v_mov_b32_e32 v23, s4
 ; VI-NEXT:    v_add_f16_sdwa v23, v23, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v24, s74, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 5
+; VI-NEXT:    v_readlane_b32 s4, v33, 4
 ; VI-NEXT:    v_or_b32_e32 v23, v24, v23
 ; VI-NEXT:    v_mov_b32_e32 v24, s4
 ; VI-NEXT:    v_add_f16_sdwa v24, v24, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v25, s72, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 4
+; VI-NEXT:    v_readlane_b32 s4, v33, 3
 ; VI-NEXT:    v_or_b32_e32 v24, v25, v24
 ; VI-NEXT:    v_mov_b32_e32 v25, s4
 ; VI-NEXT:    v_add_f16_sdwa v25, v25, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v26, s14, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 3
+; VI-NEXT:    v_readlane_b32 s4, v33, 2
 ; VI-NEXT:    v_or_b32_e32 v25, v26, v25
 ; VI-NEXT:    v_mov_b32_e32 v26, s4
 ; VI-NEXT:    v_add_f16_sdwa v26, v26, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v27, s12, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 2
+; VI-NEXT:    v_readlane_b32 s4, v33, 1
 ; VI-NEXT:    v_or_b32_e32 v26, v27, v26
 ; VI-NEXT:    v_mov_b32_e32 v27, s4
 ; VI-NEXT:    v_add_f16_sdwa v27, v27, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v28, s10, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 1
+; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v27, v28, v27
 ; VI-NEXT:    v_mov_b32_e32 v28, s4
 ; VI-NEXT:    v_add_f16_sdwa v28, v28, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v30, s8, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v28, v30, v28
-; VI-NEXT:    v_mov_b32_e32 v30, s4
+; VI-NEXT:    v_mov_b32_e32 v30, s75
 ; VI-NEXT:    v_add_f16_sdwa v30, v30, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v29, s6, v29
 ; VI-NEXT:    v_or_b32_e32 v29, v29, v30
-; VI-NEXT:    s_branch .LBB35_5
-; VI-NEXT:  .LBB35_3:
-; VI-NEXT:    s_mov_b32 s90, s64
-; VI-NEXT:    s_mov_b32 s79, s88
-; VI-NEXT:    s_mov_b32 s91, s56
-; VI-NEXT:    s_mov_b32 s88, s57
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB35_2
-; VI-NEXT:  .LBB35_4:
+; VI-NEXT:    s_branch .LBB35_6
+; VI-NEXT:  .LBB35_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -25065,7 +25552,7 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB35_5: ; %end
+; VI-NEXT:  .LBB35_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 30
 ; VI-NEXT:    v_readlane_b32 s31, v32, 31
 ; VI-NEXT:    v_readlane_b32 s87, v32, 29
@@ -25203,10 +25690,18 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s76
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s64, s74, s75
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s65, s72, s73
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v29, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v29 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v29 op_sel_hi:[1,0]
@@ -25238,10 +25733,8 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; GFX9-NEXT:    v_pk_add_f16 v27, s63, v29 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v28, s64, v29 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v29, s65, v29 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB35_5
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:    s_branch .LBB35_6
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -25274,7 +25767,7 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB35_5: ; %end
+; GFX9-NEXT:  .LBB35_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
 ; GFX9-NEXT:    v_readlane_b32 s64, v32, 12
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
@@ -25373,11 +25866,16 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s28, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s29, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -25409,8 +25907,6 @@ define inreg <30 x float> @bitcast_v60f16_to_v30f32_scalar(<60 x half> inreg %a,
 ; GFX11-NEXT:    v_pk_add_f16 v28, 0x200, s28 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v29, 0x200, s29 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -25666,10 +26162,18 @@ define inreg <15 x double> @bitcast_v15i64_to_v15f64_scalar(<15 x i64> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s44, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s45, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_4
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB37_3
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s16, s16, 3
 ; SI-NEXT:    s_addc_u32 s17, s17, 0
 ; SI-NEXT:    s_add_u32 s18, s18, 3
@@ -25700,7 +26204,7 @@ define inreg <15 x double> @bitcast_v15i64_to_v15f64_scalar(<15 x i64> inreg %a,
 ; SI-NEXT:    s_addc_u32 s8, s8, 0
 ; SI-NEXT:    s_add_u32 s7, s7, 3
 ; SI-NEXT:    s_addc_u32 s6, s6, 0
-; SI-NEXT:  .LBB37_3: ; %end
+; SI-NEXT:  .LBB37_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -25732,8 +26236,6 @@ define inreg <15 x double> @bitcast_v15i64_to_v15f64_scalar(<15 x i64> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v28, s7
 ; SI-NEXT:    v_mov_b32_e32 v29, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB37_4:
-; SI-NEXT:    s_branch .LBB37_2
 ;
 ; VI-LABEL: bitcast_v15i64_to_v15f64_scalar:
 ; VI:       ; %bb.0:
@@ -25756,10 +26258,18 @@ define inreg <15 x double> @bitcast_v15i64_to_v15f64_scalar(<15 x i64> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s45, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_4
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB37_3
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s16, s16, 3
 ; VI-NEXT:    s_addc_u32 s17, s17, 0
 ; VI-NEXT:    s_add_u32 s18, s18, 3
@@ -25790,7 +26300,7 @@ define inreg <15 x double> @bitcast_v15i64_to_v15f64_scalar(<15 x i64> inreg %a,
 ; VI-NEXT:    s_addc_u32 s8, s8, 0
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
-; VI-NEXT:  .LBB37_3: ; %end
+; VI-NEXT:  .LBB37_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -25822,8 +26332,6 @@ define inreg <15 x double> @bitcast_v15i64_to_v15f64_scalar(<15 x i64> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v28, s7
 ; VI-NEXT:    v_mov_b32_e32 v29, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_4:
-; VI-NEXT:    s_branch .LBB37_2
 ;
 ; GFX9-LABEL: bitcast_v15i64_to_v15f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -25846,10 +26354,18 @@ define inreg <15 x double> @bitcast_v15i64_to_v15f64_scalar(<15 x i64> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s45, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_3
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s16, s16, 3
 ; GFX9-NEXT:    s_addc_u32 s17, s17, 0
 ; GFX9-NEXT:    s_add_u32 s18, s18, 3
@@ -25880,7 +26396,7 @@ define inreg <15 x double> @bitcast_v15i64_to_v15f64_scalar(<15 x i64> inreg %a,
 ; GFX9-NEXT:    s_addc_u32 s8, s8, 0
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
-; GFX9-NEXT:  .LBB37_3: ; %end
+; GFX9-NEXT:  .LBB37_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -25912,8 +26428,6 @@ define inreg <15 x double> @bitcast_v15i64_to_v15f64_scalar(<15 x i64> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_4:
-; GFX9-NEXT:    s_branch .LBB37_2
 ;
 ; GFX11-LABEL: bitcast_v15i64_to_v15f64_scalar:
 ; GFX11:       ; %bb.0:
@@ -25933,11 +26447,16 @@ define inreg <15 x double> @bitcast_v15i64_to_v15f64_scalar(<15 x i64> inreg %a,
 ; GFX11-NEXT:    v_readfirstlane_b32 s15, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s40, 0
 ; GFX11-NEXT:    s_mov_b32 s40, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_3
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB37_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s0, s0, 3
 ; GFX11-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX11-NEXT:    s_add_u32 s2, s2, 3
@@ -25968,7 +26487,7 @@ define inreg <15 x double> @bitcast_v15i64_to_v15f64_scalar(<15 x i64> inreg %a,
 ; GFX11-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
-; GFX11-NEXT:  .LBB37_3: ; %end
+; GFX11-NEXT:  .LBB37_4: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -25985,8 +26504,6 @@ define inreg <15 x double> @bitcast_v15i64_to_v15f64_scalar(<15 x i64> inreg %a,
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s7 :: v_dual_mov_b32 v27, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s5 :: v_dual_mov_b32 v29, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_4:
-; GFX11-NEXT:    s_branch .LBB37_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -26188,10 +26705,18 @@ define inreg <15 x i64> @bitcast_v15f64_to_v15i64_scalar(<15 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s51, v1
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
 ; SI-NEXT:    v_readfirstlane_b32 s50, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB39_3
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB39_4
-; SI-NEXT:  .LBB39_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; SI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; SI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -26207,10 +26732,8 @@ define inreg <15 x i64> @bitcast_v15f64_to_v15i64_scalar(<15 x double> inreg %a,
 ; SI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; SI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; SI-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
-; SI-NEXT:    s_branch .LBB39_5
-; SI-NEXT:  .LBB39_3:
-; SI-NEXT:    s_branch .LBB39_2
-; SI-NEXT:  .LBB39_4:
+; SI-NEXT:    s_branch .LBB39_6
+; SI-NEXT:  .LBB39_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -26243,7 +26766,7 @@ define inreg <15 x i64> @bitcast_v15f64_to_v15i64_scalar(<15 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB39_5: ; %end
+; SI-NEXT:  .LBB39_6: ; %end
 ; SI-NEXT:    v_readlane_b32 s65, v32, 13
 ; SI-NEXT:    v_readlane_b32 s64, v32, 12
 ; SI-NEXT:    v_readlane_b32 s55, v32, 11
@@ -26316,10 +26839,18 @@ define inreg <15 x i64> @bitcast_v15f64_to_v15i64_scalar(<15 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s51, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s50, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_3
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB39_4
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; VI-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; VI-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -26335,10 +26866,8 @@ define inreg <15 x i64> @bitcast_v15f64_to_v15i64_scalar(<15 x double> inreg %a,
 ; VI-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; VI-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; VI-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
-; VI-NEXT:    s_branch .LBB39_5
-; VI-NEXT:  .LBB39_3:
-; VI-NEXT:    s_branch .LBB39_2
-; VI-NEXT:  .LBB39_4:
+; VI-NEXT:    s_branch .LBB39_6
+; VI-NEXT:  .LBB39_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -26371,7 +26900,7 @@ define inreg <15 x i64> @bitcast_v15f64_to_v15i64_scalar(<15 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB39_5: ; %end
+; VI-NEXT:  .LBB39_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s65, v32, 13
 ; VI-NEXT:    v_readlane_b32 s64, v32, 12
 ; VI-NEXT:    v_readlane_b32 s55, v32, 11
@@ -26444,10 +26973,18 @@ define inreg <15 x i64> @bitcast_v15f64_to_v15i64_scalar(<15 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s51, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s50, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_4
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX9-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX9-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -26463,10 +27000,8 @@ define inreg <15 x i64> @bitcast_v15f64_to_v15i64_scalar(<15 x double> inreg %a,
 ; GFX9-NEXT:    v_add_f64 v[24:25], s[60:61], 1.0
 ; GFX9-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; GFX9-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
-; GFX9-NEXT:    s_branch .LBB39_5
-; GFX9-NEXT:  .LBB39_3:
-; GFX9-NEXT:    s_branch .LBB39_2
-; GFX9-NEXT:  .LBB39_4:
+; GFX9-NEXT:    s_branch .LBB39_6
+; GFX9-NEXT:  .LBB39_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -26499,7 +27034,7 @@ define inreg <15 x i64> @bitcast_v15f64_to_v15i64_scalar(<15 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB39_5: ; %end
+; GFX9-NEXT:  .LBB39_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
 ; GFX9-NEXT:    v_readlane_b32 s64, v32, 12
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
@@ -26573,11 +27108,16 @@ define inreg <15 x i64> @bitcast_v15f64_to_v15i64_scalar(<15 x double> inreg %a,
 ; GFX11-NEXT:    s_mov_b32 s37, s1
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB39_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s0, -1
+; GFX11-NEXT:  .LBB39_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB39_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f64 v[0:1], s[36:37], 1.0
 ; GFX11-NEXT:    v_add_f64 v[2:3], s[38:39], 1.0
 ; GFX11-NEXT:    v_add_f64 v[4:5], s[40:41], 1.0
@@ -26594,8 +27134,6 @@ define inreg <15 x i64> @bitcast_v15f64_to_v15i64_scalar(<15 x double> inreg %a,
 ; GFX11-NEXT:    v_add_f64 v[26:27], s[62:63], 1.0
 ; GFX11-NEXT:    v_add_f64 v[28:29], s[64:65], 1.0
 ; GFX11-NEXT:    s_branch .LBB39_5
-; GFX11-NEXT:  .LBB39_3:
-; GFX11-NEXT:    s_branch .LBB39_2
 ; GFX11-NEXT:  .LBB39_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s36 :: v_dual_mov_b32 v1, s37
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s38 :: v_dual_mov_b32 v3, s39
@@ -27617,7 +28155,7 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s43, v1
 ; SI-NEXT:    s_cmp_lg_u32 s42, 0
 ; SI-NEXT:    v_readfirstlane_b32 s42, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_4
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s34, s5, 16
 ; SI-NEXT:    s_lshr_b32 s35, s7, 16
@@ -27648,9 +28186,47 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB41_3
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 16
+; SI-NEXT:    s_mov_b64 s[30:31], 0
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[30:31], -1
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[30:31], s[30:31], exec
+; SI-NEXT:    s_cselect_b32 s45, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s45, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -27710,9 +28286,9 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
-; SI-NEXT:  .LBB41_3: ; %end
-; SI-NEXT:    s_lshl_b32 s45, s30, 16
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 16
+; SI-NEXT:  .LBB41_5: ; %end
+; SI-NEXT:    s_lshl_b32 s45, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s45
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
@@ -27854,38 +28430,6 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB41_4:
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    s_branch .LBB41_2
 ;
 ; VI-LABEL: bitcast_v15i64_to_v60i16_scalar:
 ; VI:       ; %bb.0:
@@ -27897,10 +28441,8 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; VI-NEXT:    v_writelane_b32 v30, s35, 1
 ; VI-NEXT:    v_writelane_b32 v30, s36, 2
 ; VI-NEXT:    v_writelane_b32 v30, s37, 3
-; VI-NEXT:    v_writelane_b32 v30, s38, 4
-; VI-NEXT:    v_writelane_b32 v30, s39, 5
-; VI-NEXT:    v_writelane_b32 v30, s30, 6
-; VI-NEXT:    v_writelane_b32 v30, s31, 7
+; VI-NEXT:    v_writelane_b32 v30, s30, 4
+; VI-NEXT:    v_writelane_b32 v30, s31, 5
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
 ; VI-NEXT:    v_readfirstlane_b32 s6, v15
 ; VI-NEXT:    v_readfirstlane_b32 s7, v14
@@ -27919,7 +28461,7 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s45, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_4
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s46, s6, 16
 ; VI-NEXT:    s_lshr_b32 s47, s7, 16
@@ -27943,16 +28485,54 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s26, 16
 ; VI-NEXT:    s_lshr_b32 s90, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s36, s19, 16
-; VI-NEXT:    s_lshr_b32 s37, s18, 16
-; VI-NEXT:    s_lshr_b32 s38, s17, 16
-; VI-NEXT:    s_lshr_b32 s39, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB41_3
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s36, s17, 16
+; VI-NEXT:    s_lshr_b32 s37, s16, 16
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr37
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr35
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -28005,38 +28585,38 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s89, s26, 16
 ; VI-NEXT:    s_lshr_b32 s90, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s36, s19, 16
-; VI-NEXT:    s_lshr_b32 s37, s18, 16
-; VI-NEXT:    s_lshr_b32 s38, s17, 16
-; VI-NEXT:    s_lshr_b32 s39, s16, 16
-; VI-NEXT:  .LBB41_3: ; %end
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s36, s17, 16
+; VI-NEXT:    s_lshr_b32 s37, s16, 16
+; VI-NEXT:  .LBB41_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s39, 16
+; VI-NEXT:    s_lshl_b32 s5, s37, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_and_b32 s5, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s16, s38, 16
+; VI-NEXT:    s_lshl_b32 s16, s36, 16
 ; VI-NEXT:    s_or_b32 s5, s5, s16
 ; VI-NEXT:    s_and_b32 s16, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s17, s37, 16
+; VI-NEXT:    s_lshl_b32 s17, s35, 16
 ; VI-NEXT:    s_or_b32 s16, s16, s17
 ; VI-NEXT:    s_and_b32 s17, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s18, s36, 16
+; VI-NEXT:    s_lshl_b32 s18, s34, 16
 ; VI-NEXT:    s_or_b32 s17, s17, s18
 ; VI-NEXT:    s_and_b32 s18, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s19, s35, 16
+; VI-NEXT:    s_lshl_b32 s19, s31, 16
 ; VI-NEXT:    s_or_b32 s18, s18, s19
 ; VI-NEXT:    s_and_b32 s19, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s20, s34, 16
+; VI-NEXT:    s_lshl_b32 s20, s30, 16
 ; VI-NEXT:    s_or_b32 s19, s19, s20
 ; VI-NEXT:    s_and_b32 s20, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s21, s31, 16
+; VI-NEXT:    s_lshl_b32 s21, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s20, s20, s21
 ; VI-NEXT:    s_and_b32 s21, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s22, s30, 16
+; VI-NEXT:    s_lshl_b32 s22, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s21, s21, s22
 ; VI-NEXT:    s_and_b32 s22, 0xffff, s24
 ; VI-NEXT:    s_lshl_b32 s23, s91, 16
@@ -28104,7 +28684,7 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; VI-NEXT:    s_and_b32 s6, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s44, s46, 16
 ; VI-NEXT:    s_or_b32 s6, s6, s44
-; VI-NEXT:    v_readlane_b32 s30, v30, 6
+; VI-NEXT:    v_readlane_b32 s30, v30, 4
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    v_mov_b32_e32 v1, s5
 ; VI-NEXT:    v_mov_b32_e32 v2, s16
@@ -28135,9 +28715,7 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v27, s8
 ; VI-NEXT:    v_mov_b32_e32 v28, s7
 ; VI-NEXT:    v_mov_b32_e32 v29, s6
-; VI-NEXT:    v_readlane_b32 s31, v30, 7
-; VI-NEXT:    v_readlane_b32 s39, v30, 5
-; VI-NEXT:    v_readlane_b32 s38, v30, 4
+; VI-NEXT:    v_readlane_b32 s31, v30, 5
 ; VI-NEXT:    v_readlane_b32 s37, v30, 3
 ; VI-NEXT:    v_readlane_b32 s36, v30, 2
 ; VI-NEXT:    v_readlane_b32 s35, v30, 1
@@ -28147,38 +28725,6 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_4:
-; VI-NEXT:    ; implicit-def: $sgpr39
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr37
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    s_branch .LBB41_2
 ;
 ; GFX9-LABEL: bitcast_v15i64_to_v60i16_scalar:
 ; GFX9:       ; %bb.0:
@@ -28186,10 +28732,8 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; GFX9-NEXT:    buffer_store_dword v30, off, s[0:3], s32 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
-; GFX9-NEXT:    v_writelane_b32 v30, s34, 0
-; GFX9-NEXT:    v_writelane_b32 v30, s35, 1
-; GFX9-NEXT:    v_writelane_b32 v30, s30, 2
-; GFX9-NEXT:    v_writelane_b32 v30, s31, 3
+; GFX9-NEXT:    v_writelane_b32 v30, s30, 0
+; GFX9-NEXT:    v_writelane_b32 v30, s31, 1
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v16
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v15
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v14
@@ -28208,7 +28752,7 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s45, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s46, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s47, s7, 16
@@ -28236,12 +28780,50 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s93, s22, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s21, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s31, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s34, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_3
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s30, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s31, s16, 16
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr31
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_hi
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -28298,15 +28880,15 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s93, s22, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s21, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s31, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s34, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s16, 16
-; GFX9-NEXT:  .LBB41_3: ; %end
-; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s35
-; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s34
-; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s31
-; GFX9-NEXT:    s_pack_ll_b32_b16 s17, s19, s30
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s30, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s31, s16, 16
+; GFX9-NEXT:  .LBB41_5: ; %end
+; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s31
+; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s30
+; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, vcc_hi
+; GFX9-NEXT:    s_pack_ll_b32_b16 s17, s19, vcc_lo
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s18, s20, s95
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s19, s21, s94
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s20, s22, s93
@@ -28333,7 +28915,7 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s8, s56
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s7, s7, s47
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s6, s6, s46
-; GFX9-NEXT:    v_readlane_b32 s30, v30, 2
+; GFX9-NEXT:    v_readlane_b32 s30, v30, 0
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s16
@@ -28364,46 +28946,12 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s6
-; GFX9-NEXT:    v_readlane_b32 s31, v30, 3
-; GFX9-NEXT:    v_readlane_b32 s35, v30, 1
-; GFX9-NEXT:    v_readlane_b32 s34, v30, 0
+; GFX9-NEXT:    v_readlane_b32 s31, v30, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; GFX9-NEXT:    buffer_load_dword v30, off, s[0:3], s32 ; 4-byte Folded Reload
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr35
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr31
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    s_branch .LBB41_2
 ;
 ; GFX11-LABEL: bitcast_v15i64_to_v60i16_scalar:
 ; GFX11:       ; %bb.0:
@@ -28423,7 +28971,7 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_readfirstlane_b32 s15, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s40, 0
 ; GFX11-NEXT:    s_mov_b32 s94, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s40, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s41, s5, 16
@@ -28455,9 +29003,46 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s91, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s92, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s93, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s94
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_3
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB41_3
+; GFX11-NEXT:  .LBB41_2:
+; GFX11-NEXT:    s_mov_b32 s94, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr93
+; GFX11-NEXT:    ; implicit-def: $sgpr92
+; GFX11-NEXT:    ; implicit-def: $sgpr91
+; GFX11-NEXT:    ; implicit-def: $sgpr90
+; GFX11-NEXT:    ; implicit-def: $sgpr89
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr79
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:  .LBB41_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s94, s94, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s94, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s94, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -28518,7 +29103,7 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; GFX11-NEXT:    s_lshr_b32 s91, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s92, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s93, s0, 16
-; GFX11-NEXT:  .LBB41_3: ; %end
+; GFX11-NEXT:  .LBB41_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s93
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s92
@@ -28566,38 +29151,6 @@ define inreg <60 x i16> @bitcast_v15i64_to_v60i16_scalar(<15 x i64> inreg %a, i3
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s7 :: v_dual_mov_b32 v27, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s5 :: v_dual_mov_b32 v29, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr93
-; GFX11-NEXT:    ; implicit-def: $sgpr92
-; GFX11-NEXT:    ; implicit-def: $sgpr91
-; GFX11-NEXT:    ; implicit-def: $sgpr90
-; GFX11-NEXT:    ; implicit-def: $sgpr89
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr79
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    s_branch .LBB41_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -30000,10 +30553,8 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    v_writelane_b32 v30, s87, 29
 ; SI-NEXT:    v_writelane_b32 v30, s96, 30
 ; SI-NEXT:    v_writelane_b32 v30, s97, 31
-; SI-NEXT:    v_writelane_b32 v30, s98, 32
-; SI-NEXT:    v_writelane_b32 v30, s99, 33
-; SI-NEXT:    v_writelane_b32 v30, s30, 34
-; SI-NEXT:    v_writelane_b32 v30, s31, 35
+; SI-NEXT:    v_writelane_b32 v30, s30, 32
+; SI-NEXT:    v_writelane_b32 v30, s31, 33
 ; SI-NEXT:    v_readfirstlane_b32 s7, v15
 ; SI-NEXT:    v_readfirstlane_b32 s9, v14
 ; SI-NEXT:    v_readfirstlane_b32 s11, v13
@@ -30015,25 +30566,25 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    v_readfirstlane_b32 s79, v7
 ; SI-NEXT:    v_readfirstlane_b32 s89, v6
 ; SI-NEXT:    v_readfirstlane_b32 s93, v5
-; SI-NEXT:    v_readfirstlane_b32 s30, v4
-; SI-NEXT:    v_readfirstlane_b32 s35, v3
-; SI-NEXT:    v_readfirstlane_b32 s70, v2
-; SI-NEXT:    v_readfirstlane_b32 s81, v1
-; SI-NEXT:    v_readfirstlane_b32 s84, v0
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v4
+; SI-NEXT:    v_readfirstlane_b32 s31, v3
+; SI-NEXT:    v_readfirstlane_b32 s68, v2
+; SI-NEXT:    v_readfirstlane_b32 s71, v1
+; SI-NEXT:    v_readfirstlane_b32 s82, v0
 ; SI-NEXT:    s_lshr_b32 s90, s29, 16
 ; SI-NEXT:    s_lshr_b32 s92, s28, 16
 ; SI-NEXT:    s_lshr_b32 s94, s27, 16
-; SI-NEXT:    s_lshr_b32 s31, s26, 16
-; SI-NEXT:    s_lshr_b32 s68, s25, 16
-; SI-NEXT:    s_lshr_b32 s71, s24, 16
-; SI-NEXT:    s_lshr_b32 s82, s23, 16
-; SI-NEXT:    s_lshr_b32 s85, s22, 16
-; SI-NEXT:    s_lshr_b32 s86, s21, 16
-; SI-NEXT:    s_lshr_b32 s87, s20, 16
-; SI-NEXT:    s_lshr_b32 s96, s19, 16
-; SI-NEXT:    s_lshr_b32 s97, s18, 16
-; SI-NEXT:    s_lshr_b32 s98, s17, 16
-; SI-NEXT:    s_lshr_b32 s99, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s26, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s69, s24, 16
+; SI-NEXT:    s_lshr_b32 s80, s23, 16
+; SI-NEXT:    s_lshr_b32 s83, s22, 16
+; SI-NEXT:    s_lshr_b32 s84, s21, 16
+; SI-NEXT:    s_lshr_b32 s85, s20, 16
+; SI-NEXT:    s_lshr_b32 s86, s19, 16
+; SI-NEXT:    s_lshr_b32 s87, s18, 16
+; SI-NEXT:    s_lshr_b32 s96, s17, 16
+; SI-NEXT:    s_lshr_b32 s97, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -30045,47 +30596,47 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s78, s79, 16
 ; SI-NEXT:    s_lshr_b32 s88, s89, 16
 ; SI-NEXT:    s_lshr_b32 s91, s93, 16
-; SI-NEXT:    s_lshr_b32 s95, s30, 16
-; SI-NEXT:    s_lshr_b32 s34, s35, 16
-; SI-NEXT:    s_lshr_b32 s69, s70, 16
-; SI-NEXT:    s_lshr_b32 s80, s81, 16
-; SI-NEXT:    s_lshr_b32 s83, s84, 16
+; SI-NEXT:    s_lshr_b32 s95, vcc_lo, 16
+; SI-NEXT:    s_lshr_b32 s30, s31, 16
+; SI-NEXT:    s_lshr_b32 s35, s68, 16
+; SI-NEXT:    s_lshr_b32 s70, s71, 16
+; SI-NEXT:    s_lshr_b32 s81, s82, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v16
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_4
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s98, 16
+; SI-NEXT:    s_lshl_b32 s41, s96, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s94, 16
@@ -30096,19 +30647,19 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s90, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s84, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_and_b32 s4, s82, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s81, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_and_b32 s4, s71, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_and_b32 s4, s68, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s54, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s93, 0xffff
@@ -30144,61 +30695,70 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB43_3
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s46, s4, 0x30000
@@ -30215,29 +30775,29 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s90, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s84, s84, 3
+; SI-NEXT:    s_add_i32 s82, s82, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s84, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_and_b32 s4, s82, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s81, s81, 3
+; SI-NEXT:    s_add_i32 s71, s71, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s81, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_and_b32 s4, s71, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s70, s70, 3
+; SI-NEXT:    s_add_i32 s68, s68, 3
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_and_b32 s4, s68, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s35, s35, 3
+; SI-NEXT:    s_add_i32 s31, s31, 3
 ; SI-NEXT:    s_add_i32 s52, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s30, s30, 3
+; SI-NEXT:    s_add_i32 vcc_lo, vcc_lo, 3
 ; SI-NEXT:    s_add_i32 s53, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s93, s93, 3
@@ -30296,8 +30856,8 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s65, s4, 0x30000
-; SI-NEXT:  .LBB43_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v30, 34
+; SI-NEXT:  .LBB43_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v30, 32
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -30328,9 +30888,7 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v27, s63
 ; SI-NEXT:    v_mov_b32_e32 v28, s64
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
-; SI-NEXT:    v_readlane_b32 s31, v30, 35
-; SI-NEXT:    v_readlane_b32 s99, v30, 33
-; SI-NEXT:    v_readlane_b32 s98, v30, 32
+; SI-NEXT:    v_readlane_b32 s31, v30, 33
 ; SI-NEXT:    v_readlane_b32 s97, v30, 31
 ; SI-NEXT:    v_readlane_b32 s96, v30, 30
 ; SI-NEXT:    v_readlane_b32 s87, v30, 29
@@ -30368,9 +30926,6 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB43_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB43_2
 ;
 ; VI-LABEL: bitcast_v60i16_to_v15i64_scalar:
 ; VI:       ; %bb.0:
@@ -30411,312 +30966,399 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; VI-NEXT:    v_writelane_b32 v30, s87, 29
 ; VI-NEXT:    v_writelane_b32 v30, s30, 30
 ; VI-NEXT:    v_writelane_b32 v30, s31, 31
-; VI-NEXT:    v_readfirstlane_b32 s11, v13
-; VI-NEXT:    s_lshr_b32 s63, s11, 16
-; VI-NEXT:    v_readfirstlane_b32 s13, v12
+; VI-NEXT:    s_lshr_b32 s14, s20, 16
 ; VI-NEXT:    ; implicit-def: $vgpr31 : SGPR spill to VGPR lane
-; VI-NEXT:    s_lshr_b32 s62, s13, 16
-; VI-NEXT:    v_readfirstlane_b32 s15, v11
-; VI-NEXT:    v_writelane_b32 v31, s63, 0
-; VI-NEXT:    s_lshr_b32 s61, s15, 16
-; VI-NEXT:    v_readfirstlane_b32 s73, v10
-; VI-NEXT:    v_writelane_b32 v31, s62, 1
-; VI-NEXT:    v_readfirstlane_b32 s7, v15
-; VI-NEXT:    v_readfirstlane_b32 s9, v14
-; VI-NEXT:    s_lshr_b32 s60, s73, 16
-; VI-NEXT:    v_readfirstlane_b32 s75, v9
+; VI-NEXT:    s_lshr_b32 s42, s19, 16
+; VI-NEXT:    v_writelane_b32 v31, s14, 0
+; VI-NEXT:    s_lshr_b32 s43, s18, 16
+; VI-NEXT:    v_readfirstlane_b32 s6, v15
+; VI-NEXT:    v_readfirstlane_b32 s8, v14
+; VI-NEXT:    v_readfirstlane_b32 s10, v13
+; VI-NEXT:    v_readfirstlane_b32 s12, v12
+; VI-NEXT:    v_readfirstlane_b32 s87, v11
+; VI-NEXT:    v_readfirstlane_b32 s15, v10
+; VI-NEXT:    v_readfirstlane_b32 s72, v9
 ; VI-NEXT:    v_readfirstlane_b32 s77, v8
 ; VI-NEXT:    v_readfirstlane_b32 s79, v7
 ; VI-NEXT:    v_readfirstlane_b32 s89, v6
-; VI-NEXT:    v_readfirstlane_b32 s31, v5
-; VI-NEXT:    v_readfirstlane_b32 s68, v4
-; VI-NEXT:    v_readfirstlane_b32 s71, v3
-; VI-NEXT:    v_readfirstlane_b32 s82, v2
-; VI-NEXT:    v_readfirstlane_b32 s85, v1
-; VI-NEXT:    v_readfirstlane_b32 s6, v0
-; VI-NEXT:    v_writelane_b32 v31, s61, 2
-; VI-NEXT:    s_lshr_b32 s90, s29, 16
-; VI-NEXT:    s_lshr_b32 s30, s28, 16
-; VI-NEXT:    s_lshr_b32 s34, s27, 16
-; VI-NEXT:    s_lshr_b32 s69, s26, 16
-; VI-NEXT:    s_lshr_b32 s80, s25, 16
-; VI-NEXT:    s_lshr_b32 s83, s24, 16
-; VI-NEXT:    s_lshr_b32 s86, s23, 16
-; VI-NEXT:    s_lshr_b32 s8, s22, 16
-; VI-NEXT:    s_lshr_b32 s10, s21, 16
-; VI-NEXT:    s_lshr_b32 s12, s20, 16
-; VI-NEXT:    s_lshr_b32 s14, s19, 16
-; VI-NEXT:    s_lshr_b32 s72, s18, 16
-; VI-NEXT:    s_lshr_b32 s74, s17, 16
-; VI-NEXT:    s_lshr_b32 s76, s16, 16
-; VI-NEXT:    s_lshr_b32 s66, s7, 16
-; VI-NEXT:    s_lshr_b32 s67, s9, 16
-; VI-NEXT:    s_lshr_b32 s59, s75, 16
-; VI-NEXT:    s_lshr_b32 s58, s77, 16
-; VI-NEXT:    s_lshr_b32 s78, s79, 16
-; VI-NEXT:    s_lshr_b32 s88, s89, 16
-; VI-NEXT:    s_lshr_b32 s91, s31, 16
-; VI-NEXT:    s_lshr_b32 s35, s68, 16
-; VI-NEXT:    s_lshr_b32 s70, s71, 16
-; VI-NEXT:    s_lshr_b32 s81, s82, 16
-; VI-NEXT:    s_lshr_b32 s84, s85, 16
-; VI-NEXT:    s_lshr_b32 s87, s6, 16
+; VI-NEXT:    v_readfirstlane_b32 vcc_hi, v5
+; VI-NEXT:    v_readfirstlane_b32 s34, v4
+; VI-NEXT:    v_readfirstlane_b32 s69, v3
+; VI-NEXT:    v_readfirstlane_b32 s80, v2
+; VI-NEXT:    v_readfirstlane_b32 s83, v1
+; VI-NEXT:    v_readfirstlane_b32 s86, v0
+; VI-NEXT:    v_writelane_b32 v31, s42, 1
+; VI-NEXT:    s_lshr_b32 s35, s29, 16
+; VI-NEXT:    s_lshr_b32 s68, s28, 16
+; VI-NEXT:    s_lshr_b32 s70, s27, 16
+; VI-NEXT:    s_lshr_b32 s81, s26, 16
+; VI-NEXT:    s_lshr_b32 s84, s25, 16
+; VI-NEXT:    s_lshr_b32 s7, s24, 16
+; VI-NEXT:    s_lshr_b32 s11, s23, 16
+; VI-NEXT:    s_lshr_b32 s73, s22, 16
+; VI-NEXT:    s_lshr_b32 s75, s21, 16
+; VI-NEXT:    s_lshr_b32 s41, s17, 16
+; VI-NEXT:    s_lshr_b32 s5, s16, 16
+; VI-NEXT:    s_lshr_b32 s66, s6, 16
+; VI-NEXT:    s_lshr_b32 s74, s8, 16
+; VI-NEXT:    s_lshr_b32 s76, s10, 16
+; VI-NEXT:    s_lshr_b32 s78, s12, 16
+; VI-NEXT:    s_lshr_b32 s88, s87, 16
+; VI-NEXT:    s_lshr_b32 s90, s15, 16
+; VI-NEXT:    s_lshr_b32 s91, s72, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s77, 16
+; VI-NEXT:    s_lshr_b32 s30, s79, 16
+; VI-NEXT:    s_lshr_b32 s31, s89, 16
+; VI-NEXT:    s_lshr_b32 s67, vcc_hi, 16
+; VI-NEXT:    s_lshr_b32 s71, s34, 16
+; VI-NEXT:    s_lshr_b32 s82, s69, 16
+; VI-NEXT:    s_lshr_b32 s85, s80, 16
+; VI-NEXT:    s_lshr_b32 s9, s83, 16
+; VI-NEXT:    s_lshr_b32 s13, s86, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
-; VI-NEXT:    v_writelane_b32 v31, s60, 3
+; VI-NEXT:    v_writelane_b32 v31, s43, 2
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    v_writelane_b32 v31, s59, 4
-; VI-NEXT:    v_writelane_b32 v31, s58, 5
-; VI-NEXT:    s_cbranch_scc0 .LBB43_4
+; VI-NEXT:    v_writelane_b32 v31, s41, 3
+; VI-NEXT:    v_writelane_b32 v31, s5, 4
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s76, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s72, 16
+; VI-NEXT:    s_lshl_b32 s5, s43, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s14, 16
+; VI-NEXT:    s_lshl_b32 s5, s42, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s74, 16
+; VI-NEXT:    s_lshl_b32 s41, s41, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s12, 16
+; VI-NEXT:    s_lshl_b32 s5, s14, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s10, 16
+; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s8, 16
+; VI-NEXT:    s_lshl_b32 s5, s73, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s48, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
-; VI-NEXT:    s_lshl_b32 s5, s90, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s6
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s86
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s85
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s83
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s82
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s80
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s68
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s34
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s31
-; VI-NEXT:    s_lshl_b32 s5, s91, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_hi
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s89
-; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s79
-; VI-NEXT:    s_lshl_b32 s5, s78, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s77
-; VI-NEXT:    s_lshl_b32 s5, s58, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s58, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s75
-; VI-NEXT:    s_lshl_b32 s5, s59, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s72
+; VI-NEXT:    s_lshl_b32 s5, s91, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s73
-; VI-NEXT:    s_lshl_b32 s5, s60, 16
-; VI-NEXT:    s_or_b32 s60, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s15
-; VI-NEXT:    s_lshl_b32 s5, s61, 16
+; VI-NEXT:    s_lshl_b32 s5, s90, 16
+; VI-NEXT:    s_or_b32 s60, s4, s5
+; VI-NEXT:    s_and_b32 s4, 0xffff, s87
+; VI-NEXT:    s_lshl_b32 s5, s88, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s13
-; VI-NEXT:    s_lshl_b32 s5, s62, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s12
+; VI-NEXT:    s_lshl_b32 s5, s78, 16
 ; VI-NEXT:    s_or_b32 s62, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s11
-; VI-NEXT:    s_lshl_b32 s5, s63, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s10
+; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s63, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s9
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s8
+; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s64, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s7
+; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s65, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB43_3
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    v_writelane_b32 v31, s26, 5
+; VI-NEXT:    s_mov_b32 s26, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, s27
+; VI-NEXT:    s_mov_b32 s27, s89
+; VI-NEXT:    s_mov_b32 s89, s28
+; VI-NEXT:    s_mov_b32 s28, s79
+; VI-NEXT:    s_mov_b32 s79, s29
+; VI-NEXT:    s_mov_b32 s29, s77
+; VI-NEXT:    s_mov_b32 s77, s13
+; VI-NEXT:    s_mov_b32 s14, s12
+; VI-NEXT:    s_mov_b32 s13, s11
+; VI-NEXT:    s_mov_b32 s12, s10
+; VI-NEXT:    s_mov_b32 s11, s9
+; VI-NEXT:    s_mov_b32 s10, s8
+; VI-NEXT:    s_mov_b32 s9, s7
+; VI-NEXT:    s_mov_b32 s8, s6
+; VI-NEXT:    s_mov_b32 s7, s85
+; VI-NEXT:    s_mov_b32 s85, s82
+; VI-NEXT:    s_mov_b32 s82, s71
+; VI-NEXT:    s_mov_b32 s71, s68
+; VI-NEXT:    s_mov_b32 s68, s35
+; VI-NEXT:    s_mov_b32 s35, s31
+; VI-NEXT:    s_mov_b32 s31, s30
+; VI-NEXT:    s_mov_b32 s30, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, s91
+; VI-NEXT:    s_mov_b32 s91, s90
+; VI-NEXT:    s_mov_b32 s90, s88
+; VI-NEXT:    s_mov_b32 s88, s78
+; VI-NEXT:    s_mov_b32 s78, s76
+; VI-NEXT:    s_mov_b32 s76, s74
+; VI-NEXT:    s_mov_b32 s74, s66
+; VI-NEXT:    s_mov_b32 s6, s75
+; VI-NEXT:    s_mov_b32 s75, s72
+; VI-NEXT:    s_mov_b32 s72, s73
+; VI-NEXT:    s_mov_b32 s73, s15
+; VI-NEXT:    s_mov_b32 s15, s87
+; VI-NEXT:    s_mov_b32 s87, s84
+; VI-NEXT:    s_mov_b32 s84, s81
+; VI-NEXT:    s_mov_b32 s81, s70
+; VI-NEXT:    s_mov_b32 s70, s67
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    s_mov_b32 s67, s70
+; VI-NEXT:    s_mov_b32 s70, s81
+; VI-NEXT:    s_mov_b32 s81, s84
+; VI-NEXT:    s_mov_b32 s84, s87
+; VI-NEXT:    s_mov_b32 s87, s15
+; VI-NEXT:    s_mov_b32 s15, s73
+; VI-NEXT:    s_mov_b32 s73, s72
+; VI-NEXT:    s_mov_b32 s72, s75
+; VI-NEXT:    s_mov_b32 s75, s6
+; VI-NEXT:    s_mov_b32 s66, s74
+; VI-NEXT:    s_mov_b32 s74, s76
+; VI-NEXT:    s_mov_b32 s76, s78
+; VI-NEXT:    s_mov_b32 s78, s88
+; VI-NEXT:    s_mov_b32 s88, s90
+; VI-NEXT:    s_mov_b32 s90, s91
+; VI-NEXT:    s_mov_b32 s91, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, s30
+; VI-NEXT:    s_mov_b32 s30, s31
+; VI-NEXT:    s_mov_b32 s31, s35
+; VI-NEXT:    s_mov_b32 s35, s68
+; VI-NEXT:    s_mov_b32 s68, s71
+; VI-NEXT:    s_mov_b32 s71, s82
+; VI-NEXT:    s_mov_b32 s82, s85
+; VI-NEXT:    s_mov_b32 s85, s7
+; VI-NEXT:    s_mov_b32 s6, s8
+; VI-NEXT:    s_mov_b32 s7, s9
+; VI-NEXT:    s_mov_b32 s8, s10
+; VI-NEXT:    s_mov_b32 s9, s11
+; VI-NEXT:    s_mov_b32 s10, s12
+; VI-NEXT:    s_mov_b32 s11, s13
+; VI-NEXT:    s_mov_b32 s12, s14
+; VI-NEXT:    s_mov_b32 s13, s77
+; VI-NEXT:    s_mov_b32 s77, s29
+; VI-NEXT:    s_mov_b32 s29, s79
+; VI-NEXT:    s_mov_b32 s79, s28
+; VI-NEXT:    s_mov_b32 s28, s89
+; VI-NEXT:    s_mov_b32 s89, s27
+; VI-NEXT:    s_mov_b32 s27, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, s26
+; VI-NEXT:    v_readlane_b32 s26, v31, 5
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 4
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s76, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_add_i32 s17, s17, 3
+; VI-NEXT:    v_readlane_b32 s14, v31, 3
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_and_b32 s5, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s16, s74, 16
-; VI-NEXT:    s_or_b32 s5, s16, s5
+; VI-NEXT:    s_lshl_b32 s14, s14, 16
+; VI-NEXT:    s_or_b32 s5, s14, s5
+; VI-NEXT:    s_add_i32 s37, s5, 0x30000
 ; VI-NEXT:    s_add_i32 s18, s18, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 2
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
-; VI-NEXT:    s_add_i32 s37, s5, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s72, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 1
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s14, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 0
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s12, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s10, 16
+; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s8, 16
+; VI-NEXT:    s_lshl_b32 s5, s73, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s26, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s27, s27, 3
 ; VI-NEXT:    s_add_i32 s46, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s27, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s28, s28, 3
 ; VI-NEXT:    s_add_i32 s47, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s28, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s29, s29, 3
 ; VI-NEXT:    s_add_i32 s48, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s90, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s6, s6, 3
+; VI-NEXT:    s_add_i32 s86, s86, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s6, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_and_b32 s4, s86, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s85, s85, 3
+; VI-NEXT:    s_add_i32 s83, s83, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s85, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_and_b32 s4, s83, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s82, s82, 3
+; VI-NEXT:    s_add_i32 s80, s80, 3
 ; VI-NEXT:    s_add_i32 s51, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s82, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_and_b32 s4, s80, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s71, s71, 3
+; VI-NEXT:    s_add_i32 s69, s69, 3
 ; VI-NEXT:    s_add_i32 s52, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s71, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, s69, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s68, s68, 3
+; VI-NEXT:    s_add_i32 s34, s34, 3
 ; VI-NEXT:    s_add_i32 s53, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s68, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, s34, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s31, s31, 3
+; VI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; VI-NEXT:    s_add_i32 s54, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s31, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s91, 16
+; VI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s89, s89, 3
 ; VI-NEXT:    s_add_i32 s55, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s89, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s79, s79, 3
 ; VI-NEXT:    s_add_i32 s56, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s79, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s78, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s77, s77, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 5
 ; VI-NEXT:    s_add_i32 s57, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s77, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s75, s75, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 4
+; VI-NEXT:    s_add_i32 s75, s72, 3
 ; VI-NEXT:    s_add_i32 s58, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s75, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s91, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s73, s73, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 3
+; VI-NEXT:    s_add_i32 s73, s15, 3
 ; VI-NEXT:    s_add_i32 s59, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s73, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s90, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s15, s15, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 2
+; VI-NEXT:    s_add_i32 s15, s87, 3
 ; VI-NEXT:    s_add_i32 s60, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s15, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s88, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s13, s13, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 1
+; VI-NEXT:    s_add_i32 s13, s12, 3
 ; VI-NEXT:    s_add_i32 s61, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s13, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s78, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s11, s11, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 0
+; VI-NEXT:    s_add_i32 s11, s10, 3
 ; VI-NEXT:    s_add_i32 s62, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s11, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s9, s9, 3
+; VI-NEXT:    s_add_i32 s9, s8, 3
 ; VI-NEXT:    s_add_i32 s63, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s9, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s7, s7, 3
+; VI-NEXT:    s_add_i32 s7, s6, 3
 ; VI-NEXT:    s_add_i32 s64, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s65, s4, 0x30000
-; VI-NEXT:  .LBB43_3: ; %end
+; VI-NEXT:  .LBB43_5: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v30, 30
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
@@ -30785,13 +31427,6 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_4:
-; VI-NEXT:    s_mov_b32 vcc_lo, s66
-; VI-NEXT:    s_mov_b32 vcc_hi, s67
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_mov_b32 s67, vcc_hi
-; VI-NEXT:    s_mov_b32 s66, vcc_lo
-; VI-NEXT:    s_branch .LBB43_2
 ;
 ; GFX9-LABEL: bitcast_v60i16_to_v15i64_scalar:
 ; GFX9:       ; %bb.0:
@@ -30891,10 +31526,18 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s76
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s64, s74, s75
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s65, s72, s73
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -30925,10 +31568,8 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_pk_add_u16 v27, s63, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v28, s64, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v29, s65, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB43_5
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:    s_branch .LBB43_6
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -30961,7 +31602,7 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB43_5: ; %end
+; GFX9-NEXT:  .LBB43_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
 ; GFX9-NEXT:    v_readlane_b32 s64, v32, 12
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
@@ -31060,11 +31701,16 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s28, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s29, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB43_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -31096,8 +31742,6 @@ define inreg <15 x i64> @bitcast_v60i16_to_v15i64_scalar(<60 x i16> inreg %a, i3
 ; GFX11-NEXT:    v_pk_add_u16 v28, s28, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v29, s29, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB43_3:
-; GFX11-NEXT:    s_branch .LBB43_2
 ; GFX11-NEXT:  .LBB43_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -32100,7 +32744,7 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s43, v1
 ; SI-NEXT:    s_cmp_lg_u32 s42, 0
 ; SI-NEXT:    v_readfirstlane_b32 s42, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_4
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s34, s5, 16
 ; SI-NEXT:    s_lshr_b32 s35, s7, 16
@@ -32131,9 +32775,47 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB45_3
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 16
+; SI-NEXT:    s_mov_b64 s[30:31], 0
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[30:31], -1
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[30:31], s[30:31], exec
+; SI-NEXT:    s_cselect_b32 s45, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s45, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_u32 s4, s4, 3
 ; SI-NEXT:    s_addc_u32 s5, s5, 0
 ; SI-NEXT:    s_add_u32 s6, s6, 3
@@ -32193,9 +32875,9 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
-; SI-NEXT:  .LBB45_3: ; %end
-; SI-NEXT:    s_lshl_b32 s45, s30, 16
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 16
+; SI-NEXT:  .LBB45_5: ; %end
+; SI-NEXT:    s_lshl_b32 s45, vcc_lo, 16
 ; SI-NEXT:    s_and_b32 s16, s16, 0xffff
 ; SI-NEXT:    s_or_b32 s16, s16, s45
 ; SI-NEXT:    s_and_b32 s17, s17, 0xffff
@@ -32337,38 +33019,6 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB45_4:
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    s_branch .LBB45_2
 ;
 ; VI-LABEL: bitcast_v15i64_to_v60f16_scalar:
 ; VI:       ; %bb.0:
@@ -32380,10 +33030,8 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; VI-NEXT:    v_writelane_b32 v30, s35, 1
 ; VI-NEXT:    v_writelane_b32 v30, s36, 2
 ; VI-NEXT:    v_writelane_b32 v30, s37, 3
-; VI-NEXT:    v_writelane_b32 v30, s38, 4
-; VI-NEXT:    v_writelane_b32 v30, s39, 5
-; VI-NEXT:    v_writelane_b32 v30, s30, 6
-; VI-NEXT:    v_writelane_b32 v30, s31, 7
+; VI-NEXT:    v_writelane_b32 v30, s30, 4
+; VI-NEXT:    v_writelane_b32 v30, s31, 5
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
 ; VI-NEXT:    v_readfirstlane_b32 s6, v15
 ; VI-NEXT:    v_readfirstlane_b32 s7, v14
@@ -32402,7 +33050,7 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s44, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s45, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_4
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s46, s6, 16
 ; VI-NEXT:    s_lshr_b32 s47, s7, 16
@@ -32426,16 +33074,54 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s89, s26, 16
 ; VI-NEXT:    s_lshr_b32 s90, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s36, s19, 16
-; VI-NEXT:    s_lshr_b32 s37, s18, 16
-; VI-NEXT:    s_lshr_b32 s38, s17, 16
-; VI-NEXT:    s_lshr_b32 s39, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB45_3
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s36, s17, 16
+; VI-NEXT:    s_lshr_b32 s37, s16, 16
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr37
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr35
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_u32 s7, s7, 3
 ; VI-NEXT:    s_addc_u32 s6, s6, 0
 ; VI-NEXT:    s_add_u32 s9, s9, 3
@@ -32488,38 +33174,38 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s89, s26, 16
 ; VI-NEXT:    s_lshr_b32 s90, s25, 16
 ; VI-NEXT:    s_lshr_b32 s91, s24, 16
-; VI-NEXT:    s_lshr_b32 s30, s23, 16
-; VI-NEXT:    s_lshr_b32 s31, s22, 16
-; VI-NEXT:    s_lshr_b32 s34, s21, 16
-; VI-NEXT:    s_lshr_b32 s35, s20, 16
-; VI-NEXT:    s_lshr_b32 s36, s19, 16
-; VI-NEXT:    s_lshr_b32 s37, s18, 16
-; VI-NEXT:    s_lshr_b32 s38, s17, 16
-; VI-NEXT:    s_lshr_b32 s39, s16, 16
-; VI-NEXT:  .LBB45_3: ; %end
+; VI-NEXT:    s_lshr_b32 vcc_lo, s23, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s22, 16
+; VI-NEXT:    s_lshr_b32 s30, s21, 16
+; VI-NEXT:    s_lshr_b32 s31, s20, 16
+; VI-NEXT:    s_lshr_b32 s34, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s36, s17, 16
+; VI-NEXT:    s_lshr_b32 s37, s16, 16
+; VI-NEXT:  .LBB45_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s39, 16
+; VI-NEXT:    s_lshl_b32 s5, s37, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_and_b32 s5, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s16, s38, 16
+; VI-NEXT:    s_lshl_b32 s16, s36, 16
 ; VI-NEXT:    s_or_b32 s5, s5, s16
 ; VI-NEXT:    s_and_b32 s16, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s17, s37, 16
+; VI-NEXT:    s_lshl_b32 s17, s35, 16
 ; VI-NEXT:    s_or_b32 s16, s16, s17
 ; VI-NEXT:    s_and_b32 s17, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s18, s36, 16
+; VI-NEXT:    s_lshl_b32 s18, s34, 16
 ; VI-NEXT:    s_or_b32 s17, s17, s18
 ; VI-NEXT:    s_and_b32 s18, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s19, s35, 16
+; VI-NEXT:    s_lshl_b32 s19, s31, 16
 ; VI-NEXT:    s_or_b32 s18, s18, s19
 ; VI-NEXT:    s_and_b32 s19, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s20, s34, 16
+; VI-NEXT:    s_lshl_b32 s20, s30, 16
 ; VI-NEXT:    s_or_b32 s19, s19, s20
 ; VI-NEXT:    s_and_b32 s20, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s21, s31, 16
+; VI-NEXT:    s_lshl_b32 s21, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s20, s20, s21
 ; VI-NEXT:    s_and_b32 s21, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s22, s30, 16
+; VI-NEXT:    s_lshl_b32 s22, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s21, s21, s22
 ; VI-NEXT:    s_and_b32 s22, 0xffff, s24
 ; VI-NEXT:    s_lshl_b32 s23, s91, 16
@@ -32587,7 +33273,7 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; VI-NEXT:    s_and_b32 s6, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s44, s46, 16
 ; VI-NEXT:    s_or_b32 s6, s6, s44
-; VI-NEXT:    v_readlane_b32 s30, v30, 6
+; VI-NEXT:    v_readlane_b32 s30, v30, 4
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    v_mov_b32_e32 v1, s5
 ; VI-NEXT:    v_mov_b32_e32 v2, s16
@@ -32618,9 +33304,7 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v27, s8
 ; VI-NEXT:    v_mov_b32_e32 v28, s7
 ; VI-NEXT:    v_mov_b32_e32 v29, s6
-; VI-NEXT:    v_readlane_b32 s31, v30, 7
-; VI-NEXT:    v_readlane_b32 s39, v30, 5
-; VI-NEXT:    v_readlane_b32 s38, v30, 4
+; VI-NEXT:    v_readlane_b32 s31, v30, 5
 ; VI-NEXT:    v_readlane_b32 s37, v30, 3
 ; VI-NEXT:    v_readlane_b32 s36, v30, 2
 ; VI-NEXT:    v_readlane_b32 s35, v30, 1
@@ -32630,38 +33314,6 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_4:
-; VI-NEXT:    ; implicit-def: $sgpr39
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr37
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    s_branch .LBB45_2
 ;
 ; GFX9-LABEL: bitcast_v15i64_to_v60f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -32669,10 +33321,8 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; GFX9-NEXT:    buffer_store_dword v30, off, s[0:3], s32 ; 4-byte Folded Spill
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
-; GFX9-NEXT:    v_writelane_b32 v30, s34, 0
-; GFX9-NEXT:    v_writelane_b32 v30, s35, 1
-; GFX9-NEXT:    v_writelane_b32 v30, s30, 2
-; GFX9-NEXT:    v_writelane_b32 v30, s31, 3
+; GFX9-NEXT:    v_writelane_b32 v30, s30, 0
+; GFX9-NEXT:    v_writelane_b32 v30, s31, 1
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v16
 ; GFX9-NEXT:    v_readfirstlane_b32 s6, v15
 ; GFX9-NEXT:    v_readfirstlane_b32 s7, v14
@@ -32691,7 +33341,7 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; GFX9-NEXT:    v_readfirstlane_b32 s44, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s45, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s46, s6, 16
 ; GFX9-NEXT:    s_lshr_b32 s47, s7, 16
@@ -32719,12 +33369,50 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s93, s22, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s21, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s31, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s34, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_3
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s30, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s31, s16, 16
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr31
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $vcc_hi
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_u32 s7, s7, 3
 ; GFX9-NEXT:    s_addc_u32 s6, s6, 0
 ; GFX9-NEXT:    s_add_u32 s9, s9, 3
@@ -32781,15 +33469,15 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s93, s22, 16
 ; GFX9-NEXT:    s_lshr_b32 s94, s21, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s20, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s31, s18, 16
-; GFX9-NEXT:    s_lshr_b32 s34, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s16, 16
-; GFX9-NEXT:  .LBB45_3: ; %end
-; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s35
-; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s34
-; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, s31
-; GFX9-NEXT:    s_pack_ll_b32_b16 s17, s19, s30
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s19, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s30, s17, 16
+; GFX9-NEXT:    s_lshr_b32 s31, s16, 16
+; GFX9-NEXT:  .LBB45_5: ; %end
+; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s16, s31
+; GFX9-NEXT:    s_pack_ll_b32_b16 s5, s17, s30
+; GFX9-NEXT:    s_pack_ll_b32_b16 s16, s18, vcc_hi
+; GFX9-NEXT:    s_pack_ll_b32_b16 s17, s19, vcc_lo
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s18, s20, s95
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s19, s21, s94
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s20, s22, s93
@@ -32816,7 +33504,7 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s8, s56
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s7, s7, s47
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s6, s6, s46
-; GFX9-NEXT:    v_readlane_b32 s30, v30, 2
+; GFX9-NEXT:    v_readlane_b32 s30, v30, 0
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s5
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s16
@@ -32847,46 +33535,12 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s6
-; GFX9-NEXT:    v_readlane_b32 s31, v30, 3
-; GFX9-NEXT:    v_readlane_b32 s35, v30, 1
-; GFX9-NEXT:    v_readlane_b32 s34, v30, 0
+; GFX9-NEXT:    v_readlane_b32 s31, v30, 1
 ; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1
 ; GFX9-NEXT:    buffer_load_dword v30, off, s[0:3], s32 ; 4-byte Folded Reload
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr35
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr31
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    s_branch .LBB45_2
 ;
 ; GFX11-LABEL: bitcast_v15i64_to_v60f16_scalar:
 ; GFX11:       ; %bb.0:
@@ -32906,7 +33560,7 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; GFX11-NEXT:    v_readfirstlane_b32 s15, v0
 ; GFX11-NEXT:    s_cmp_lg_u32 s40, 0
 ; GFX11-NEXT:    s_mov_b32 s94, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s40, s4, 16
 ; GFX11-NEXT:    s_lshr_b32 s41, s5, 16
@@ -32938,9 +33592,46 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s91, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s92, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s93, s0, 16
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s94
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_3
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB45_3
+; GFX11-NEXT:  .LBB45_2:
+; GFX11-NEXT:    s_mov_b32 s94, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr93
+; GFX11-NEXT:    ; implicit-def: $sgpr92
+; GFX11-NEXT:    ; implicit-def: $sgpr91
+; GFX11-NEXT:    ; implicit-def: $sgpr90
+; GFX11-NEXT:    ; implicit-def: $sgpr89
+; GFX11-NEXT:    ; implicit-def: $sgpr88
+; GFX11-NEXT:    ; implicit-def: $sgpr79
+; GFX11-NEXT:    ; implicit-def: $sgpr78
+; GFX11-NEXT:    ; implicit-def: $sgpr77
+; GFX11-NEXT:    ; implicit-def: $sgpr76
+; GFX11-NEXT:    ; implicit-def: $sgpr75
+; GFX11-NEXT:    ; implicit-def: $sgpr74
+; GFX11-NEXT:    ; implicit-def: $sgpr73
+; GFX11-NEXT:    ; implicit-def: $sgpr72
+; GFX11-NEXT:    ; implicit-def: $sgpr63
+; GFX11-NEXT:    ; implicit-def: $sgpr62
+; GFX11-NEXT:    ; implicit-def: $sgpr61
+; GFX11-NEXT:    ; implicit-def: $sgpr60
+; GFX11-NEXT:    ; implicit-def: $sgpr59
+; GFX11-NEXT:    ; implicit-def: $sgpr58
+; GFX11-NEXT:    ; implicit-def: $sgpr57
+; GFX11-NEXT:    ; implicit-def: $sgpr56
+; GFX11-NEXT:    ; implicit-def: $sgpr47
+; GFX11-NEXT:    ; implicit-def: $sgpr46
+; GFX11-NEXT:    ; implicit-def: $sgpr45
+; GFX11-NEXT:    ; implicit-def: $sgpr44
+; GFX11-NEXT:    ; implicit-def: $sgpr43
+; GFX11-NEXT:    ; implicit-def: $sgpr42
+; GFX11-NEXT:    ; implicit-def: $sgpr41
+; GFX11-NEXT:    ; implicit-def: $sgpr40
+; GFX11-NEXT:  .LBB45_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s94, s94, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s94, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s94, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_u32 s5, s5, 3
 ; GFX11-NEXT:    s_addc_u32 s4, s4, 0
 ; GFX11-NEXT:    s_add_u32 s7, s7, 3
@@ -33001,7 +33692,7 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; GFX11-NEXT:    s_lshr_b32 s91, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s92, s1, 16
 ; GFX11-NEXT:    s_lshr_b32 s93, s0, 16
-; GFX11-NEXT:  .LBB45_3: ; %end
+; GFX11-NEXT:  .LBB45_5: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s0, s0, s93
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s1, s1, s92
@@ -33049,38 +33740,6 @@ define inreg <60 x half> @bitcast_v15i64_to_v60f16_scalar(<15 x i64> inreg %a, i
 ; GFX11-NEXT:    v_dual_mov_b32 v26, s7 :: v_dual_mov_b32 v27, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v28, s5 :: v_dual_mov_b32 v29, s4
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr93
-; GFX11-NEXT:    ; implicit-def: $sgpr92
-; GFX11-NEXT:    ; implicit-def: $sgpr91
-; GFX11-NEXT:    ; implicit-def: $sgpr90
-; GFX11-NEXT:    ; implicit-def: $sgpr89
-; GFX11-NEXT:    ; implicit-def: $sgpr88
-; GFX11-NEXT:    ; implicit-def: $sgpr79
-; GFX11-NEXT:    ; implicit-def: $sgpr78
-; GFX11-NEXT:    ; implicit-def: $sgpr77
-; GFX11-NEXT:    ; implicit-def: $sgpr76
-; GFX11-NEXT:    ; implicit-def: $sgpr75
-; GFX11-NEXT:    ; implicit-def: $sgpr74
-; GFX11-NEXT:    ; implicit-def: $sgpr73
-; GFX11-NEXT:    ; implicit-def: $sgpr72
-; GFX11-NEXT:    ; implicit-def: $sgpr63
-; GFX11-NEXT:    ; implicit-def: $sgpr62
-; GFX11-NEXT:    ; implicit-def: $sgpr61
-; GFX11-NEXT:    ; implicit-def: $sgpr60
-; GFX11-NEXT:    ; implicit-def: $sgpr59
-; GFX11-NEXT:    ; implicit-def: $sgpr58
-; GFX11-NEXT:    ; implicit-def: $sgpr57
-; GFX11-NEXT:    ; implicit-def: $sgpr56
-; GFX11-NEXT:    ; implicit-def: $sgpr47
-; GFX11-NEXT:    ; implicit-def: $sgpr46
-; GFX11-NEXT:    ; implicit-def: $sgpr45
-; GFX11-NEXT:    ; implicit-def: $sgpr44
-; GFX11-NEXT:    ; implicit-def: $sgpr43
-; GFX11-NEXT:    ; implicit-def: $sgpr42
-; GFX11-NEXT:    ; implicit-def: $sgpr41
-; GFX11-NEXT:    ; implicit-def: $sgpr40
-; GFX11-NEXT:    s_branch .LBB45_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -34627,10 +35286,8 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v32, s87, 29
 ; SI-NEXT:    v_writelane_b32 v32, s96, 30
 ; SI-NEXT:    v_writelane_b32 v32, s97, 31
-; SI-NEXT:    v_writelane_b32 v32, s98, 32
-; SI-NEXT:    v_writelane_b32 v32, s99, 33
-; SI-NEXT:    v_writelane_b32 v32, s30, 34
-; SI-NEXT:    v_writelane_b32 v32, s31, 35
+; SI-NEXT:    v_writelane_b32 v32, s30, 32
+; SI-NEXT:    v_writelane_b32 v32, s31, 33
 ; SI-NEXT:    v_readfirstlane_b32 s6, v15
 ; SI-NEXT:    v_readfirstlane_b32 s8, v14
 ; SI-NEXT:    v_readfirstlane_b32 s10, v13
@@ -34644,23 +35301,23 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s90, v5
 ; SI-NEXT:    v_readfirstlane_b32 s92, v4
 ; SI-NEXT:    v_readfirstlane_b32 s94, v3
-; SI-NEXT:    v_readfirstlane_b32 s30, v2
-; SI-NEXT:    v_readfirstlane_b32 s35, v1
-; SI-NEXT:    v_readfirstlane_b32 s70, v0
-; SI-NEXT:    s_lshr_b32 s31, s29, 16
-; SI-NEXT:    s_lshr_b32 s68, s28, 16
-; SI-NEXT:    s_lshr_b32 s71, s27, 16
-; SI-NEXT:    s_lshr_b32 s81, s26, 16
-; SI-NEXT:    s_lshr_b32 s82, s25, 16
-; SI-NEXT:    s_lshr_b32 s83, s24, 16
-; SI-NEXT:    s_lshr_b32 s84, s23, 16
-; SI-NEXT:    s_lshr_b32 s85, s22, 16
-; SI-NEXT:    s_lshr_b32 s86, s21, 16
-; SI-NEXT:    s_lshr_b32 s87, s20, 16
-; SI-NEXT:    s_lshr_b32 s96, s19, 16
-; SI-NEXT:    s_lshr_b32 s97, s18, 16
-; SI-NEXT:    s_lshr_b32 s98, s17, 16
-; SI-NEXT:    s_lshr_b32 s99, s16, 16
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v2
+; SI-NEXT:    v_readfirstlane_b32 s31, v1
+; SI-NEXT:    v_readfirstlane_b32 s68, v0
+; SI-NEXT:    s_lshr_b32 vcc_hi, s29, 16
+; SI-NEXT:    s_lshr_b32 s34, s28, 16
+; SI-NEXT:    s_lshr_b32 s69, s27, 16
+; SI-NEXT:    s_lshr_b32 s71, s26, 16
+; SI-NEXT:    s_lshr_b32 s80, s25, 16
+; SI-NEXT:    s_lshr_b32 s81, s24, 16
+; SI-NEXT:    s_lshr_b32 s82, s23, 16
+; SI-NEXT:    s_lshr_b32 s83, s22, 16
+; SI-NEXT:    s_lshr_b32 s84, s21, 16
+; SI-NEXT:    s_lshr_b32 s85, s20, 16
+; SI-NEXT:    s_lshr_b32 s86, s19, 16
+; SI-NEXT:    s_lshr_b32 s87, s18, 16
+; SI-NEXT:    s_lshr_b32 s96, s17, 16
+; SI-NEXT:    s_lshr_b32 s97, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -34674,63 +35331,63 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s91, s90, 16
 ; SI-NEXT:    s_lshr_b32 s93, s92, 16
 ; SI-NEXT:    s_lshr_b32 s95, s94, 16
-; SI-NEXT:    s_lshr_b32 s34, s30, 16
-; SI-NEXT:    s_lshr_b32 s69, s35, 16
-; SI-NEXT:    s_lshr_b32 s80, s70, 16
+; SI-NEXT:    s_lshr_b32 s30, vcc_lo, 16
+; SI-NEXT:    s_lshr_b32 s35, s31, 16
+; SI-NEXT:    s_lshr_b32 s70, s68, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v16
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB47_3
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s98, 16
+; SI-NEXT:    s_lshl_b32 s41, s96, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s48, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_and_b32 s4, s68, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -34771,11 +35428,20 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB47_4
-; SI-NEXT:  .LBB47_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s99
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s97
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s98
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s96
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -34785,7 +35451,7 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s97
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, s87
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v5, s19
@@ -34795,20 +35461,20 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s96
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s86
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s87
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s85
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s20
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s86
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s84
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
@@ -34818,7 +35484,7 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_or_b32_e32 v4, v4, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s85
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s83
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s22
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
@@ -34827,11 +35493,11 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s84
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, s82
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v6, v8, v6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s23
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s83
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s81
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
@@ -34842,7 +35508,7 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s24
 ; SI-NEXT:    v_or_b32_e32 v7, v8, v7
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v9
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s80
 ; SI-NEXT:    v_cvt_f32_f16_e32 v11, s25
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
@@ -34851,11 +35517,11 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
 ; SI-NEXT:    v_cvt_f16_f32_e32 v11, v11
 ; SI-NEXT:    v_or_b32_e32 v8, v10, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v10, s71
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; SI-NEXT:    v_or_b32_e32 v9, v11, v9
 ; SI-NEXT:    v_cvt_f32_f16_e32 v11, s26
-; SI-NEXT:    v_cvt_f32_f16_e32 v12, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v12, s69
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
@@ -34866,7 +35532,7 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s27
 ; SI-NEXT:    v_or_b32_e32 v10, v11, v10
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v12
-; SI-NEXT:    v_cvt_f32_f16_e32 v12, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v12, s34
 ; SI-NEXT:    v_cvt_f32_f16_e32 v14, s28
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
 ; SI-NEXT:    v_cvt_f16_f32_e32 v13, v13
@@ -34875,11 +35541,11 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
 ; SI-NEXT:    v_cvt_f16_f32_e32 v14, v14
 ; SI-NEXT:    v_or_b32_e32 v11, v13, v11
-; SI-NEXT:    v_cvt_f32_f16_e32 v13, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v13, vcc_hi
 ; SI-NEXT:    v_lshlrev_b32_e32 v12, 16, v12
 ; SI-NEXT:    v_or_b32_e32 v12, v14, v12
 ; SI-NEXT:    v_cvt_f32_f16_e32 v14, s29
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s80
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s70
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
 ; SI-NEXT:    v_cvt_f16_f32_e32 v13, v13
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
@@ -34887,11 +35553,11 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v14, v14
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s68
 ; SI-NEXT:    v_or_b32_e32 v13, v14, v13
 ; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v15
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s69
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, s31
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
@@ -34899,10 +35565,10 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_add_f32_e32 v17, 0x38000000, v17
 ; SI-NEXT:    v_cvt_f16_f32_e32 v17, v17
 ; SI-NEXT:    v_or_b32_e32 v14, v16, v14
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s30
 ; SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; SI-NEXT:    v_or_b32_e32 v15, v17, v15
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, vcc_lo
 ; SI-NEXT:    v_cvt_f32_f16_e32 v18, s95
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
@@ -35013,11 +35679,8 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_or_b32_e32 v28, v29, v28
 ; SI-NEXT:    v_lshlrev_b32_e32 v29, 16, v30
 ; SI-NEXT:    v_or_b32_e32 v29, v31, v29
-; SI-NEXT:    s_branch .LBB47_5
-; SI-NEXT:  .LBB47_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB47_2
-; SI-NEXT:  .LBB47_4:
+; SI-NEXT:    s_branch .LBB47_6
+; SI-NEXT:  .LBB47_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -35050,11 +35713,9 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB47_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 34
-; SI-NEXT:    v_readlane_b32 s31, v32, 35
-; SI-NEXT:    v_readlane_b32 s99, v32, 33
-; SI-NEXT:    v_readlane_b32 s98, v32, 32
+; SI-NEXT:  .LBB47_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 32
+; SI-NEXT:    v_readlane_b32 s31, v32, 33
 ; SI-NEXT:    v_readlane_b32 s97, v32, 31
 ; SI-NEXT:    v_readlane_b32 s96, v32, 30
 ; SI-NEXT:    v_readlane_b32 s87, v32, 29
@@ -35132,136 +35793,136 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; VI-NEXT:    v_writelane_b32 v32, s87, 29
 ; VI-NEXT:    v_writelane_b32 v32, s30, 30
 ; VI-NEXT:    v_writelane_b32 v32, s31, 31
-; VI-NEXT:    v_readfirstlane_b32 s6, v15
-; VI-NEXT:    s_lshr_b32 vcc_lo, s6, 16
 ; VI-NEXT:    v_readfirstlane_b32 s8, v14
-; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
-; VI-NEXT:    s_lshr_b32 vcc_hi, s8, 16
+; VI-NEXT:    s_lshr_b32 s75, s8, 16
 ; VI-NEXT:    v_readfirstlane_b32 s10, v13
-; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 0
+; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; VI-NEXT:    s_lshr_b32 s63, s10, 16
 ; VI-NEXT:    v_readfirstlane_b32 s12, v12
-; VI-NEXT:    v_writelane_b32 v33, vcc_hi, 1
+; VI-NEXT:    v_writelane_b32 v33, s75, 0
 ; VI-NEXT:    s_lshr_b32 s62, s12, 16
 ; VI-NEXT:    v_readfirstlane_b32 s14, v11
-; VI-NEXT:    v_writelane_b32 v33, s63, 2
+; VI-NEXT:    v_writelane_b32 v33, s63, 1
+; VI-NEXT:    v_readfirstlane_b32 s6, v15
 ; VI-NEXT:    s_lshr_b32 s61, s14, 16
 ; VI-NEXT:    v_readfirstlane_b32 s72, v10
-; VI-NEXT:    v_writelane_b32 v33, s62, 3
-; VI-NEXT:    s_lshr_b32 s60, s72, 16
 ; VI-NEXT:    v_readfirstlane_b32 s74, v9
 ; VI-NEXT:    v_readfirstlane_b32 s76, v8
 ; VI-NEXT:    v_readfirstlane_b32 s78, v7
 ; VI-NEXT:    v_readfirstlane_b32 s89, v6
-; VI-NEXT:    v_readfirstlane_b32 s30, v5
-; VI-NEXT:    v_readfirstlane_b32 s35, v4
-; VI-NEXT:    v_readfirstlane_b32 s71, v3
-; VI-NEXT:    v_readfirstlane_b32 s82, v2
-; VI-NEXT:    v_readfirstlane_b32 s85, v1
-; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    v_writelane_b32 v33, s61, 4
+; VI-NEXT:    v_readfirstlane_b32 vcc_lo, v5
+; VI-NEXT:    v_readfirstlane_b32 s31, v4
+; VI-NEXT:    v_readfirstlane_b32 s69, v3
+; VI-NEXT:    v_readfirstlane_b32 s80, v2
+; VI-NEXT:    v_readfirstlane_b32 s83, v1
+; VI-NEXT:    v_readfirstlane_b32 s86, v0
+; VI-NEXT:    v_writelane_b32 v33, s62, 2
 ; VI-NEXT:    s_lshr_b32 s56, s29, 16
-; VI-NEXT:    s_lshr_b32 s88, s28, 16
-; VI-NEXT:    s_lshr_b32 s31, s27, 16
-; VI-NEXT:    s_lshr_b32 s68, s26, 16
-; VI-NEXT:    s_lshr_b32 s70, s25, 16
-; VI-NEXT:    s_lshr_b32 s81, s24, 16
-; VI-NEXT:    s_lshr_b32 s84, s23, 16
-; VI-NEXT:    s_lshr_b32 s86, s22, 16
-; VI-NEXT:    s_lshr_b32 s9, s21, 16
-; VI-NEXT:    s_lshr_b32 s13, s20, 16
-; VI-NEXT:    s_lshr_b32 s15, s19, 16
-; VI-NEXT:    s_lshr_b32 s73, s18, 16
-; VI-NEXT:    s_lshr_b32 s75, s17, 16
-; VI-NEXT:    s_lshr_b32 s77, s16, 16
+; VI-NEXT:    s_lshr_b32 s77, s28, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s27, 16
+; VI-NEXT:    s_lshr_b32 s34, s26, 16
+; VI-NEXT:    s_lshr_b32 s68, s25, 16
+; VI-NEXT:    s_lshr_b32 s71, s24, 16
+; VI-NEXT:    s_lshr_b32 s82, s23, 16
+; VI-NEXT:    s_lshr_b32 s84, s22, 16
+; VI-NEXT:    s_lshr_b32 s87, s21, 16
+; VI-NEXT:    s_lshr_b32 s9, s20, 16
+; VI-NEXT:    s_lshr_b32 s11, s19, 16
+; VI-NEXT:    s_lshr_b32 s13, s18, 16
+; VI-NEXT:    s_lshr_b32 s15, s17, 16
+; VI-NEXT:    s_lshr_b32 s73, s16, 16
+; VI-NEXT:    s_lshr_b32 s65, s6, 16
+; VI-NEXT:    s_lshr_b32 s60, s72, 16
 ; VI-NEXT:    s_lshr_b32 s59, s74, 16
 ; VI-NEXT:    s_lshr_b32 s58, s76, 16
 ; VI-NEXT:    s_lshr_b32 s57, s78, 16
-; VI-NEXT:    s_lshr_b32 s64, s89, 16
-; VI-NEXT:    s_lshr_b32 s34, s30, 16
-; VI-NEXT:    s_lshr_b32 s69, s35, 16
-; VI-NEXT:    s_lshr_b32 s80, s71, 16
-; VI-NEXT:    s_lshr_b32 s83, s82, 16
-; VI-NEXT:    s_lshr_b32 s87, s85, 16
-; VI-NEXT:    s_lshr_b32 s11, s7, 16
+; VI-NEXT:    s_lshr_b32 s88, s89, 16
+; VI-NEXT:    s_lshr_b32 s30, vcc_lo, 16
+; VI-NEXT:    s_lshr_b32 s35, s31, 16
+; VI-NEXT:    s_lshr_b32 s70, s69, 16
+; VI-NEXT:    s_lshr_b32 s81, s80, 16
+; VI-NEXT:    s_lshr_b32 s85, s83, 16
+; VI-NEXT:    s_lshr_b32 s7, s86, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
-; VI-NEXT:    v_writelane_b32 v33, s60, 5
+; VI-NEXT:    v_writelane_b32 v33, s61, 3
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    v_writelane_b32 v33, s59, 6
-; VI-NEXT:    v_writelane_b32 v33, s58, 7
-; VI-NEXT:    s_cbranch_scc0 .LBB47_3
+; VI-NEXT:    v_writelane_b32 v33, s60, 4
+; VI-NEXT:    v_writelane_b32 v33, s59, 5
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s77, 16
+; VI-NEXT:    s_lshl_b32 s5, s73, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s73, 16
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s15, 16
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s75, 16
+; VI-NEXT:    s_lshl_b32 s41, s15, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s13, 16
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s9, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
-; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_lshl_b32 s5, s77, 16
 ; VI-NEXT:    s_or_b32 s48, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s56, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s7
-; VI-NEXT:    s_lshl_b32 s5, s11, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s86
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s85
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s83
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s82
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s80
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s35
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s31
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s30
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_lo
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s89
-; VI-NEXT:    s_lshl_b32 s5, s64, 16
-; VI-NEXT:    s_mov_b32 s91, s56
+; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_mov_b32 s90, s56
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s78
 ; VI-NEXT:    s_lshl_b32 s5, s57, 16
-; VI-NEXT:    s_mov_b32 s79, s88
-; VI-NEXT:    s_mov_b32 s88, s57
+; VI-NEXT:    s_mov_b32 s91, s77
+; VI-NEXT:    s_mov_b32 s77, s57
 ; VI-NEXT:    s_or_b32 s57, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s76
 ; VI-NEXT:    s_lshl_b32 s5, s58, 16
+; VI-NEXT:    s_mov_b32 s79, s88
+; VI-NEXT:    s_mov_b32 s88, s58
 ; VI-NEXT:    s_or_b32 s58, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s74
 ; VI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -35279,152 +35940,158 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; VI-NEXT:    s_lshl_b32 s5, s63, 16
 ; VI-NEXT:    s_or_b32 s63, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s8
-; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
-; VI-NEXT:    s_mov_b32 s90, s64
+; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s64, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
-; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
+; VI-NEXT:    s_lshl_b32 s5, s65, 16
+; VI-NEXT:    s_mov_b32 s75, s65
 ; VI-NEXT:    s_or_b32 s65, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB47_4
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b32 s79, s88
+; VI-NEXT:    s_mov_b32 s91, s77
+; VI-NEXT:    s_mov_b32 s90, s56
+; VI-NEXT:    s_mov_b32 s77, s57
+; VI-NEXT:    s_mov_b32 s88, s58
+; VI-NEXT:    s_mov_b32 s75, s65
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v29, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s77
-; VI-NEXT:    v_mov_b32_e32 v2, s75
+; VI-NEXT:    v_mov_b32_e32 v0, s73
+; VI-NEXT:    v_mov_b32_e32 v2, s15
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v29
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v29
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s73
+; VI-NEXT:    v_mov_b32_e32 v2, s13
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v29
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s15
+; VI-NEXT:    v_mov_b32_e32 v3, s11
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v29
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s13
+; VI-NEXT:    v_mov_b32_e32 v4, s9
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v29
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s9
+; VI-NEXT:    v_mov_b32_e32 v5, s87
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v29
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s86
+; VI-NEXT:    v_mov_b32_e32 v6, s84
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v29
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s84
+; VI-NEXT:    v_mov_b32_e32 v7, s82
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v29
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s81
+; VI-NEXT:    v_mov_b32_e32 v8, s71
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v29
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
-; VI-NEXT:    v_mov_b32_e32 v9, s70
+; VI-NEXT:    v_mov_b32_e32 v9, s68
 ; VI-NEXT:    v_add_f16_sdwa v9, v9, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v10, s25, v29
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
-; VI-NEXT:    v_mov_b32_e32 v10, s68
+; VI-NEXT:    v_mov_b32_e32 v10, s34
 ; VI-NEXT:    v_add_f16_sdwa v10, v10, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v11, s26, v29
 ; VI-NEXT:    v_or_b32_e32 v10, v11, v10
-; VI-NEXT:    v_mov_b32_e32 v11, s31
+; VI-NEXT:    v_mov_b32_e32 v11, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v11, v11, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v12, s27, v29
 ; VI-NEXT:    v_or_b32_e32 v11, v12, v11
-; VI-NEXT:    v_mov_b32_e32 v12, s79
+; VI-NEXT:    v_mov_b32_e32 v12, s91
 ; VI-NEXT:    v_add_f16_sdwa v12, v12, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v13, s28, v29
 ; VI-NEXT:    v_or_b32_e32 v12, v13, v12
-; VI-NEXT:    v_mov_b32_e32 v13, s91
+; VI-NEXT:    v_mov_b32_e32 v13, s90
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v29
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s11
+; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s7, v29
+; VI-NEXT:    v_add_f16_e32 v15, s86, v29
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s87
+; VI-NEXT:    v_mov_b32_e32 v15, s85
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v16, s85, v29
+; VI-NEXT:    v_add_f16_e32 v16, s83, v29
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
-; VI-NEXT:    v_mov_b32_e32 v16, s83
+; VI-NEXT:    v_mov_b32_e32 v16, s81
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v17, s82, v29
+; VI-NEXT:    v_add_f16_e32 v17, s80, v29
 ; VI-NEXT:    v_or_b32_e32 v16, v17, v16
-; VI-NEXT:    v_mov_b32_e32 v17, s80
+; VI-NEXT:    v_mov_b32_e32 v17, s70
 ; VI-NEXT:    v_add_f16_sdwa v17, v17, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v18, s71, v29
+; VI-NEXT:    v_add_f16_e32 v18, s69, v29
 ; VI-NEXT:    v_or_b32_e32 v17, v18, v17
-; VI-NEXT:    v_mov_b32_e32 v18, s69
+; VI-NEXT:    v_mov_b32_e32 v18, s35
 ; VI-NEXT:    v_add_f16_sdwa v18, v18, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v19, s35, v29
+; VI-NEXT:    v_add_f16_e32 v19, s31, v29
 ; VI-NEXT:    v_or_b32_e32 v18, v19, v18
-; VI-NEXT:    v_mov_b32_e32 v19, s34
+; VI-NEXT:    v_mov_b32_e32 v19, s30
 ; VI-NEXT:    v_add_f16_sdwa v19, v19, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v20, s30, v29
+; VI-NEXT:    v_add_f16_e32 v20, vcc_lo, v29
 ; VI-NEXT:    v_or_b32_e32 v19, v20, v19
-; VI-NEXT:    v_mov_b32_e32 v20, s90
+; VI-NEXT:    v_mov_b32_e32 v20, s79
 ; VI-NEXT:    v_add_f16_sdwa v20, v20, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v21, s89, v29
 ; VI-NEXT:    v_or_b32_e32 v20, v21, v20
-; VI-NEXT:    v_mov_b32_e32 v21, s88
+; VI-NEXT:    v_mov_b32_e32 v21, s77
 ; VI-NEXT:    v_add_f16_sdwa v21, v21, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v22, s78, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 7
 ; VI-NEXT:    v_or_b32_e32 v21, v22, v21
-; VI-NEXT:    v_mov_b32_e32 v22, s4
+; VI-NEXT:    v_mov_b32_e32 v22, s88
 ; VI-NEXT:    v_add_f16_sdwa v22, v22, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v23, s76, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 6
+; VI-NEXT:    v_readlane_b32 s4, v33, 5
 ; VI-NEXT:    v_or_b32_e32 v22, v23, v22
 ; VI-NEXT:    v_mov_b32_e32 v23, s4
 ; VI-NEXT:    v_add_f16_sdwa v23, v23, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v24, s74, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 5
+; VI-NEXT:    v_readlane_b32 s4, v33, 4
 ; VI-NEXT:    v_or_b32_e32 v23, v24, v23
 ; VI-NEXT:    v_mov_b32_e32 v24, s4
 ; VI-NEXT:    v_add_f16_sdwa v24, v24, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v25, s72, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 4
+; VI-NEXT:    v_readlane_b32 s4, v33, 3
 ; VI-NEXT:    v_or_b32_e32 v24, v25, v24
 ; VI-NEXT:    v_mov_b32_e32 v25, s4
 ; VI-NEXT:    v_add_f16_sdwa v25, v25, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v26, s14, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 3
+; VI-NEXT:    v_readlane_b32 s4, v33, 2
 ; VI-NEXT:    v_or_b32_e32 v25, v26, v25
 ; VI-NEXT:    v_mov_b32_e32 v26, s4
 ; VI-NEXT:    v_add_f16_sdwa v26, v26, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v27, s12, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 2
+; VI-NEXT:    v_readlane_b32 s4, v33, 1
 ; VI-NEXT:    v_or_b32_e32 v26, v27, v26
 ; VI-NEXT:    v_mov_b32_e32 v27, s4
 ; VI-NEXT:    v_add_f16_sdwa v27, v27, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v28, s10, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 1
+; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v27, v28, v27
 ; VI-NEXT:    v_mov_b32_e32 v28, s4
 ; VI-NEXT:    v_add_f16_sdwa v28, v28, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v30, s8, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v28, v30, v28
-; VI-NEXT:    v_mov_b32_e32 v30, s4
+; VI-NEXT:    v_mov_b32_e32 v30, s75
 ; VI-NEXT:    v_add_f16_sdwa v30, v30, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v29, s6, v29
 ; VI-NEXT:    v_or_b32_e32 v29, v29, v30
-; VI-NEXT:    s_branch .LBB47_5
-; VI-NEXT:  .LBB47_3:
-; VI-NEXT:    s_mov_b32 s90, s64
-; VI-NEXT:    s_mov_b32 s79, s88
-; VI-NEXT:    s_mov_b32 s91, s56
-; VI-NEXT:    s_mov_b32 s88, s57
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB47_2
-; VI-NEXT:  .LBB47_4:
+; VI-NEXT:    s_branch .LBB47_6
+; VI-NEXT:  .LBB47_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -35457,7 +36124,7 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB47_5: ; %end
+; VI-NEXT:  .LBB47_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 30
 ; VI-NEXT:    v_readlane_b32 s31, v32, 31
 ; VI-NEXT:    v_readlane_b32 s87, v32, 29
@@ -35595,10 +36262,18 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s76
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s64, s74, s75
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s65, s72, s73
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v29, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v29 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v29 op_sel_hi:[1,0]
@@ -35630,10 +36305,8 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; GFX9-NEXT:    v_pk_add_f16 v27, s63, v29 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v28, s64, v29 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v29, s65, v29 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB47_5
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:    s_branch .LBB47_6
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -35666,7 +36339,7 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB47_5: ; %end
+; GFX9-NEXT:  .LBB47_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
 ; GFX9-NEXT:    v_readlane_b32 s64, v32, 12
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
@@ -35765,11 +36438,16 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s28, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s29, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB47_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB47_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -35801,8 +36479,6 @@ define inreg <15 x i64> @bitcast_v60f16_to_v15i64_scalar(<60 x half> inreg %a, i
 ; GFX11-NEXT:    v_pk_add_f16 v28, 0x200, s28 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v29, 0x200, s29 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB47_3:
-; GFX11-NEXT:    s_branch .LBB47_2
 ; GFX11-NEXT:  .LBB47_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -36727,7 +37403,7 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s43, v1
 ; SI-NEXT:    s_cmp_lg_u32 s42, 0
 ; SI-NEXT:    v_readfirstlane_b32 s42, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB49_3
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s64, s15, 16
 ; SI-NEXT:    s_lshr_b32 s55, s41, 16
@@ -36758,64 +37434,12 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB49_4
-; SI-NEXT:  .LBB49_2: ; %cmp.true
-; SI-NEXT:    v_add_f64 v[28:29], s[14:15], 1.0
-; SI-NEXT:    v_add_f64 v[26:27], s[40:41], 1.0
-; SI-NEXT:    v_add_f64 v[24:25], s[12:13], 1.0
-; SI-NEXT:    v_lshr_b64 v[30:31], v[28:29], 16
-; SI-NEXT:    v_add_f64 v[22:23], s[10:11], 1.0
-; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
-; SI-NEXT:    v_lshr_b64 v[31:32], v[26:27], 16
-; SI-NEXT:    v_add_f64 v[20:21], s[8:9], 1.0
-; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
-; SI-NEXT:    v_lshr_b64 v[32:33], v[24:25], 16
-; SI-NEXT:    v_add_f64 v[18:19], s[6:7], 1.0
-; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
-; SI-NEXT:    v_lshr_b64 v[33:34], v[22:23], 16
-; SI-NEXT:    v_lshr_b64 v[48:49], v[10:11], 16
-; SI-NEXT:    v_add_f64 v[16:17], s[4:5], 1.0
-; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
-; SI-NEXT:    v_lshr_b64 v[34:35], v[20:21], 16
-; SI-NEXT:    v_lshr_b64 v[49:50], v[8:9], 16
-; SI-NEXT:    v_add_f64 v[14:15], s[42:43], 1.0
-; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
-; SI-NEXT:    v_lshr_b64 v[35:36], v[18:19], 16
-; SI-NEXT:    v_lshr_b64 v[50:51], v[6:7], 16
-; SI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
-; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
-; SI-NEXT:    v_lshr_b64 v[36:37], v[16:17], 16
-; SI-NEXT:    v_lshr_b64 v[51:52], v[4:5], 16
-; SI-NEXT:    v_lshr_b64 v[37:38], v[14:15], 16
-; SI-NEXT:    v_lshr_b64 v[52:53], v[2:3], 16
-; SI-NEXT:    v_lshr_b64 v[38:39], v[12:13], 16
-; SI-NEXT:    v_lshr_b64 v[53:54], v[0:1], 16
-; SI-NEXT:    v_lshrrev_b32_e32 v55, 16, v29
-; SI-NEXT:    v_lshrrev_b32_e32 v40, 16, v27
-; SI-NEXT:    v_lshrrev_b32_e32 v41, 16, v25
-; SI-NEXT:    v_lshrrev_b32_e32 v42, 16, v23
-; SI-NEXT:    v_lshrrev_b32_e32 v43, 16, v21
-; SI-NEXT:    v_lshrrev_b32_e32 v44, 16, v19
-; SI-NEXT:    v_lshrrev_b32_e32 v45, 16, v17
-; SI-NEXT:    v_lshrrev_b32_e32 v46, 16, v15
-; SI-NEXT:    s_waitcnt expcnt(6)
-; SI-NEXT:    v_lshrrev_b32_e32 v47, 16, v13
-; SI-NEXT:    s_waitcnt expcnt(5)
-; SI-NEXT:    v_lshrrev_b32_e32 v56, 16, v11
-; SI-NEXT:    s_waitcnt expcnt(4)
-; SI-NEXT:    v_lshrrev_b32_e32 v57, 16, v9
-; SI-NEXT:    s_waitcnt expcnt(3)
-; SI-NEXT:    v_lshrrev_b32_e32 v58, 16, v7
-; SI-NEXT:    s_waitcnt expcnt(2)
-; SI-NEXT:    v_lshrrev_b32_e32 v59, 16, v5
-; SI-NEXT:    s_waitcnt expcnt(1)
-; SI-NEXT:    v_lshrrev_b32_e32 v60, 16, v3
-; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_lshrrev_b32_e32 v61, 16, v1
-; SI-NEXT:    s_branch .LBB49_5
-; SI-NEXT:  .LBB49_3:
-; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 16
+; SI-NEXT:    s_mov_b64 s[30:31], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[30:31], -1
+; SI-NEXT:    ; implicit-def: $vcc_lo
 ; SI-NEXT:    ; implicit-def: $sgpr34
 ; SI-NEXT:    ; implicit-def: $sgpr94
 ; SI-NEXT:    ; implicit-def: $sgpr35
@@ -36845,8 +37469,66 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; SI-NEXT:    ; implicit-def: $sgpr55
 ; SI-NEXT:    ; implicit-def: $sgpr64
 ; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    s_branch .LBB49_2
-; SI-NEXT:  .LBB49_4:
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[30:31], s[30:31], exec
+; SI-NEXT:    s_cselect_b32 s45, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s45, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_add_f64 v[28:29], s[14:15], 1.0
+; SI-NEXT:    v_add_f64 v[26:27], s[40:41], 1.0
+; SI-NEXT:    v_add_f64 v[24:25], s[12:13], 1.0
+; SI-NEXT:    v_lshr_b64 v[30:31], v[28:29], 16
+; SI-NEXT:    v_add_f64 v[22:23], s[10:11], 1.0
+; SI-NEXT:    v_add_f64 v[10:11], s[26:27], 1.0
+; SI-NEXT:    v_lshr_b64 v[31:32], v[26:27], 16
+; SI-NEXT:    v_add_f64 v[20:21], s[8:9], 1.0
+; SI-NEXT:    v_add_f64 v[8:9], s[24:25], 1.0
+; SI-NEXT:    v_lshr_b64 v[32:33], v[24:25], 16
+; SI-NEXT:    v_add_f64 v[18:19], s[6:7], 1.0
+; SI-NEXT:    v_add_f64 v[6:7], s[22:23], 1.0
+; SI-NEXT:    v_lshr_b64 v[33:34], v[22:23], 16
+; SI-NEXT:    v_lshr_b64 v[48:49], v[10:11], 16
+; SI-NEXT:    v_add_f64 v[16:17], s[4:5], 1.0
+; SI-NEXT:    v_add_f64 v[4:5], s[20:21], 1.0
+; SI-NEXT:    v_lshr_b64 v[34:35], v[20:21], 16
+; SI-NEXT:    v_lshr_b64 v[49:50], v[8:9], 16
+; SI-NEXT:    v_add_f64 v[14:15], s[42:43], 1.0
+; SI-NEXT:    v_add_f64 v[2:3], s[18:19], 1.0
+; SI-NEXT:    v_lshr_b64 v[35:36], v[18:19], 16
+; SI-NEXT:    v_lshr_b64 v[50:51], v[6:7], 16
+; SI-NEXT:    v_add_f64 v[12:13], s[28:29], 1.0
+; SI-NEXT:    v_add_f64 v[0:1], s[16:17], 1.0
+; SI-NEXT:    v_lshr_b64 v[36:37], v[16:17], 16
+; SI-NEXT:    v_lshr_b64 v[51:52], v[4:5], 16
+; SI-NEXT:    v_lshr_b64 v[37:38], v[14:15], 16
+; SI-NEXT:    v_lshr_b64 v[52:53], v[2:3], 16
+; SI-NEXT:    v_lshr_b64 v[38:39], v[12:13], 16
+; SI-NEXT:    v_lshr_b64 v[53:54], v[0:1], 16
+; SI-NEXT:    v_lshrrev_b32_e32 v55, 16, v29
+; SI-NEXT:    v_lshrrev_b32_e32 v40, 16, v27
+; SI-NEXT:    v_lshrrev_b32_e32 v41, 16, v25
+; SI-NEXT:    v_lshrrev_b32_e32 v42, 16, v23
+; SI-NEXT:    v_lshrrev_b32_e32 v43, 16, v21
+; SI-NEXT:    v_lshrrev_b32_e32 v44, 16, v19
+; SI-NEXT:    v_lshrrev_b32_e32 v45, 16, v17
+; SI-NEXT:    v_lshrrev_b32_e32 v46, 16, v15
+; SI-NEXT:    s_waitcnt expcnt(6)
+; SI-NEXT:    v_lshrrev_b32_e32 v47, 16, v13
+; SI-NEXT:    s_waitcnt expcnt(5)
+; SI-NEXT:    v_lshrrev_b32_e32 v56, 16, v11
+; SI-NEXT:    s_waitcnt expcnt(4)
+; SI-NEXT:    v_lshrrev_b32_e32 v57, 16, v9
+; SI-NEXT:    s_waitcnt expcnt(3)
+; SI-NEXT:    v_lshrrev_b32_e32 v58, 16, v7
+; SI-NEXT:    s_waitcnt expcnt(2)
+; SI-NEXT:    v_lshrrev_b32_e32 v59, 16, v5
+; SI-NEXT:    s_waitcnt expcnt(1)
+; SI-NEXT:    v_lshrrev_b32_e32 v60, 16, v3
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v61, 16, v1
+; SI-NEXT:    s_branch .LBB49_6
+; SI-NEXT:  .LBB49_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
@@ -36899,7 +37581,7 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v60, s35
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v61, s34
-; SI-NEXT:    v_mov_b32_e32 v53, s30
+; SI-NEXT:    v_mov_b32_e32 v53, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v52, s94
 ; SI-NEXT:    v_mov_b32_e32 v51, s92
 ; SI-NEXT:    v_mov_b32_e32 v50, s90
@@ -36914,7 +37596,7 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v32, s56
 ; SI-NEXT:    v_mov_b32_e32 v31, s44
 ; SI-NEXT:    v_mov_b32_e32 v30, s46
-; SI-NEXT:  .LBB49_5: ; %end
+; SI-NEXT:  .LBB49_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v39, 16, v53
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v39
@@ -37064,10 +37746,8 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v60, s35, 1
 ; VI-NEXT:    v_writelane_b32 v60, s36, 2
 ; VI-NEXT:    v_writelane_b32 v60, s37, 3
-; VI-NEXT:    v_writelane_b32 v60, s38, 4
-; VI-NEXT:    v_writelane_b32 v60, s39, 5
-; VI-NEXT:    v_writelane_b32 v60, s30, 6
-; VI-NEXT:    v_writelane_b32 v60, s31, 7
+; VI-NEXT:    v_writelane_b32 v60, s30, 4
+; VI-NEXT:    v_writelane_b32 v60, s31, 5
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
 ; VI-NEXT:    v_readfirstlane_b32 s9, v15
 ; VI-NEXT:    v_readfirstlane_b32 s8, v14
@@ -37086,7 +37766,7 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; VI-NEXT:    v_readfirstlane_b32 s5, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_3
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s46, s9, 16
 ; VI-NEXT:    s_lshr_b32 s77, s8, 16
@@ -37103,23 +37783,61 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; VI-NEXT:    s_lshr_b32 s60, s7, 16
 ; VI-NEXT:    s_lshr_b32 s91, s6, 16
 ; VI-NEXT:    s_lshr_b32 s61, s5, 16
-; VI-NEXT:    s_lshr_b32 s30, s4, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s4, 16
 ; VI-NEXT:    s_lshr_b32 s62, s29, 16
-; VI-NEXT:    s_lshr_b32 s31, s28, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s28, 16
 ; VI-NEXT:    s_lshr_b32 s63, s27, 16
-; VI-NEXT:    s_lshr_b32 s34, s26, 16
+; VI-NEXT:    s_lshr_b32 s30, s26, 16
 ; VI-NEXT:    s_lshr_b32 s72, s25, 16
-; VI-NEXT:    s_lshr_b32 s35, s24, 16
+; VI-NEXT:    s_lshr_b32 s31, s24, 16
 ; VI-NEXT:    s_lshr_b32 s73, s23, 16
-; VI-NEXT:    s_lshr_b32 s36, s22, 16
+; VI-NEXT:    s_lshr_b32 s34, s22, 16
 ; VI-NEXT:    s_lshr_b32 s74, s21, 16
-; VI-NEXT:    s_lshr_b32 s37, s20, 16
+; VI-NEXT:    s_lshr_b32 s35, s20, 16
 ; VI-NEXT:    s_lshr_b32 s75, s19, 16
-; VI-NEXT:    s_lshr_b32 s38, s18, 16
+; VI-NEXT:    s_lshr_b32 s36, s18, 16
 ; VI-NEXT:    s_lshr_b32 s76, s17, 16
-; VI-NEXT:    s_lshr_b32 s39, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB49_4
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 s37, s16, 16
+; VI-NEXT:    s_mov_b64 s[44:45], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[44:45], -1
+; VI-NEXT:    ; implicit-def: $sgpr37
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr35
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[44:45], s[44:45], exec
+; VI-NEXT:    s_cselect_b32 s44, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s44, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[28:29], s[8:9], 1.0
 ; VI-NEXT:    v_add_f64 v[26:27], s[10:11], 1.0
 ; VI-NEXT:    v_add_f64 v[24:25], s[12:13], 1.0
@@ -37165,40 +37883,8 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; VI-NEXT:    v_lshrrev_b32_e32 v46, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v59, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v56, 16, v0
-; VI-NEXT:    s_branch .LBB49_5
-; VI-NEXT:  .LBB49_3:
-; VI-NEXT:    ; implicit-def: $sgpr39
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr37
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    s_branch .LBB49_2
-; VI-NEXT:  .LBB49_4:
+; VI-NEXT:    s_branch .LBB49_6
+; VI-NEXT:  .LBB49_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
@@ -37229,14 +37915,14 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v27, s11
 ; VI-NEXT:    v_mov_b32_e32 v28, s8
 ; VI-NEXT:    v_mov_b32_e32 v29, s9
-; VI-NEXT:    v_mov_b32_e32 v56, s39
-; VI-NEXT:    v_mov_b32_e32 v46, s38
-; VI-NEXT:    v_mov_b32_e32 v44, s37
-; VI-NEXT:    v_mov_b32_e32 v42, s36
-; VI-NEXT:    v_mov_b32_e32 v40, s35
-; VI-NEXT:    v_mov_b32_e32 v54, s34
-; VI-NEXT:    v_mov_b32_e32 v52, s31
-; VI-NEXT:    v_mov_b32_e32 v50, s30
+; VI-NEXT:    v_mov_b32_e32 v56, s37
+; VI-NEXT:    v_mov_b32_e32 v46, s36
+; VI-NEXT:    v_mov_b32_e32 v44, s35
+; VI-NEXT:    v_mov_b32_e32 v42, s34
+; VI-NEXT:    v_mov_b32_e32 v40, s31
+; VI-NEXT:    v_mov_b32_e32 v54, s30
+; VI-NEXT:    v_mov_b32_e32 v52, vcc_hi
+; VI-NEXT:    v_mov_b32_e32 v50, vcc_lo
 ; VI-NEXT:    v_mov_b32_e32 v48, s91
 ; VI-NEXT:    v_mov_b32_e32 v38, s90
 ; VI-NEXT:    v_mov_b32_e32 v36, s89
@@ -37259,7 +37945,7 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; VI-NEXT:    v_mov_b32_e32 v37, s56
 ; VI-NEXT:    v_mov_b32_e32 v35, s47
 ; VI-NEXT:    v_mov_b32_e32 v33, s46
-; VI-NEXT:  .LBB49_5: ; %end
+; VI-NEXT:  .LBB49_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v56, 16, v56
 ; VI-NEXT:    v_lshlrev_b32_e32 v46, 16, v46
 ; VI-NEXT:    v_lshlrev_b32_e32 v44, 16, v44
@@ -37322,7 +38008,7 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; VI-NEXT:    v_lshlrev_b32_e32 v31, 16, v35
 ; VI-NEXT:    v_or_b32_sdwa v28, v28, v30 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_lshlrev_b32_e32 v30, 16, v33
-; VI-NEXT:    v_readlane_b32 s30, v60, 6
+; VI-NEXT:    v_readlane_b32 s30, v60, 4
 ; VI-NEXT:    v_or_b32_sdwa v11, v11, v54 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v13, v13, v52 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v15, v15, v50 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
@@ -37333,9 +38019,7 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; VI-NEXT:    v_or_b32_sdwa v25, v25, v32 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v27, v27, v31 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v29, v29, v30 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; VI-NEXT:    v_readlane_b32 s31, v60, 7
-; VI-NEXT:    v_readlane_b32 s39, v60, 5
-; VI-NEXT:    v_readlane_b32 s38, v60, 4
+; VI-NEXT:    v_readlane_b32 s31, v60, 5
 ; VI-NEXT:    v_readlane_b32 s37, v60, 3
 ; VI-NEXT:    v_readlane_b32 s36, v60, 2
 ; VI-NEXT:    v_readlane_b32 s35, v60, 1
@@ -37364,10 +38048,8 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX9-NEXT:    buffer_store_dword v57, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
 ; GFX9-NEXT:    buffer_store_dword v58, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
 ; GFX9-NEXT:    buffer_store_dword v59, off, s[0:3], s32 ; 4-byte Folded Spill
-; GFX9-NEXT:    v_writelane_b32 v60, s34, 0
-; GFX9-NEXT:    v_writelane_b32 v60, s35, 1
-; GFX9-NEXT:    v_writelane_b32 v60, s30, 2
-; GFX9-NEXT:    v_writelane_b32 v60, s31, 3
+; GFX9-NEXT:    v_writelane_b32 v60, s30, 0
+; GFX9-NEXT:    v_writelane_b32 v60, s31, 1
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v16
 ; GFX9-NEXT:    v_readfirstlane_b32 s9, v15
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v14
@@ -37386,7 +38068,7 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s46, s9, 16
 ; GFX9-NEXT:    s_lshr_b32 s77, s8, 16
@@ -37411,15 +38093,53 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX9-NEXT:    s_lshr_b32 s72, s25, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s24, 16
 ; GFX9-NEXT:    s_lshr_b32 s73, s23, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s22, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s22, 16
 ; GFX9-NEXT:    s_lshr_b32 s74, s21, 16
-; GFX9-NEXT:    s_lshr_b32 s31, s20, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s20, 16
 ; GFX9-NEXT:    s_lshr_b32 s75, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s34, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s30, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s76, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_lshr_b32 s31, s16, 16
+; GFX9-NEXT:    s_mov_b64 s[44:45], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[44:45], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr31
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $vcc_hi
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[44:45], s[44:45], exec
+; GFX9-NEXT:    s_cselect_b32 s44, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s44, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[28:29], s[8:9], 1.0
 ; GFX9-NEXT:    v_add_f64 v[26:27], s[10:11], 1.0
 ; GFX9-NEXT:    v_add_f64 v[24:25], s[12:13], 1.0
@@ -37465,40 +38185,8 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v46, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v59, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v56, 16, v0
-; GFX9-NEXT:    s_branch .LBB49_5
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr35
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr31
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:    s_branch .LBB49_6
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
@@ -37529,10 +38217,10 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s11
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s9
-; GFX9-NEXT:    v_mov_b32_e32 v56, s35
-; GFX9-NEXT:    v_mov_b32_e32 v46, s34
-; GFX9-NEXT:    v_mov_b32_e32 v44, s31
-; GFX9-NEXT:    v_mov_b32_e32 v42, s30
+; GFX9-NEXT:    v_mov_b32_e32 v56, s31
+; GFX9-NEXT:    v_mov_b32_e32 v46, s30
+; GFX9-NEXT:    v_mov_b32_e32 v44, vcc_hi
+; GFX9-NEXT:    v_mov_b32_e32 v42, vcc_lo
 ; GFX9-NEXT:    v_mov_b32_e32 v40, s95
 ; GFX9-NEXT:    v_mov_b32_e32 v54, s94
 ; GFX9-NEXT:    v_mov_b32_e32 v52, s93
@@ -37559,7 +38247,7 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v37, s56
 ; GFX9-NEXT:    v_mov_b32_e32 v35, s47
 ; GFX9-NEXT:    v_mov_b32_e32 v33, s46
-; GFX9-NEXT:  .LBB49_5: ; %end
+; GFX9-NEXT:  .LBB49_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -37614,7 +38302,7 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX9-NEXT:    v_and_b32_e32 v27, 0xffff, v27
 ; GFX9-NEXT:    v_and_b32_e32 v28, 0xffff, v28
 ; GFX9-NEXT:    v_and_b32_e32 v29, 0xffff, v29
-; GFX9-NEXT:    v_readlane_b32 s30, v60, 2
+; GFX9-NEXT:    v_readlane_b32 s30, v60, 0
 ; GFX9-NEXT:    v_lshl_or_b32 v10, v54, 16, v10
 ; GFX9-NEXT:    v_lshl_or_b32 v12, v52, 16, v12
 ; GFX9-NEXT:    v_lshl_or_b32 v14, v50, 16, v14
@@ -37633,9 +38321,7 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX9-NEXT:    v_lshl_or_b32 v27, v35, 16, v27
 ; GFX9-NEXT:    v_lshl_or_b32 v28, v30, 16, v28
 ; GFX9-NEXT:    v_lshl_or_b32 v29, v33, 16, v29
-; GFX9-NEXT:    v_readlane_b32 s31, v60, 3
-; GFX9-NEXT:    v_readlane_b32 s35, v60, 1
-; GFX9-NEXT:    v_readlane_b32 s34, v60, 0
+; GFX9-NEXT:    v_readlane_b32 s31, v60, 1
 ; GFX9-NEXT:    s_or_saveexec_b64 s[4:5], -1
 ; GFX9-NEXT:    buffer_load_dword v60, off, s[0:3], s32 offset:48 ; 4-byte Folded Reload
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
@@ -37659,12 +38345,12 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s13, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s12, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s40, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s40, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s42, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s15, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s40, s15, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s72, s14, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s11, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s11, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s73, s10, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s43, s9, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s74, s8, 16
@@ -37692,9 +38378,46 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s93, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s63, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s94, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-TRUE16-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB49_3
+; GFX11-TRUE16-NEXT:  .LBB49_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s42, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr94
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr93
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr92
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr91
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:  .LBB49_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[28:29], s[14:15], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[26:27], s[10:11], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[24:25], s[8:9], 1.0
@@ -37740,40 +38463,8 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v70, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v83, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v80, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB49_5
-; GFX11-TRUE16-NEXT:  .LBB49_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr94
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr93
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr92
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr91
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    s_branch .LBB49_2
-; GFX11-TRUE16-NEXT:  .LBB49_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB49_6
+; GFX11-TRUE16-NEXT:  .LBB49_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -37802,9 +38493,9 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v36, s76 :: v_dual_mov_b32 v49, s45
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v34, s75 :: v_dual_mov_b32 v39, s44
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v32, s74 :: v_dual_mov_b32 v37, s43
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v30, s72 :: v_dual_mov_b32 v35, s42
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v82, s62 :: v_dual_mov_b32 v33, s41
-; GFX11-TRUE16-NEXT:  .LBB49_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v30, s72 :: v_dual_mov_b32 v35, s41
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v82, s62 :: v_dual_mov_b32 v33, s40
+; GFX11-TRUE16-NEXT:  .LBB49_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v80.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v83.l
@@ -37856,12 +38547,12 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s13, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s12, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s40, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s40, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s42, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s15, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s40, s15, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s72, s14, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s11, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s11, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s73, s10, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s43, s9, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s74, s8, 16
@@ -37889,56 +38580,9 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s93, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s63, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s94, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-FAKE16-NEXT:  .LBB49_2: ; %cmp.true
-; GFX11-FAKE16-NEXT:    v_add_f64 v[25:26], s[14:15], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[27:28], s[10:11], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[29:30], s[8:9], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[20:21], s[6:7], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[22:23], s[4:5], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[15:16], s[12:13], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[17:18], s[28:29], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[31:32], s[26:27], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[10:11], s[24:25], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[12:13], s[22:23], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[5:6], s[20:21], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[7:8], s[18:19], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[33:34], s[16:17], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[0:1], s[2:3], 1.0
-; GFX11-FAKE16-NEXT:    v_add_f64 v[2:3], s[0:1], 1.0
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v37, 16, v26
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v25
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v38, 16, v28
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v36, 16, v27
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v48, 16, v30
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v24, 16, v29
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v50, 16, v21
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v20
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v51, 16, v23
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v49, 16, v22
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v53, 16, v16
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v19, 16, v15
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v54, 16, v18
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v52, 16, v17
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v64, 16, v32
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v14, 16, v31
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v66, 16, v11
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v55, 16, v10
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v67, 16, v13
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v65, 16, v12
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v69, 16, v6
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v9, 16, v5
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v70, 16, v8
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v68, 16, v7
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v80, 16, v34
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v33
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v82, 16, v1
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v71, 16, v0
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v83, 16, v3
-; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v81, 16, v2
-; GFX11-FAKE16-NEXT:    s_branch .LBB49_5
-; GFX11-FAKE16-NEXT:  .LBB49_3:
+; GFX11-FAKE16-NEXT:    s_branch .LBB49_3
+; GFX11-FAKE16-NEXT:  .LBB49_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s42, -1
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr94
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr93
@@ -37966,11 +38610,63 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    s_branch .LBB49_2
-; GFX11-FAKE16-NEXT:  .LBB49_4:
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:  .LBB49_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
+; GFX11-FAKE16-NEXT:    v_add_f64 v[25:26], s[14:15], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[27:28], s[10:11], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[29:30], s[8:9], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[20:21], s[6:7], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[22:23], s[4:5], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[15:16], s[12:13], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[17:18], s[28:29], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[31:32], s[26:27], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[10:11], s[24:25], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[12:13], s[22:23], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[5:6], s[20:21], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[7:8], s[18:19], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[33:34], s[16:17], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[0:1], s[2:3], 1.0
+; GFX11-FAKE16-NEXT:    v_add_f64 v[2:3], s[0:1], 1.0
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v37, 16, v26
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v35, 16, v25
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v38, 16, v28
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v36, 16, v27
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v48, 16, v30
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v24, 16, v29
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v50, 16, v21
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v39, 16, v20
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v51, 16, v23
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v49, 16, v22
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v53, 16, v16
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v19, 16, v15
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v54, 16, v18
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v52, 16, v17
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v64, 16, v32
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v14, 16, v31
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v66, 16, v11
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v55, 16, v10
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v67, 16, v13
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v65, 16, v12
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v69, 16, v6
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v9, 16, v5
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v70, 16, v8
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v68, 16, v7
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v80, 16, v34
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v33
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v82, 16, v1
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v71, 16, v0
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v83, 16, v3
+; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v81, 16, v2
+; GFX11-FAKE16-NEXT:    s_branch .LBB49_6
+; GFX11-FAKE16-NEXT:  .LBB49_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v33, s16
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v7, s18
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v5, s20 :: v_dual_mov_b32 v12, s22
@@ -38000,8 +38696,8 @@ define inreg <60 x i16> @bitcast_v15f64_to_v60i16_scalar(<15 x double> inreg %a,
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v67, s58 :: v_dual_mov_b32 v54, s47
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v53, s46 :: v_dual_mov_b32 v50, s44
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v51, s45 :: v_dual_mov_b32 v48, s43
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v38, s42 :: v_dual_mov_b32 v37, s41
-; GFX11-FAKE16-NEXT:  .LBB49_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v38, s41 :: v_dual_mov_b32 v37, s40
+; GFX11-FAKE16-NEXT:  .LBB49_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v33, 0xffff, v33
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v31, 0xffff, v31
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -39465,10 +40161,8 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    v_writelane_b32 v30, s87, 29
 ; SI-NEXT:    v_writelane_b32 v30, s96, 30
 ; SI-NEXT:    v_writelane_b32 v30, s97, 31
-; SI-NEXT:    v_writelane_b32 v30, s98, 32
-; SI-NEXT:    v_writelane_b32 v30, s99, 33
-; SI-NEXT:    v_writelane_b32 v30, s30, 34
-; SI-NEXT:    v_writelane_b32 v30, s31, 35
+; SI-NEXT:    v_writelane_b32 v30, s30, 32
+; SI-NEXT:    v_writelane_b32 v30, s31, 33
 ; SI-NEXT:    v_readfirstlane_b32 s7, v15
 ; SI-NEXT:    v_readfirstlane_b32 s9, v14
 ; SI-NEXT:    v_readfirstlane_b32 s11, v13
@@ -39480,25 +40174,25 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    v_readfirstlane_b32 s79, v7
 ; SI-NEXT:    v_readfirstlane_b32 s89, v6
 ; SI-NEXT:    v_readfirstlane_b32 s93, v5
-; SI-NEXT:    v_readfirstlane_b32 s30, v4
-; SI-NEXT:    v_readfirstlane_b32 s35, v3
-; SI-NEXT:    v_readfirstlane_b32 s70, v2
-; SI-NEXT:    v_readfirstlane_b32 s81, v1
-; SI-NEXT:    v_readfirstlane_b32 s84, v0
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v4
+; SI-NEXT:    v_readfirstlane_b32 s31, v3
+; SI-NEXT:    v_readfirstlane_b32 s68, v2
+; SI-NEXT:    v_readfirstlane_b32 s71, v1
+; SI-NEXT:    v_readfirstlane_b32 s82, v0
 ; SI-NEXT:    s_lshr_b32 s90, s29, 16
 ; SI-NEXT:    s_lshr_b32 s92, s28, 16
 ; SI-NEXT:    s_lshr_b32 s94, s27, 16
-; SI-NEXT:    s_lshr_b32 s31, s26, 16
-; SI-NEXT:    s_lshr_b32 s68, s25, 16
-; SI-NEXT:    s_lshr_b32 s71, s24, 16
-; SI-NEXT:    s_lshr_b32 s82, s23, 16
-; SI-NEXT:    s_lshr_b32 s85, s22, 16
-; SI-NEXT:    s_lshr_b32 s86, s21, 16
-; SI-NEXT:    s_lshr_b32 s87, s20, 16
-; SI-NEXT:    s_lshr_b32 s96, s19, 16
-; SI-NEXT:    s_lshr_b32 s97, s18, 16
-; SI-NEXT:    s_lshr_b32 s98, s17, 16
-; SI-NEXT:    s_lshr_b32 s99, s16, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s26, 16
+; SI-NEXT:    s_lshr_b32 s34, s25, 16
+; SI-NEXT:    s_lshr_b32 s69, s24, 16
+; SI-NEXT:    s_lshr_b32 s80, s23, 16
+; SI-NEXT:    s_lshr_b32 s83, s22, 16
+; SI-NEXT:    s_lshr_b32 s84, s21, 16
+; SI-NEXT:    s_lshr_b32 s85, s20, 16
+; SI-NEXT:    s_lshr_b32 s86, s19, 16
+; SI-NEXT:    s_lshr_b32 s87, s18, 16
+; SI-NEXT:    s_lshr_b32 s96, s17, 16
+; SI-NEXT:    s_lshr_b32 s97, s16, 16
 ; SI-NEXT:    s_lshr_b32 s6, s7, 16
 ; SI-NEXT:    s_lshr_b32 s8, s9, 16
 ; SI-NEXT:    s_lshr_b32 s10, s11, 16
@@ -39510,47 +40204,47 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    s_lshr_b32 s78, s79, 16
 ; SI-NEXT:    s_lshr_b32 s88, s89, 16
 ; SI-NEXT:    s_lshr_b32 s91, s93, 16
-; SI-NEXT:    s_lshr_b32 s95, s30, 16
-; SI-NEXT:    s_lshr_b32 s34, s35, 16
-; SI-NEXT:    s_lshr_b32 s69, s70, 16
-; SI-NEXT:    s_lshr_b32 s80, s81, 16
-; SI-NEXT:    s_lshr_b32 s83, s84, 16
+; SI-NEXT:    s_lshr_b32 s95, vcc_lo, 16
+; SI-NEXT:    s_lshr_b32 s30, s31, 16
+; SI-NEXT:    s_lshr_b32 s35, s68, 16
+; SI-NEXT:    s_lshr_b32 s70, s71, 16
+; SI-NEXT:    s_lshr_b32 s81, s82, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v16
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB51_4
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s98, 16
+; SI-NEXT:    s_lshl_b32 s41, s96, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s94, 16
@@ -39561,19 +40255,19 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s90, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s84, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_and_b32 s4, s82, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s81, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_and_b32 s4, s71, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_and_b32 s4, s68, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s53, s4, s5
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s54, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s93, 0xffff
@@ -39609,61 +40303,70 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB51_3
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s36, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s96, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s37, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s22, s22, 3
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s26, s26, 3
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s46, s4, 0x30000
@@ -39680,29 +40383,29 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s90, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s84, s84, 3
+; SI-NEXT:    s_add_i32 s82, s82, 3
 ; SI-NEXT:    s_add_i32 s49, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s84, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_and_b32 s4, s82, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s81, s81, 3
+; SI-NEXT:    s_add_i32 s71, s71, 3
 ; SI-NEXT:    s_add_i32 s50, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s81, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_and_b32 s4, s71, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s70, s70, 3
+; SI-NEXT:    s_add_i32 s68, s68, 3
 ; SI-NEXT:    s_add_i32 s51, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_and_b32 s4, s68, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s35, s35, 3
+; SI-NEXT:    s_add_i32 s31, s31, 3
 ; SI-NEXT:    s_add_i32 s52, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s30, s30, 3
+; SI-NEXT:    s_add_i32 vcc_lo, vcc_lo, 3
 ; SI-NEXT:    s_add_i32 s53, s4, 0x30000
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s93, s93, 3
@@ -39761,8 +40464,8 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s5, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s65, s4, 0x30000
-; SI-NEXT:  .LBB51_3: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v30, 34
+; SI-NEXT:  .LBB51_5: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v30, 32
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -39793,9 +40496,7 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    v_mov_b32_e32 v27, s63
 ; SI-NEXT:    v_mov_b32_e32 v28, s64
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
-; SI-NEXT:    v_readlane_b32 s31, v30, 35
-; SI-NEXT:    v_readlane_b32 s99, v30, 33
-; SI-NEXT:    v_readlane_b32 s98, v30, 32
+; SI-NEXT:    v_readlane_b32 s31, v30, 33
 ; SI-NEXT:    v_readlane_b32 s97, v30, 31
 ; SI-NEXT:    v_readlane_b32 s96, v30, 30
 ; SI-NEXT:    v_readlane_b32 s87, v30, 29
@@ -39833,9 +40534,6 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB51_4:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB51_2
 ;
 ; VI-LABEL: bitcast_v60i16_to_v15f64_scalar:
 ; VI:       ; %bb.0:
@@ -39876,312 +40574,399 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; VI-NEXT:    v_writelane_b32 v30, s87, 29
 ; VI-NEXT:    v_writelane_b32 v30, s30, 30
 ; VI-NEXT:    v_writelane_b32 v30, s31, 31
-; VI-NEXT:    v_readfirstlane_b32 s11, v13
-; VI-NEXT:    s_lshr_b32 s63, s11, 16
-; VI-NEXT:    v_readfirstlane_b32 s13, v12
+; VI-NEXT:    s_lshr_b32 s14, s20, 16
 ; VI-NEXT:    ; implicit-def: $vgpr31 : SGPR spill to VGPR lane
-; VI-NEXT:    s_lshr_b32 s62, s13, 16
-; VI-NEXT:    v_readfirstlane_b32 s15, v11
-; VI-NEXT:    v_writelane_b32 v31, s63, 0
-; VI-NEXT:    s_lshr_b32 s61, s15, 16
-; VI-NEXT:    v_readfirstlane_b32 s73, v10
-; VI-NEXT:    v_writelane_b32 v31, s62, 1
-; VI-NEXT:    v_readfirstlane_b32 s7, v15
-; VI-NEXT:    v_readfirstlane_b32 s9, v14
-; VI-NEXT:    s_lshr_b32 s60, s73, 16
-; VI-NEXT:    v_readfirstlane_b32 s75, v9
+; VI-NEXT:    s_lshr_b32 s42, s19, 16
+; VI-NEXT:    v_writelane_b32 v31, s14, 0
+; VI-NEXT:    s_lshr_b32 s43, s18, 16
+; VI-NEXT:    v_readfirstlane_b32 s6, v15
+; VI-NEXT:    v_readfirstlane_b32 s8, v14
+; VI-NEXT:    v_readfirstlane_b32 s10, v13
+; VI-NEXT:    v_readfirstlane_b32 s12, v12
+; VI-NEXT:    v_readfirstlane_b32 s87, v11
+; VI-NEXT:    v_readfirstlane_b32 s15, v10
+; VI-NEXT:    v_readfirstlane_b32 s72, v9
 ; VI-NEXT:    v_readfirstlane_b32 s77, v8
 ; VI-NEXT:    v_readfirstlane_b32 s79, v7
 ; VI-NEXT:    v_readfirstlane_b32 s89, v6
-; VI-NEXT:    v_readfirstlane_b32 s31, v5
-; VI-NEXT:    v_readfirstlane_b32 s68, v4
-; VI-NEXT:    v_readfirstlane_b32 s71, v3
-; VI-NEXT:    v_readfirstlane_b32 s82, v2
-; VI-NEXT:    v_readfirstlane_b32 s85, v1
-; VI-NEXT:    v_readfirstlane_b32 s6, v0
-; VI-NEXT:    v_writelane_b32 v31, s61, 2
-; VI-NEXT:    s_lshr_b32 s90, s29, 16
-; VI-NEXT:    s_lshr_b32 s30, s28, 16
-; VI-NEXT:    s_lshr_b32 s34, s27, 16
-; VI-NEXT:    s_lshr_b32 s69, s26, 16
-; VI-NEXT:    s_lshr_b32 s80, s25, 16
-; VI-NEXT:    s_lshr_b32 s83, s24, 16
-; VI-NEXT:    s_lshr_b32 s86, s23, 16
-; VI-NEXT:    s_lshr_b32 s8, s22, 16
-; VI-NEXT:    s_lshr_b32 s10, s21, 16
-; VI-NEXT:    s_lshr_b32 s12, s20, 16
-; VI-NEXT:    s_lshr_b32 s14, s19, 16
-; VI-NEXT:    s_lshr_b32 s72, s18, 16
-; VI-NEXT:    s_lshr_b32 s74, s17, 16
-; VI-NEXT:    s_lshr_b32 s76, s16, 16
-; VI-NEXT:    s_lshr_b32 s66, s7, 16
-; VI-NEXT:    s_lshr_b32 s67, s9, 16
-; VI-NEXT:    s_lshr_b32 s59, s75, 16
-; VI-NEXT:    s_lshr_b32 s58, s77, 16
-; VI-NEXT:    s_lshr_b32 s78, s79, 16
-; VI-NEXT:    s_lshr_b32 s88, s89, 16
-; VI-NEXT:    s_lshr_b32 s91, s31, 16
-; VI-NEXT:    s_lshr_b32 s35, s68, 16
-; VI-NEXT:    s_lshr_b32 s70, s71, 16
-; VI-NEXT:    s_lshr_b32 s81, s82, 16
-; VI-NEXT:    s_lshr_b32 s84, s85, 16
-; VI-NEXT:    s_lshr_b32 s87, s6, 16
+; VI-NEXT:    v_readfirstlane_b32 vcc_hi, v5
+; VI-NEXT:    v_readfirstlane_b32 s34, v4
+; VI-NEXT:    v_readfirstlane_b32 s69, v3
+; VI-NEXT:    v_readfirstlane_b32 s80, v2
+; VI-NEXT:    v_readfirstlane_b32 s83, v1
+; VI-NEXT:    v_readfirstlane_b32 s86, v0
+; VI-NEXT:    v_writelane_b32 v31, s42, 1
+; VI-NEXT:    s_lshr_b32 s35, s29, 16
+; VI-NEXT:    s_lshr_b32 s68, s28, 16
+; VI-NEXT:    s_lshr_b32 s70, s27, 16
+; VI-NEXT:    s_lshr_b32 s81, s26, 16
+; VI-NEXT:    s_lshr_b32 s84, s25, 16
+; VI-NEXT:    s_lshr_b32 s7, s24, 16
+; VI-NEXT:    s_lshr_b32 s11, s23, 16
+; VI-NEXT:    s_lshr_b32 s73, s22, 16
+; VI-NEXT:    s_lshr_b32 s75, s21, 16
+; VI-NEXT:    s_lshr_b32 s41, s17, 16
+; VI-NEXT:    s_lshr_b32 s5, s16, 16
+; VI-NEXT:    s_lshr_b32 s66, s6, 16
+; VI-NEXT:    s_lshr_b32 s74, s8, 16
+; VI-NEXT:    s_lshr_b32 s76, s10, 16
+; VI-NEXT:    s_lshr_b32 s78, s12, 16
+; VI-NEXT:    s_lshr_b32 s88, s87, 16
+; VI-NEXT:    s_lshr_b32 s90, s15, 16
+; VI-NEXT:    s_lshr_b32 s91, s72, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s77, 16
+; VI-NEXT:    s_lshr_b32 s30, s79, 16
+; VI-NEXT:    s_lshr_b32 s31, s89, 16
+; VI-NEXT:    s_lshr_b32 s67, vcc_hi, 16
+; VI-NEXT:    s_lshr_b32 s71, s34, 16
+; VI-NEXT:    s_lshr_b32 s82, s69, 16
+; VI-NEXT:    s_lshr_b32 s85, s80, 16
+; VI-NEXT:    s_lshr_b32 s9, s83, 16
+; VI-NEXT:    s_lshr_b32 s13, s86, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
-; VI-NEXT:    v_writelane_b32 v31, s60, 3
+; VI-NEXT:    v_writelane_b32 v31, s43, 2
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    v_writelane_b32 v31, s59, 4
-; VI-NEXT:    v_writelane_b32 v31, s58, 5
-; VI-NEXT:    s_cbranch_scc0 .LBB51_4
+; VI-NEXT:    v_writelane_b32 v31, s41, 3
+; VI-NEXT:    v_writelane_b32 v31, s5, 4
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s76, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s72, 16
+; VI-NEXT:    s_lshl_b32 s5, s43, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s14, 16
+; VI-NEXT:    s_lshl_b32 s5, s42, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s74, 16
+; VI-NEXT:    s_lshl_b32 s41, s41, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s12, 16
+; VI-NEXT:    s_lshl_b32 s5, s14, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s10, 16
+; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s8, 16
+; VI-NEXT:    s_lshl_b32 s5, s73, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s48, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
-; VI-NEXT:    s_lshl_b32 s5, s90, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s6
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s86
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s85
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s83
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s82
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s80
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s68
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s34
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s31
-; VI-NEXT:    s_lshl_b32 s5, s91, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_hi
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s89
-; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s79
-; VI-NEXT:    s_lshl_b32 s5, s78, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s57, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s77
-; VI-NEXT:    s_lshl_b32 s5, s58, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s58, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s75
-; VI-NEXT:    s_lshl_b32 s5, s59, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s72
+; VI-NEXT:    s_lshl_b32 s5, s91, 16
 ; VI-NEXT:    s_or_b32 s59, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s73
-; VI-NEXT:    s_lshl_b32 s5, s60, 16
-; VI-NEXT:    s_or_b32 s60, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s15
-; VI-NEXT:    s_lshl_b32 s5, s61, 16
+; VI-NEXT:    s_lshl_b32 s5, s90, 16
+; VI-NEXT:    s_or_b32 s60, s4, s5
+; VI-NEXT:    s_and_b32 s4, 0xffff, s87
+; VI-NEXT:    s_lshl_b32 s5, s88, 16
 ; VI-NEXT:    s_or_b32 s61, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s13
-; VI-NEXT:    s_lshl_b32 s5, s62, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s12
+; VI-NEXT:    s_lshl_b32 s5, s78, 16
 ; VI-NEXT:    s_or_b32 s62, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s11
-; VI-NEXT:    s_lshl_b32 s5, s63, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s10
+; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s63, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s9
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s8
+; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s64, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s7
+; VI-NEXT:    s_and_b32 s4, 0xffff, s6
 ; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s65, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB51_3
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    v_writelane_b32 v31, s26, 5
+; VI-NEXT:    s_mov_b32 s26, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, s27
+; VI-NEXT:    s_mov_b32 s27, s89
+; VI-NEXT:    s_mov_b32 s89, s28
+; VI-NEXT:    s_mov_b32 s28, s79
+; VI-NEXT:    s_mov_b32 s79, s29
+; VI-NEXT:    s_mov_b32 s29, s77
+; VI-NEXT:    s_mov_b32 s77, s13
+; VI-NEXT:    s_mov_b32 s14, s12
+; VI-NEXT:    s_mov_b32 s13, s11
+; VI-NEXT:    s_mov_b32 s12, s10
+; VI-NEXT:    s_mov_b32 s11, s9
+; VI-NEXT:    s_mov_b32 s10, s8
+; VI-NEXT:    s_mov_b32 s9, s7
+; VI-NEXT:    s_mov_b32 s8, s6
+; VI-NEXT:    s_mov_b32 s7, s85
+; VI-NEXT:    s_mov_b32 s85, s82
+; VI-NEXT:    s_mov_b32 s82, s71
+; VI-NEXT:    s_mov_b32 s71, s68
+; VI-NEXT:    s_mov_b32 s68, s35
+; VI-NEXT:    s_mov_b32 s35, s31
+; VI-NEXT:    s_mov_b32 s31, s30
+; VI-NEXT:    s_mov_b32 s30, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, s91
+; VI-NEXT:    s_mov_b32 s91, s90
+; VI-NEXT:    s_mov_b32 s90, s88
+; VI-NEXT:    s_mov_b32 s88, s78
+; VI-NEXT:    s_mov_b32 s78, s76
+; VI-NEXT:    s_mov_b32 s76, s74
+; VI-NEXT:    s_mov_b32 s74, s66
+; VI-NEXT:    s_mov_b32 s6, s75
+; VI-NEXT:    s_mov_b32 s75, s72
+; VI-NEXT:    s_mov_b32 s72, s73
+; VI-NEXT:    s_mov_b32 s73, s15
+; VI-NEXT:    s_mov_b32 s15, s87
+; VI-NEXT:    s_mov_b32 s87, s84
+; VI-NEXT:    s_mov_b32 s84, s81
+; VI-NEXT:    s_mov_b32 s81, s70
+; VI-NEXT:    s_mov_b32 s70, s67
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    s_mov_b32 s67, s70
+; VI-NEXT:    s_mov_b32 s70, s81
+; VI-NEXT:    s_mov_b32 s81, s84
+; VI-NEXT:    s_mov_b32 s84, s87
+; VI-NEXT:    s_mov_b32 s87, s15
+; VI-NEXT:    s_mov_b32 s15, s73
+; VI-NEXT:    s_mov_b32 s73, s72
+; VI-NEXT:    s_mov_b32 s72, s75
+; VI-NEXT:    s_mov_b32 s75, s6
+; VI-NEXT:    s_mov_b32 s66, s74
+; VI-NEXT:    s_mov_b32 s74, s76
+; VI-NEXT:    s_mov_b32 s76, s78
+; VI-NEXT:    s_mov_b32 s78, s88
+; VI-NEXT:    s_mov_b32 s88, s90
+; VI-NEXT:    s_mov_b32 s90, s91
+; VI-NEXT:    s_mov_b32 s91, vcc_lo
+; VI-NEXT:    s_mov_b32 vcc_lo, s30
+; VI-NEXT:    s_mov_b32 s30, s31
+; VI-NEXT:    s_mov_b32 s31, s35
+; VI-NEXT:    s_mov_b32 s35, s68
+; VI-NEXT:    s_mov_b32 s68, s71
+; VI-NEXT:    s_mov_b32 s71, s82
+; VI-NEXT:    s_mov_b32 s82, s85
+; VI-NEXT:    s_mov_b32 s85, s7
+; VI-NEXT:    s_mov_b32 s6, s8
+; VI-NEXT:    s_mov_b32 s7, s9
+; VI-NEXT:    s_mov_b32 s8, s10
+; VI-NEXT:    s_mov_b32 s9, s11
+; VI-NEXT:    s_mov_b32 s10, s12
+; VI-NEXT:    s_mov_b32 s11, s13
+; VI-NEXT:    s_mov_b32 s12, s14
+; VI-NEXT:    s_mov_b32 s13, s77
+; VI-NEXT:    s_mov_b32 s77, s29
+; VI-NEXT:    s_mov_b32 s29, s79
+; VI-NEXT:    s_mov_b32 s79, s28
+; VI-NEXT:    s_mov_b32 s28, s89
+; VI-NEXT:    s_mov_b32 s89, s27
+; VI-NEXT:    s_mov_b32 s27, vcc_hi
+; VI-NEXT:    s_mov_b32 vcc_hi, s26
+; VI-NEXT:    v_readlane_b32 s26, v31, 5
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 4
 ; VI-NEXT:    s_and_b32 s4, s16, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s76, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_add_i32 s17, s17, 3
+; VI-NEXT:    v_readlane_b32 s14, v31, 3
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_and_b32 s5, s17, 0xffff
-; VI-NEXT:    s_lshl_b32 s16, s74, 16
-; VI-NEXT:    s_or_b32 s5, s16, s5
+; VI-NEXT:    s_lshl_b32 s14, s14, 16
+; VI-NEXT:    s_or_b32 s5, s14, s5
+; VI-NEXT:    s_add_i32 s37, s5, 0x30000
 ; VI-NEXT:    s_add_i32 s18, s18, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 2
 ; VI-NEXT:    s_add_i32 s36, s4, 0x30000
-; VI-NEXT:    s_add_i32 s37, s5, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s72, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s19, s19, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 1
 ; VI-NEXT:    s_add_i32 s38, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s19, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s14, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s20, s20, 3
+; VI-NEXT:    v_readlane_b32 s5, v31, 0
 ; VI-NEXT:    s_add_i32 s39, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s20, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s12, 16
+; VI-NEXT:    s_lshl_b32 s5, s5, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s21, s21, 3
 ; VI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s21, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s10, 16
+; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s22, s22, 3
 ; VI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s22, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s8, 16
+; VI-NEXT:    s_lshl_b32 s5, s73, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s23, s23, 3
 ; VI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s23, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s24, s24, 3
 ; VI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s24, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s25, s25, 3
 ; VI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s25, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s26, s26, 3
 ; VI-NEXT:    s_add_i32 s45, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s26, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s27, s27, 3
 ; VI-NEXT:    s_add_i32 s46, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s27, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s28, s28, 3
 ; VI-NEXT:    s_add_i32 s47, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s28, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s30, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s29, s29, 3
 ; VI-NEXT:    s_add_i32 s48, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s29, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s90, 16
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s6, s6, 3
+; VI-NEXT:    s_add_i32 s86, s86, 3
 ; VI-NEXT:    s_add_i32 s49, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s6, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_and_b32 s4, s86, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s85, s85, 3
+; VI-NEXT:    s_add_i32 s83, s83, 3
 ; VI-NEXT:    s_add_i32 s50, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s85, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_and_b32 s4, s83, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s82, s82, 3
+; VI-NEXT:    s_add_i32 s80, s80, 3
 ; VI-NEXT:    s_add_i32 s51, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s82, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_and_b32 s4, s80, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s71, s71, 3
+; VI-NEXT:    s_add_i32 s69, s69, 3
 ; VI-NEXT:    s_add_i32 s52, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s71, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_and_b32 s4, s69, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s68, s68, 3
+; VI-NEXT:    s_add_i32 s34, s34, 3
 ; VI-NEXT:    s_add_i32 s53, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s68, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s35, 16
+; VI-NEXT:    s_and_b32 s4, s34, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s31, s31, 3
+; VI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; VI-NEXT:    s_add_i32 s54, s4, 0x30000
-; VI-NEXT:    s_and_b32 s4, s31, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s91, 16
+; VI-NEXT:    s_and_b32 s4, vcc_hi, 0xffff
+; VI-NEXT:    s_lshl_b32 s5, s67, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s89, s89, 3
 ; VI-NEXT:    s_add_i32 s55, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s89, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_lshl_b32 s5, s31, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s79, s79, 3
 ; VI-NEXT:    s_add_i32 s56, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s79, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s78, 16
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s77, s77, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 5
 ; VI-NEXT:    s_add_i32 s57, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s77, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s75, s75, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 4
+; VI-NEXT:    s_add_i32 s75, s72, 3
 ; VI-NEXT:    s_add_i32 s58, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s75, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s91, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s73, s73, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 3
+; VI-NEXT:    s_add_i32 s73, s15, 3
 ; VI-NEXT:    s_add_i32 s59, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s73, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s90, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s15, s15, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 2
+; VI-NEXT:    s_add_i32 s15, s87, 3
 ; VI-NEXT:    s_add_i32 s60, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s15, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s88, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s13, s13, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 1
+; VI-NEXT:    s_add_i32 s13, s12, 3
 ; VI-NEXT:    s_add_i32 s61, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s13, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s78, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s11, s11, 3
-; VI-NEXT:    v_readlane_b32 s5, v31, 0
+; VI-NEXT:    s_add_i32 s11, s10, 3
 ; VI-NEXT:    s_add_i32 s62, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s11, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s5, 16
+; VI-NEXT:    s_lshl_b32 s5, s76, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s9, s9, 3
+; VI-NEXT:    s_add_i32 s9, s8, 3
 ; VI-NEXT:    s_add_i32 s63, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s9, 0xffff
-; VI-NEXT:    s_lshl_b32 s5, s67, 16
+; VI-NEXT:    s_lshl_b32 s5, s74, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
-; VI-NEXT:    s_add_i32 s7, s7, 3
+; VI-NEXT:    s_add_i32 s7, s6, 3
 ; VI-NEXT:    s_add_i32 s64, s4, 0x30000
 ; VI-NEXT:    s_and_b32 s4, s7, 0xffff
 ; VI-NEXT:    s_lshl_b32 s5, s66, 16
 ; VI-NEXT:    s_or_b32 s4, s5, s4
 ; VI-NEXT:    s_add_i32 s65, s4, 0x30000
-; VI-NEXT:  .LBB51_3: ; %end
+; VI-NEXT:  .LBB51_5: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v30, 30
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
@@ -40250,13 +41035,6 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_4:
-; VI-NEXT:    s_mov_b32 vcc_lo, s66
-; VI-NEXT:    s_mov_b32 vcc_hi, s67
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_mov_b32 s67, vcc_hi
-; VI-NEXT:    s_mov_b32 s66, vcc_lo
-; VI-NEXT:    s_branch .LBB51_2
 ;
 ; GFX9-LABEL: bitcast_v60i16_to_v15f64_scalar:
 ; GFX9:       ; %bb.0:
@@ -40356,10 +41134,18 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s76
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s64, s74, s75
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s65, s72, s73
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_4
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v0, s36, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s37, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v2, s38, 3 op_sel_hi:[1,0]
@@ -40390,10 +41176,8 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; GFX9-NEXT:    v_pk_add_u16 v27, s63, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v28, s64, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v29, s65, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB51_5
-; GFX9-NEXT:  .LBB51_3:
-; GFX9-NEXT:    s_branch .LBB51_2
-; GFX9-NEXT:  .LBB51_4:
+; GFX9-NEXT:    s_branch .LBB51_6
+; GFX9-NEXT:  .LBB51_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -40426,7 +41210,7 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB51_5: ; %end
+; GFX9-NEXT:  .LBB51_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
 ; GFX9-NEXT:    v_readlane_b32 s64, v32, 12
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
@@ -40525,11 +41309,16 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s28, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s29, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB51_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB51_4
-; GFX11-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB51_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
@@ -40561,8 +41350,6 @@ define inreg <15 x double> @bitcast_v60i16_to_v15f64_scalar(<60 x i16> inreg %a,
 ; GFX11-NEXT:    v_pk_add_u16 v28, s28, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v29, s29, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB51_3:
-; GFX11-NEXT:    s_branch .LBB51_2
 ; GFX11-NEXT:  .LBB51_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -41487,7 +42274,7 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s43, v1
 ; SI-NEXT:    s_cmp_lg_u32 s42, 0
 ; SI-NEXT:    v_readfirstlane_b32 s42, v0
-; SI-NEXT:    s_cbranch_scc0 .LBB53_3
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s64, s15, 16
 ; SI-NEXT:    s_lshr_b32 s55, s41, 16
@@ -41518,9 +42305,47 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; SI-NEXT:    s_lshr_b64 s[90:91], s[22:23], 16
 ; SI-NEXT:    s_lshr_b64 s[92:93], s[20:21], 16
 ; SI-NEXT:    s_lshr_b64 s[94:95], s[18:19], 16
-; SI-NEXT:    s_lshr_b64 s[30:31], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB53_4
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_lshr_b64 vcc, s[16:17], 16
+; SI-NEXT:    s_mov_b64 s[30:31], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[30:31], -1
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr35
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr90
+; SI-NEXT:    ; implicit-def: $sgpr37
+; SI-NEXT:    ; implicit-def: $sgpr88
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr78
+; SI-NEXT:    ; implicit-def: $sgpr39
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr74
+; SI-NEXT:    ; implicit-def: $sgpr49
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr51
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr53
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr54
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $sgpr55
+; SI-NEXT:    ; implicit-def: $sgpr64
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[30:31], s[30:31], exec
+; SI-NEXT:    s_cselect_b32 s45, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s45, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f64 v[28:29], s[14:15], 1.0
 ; SI-NEXT:    v_add_f64 v[26:27], s[40:41], 1.0
 ; SI-NEXT:    v_add_f64 v[24:25], s[12:13], 1.0
@@ -41573,40 +42398,8 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; SI-NEXT:    v_lshrrev_b32_e32 v60, 16, v3
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_lshrrev_b32_e32 v61, 16, v1
-; SI-NEXT:    s_branch .LBB53_5
-; SI-NEXT:  .LBB53_3:
-; SI-NEXT:    ; implicit-def: $sgpr30
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr94
-; SI-NEXT:    ; implicit-def: $sgpr35
-; SI-NEXT:    ; implicit-def: $sgpr92
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr90
-; SI-NEXT:    ; implicit-def: $sgpr37
-; SI-NEXT:    ; implicit-def: $sgpr88
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    ; implicit-def: $sgpr78
-; SI-NEXT:    ; implicit-def: $sgpr39
-; SI-NEXT:    ; implicit-def: $sgpr76
-; SI-NEXT:    ; implicit-def: $sgpr48
-; SI-NEXT:    ; implicit-def: $sgpr74
-; SI-NEXT:    ; implicit-def: $sgpr49
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr50
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr51
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr52
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr53
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr54
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr55
-; SI-NEXT:    ; implicit-def: $sgpr64
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    s_branch .LBB53_2
-; SI-NEXT:  .LBB53_4:
+; SI-NEXT:    s_branch .LBB53_6
+; SI-NEXT:  .LBB53_5:
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v3, s19
@@ -41659,7 +42452,7 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v60, s35
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v61, s34
-; SI-NEXT:    v_mov_b32_e32 v53, s30
+; SI-NEXT:    v_mov_b32_e32 v53, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v52, s94
 ; SI-NEXT:    v_mov_b32_e32 v51, s92
 ; SI-NEXT:    v_mov_b32_e32 v50, s90
@@ -41674,7 +42467,7 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v32, s56
 ; SI-NEXT:    v_mov_b32_e32 v31, s44
 ; SI-NEXT:    v_mov_b32_e32 v30, s46
-; SI-NEXT:  .LBB53_5: ; %end
+; SI-NEXT:  .LBB53_6: ; %end
 ; SI-NEXT:    v_lshlrev_b32_e32 v39, 16, v53
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v39
@@ -41824,10 +42617,8 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; VI-NEXT:    v_writelane_b32 v60, s35, 1
 ; VI-NEXT:    v_writelane_b32 v60, s36, 2
 ; VI-NEXT:    v_writelane_b32 v60, s37, 3
-; VI-NEXT:    v_writelane_b32 v60, s38, 4
-; VI-NEXT:    v_writelane_b32 v60, s39, 5
-; VI-NEXT:    v_writelane_b32 v60, s30, 6
-; VI-NEXT:    v_writelane_b32 v60, s31, 7
+; VI-NEXT:    v_writelane_b32 v60, s30, 4
+; VI-NEXT:    v_writelane_b32 v60, s31, 5
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
 ; VI-NEXT:    v_readfirstlane_b32 s9, v15
 ; VI-NEXT:    v_readfirstlane_b32 s8, v14
@@ -41846,7 +42637,7 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; VI-NEXT:    v_readfirstlane_b32 s5, v1
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_3
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s46, s9, 16
 ; VI-NEXT:    s_lshr_b32 s77, s8, 16
@@ -41863,23 +42654,61 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; VI-NEXT:    s_lshr_b32 s60, s7, 16
 ; VI-NEXT:    s_lshr_b32 s91, s6, 16
 ; VI-NEXT:    s_lshr_b32 s61, s5, 16
-; VI-NEXT:    s_lshr_b32 s30, s4, 16
+; VI-NEXT:    s_lshr_b32 vcc_lo, s4, 16
 ; VI-NEXT:    s_lshr_b32 s62, s29, 16
-; VI-NEXT:    s_lshr_b32 s31, s28, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s28, 16
 ; VI-NEXT:    s_lshr_b32 s63, s27, 16
-; VI-NEXT:    s_lshr_b32 s34, s26, 16
+; VI-NEXT:    s_lshr_b32 s30, s26, 16
 ; VI-NEXT:    s_lshr_b32 s72, s25, 16
-; VI-NEXT:    s_lshr_b32 s35, s24, 16
+; VI-NEXT:    s_lshr_b32 s31, s24, 16
 ; VI-NEXT:    s_lshr_b32 s73, s23, 16
-; VI-NEXT:    s_lshr_b32 s36, s22, 16
+; VI-NEXT:    s_lshr_b32 s34, s22, 16
 ; VI-NEXT:    s_lshr_b32 s74, s21, 16
-; VI-NEXT:    s_lshr_b32 s37, s20, 16
+; VI-NEXT:    s_lshr_b32 s35, s20, 16
 ; VI-NEXT:    s_lshr_b32 s75, s19, 16
-; VI-NEXT:    s_lshr_b32 s38, s18, 16
+; VI-NEXT:    s_lshr_b32 s36, s18, 16
 ; VI-NEXT:    s_lshr_b32 s76, s17, 16
-; VI-NEXT:    s_lshr_b32 s39, s16, 16
-; VI-NEXT:    s_cbranch_execnz .LBB53_4
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_lshr_b32 s37, s16, 16
+; VI-NEXT:    s_mov_b64 s[44:45], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[44:45], -1
+; VI-NEXT:    ; implicit-def: $sgpr37
+; VI-NEXT:    ; implicit-def: $sgpr76
+; VI-NEXT:    ; implicit-def: $sgpr36
+; VI-NEXT:    ; implicit-def: $sgpr75
+; VI-NEXT:    ; implicit-def: $sgpr35
+; VI-NEXT:    ; implicit-def: $sgpr74
+; VI-NEXT:    ; implicit-def: $sgpr34
+; VI-NEXT:    ; implicit-def: $sgpr73
+; VI-NEXT:    ; implicit-def: $sgpr31
+; VI-NEXT:    ; implicit-def: $sgpr72
+; VI-NEXT:    ; implicit-def: $sgpr30
+; VI-NEXT:    ; implicit-def: $sgpr63
+; VI-NEXT:    ; implicit-def: $vcc_hi
+; VI-NEXT:    ; implicit-def: $sgpr62
+; VI-NEXT:    ; implicit-def: $vcc_lo
+; VI-NEXT:    ; implicit-def: $sgpr61
+; VI-NEXT:    ; implicit-def: $sgpr91
+; VI-NEXT:    ; implicit-def: $sgpr60
+; VI-NEXT:    ; implicit-def: $sgpr90
+; VI-NEXT:    ; implicit-def: $sgpr59
+; VI-NEXT:    ; implicit-def: $sgpr89
+; VI-NEXT:    ; implicit-def: $sgpr58
+; VI-NEXT:    ; implicit-def: $sgpr88
+; VI-NEXT:    ; implicit-def: $sgpr57
+; VI-NEXT:    ; implicit-def: $sgpr79
+; VI-NEXT:    ; implicit-def: $sgpr56
+; VI-NEXT:    ; implicit-def: $sgpr78
+; VI-NEXT:    ; implicit-def: $sgpr47
+; VI-NEXT:    ; implicit-def: $sgpr77
+; VI-NEXT:    ; implicit-def: $sgpr46
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[44:45], s[44:45], exec
+; VI-NEXT:    s_cselect_b32 s44, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s44, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f64 v[28:29], s[8:9], 1.0
 ; VI-NEXT:    v_add_f64 v[26:27], s[10:11], 1.0
 ; VI-NEXT:    v_add_f64 v[24:25], s[12:13], 1.0
@@ -41925,40 +42754,8 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; VI-NEXT:    v_lshrrev_b32_e32 v46, 16, v2
 ; VI-NEXT:    v_lshrrev_b32_e32 v59, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v56, 16, v0
-; VI-NEXT:    s_branch .LBB53_5
-; VI-NEXT:  .LBB53_3:
-; VI-NEXT:    ; implicit-def: $sgpr39
-; VI-NEXT:    ; implicit-def: $sgpr76
-; VI-NEXT:    ; implicit-def: $sgpr38
-; VI-NEXT:    ; implicit-def: $sgpr75
-; VI-NEXT:    ; implicit-def: $sgpr37
-; VI-NEXT:    ; implicit-def: $sgpr74
-; VI-NEXT:    ; implicit-def: $sgpr36
-; VI-NEXT:    ; implicit-def: $sgpr73
-; VI-NEXT:    ; implicit-def: $sgpr35
-; VI-NEXT:    ; implicit-def: $sgpr72
-; VI-NEXT:    ; implicit-def: $sgpr34
-; VI-NEXT:    ; implicit-def: $sgpr63
-; VI-NEXT:    ; implicit-def: $sgpr31
-; VI-NEXT:    ; implicit-def: $sgpr62
-; VI-NEXT:    ; implicit-def: $sgpr30
-; VI-NEXT:    ; implicit-def: $sgpr61
-; VI-NEXT:    ; implicit-def: $sgpr91
-; VI-NEXT:    ; implicit-def: $sgpr60
-; VI-NEXT:    ; implicit-def: $sgpr90
-; VI-NEXT:    ; implicit-def: $sgpr59
-; VI-NEXT:    ; implicit-def: $sgpr89
-; VI-NEXT:    ; implicit-def: $sgpr58
-; VI-NEXT:    ; implicit-def: $sgpr88
-; VI-NEXT:    ; implicit-def: $sgpr57
-; VI-NEXT:    ; implicit-def: $sgpr79
-; VI-NEXT:    ; implicit-def: $sgpr56
-; VI-NEXT:    ; implicit-def: $sgpr78
-; VI-NEXT:    ; implicit-def: $sgpr47
-; VI-NEXT:    ; implicit-def: $sgpr77
-; VI-NEXT:    ; implicit-def: $sgpr46
-; VI-NEXT:    s_branch .LBB53_2
-; VI-NEXT:  .LBB53_4:
+; VI-NEXT:    s_branch .LBB53_6
+; VI-NEXT:  .LBB53_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    v_mov_b32_e32 v4, s20
@@ -41989,14 +42786,14 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v27, s11
 ; VI-NEXT:    v_mov_b32_e32 v28, s8
 ; VI-NEXT:    v_mov_b32_e32 v29, s9
-; VI-NEXT:    v_mov_b32_e32 v56, s39
-; VI-NEXT:    v_mov_b32_e32 v46, s38
-; VI-NEXT:    v_mov_b32_e32 v44, s37
-; VI-NEXT:    v_mov_b32_e32 v42, s36
-; VI-NEXT:    v_mov_b32_e32 v40, s35
-; VI-NEXT:    v_mov_b32_e32 v54, s34
-; VI-NEXT:    v_mov_b32_e32 v52, s31
-; VI-NEXT:    v_mov_b32_e32 v50, s30
+; VI-NEXT:    v_mov_b32_e32 v56, s37
+; VI-NEXT:    v_mov_b32_e32 v46, s36
+; VI-NEXT:    v_mov_b32_e32 v44, s35
+; VI-NEXT:    v_mov_b32_e32 v42, s34
+; VI-NEXT:    v_mov_b32_e32 v40, s31
+; VI-NEXT:    v_mov_b32_e32 v54, s30
+; VI-NEXT:    v_mov_b32_e32 v52, vcc_hi
+; VI-NEXT:    v_mov_b32_e32 v50, vcc_lo
 ; VI-NEXT:    v_mov_b32_e32 v48, s91
 ; VI-NEXT:    v_mov_b32_e32 v38, s90
 ; VI-NEXT:    v_mov_b32_e32 v36, s89
@@ -42019,7 +42816,7 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v37, s56
 ; VI-NEXT:    v_mov_b32_e32 v35, s47
 ; VI-NEXT:    v_mov_b32_e32 v33, s46
-; VI-NEXT:  .LBB53_5: ; %end
+; VI-NEXT:  .LBB53_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v56, 16, v56
 ; VI-NEXT:    v_lshlrev_b32_e32 v46, 16, v46
 ; VI-NEXT:    v_lshlrev_b32_e32 v44, 16, v44
@@ -42082,7 +42879,7 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; VI-NEXT:    v_lshlrev_b32_e32 v31, 16, v35
 ; VI-NEXT:    v_or_b32_sdwa v28, v28, v30 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_lshlrev_b32_e32 v30, 16, v33
-; VI-NEXT:    v_readlane_b32 s30, v60, 6
+; VI-NEXT:    v_readlane_b32 s30, v60, 4
 ; VI-NEXT:    v_or_b32_sdwa v11, v11, v54 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v13, v13, v52 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v15, v15, v50 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
@@ -42093,9 +42890,7 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; VI-NEXT:    v_or_b32_sdwa v25, v25, v32 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v27, v27, v31 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v29, v29, v30 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; VI-NEXT:    v_readlane_b32 s31, v60, 7
-; VI-NEXT:    v_readlane_b32 s39, v60, 5
-; VI-NEXT:    v_readlane_b32 s38, v60, 4
+; VI-NEXT:    v_readlane_b32 s31, v60, 5
 ; VI-NEXT:    v_readlane_b32 s37, v60, 3
 ; VI-NEXT:    v_readlane_b32 s36, v60, 2
 ; VI-NEXT:    v_readlane_b32 s35, v60, 1
@@ -42124,10 +42919,8 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX9-NEXT:    buffer_store_dword v57, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
 ; GFX9-NEXT:    buffer_store_dword v58, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
 ; GFX9-NEXT:    buffer_store_dword v59, off, s[0:3], s32 ; 4-byte Folded Spill
-; GFX9-NEXT:    v_writelane_b32 v60, s34, 0
-; GFX9-NEXT:    v_writelane_b32 v60, s35, 1
-; GFX9-NEXT:    v_writelane_b32 v60, s30, 2
-; GFX9-NEXT:    v_writelane_b32 v60, s31, 3
+; GFX9-NEXT:    v_writelane_b32 v60, s30, 0
+; GFX9-NEXT:    v_writelane_b32 v60, s31, 1
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v16
 ; GFX9-NEXT:    v_readfirstlane_b32 s9, v15
 ; GFX9-NEXT:    v_readfirstlane_b32 s8, v14
@@ -42146,7 +42939,7 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX9-NEXT:    v_readfirstlane_b32 s5, v1
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s46, s9, 16
 ; GFX9-NEXT:    s_lshr_b32 s77, s8, 16
@@ -42171,15 +42964,53 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX9-NEXT:    s_lshr_b32 s72, s25, 16
 ; GFX9-NEXT:    s_lshr_b32 s95, s24, 16
 ; GFX9-NEXT:    s_lshr_b32 s73, s23, 16
-; GFX9-NEXT:    s_lshr_b32 s30, s22, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_lo, s22, 16
 ; GFX9-NEXT:    s_lshr_b32 s74, s21, 16
-; GFX9-NEXT:    s_lshr_b32 s31, s20, 16
+; GFX9-NEXT:    s_lshr_b32 vcc_hi, s20, 16
 ; GFX9-NEXT:    s_lshr_b32 s75, s19, 16
-; GFX9-NEXT:    s_lshr_b32 s34, s18, 16
+; GFX9-NEXT:    s_lshr_b32 s30, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s76, s17, 16
-; GFX9-NEXT:    s_lshr_b32 s35, s16, 16
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_4
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_lshr_b32 s31, s16, 16
+; GFX9-NEXT:    s_mov_b64 s[44:45], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[44:45], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr31
+; GFX9-NEXT:    ; implicit-def: $sgpr76
+; GFX9-NEXT:    ; implicit-def: $sgpr30
+; GFX9-NEXT:    ; implicit-def: $sgpr75
+; GFX9-NEXT:    ; implicit-def: $vcc_hi
+; GFX9-NEXT:    ; implicit-def: $sgpr74
+; GFX9-NEXT:    ; implicit-def: $vcc_lo
+; GFX9-NEXT:    ; implicit-def: $sgpr73
+; GFX9-NEXT:    ; implicit-def: $sgpr95
+; GFX9-NEXT:    ; implicit-def: $sgpr72
+; GFX9-NEXT:    ; implicit-def: $sgpr94
+; GFX9-NEXT:    ; implicit-def: $sgpr63
+; GFX9-NEXT:    ; implicit-def: $sgpr93
+; GFX9-NEXT:    ; implicit-def: $sgpr62
+; GFX9-NEXT:    ; implicit-def: $sgpr92
+; GFX9-NEXT:    ; implicit-def: $sgpr61
+; GFX9-NEXT:    ; implicit-def: $sgpr91
+; GFX9-NEXT:    ; implicit-def: $sgpr60
+; GFX9-NEXT:    ; implicit-def: $sgpr90
+; GFX9-NEXT:    ; implicit-def: $sgpr59
+; GFX9-NEXT:    ; implicit-def: $sgpr89
+; GFX9-NEXT:    ; implicit-def: $sgpr58
+; GFX9-NEXT:    ; implicit-def: $sgpr88
+; GFX9-NEXT:    ; implicit-def: $sgpr57
+; GFX9-NEXT:    ; implicit-def: $sgpr79
+; GFX9-NEXT:    ; implicit-def: $sgpr56
+; GFX9-NEXT:    ; implicit-def: $sgpr78
+; GFX9-NEXT:    ; implicit-def: $sgpr47
+; GFX9-NEXT:    ; implicit-def: $sgpr77
+; GFX9-NEXT:    ; implicit-def: $sgpr46
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[44:45], s[44:45], exec
+; GFX9-NEXT:    s_cselect_b32 s44, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s44, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f64 v[28:29], s[8:9], 1.0
 ; GFX9-NEXT:    v_add_f64 v[26:27], s[10:11], 1.0
 ; GFX9-NEXT:    v_add_f64 v[24:25], s[12:13], 1.0
@@ -42225,40 +43056,8 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v46, 16, v2
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v59, 16, v1
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v56, 16, v0
-; GFX9-NEXT:    s_branch .LBB53_5
-; GFX9-NEXT:  .LBB53_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr35
-; GFX9-NEXT:    ; implicit-def: $sgpr76
-; GFX9-NEXT:    ; implicit-def: $sgpr34
-; GFX9-NEXT:    ; implicit-def: $sgpr75
-; GFX9-NEXT:    ; implicit-def: $sgpr31
-; GFX9-NEXT:    ; implicit-def: $sgpr74
-; GFX9-NEXT:    ; implicit-def: $sgpr30
-; GFX9-NEXT:    ; implicit-def: $sgpr73
-; GFX9-NEXT:    ; implicit-def: $sgpr95
-; GFX9-NEXT:    ; implicit-def: $sgpr72
-; GFX9-NEXT:    ; implicit-def: $sgpr94
-; GFX9-NEXT:    ; implicit-def: $sgpr63
-; GFX9-NEXT:    ; implicit-def: $sgpr93
-; GFX9-NEXT:    ; implicit-def: $sgpr62
-; GFX9-NEXT:    ; implicit-def: $sgpr92
-; GFX9-NEXT:    ; implicit-def: $sgpr61
-; GFX9-NEXT:    ; implicit-def: $sgpr91
-; GFX9-NEXT:    ; implicit-def: $sgpr60
-; GFX9-NEXT:    ; implicit-def: $sgpr90
-; GFX9-NEXT:    ; implicit-def: $sgpr59
-; GFX9-NEXT:    ; implicit-def: $sgpr89
-; GFX9-NEXT:    ; implicit-def: $sgpr58
-; GFX9-NEXT:    ; implicit-def: $sgpr88
-; GFX9-NEXT:    ; implicit-def: $sgpr57
-; GFX9-NEXT:    ; implicit-def: $sgpr79
-; GFX9-NEXT:    ; implicit-def: $sgpr56
-; GFX9-NEXT:    ; implicit-def: $sgpr78
-; GFX9-NEXT:    ; implicit-def: $sgpr47
-; GFX9-NEXT:    ; implicit-def: $sgpr77
-; GFX9-NEXT:    ; implicit-def: $sgpr46
-; GFX9-NEXT:    s_branch .LBB53_2
-; GFX9-NEXT:  .LBB53_4:
+; GFX9-NEXT:    s_branch .LBB53_6
+; GFX9-NEXT:  .LBB53_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v4, s20
@@ -42289,10 +43088,10 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v27, s11
 ; GFX9-NEXT:    v_mov_b32_e32 v28, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s9
-; GFX9-NEXT:    v_mov_b32_e32 v56, s35
-; GFX9-NEXT:    v_mov_b32_e32 v46, s34
-; GFX9-NEXT:    v_mov_b32_e32 v44, s31
-; GFX9-NEXT:    v_mov_b32_e32 v42, s30
+; GFX9-NEXT:    v_mov_b32_e32 v56, s31
+; GFX9-NEXT:    v_mov_b32_e32 v46, s30
+; GFX9-NEXT:    v_mov_b32_e32 v44, vcc_hi
+; GFX9-NEXT:    v_mov_b32_e32 v42, vcc_lo
 ; GFX9-NEXT:    v_mov_b32_e32 v40, s95
 ; GFX9-NEXT:    v_mov_b32_e32 v54, s94
 ; GFX9-NEXT:    v_mov_b32_e32 v52, s93
@@ -42319,7 +43118,7 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v37, s56
 ; GFX9-NEXT:    v_mov_b32_e32 v35, s47
 ; GFX9-NEXT:    v_mov_b32_e32 v33, s46
-; GFX9-NEXT:  .LBB53_5: ; %end
+; GFX9-NEXT:  .LBB53_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -42374,7 +43173,7 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX9-NEXT:    v_and_b32_e32 v27, 0xffff, v27
 ; GFX9-NEXT:    v_and_b32_e32 v28, 0xffff, v28
 ; GFX9-NEXT:    v_and_b32_e32 v29, 0xffff, v29
-; GFX9-NEXT:    v_readlane_b32 s30, v60, 2
+; GFX9-NEXT:    v_readlane_b32 s30, v60, 0
 ; GFX9-NEXT:    v_lshl_or_b32 v10, v54, 16, v10
 ; GFX9-NEXT:    v_lshl_or_b32 v12, v52, 16, v12
 ; GFX9-NEXT:    v_lshl_or_b32 v14, v50, 16, v14
@@ -42393,9 +43192,7 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX9-NEXT:    v_lshl_or_b32 v27, v35, 16, v27
 ; GFX9-NEXT:    v_lshl_or_b32 v28, v30, 16, v28
 ; GFX9-NEXT:    v_lshl_or_b32 v29, v33, 16, v29
-; GFX9-NEXT:    v_readlane_b32 s31, v60, 3
-; GFX9-NEXT:    v_readlane_b32 s35, v60, 1
-; GFX9-NEXT:    v_readlane_b32 s34, v60, 0
+; GFX9-NEXT:    v_readlane_b32 s31, v60, 1
 ; GFX9-NEXT:    s_or_saveexec_b64 s[4:5], -1
 ; GFX9-NEXT:    buffer_load_dword v60, off, s[0:3], s32 offset:48 ; 4-byte Folded Reload
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
@@ -42419,12 +43216,12 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s13, v1
 ; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s12, v0
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s40, 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s40, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s42, 0
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s15, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s40, s15, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s72, s14, 16
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s42, s11, 16
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s41, s11, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s73, s10, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s43, s9, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s74, s8, 16
@@ -42452,9 +43249,46 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s93, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s63, s1, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s94, s0, 16
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-TRUE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB53_3
+; GFX11-TRUE16-NEXT:  .LBB53_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s42, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr94
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr93
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr92
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr91
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-TRUE16-NEXT:  .LBB53_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[28:29], s[14:15], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[26:27], s[10:11], 1.0
 ; GFX11-TRUE16-NEXT:    v_add_f64 v[24:25], s[8:9], 1.0
@@ -42500,40 +43334,8 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v70, 16, v2
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v83, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v80, 16, v0
-; GFX11-TRUE16-NEXT:    s_branch .LBB53_5
-; GFX11-TRUE16-NEXT:  .LBB53_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr94
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr93
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr92
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr91
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-TRUE16-NEXT:    s_branch .LBB53_2
-; GFX11-TRUE16-NEXT:  .LBB53_4:
+; GFX11-TRUE16-NEXT:    s_branch .LBB53_6
+; GFX11-TRUE16-NEXT:  .LBB53_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v4, s16 :: v_dual_mov_b32 v5, s17
@@ -42562,9 +43364,9 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v36, s76 :: v_dual_mov_b32 v49, s45
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v34, s75 :: v_dual_mov_b32 v39, s44
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v32, s74 :: v_dual_mov_b32 v37, s43
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v30, s72 :: v_dual_mov_b32 v35, s42
-; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v82, s62 :: v_dual_mov_b32 v33, s41
-; GFX11-TRUE16-NEXT:  .LBB53_5: ; %end
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v30, s72 :: v_dual_mov_b32 v35, s41
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v82, s62 :: v_dual_mov_b32 v33, s40
+; GFX11-TRUE16-NEXT:  .LBB53_6: ; %end
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v80.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v83.l
@@ -42616,12 +43418,12 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s13, v1
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s12, v0
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s40, 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s40, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s42, 0
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s15, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s40, s15, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s72, s14, 16
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s42, s11, 16
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s41, s11, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s73, s10, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s43, s9, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s74, s8, 16
@@ -42649,9 +43451,46 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s93, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s63, s1, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s94, s0, 16
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-FAKE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB53_3
+; GFX11-FAKE16-NEXT:  .LBB53_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s42, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr94
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr93
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr92
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr91
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr40
+; GFX11-FAKE16-NEXT:  .LBB53_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s42, s42, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s42, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s42, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[25:26], s[14:15], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[27:28], s[10:11], 1.0
 ; GFX11-FAKE16-NEXT:    v_add_f64 v[29:30], s[8:9], 1.0
@@ -42697,40 +43536,8 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v71, 16, v0
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v83, 16, v3
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v81, 16, v2
-; GFX11-FAKE16-NEXT:    s_branch .LBB53_5
-; GFX11-FAKE16-NEXT:  .LBB53_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr94
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr63
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr93
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr62
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr92
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr61
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr91
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr60
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr90
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr59
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr89
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr58
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr88
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr57
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr79
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr56
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr78
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr47
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr77
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr46
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr76
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr45
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr75
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr44
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr74
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr43
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr73
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr42
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr72
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr41
-; GFX11-FAKE16-NEXT:    s_branch .LBB53_2
-; GFX11-FAKE16-NEXT:  .LBB53_4:
+; GFX11-FAKE16-NEXT:    s_branch .LBB53_6
+; GFX11-FAKE16-NEXT:  .LBB53_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v33, s16
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v7, s18
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v5, s20 :: v_dual_mov_b32 v12, s22
@@ -42760,8 +43567,8 @@ define inreg <60 x half> @bitcast_v15f64_to_v60f16_scalar(<15 x double> inreg %a
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v67, s58 :: v_dual_mov_b32 v54, s47
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v53, s46 :: v_dual_mov_b32 v50, s44
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v51, s45 :: v_dual_mov_b32 v48, s43
-; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v38, s42 :: v_dual_mov_b32 v37, s41
-; GFX11-FAKE16-NEXT:  .LBB53_5: ; %end
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v38, s41 :: v_dual_mov_b32 v37, s40
+; GFX11-FAKE16-NEXT:  .LBB53_6: ; %end
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v33, 0xffff, v33
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v31, 0xffff, v31
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -44369,10 +45176,8 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    v_writelane_b32 v32, s87, 29
 ; SI-NEXT:    v_writelane_b32 v32, s96, 30
 ; SI-NEXT:    v_writelane_b32 v32, s97, 31
-; SI-NEXT:    v_writelane_b32 v32, s98, 32
-; SI-NEXT:    v_writelane_b32 v32, s99, 33
-; SI-NEXT:    v_writelane_b32 v32, s30, 34
-; SI-NEXT:    v_writelane_b32 v32, s31, 35
+; SI-NEXT:    v_writelane_b32 v32, s30, 32
+; SI-NEXT:    v_writelane_b32 v32, s31, 33
 ; SI-NEXT:    v_readfirstlane_b32 s6, v15
 ; SI-NEXT:    v_readfirstlane_b32 s8, v14
 ; SI-NEXT:    v_readfirstlane_b32 s10, v13
@@ -44386,23 +45191,23 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    v_readfirstlane_b32 s90, v5
 ; SI-NEXT:    v_readfirstlane_b32 s92, v4
 ; SI-NEXT:    v_readfirstlane_b32 s94, v3
-; SI-NEXT:    v_readfirstlane_b32 s30, v2
-; SI-NEXT:    v_readfirstlane_b32 s35, v1
-; SI-NEXT:    v_readfirstlane_b32 s70, v0
-; SI-NEXT:    s_lshr_b32 s31, s29, 16
-; SI-NEXT:    s_lshr_b32 s68, s28, 16
-; SI-NEXT:    s_lshr_b32 s71, s27, 16
-; SI-NEXT:    s_lshr_b32 s81, s26, 16
-; SI-NEXT:    s_lshr_b32 s82, s25, 16
-; SI-NEXT:    s_lshr_b32 s83, s24, 16
-; SI-NEXT:    s_lshr_b32 s84, s23, 16
-; SI-NEXT:    s_lshr_b32 s85, s22, 16
-; SI-NEXT:    s_lshr_b32 s86, s21, 16
-; SI-NEXT:    s_lshr_b32 s87, s20, 16
-; SI-NEXT:    s_lshr_b32 s96, s19, 16
-; SI-NEXT:    s_lshr_b32 s97, s18, 16
-; SI-NEXT:    s_lshr_b32 s98, s17, 16
-; SI-NEXT:    s_lshr_b32 s99, s16, 16
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v2
+; SI-NEXT:    v_readfirstlane_b32 s31, v1
+; SI-NEXT:    v_readfirstlane_b32 s68, v0
+; SI-NEXT:    s_lshr_b32 vcc_hi, s29, 16
+; SI-NEXT:    s_lshr_b32 s34, s28, 16
+; SI-NEXT:    s_lshr_b32 s69, s27, 16
+; SI-NEXT:    s_lshr_b32 s71, s26, 16
+; SI-NEXT:    s_lshr_b32 s80, s25, 16
+; SI-NEXT:    s_lshr_b32 s81, s24, 16
+; SI-NEXT:    s_lshr_b32 s82, s23, 16
+; SI-NEXT:    s_lshr_b32 s83, s22, 16
+; SI-NEXT:    s_lshr_b32 s84, s21, 16
+; SI-NEXT:    s_lshr_b32 s85, s20, 16
+; SI-NEXT:    s_lshr_b32 s86, s19, 16
+; SI-NEXT:    s_lshr_b32 s87, s18, 16
+; SI-NEXT:    s_lshr_b32 s96, s17, 16
+; SI-NEXT:    s_lshr_b32 s97, s16, 16
 ; SI-NEXT:    s_lshr_b32 s7, s6, 16
 ; SI-NEXT:    s_lshr_b32 s9, s8, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -44416,63 +45221,63 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    s_lshr_b32 s91, s90, 16
 ; SI-NEXT:    s_lshr_b32 s93, s92, 16
 ; SI-NEXT:    s_lshr_b32 s95, s94, 16
-; SI-NEXT:    s_lshr_b32 s34, s30, 16
-; SI-NEXT:    s_lshr_b32 s69, s35, 16
-; SI-NEXT:    s_lshr_b32 s80, s70, 16
+; SI-NEXT:    s_lshr_b32 s30, vcc_lo, 16
+; SI-NEXT:    s_lshr_b32 s35, s31, 16
+; SI-NEXT:    s_lshr_b32 s70, s68, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v16
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_3
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s99, 16
+; SI-NEXT:    s_lshl_b32 s5, s97, 16
 ; SI-NEXT:    s_or_b32 s36, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s97, 16
+; SI-NEXT:    s_lshl_b32 s5, s87, 16
 ; SI-NEXT:    s_or_b32 s38, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s96, 16
+; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_and_b32 s40, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s41, s98, 16
+; SI-NEXT:    s_lshl_b32 s41, s96, 16
 ; SI-NEXT:    s_or_b32 s39, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s87, 16
+; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s37, s40, s41
 ; SI-NEXT:    s_or_b32 s40, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s86, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s41, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s85, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s42, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s82, 16
 ; SI-NEXT:    s_or_b32 s43, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s81, 16
 ; SI-NEXT:    s_or_b32 s44, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s80, 16
 ; SI-NEXT:    s_or_b32 s45, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s46, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s69, 16
 ; SI-NEXT:    s_or_b32 s47, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s68, 16
+; SI-NEXT:    s_lshl_b32 s5, s34, 16
 ; SI-NEXT:    s_or_b32 s48, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s31, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s49, s4, s5
-; SI-NEXT:    s_and_b32 s4, s70, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_and_b32 s4, s68, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s70, 16
 ; SI-NEXT:    s_or_b32 s50, s4, s5
-; SI-NEXT:    s_and_b32 s4, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s69, 16
+; SI-NEXT:    s_and_b32 s4, s31, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s35, 16
 ; SI-NEXT:    s_or_b32 s51, s4, s5
-; SI-NEXT:    s_and_b32 s4, s30, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s34, 16
+; SI-NEXT:    s_and_b32 s4, vcc_lo, 0xffff
+; SI-NEXT:    s_lshl_b32 s5, s30, 16
 ; SI-NEXT:    s_or_b32 s52, s4, s5
 ; SI-NEXT:    s_and_b32 s4, s94, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s95, 16
@@ -44513,11 +45318,20 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    s_and_b32 s4, s6, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s7, 16
 ; SI-NEXT:    s_or_b32 s65, s4, s5
-; SI-NEXT:    s_cbranch_execnz .LBB55_4
-; SI-NEXT:  .LBB55_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s99
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s97
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s98
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s96
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s17
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -44527,7 +45341,7 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; SI-NEXT:    v_or_b32_e32 v0, v1, v0
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, s97
+; SI-NEXT:    v_cvt_f32_f16_e32 v1, s87
 ; SI-NEXT:    v_add_f32_e32 v3, 0x38000000, v3
 ; SI-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v5, s19
@@ -44537,20 +45351,20 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s18
 ; SI-NEXT:    v_or_b32_e32 v1, v3, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, s96
+; SI-NEXT:    v_cvt_f32_f16_e32 v4, s86
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s87
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s85
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v5, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, s20
 ; SI-NEXT:    v_add_f32_e32 v5, 0x38000000, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s86
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s84
 ; SI-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; SI-NEXT:    v_add_f32_e32 v4, 0x38000000, v4
 ; SI-NEXT:    v_cvt_f16_f32_e32 v4, v4
@@ -44560,7 +45374,7 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v7, s21
 ; SI-NEXT:    v_or_b32_e32 v4, v4, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v6
-; SI-NEXT:    v_cvt_f32_f16_e32 v6, s85
+; SI-NEXT:    v_cvt_f32_f16_e32 v6, s83
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s22
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
@@ -44569,11 +45383,11 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
 ; SI-NEXT:    v_cvt_f16_f32_e32 v8, v8
 ; SI-NEXT:    v_or_b32_e32 v5, v7, v5
-; SI-NEXT:    v_cvt_f32_f16_e32 v7, s84
+; SI-NEXT:    v_cvt_f32_f16_e32 v7, s82
 ; SI-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v6, v8, v6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v8, s23
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s83
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s81
 ; SI-NEXT:    v_add_f32_e32 v7, 0x38000000, v7
 ; SI-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; SI-NEXT:    v_add_f32_e32 v8, 0x38000000, v8
@@ -44584,7 +45398,7 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v10, s24
 ; SI-NEXT:    v_or_b32_e32 v7, v8, v7
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v9
-; SI-NEXT:    v_cvt_f32_f16_e32 v9, s82
+; SI-NEXT:    v_cvt_f32_f16_e32 v9, s80
 ; SI-NEXT:    v_cvt_f32_f16_e32 v11, s25
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
@@ -44593,11 +45407,11 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
 ; SI-NEXT:    v_cvt_f16_f32_e32 v11, v11
 ; SI-NEXT:    v_or_b32_e32 v8, v10, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, s81
+; SI-NEXT:    v_cvt_f32_f16_e32 v10, s71
 ; SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
 ; SI-NEXT:    v_or_b32_e32 v9, v11, v9
 ; SI-NEXT:    v_cvt_f32_f16_e32 v11, s26
-; SI-NEXT:    v_cvt_f32_f16_e32 v12, s71
+; SI-NEXT:    v_cvt_f32_f16_e32 v12, s69
 ; SI-NEXT:    v_add_f32_e32 v10, 0x38000000, v10
 ; SI-NEXT:    v_cvt_f16_f32_e32 v10, v10
 ; SI-NEXT:    v_add_f32_e32 v11, 0x38000000, v11
@@ -44608,7 +45422,7 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    v_cvt_f32_f16_e32 v13, s27
 ; SI-NEXT:    v_or_b32_e32 v10, v11, v10
 ; SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v12
-; SI-NEXT:    v_cvt_f32_f16_e32 v12, s68
+; SI-NEXT:    v_cvt_f32_f16_e32 v12, s34
 ; SI-NEXT:    v_cvt_f32_f16_e32 v14, s28
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
 ; SI-NEXT:    v_cvt_f16_f32_e32 v13, v13
@@ -44617,11 +45431,11 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
 ; SI-NEXT:    v_cvt_f16_f32_e32 v14, v14
 ; SI-NEXT:    v_or_b32_e32 v11, v13, v11
-; SI-NEXT:    v_cvt_f32_f16_e32 v13, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v13, vcc_hi
 ; SI-NEXT:    v_lshlrev_b32_e32 v12, 16, v12
 ; SI-NEXT:    v_or_b32_e32 v12, v14, v12
 ; SI-NEXT:    v_cvt_f32_f16_e32 v14, s29
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s80
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s70
 ; SI-NEXT:    v_add_f32_e32 v13, 0x38000000, v13
 ; SI-NEXT:    v_cvt_f16_f32_e32 v13, v13
 ; SI-NEXT:    v_add_f32_e32 v14, 0x38000000, v14
@@ -44629,11 +45443,11 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    v_cvt_f16_f32_e32 v14, v14
 ; SI-NEXT:    v_cvt_f16_f32_e32 v15, v15
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s70
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s68
 ; SI-NEXT:    v_or_b32_e32 v13, v14, v13
 ; SI-NEXT:    v_lshlrev_b32_e32 v14, 16, v15
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, s69
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, s35
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, s31
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
 ; SI-NEXT:    v_add_f32_e32 v15, 0x38000000, v15
@@ -44641,10 +45455,10 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    v_add_f32_e32 v17, 0x38000000, v17
 ; SI-NEXT:    v_cvt_f16_f32_e32 v17, v17
 ; SI-NEXT:    v_or_b32_e32 v14, v16, v14
-; SI-NEXT:    v_cvt_f32_f16_e32 v16, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, s30
 ; SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
 ; SI-NEXT:    v_or_b32_e32 v15, v17, v15
-; SI-NEXT:    v_cvt_f32_f16_e32 v17, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v17, vcc_lo
 ; SI-NEXT:    v_cvt_f32_f16_e32 v18, s95
 ; SI-NEXT:    v_add_f32_e32 v16, 0x38000000, v16
 ; SI-NEXT:    v_cvt_f16_f32_e32 v16, v16
@@ -44755,11 +45569,8 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    v_or_b32_e32 v28, v29, v28
 ; SI-NEXT:    v_lshlrev_b32_e32 v29, 16, v30
 ; SI-NEXT:    v_or_b32_e32 v29, v31, v29
-; SI-NEXT:    s_branch .LBB55_5
-; SI-NEXT:  .LBB55_3:
-; SI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; SI-NEXT:    s_branch .LBB55_2
-; SI-NEXT:  .LBB55_4:
+; SI-NEXT:    s_branch .LBB55_6
+; SI-NEXT:  .LBB55_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s36
 ; SI-NEXT:    v_mov_b32_e32 v1, s37
 ; SI-NEXT:    v_mov_b32_e32 v2, s38
@@ -44792,11 +45603,9 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; SI-NEXT:    v_mov_b32_e32 v29, s65
 ; SI-NEXT:    v_mov_b32_e32 v30, s66
 ; SI-NEXT:    v_mov_b32_e32 v31, s67
-; SI-NEXT:  .LBB55_5: ; %end
-; SI-NEXT:    v_readlane_b32 s30, v32, 34
-; SI-NEXT:    v_readlane_b32 s31, v32, 35
-; SI-NEXT:    v_readlane_b32 s99, v32, 33
-; SI-NEXT:    v_readlane_b32 s98, v32, 32
+; SI-NEXT:  .LBB55_6: ; %end
+; SI-NEXT:    v_readlane_b32 s30, v32, 32
+; SI-NEXT:    v_readlane_b32 s31, v32, 33
 ; SI-NEXT:    v_readlane_b32 s97, v32, 31
 ; SI-NEXT:    v_readlane_b32 s96, v32, 30
 ; SI-NEXT:    v_readlane_b32 s87, v32, 29
@@ -44874,136 +45683,136 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; VI-NEXT:    v_writelane_b32 v32, s87, 29
 ; VI-NEXT:    v_writelane_b32 v32, s30, 30
 ; VI-NEXT:    v_writelane_b32 v32, s31, 31
-; VI-NEXT:    v_readfirstlane_b32 s6, v15
-; VI-NEXT:    s_lshr_b32 vcc_lo, s6, 16
 ; VI-NEXT:    v_readfirstlane_b32 s8, v14
-; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
-; VI-NEXT:    s_lshr_b32 vcc_hi, s8, 16
+; VI-NEXT:    s_lshr_b32 s75, s8, 16
 ; VI-NEXT:    v_readfirstlane_b32 s10, v13
-; VI-NEXT:    v_writelane_b32 v33, vcc_lo, 0
+; VI-NEXT:    ; implicit-def: $vgpr33 : SGPR spill to VGPR lane
 ; VI-NEXT:    s_lshr_b32 s63, s10, 16
 ; VI-NEXT:    v_readfirstlane_b32 s12, v12
-; VI-NEXT:    v_writelane_b32 v33, vcc_hi, 1
+; VI-NEXT:    v_writelane_b32 v33, s75, 0
 ; VI-NEXT:    s_lshr_b32 s62, s12, 16
 ; VI-NEXT:    v_readfirstlane_b32 s14, v11
-; VI-NEXT:    v_writelane_b32 v33, s63, 2
+; VI-NEXT:    v_writelane_b32 v33, s63, 1
+; VI-NEXT:    v_readfirstlane_b32 s6, v15
 ; VI-NEXT:    s_lshr_b32 s61, s14, 16
 ; VI-NEXT:    v_readfirstlane_b32 s72, v10
-; VI-NEXT:    v_writelane_b32 v33, s62, 3
-; VI-NEXT:    s_lshr_b32 s60, s72, 16
 ; VI-NEXT:    v_readfirstlane_b32 s74, v9
 ; VI-NEXT:    v_readfirstlane_b32 s76, v8
 ; VI-NEXT:    v_readfirstlane_b32 s78, v7
 ; VI-NEXT:    v_readfirstlane_b32 s89, v6
-; VI-NEXT:    v_readfirstlane_b32 s30, v5
-; VI-NEXT:    v_readfirstlane_b32 s35, v4
-; VI-NEXT:    v_readfirstlane_b32 s71, v3
-; VI-NEXT:    v_readfirstlane_b32 s82, v2
-; VI-NEXT:    v_readfirstlane_b32 s85, v1
-; VI-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-NEXT:    v_writelane_b32 v33, s61, 4
+; VI-NEXT:    v_readfirstlane_b32 vcc_lo, v5
+; VI-NEXT:    v_readfirstlane_b32 s31, v4
+; VI-NEXT:    v_readfirstlane_b32 s69, v3
+; VI-NEXT:    v_readfirstlane_b32 s80, v2
+; VI-NEXT:    v_readfirstlane_b32 s83, v1
+; VI-NEXT:    v_readfirstlane_b32 s86, v0
+; VI-NEXT:    v_writelane_b32 v33, s62, 2
 ; VI-NEXT:    s_lshr_b32 s56, s29, 16
-; VI-NEXT:    s_lshr_b32 s88, s28, 16
-; VI-NEXT:    s_lshr_b32 s31, s27, 16
-; VI-NEXT:    s_lshr_b32 s68, s26, 16
-; VI-NEXT:    s_lshr_b32 s70, s25, 16
-; VI-NEXT:    s_lshr_b32 s81, s24, 16
-; VI-NEXT:    s_lshr_b32 s84, s23, 16
-; VI-NEXT:    s_lshr_b32 s86, s22, 16
-; VI-NEXT:    s_lshr_b32 s9, s21, 16
-; VI-NEXT:    s_lshr_b32 s13, s20, 16
-; VI-NEXT:    s_lshr_b32 s15, s19, 16
-; VI-NEXT:    s_lshr_b32 s73, s18, 16
-; VI-NEXT:    s_lshr_b32 s75, s17, 16
-; VI-NEXT:    s_lshr_b32 s77, s16, 16
+; VI-NEXT:    s_lshr_b32 s77, s28, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, s27, 16
+; VI-NEXT:    s_lshr_b32 s34, s26, 16
+; VI-NEXT:    s_lshr_b32 s68, s25, 16
+; VI-NEXT:    s_lshr_b32 s71, s24, 16
+; VI-NEXT:    s_lshr_b32 s82, s23, 16
+; VI-NEXT:    s_lshr_b32 s84, s22, 16
+; VI-NEXT:    s_lshr_b32 s87, s21, 16
+; VI-NEXT:    s_lshr_b32 s9, s20, 16
+; VI-NEXT:    s_lshr_b32 s11, s19, 16
+; VI-NEXT:    s_lshr_b32 s13, s18, 16
+; VI-NEXT:    s_lshr_b32 s15, s17, 16
+; VI-NEXT:    s_lshr_b32 s73, s16, 16
+; VI-NEXT:    s_lshr_b32 s65, s6, 16
+; VI-NEXT:    s_lshr_b32 s60, s72, 16
 ; VI-NEXT:    s_lshr_b32 s59, s74, 16
 ; VI-NEXT:    s_lshr_b32 s58, s76, 16
 ; VI-NEXT:    s_lshr_b32 s57, s78, 16
-; VI-NEXT:    s_lshr_b32 s64, s89, 16
-; VI-NEXT:    s_lshr_b32 s34, s30, 16
-; VI-NEXT:    s_lshr_b32 s69, s35, 16
-; VI-NEXT:    s_lshr_b32 s80, s71, 16
-; VI-NEXT:    s_lshr_b32 s83, s82, 16
-; VI-NEXT:    s_lshr_b32 s87, s85, 16
-; VI-NEXT:    s_lshr_b32 s11, s7, 16
+; VI-NEXT:    s_lshr_b32 s88, s89, 16
+; VI-NEXT:    s_lshr_b32 s30, vcc_lo, 16
+; VI-NEXT:    s_lshr_b32 s35, s31, 16
+; VI-NEXT:    s_lshr_b32 s70, s69, 16
+; VI-NEXT:    s_lshr_b32 s81, s80, 16
+; VI-NEXT:    s_lshr_b32 s85, s83, 16
+; VI-NEXT:    s_lshr_b32 s7, s86, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
-; VI-NEXT:    v_writelane_b32 v33, s60, 5
+; VI-NEXT:    v_writelane_b32 v33, s61, 3
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    v_writelane_b32 v33, s59, 6
-; VI-NEXT:    v_writelane_b32 v33, s58, 7
-; VI-NEXT:    s_cbranch_scc0 .LBB55_3
+; VI-NEXT:    v_writelane_b32 v33, s60, 4
+; VI-NEXT:    v_writelane_b32 v33, s59, 5
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s77, 16
+; VI-NEXT:    s_lshl_b32 s5, s73, 16
 ; VI-NEXT:    s_or_b32 s36, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s5, s73, 16
+; VI-NEXT:    s_lshl_b32 s5, s13, 16
 ; VI-NEXT:    s_or_b32 s38, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s5, s15, 16
+; VI-NEXT:    s_lshl_b32 s5, s11, 16
 ; VI-NEXT:    s_and_b32 s40, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s41, s75, 16
+; VI-NEXT:    s_lshl_b32 s41, s15, 16
 ; VI-NEXT:    s_or_b32 s39, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s20
-; VI-NEXT:    s_lshl_b32 s5, s13, 16
+; VI-NEXT:    s_lshl_b32 s5, s9, 16
 ; VI-NEXT:    s_or_b32 s37, s40, s41
 ; VI-NEXT:    s_or_b32 s40, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s21
-; VI-NEXT:    s_lshl_b32 s5, s9, 16
+; VI-NEXT:    s_lshl_b32 s5, s87, 16
 ; VI-NEXT:    s_or_b32 s41, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s22
-; VI-NEXT:    s_lshl_b32 s5, s86, 16
+; VI-NEXT:    s_lshl_b32 s5, s84, 16
 ; VI-NEXT:    s_or_b32 s42, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s23
-; VI-NEXT:    s_lshl_b32 s5, s84, 16
+; VI-NEXT:    s_lshl_b32 s5, s82, 16
 ; VI-NEXT:    s_or_b32 s43, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s24
-; VI-NEXT:    s_lshl_b32 s5, s81, 16
+; VI-NEXT:    s_lshl_b32 s5, s71, 16
 ; VI-NEXT:    s_or_b32 s44, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s25
-; VI-NEXT:    s_lshl_b32 s5, s70, 16
+; VI-NEXT:    s_lshl_b32 s5, s68, 16
 ; VI-NEXT:    s_or_b32 s45, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s26
-; VI-NEXT:    s_lshl_b32 s5, s68, 16
+; VI-NEXT:    s_lshl_b32 s5, s34, 16
 ; VI-NEXT:    s_or_b32 s46, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s27
-; VI-NEXT:    s_lshl_b32 s5, s31, 16
+; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s47, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s28
-; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_lshl_b32 s5, s77, 16
 ; VI-NEXT:    s_or_b32 s48, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s5, s56, 16
 ; VI-NEXT:    s_or_b32 s49, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s7
-; VI-NEXT:    s_lshl_b32 s5, s11, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s86
+; VI-NEXT:    s_lshl_b32 s5, s7, 16
 ; VI-NEXT:    s_or_b32 s50, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s85
-; VI-NEXT:    s_lshl_b32 s5, s87, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s83
+; VI-NEXT:    s_lshl_b32 s5, s85, 16
 ; VI-NEXT:    s_or_b32 s51, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s82
-; VI-NEXT:    s_lshl_b32 s5, s83, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s80
+; VI-NEXT:    s_lshl_b32 s5, s81, 16
 ; VI-NEXT:    s_or_b32 s52, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s71
-; VI-NEXT:    s_lshl_b32 s5, s80, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s69
+; VI-NEXT:    s_lshl_b32 s5, s70, 16
 ; VI-NEXT:    s_or_b32 s53, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s35
-; VI-NEXT:    s_lshl_b32 s5, s69, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, s31
+; VI-NEXT:    s_lshl_b32 s5, s35, 16
 ; VI-NEXT:    s_or_b32 s54, s4, s5
-; VI-NEXT:    s_and_b32 s4, 0xffff, s30
-; VI-NEXT:    s_lshl_b32 s5, s34, 16
+; VI-NEXT:    s_and_b32 s4, 0xffff, vcc_lo
+; VI-NEXT:    s_lshl_b32 s5, s30, 16
 ; VI-NEXT:    s_or_b32 s55, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s89
-; VI-NEXT:    s_lshl_b32 s5, s64, 16
-; VI-NEXT:    s_mov_b32 s91, s56
+; VI-NEXT:    s_lshl_b32 s5, s88, 16
+; VI-NEXT:    s_mov_b32 s90, s56
 ; VI-NEXT:    s_or_b32 s56, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s78
 ; VI-NEXT:    s_lshl_b32 s5, s57, 16
-; VI-NEXT:    s_mov_b32 s79, s88
-; VI-NEXT:    s_mov_b32 s88, s57
+; VI-NEXT:    s_mov_b32 s91, s77
+; VI-NEXT:    s_mov_b32 s77, s57
 ; VI-NEXT:    s_or_b32 s57, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s76
 ; VI-NEXT:    s_lshl_b32 s5, s58, 16
+; VI-NEXT:    s_mov_b32 s79, s88
+; VI-NEXT:    s_mov_b32 s88, s58
 ; VI-NEXT:    s_or_b32 s58, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s74
 ; VI-NEXT:    s_lshl_b32 s5, s59, 16
@@ -45021,152 +45830,158 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; VI-NEXT:    s_lshl_b32 s5, s63, 16
 ; VI-NEXT:    s_or_b32 s63, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s8
-; VI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
-; VI-NEXT:    s_mov_b32 s90, s64
+; VI-NEXT:    s_lshl_b32 s5, s75, 16
 ; VI-NEXT:    s_or_b32 s64, s4, s5
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s6
-; VI-NEXT:    s_lshl_b32 s5, vcc_lo, 16
+; VI-NEXT:    s_lshl_b32 s5, s65, 16
+; VI-NEXT:    s_mov_b32 s75, s65
 ; VI-NEXT:    s_or_b32 s65, s4, s5
-; VI-NEXT:    s_cbranch_execnz .LBB55_4
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b32 s79, s88
+; VI-NEXT:    s_mov_b32 s91, s77
+; VI-NEXT:    s_mov_b32 s90, s56
+; VI-NEXT:    s_mov_b32 s77, s57
+; VI-NEXT:    s_mov_b32 s88, s58
+; VI-NEXT:    s_mov_b32 s75, s65
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v29, 0x200
-; VI-NEXT:    v_mov_b32_e32 v0, s77
-; VI-NEXT:    v_mov_b32_e32 v2, s75
+; VI-NEXT:    v_mov_b32_e32 v0, s73
+; VI-NEXT:    v_mov_b32_e32 v2, s15
 ; VI-NEXT:    v_add_f16_sdwa v0, v0, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v1, s16, v29
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s17, v29
 ; VI-NEXT:    v_or_b32_e32 v0, v1, v0
 ; VI-NEXT:    v_or_b32_e32 v1, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v2, s73
+; VI-NEXT:    v_mov_b32_e32 v2, s13
 ; VI-NEXT:    v_add_f16_sdwa v2, v2, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v3, s18, v29
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    v_mov_b32_e32 v3, s15
+; VI-NEXT:    v_mov_b32_e32 v3, s11
 ; VI-NEXT:    v_add_f16_sdwa v3, v3, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v4, s19, v29
 ; VI-NEXT:    v_or_b32_e32 v3, v4, v3
-; VI-NEXT:    v_mov_b32_e32 v4, s13
+; VI-NEXT:    v_mov_b32_e32 v4, s9
 ; VI-NEXT:    v_add_f16_sdwa v4, v4, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v5, s20, v29
 ; VI-NEXT:    v_or_b32_e32 v4, v5, v4
-; VI-NEXT:    v_mov_b32_e32 v5, s9
+; VI-NEXT:    v_mov_b32_e32 v5, s87
 ; VI-NEXT:    v_add_f16_sdwa v5, v5, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v6, s21, v29
 ; VI-NEXT:    v_or_b32_e32 v5, v6, v5
-; VI-NEXT:    v_mov_b32_e32 v6, s86
+; VI-NEXT:    v_mov_b32_e32 v6, s84
 ; VI-NEXT:    v_add_f16_sdwa v6, v6, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v7, s22, v29
 ; VI-NEXT:    v_or_b32_e32 v6, v7, v6
-; VI-NEXT:    v_mov_b32_e32 v7, s84
+; VI-NEXT:    v_mov_b32_e32 v7, s82
 ; VI-NEXT:    v_add_f16_sdwa v7, v7, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v8, s23, v29
 ; VI-NEXT:    v_or_b32_e32 v7, v8, v7
-; VI-NEXT:    v_mov_b32_e32 v8, s81
+; VI-NEXT:    v_mov_b32_e32 v8, s71
 ; VI-NEXT:    v_add_f16_sdwa v8, v8, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v9, s24, v29
 ; VI-NEXT:    v_or_b32_e32 v8, v9, v8
-; VI-NEXT:    v_mov_b32_e32 v9, s70
+; VI-NEXT:    v_mov_b32_e32 v9, s68
 ; VI-NEXT:    v_add_f16_sdwa v9, v9, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v10, s25, v29
 ; VI-NEXT:    v_or_b32_e32 v9, v10, v9
-; VI-NEXT:    v_mov_b32_e32 v10, s68
+; VI-NEXT:    v_mov_b32_e32 v10, s34
 ; VI-NEXT:    v_add_f16_sdwa v10, v10, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v11, s26, v29
 ; VI-NEXT:    v_or_b32_e32 v10, v11, v10
-; VI-NEXT:    v_mov_b32_e32 v11, s31
+; VI-NEXT:    v_mov_b32_e32 v11, vcc_hi
 ; VI-NEXT:    v_add_f16_sdwa v11, v11, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v12, s27, v29
 ; VI-NEXT:    v_or_b32_e32 v11, v12, v11
-; VI-NEXT:    v_mov_b32_e32 v12, s79
+; VI-NEXT:    v_mov_b32_e32 v12, s91
 ; VI-NEXT:    v_add_f16_sdwa v12, v12, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v13, s28, v29
 ; VI-NEXT:    v_or_b32_e32 v12, v13, v12
-; VI-NEXT:    v_mov_b32_e32 v13, s91
+; VI-NEXT:    v_mov_b32_e32 v13, s90
 ; VI-NEXT:    v_add_f16_sdwa v13, v13, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v14, s29, v29
 ; VI-NEXT:    v_or_b32_e32 v13, v14, v13
-; VI-NEXT:    v_mov_b32_e32 v14, s11
+; VI-NEXT:    v_mov_b32_e32 v14, s7
 ; VI-NEXT:    v_add_f16_sdwa v14, v14, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v15, s7, v29
+; VI-NEXT:    v_add_f16_e32 v15, s86, v29
 ; VI-NEXT:    v_or_b32_e32 v14, v15, v14
-; VI-NEXT:    v_mov_b32_e32 v15, s87
+; VI-NEXT:    v_mov_b32_e32 v15, s85
 ; VI-NEXT:    v_add_f16_sdwa v15, v15, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v16, s85, v29
+; VI-NEXT:    v_add_f16_e32 v16, s83, v29
 ; VI-NEXT:    v_or_b32_e32 v15, v16, v15
-; VI-NEXT:    v_mov_b32_e32 v16, s83
+; VI-NEXT:    v_mov_b32_e32 v16, s81
 ; VI-NEXT:    v_add_f16_sdwa v16, v16, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v17, s82, v29
+; VI-NEXT:    v_add_f16_e32 v17, s80, v29
 ; VI-NEXT:    v_or_b32_e32 v16, v17, v16
-; VI-NEXT:    v_mov_b32_e32 v17, s80
+; VI-NEXT:    v_mov_b32_e32 v17, s70
 ; VI-NEXT:    v_add_f16_sdwa v17, v17, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v18, s71, v29
+; VI-NEXT:    v_add_f16_e32 v18, s69, v29
 ; VI-NEXT:    v_or_b32_e32 v17, v18, v17
-; VI-NEXT:    v_mov_b32_e32 v18, s69
+; VI-NEXT:    v_mov_b32_e32 v18, s35
 ; VI-NEXT:    v_add_f16_sdwa v18, v18, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v19, s35, v29
+; VI-NEXT:    v_add_f16_e32 v19, s31, v29
 ; VI-NEXT:    v_or_b32_e32 v18, v19, v18
-; VI-NEXT:    v_mov_b32_e32 v19, s34
+; VI-NEXT:    v_mov_b32_e32 v19, s30
 ; VI-NEXT:    v_add_f16_sdwa v19, v19, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
-; VI-NEXT:    v_add_f16_e32 v20, s30, v29
+; VI-NEXT:    v_add_f16_e32 v20, vcc_lo, v29
 ; VI-NEXT:    v_or_b32_e32 v19, v20, v19
-; VI-NEXT:    v_mov_b32_e32 v20, s90
+; VI-NEXT:    v_mov_b32_e32 v20, s79
 ; VI-NEXT:    v_add_f16_sdwa v20, v20, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v21, s89, v29
 ; VI-NEXT:    v_or_b32_e32 v20, v21, v20
-; VI-NEXT:    v_mov_b32_e32 v21, s88
+; VI-NEXT:    v_mov_b32_e32 v21, s77
 ; VI-NEXT:    v_add_f16_sdwa v21, v21, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v22, s78, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 7
 ; VI-NEXT:    v_or_b32_e32 v21, v22, v21
-; VI-NEXT:    v_mov_b32_e32 v22, s4
+; VI-NEXT:    v_mov_b32_e32 v22, s88
 ; VI-NEXT:    v_add_f16_sdwa v22, v22, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v23, s76, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 6
+; VI-NEXT:    v_readlane_b32 s4, v33, 5
 ; VI-NEXT:    v_or_b32_e32 v22, v23, v22
 ; VI-NEXT:    v_mov_b32_e32 v23, s4
 ; VI-NEXT:    v_add_f16_sdwa v23, v23, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v24, s74, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 5
+; VI-NEXT:    v_readlane_b32 s4, v33, 4
 ; VI-NEXT:    v_or_b32_e32 v23, v24, v23
 ; VI-NEXT:    v_mov_b32_e32 v24, s4
 ; VI-NEXT:    v_add_f16_sdwa v24, v24, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v25, s72, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 4
+; VI-NEXT:    v_readlane_b32 s4, v33, 3
 ; VI-NEXT:    v_or_b32_e32 v24, v25, v24
 ; VI-NEXT:    v_mov_b32_e32 v25, s4
 ; VI-NEXT:    v_add_f16_sdwa v25, v25, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v26, s14, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 3
+; VI-NEXT:    v_readlane_b32 s4, v33, 2
 ; VI-NEXT:    v_or_b32_e32 v25, v26, v25
 ; VI-NEXT:    v_mov_b32_e32 v26, s4
 ; VI-NEXT:    v_add_f16_sdwa v26, v26, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v27, s12, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 2
+; VI-NEXT:    v_readlane_b32 s4, v33, 1
 ; VI-NEXT:    v_or_b32_e32 v26, v27, v26
 ; VI-NEXT:    v_mov_b32_e32 v27, s4
 ; VI-NEXT:    v_add_f16_sdwa v27, v27, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v28, s10, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 1
+; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v27, v28, v27
 ; VI-NEXT:    v_mov_b32_e32 v28, s4
 ; VI-NEXT:    v_add_f16_sdwa v28, v28, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v30, s8, v29
-; VI-NEXT:    v_readlane_b32 s4, v33, 0
 ; VI-NEXT:    v_or_b32_e32 v28, v30, v28
-; VI-NEXT:    v_mov_b32_e32 v30, s4
+; VI-NEXT:    v_mov_b32_e32 v30, s75
 ; VI-NEXT:    v_add_f16_sdwa v30, v30, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; VI-NEXT:    v_add_f16_e32 v29, s6, v29
 ; VI-NEXT:    v_or_b32_e32 v29, v29, v30
-; VI-NEXT:    s_branch .LBB55_5
-; VI-NEXT:  .LBB55_3:
-; VI-NEXT:    s_mov_b32 s90, s64
-; VI-NEXT:    s_mov_b32 s79, s88
-; VI-NEXT:    s_mov_b32 s91, s56
-; VI-NEXT:    s_mov_b32 s88, s57
-; VI-NEXT:    ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
-; VI-NEXT:    s_branch .LBB55_2
-; VI-NEXT:  .LBB55_4:
+; VI-NEXT:    s_branch .LBB55_6
+; VI-NEXT:  .LBB55_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s36
 ; VI-NEXT:    v_mov_b32_e32 v1, s37
 ; VI-NEXT:    v_mov_b32_e32 v2, s38
@@ -45199,7 +46014,7 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; VI-NEXT:    v_mov_b32_e32 v29, s65
 ; VI-NEXT:    v_mov_b32_e32 v30, s66
 ; VI-NEXT:    v_mov_b32_e32 v31, s67
-; VI-NEXT:  .LBB55_5: ; %end
+; VI-NEXT:  .LBB55_6: ; %end
 ; VI-NEXT:    v_readlane_b32 s30, v32, 30
 ; VI-NEXT:    v_readlane_b32 s31, v32, 31
 ; VI-NEXT:    v_readlane_b32 s87, v32, 29
@@ -45337,10 +46152,18 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s63, s63, s76
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s64, s74, s75
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s65, s72, s73
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v29, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v0, s36, v29 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s37, v29 op_sel_hi:[1,0]
@@ -45372,10 +46195,8 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; GFX9-NEXT:    v_pk_add_f16 v27, s63, v29 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v28, s64, v29 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v29, s65, v29 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_branch .LBB55_5
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:    s_branch .LBB55_6
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s36
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s37
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s38
@@ -45408,7 +46229,7 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; GFX9-NEXT:    v_mov_b32_e32 v29, s65
 ; GFX9-NEXT:    v_mov_b32_e32 v30, s66
 ; GFX9-NEXT:    v_mov_b32_e32 v31, s67
-; GFX9-NEXT:  .LBB55_5: ; %end
+; GFX9-NEXT:  .LBB55_6: ; %end
 ; GFX9-NEXT:    v_readlane_b32 s65, v32, 13
 ; GFX9-NEXT:    v_readlane_b32 s64, v32, 12
 ; GFX9-NEXT:    v_readlane_b32 s55, v32, 11
@@ -45507,11 +46328,16 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s27, s56, s61
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s28, s46, s59
 ; GFX11-NEXT:    s_pack_ll_b32_b16 s29, s45, s58
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s40
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s40, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s40, s40, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s40, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s40, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
@@ -45543,8 +46369,6 @@ define inreg <15 x double> @bitcast_v60f16_to_v15f64_scalar(<60 x half> inreg %a
 ; GFX11-NEXT:    v_pk_add_f16 v28, 0x200, s28 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v29, 0x200, s29 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -47098,227 +47922,271 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; SI-NEXT:    v_writelane_b32 v30, s99, 33
 ; SI-NEXT:    v_writelane_b32 v30, s30, 34
 ; SI-NEXT:    v_writelane_b32 v30, s31, 35
+; SI-NEXT:    s_lshr_b32 s5, s24, 16
 ; SI-NEXT:    ; implicit-def: $vgpr31 : SGPR spill to VGPR lane
-; SI-NEXT:    s_mov_b32 s35, s17
+; SI-NEXT:    s_lshr_b32 s6, s26, 16
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_writelane_b32 v31, s18, 0
-; SI-NEXT:    v_writelane_b32 v31, s20, 1
+; SI-NEXT:    v_writelane_b32 v31, s5, 0
+; SI-NEXT:    s_lshr_b32 s7, s28, 16
+; SI-NEXT:    v_readfirstlane_b32 s99, v0
+; SI-NEXT:    v_writelane_b32 v31, s6, 1
+; SI-NEXT:    v_readfirstlane_b32 s98, v2
+; SI-NEXT:    s_lshr_b32 s8, s99, 16
+; SI-NEXT:    v_writelane_b32 v31, s7, 2
+; SI-NEXT:    v_readfirstlane_b32 s64, v4
+; SI-NEXT:    s_lshr_b32 s9, s98, 16
+; SI-NEXT:    v_writelane_b32 v31, s8, 3
+; SI-NEXT:    v_readfirstlane_b32 s66, v6
+; SI-NEXT:    s_lshr_b32 s10, s64, 16
+; SI-NEXT:    v_writelane_b32 v31, s9, 4
+; SI-NEXT:    v_readfirstlane_b32 s68, v8
+; SI-NEXT:    s_lshr_b32 s11, s66, 16
+; SI-NEXT:    v_writelane_b32 v31, s10, 5
+; SI-NEXT:    s_mov_b32 s35, s17
+; SI-NEXT:    s_lshr_b32 s79, s17, 16
+; SI-NEXT:    v_readfirstlane_b32 s17, v10
+; SI-NEXT:    s_lshr_b32 s13, s68, 16
+; SI-NEXT:    v_writelane_b32 v31, s11, 6
 ; SI-NEXT:    s_mov_b32 s37, s16
-; SI-NEXT:    s_lshr_b32 s78, s17, 16
-; SI-NEXT:    s_lshr_b32 s48, s16, 16
+; SI-NEXT:    s_lshr_b32 s39, s16, 16
+; SI-NEXT:    v_readfirstlane_b32 s16, v12
+; SI-NEXT:    s_lshr_b32 s15, s17, 16
+; SI-NEXT:    v_writelane_b32 v31, s13, 7
 ; SI-NEXT:    v_readfirstlane_b32 s74, v15
 ; SI-NEXT:    v_readfirstlane_b32 s75, v14
 ; SI-NEXT:    v_readfirstlane_b32 s70, v13
-; SI-NEXT:    v_readfirstlane_b32 s16, v12
+; SI-NEXT:    s_lshr_b32 s41, s16, 16
 ; SI-NEXT:    v_readfirstlane_b32 s69, v11
-; SI-NEXT:    v_readfirstlane_b32 s17, v10
 ; SI-NEXT:    v_readfirstlane_b32 s67, v9
-; SI-NEXT:    v_readfirstlane_b32 s68, v8
 ; SI-NEXT:    v_readfirstlane_b32 s65, v7
-; SI-NEXT:    v_readfirstlane_b32 s66, v6
 ; SI-NEXT:    v_readfirstlane_b32 s96, v5
-; SI-NEXT:    v_readfirstlane_b32 s64, v4
-; SI-NEXT:    v_readfirstlane_b32 s97, v3
-; SI-NEXT:    v_readfirstlane_b32 s87, v2
-; SI-NEXT:    v_readfirstlane_b32 s51, v1
-; SI-NEXT:    v_readfirstlane_b32 s99, v0
-; SI-NEXT:    v_writelane_b32 v31, s22, 2
+; SI-NEXT:    v_readfirstlane_b32 s87, v3
+; SI-NEXT:    v_readfirstlane_b32 s97, v1
+; SI-NEXT:    v_writelane_b32 v31, s15, 8
 ; SI-NEXT:    s_lshr_b32 s31, s29, 16
-; SI-NEXT:    s_lshr_b32 s76, s28, 16
-; SI-NEXT:    s_lshr_b32 s30, s27, 16
-; SI-NEXT:    s_lshr_b32 s84, s26, 16
-; SI-NEXT:    s_lshr_b32 s94, s25, 16
-; SI-NEXT:    s_lshr_b32 s55, s24, 16
-; SI-NEXT:    s_lshr_b32 s92, s23, 16
-; SI-NEXT:    s_lshr_b32 s54, s22, 16
-; SI-NEXT:    s_lshr_b32 s90, s21, 16
-; SI-NEXT:    s_lshr_b32 s52, s20, 16
-; SI-NEXT:    s_lshr_b32 s88, s19, 16
-; SI-NEXT:    s_lshr_b32 s50, s18, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s27, 16
+; SI-NEXT:    s_lshr_b32 s95, s25, 16
+; SI-NEXT:    s_lshr_b32 s93, s23, 16
+; SI-NEXT:    s_lshr_b32 s53, s22, 16
+; SI-NEXT:    s_lshr_b32 s91, s21, 16
+; SI-NEXT:    s_lshr_b32 s51, s20, 16
+; SI-NEXT:    s_lshr_b32 s89, s19, 16
+; SI-NEXT:    s_lshr_b32 s49, s18, 16
 ; SI-NEXT:    s_lshr_b32 s86, s74, 16
-; SI-NEXT:    s_lshr_b32 s93, s75, 16
+; SI-NEXT:    s_lshr_b32 s77, s75, 16
 ; SI-NEXT:    s_lshr_b32 s85, s70, 16
-; SI-NEXT:    s_lshr_b32 s91, s16, 16
-; SI-NEXT:    s_lshr_b32 s39, s69, 16
-; SI-NEXT:    s_lshr_b32 s89, s17, 16
-; SI-NEXT:    s_lshr_b32 s83, s67, 16
-; SI-NEXT:    s_lshr_b32 s79, s68, 16
-; SI-NEXT:    s_lshr_b32 s82, s65, 16
-; SI-NEXT:    s_lshr_b32 s77, s66, 16
-; SI-NEXT:    s_lshr_b32 s81, s96, 16
-; SI-NEXT:    s_lshr_b32 s98, s64, 16
-; SI-NEXT:    s_lshr_b32 s80, s97, 16
-; SI-NEXT:    s_lshr_b32 s95, s87, 16
-; SI-NEXT:    s_lshr_b32 s53, s51, 16
-; SI-NEXT:    s_lshr_b32 s71, s99, 16
+; SI-NEXT:    s_lshr_b32 s84, s69, 16
+; SI-NEXT:    s_lshr_b32 s71, s67, 16
+; SI-NEXT:    s_lshr_b32 s90, s65, 16
+; SI-NEXT:    s_lshr_b32 s88, s96, 16
+; SI-NEXT:    s_lshr_b32 s78, s87, 16
+; SI-NEXT:    s_lshr_b32 s83, s97, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v16
-; SI-NEXT:    v_writelane_b32 v31, s24, 3
+; SI-NEXT:    v_writelane_b32 v31, s41, 9
+; SI-NEXT:    s_mov_b32 s81, s22
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    v_writelane_b32 v31, s26, 4
-; SI-NEXT:    v_writelane_b32 v31, s28, 5
-; SI-NEXT:    s_cbranch_scc0 .LBB57_4
+; SI-NEXT:    v_writelane_b32 v31, s77, 10
+; SI-NEXT:    v_writelane_b32 v31, s24, 11
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
+; SI-NEXT:    s_lshl_b32 s56, s5, 16
+; SI-NEXT:    s_lshl_b32 s44, s7, 16
 ; SI-NEXT:    s_and_b32 s5, s35, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s78, 16
+; SI-NEXT:    s_lshl_b32 s7, s79, 16
 ; SI-NEXT:    s_or_b32 s73, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s88, 16
+; SI-NEXT:    s_lshl_b32 s7, s89, 16
 ; SI-NEXT:    s_or_b32 s63, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s90, 16
+; SI-NEXT:    s_lshl_b32 s7, s91, 16
 ; SI-NEXT:    s_or_b32 s61, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s92, 16
+; SI-NEXT:    s_lshl_b32 s7, s93, 16
 ; SI-NEXT:    s_or_b32 s59, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s94, 16
+; SI-NEXT:    s_lshl_b32 s7, s95, 16
 ; SI-NEXT:    s_or_b32 s57, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s30, 16
+; SI-NEXT:    s_lshl_b32 s7, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s47, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s31, 16
 ; SI-NEXT:    s_or_b32 s45, s5, s7
-; SI-NEXT:    s_and_b32 s5, s51, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s53, 16
-; SI-NEXT:    s_or_b32 s43, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s97, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s80, 16
+; SI-NEXT:    s_lshl_b32 s7, s83, 16
+; SI-NEXT:    s_or_b32 s43, s5, s7
+; SI-NEXT:    s_and_b32 s5, s87, 0xffff
+; SI-NEXT:    s_lshl_b32 s7, s78, 16
+; SI-NEXT:    s_lshl_b32 s46, s6, 16
+; SI-NEXT:    s_lshl_b32 s6, s41, 16
 ; SI-NEXT:    s_or_b32 s41, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s96, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s81, 16
+; SI-NEXT:    s_lshl_b32 s7, s88, 16
+; SI-NEXT:    s_lshl_b32 s42, s8, 16
+; SI-NEXT:    s_lshl_b32 s8, s15, 16
 ; SI-NEXT:    s_or_b32 s15, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s65, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s82, 16
+; SI-NEXT:    s_lshl_b32 s7, s90, 16
+; SI-NEXT:    s_lshl_b32 s14, s10, 16
+; SI-NEXT:    s_lshl_b32 s10, s13, 16
 ; SI-NEXT:    s_or_b32 s13, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s67, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s83, 16
+; SI-NEXT:    s_lshl_b32 s7, s71, 16
+; SI-NEXT:    s_lshl_b32 s12, s11, 16
 ; SI-NEXT:    s_or_b32 s11, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s69, 0xffff
-; SI-NEXT:    s_lshl_b32 s7, s39, 16
+; SI-NEXT:    s_lshl_b32 s7, s84, 16
+; SI-NEXT:    s_and_b32 s4, s37, 0xffff
+; SI-NEXT:    s_lshl_b32 s72, s39, 16
+; SI-NEXT:    s_lshl_b32 s40, s9, 16
 ; SI-NEXT:    s_or_b32 s9, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s70, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s85, 16
-; SI-NEXT:    s_and_b32 s4, s37, 0xffff
-; SI-NEXT:    s_lshl_b32 s72, s48, 16
-; SI-NEXT:    s_lshl_b32 s44, s76, 16
-; SI-NEXT:    s_lshl_b32 s42, s71, 16
+; SI-NEXT:    s_or_b32 s4, s4, s72
+; SI-NEXT:    s_lshl_b32 s62, s49, 16
 ; SI-NEXT:    s_or_b32 s7, s5, s7
 ; SI-NEXT:    s_and_b32 s5, s74, 0xffff
-; SI-NEXT:    s_mov_b32 s49, s71
-; SI-NEXT:    s_mov_b32 s71, s76
 ; SI-NEXT:    s_lshl_b32 s76, s86, 16
-; SI-NEXT:    s_or_b32 s4, s4, s72
-; SI-NEXT:    s_or_b32 vcc_hi, s5, s76
-; SI-NEXT:    s_mov_b32 s5, s73
-; SI-NEXT:    s_lshr_b64 s[72:73], s[72:73], 16
-; SI-NEXT:    v_writelane_b32 v31, s72, 6
-; SI-NEXT:    s_lshl_b32 s62, s50, 16
-; SI-NEXT:    v_writelane_b32 v31, s73, 7
+; SI-NEXT:    s_mov_b32 s22, s81
+; SI-NEXT:    s_lshr_b64 s[80:81], s[72:73], 16
 ; SI-NEXT:    s_and_b32 s72, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s60, s52, 16
+; SI-NEXT:    s_lshl_b32 s60, s51, 16
+; SI-NEXT:    s_lshl_b32 s58, s53, 16
+; SI-NEXT:    s_mov_b32 s54, s53
+; SI-NEXT:    s_or_b32 s53, s5, s76
+; SI-NEXT:    s_lshl_b32 s52, s77, 16
+; SI-NEXT:    s_mov_b32 s81, s22
 ; SI-NEXT:    s_or_b32 s72, s72, s62
-; SI-NEXT:    s_mov_b32 s76, s19
-; SI-NEXT:    s_lshr_b64 s[18:19], s[62:63], 16
+; SI-NEXT:    s_lshr_b64 s[76:77], s[62:63], 16
 ; SI-NEXT:    s_and_b32 s62, s20, 0xffff
-; SI-NEXT:    s_mov_b32 s73, s63
 ; SI-NEXT:    s_or_b32 s62, s62, s60
-; SI-NEXT:    s_mov_b32 s63, s61
-; SI-NEXT:    s_lshr_b64 s[60:61], s[60:61], 16
-; SI-NEXT:    v_writelane_b32 v31, s60, 8
-; SI-NEXT:    s_lshl_b32 s58, s54, 16
-; SI-NEXT:    v_writelane_b32 v31, s61, 9
-; SI-NEXT:    s_and_b32 s60, s22, 0xffff
+; SI-NEXT:    s_mov_b32 s22, s21
+; SI-NEXT:    s_mov_b32 s21, s83
+; SI-NEXT:    s_lshr_b64 s[82:83], s[60:61], 16
+; SI-NEXT:    s_and_b32 s60, s81, 0xffff
+; SI-NEXT:    s_mov_b32 s83, s21
+; SI-NEXT:    s_mov_b32 s21, s22
 ; SI-NEXT:    s_or_b32 s60, s60, s58
-; SI-NEXT:    s_mov_b32 s61, s59
-; SI-NEXT:    s_lshr_b64 s[58:59], s[58:59], 16
-; SI-NEXT:    v_writelane_b32 v31, s58, 10
-; SI-NEXT:    s_lshl_b32 s56, s55, 16
-; SI-NEXT:    v_writelane_b32 v31, s59, 11
+; SI-NEXT:    s_mov_b32 s77, s89
+; SI-NEXT:    s_mov_b32 s89, s23
+; SI-NEXT:    s_lshr_b64 s[22:23], s[58:59], 16
 ; SI-NEXT:    s_and_b32 s58, s24, 0xffff
+; SI-NEXT:    s_mov_b32 s23, s89
+; SI-NEXT:    s_mov_b32 s89, s77
 ; SI-NEXT:    s_or_b32 s58, s58, s56
-; SI-NEXT:    s_mov_b32 s59, s57
-; SI-NEXT:    s_lshr_b64 s[56:57], s[56:57], 16
-; SI-NEXT:    v_writelane_b32 v31, s56, 12
-; SI-NEXT:    s_lshl_b32 s46, s84, 16
-; SI-NEXT:    v_writelane_b32 v31, s57, 13
+; SI-NEXT:    s_mov_b32 s77, s91
+; SI-NEXT:    s_mov_b32 s91, s25
+; SI-NEXT:    s_lshr_b64 s[24:25], s[56:57], 16
 ; SI-NEXT:    s_and_b32 s56, s26, 0xffff
+; SI-NEXT:    s_mov_b32 s25, s91
+; SI-NEXT:    s_mov_b32 s91, s77
 ; SI-NEXT:    s_or_b32 s56, s56, s46
-; SI-NEXT:    s_mov_b32 s57, s47
-; SI-NEXT:    s_lshr_b64 s[46:47], s[46:47], 16
-; SI-NEXT:    v_writelane_b32 v31, s46, 14
-; SI-NEXT:    v_writelane_b32 v31, s47, 15
+; SI-NEXT:    s_mov_b32 s77, s93
+; SI-NEXT:    s_lshr_b64 s[92:93], s[46:47], 16
 ; SI-NEXT:    s_and_b32 s46, s28, 0xffff
+; SI-NEXT:    s_mov_b32 s93, s77
 ; SI-NEXT:    s_or_b32 s46, s46, s44
-; SI-NEXT:    s_mov_b32 s47, s45
-; SI-NEXT:    s_lshr_b64 s[44:45], s[44:45], 16
-; SI-NEXT:    v_writelane_b32 v31, s44, 16
-; SI-NEXT:    v_writelane_b32 v31, s45, 17
+; SI-NEXT:    s_mov_b32 s77, s95
+; SI-NEXT:    s_lshr_b64 s[94:95], s[44:45], 16
 ; SI-NEXT:    s_and_b32 s44, s99, 0xffff
+; SI-NEXT:    s_mov_b32 s95, s77
 ; SI-NEXT:    s_or_b32 s44, s44, s42
-; SI-NEXT:    s_mov_b32 s45, s43
-; SI-NEXT:    s_lshr_b64 s[42:43], s[42:43], 16
-; SI-NEXT:    v_writelane_b32 v31, s42, 18
-; SI-NEXT:    s_lshl_b32 s40, s95, 16
-; SI-NEXT:    v_writelane_b32 v31, s43, 19
-; SI-NEXT:    s_and_b32 s42, s87, 0xffff
-; SI-NEXT:    s_lshl_b32 s14, s98, 16
+; SI-NEXT:    s_mov_b32 s77, vcc_hi
+; SI-NEXT:    s_lshr_b64 vcc, s[42:43], 16
+; SI-NEXT:    s_and_b32 s42, s98, 0xffff
+; SI-NEXT:    s_mov_b32 vcc_hi, s77
 ; SI-NEXT:    s_or_b32 s42, s42, s40
-; SI-NEXT:    s_mov_b32 s36, s35
-; SI-NEXT:    s_lshr_b64 s[34:35], s[40:41], 16
+; SI-NEXT:    s_mov_b32 s77, s31
+; SI-NEXT:    s_lshr_b64 s[30:31], s[40:41], 16
 ; SI-NEXT:    s_and_b32 s40, s64, 0xffff
-; SI-NEXT:    s_lshl_b32 s12, s77, 16
-; SI-NEXT:    s_mov_b32 s35, s36
+; SI-NEXT:    s_mov_b32 s31, s77
 ; SI-NEXT:    s_or_b32 s40, s40, s14
-; SI-NEXT:    s_mov_b32 s38, s37
-; SI-NEXT:    s_lshr_b64 s[36:37], s[14:15], 16
+; SI-NEXT:    s_mov_b32 s77, s35
+; SI-NEXT:    s_lshr_b64 s[34:35], s[14:15], 16
 ; SI-NEXT:    s_and_b32 s14, s66, 0xffff
-; SI-NEXT:    s_mov_b32 s43, s41
-; SI-NEXT:    s_mov_b32 s41, s15
+; SI-NEXT:    s_mov_b32 s35, s77
 ; SI-NEXT:    s_or_b32 s14, s14, s12
-; SI-NEXT:    s_mov_b32 s15, s13
-; SI-NEXT:    s_lshr_b64 s[12:13], s[12:13], 16
-; SI-NEXT:    v_writelane_b32 v31, s12, 20
-; SI-NEXT:    s_lshl_b32 s10, s79, 16
-; SI-NEXT:    v_writelane_b32 v31, s13, 21
+; SI-NEXT:    s_mov_b32 s77, s37
+; SI-NEXT:    s_lshr_b64 s[36:37], s[12:13], 16
 ; SI-NEXT:    s_and_b32 s12, s68, 0xffff
+; SI-NEXT:    s_mov_b32 s37, s77
 ; SI-NEXT:    s_or_b32 s12, s12, s10
-; SI-NEXT:    s_mov_b32 s13, s11
-; SI-NEXT:    s_lshr_b64 s[10:11], s[10:11], 16
-; SI-NEXT:    v_writelane_b32 v31, s10, 22
-; SI-NEXT:    s_lshl_b32 s8, s89, 16
-; SI-NEXT:    v_writelane_b32 v31, s11, 23
+; SI-NEXT:    s_mov_b32 s77, s39
+; SI-NEXT:    s_lshr_b64 s[38:39], s[10:11], 16
 ; SI-NEXT:    s_and_b32 s10, s17, 0xffff
+; SI-NEXT:    s_mov_b32 s39, s77
 ; SI-NEXT:    s_or_b32 s10, s10, s8
-; SI-NEXT:    s_mov_b32 s11, s9
-; SI-NEXT:    s_lshr_b64 s[8:9], s[8:9], 16
-; SI-NEXT:    v_writelane_b32 v31, s8, 24
-; SI-NEXT:    s_lshl_b32 s6, s91, 16
-; SI-NEXT:    v_writelane_b32 v31, s9, 25
+; SI-NEXT:    s_mov_b32 s77, s49
+; SI-NEXT:    s_lshr_b64 s[48:49], s[8:9], 16
 ; SI-NEXT:    s_and_b32 s8, s16, 0xffff
+; SI-NEXT:    s_mov_b32 s49, s77
 ; SI-NEXT:    s_or_b32 s8, s8, s6
-; SI-NEXT:    s_mov_b32 s9, s7
-; SI-NEXT:    s_lshr_b64 s[6:7], s[6:7], 16
-; SI-NEXT:    s_lshl_b32 vcc_lo, s93, 16
-; SI-NEXT:    v_writelane_b32 v31, s6, 26
-; SI-NEXT:    s_mov_b32 s19, s76
-; SI-NEXT:    s_mov_b32 s37, s38
-; SI-NEXT:    s_mov_b32 s76, s84
-; SI-NEXT:    v_writelane_b32 v31, s7, 27
+; SI-NEXT:    s_mov_b32 s77, s51
+; SI-NEXT:    s_lshr_b64 s[50:51], s[6:7], 16
 ; SI-NEXT:    s_and_b32 s6, s75, 0xffff
-; SI-NEXT:    s_mov_b32 s84, s39
-; SI-NEXT:    s_lshr_b64 s[38:39], vcc, 16
-; SI-NEXT:    s_or_b32 s6, s6, vcc_lo
-; SI-NEXT:    s_mov_b32 s7, vcc_hi
-; SI-NEXT:    s_mov_b32 s39, s84
-; SI-NEXT:    s_mov_b32 s84, s76
-; SI-NEXT:    s_mov_b32 s76, s71
-; SI-NEXT:    s_mov_b32 s71, s49
-; SI-NEXT:    s_cbranch_execnz .LBB57_3
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_mov_b32 s5, s73
+; SI-NEXT:    s_mov_b32 s73, s63
+; SI-NEXT:    s_mov_b32 s63, s61
+; SI-NEXT:    s_mov_b32 s61, s59
+; SI-NEXT:    s_mov_b32 s59, s57
+; SI-NEXT:    s_mov_b32 s57, s47
+; SI-NEXT:    s_mov_b32 s47, s45
+; SI-NEXT:    s_mov_b32 s45, s43
+; SI-NEXT:    s_mov_b32 s43, s41
+; SI-NEXT:    s_mov_b32 s41, s15
+; SI-NEXT:    s_mov_b32 s15, s13
+; SI-NEXT:    s_mov_b32 s13, s11
+; SI-NEXT:    s_mov_b32 s11, s9
+; SI-NEXT:    s_mov_b32 s9, s7
+; SI-NEXT:    s_or_b32 s6, s6, s52
+; SI-NEXT:    s_mov_b32 s7, s53
+; SI-NEXT:    s_lshr_b64 s[52:53], s[52:53], 16
+; SI-NEXT:    s_mov_b32 s51, s77
+; SI-NEXT:    s_mov_b32 s53, s54
+; SI-NEXT:    s_mov_b64 s[54:55], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[54:55], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr80
+; SI-NEXT:    ; implicit-def: $sgpr72
+; SI-NEXT:    ; implicit-def: $sgpr76
+; SI-NEXT:    ; implicit-def: $sgpr62
+; SI-NEXT:    ; implicit-def: $sgpr82
+; SI-NEXT:    ; implicit-def: $sgpr60
+; SI-NEXT:    ; implicit-def: $sgpr22
+; SI-NEXT:    ; implicit-def: $sgpr58
+; SI-NEXT:    ; implicit-def: $sgpr24
+; SI-NEXT:    ; implicit-def: $sgpr56
+; SI-NEXT:    ; implicit-def: $sgpr92
+; SI-NEXT:    ; implicit-def: $sgpr46
+; SI-NEXT:    ; implicit-def: $sgpr94
+; SI-NEXT:    ; implicit-def: $sgpr44
+; SI-NEXT:    ; implicit-def: $vcc_lo
+; SI-NEXT:    ; implicit-def: $sgpr42
+; SI-NEXT:    ; implicit-def: $sgpr30
+; SI-NEXT:    ; implicit-def: $sgpr40
+; SI-NEXT:    ; implicit-def: $sgpr34
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr36
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr38
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr48
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr50
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr52
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[54:55], s[54:55], exec
+; SI-NEXT:    s_cselect_b32 s77, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s77, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s75, s75, 3
+; SI-NEXT:    v_readlane_b32 s5, v31, 10
 ; SI-NEXT:    s_and_b32 s4, s75, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s93, 16
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s74, s74, 3
 ; SI-NEXT:    s_add_i32 s6, s4, 0x30000
@@ -47326,9 +48194,10 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s5, s86, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s16, s16, 3
+; SI-NEXT:    v_readlane_b32 s5, v31, 9
 ; SI-NEXT:    s_add_i32 s7, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s91, 16
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s70, s70, 3
 ; SI-NEXT:    s_add_i32 s8, s4, 0x30000
@@ -47336,308 +48205,268 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s5, s85, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s17, s17, 3
+; SI-NEXT:    v_readlane_b32 s5, v31, 8
 ; SI-NEXT:    s_add_i32 s9, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s17, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s89, 16
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s69, s69, 3
 ; SI-NEXT:    s_add_i32 s10, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s69, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s39, 16
+; SI-NEXT:    s_lshl_b32 s5, s84, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s68, s68, 3
+; SI-NEXT:    v_readlane_b32 s5, v31, 7
 ; SI-NEXT:    s_add_i32 s11, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s68, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s79, 16
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s67, s67, 3
 ; SI-NEXT:    s_add_i32 s12, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s67, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s83, 16
+; SI-NEXT:    s_lshl_b32 s5, s71, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s66, s66, 3
+; SI-NEXT:    v_readlane_b32 s5, v31, 6
 ; SI-NEXT:    s_add_i32 s13, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s66, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s77, 16
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s65, s65, 3
 ; SI-NEXT:    s_add_i32 s14, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s65, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s82, 16
+; SI-NEXT:    s_lshl_b32 s5, s90, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s64, s64, 3
+; SI-NEXT:    v_readlane_b32 s5, v31, 5
 ; SI-NEXT:    s_add_i32 s15, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s64, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s98, 16
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s96, s96, 3
 ; SI-NEXT:    s_add_i32 s40, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s96, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s81, 16
+; SI-NEXT:    s_lshl_b32 s5, s88, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s98, s87, 3
+; SI-NEXT:    s_add_i32 s98, s98, 3
+; SI-NEXT:    v_readlane_b32 s5, v31, 4
 ; SI-NEXT:    s_add_i32 s41, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s98, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s95, 16
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s87, s97, 3
+; SI-NEXT:    s_add_i32 s87, s87, 3
 ; SI-NEXT:    s_add_i32 s42, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s87, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s80, 16
+; SI-NEXT:    s_lshl_b32 s5, s78, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s99, s99, 3
+; SI-NEXT:    v_readlane_b32 s5, v31, 3
 ; SI-NEXT:    s_add_i32 s43, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s99, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s71, 16
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_add_i32 s97, s51, 3
+; SI-NEXT:    s_add_i32 s97, s97, 3
 ; SI-NEXT:    s_add_i32 s44, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s97, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s53, 16
+; SI-NEXT:    s_lshl_b32 s5, s83, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_add_i32 s28, s28, 3
+; SI-NEXT:    v_readlane_b32 s5, v31, 2
 ; SI-NEXT:    s_add_i32 s45, s4, 0x30000
-; SI-NEXT:    v_readlane_b32 s4, v31, 5
-; SI-NEXT:    s_add_i32 s28, s4, 3
 ; SI-NEXT:    s_and_b32 s4, s28, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s76, 16
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s29, s29, 3
 ; SI-NEXT:    s_add_i32 s46, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s29, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s31, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_add_i32 s26, s26, 3
+; SI-NEXT:    v_readlane_b32 s5, v31, 1
 ; SI-NEXT:    s_add_i32 s47, s4, 0x30000
-; SI-NEXT:    v_readlane_b32 s4, v31, 4
-; SI-NEXT:    s_add_i32 s26, s4, 3
 ; SI-NEXT:    s_and_b32 s4, s26, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s84, 16
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s27, s27, 3
 ; SI-NEXT:    s_add_i32 s56, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s27, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s30, 16
+; SI-NEXT:    s_lshl_b32 s5, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s57, s4, 0x30000
-; SI-NEXT:    v_readlane_b32 s4, v31, 3
+; SI-NEXT:    v_readlane_b32 s4, v31, 11
 ; SI-NEXT:    s_add_i32 s24, s4, 3
+; SI-NEXT:    v_readlane_b32 s5, v31, 0
 ; SI-NEXT:    s_and_b32 s4, s24, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s55, 16
+; SI-NEXT:    s_lshl_b32 s5, s5, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s25, s25, 3
 ; SI-NEXT:    s_add_i32 s58, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s25, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s94, 16
+; SI-NEXT:    s_lshl_b32 s5, s95, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_add_i32 s22, s81, 3
 ; SI-NEXT:    s_add_i32 s59, s4, 0x30000
-; SI-NEXT:    v_readlane_b32 s4, v31, 2
-; SI-NEXT:    s_add_i32 s22, s4, 3
 ; SI-NEXT:    s_and_b32 s4, s22, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s54, 16
+; SI-NEXT:    s_lshl_b32 s5, s53, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s23, s23, 3
 ; SI-NEXT:    s_add_i32 s60, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s23, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s92, 16
+; SI-NEXT:    s_lshl_b32 s5, s93, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_add_i32 s20, s20, 3
 ; SI-NEXT:    s_add_i32 s61, s4, 0x30000
-; SI-NEXT:    v_readlane_b32 s4, v31, 1
-; SI-NEXT:    s_add_i32 s20, s4, 3
 ; SI-NEXT:    s_and_b32 s4, s20, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s52, 16
+; SI-NEXT:    s_lshl_b32 s5, s51, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s21, s21, 3
 ; SI-NEXT:    s_add_i32 s62, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s21, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s90, 16
+; SI-NEXT:    s_lshl_b32 s5, s91, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
+; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s63, s4, 0x30000
-; SI-NEXT:    v_readlane_b32 s4, v31, 0
-; SI-NEXT:    s_add_i32 s18, s4, 3
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s50, 16
+; SI-NEXT:    s_lshl_b32 s5, s49, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s19, s19, 3
 ; SI-NEXT:    s_add_i32 s72, s4, 0x30000
 ; SI-NEXT:    s_and_b32 s4, s19, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s88, 16
+; SI-NEXT:    s_lshl_b32 s5, s89, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s73, s4, 0x30000
 ; SI-NEXT:    s_add_i32 s4, s37, 3
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s48, 16
+; SI-NEXT:    s_lshl_b32 s5, s39, 16
 ; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    s_add_i32 s5, s35, 3
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s78, 16
+; SI-NEXT:    s_lshl_b32 s16, s79, 16
 ; SI-NEXT:    s_or_b32 s5, s16, s5
 ; SI-NEXT:    s_add_i32 s4, s4, 0x30000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x30000
-; SI-NEXT:    s_lshr_b64 s[16:17], s[4:5], 16
-; SI-NEXT:    v_writelane_b32 v31, s16, 6
-; SI-NEXT:    v_writelane_b32 v31, s17, 7
-; SI-NEXT:    s_lshr_b64 s[16:17], s[62:63], 16
-; SI-NEXT:    v_writelane_b32 v31, s16, 8
-; SI-NEXT:    v_writelane_b32 v31, s17, 9
-; SI-NEXT:    s_lshr_b64 s[16:17], s[60:61], 16
-; SI-NEXT:    v_writelane_b32 v31, s16, 10
-; SI-NEXT:    v_writelane_b32 v31, s17, 11
-; SI-NEXT:    s_lshr_b64 s[16:17], s[58:59], 16
-; SI-NEXT:    v_writelane_b32 v31, s16, 12
-; SI-NEXT:    v_writelane_b32 v31, s17, 13
-; SI-NEXT:    s_lshr_b64 s[16:17], s[56:57], 16
-; SI-NEXT:    v_writelane_b32 v31, s16, 14
-; SI-NEXT:    v_writelane_b32 v31, s17, 15
-; SI-NEXT:    s_lshr_b64 s[16:17], s[46:47], 16
-; SI-NEXT:    v_writelane_b32 v31, s16, 16
-; SI-NEXT:    v_writelane_b32 v31, s17, 17
-; SI-NEXT:    s_lshr_b64 s[16:17], s[44:45], 16
-; SI-NEXT:    v_writelane_b32 v31, s16, 18
-; SI-NEXT:    v_writelane_b32 v31, s17, 19
-; SI-NEXT:    s_lshr_b64 s[16:17], s[14:15], 16
-; SI-NEXT:    v_writelane_b32 v31, s16, 20
-; SI-NEXT:    v_writelane_b32 v31, s17, 21
-; SI-NEXT:    s_lshr_b64 s[16:17], s[12:13], 16
-; SI-NEXT:    v_writelane_b32 v31, s16, 22
-; SI-NEXT:    v_writelane_b32 v31, s17, 23
-; SI-NEXT:    s_lshr_b64 s[16:17], s[10:11], 16
-; SI-NEXT:    v_writelane_b32 v31, s16, 24
-; SI-NEXT:    v_writelane_b32 v31, s17, 25
-; SI-NEXT:    s_lshr_b64 s[16:17], s[8:9], 16
-; SI-NEXT:    s_lshr_b64 s[38:39], s[6:7], 16
-; SI-NEXT:    s_lshr_b64 s[18:19], s[72:73], 16
-; SI-NEXT:    s_lshr_b64 s[34:35], s[42:43], 16
-; SI-NEXT:    s_lshr_b64 s[36:37], s[40:41], 16
-; SI-NEXT:    v_writelane_b32 v31, s16, 26
-; SI-NEXT:    s_lshr_b32 s78, s5, 16
-; SI-NEXT:    s_lshr_b32 s88, s73, 16
-; SI-NEXT:    s_lshr_b32 s90, s63, 16
-; SI-NEXT:    s_lshr_b32 s92, s61, 16
-; SI-NEXT:    s_lshr_b32 s94, s59, 16
-; SI-NEXT:    s_lshr_b32 s30, s57, 16
+; SI-NEXT:    s_lshr_b64 s[82:83], s[62:63], 16
+; SI-NEXT:    s_lshr_b64 s[92:93], s[56:57], 16
+; SI-NEXT:    s_lshr_b64 s[94:95], s[46:47], 16
+; SI-NEXT:    s_lshr_b64 vcc, s[44:45], 16
+; SI-NEXT:    s_lshr_b64 s[30:31], s[42:43], 16
+; SI-NEXT:    s_lshr_b64 s[80:81], s[4:5], 16
+; SI-NEXT:    s_lshr_b64 s[76:77], s[72:73], 16
+; SI-NEXT:    s_lshr_b64 s[22:23], s[60:61], 16
+; SI-NEXT:    s_lshr_b64 s[24:25], s[58:59], 16
+; SI-NEXT:    s_lshr_b64 s[34:35], s[40:41], 16
+; SI-NEXT:    s_lshr_b64 s[36:37], s[14:15], 16
+; SI-NEXT:    s_lshr_b64 s[38:39], s[12:13], 16
+; SI-NEXT:    s_lshr_b64 s[48:49], s[10:11], 16
+; SI-NEXT:    s_lshr_b64 s[50:51], s[8:9], 16
+; SI-NEXT:    s_lshr_b64 s[52:53], s[6:7], 16
+; SI-NEXT:    s_lshr_b32 s79, s5, 16
+; SI-NEXT:    s_lshr_b32 s89, s73, 16
+; SI-NEXT:    s_lshr_b32 s91, s63, 16
+; SI-NEXT:    s_lshr_b32 s93, s61, 16
+; SI-NEXT:    s_lshr_b32 s95, s59, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s57, 16
 ; SI-NEXT:    s_lshr_b32 s31, s47, 16
-; SI-NEXT:    s_lshr_b32 s53, s45, 16
-; SI-NEXT:    s_lshr_b32 s80, s43, 16
-; SI-NEXT:    s_lshr_b32 s81, s41, 16
-; SI-NEXT:    s_lshr_b32 s82, s15, 16
-; SI-NEXT:    s_lshr_b32 s83, s13, 16
-; SI-NEXT:    s_lshr_b32 s39, s11, 16
+; SI-NEXT:    s_lshr_b32 s83, s45, 16
+; SI-NEXT:    s_lshr_b32 s78, s43, 16
+; SI-NEXT:    s_lshr_b32 s88, s41, 16
+; SI-NEXT:    s_lshr_b32 s90, s15, 16
+; SI-NEXT:    s_lshr_b32 s71, s13, 16
+; SI-NEXT:    s_lshr_b32 s84, s11, 16
 ; SI-NEXT:    s_lshr_b32 s85, s9, 16
 ; SI-NEXT:    s_lshr_b32 s86, s7, 16
-; SI-NEXT:    v_writelane_b32 v31, s17, 27
-; SI-NEXT:  .LBB57_3: ; %end
-; SI-NEXT:    v_readlane_b32 s16, v31, 6
+; SI-NEXT:  .LBB57_5: ; %end
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s16, 16
-; SI-NEXT:    v_readlane_b32 s17, v31, 7
+; SI-NEXT:    s_lshl_b32 s16, s80, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s16
 ; SI-NEXT:    s_and_b32 s5, s5, 0xffff
-; SI-NEXT:    s_lshl_b32 s16, s78, 16
+; SI-NEXT:    s_lshl_b32 s16, s79, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s16
 ; SI-NEXT:    s_and_b32 s16, s72, 0xffff
-; SI-NEXT:    s_lshl_b32 s17, s18, 16
+; SI-NEXT:    s_lshl_b32 s17, s76, 16
 ; SI-NEXT:    s_or_b32 s16, s16, s17
 ; SI-NEXT:    s_and_b32 s17, s73, 0xffff
-; SI-NEXT:    s_lshl_b32 s18, s88, 16
-; SI-NEXT:    v_readlane_b32 s20, v31, 8
+; SI-NEXT:    s_lshl_b32 s18, s89, 16
 ; SI-NEXT:    s_or_b32 s17, s17, s18
 ; SI-NEXT:    s_and_b32 s18, s62, 0xffff
-; SI-NEXT:    s_lshl_b32 s19, s20, 16
-; SI-NEXT:    v_readlane_b32 s21, v31, 9
+; SI-NEXT:    s_lshl_b32 s19, s82, 16
 ; SI-NEXT:    s_or_b32 s18, s18, s19
 ; SI-NEXT:    s_and_b32 s19, s63, 0xffff
-; SI-NEXT:    s_lshl_b32 s20, s90, 16
-; SI-NEXT:    v_readlane_b32 s22, v31, 10
+; SI-NEXT:    s_lshl_b32 s20, s91, 16
 ; SI-NEXT:    s_or_b32 s19, s19, s20
 ; SI-NEXT:    s_and_b32 s20, s60, 0xffff
 ; SI-NEXT:    s_lshl_b32 s21, s22, 16
-; SI-NEXT:    v_readlane_b32 s23, v31, 11
 ; SI-NEXT:    s_or_b32 s20, s20, s21
 ; SI-NEXT:    s_and_b32 s21, s61, 0xffff
-; SI-NEXT:    s_lshl_b32 s22, s92, 16
-; SI-NEXT:    v_readlane_b32 s24, v31, 12
+; SI-NEXT:    s_lshl_b32 s22, s93, 16
 ; SI-NEXT:    s_or_b32 s21, s21, s22
 ; SI-NEXT:    s_and_b32 s22, s58, 0xffff
 ; SI-NEXT:    s_lshl_b32 s23, s24, 16
-; SI-NEXT:    v_readlane_b32 s25, v31, 13
 ; SI-NEXT:    s_or_b32 s22, s22, s23
 ; SI-NEXT:    s_and_b32 s23, s59, 0xffff
-; SI-NEXT:    s_lshl_b32 s24, s94, 16
-; SI-NEXT:    v_readlane_b32 s26, v31, 14
+; SI-NEXT:    s_lshl_b32 s24, s95, 16
 ; SI-NEXT:    s_or_b32 s23, s23, s24
 ; SI-NEXT:    s_and_b32 s24, s56, 0xffff
-; SI-NEXT:    s_lshl_b32 s25, s26, 16
-; SI-NEXT:    v_readlane_b32 s27, v31, 15
+; SI-NEXT:    s_lshl_b32 s25, s92, 16
 ; SI-NEXT:    s_or_b32 s24, s24, s25
 ; SI-NEXT:    s_and_b32 s25, s57, 0xffff
-; SI-NEXT:    s_lshl_b32 s26, s30, 16
-; SI-NEXT:    v_readlane_b32 s28, v31, 16
+; SI-NEXT:    s_lshl_b32 s26, vcc_hi, 16
 ; SI-NEXT:    s_or_b32 s25, s25, s26
 ; SI-NEXT:    s_and_b32 s26, s46, 0xffff
-; SI-NEXT:    s_lshl_b32 s27, s28, 16
-; SI-NEXT:    v_readlane_b32 s29, v31, 17
+; SI-NEXT:    s_lshl_b32 s27, s94, 16
 ; SI-NEXT:    s_or_b32 s26, s26, s27
 ; SI-NEXT:    s_and_b32 s27, s47, 0xffff
 ; SI-NEXT:    s_lshl_b32 s28, s31, 16
-; SI-NEXT:    v_readlane_b32 s46, v31, 18
 ; SI-NEXT:    s_or_b32 s27, s27, s28
 ; SI-NEXT:    s_and_b32 s28, s44, 0xffff
-; SI-NEXT:    s_lshl_b32 s29, s46, 16
+; SI-NEXT:    s_lshl_b32 s29, vcc_lo, 16
 ; SI-NEXT:    s_or_b32 s28, s28, s29
 ; SI-NEXT:    s_and_b32 s29, s45, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s53, 16
+; SI-NEXT:    s_lshl_b32 s44, s83, 16
 ; SI-NEXT:    s_or_b32 s29, s29, s44
 ; SI-NEXT:    s_and_b32 s42, s42, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s34, 16
+; SI-NEXT:    s_lshl_b32 s44, s30, 16
 ; SI-NEXT:    s_or_b32 s42, s42, s44
 ; SI-NEXT:    s_and_b32 s43, s43, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s80, 16
+; SI-NEXT:    s_lshl_b32 s44, s78, 16
 ; SI-NEXT:    s_or_b32 s43, s43, s44
 ; SI-NEXT:    s_and_b32 s40, s40, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s36, 16
+; SI-NEXT:    s_lshl_b32 s44, s34, 16
 ; SI-NEXT:    s_or_b32 s40, s40, s44
 ; SI-NEXT:    s_and_b32 s41, s41, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s81, 16
+; SI-NEXT:    s_lshl_b32 s44, s88, 16
 ; SI-NEXT:    s_or_b32 s41, s41, s44
-; SI-NEXT:    v_readlane_b32 s44, v31, 20
 ; SI-NEXT:    s_and_b32 s14, s14, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s44, 16
-; SI-NEXT:    v_readlane_b32 s45, v31, 21
+; SI-NEXT:    s_lshl_b32 s44, s36, 16
 ; SI-NEXT:    s_or_b32 s14, s14, s44
 ; SI-NEXT:    s_and_b32 s15, s15, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s82, 16
+; SI-NEXT:    s_lshl_b32 s44, s90, 16
 ; SI-NEXT:    s_or_b32 s15, s15, s44
-; SI-NEXT:    v_readlane_b32 s44, v31, 22
 ; SI-NEXT:    s_and_b32 s12, s12, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s44, 16
-; SI-NEXT:    v_readlane_b32 s45, v31, 23
+; SI-NEXT:    s_lshl_b32 s44, s38, 16
 ; SI-NEXT:    s_or_b32 s12, s12, s44
 ; SI-NEXT:    s_and_b32 s13, s13, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s83, 16
+; SI-NEXT:    s_lshl_b32 s44, s71, 16
 ; SI-NEXT:    s_or_b32 s13, s13, s44
-; SI-NEXT:    v_readlane_b32 s44, v31, 24
 ; SI-NEXT:    s_and_b32 s10, s10, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s44, 16
-; SI-NEXT:    v_readlane_b32 s45, v31, 25
+; SI-NEXT:    s_lshl_b32 s44, s48, 16
 ; SI-NEXT:    s_or_b32 s10, s10, s44
 ; SI-NEXT:    s_and_b32 s11, s11, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s39, 16
+; SI-NEXT:    s_lshl_b32 s44, s84, 16
 ; SI-NEXT:    s_or_b32 s11, s11, s44
-; SI-NEXT:    v_readlane_b32 s44, v31, 26
 ; SI-NEXT:    s_and_b32 s8, s8, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s44, 16
+; SI-NEXT:    s_lshl_b32 s44, s50, 16
 ; SI-NEXT:    s_or_b32 s8, s8, s44
 ; SI-NEXT:    s_and_b32 s9, s9, 0xffff
 ; SI-NEXT:    s_lshl_b32 s44, s85, 16
 ; SI-NEXT:    s_or_b32 s9, s9, s44
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
-; SI-NEXT:    s_lshl_b32 s44, s38, 16
+; SI-NEXT:    s_lshl_b32 s44, s52, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s44
 ; SI-NEXT:    s_and_b32 s7, s7, 0xffff
 ; SI-NEXT:    s_lshl_b32 s44, s86, 16
 ; SI-NEXT:    s_or_b32 s7, s7, s44
 ; SI-NEXT:    v_readlane_b32 s30, v30, 34
-; SI-NEXT:    v_readlane_b32 s47, v31, 19
-; SI-NEXT:    v_readlane_b32 s45, v31, 27
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s16
@@ -47709,60 +48538,6 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; SI-NEXT:    s_mov_b64 exec, s[4:5]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB57_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    v_writelane_b32 v31, s6, 6
-; SI-NEXT:    v_writelane_b32 v31, s7, 7
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr72
-; SI-NEXT:    ; implicit-def: $sgpr18
-; SI-NEXT:    ; implicit-def: $sgpr62
-; SI-NEXT:    ; implicit-def: $sgpr60
-; SI-NEXT:    ; implicit-def: $sgpr58
-; SI-NEXT:    ; implicit-def: $sgpr56
-; SI-NEXT:    ; implicit-def: $sgpr46
-; SI-NEXT:    ; implicit-def: $sgpr44
-; SI-NEXT:    ; implicit-def: $sgpr42
-; SI-NEXT:    ; implicit-def: $sgpr34
-; SI-NEXT:    ; implicit-def: $sgpr40
-; SI-NEXT:    ; implicit-def: $sgpr36
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr38
-; SI-NEXT:    v_writelane_b32 v31, s6, 8
-; SI-NEXT:    v_writelane_b32 v31, s7, 9
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    v_writelane_b32 v31, s6, 10
-; SI-NEXT:    v_writelane_b32 v31, s7, 11
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    v_writelane_b32 v31, s6, 12
-; SI-NEXT:    v_writelane_b32 v31, s7, 13
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    v_writelane_b32 v31, s6, 14
-; SI-NEXT:    v_writelane_b32 v31, s7, 15
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    v_writelane_b32 v31, s6, 16
-; SI-NEXT:    v_writelane_b32 v31, s7, 17
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    v_writelane_b32 v31, s6, 18
-; SI-NEXT:    v_writelane_b32 v31, s7, 19
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    v_writelane_b32 v31, s6, 20
-; SI-NEXT:    v_writelane_b32 v31, s7, 21
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    v_writelane_b32 v31, s6, 22
-; SI-NEXT:    v_writelane_b32 v31, s7, 23
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    v_writelane_b32 v31, s6, 24
-; SI-NEXT:    v_writelane_b32 v31, s7, 25
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    v_writelane_b32 v31, s6, 26
-; SI-NEXT:    v_writelane_b32 v31, s7, 27
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB57_2
 ;
 ; VI-LABEL: bitcast_v60i16_to_v60f16_scalar:
 ; VI:       ; %bb.0:
@@ -47774,10 +48549,8 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; VI-NEXT:    v_writelane_b32 v30, s35, 1
 ; VI-NEXT:    v_writelane_b32 v30, s36, 2
 ; VI-NEXT:    v_writelane_b32 v30, s37, 3
-; VI-NEXT:    v_writelane_b32 v30, s38, 4
-; VI-NEXT:    v_writelane_b32 v30, s39, 5
-; VI-NEXT:    v_writelane_b32 v30, s30, 6
-; VI-NEXT:    v_writelane_b32 v30, s31, 7
+; VI-NEXT:    v_writelane_b32 v30, s30, 4
+; VI-NEXT:    v_writelane_b32 v30, s31, 5
 ; VI-NEXT:    v_readfirstlane_b32 s7, v15
 ; VI-NEXT:    v_readfirstlane_b32 s8, v14
 ; VI-NEXT:    v_readfirstlane_b32 s10, v13
@@ -47792,8 +48565,8 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s74, v4
 ; VI-NEXT:    v_readfirstlane_b32 s77, v3
 ; VI-NEXT:    v_readfirstlane_b32 s89, v2
-; VI-NEXT:    v_readfirstlane_b32 s30, v1
-; VI-NEXT:    v_readfirstlane_b32 s35, v0
+; VI-NEXT:    v_readfirstlane_b32 vcc_lo, v1
+; VI-NEXT:    v_readfirstlane_b32 s31, v0
 ; VI-NEXT:    s_lshr_b32 s44, s29, 16
 ; VI-NEXT:    s_lshr_b32 s47, s28, 16
 ; VI-NEXT:    s_lshr_b32 s58, s27, 16
@@ -47804,10 +48577,10 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s79, s22, 16
 ; VI-NEXT:    s_lshr_b32 s88, s21, 16
 ; VI-NEXT:    s_lshr_b32 s91, s20, 16
-; VI-NEXT:    s_lshr_b32 s34, s19, 16
-; VI-NEXT:    s_lshr_b32 s37, s18, 16
-; VI-NEXT:    s_lshr_b32 s38, s17, 16
-; VI-NEXT:    s_lshr_b32 s39, s16, 16
+; VI-NEXT:    s_lshr_b32 s30, s19, 16
+; VI-NEXT:    s_lshr_b32 s35, s18, 16
+; VI-NEXT:    s_lshr_b32 s36, s17, 16
+; VI-NEXT:    s_lshr_b32 s37, s16, 16
 ; VI-NEXT:    s_lshr_b32 s6, s7, 16
 ; VI-NEXT:    s_lshr_b32 s9, s8, 16
 ; VI-NEXT:    s_lshr_b32 s11, s10, 16
@@ -47822,22 +48595,30 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s75, s74, 16
 ; VI-NEXT:    s_lshr_b32 s78, s77, 16
 ; VI-NEXT:    s_lshr_b32 s90, s89, 16
-; VI-NEXT:    s_lshr_b32 s31, s30, 16
-; VI-NEXT:    s_lshr_b32 s36, s35, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, vcc_lo, 16
+; VI-NEXT:    s_lshr_b32 s34, s31, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_4
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_3
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:    s_add_i32 s39, s39, 3
+; VI-NEXT:    s_add_i32 s37, s37, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
-; VI-NEXT:    s_add_i32 s38, s38, 3
+; VI-NEXT:    s_add_i32 s36, s36, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
-; VI-NEXT:    s_add_i32 s37, s37, 3
+; VI-NEXT:    s_add_i32 s35, s35, 3
 ; VI-NEXT:    s_add_i32 s19, s19, 3
-; VI-NEXT:    s_add_i32 s34, s34, 3
+; VI-NEXT:    s_add_i32 s30, s30, 3
 ; VI-NEXT:    s_add_i32 s20, s20, 3
 ; VI-NEXT:    s_add_i32 s91, s91, 3
 ; VI-NEXT:    s_add_i32 s21, s21, 3
@@ -47858,10 +48639,10 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s47, s47, 3
 ; VI-NEXT:    s_add_i32 s29, s29, 3
 ; VI-NEXT:    s_add_i32 s44, s44, 3
-; VI-NEXT:    s_add_i32 s35, s35, 3
-; VI-NEXT:    s_add_i32 s36, s36, 3
-; VI-NEXT:    s_add_i32 s30, s30, 3
 ; VI-NEXT:    s_add_i32 s31, s31, 3
+; VI-NEXT:    s_add_i32 s34, s34, 3
+; VI-NEXT:    s_add_i32 vcc_lo, vcc_lo, 3
+; VI-NEXT:    s_add_i32 vcc_hi, vcc_hi, 3
 ; VI-NEXT:    s_add_i32 s89, s89, 3
 ; VI-NEXT:    s_add_i32 s90, s90, 3
 ; VI-NEXT:    s_add_i32 s77, s77, 3
@@ -47890,18 +48671,18 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; VI-NEXT:    s_add_i32 s9, s9, 3
 ; VI-NEXT:    s_add_i32 s7, s7, 3
 ; VI-NEXT:    s_add_i32 s6, s6, 3
-; VI-NEXT:  .LBB57_3: ; %end
+; VI-NEXT:  .LBB57_5: ; %end
 ; VI-NEXT:    s_and_b32 s4, 0xffff, s16
-; VI-NEXT:    s_lshl_b32 s5, s39, 16
+; VI-NEXT:    s_lshl_b32 s5, s37, 16
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_and_b32 s5, 0xffff, s17
-; VI-NEXT:    s_lshl_b32 s16, s38, 16
+; VI-NEXT:    s_lshl_b32 s16, s36, 16
 ; VI-NEXT:    s_or_b32 s5, s5, s16
 ; VI-NEXT:    s_and_b32 s16, 0xffff, s18
-; VI-NEXT:    s_lshl_b32 s17, s37, 16
+; VI-NEXT:    s_lshl_b32 s17, s35, 16
 ; VI-NEXT:    s_or_b32 s16, s16, s17
 ; VI-NEXT:    s_and_b32 s17, 0xffff, s19
-; VI-NEXT:    s_lshl_b32 s18, s34, 16
+; VI-NEXT:    s_lshl_b32 s18, s30, 16
 ; VI-NEXT:    s_or_b32 s17, s17, s18
 ; VI-NEXT:    s_and_b32 s18, 0xffff, s20
 ; VI-NEXT:    s_lshl_b32 s19, s91, 16
@@ -47933,11 +48714,11 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; VI-NEXT:    s_and_b32 s27, 0xffff, s29
 ; VI-NEXT:    s_lshl_b32 s28, s44, 16
 ; VI-NEXT:    s_or_b32 s27, s27, s28
-; VI-NEXT:    s_and_b32 s28, 0xffff, s35
-; VI-NEXT:    s_lshl_b32 s29, s36, 16
+; VI-NEXT:    s_and_b32 s28, 0xffff, s31
+; VI-NEXT:    s_lshl_b32 s29, s34, 16
 ; VI-NEXT:    s_or_b32 s28, s28, s29
-; VI-NEXT:    s_and_b32 s29, 0xffff, s30
-; VI-NEXT:    s_lshl_b32 s44, s31, 16
+; VI-NEXT:    s_and_b32 s29, 0xffff, vcc_lo
+; VI-NEXT:    s_lshl_b32 s44, vcc_hi, 16
 ; VI-NEXT:    s_or_b32 s29, s29, s44
 ; VI-NEXT:    s_and_b32 s44, 0xffff, s89
 ; VI-NEXT:    s_lshl_b32 s47, s90, 16
@@ -47981,7 +48762,7 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; VI-NEXT:    s_or_b32 s10, s10, s11
 ; VI-NEXT:    s_or_b32 s8, s8, s9
 ; VI-NEXT:    s_or_b32 s6, s7, s6
-; VI-NEXT:    v_readlane_b32 s30, v30, 6
+; VI-NEXT:    v_readlane_b32 s30, v30, 4
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    v_mov_b32_e32 v1, s5
 ; VI-NEXT:    v_mov_b32_e32 v2, s16
@@ -48012,9 +48793,7 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v27, s10
 ; VI-NEXT:    v_mov_b32_e32 v28, s8
 ; VI-NEXT:    v_mov_b32_e32 v29, s6
-; VI-NEXT:    v_readlane_b32 s31, v30, 7
-; VI-NEXT:    v_readlane_b32 s39, v30, 5
-; VI-NEXT:    v_readlane_b32 s38, v30, 4
+; VI-NEXT:    v_readlane_b32 s31, v30, 5
 ; VI-NEXT:    v_readlane_b32 s37, v30, 3
 ; VI-NEXT:    v_readlane_b32 s36, v30, 2
 ; VI-NEXT:    v_readlane_b32 s35, v30, 1
@@ -48024,8 +48803,6 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; VI-NEXT:    s_mov_b64 exec, s[4:5]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_4:
-; VI-NEXT:    s_branch .LBB57_2
 ;
 ; GFX9-LABEL: bitcast_v60i16_to_v60f16_scalar:
 ; GFX9:       ; %bb.0:
@@ -48045,14 +48822,12 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; GFX9-NEXT:    buffer_store_dword v57, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
 ; GFX9-NEXT:    buffer_store_dword v58, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
 ; GFX9-NEXT:    buffer_store_dword v59, off, s[0:3], s32 ; 4-byte Folded Spill
-; GFX9-NEXT:    v_writelane_b32 v60, s34, 0
-; GFX9-NEXT:    v_writelane_b32 v60, s35, 1
-; GFX9-NEXT:    v_writelane_b32 v60, s30, 2
-; GFX9-NEXT:    v_writelane_b32 v60, s31, 3
-; GFX9-NEXT:    v_readfirstlane_b32 s35, v15
-; GFX9-NEXT:    v_readfirstlane_b32 s34, v14
-; GFX9-NEXT:    v_readfirstlane_b32 s31, v13
-; GFX9-NEXT:    v_readfirstlane_b32 s30, v12
+; GFX9-NEXT:    v_writelane_b32 v60, s30, 0
+; GFX9-NEXT:    v_writelane_b32 v60, s31, 1
+; GFX9-NEXT:    v_readfirstlane_b32 s31, v15
+; GFX9-NEXT:    v_readfirstlane_b32 s30, v14
+; GFX9-NEXT:    v_readfirstlane_b32 vcc_hi, v13
+; GFX9-NEXT:    v_readfirstlane_b32 vcc_lo, v12
 ; GFX9-NEXT:    v_readfirstlane_b32 s95, v11
 ; GFX9-NEXT:    v_readfirstlane_b32 s94, v10
 ; GFX9-NEXT:    v_readfirstlane_b32 s93, v9
@@ -48079,10 +48854,10 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s8, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s7, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s6, s16, 16
-; GFX9-NEXT:    s_lshr_b32 s75, s35, 16
-; GFX9-NEXT:    s_lshr_b32 s74, s34, 16
-; GFX9-NEXT:    s_lshr_b32 s73, s31, 16
-; GFX9-NEXT:    s_lshr_b32 s72, s30, 16
+; GFX9-NEXT:    s_lshr_b32 s75, s31, 16
+; GFX9-NEXT:    s_lshr_b32 s74, s30, 16
+; GFX9-NEXT:    s_lshr_b32 s73, vcc_hi, 16
+; GFX9-NEXT:    s_lshr_b32 s72, vcc_lo, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s95, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s94, 16
 ; GFX9-NEXT:    s_lshr_b32 s61, s93, 16
@@ -48097,17 +48872,25 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s44, s76, 16
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v16
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_4
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
-; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s35, s75
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
+; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s31, s75
 ; GFX9-NEXT:    v_pk_add_u16 v29, s4, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s34, s74
+; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s30, s74
 ; GFX9-NEXT:    v_pk_add_u16 v28, s4, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s31, s73
+; GFX9-NEXT:    s_pack_ll_b32_b16 s4, vcc_hi, s73
 ; GFX9-NEXT:    v_pk_add_u16 v27, s4, 3 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s30, s72
+; GFX9-NEXT:    s_pack_ll_b32_b16 s4, vcc_lo, s72
 ; GFX9-NEXT:    v_pk_add_u16 v26, s4, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s95, s63
 ; GFX9-NEXT:    v_pk_add_u16 v25, s4, 3 op_sel_hi:[1,0]
@@ -48191,14 +48974,12 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v32, 16, v27
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v31, 16, v28
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v30, 16, v29
-; GFX9-NEXT:    s_branch .LBB57_5
-; GFX9-NEXT:  .LBB57_3:
-; GFX9-NEXT:    s_branch .LBB57_2
-; GFX9-NEXT:  .LBB57_4:
-; GFX9-NEXT:    v_mov_b32_e32 v29, s35
-; GFX9-NEXT:    v_mov_b32_e32 v28, s34
-; GFX9-NEXT:    v_mov_b32_e32 v27, s31
-; GFX9-NEXT:    v_mov_b32_e32 v26, s30
+; GFX9-NEXT:    s_branch .LBB57_6
+; GFX9-NEXT:  .LBB57_5:
+; GFX9-NEXT:    v_mov_b32_e32 v29, s31
+; GFX9-NEXT:    v_mov_b32_e32 v28, s30
+; GFX9-NEXT:    v_mov_b32_e32 v27, vcc_hi
+; GFX9-NEXT:    v_mov_b32_e32 v26, vcc_lo
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s95
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s94
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s93
@@ -48255,7 +49036,7 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v57, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v58, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v59, s6
-; GFX9-NEXT:  .LBB57_5: ; %end
+; GFX9-NEXT:  .LBB57_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -48310,7 +49091,7 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; GFX9-NEXT:    v_and_b32_e32 v27, 0xffff, v27
 ; GFX9-NEXT:    v_and_b32_e32 v28, 0xffff, v28
 ; GFX9-NEXT:    v_and_b32_e32 v29, 0xffff, v29
-; GFX9-NEXT:    v_readlane_b32 s30, v60, 2
+; GFX9-NEXT:    v_readlane_b32 s30, v60, 0
 ; GFX9-NEXT:    v_lshl_or_b32 v12, v55, 16, v12
 ; GFX9-NEXT:    v_lshl_or_b32 v13, v54, 16, v13
 ; GFX9-NEXT:    v_lshl_or_b32 v14, v53, 16, v14
@@ -48329,9 +49110,7 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; GFX9-NEXT:    v_lshl_or_b32 v27, v32, 16, v27
 ; GFX9-NEXT:    v_lshl_or_b32 v28, v31, 16, v28
 ; GFX9-NEXT:    v_lshl_or_b32 v29, v30, 16, v29
-; GFX9-NEXT:    v_readlane_b32 s31, v60, 3
-; GFX9-NEXT:    v_readlane_b32 s35, v60, 1
-; GFX9-NEXT:    v_readlane_b32 s34, v60, 0
+; GFX9-NEXT:    v_readlane_b32 s31, v60, 1
 ; GFX9-NEXT:    s_or_saveexec_b64 s[4:5], -1
 ; GFX9-NEXT:    buffer_load_dword v60, off, s[0:3], s32 offset:48 ; 4-byte Folded Reload
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
@@ -48386,11 +49165,16 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s74, 16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s94, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s94, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s94
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-TRUE16-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s94, -1
+; GFX11-TRUE16-NEXT:  .LBB57_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s94, s94, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s94, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s94, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s59, s89, s59
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s62, s92, s62
 ; GFX11-TRUE16-NEXT:    v_pk_add_u16 v27, s59, 3 op_sel_hi:[1,0]
@@ -48482,8 +49266,6 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v31, 16, v28
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v30, 16, v29
 ; GFX11-TRUE16-NEXT:    s_branch .LBB57_5
-; GFX11-TRUE16-NEXT:  .LBB57_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB57_2
 ; GFX11-TRUE16-NEXT:  .LBB57_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s93 :: v_dual_mov_b32 v28, s92
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s89 :: v_dual_mov_b32 v26, s91
@@ -48598,11 +49380,16 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s74, 16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s94, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s94, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s94
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-FAKE16-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s94, -1
+; GFX11-FAKE16-NEXT:  .LBB57_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s94, s94, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s94, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s94, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s59, s89, s59
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s62, s92, s62
 ; GFX11-FAKE16-NEXT:    v_pk_add_u16 v27, s59, 3 op_sel_hi:[1,0]
@@ -48694,8 +49481,6 @@ define inreg <60 x half> @bitcast_v60i16_to_v60f16_scalar(<60 x i16> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v31, 16, v26
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v30, 16, v25
 ; GFX11-FAKE16-NEXT:    s_branch .LBB57_5
-; GFX11-FAKE16-NEXT:  .LBB57_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB57_2
 ; GFX11-FAKE16-NEXT:  .LBB57_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v25, s93 :: v_dual_mov_b32 v26, s92
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v27, s89 :: v_dual_mov_b32 v28, s91
@@ -49855,10 +50640,8 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    buffer_store_dword v60, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v61, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v62, off, s[0:3], s32 ; 4-byte Folded Spill
-; SI-NEXT:    v_writelane_b32 v63, s34, 0
-; SI-NEXT:    v_writelane_b32 v63, s35, 1
-; SI-NEXT:    v_writelane_b32 v63, s30, 2
-; SI-NEXT:    v_writelane_b32 v63, s31, 3
+; SI-NEXT:    v_writelane_b32 v63, s30, 0
+; SI-NEXT:    v_writelane_b32 v63, s31, 1
 ; SI-NEXT:    v_readfirstlane_b32 s6, v15
 ; SI-NEXT:    v_readfirstlane_b32 s7, v14
 ; SI-NEXT:    v_readfirstlane_b32 s47, v13
@@ -49874,7 +50657,7 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_readfirstlane_b32 s41, v3
 ; SI-NEXT:    v_readfirstlane_b32 s94, v2
 ; SI-NEXT:    v_readfirstlane_b32 s40, v1
-; SI-NEXT:    v_readfirstlane_b32 s30, v0
+; SI-NEXT:    v_readfirstlane_b32 vcc_lo, v0
 ; SI-NEXT:    s_lshr_b32 s15, s29, 16
 ; SI-NEXT:    s_lshr_b32 s79, s28, 16
 ; SI-NEXT:    s_lshr_b32 s14, s27, 16
@@ -49884,11 +50667,11 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s12, s23, 16
 ; SI-NEXT:    s_lshr_b32 s95, s22, 16
 ; SI-NEXT:    s_lshr_b32 s11, s21, 16
-; SI-NEXT:    s_lshr_b32 s31, s20, 16
+; SI-NEXT:    s_lshr_b32 vcc_hi, s20, 16
 ; SI-NEXT:    s_lshr_b32 s10, s19, 16
-; SI-NEXT:    s_lshr_b32 s34, s18, 16
+; SI-NEXT:    s_lshr_b32 s30, s18, 16
 ; SI-NEXT:    s_lshr_b32 s9, s17, 16
-; SI-NEXT:    s_lshr_b32 s35, s16, 16
+; SI-NEXT:    s_lshr_b32 s31, s16, 16
 ; SI-NEXT:    s_lshr_b32 s75, s6, 16
 ; SI-NEXT:    s_lshr_b32 s57, s7, 16
 ; SI-NEXT:    s_lshr_b32 s73, s47, 16
@@ -49904,16 +50687,24 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s56, s41, 16
 ; SI-NEXT:    s_lshr_b32 s89, s94, 16
 ; SI-NEXT:    s_lshr_b32 s46, s40, 16
-; SI-NEXT:    s_lshr_b32 s92, s30, 16
+; SI-NEXT:    s_lshr_b32 s92, vcc_lo, 16
 ; SI-NEXT:    v_readfirstlane_b32 s4, v16
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_3
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB59_4
-; SI-NEXT:  .LBB59_2: ; %cmp.true
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s35
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, s31
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, s34
+; SI-NEXT:    v_cvt_f32_f16_e32 v2, s30
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s18
 ; SI-NEXT:    v_add_f32_e32 v0, 0x38000000, v0
 ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0
@@ -49921,7 +50712,7 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_cvt_f16_f32_e32 v1, v1
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v2
 ; SI-NEXT:    v_lshlrev_b32_e32 v46, 16, v0
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s31
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, vcc_hi
 ; SI-NEXT:    v_or_b32_e32 v25, v1, v46
 ; SI-NEXT:    v_cvt_f16_f32_e32 v1, v2
 ; SI-NEXT:    v_add_f32_e32 v2, 0x38000000, v3
@@ -49969,7 +50760,7 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    s_waitcnt expcnt(0)
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s92
 ; SI-NEXT:    v_lshlrev_b32_e32 v54, 16, v0
-; SI-NEXT:    v_cvt_f32_f16_e32 v0, s30
+; SI-NEXT:    v_cvt_f32_f16_e32 v0, vcc_lo
 ; SI-NEXT:    v_or_b32_e32 v21, v3, v54
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, s89
 ; SI-NEXT:    v_add_f32_e32 v1, 0x38000000, v1
@@ -50210,10 +51001,8 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v23, v14
 ; SI-NEXT:    buffer_store_dword v12, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v13, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
-; SI-NEXT:    s_branch .LBB59_5
-; SI-NEXT:  .LBB59_3:
-; SI-NEXT:    s_branch .LBB59_2
-; SI-NEXT:  .LBB59_4:
+; SI-NEXT:    s_branch .LBB59_6
+; SI-NEXT:  .LBB59_5:
 ; SI-NEXT:    v_mov_b32_e32 v11, s13
 ; SI-NEXT:    v_mov_b32_e32 v1, s9
 ; SI-NEXT:    v_mov_b32_e32 v12, s45
@@ -50239,7 +51028,7 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v43, s88
 ; SI-NEXT:    v_mov_b32_e32 v21, s91
 ; SI-NEXT:    v_mov_b32_e32 v33, s94
-; SI-NEXT:    v_mov_b32_e32 v55, s30
+; SI-NEXT:    v_mov_b32_e32 v55, vcc_lo
 ; SI-NEXT:    v_mov_b32_e32 v59, s28
 ; SI-NEXT:    v_mov_b32_e32 v57, s26
 ; SI-NEXT:    v_mov_b32_e32 v10, s24
@@ -50263,9 +51052,9 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    buffer_store_dword v12, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
 ; SI-NEXT:    v_mov_b32_e32 v44, s47
 ; SI-NEXT:    v_mov_b32_e32 v29, s6
-; SI-NEXT:    v_mov_b32_e32 v58, s35
-; SI-NEXT:    v_mov_b32_e32 v56, s34
-; SI-NEXT:    v_mov_b32_e32 v46, s31
+; SI-NEXT:    v_mov_b32_e32 v58, s31
+; SI-NEXT:    v_mov_b32_e32 v56, s30
+; SI-NEXT:    v_mov_b32_e32 v46, vcc_hi
 ; SI-NEXT:    v_mov_b32_e32 v24, s95
 ; SI-NEXT:    v_mov_b32_e32 v32, s93
 ; SI-NEXT:    v_mov_b32_e32 v40, s90
@@ -50279,7 +51068,7 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    v_mov_b32_e32 v60, s59
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
 ; SI-NEXT:    buffer_store_dword v1, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
-; SI-NEXT:  .LBB59_5: ; %end
+; SI-NEXT:  .LBB59_6: ; %end
 ; SI-NEXT:    s_waitcnt expcnt(1)
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v58
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -50368,10 +51157,8 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; SI-NEXT:    buffer_load_dword v30, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload
 ; SI-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:72 ; 4-byte Folded Reload
 ; SI-NEXT:    v_and_b32_e32 v29, 0xffff, v29
-; SI-NEXT:    v_readlane_b32 s30, v63, 2
-; SI-NEXT:    v_readlane_b32 s31, v63, 3
-; SI-NEXT:    v_readlane_b32 s35, v63, 1
-; SI-NEXT:    v_readlane_b32 s34, v63, 0
+; SI-NEXT:    v_readlane_b32 s30, v63, 0
+; SI-NEXT:    v_readlane_b32 s31, v63, 1
 ; SI-NEXT:    s_waitcnt vmcnt(2)
 ; SI-NEXT:    v_and_b32_e32 v25, 0xffff, v26
 ; SI-NEXT:    v_lshlrev_b32_e32 v26, 16, v28
@@ -50430,10 +51217,8 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; VI-NEXT:    v_writelane_b32 v60, s35, 1
 ; VI-NEXT:    v_writelane_b32 v60, s36, 2
 ; VI-NEXT:    v_writelane_b32 v60, s37, 3
-; VI-NEXT:    v_writelane_b32 v60, s38, 4
-; VI-NEXT:    v_writelane_b32 v60, s39, 5
-; VI-NEXT:    v_writelane_b32 v60, s30, 6
-; VI-NEXT:    v_writelane_b32 v60, s31, 7
+; VI-NEXT:    v_writelane_b32 v60, s30, 4
+; VI-NEXT:    v_writelane_b32 v60, s31, 5
 ; VI-NEXT:    v_readfirstlane_b32 s44, v15
 ; VI-NEXT:    v_readfirstlane_b32 s46, v14
 ; VI-NEXT:    v_readfirstlane_b32 s56, v13
@@ -50446,10 +51231,10 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; VI-NEXT:    v_readfirstlane_b32 s78, v6
 ; VI-NEXT:    v_readfirstlane_b32 s88, v5
 ; VI-NEXT:    v_readfirstlane_b32 s90, v4
-; VI-NEXT:    v_readfirstlane_b32 s30, v3
-; VI-NEXT:    v_readfirstlane_b32 s34, v2
-; VI-NEXT:    v_readfirstlane_b32 s36, v1
-; VI-NEXT:    v_readfirstlane_b32 s38, v0
+; VI-NEXT:    v_readfirstlane_b32 vcc_lo, v3
+; VI-NEXT:    v_readfirstlane_b32 s30, v2
+; VI-NEXT:    v_readfirstlane_b32 s34, v1
+; VI-NEXT:    v_readfirstlane_b32 s36, v0
 ; VI-NEXT:    s_lshr_b32 s6, s29, 16
 ; VI-NEXT:    s_lshr_b32 s7, s28, 16
 ; VI-NEXT:    s_lshr_b32 s8, s27, 16
@@ -50476,16 +51261,24 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; VI-NEXT:    s_lshr_b32 s79, s78, 16
 ; VI-NEXT:    s_lshr_b32 s89, s88, 16
 ; VI-NEXT:    s_lshr_b32 s91, s90, 16
+; VI-NEXT:    s_lshr_b32 vcc_hi, vcc_lo, 16
 ; VI-NEXT:    s_lshr_b32 s31, s30, 16
 ; VI-NEXT:    s_lshr_b32 s35, s34, 16
 ; VI-NEXT:    s_lshr_b32 s37, s36, 16
-; VI-NEXT:    s_lshr_b32 s39, s38, 16
 ; VI-NEXT:    v_readfirstlane_b32 s4, v16
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_3
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_4
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_mov_b32_e32 v30, 0x200
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v30
 ; VI-NEXT:    v_add_f16_e32 v59, s43, v30
@@ -50515,14 +51308,14 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v55, s7, v30
 ; VI-NEXT:    v_add_f16_e32 v13, s29, v30
 ; VI-NEXT:    v_add_f16_e32 v54, s6, v30
-; VI-NEXT:    v_add_f16_e32 v14, s38, v30
-; VI-NEXT:    v_add_f16_e32 v53, s39, v30
-; VI-NEXT:    v_add_f16_e32 v15, s36, v30
-; VI-NEXT:    v_add_f16_e32 v52, s37, v30
-; VI-NEXT:    v_add_f16_e32 v16, s34, v30
-; VI-NEXT:    v_add_f16_e32 v51, s35, v30
-; VI-NEXT:    v_add_f16_e32 v17, s30, v30
-; VI-NEXT:    v_add_f16_e32 v50, s31, v30
+; VI-NEXT:    v_add_f16_e32 v14, s36, v30
+; VI-NEXT:    v_add_f16_e32 v53, s37, v30
+; VI-NEXT:    v_add_f16_e32 v15, s34, v30
+; VI-NEXT:    v_add_f16_e32 v52, s35, v30
+; VI-NEXT:    v_add_f16_e32 v16, s30, v30
+; VI-NEXT:    v_add_f16_e32 v51, s31, v30
+; VI-NEXT:    v_add_f16_e32 v17, vcc_lo, v30
+; VI-NEXT:    v_add_f16_e32 v50, vcc_hi, v30
 ; VI-NEXT:    v_add_f16_e32 v18, s90, v30
 ; VI-NEXT:    v_add_f16_e32 v49, s91, v30
 ; VI-NEXT:    v_add_f16_e32 v19, s88, v30
@@ -50547,10 +51340,8 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; VI-NEXT:    v_add_f16_e32 v31, s47, v30
 ; VI-NEXT:    v_add_f16_e32 v29, s44, v30
 ; VI-NEXT:    v_add_f16_e32 v30, s45, v30
-; VI-NEXT:    s_branch .LBB59_5
-; VI-NEXT:  .LBB59_3:
-; VI-NEXT:    s_branch .LBB59_2
-; VI-NEXT:  .LBB59_4:
+; VI-NEXT:    s_branch .LBB59_6
+; VI-NEXT:  .LBB59_5:
 ; VI-NEXT:    v_mov_b32_e32 v30, s45
 ; VI-NEXT:    v_mov_b32_e32 v29, s44
 ; VI-NEXT:    v_mov_b32_e32 v31, s47
@@ -50575,14 +51366,14 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v19, s88
 ; VI-NEXT:    v_mov_b32_e32 v49, s91
 ; VI-NEXT:    v_mov_b32_e32 v18, s90
-; VI-NEXT:    v_mov_b32_e32 v50, s31
-; VI-NEXT:    v_mov_b32_e32 v17, s30
-; VI-NEXT:    v_mov_b32_e32 v51, s35
-; VI-NEXT:    v_mov_b32_e32 v16, s34
-; VI-NEXT:    v_mov_b32_e32 v52, s37
-; VI-NEXT:    v_mov_b32_e32 v15, s36
-; VI-NEXT:    v_mov_b32_e32 v53, s39
-; VI-NEXT:    v_mov_b32_e32 v14, s38
+; VI-NEXT:    v_mov_b32_e32 v50, vcc_hi
+; VI-NEXT:    v_mov_b32_e32 v17, vcc_lo
+; VI-NEXT:    v_mov_b32_e32 v51, s31
+; VI-NEXT:    v_mov_b32_e32 v16, s30
+; VI-NEXT:    v_mov_b32_e32 v52, s35
+; VI-NEXT:    v_mov_b32_e32 v15, s34
+; VI-NEXT:    v_mov_b32_e32 v53, s37
+; VI-NEXT:    v_mov_b32_e32 v14, s36
 ; VI-NEXT:    v_mov_b32_e32 v54, s6
 ; VI-NEXT:    v_mov_b32_e32 v13, s29
 ; VI-NEXT:    v_mov_b32_e32 v55, s7
@@ -50611,7 +51402,7 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v59, s43
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
-; VI-NEXT:  .LBB59_5: ; %end
+; VI-NEXT:  .LBB59_6: ; %end
 ; VI-NEXT:    v_lshlrev_b32_e32 v59, 16, v59
 ; VI-NEXT:    v_lshlrev_b32_e32 v58, 16, v58
 ; VI-NEXT:    v_lshlrev_b32_e32 v57, 16, v57
@@ -50666,7 +51457,7 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; VI-NEXT:    v_lshlrev_b32_e32 v32, 16, v32
 ; VI-NEXT:    v_lshlrev_b32_e32 v31, 16, v31
 ; VI-NEXT:    v_lshlrev_b32_e32 v30, 16, v30
-; VI-NEXT:    v_readlane_b32 s30, v60, 6
+; VI-NEXT:    v_readlane_b32 s30, v60, 4
 ; VI-NEXT:    v_or_b32_sdwa v12, v12, v55 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v13, v13, v54 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v14, v14, v53 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
@@ -50685,9 +51476,7 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; VI-NEXT:    v_or_b32_sdwa v27, v27, v32 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v28, v28, v31 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_or_b32_sdwa v29, v29, v30 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; VI-NEXT:    v_readlane_b32 s31, v60, 7
-; VI-NEXT:    v_readlane_b32 s39, v60, 5
-; VI-NEXT:    v_readlane_b32 s38, v60, 4
+; VI-NEXT:    v_readlane_b32 s31, v60, 5
 ; VI-NEXT:    v_readlane_b32 s37, v60, 3
 ; VI-NEXT:    v_readlane_b32 s36, v60, 2
 ; VI-NEXT:    v_readlane_b32 s35, v60, 1
@@ -50716,14 +51505,12 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; GFX9-NEXT:    buffer_store_dword v57, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
 ; GFX9-NEXT:    buffer_store_dword v58, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
 ; GFX9-NEXT:    buffer_store_dword v59, off, s[0:3], s32 ; 4-byte Folded Spill
-; GFX9-NEXT:    v_writelane_b32 v60, s34, 0
-; GFX9-NEXT:    v_writelane_b32 v60, s35, 1
-; GFX9-NEXT:    v_writelane_b32 v60, s30, 2
-; GFX9-NEXT:    v_writelane_b32 v60, s31, 3
-; GFX9-NEXT:    v_readfirstlane_b32 s35, v15
-; GFX9-NEXT:    v_readfirstlane_b32 s34, v14
-; GFX9-NEXT:    v_readfirstlane_b32 s31, v13
-; GFX9-NEXT:    v_readfirstlane_b32 s30, v12
+; GFX9-NEXT:    v_writelane_b32 v60, s30, 0
+; GFX9-NEXT:    v_writelane_b32 v60, s31, 1
+; GFX9-NEXT:    v_readfirstlane_b32 s31, v15
+; GFX9-NEXT:    v_readfirstlane_b32 s30, v14
+; GFX9-NEXT:    v_readfirstlane_b32 vcc_hi, v13
+; GFX9-NEXT:    v_readfirstlane_b32 vcc_lo, v12
 ; GFX9-NEXT:    v_readfirstlane_b32 s95, v11
 ; GFX9-NEXT:    v_readfirstlane_b32 s94, v10
 ; GFX9-NEXT:    v_readfirstlane_b32 s93, v9
@@ -50750,10 +51537,10 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s8, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s7, s17, 16
 ; GFX9-NEXT:    s_lshr_b32 s6, s16, 16
-; GFX9-NEXT:    s_lshr_b32 s75, s35, 16
-; GFX9-NEXT:    s_lshr_b32 s74, s34, 16
-; GFX9-NEXT:    s_lshr_b32 s73, s31, 16
-; GFX9-NEXT:    s_lshr_b32 s72, s30, 16
+; GFX9-NEXT:    s_lshr_b32 s75, s31, 16
+; GFX9-NEXT:    s_lshr_b32 s74, s30, 16
+; GFX9-NEXT:    s_lshr_b32 s73, vcc_hi, 16
+; GFX9-NEXT:    s_lshr_b32 s72, vcc_lo, 16
 ; GFX9-NEXT:    s_lshr_b32 s63, s95, 16
 ; GFX9-NEXT:    s_lshr_b32 s62, s94, 16
 ; GFX9-NEXT:    s_lshr_b32 s61, s93, 16
@@ -50768,18 +51555,26 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; GFX9-NEXT:    s_lshr_b32 s44, s76, 16
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v16
 ; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_4
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
-; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s35, s75
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
+; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s31, s75
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v29, s4, v0 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s34, s74
+; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s30, s74
 ; GFX9-NEXT:    v_pk_add_f16 v28, s4, v0 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s31, s73
+; GFX9-NEXT:    s_pack_ll_b32_b16 s4, vcc_hi, s73
 ; GFX9-NEXT:    v_pk_add_f16 v27, s4, v0 op_sel_hi:[1,0]
-; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s30, s72
+; GFX9-NEXT:    s_pack_ll_b32_b16 s4, vcc_lo, s72
 ; GFX9-NEXT:    v_pk_add_f16 v26, s4, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_pack_ll_b32_b16 s4, s95, s63
 ; GFX9-NEXT:    v_pk_add_f16 v25, s4, v0 op_sel_hi:[1,0]
@@ -50863,14 +51658,12 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v32, 16, v27
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v31, 16, v28
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v30, 16, v29
-; GFX9-NEXT:    s_branch .LBB59_5
-; GFX9-NEXT:  .LBB59_3:
-; GFX9-NEXT:    s_branch .LBB59_2
-; GFX9-NEXT:  .LBB59_4:
-; GFX9-NEXT:    v_mov_b32_e32 v29, s35
-; GFX9-NEXT:    v_mov_b32_e32 v28, s34
-; GFX9-NEXT:    v_mov_b32_e32 v27, s31
-; GFX9-NEXT:    v_mov_b32_e32 v26, s30
+; GFX9-NEXT:    s_branch .LBB59_6
+; GFX9-NEXT:  .LBB59_5:
+; GFX9-NEXT:    v_mov_b32_e32 v29, s31
+; GFX9-NEXT:    v_mov_b32_e32 v28, s30
+; GFX9-NEXT:    v_mov_b32_e32 v27, vcc_hi
+; GFX9-NEXT:    v_mov_b32_e32 v26, vcc_lo
 ; GFX9-NEXT:    v_mov_b32_e32 v25, s95
 ; GFX9-NEXT:    v_mov_b32_e32 v24, s94
 ; GFX9-NEXT:    v_mov_b32_e32 v23, s93
@@ -50927,7 +51720,7 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; GFX9-NEXT:    v_mov_b32_e32 v57, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v58, s7
 ; GFX9-NEXT:    v_mov_b32_e32 v59, s6
-; GFX9-NEXT:  .LBB59_5: ; %end
+; GFX9-NEXT:  .LBB59_6: ; %end
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2
@@ -50982,7 +51775,7 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; GFX9-NEXT:    v_and_b32_e32 v27, 0xffff, v27
 ; GFX9-NEXT:    v_and_b32_e32 v28, 0xffff, v28
 ; GFX9-NEXT:    v_and_b32_e32 v29, 0xffff, v29
-; GFX9-NEXT:    v_readlane_b32 s30, v60, 2
+; GFX9-NEXT:    v_readlane_b32 s30, v60, 0
 ; GFX9-NEXT:    v_lshl_or_b32 v12, v55, 16, v12
 ; GFX9-NEXT:    v_lshl_or_b32 v13, v54, 16, v13
 ; GFX9-NEXT:    v_lshl_or_b32 v14, v53, 16, v14
@@ -51001,9 +51794,7 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; GFX9-NEXT:    v_lshl_or_b32 v27, v32, 16, v27
 ; GFX9-NEXT:    v_lshl_or_b32 v28, v31, 16, v28
 ; GFX9-NEXT:    v_lshl_or_b32 v29, v30, 16, v29
-; GFX9-NEXT:    v_readlane_b32 s31, v60, 3
-; GFX9-NEXT:    v_readlane_b32 s35, v60, 1
-; GFX9-NEXT:    v_readlane_b32 s34, v60, 0
+; GFX9-NEXT:    v_readlane_b32 s31, v60, 1
 ; GFX9-NEXT:    s_or_saveexec_b64 s[4:5], -1
 ; GFX9-NEXT:    buffer_load_dword v60, off, s[0:3], s32 offset:48 ; 4-byte Folded Reload
 ; GFX9-NEXT:    s_mov_b64 exec, s[4:5]
@@ -51058,11 +51849,16 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s46, s74, 16
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s94, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s94, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s94
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-TRUE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s94, -1
+; GFX11-TRUE16-NEXT:  .LBB59_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s94, s94, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s94, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s94, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s59, s89, s59
 ; GFX11-TRUE16-NEXT:    s_pack_ll_b32_b16 s62, s92, s62
 ; GFX11-TRUE16-NEXT:    v_pk_add_f16 v27, 0x200, s59 op_sel_hi:[0,1]
@@ -51154,8 +51950,6 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v31, 16, v28
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v30, 16, v29
 ; GFX11-TRUE16-NEXT:    s_branch .LBB59_5
-; GFX11-TRUE16-NEXT:  .LBB59_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB59_2
 ; GFX11-TRUE16-NEXT:  .LBB59_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v29, s93 :: v_dual_mov_b32 v28, s92
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v27, s89 :: v_dual_mov_b32 v26, s91
@@ -51270,11 +52064,16 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s46, s74, 16
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s94, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s94, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s94
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-FAKE16-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s94, -1
+; GFX11-FAKE16-NEXT:  .LBB59_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s94, s94, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s94, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s94, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s59, s89, s59
 ; GFX11-FAKE16-NEXT:    s_pack_ll_b32_b16 s62, s92, s62
 ; GFX11-FAKE16-NEXT:    v_pk_add_f16 v27, 0x200, s59 op_sel_hi:[0,1]
@@ -51366,8 +52165,6 @@ define inreg <60 x i16> @bitcast_v60f16_to_v60i16_scalar(<60 x half> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v31, 16, v26
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v30, 16, v25
 ; GFX11-FAKE16-NEXT:    s_branch .LBB59_5
-; GFX11-FAKE16-NEXT:  .LBB59_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB59_2
 ; GFX11-FAKE16-NEXT:  .LBB59_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v25, s93 :: v_dual_mov_b32 v26, s92
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v27, s89 :: v_dual_mov_b32 v28, s91

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.96bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.96bit.ll
index a1c0db086bf3c..16f9dc4083053 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.96bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.96bit.ll
@@ -89,79 +89,100 @@ define inreg <3 x float> @bitcast_v3i32_to_v3f32_scalar(<3 x i32> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
-; SI-NEXT:  .LBB1_3: ; %end
+; SI-NEXT:  .LBB1_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; VI-LABEL: bitcast_v3i32_to_v3f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB1_4
+; VI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB1_3
-; VI-NEXT:  .LBB1_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB1_3
+; VI-NEXT:  .LBB1_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB1_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB1_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB1_3: ; %end
+; VI-NEXT:  .LBB1_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB1_4:
-; VI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: bitcast_v3i32_to_v3f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB1_3: ; %end
+; GFX9-NEXT:  .LBB1_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-LABEL: bitcast_v3i32_to_v3f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s3, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB1_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-NEXT:  .LBB1_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s3, -1
+; GFX11-NEXT:  .LBB1_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB1_3: ; %end
+; GFX11-NEXT:  .LBB1_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_mov_b32_e32 v2, s2
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB1_4:
-; GFX11-NEXT:    s_branch .LBB1_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -261,17 +282,23 @@ define inreg <3 x i32> @bitcast_v3f32_to_v3i32_scalar(<3 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_3
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB3_4
-; SI-NEXT:  .LBB3_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB3_3:
-; SI-NEXT:    s_branch .LBB3_2
-; SI-NEXT:  .LBB3_4:
+; SI-NEXT:  .LBB3_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
@@ -281,17 +308,23 @@ define inreg <3 x i32> @bitcast_v3f32_to_v3i32_scalar(<3 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB3_3
+; VI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB3_4
-; VI-NEXT:  .LBB3_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB3_3
+; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB3_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB3_3:
-; VI-NEXT:    s_branch .LBB3_2
-; VI-NEXT:  .LBB3_4:
+; VI-NEXT:  .LBB3_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -301,17 +334,23 @@ define inreg <3 x i32> @bitcast_v3f32_to_v3i32_scalar(<3 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_4
-; GFX9-NEXT:  .LBB3_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_3:
-; GFX9-NEXT:    s_branch .LBB3_2
-; GFX9-NEXT:  .LBB3_4:
+; GFX9-NEXT:  .LBB3_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -322,17 +361,20 @@ define inreg <3 x i32> @bitcast_v3f32_to_v3i32_scalar(<3 x float> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s3, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB3_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_4
-; GFX11-NEXT:  .LBB3_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s3, -1
+; GFX11-NEXT:  .LBB3_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v2, s2, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB3_3:
-; GFX11-NEXT:    s_branch .LBB3_2
 ; GFX11-NEXT:  .LBB3_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_mov_b32_e32 v2, s2
@@ -630,7 +672,7 @@ define inreg <12 x i8> @bitcast_v3i32_to_v12i8_scalar(<3 x i32> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s19, s17, 24
 ; SI-NEXT:    s_lshr_b32 s22, s17, 16
@@ -641,8 +683,25 @@ define inreg <12 x i8> @bitcast_v3i32_to_v12i8_scalar(<3 x i32> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[12:13], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[20:21], 0
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[20:21], -1
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr23
+; SI-NEXT:    ; implicit-def: $sgpr22
+; SI-NEXT:    ; implicit-def: $sgpr19
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[20:21], s[20:21], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
@@ -655,7 +714,7 @@ define inreg <12 x i8> @bitcast_v3i32_to_v12i8_scalar(<3 x i32> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; SI-NEXT:    s_lshr_b64 s[10:11], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[14:15], s[18:19], 8
-; SI-NEXT:  .LBB5_3: ; %end
+; SI-NEXT:  .LBB5_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s12
 ; SI-NEXT:    v_mov_b32_e32 v2, s8
@@ -669,23 +728,12 @@ define inreg <12 x i8> @bitcast_v3i32_to_v12i8_scalar(<3 x i32> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v10, s10
 ; SI-NEXT:    v_mov_b32_e32 v11, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr23
-; SI-NEXT:    ; implicit-def: $sgpr22
-; SI-NEXT:    ; implicit-def: $sgpr19
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; VI-LABEL: bitcast_v3i32_to_v12i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB5_4
+; VI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s19, s16, 8
 ; VI-NEXT:    s_lshr_b32 s10, s18, 16
@@ -696,8 +744,25 @@ define inreg <12 x i8> @bitcast_v3i32_to_v12i8_scalar(<3 x i32> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s15, s16, 16
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB5_3
-; VI-NEXT:  .LBB5_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[8:9], 0
+; VI-NEXT:    s_branch .LBB5_3
+; VI-NEXT:  .LBB5_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
+; VI-NEXT:    ; implicit-def: $sgpr19
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:  .LBB5_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB5_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
@@ -710,7 +775,7 @@ define inreg <12 x i8> @bitcast_v3i32_to_v12i8_scalar(<3 x i32> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s14, s17, 8
 ; VI-NEXT:    s_lshr_b32 s15, s16, 16
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
-; VI-NEXT:  .LBB5_3: ; %end
+; VI-NEXT:  .LBB5_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
 ; VI-NEXT:    v_mov_b32_e32 v2, s15
@@ -724,23 +789,12 @@ define inreg <12 x i8> @bitcast_v3i32_to_v12i8_scalar(<3 x i32> inreg %a, i32 in
 ; VI-NEXT:    v_mov_b32_e32 v10, s10
 ; VI-NEXT:    v_mov_b32_e32 v11, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB5_4:
-; VI-NEXT:    ; implicit-def: $sgpr19
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: bitcast_v3i32_to_v12i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s19, s16, 8
 ; GFX9-NEXT:    s_lshr_b32 s10, s18, 16
@@ -751,8 +805,25 @@ define inreg <12 x i8> @bitcast_v3i32_to_v12i8_scalar(<3 x i32> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b32 s15, s16, 16
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[8:9], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[8:9], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr19
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
@@ -765,7 +836,7 @@ define inreg <12 x i8> @bitcast_v3i32_to_v12i8_scalar(<3 x i32> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b32 s14, s17, 8
 ; GFX9-NEXT:    s_lshr_b32 s15, s16, 16
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
-; GFX9-NEXT:  .LBB5_3: ; %end
+; GFX9-NEXT:  .LBB5_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s15
@@ -779,24 +850,13 @@ define inreg <12 x i8> @bitcast_v3i32_to_v12i8_scalar(<3 x i32> inreg %a, i32 in
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s10
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr19
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-LABEL: bitcast_v3i32_to_v12i8_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s14, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    s_lshr_b32 s3, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s8, s2, 8
@@ -807,9 +867,25 @@ define inreg <12 x i8> @bitcast_v3i32_to_v12i8_scalar(<3 x i32> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b32 s13, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s14
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB5_3
+; GFX11-NEXT:  .LBB5_2:
+; GFX11-NEXT:    s_mov_b32 s14, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr8
+; GFX11-NEXT:    ; implicit-def: $sgpr3
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:  .LBB5_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s14, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
@@ -822,7 +898,7 @@ define inreg <12 x i8> @bitcast_v3i32_to_v12i8_scalar(<3 x i32> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b32 s12, s0, 16
 ; GFX11-NEXT:    s_lshr_b32 s13, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
-; GFX11-NEXT:  .LBB5_3: ; %end
+; GFX11-NEXT:  .LBB5_5: ; %end
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s12 :: v_dual_mov_b32 v3, s4
 ; GFX11-NEXT:    v_dual_mov_b32 v4, s1 :: v_dual_mov_b32 v5, s11
@@ -830,17 +906,6 @@ define inreg <12 x i8> @bitcast_v3i32_to_v12i8_scalar(<3 x i32> inreg %a, i32 in
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s2 :: v_dual_mov_b32 v9, s8
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s3 :: v_dual_mov_b32 v11, s6
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB5_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr3
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    s_branch .LBB5_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1289,7 +1354,7 @@ define inreg <3 x i32> @bitcast_v12i8_to_v3i32_scalar(<12 x i8> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -1318,8 +1383,17 @@ define inreg <3 x i32> @bitcast_v12i8_to_v3i32_scalar(<12 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_or_b32 s7, s8, s7
 ; SI-NEXT:    s_or_b32 s6, s6, s7
-; SI-NEXT:    s_cbranch_execnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -1359,20 +1433,17 @@ define inreg <3 x i32> @bitcast_v12i8_to_v3i32_scalar(<12 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_add_i32 s4, s4, 0x3000000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x3000000
-; SI-NEXT:  .LBB7_3: ; %end
+; SI-NEXT:  .LBB7_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: bitcast_v12i8_to_v3i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -1393,8 +1464,17 @@ define inreg <3 x i32> @bitcast_v12i8_to_v3i32_scalar(<12 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_perm_b32 v2, s26, v4, v2
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
@@ -1426,17 +1506,14 @@ define inreg <3 x i32> @bitcast_v12i8_to_v3i32_scalar(<12 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
 ; VI-NEXT:    v_add_u32_e32 v2, vcc, 0x3000000, v2
-; VI-NEXT:  .LBB7_3: ; %end
+; VI-NEXT:  .LBB7_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-LABEL: bitcast_v12i8_to_v3i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -1457,8 +1534,17 @@ define inreg <3 x i32> @bitcast_v12i8_to_v3i32_scalar(<12 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_perm_b32 v2, s26, v4, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; GFX9-NEXT:    v_or_b32_e32 v2, v3, v2
-; GFX9-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-NEXT:  .LBB7_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB7_3
+; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
@@ -1488,18 +1574,15 @@ define inreg <3 x i32> @bitcast_v12i8_to_v3i32_scalar(<12 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_add_u32_e32 v3, 0x300, v3
 ; GFX9-NEXT:    v_add_u32_sdwa v2, v2, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB7_3: ; %end
+; GFX9-NEXT:  .LBB7_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB7_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
-; GFX9-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-LABEL: bitcast_v12i8_to_v3i32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
@@ -1517,9 +1600,17 @@ define inreg <3 x i32> @bitcast_v12i8_to_v3i32_scalar(<12 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    v_or_b32_e32 v1, v5, v2
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3)
 ; GFX11-NEXT:    v_or_b32_e32 v2, v6, v3
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB7_3
-; GFX11-NEXT:  .LBB7_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB7_3
+; GFX11-NEXT:  .LBB7_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
+; GFX11-NEXT:  .LBB7_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -1549,11 +1640,8 @@ define inreg <3 x i32> @bitcast_v12i8_to_v3i32_scalar(<12 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_or_b32_e32 v1, v3, v4
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v6
-; GFX11-NEXT:  .LBB7_3: ; %end
+; GFX11-NEXT:  .LBB7_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB7_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
-; GFX11-NEXT:    s_branch .LBB7_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -1689,7 +1777,7 @@ define inreg <6 x bfloat> @bitcast_v3i32_to_v6bf16_scalar(<3 x i32> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB9_4
+; SI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s7, s18, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s18, 16
@@ -1697,8 +1785,22 @@ define inreg <6 x bfloat> @bitcast_v3i32_to_v6bf16_scalar(<3 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s8, s17, 16
 ; SI-NEXT:    s_and_b32 s11, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s10, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB9_3
-; SI-NEXT:  .LBB9_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB9_3
+; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:  .LBB9_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s18, s18, 3
@@ -1708,7 +1810,7 @@ define inreg <6 x bfloat> @bitcast_v3i32_to_v6bf16_scalar(<3 x i32> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s8, s17, 16
 ; SI-NEXT:    s_and_b32 s11, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s10, s16, 16
-; SI-NEXT:  .LBB9_3: ; %end
+; SI-NEXT:  .LBB9_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s11
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s10
@@ -1722,73 +1824,80 @@ define inreg <6 x bfloat> @bitcast_v3i32_to_v6bf16_scalar(<3 x i32> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[2:3], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB9_4:
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    s_branch .LBB9_2
 ;
 ; VI-LABEL: bitcast_v3i32_to_v6bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB9_4
+; VI-NEXT:    s_cbranch_scc0 .LBB9_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB9_3
-; VI-NEXT:  .LBB9_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB9_3
+; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB9_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB9_3: ; %end
+; VI-NEXT:  .LBB9_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB9_4:
-; VI-NEXT:    s_branch .LBB9_2
 ;
 ; GFX9-LABEL: bitcast_v3i32_to_v6bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB9_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB9_3
-; GFX9-NEXT:  .LBB9_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB9_3
+; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB9_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB9_3: ; %end
+; GFX9-NEXT:  .LBB9_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB9_4:
-; GFX9-NEXT:    s_branch .LBB9_2
 ;
 ; GFX11-LABEL: bitcast_v3i32_to_v6bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s3, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB9_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-NEXT:    s_cbranch_vccnz .LBB9_3
-; GFX11-NEXT:  .LBB9_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s3, -1
+; GFX11-NEXT:  .LBB9_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB9_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB9_3: ; %end
+; GFX11-NEXT:  .LBB9_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_mov_b32_e32 v2, s2
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB9_4:
-; GFX11-NEXT:    s_branch .LBB9_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2170,7 +2279,7 @@ define inreg <3 x i32> @bitcast_v6bf16_to_v3i32_scalar(<6 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB11_4
+; SI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v12
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[8:9], 16
@@ -2178,8 +2287,17 @@ define inreg <3 x i32> @bitcast_v6bf16_to_v3i32_scalar(<6 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[6:7], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v10
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[4:5], 16
-; SI-NEXT:    s_cbranch_execnz .LBB11_3
-; SI-NEXT:  .LBB11_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB11_3
+; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
+; SI-NEXT:  .LBB11_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v12
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v8
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -2198,20 +2316,25 @@ define inreg <3 x i32> @bitcast_v6bf16_to_v3i32_scalar(<6 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_add_f32_e32 v2, 0x40c00000, v2
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v3
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[2:3], 16
-; SI-NEXT:  .LBB11_3: ; %end
+; SI-NEXT:  .LBB11_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB11_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
-; SI-NEXT:    s_branch .LBB11_2
 ;
 ; VI-LABEL: bitcast_v6bf16_to_v3i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB11_3
+; VI-NEXT:    s_cbranch_scc0 .LBB11_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB11_4
-; VI-NEXT:  .LBB11_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB11_3
+; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB11_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s18, 16
 ; VI-NEXT:    v_mov_b32_e32 v5, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v5
@@ -2269,9 +2392,7 @@ define inreg <3 x i32> @bitcast_v6bf16_to_v3i32_scalar(<6 x bfloat> inreg %a, i3
 ; VI-NEXT:    v_lshrrev_b64 v[0:1], 16, v[0:1]
 ; VI-NEXT:    v_mov_b32_e32 v1, v3
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB11_3:
-; VI-NEXT:    s_branch .LBB11_2
-; VI-NEXT:  .LBB11_4:
+; VI-NEXT:  .LBB11_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2281,10 +2402,18 @@ define inreg <3 x i32> @bitcast_v6bf16_to_v3i32_scalar(<6 x bfloat> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB11_4
-; GFX9-NEXT:  .LBB11_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB11_3
+; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB11_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -2345,9 +2474,7 @@ define inreg <3 x i32> @bitcast_v6bf16_to_v3i32_scalar(<6 x bfloat> inreg %a, i3
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v3, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v4, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB11_3:
-; GFX9-NEXT:    s_branch .LBB11_2
-; GFX9-NEXT:  .LBB11_4:
+; GFX9-NEXT:  .LBB11_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2358,11 +2485,16 @@ define inreg <3 x i32> @bitcast_v6bf16_to_v3i32_scalar(<6 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-TRUE16-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, -1
+; GFX11-TRUE16-NEXT:  .LBB11_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s3, 0, s2
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s2, s2, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s3
@@ -2428,8 +2560,6 @@ define inreg <3 x i32> @bitcast_v6bf16_to_v3i32_scalar(<6 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v4
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v6.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB11_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB11_2
 ; GFX11-TRUE16-NEXT:  .LBB11_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, s2
@@ -2440,11 +2570,16 @@ define inreg <3 x i32> @bitcast_v6bf16_to_v3i32_scalar(<6 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB11_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB11_4
-; GFX11-FAKE16-NEXT:  .LBB11_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB11_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, -1
+; GFX11-FAKE16-NEXT:  .LBB11_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB11_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s3, 0, s2
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s2, s2, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s3
@@ -2512,8 +2647,6 @@ define inreg <3 x i32> @bitcast_v6bf16_to_v3i32_scalar(<6 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v4, 16, v5
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB11_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB11_2
 ; GFX11-FAKE16-NEXT:  .LBB11_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, s2
@@ -2638,20 +2771,31 @@ define inreg <6 x half> @bitcast_v3i32_to_v6f16_scalar(<3 x i32> inreg %a, i32 i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB13_4
+; SI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s10, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB13_3
-; SI-NEXT:  .LBB13_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:  .LBB13_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
 ; SI-NEXT:    s_lshr_b32 s10, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
-; SI-NEXT:  .LBB13_3: ; %end
+; SI-NEXT:  .LBB13_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s6
@@ -2665,70 +2809,80 @@ define inreg <6 x half> @bitcast_v3i32_to_v6f16_scalar(<3 x i32> inreg %a, i32 i
 ; SI-NEXT:    v_mov_b32_e32 v1, s6
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB13_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_branch .LBB13_2
 ;
 ; VI-LABEL: bitcast_v3i32_to_v6f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB13_4
+; VI-NEXT:    s_cbranch_scc0 .LBB13_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB13_3
-; VI-NEXT:  .LBB13_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB13_3
+; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB13_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB13_3: ; %end
+; VI-NEXT:  .LBB13_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB13_4:
-; VI-NEXT:    s_branch .LBB13_2
 ;
 ; GFX9-LABEL: bitcast_v3i32_to_v6f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB13_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB13_3
-; GFX9-NEXT:  .LBB13_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB13_3
+; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB13_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB13_3: ; %end
+; GFX9-NEXT:  .LBB13_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB13_4:
-; GFX9-NEXT:    s_branch .LBB13_2
 ;
 ; GFX11-LABEL: bitcast_v3i32_to_v6f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s3, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB13_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_3
-; GFX11-NEXT:  .LBB13_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s3, -1
+; GFX11-NEXT:  .LBB13_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB13_3: ; %end
+; GFX11-NEXT:  .LBB13_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_mov_b32_e32 v2, s2
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB13_4:
-; GFX11-NEXT:    s_branch .LBB13_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -2892,7 +3046,7 @@ define inreg <3 x i32> @bitcast_v6f16_to_v3i32_scalar(<6 x half> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b32 s10, s17, 16
 ; SI-NEXT:    s_lshr_b32 s11, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB15_3
+; SI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s11, 16
@@ -2903,8 +3057,17 @@ define inreg <3 x i32> @bitcast_v6f16_to_v3i32_scalar(<6 x half> inreg %a, i32 i
 ; SI-NEXT:    s_and_b32 s6, s18, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s7, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s8
-; SI-NEXT:    s_cbranch_execnz .LBB15_4
-; SI-NEXT:  .LBB15_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6
+; SI-NEXT:  .LBB15_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s11
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s10
@@ -2930,10 +3093,7 @@ define inreg <3 x i32> @bitcast_v6f16_to_v3i32_scalar(<6 x half> inreg %a, i32 i
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v4, v2
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB15_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6
-; SI-NEXT:    s_branch .LBB15_2
-; SI-NEXT:  .LBB15_4:
+; SI-NEXT:  .LBB15_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -2943,10 +3103,18 @@ define inreg <3 x i32> @bitcast_v6f16_to_v3i32_scalar(<6 x half> inreg %a, i32 i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB15_3
+; VI-NEXT:    s_cbranch_scc0 .LBB15_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB15_4
-; VI-NEXT:  .LBB15_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB15_3
+; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB15_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s18, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -2964,9 +3132,7 @@ define inreg <3 x i32> @bitcast_v6f16_to_v3i32_scalar(<6 x half> inreg %a, i32 i
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v3
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB15_3:
-; VI-NEXT:    s_branch .LBB15_2
-; VI-NEXT:  .LBB15_4:
+; VI-NEXT:  .LBB15_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -2976,18 +3142,24 @@ define inreg <3 x i32> @bitcast_v6f16_to_v3i32_scalar(<6 x half> inreg %a, i32 i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB15_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB15_4
-; GFX9-NEXT:  .LBB15_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB15_3
+; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB15_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB15_3:
-; GFX9-NEXT:    s_branch .LBB15_2
-; GFX9-NEXT:  .LBB15_4:
+; GFX9-NEXT:  .LBB15_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -2998,17 +3170,20 @@ define inreg <3 x i32> @bitcast_v6f16_to_v3i32_scalar(<6 x half> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s3, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB15_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_4
-; GFX11-NEXT:  .LBB15_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s3, -1
+; GFX11-NEXT:  .LBB15_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB15_3:
-; GFX11-NEXT:    s_branch .LBB15_2
 ; GFX11-NEXT:  .LBB15_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_mov_b32_e32 v2, s2
@@ -3133,20 +3308,31 @@ define inreg <6 x i16> @bitcast_v3i32_to_v6i16_scalar(<3 x i32> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB17_4
+; SI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s10, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB17_3
-; SI-NEXT:  .LBB17_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB17_3
+; SI-NEXT:  .LBB17_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:  .LBB17_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB17_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_add_i32 s17, s17, 3
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
 ; SI-NEXT:    s_lshr_b32 s10, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
-; SI-NEXT:  .LBB17_3: ; %end
+; SI-NEXT:  .LBB17_5: ; %end
 ; SI-NEXT:    s_and_b32 s5, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_or_b32 s5, s5, s6
@@ -3160,70 +3346,80 @@ define inreg <6 x i16> @bitcast_v3i32_to_v6i16_scalar(<3 x i32> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v1, s6
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB17_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_branch .LBB17_2
 ;
 ; VI-LABEL: bitcast_v3i32_to_v6i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB17_4
+; VI-NEXT:    s_cbranch_scc0 .LBB17_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB17_3
-; VI-NEXT:  .LBB17_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB17_3
+; VI-NEXT:  .LBB17_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB17_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB17_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s18, s18, 3
 ; VI-NEXT:    s_add_i32 s17, s17, 3
 ; VI-NEXT:    s_add_i32 s16, s16, 3
-; VI-NEXT:  .LBB17_3: ; %end
+; VI-NEXT:  .LBB17_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB17_4:
-; VI-NEXT:    s_branch .LBB17_2
 ;
 ; GFX9-LABEL: bitcast_v3i32_to_v6i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB17_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB17_3
-; GFX9-NEXT:  .LBB17_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB17_3
+; GFX9-NEXT:  .LBB17_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB17_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s18, s18, 3
 ; GFX9-NEXT:    s_add_i32 s17, s17, 3
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
-; GFX9-NEXT:  .LBB17_3: ; %end
+; GFX9-NEXT:  .LBB17_5: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB17_4:
-; GFX9-NEXT:    s_branch .LBB17_2
 ;
 ; GFX11-LABEL: bitcast_v3i32_to_v6i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s3, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB17_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-NEXT:    s_cbranch_vccnz .LBB17_3
-; GFX11-NEXT:  .LBB17_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s3, -1
+; GFX11-NEXT:  .LBB17_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB17_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
 ; GFX11-NEXT:    s_add_i32 s1, s1, 3
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
-; GFX11-NEXT:  .LBB17_3: ; %end
+; GFX11-NEXT:  .LBB17_4: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_mov_b32_e32 v2, s2
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB17_4:
-; GFX11-NEXT:    s_branch .LBB17_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -3374,7 +3570,7 @@ define inreg <3 x i32> @bitcast_v6i16_to_v3i32_scalar(<6 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b32 s10, s17, 16
 ; SI-NEXT:    s_lshr_b32 s11, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB19_4
+; SI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s11, 16
@@ -3385,8 +3581,17 @@ define inreg <3 x i32> @bitcast_v6i16_to_v3i32_scalar(<6 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_and_b32 s6, s18, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s7, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s8
-; SI-NEXT:    s_cbranch_execnz .LBB19_3
-; SI-NEXT:  .LBB19_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB19_3
+; SI-NEXT:  .LBB19_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6
+; SI-NEXT:  .LBB19_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s11, 16
@@ -3402,23 +3607,28 @@ define inreg <3 x i32> @bitcast_v6i16_to_v3i32_scalar(<6 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_add_i32 s4, s4, 0x30000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x30000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x30000
-; SI-NEXT:  .LBB19_3: ; %end
+; SI-NEXT:  .LBB19_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB19_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6
-; SI-NEXT:    s_branch .LBB19_2
 ;
 ; VI-LABEL: bitcast_v6i16_to_v3i32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_4
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB19_3
-; VI-NEXT:  .LBB19_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s18, 3
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -3434,29 +3644,33 @@ define inreg <3 x i32> @bitcast_v6i16_to_v3i32_scalar(<6 x i16> inreg %a, i32 in
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB19_3: ; %end
+; VI-NEXT:  .LBB19_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB19_4:
-; VI-NEXT:    s_branch .LBB19_2
 ;
 ; GFX9-LABEL: bitcast_v6i16_to_v3i32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB19_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB19_4
-; GFX9-NEXT:  .LBB19_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB19_3
+; GFX9-NEXT:  .LBB19_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB19_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB19_3:
-; GFX9-NEXT:    s_branch .LBB19_2
-; GFX9-NEXT:  .LBB19_4:
+; GFX9-NEXT:  .LBB19_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -3467,17 +3681,20 @@ define inreg <3 x i32> @bitcast_v6i16_to_v3i32_scalar(<6 x i16> inreg %a, i32 in
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s3, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB19_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-NEXT:    s_cbranch_vccnz .LBB19_4
-; GFX11-NEXT:  .LBB19_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s3, -1
+; GFX11-NEXT:  .LBB19_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB19_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB19_3:
-; GFX11-NEXT:    s_branch .LBB19_2
 ; GFX11-NEXT:  .LBB19_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_mov_b32_e32 v2, s2
@@ -3773,7 +3990,7 @@ define inreg <12 x i8> @bitcast_v3f32_to_v12i8_scalar(<3 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB21_3
+; SI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s19, s17, 24
 ; SI-NEXT:    s_lshr_b32 s22, s17, 16
@@ -3784,8 +4001,25 @@ define inreg <12 x i8> @bitcast_v3f32_to_v12i8_scalar(<3 x float> inreg %a, i32
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
 ; SI-NEXT:    s_lshr_b64 s[8:9], s[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB21_4
-; SI-NEXT:  .LBB21_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[20:21], 0
+; SI-NEXT:    s_branch .LBB21_3
+; SI-NEXT:  .LBB21_2:
+; SI-NEXT:    s_mov_b64 s[20:21], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr23
+; SI-NEXT:    ; implicit-def: $sgpr22
+; SI-NEXT:    ; implicit-def: $sgpr19
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:  .LBB21_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[20:21], s[20:21], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB21_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v8, s18, 1.0
 ; SI-NEXT:    v_add_f32_e64 v17, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v16, s16, 1.0
@@ -3798,19 +4032,8 @@ define inreg <12 x i8> @bitcast_v3f32_to_v12i8_scalar(<3 x float> inreg %a, i32
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v17
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v17
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 8, v17
-; SI-NEXT:    s_branch .LBB21_5
-; SI-NEXT:  .LBB21_3:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr23
-; SI-NEXT:    ; implicit-def: $sgpr22
-; SI-NEXT:    ; implicit-def: $sgpr19
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    s_branch .LBB21_2
-; SI-NEXT:  .LBB21_4:
+; SI-NEXT:    s_branch .LBB21_6
+; SI-NEXT:  .LBB21_5:
 ; SI-NEXT:    v_mov_b32_e32 v16, s16
 ; SI-NEXT:    v_mov_b32_e32 v17, s17
 ; SI-NEXT:    v_mov_b32_e32 v8, s18
@@ -3823,7 +4046,7 @@ define inreg <12 x i8> @bitcast_v3f32_to_v12i8_scalar(<3 x float> inreg %a, i32
 ; SI-NEXT:    v_mov_b32_e32 v3, s4
 ; SI-NEXT:    v_mov_b32_e32 v14, s6
 ; SI-NEXT:    v_mov_b32_e32 v1, s8
-; SI-NEXT:  .LBB21_5: ; %end
+; SI-NEXT:  .LBB21_6: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, v16
 ; SI-NEXT:    v_mov_b32_e32 v2, v14
 ; SI-NEXT:    v_mov_b32_e32 v4, v17
@@ -3834,7 +4057,7 @@ define inreg <12 x i8> @bitcast_v3f32_to_v12i8_scalar(<3 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB21_3
+; VI-NEXT:    s_cbranch_scc0 .LBB21_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s19, s16, 8
 ; VI-NEXT:    s_lshr_b32 s10, s18, 16
@@ -3845,8 +4068,25 @@ define inreg <12 x i8> @bitcast_v3f32_to_v12i8_scalar(<3 x float> inreg %a, i32
 ; VI-NEXT:    s_lshr_b32 s14, s16, 16
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB21_4
-; VI-NEXT:  .LBB21_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[8:9], 0
+; VI-NEXT:    s_branch .LBB21_3
+; VI-NEXT:  .LBB21_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
+; VI-NEXT:    ; implicit-def: $sgpr19
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:  .LBB21_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB21_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v8, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v14, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v13, s16, 1.0
@@ -3859,19 +4099,8 @@ define inreg <12 x i8> @bitcast_v3f32_to_v12i8_scalar(<3 x float> inreg %a, i32
 ; VI-NEXT:    v_lshrrev_b32_e32 v5, 8, v14
 ; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v13
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 8, v13
-; VI-NEXT:    s_branch .LBB21_5
-; VI-NEXT:  .LBB21_3:
-; VI-NEXT:    ; implicit-def: $sgpr19
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    s_branch .LBB21_2
-; VI-NEXT:  .LBB21_4:
+; VI-NEXT:    s_branch .LBB21_6
+; VI-NEXT:  .LBB21_5:
 ; VI-NEXT:    v_mov_b32_e32 v13, s16
 ; VI-NEXT:    v_mov_b32_e32 v14, s17
 ; VI-NEXT:    v_mov_b32_e32 v8, s18
@@ -3884,7 +4113,7 @@ define inreg <12 x i8> @bitcast_v3f32_to_v12i8_scalar(<3 x float> inreg %a, i32
 ; VI-NEXT:    v_mov_b32_e32 v10, s10
 ; VI-NEXT:    v_mov_b32_e32 v11, s6
 ; VI-NEXT:    v_mov_b32_e32 v3, s4
-; VI-NEXT:  .LBB21_5: ; %end
+; VI-NEXT:  .LBB21_6: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, v13
 ; VI-NEXT:    v_mov_b32_e32 v4, v14
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -3893,7 +4122,7 @@ define inreg <12 x i8> @bitcast_v3f32_to_v12i8_scalar(<3 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s19, s16, 8
 ; GFX9-NEXT:    s_lshr_b32 s10, s18, 16
@@ -3904,8 +4133,25 @@ define inreg <12 x i8> @bitcast_v3f32_to_v12i8_scalar(<3 x float> inreg %a, i32
 ; GFX9-NEXT:    s_lshr_b32 s14, s16, 16
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB21_4
-; GFX9-NEXT:  .LBB21_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[8:9], 0
+; GFX9-NEXT:    s_branch .LBB21_3
+; GFX9-NEXT:  .LBB21_2:
+; GFX9-NEXT:    s_mov_b64 s[8:9], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr19
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:  .LBB21_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v8, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v14, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v13, s16, 1.0
@@ -3918,19 +4164,8 @@ define inreg <12 x i8> @bitcast_v3f32_to_v12i8_scalar(<3 x float> inreg %a, i32
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v14
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v13
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v13
-; GFX9-NEXT:    s_branch .LBB21_5
-; GFX9-NEXT:  .LBB21_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr19
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    s_branch .LBB21_2
-; GFX9-NEXT:  .LBB21_4:
+; GFX9-NEXT:    s_branch .LBB21_6
+; GFX9-NEXT:  .LBB21_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s18
@@ -3943,7 +4178,7 @@ define inreg <12 x i8> @bitcast_v3f32_to_v12i8_scalar(<3 x float> inreg %a, i32
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s10
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:  .LBB21_5: ; %end
+; GFX9-NEXT:  .LBB21_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, v13
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v14
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -3952,10 +4187,10 @@ define inreg <12 x i8> @bitcast_v3f32_to_v12i8_scalar(<3 x float> inreg %a, i32
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
-; GFX11-NEXT:    s_mov_b32 s3, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB21_3
+; GFX11-NEXT:    s_mov_b32 s8, 0
+; GFX11-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-NEXT:    s_lshr_b32 s8, s2, 16
+; GFX11-NEXT:    s_lshr_b32 s3, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s9, s2, 8
 ; GFX11-NEXT:    s_lshr_b32 s10, s1, 24
 ; GFX11-NEXT:    s_lshr_b32 s11, s1, 16
@@ -3964,9 +4199,25 @@ define inreg <12 x i8> @bitcast_v3f32_to_v12i8_scalar(<3 x float> inreg %a, i32
 ; GFX11-NEXT:    s_lshr_b32 s14, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-NEXT:    s_cbranch_vccnz .LBB21_4
-; GFX11-NEXT:  .LBB21_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB21_3
+; GFX11-NEXT:  .LBB21_2:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr3
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:  .LBB21_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v8, s2, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v14, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v13, s0, 1.0
@@ -3980,27 +4231,16 @@ define inreg <12 x i8> @bitcast_v3f32_to_v12i8_scalar(<3 x float> inreg %a, i32
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v14
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v13
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v13
-; GFX11-NEXT:    s_branch .LBB21_5
-; GFX11-NEXT:  .LBB21_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    s_branch .LBB21_2
-; GFX11-NEXT:  .LBB21_4:
+; GFX11-NEXT:    s_branch .LBB21_6
+; GFX11-NEXT:  .LBB21_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v13, s0 :: v_dual_mov_b32 v14, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s2 :: v_dual_mov_b32 v1, s14
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s12 :: v_dual_mov_b32 v5, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s11 :: v_dual_mov_b32 v7, s10
-; GFX11-NEXT:    v_dual_mov_b32 v9, s9 :: v_dual_mov_b32 v10, s8
+; GFX11-NEXT:    v_dual_mov_b32 v9, s9 :: v_dual_mov_b32 v10, s3
 ; GFX11-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX11-NEXT:    v_mov_b32_e32 v3, s4
-; GFX11-NEXT:  .LBB21_5: ; %end
+; GFX11-NEXT:  .LBB21_6: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v0, v13
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v14
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -4452,7 +4692,7 @@ define inreg <3 x float> @bitcast_v12i8_to_v3f32_scalar(<12 x i8> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB23_4
+; SI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -4481,8 +4721,17 @@ define inreg <3 x float> @bitcast_v12i8_to_v3f32_scalar(<12 x i8> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s6, s6, 0xffff
 ; SI-NEXT:    s_or_b32 s7, s8, s7
 ; SI-NEXT:    s_or_b32 s6, s6, s7
-; SI-NEXT:    s_cbranch_execnz .LBB23_3
-; SI-NEXT:  .LBB23_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB23_3
+; SI-NEXT:  .LBB23_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6
+; SI-NEXT:  .LBB23_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB23_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -4522,20 +4771,17 @@ define inreg <3 x float> @bitcast_v12i8_to_v3f32_scalar(<12 x i8> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s4, s4, 0x3000000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x3000000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x3000000
-; SI-NEXT:  .LBB23_3: ; %end
+; SI-NEXT:  .LBB23_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB23_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6
-; SI-NEXT:    s_branch .LBB23_2
 ;
 ; VI-LABEL: bitcast_v12i8_to_v3f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB23_4
+; VI-NEXT:    s_cbranch_scc0 .LBB23_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -4556,8 +4802,17 @@ define inreg <3 x float> @bitcast_v12i8_to_v3f32_scalar(<12 x i8> inreg %a, i32
 ; VI-NEXT:    v_perm_b32 v2, s26, v4, v2
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    s_cbranch_execnz .LBB23_3
-; VI-NEXT:  .LBB23_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB23_3
+; VI-NEXT:  .LBB23_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
+; VI-NEXT:  .LBB23_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB23_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
@@ -4589,17 +4844,14 @@ define inreg <3 x float> @bitcast_v12i8_to_v3f32_scalar(<12 x i8> inreg %a, i32
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
 ; VI-NEXT:    v_add_u32_e32 v2, vcc, 0x3000000, v2
-; VI-NEXT:  .LBB23_3: ; %end
+; VI-NEXT:  .LBB23_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB23_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
-; VI-NEXT:    s_branch .LBB23_2
 ;
 ; GFX9-LABEL: bitcast_v12i8_to_v3f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB23_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -4620,8 +4872,17 @@ define inreg <3 x float> @bitcast_v12i8_to_v3f32_scalar(<12 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_perm_b32 v2, s26, v4, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; GFX9-NEXT:    v_or_b32_e32 v2, v3, v2
-; GFX9-NEXT:    s_cbranch_execnz .LBB23_3
-; GFX9-NEXT:  .LBB23_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB23_3
+; GFX9-NEXT:  .LBB23_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
+; GFX9-NEXT:  .LBB23_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
@@ -4651,18 +4912,15 @@ define inreg <3 x float> @bitcast_v12i8_to_v3f32_scalar(<12 x i8> inreg %a, i32
 ; GFX9-NEXT:    v_add_u32_e32 v3, 0x300, v3
 ; GFX9-NEXT:    v_add_u32_sdwa v2, v2, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB23_3: ; %end
+; GFX9-NEXT:  .LBB23_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB23_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
-; GFX9-NEXT:    s_branch .LBB23_2
 ;
 ; GFX11-LABEL: bitcast_v12i8_to_v3f32_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB23_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
@@ -4680,9 +4938,17 @@ define inreg <3 x float> @bitcast_v12i8_to_v3f32_scalar(<12 x i8> inreg %a, i32
 ; GFX11-NEXT:    v_or_b32_e32 v1, v5, v2
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3)
 ; GFX11-NEXT:    v_or_b32_e32 v2, v6, v3
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB23_3
-; GFX11-NEXT:  .LBB23_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB23_3
+; GFX11-NEXT:  .LBB23_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
+; GFX11-NEXT:  .LBB23_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -4712,11 +4978,8 @@ define inreg <3 x float> @bitcast_v12i8_to_v3f32_scalar(<12 x i8> inreg %a, i32
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_or_b32_e32 v1, v3, v4
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v6
-; GFX11-NEXT:  .LBB23_3: ; %end
+; GFX11-NEXT:  .LBB23_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB23_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
-; GFX11-NEXT:    s_branch .LBB23_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -4851,7 +5114,7 @@ define inreg <6 x bfloat> @bitcast_v3f32_to_v6bf16_scalar(<3 x float> inreg %a,
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB25_3
+; SI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s6, s18, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s7, s18, 16
@@ -4859,8 +5122,22 @@ define inreg <6 x bfloat> @bitcast_v3f32_to_v6bf16_scalar(<3 x float> inreg %a,
 ; SI-NEXT:    s_lshl_b32 s9, s17, 16
 ; SI-NEXT:    s_and_b32 s10, s16, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s11, s16, 16
-; SI-NEXT:    s_cbranch_execnz .LBB25_4
-; SI-NEXT:  .LBB25_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB25_3
+; SI-NEXT:  .LBB25_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB25_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB25_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
@@ -4870,23 +5147,15 @@ define inreg <6 x bfloat> @bitcast_v3f32_to_v6bf16_scalar(<3 x float> inreg %a,
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v1
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
-; SI-NEXT:    s_branch .LBB25_5
-; SI-NEXT:  .LBB25_3:
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB25_2
-; SI-NEXT:  .LBB25_4:
+; SI-NEXT:    s_branch .LBB25_6
+; SI-NEXT:  .LBB25_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s11
 ; SI-NEXT:    v_mov_b32_e32 v1, s10
 ; SI-NEXT:    v_mov_b32_e32 v2, s9
 ; SI-NEXT:    v_mov_b32_e32 v5, s8
 ; SI-NEXT:    v_mov_b32_e32 v3, s7
 ; SI-NEXT:    v_mov_b32_e32 v4, s6
-; SI-NEXT:  .LBB25_5: ; %end
+; SI-NEXT:  .LBB25_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
@@ -4905,17 +5174,23 @@ define inreg <6 x bfloat> @bitcast_v3f32_to_v6bf16_scalar(<3 x float> inreg %a,
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB25_3
+; VI-NEXT:    s_cbranch_scc0 .LBB25_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB25_4
-; VI-NEXT:  .LBB25_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB25_3
+; VI-NEXT:  .LBB25_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB25_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB25_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB25_3:
-; VI-NEXT:    s_branch .LBB25_2
-; VI-NEXT:  .LBB25_4:
+; VI-NEXT:  .LBB25_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -4926,17 +5201,23 @@ define inreg <6 x bfloat> @bitcast_v3f32_to_v6bf16_scalar(<3 x float> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB25_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB25_4
-; GFX9-NEXT:  .LBB25_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB25_3
+; GFX9-NEXT:  .LBB25_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB25_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB25_3:
-; GFX9-NEXT:    s_branch .LBB25_2
-; GFX9-NEXT:  .LBB25_4:
+; GFX9-NEXT:  .LBB25_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -4948,17 +5229,20 @@ define inreg <6 x bfloat> @bitcast_v3f32_to_v6bf16_scalar(<3 x float> inreg %a,
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB25_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_4
-; GFX11-NEXT:  .LBB25_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB25_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v2, s2, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB25_3:
-; GFX11-NEXT:    s_branch .LBB25_2
 ; GFX11-NEXT:  .LBB25_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -5344,7 +5628,7 @@ define inreg <3 x float> @bitcast_v6bf16_to_v3f32_scalar(<6 x bfloat> inreg %a,
 ; SI-NEXT:    v_mul_f32_e64 v6, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v4, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB27_4
+; SI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v12
 ; SI-NEXT:    v_lshr_b64 v[0:1], v[8:9], 16
@@ -5352,8 +5636,17 @@ define inreg <3 x float> @bitcast_v6bf16_to_v3f32_scalar(<6 x bfloat> inreg %a,
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[6:7], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v10
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[4:5], 16
-; SI-NEXT:    s_cbranch_execnz .LBB27_3
-; SI-NEXT:  .LBB27_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB27_3
+; SI-NEXT:  .LBB27_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
+; SI-NEXT:  .LBB27_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB27_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v12
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v8
 ; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
@@ -5372,20 +5665,25 @@ define inreg <3 x float> @bitcast_v6bf16_to_v3f32_scalar(<6 x bfloat> inreg %a,
 ; SI-NEXT:    v_add_f32_e32 v2, 0x40c00000, v2
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v3
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[2:3], 16
-; SI-NEXT:  .LBB27_3: ; %end
+; SI-NEXT:  .LBB27_5: ; %end
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB27_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2
-; SI-NEXT:    s_branch .LBB27_2
 ;
 ; VI-LABEL: bitcast_v6bf16_to_v3f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB27_3
+; VI-NEXT:    s_cbranch_scc0 .LBB27_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB27_4
-; VI-NEXT:  .LBB27_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB27_3
+; VI-NEXT:  .LBB27_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB27_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB27_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s18, 16
 ; VI-NEXT:    v_mov_b32_e32 v5, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v5
@@ -5443,9 +5741,7 @@ define inreg <3 x float> @bitcast_v6bf16_to_v3f32_scalar(<6 x bfloat> inreg %a,
 ; VI-NEXT:    v_lshrrev_b64 v[0:1], 16, v[0:1]
 ; VI-NEXT:    v_mov_b32_e32 v1, v3
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB27_3:
-; VI-NEXT:    s_branch .LBB27_2
-; VI-NEXT:  .LBB27_4:
+; VI-NEXT:  .LBB27_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5455,10 +5751,18 @@ define inreg <3 x float> @bitcast_v6bf16_to_v3f32_scalar(<6 x bfloat> inreg %a,
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB27_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB27_4
-; GFX9-NEXT:  .LBB27_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB27_3
+; GFX9-NEXT:  .LBB27_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB27_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -5519,9 +5823,7 @@ define inreg <3 x float> @bitcast_v6bf16_to_v3f32_scalar(<6 x bfloat> inreg %a,
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v3, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v4, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB27_3:
-; GFX9-NEXT:    s_branch .LBB27_2
-; GFX9-NEXT:  .LBB27_4:
+; GFX9-NEXT:  .LBB27_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5532,11 +5834,16 @@ define inreg <3 x float> @bitcast_v6bf16_to_v3f32_scalar(<6 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB27_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB27_4
-; GFX11-TRUE16-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB27_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, -1
+; GFX11-TRUE16-NEXT:  .LBB27_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB27_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s3, 0, s2
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s2, s2, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s3
@@ -5602,8 +5909,6 @@ define inreg <3 x float> @bitcast_v6bf16_to_v3f32_scalar(<6 x bfloat> inreg %a,
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, 16, v4
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v6.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB27_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB27_2
 ; GFX11-TRUE16-NEXT:  .LBB27_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, s2
@@ -5614,11 +5919,16 @@ define inreg <3 x float> @bitcast_v6bf16_to_v3f32_scalar(<6 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB27_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB27_4
-; GFX11-FAKE16-NEXT:  .LBB27_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB27_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, -1
+; GFX11-FAKE16-NEXT:  .LBB27_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB27_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s3, 0, s2
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s2, s2, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s3
@@ -5686,8 +5996,6 @@ define inreg <3 x float> @bitcast_v6bf16_to_v3f32_scalar(<6 x bfloat> inreg %a,
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v4, 16, v5
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB27_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB27_2
 ; GFX11-FAKE16-NEXT:  .LBB27_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, s2
@@ -5811,33 +6119,39 @@ define inreg <6 x half> @bitcast_v3f32_to_v6f16_scalar(<3 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB29_3
+; SI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s10, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB29_4
-; SI-NEXT:  .LBB29_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB29_3
+; SI-NEXT:  .LBB29_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:  .LBB29_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB29_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[0:1], 16
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[2:3], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v1
-; SI-NEXT:    s_branch .LBB29_5
-; SI-NEXT:  .LBB29_3:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_branch .LBB29_2
-; SI-NEXT:  .LBB29_4:
+; SI-NEXT:    s_branch .LBB29_6
+; SI-NEXT:  .LBB29_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
 ; SI-NEXT:    v_mov_b32_e32 v4, s10
 ; SI-NEXT:    v_mov_b32_e32 v3, s4
 ; SI-NEXT:    v_mov_b32_e32 v5, s6
-; SI-NEXT:  .LBB29_5: ; %end
+; SI-NEXT:  .LBB29_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v1
@@ -5853,17 +6167,23 @@ define inreg <6 x half> @bitcast_v3f32_to_v6f16_scalar(<3 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB29_3
+; VI-NEXT:    s_cbranch_scc0 .LBB29_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB29_4
-; VI-NEXT:  .LBB29_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB29_3
+; VI-NEXT:  .LBB29_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB29_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB29_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB29_3:
-; VI-NEXT:    s_branch .LBB29_2
-; VI-NEXT:  .LBB29_4:
+; VI-NEXT:  .LBB29_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -5874,17 +6194,23 @@ define inreg <6 x half> @bitcast_v3f32_to_v6f16_scalar(<3 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB29_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB29_4
-; GFX9-NEXT:  .LBB29_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB29_3
+; GFX9-NEXT:  .LBB29_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB29_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB29_3:
-; GFX9-NEXT:    s_branch .LBB29_2
-; GFX9-NEXT:  .LBB29_4:
+; GFX9-NEXT:  .LBB29_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -5896,17 +6222,20 @@ define inreg <6 x half> @bitcast_v3f32_to_v6f16_scalar(<3 x float> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB29_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB29_4
-; GFX11-NEXT:  .LBB29_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB29_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB29_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v2, s2, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB29_3:
-; GFX11-NEXT:    s_branch .LBB29_2
 ; GFX11-NEXT:  .LBB29_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -6074,7 +6403,7 @@ define inreg <3 x float> @bitcast_v6f16_to_v3f32_scalar(<6 x half> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s10, s17, 16
 ; SI-NEXT:    s_lshr_b32 s11, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB31_3
+; SI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s11, 16
@@ -6085,8 +6414,17 @@ define inreg <3 x float> @bitcast_v6f16_to_v3f32_scalar(<6 x half> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s6, s18, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s7, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s8
-; SI-NEXT:    s_cbranch_execnz .LBB31_4
-; SI-NEXT:  .LBB31_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB31_3
+; SI-NEXT:  .LBB31_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6
+; SI-NEXT:  .LBB31_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB31_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s11
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s10
@@ -6112,10 +6450,7 @@ define inreg <3 x float> @bitcast_v6f16_to_v3f32_scalar(<6 x half> inreg %a, i32
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v4, v2
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB31_3:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6
-; SI-NEXT:    s_branch .LBB31_2
-; SI-NEXT:  .LBB31_4:
+; SI-NEXT:  .LBB31_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
@@ -6125,10 +6460,18 @@ define inreg <3 x float> @bitcast_v6f16_to_v3f32_scalar(<6 x half> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB31_3
+; VI-NEXT:    s_cbranch_scc0 .LBB31_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB31_4
-; VI-NEXT:  .LBB31_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB31_3
+; VI-NEXT:  .LBB31_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB31_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB31_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s18, 16
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x200
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -6146,9 +6489,7 @@ define inreg <3 x float> @bitcast_v6f16_to_v3f32_scalar(<6 x half> inreg %a, i32
 ; VI-NEXT:    v_add_f16_e32 v0, s16, v0
 ; VI-NEXT:    v_or_b32_e32 v0, v0, v3
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB31_3:
-; VI-NEXT:    s_branch .LBB31_2
-; VI-NEXT:  .LBB31_4:
+; VI-NEXT:  .LBB31_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6158,18 +6499,24 @@ define inreg <3 x float> @bitcast_v6f16_to_v3f32_scalar(<6 x half> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB31_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB31_4
-; GFX9-NEXT:  .LBB31_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB31_3
+; GFX9-NEXT:  .LBB31_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB31_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB31_3:
-; GFX9-NEXT:    s_branch .LBB31_2
-; GFX9-NEXT:  .LBB31_4:
+; GFX9-NEXT:  .LBB31_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6180,17 +6527,20 @@ define inreg <3 x float> @bitcast_v6f16_to_v3f32_scalar(<6 x half> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s3, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB31_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-NEXT:    s_cbranch_vccnz .LBB31_4
-; GFX11-NEXT:  .LBB31_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s3, -1
+; GFX11-NEXT:  .LBB31_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB31_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB31_3:
-; GFX11-NEXT:    s_branch .LBB31_2
 ; GFX11-NEXT:  .LBB31_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_mov_b32_e32 v2, s2
@@ -6314,33 +6664,39 @@ define inreg <6 x i16> @bitcast_v3f32_to_v6i16_scalar(<3 x float> inreg %a, i32
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB33_3
+; SI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshr_b32 s10, s17, 16
 ; SI-NEXT:    s_lshr_b64 s[4:5], s[18:19], 16
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[16:17], 16
-; SI-NEXT:    s_cbranch_execnz .LBB33_4
-; SI-NEXT:  .LBB33_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB33_3
+; SI-NEXT:  .LBB33_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:  .LBB33_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s5, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB33_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; SI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; SI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; SI-NEXT:    v_lshr_b64 v[5:6], v[0:1], 16
 ; SI-NEXT:    v_lshr_b64 v[3:4], v[2:3], 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v1
-; SI-NEXT:    s_branch .LBB33_5
-; SI-NEXT:  .LBB33_3:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    s_branch .LBB33_2
-; SI-NEXT:  .LBB33_4:
+; SI-NEXT:    s_branch .LBB33_6
+; SI-NEXT:  .LBB33_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s16
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v2, s18
 ; SI-NEXT:    v_mov_b32_e32 v4, s10
 ; SI-NEXT:    v_mov_b32_e32 v3, s4
 ; SI-NEXT:    v_mov_b32_e32 v5, s6
-; SI-NEXT:  .LBB33_5: ; %end
+; SI-NEXT:  .LBB33_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v1
@@ -6356,17 +6712,23 @@ define inreg <6 x i16> @bitcast_v3f32_to_v6i16_scalar(<3 x float> inreg %a, i32
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB33_3
+; VI-NEXT:    s_cbranch_scc0 .LBB33_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB33_4
-; VI-NEXT:  .LBB33_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB33_3
+; VI-NEXT:  .LBB33_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB33_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB33_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; VI-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; VI-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB33_3:
-; VI-NEXT:    s_branch .LBB33_2
-; VI-NEXT:  .LBB33_4:
+; VI-NEXT:  .LBB33_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -6377,17 +6739,23 @@ define inreg <6 x i16> @bitcast_v3f32_to_v6i16_scalar(<3 x float> inreg %a, i32
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB33_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB33_4
-; GFX9-NEXT:  .LBB33_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB33_3
+; GFX9-NEXT:  .LBB33_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB33_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_add_f32_e64 v2, s18, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v1, s17, 1.0
 ; GFX9-NEXT:    v_add_f32_e64 v0, s16, 1.0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB33_3:
-; GFX9-NEXT:    s_branch .LBB33_2
-; GFX9-NEXT:  .LBB33_4:
+; GFX9-NEXT:  .LBB33_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6399,17 +6767,20 @@ define inreg <6 x i16> @bitcast_v3f32_to_v6i16_scalar(<3 x float> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB33_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB33_4
-; GFX11-NEXT:  .LBB33_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB33_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB33_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_add_f32_e64 v2, s2, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v1, s1, 1.0
 ; GFX11-NEXT:    v_add_f32_e64 v0, s0, 1.0
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB33_3:
-; GFX11-NEXT:    s_branch .LBB33_2
 ; GFX11-NEXT:  .LBB33_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -6564,7 +6935,7 @@ define inreg <3 x float> @bitcast_v6i16_to_v3f32_scalar(<6 x i16> inreg %a, i32
 ; SI-NEXT:    s_lshr_b32 s10, s17, 16
 ; SI-NEXT:    s_lshr_b32 s11, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB35_4
+; SI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s11, 16
@@ -6575,8 +6946,17 @@ define inreg <3 x float> @bitcast_v6i16_to_v3f32_scalar(<6 x i16> inreg %a, i32
 ; SI-NEXT:    s_and_b32 s6, s18, 0xffff
 ; SI-NEXT:    s_lshl_b32 s8, s7, 16
 ; SI-NEXT:    s_or_b32 s6, s6, s8
-; SI-NEXT:    s_cbranch_execnz .LBB35_3
-; SI-NEXT:  .LBB35_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB35_3
+; SI-NEXT:  .LBB35_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6
+; SI-NEXT:  .LBB35_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB35_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s11, 16
@@ -6592,23 +6972,28 @@ define inreg <3 x float> @bitcast_v6i16_to_v3f32_scalar(<6 x i16> inreg %a, i32
 ; SI-NEXT:    s_add_i32 s4, s4, 0x30000
 ; SI-NEXT:    s_add_i32 s5, s5, 0x30000
 ; SI-NEXT:    s_add_i32 s6, s6, 0x30000
-; SI-NEXT:  .LBB35_3: ; %end
+; SI-NEXT:  .LBB35_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB35_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5_sgpr6
-; SI-NEXT:    s_branch .LBB35_2
 ;
 ; VI-LABEL: bitcast_v6i16_to_v3f32_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB35_4
+; VI-NEXT:    s_cbranch_scc0 .LBB35_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB35_3
-; VI-NEXT:  .LBB35_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB35_3
+; VI-NEXT:  .LBB35_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB35_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB35_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s18, 3
 ; VI-NEXT:    s_and_b32 s4, s18, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -6624,29 +7009,33 @@ define inreg <3 x float> @bitcast_v6i16_to_v3f32_scalar(<6 x i16> inreg %a, i32
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-NEXT:    s_or_b32 s4, s4, s5
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB35_3: ; %end
+; VI-NEXT:  .LBB35_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB35_4:
-; VI-NEXT:    s_branch .LBB35_2
 ;
 ; GFX9-LABEL: bitcast_v6i16_to_v3f32_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB35_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB35_4
-; GFX9-NEXT:  .LBB35_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB35_3
+; GFX9-NEXT:  .LBB35_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB35_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB35_3:
-; GFX9-NEXT:    s_branch .LBB35_2
-; GFX9-NEXT:  .LBB35_4:
+; GFX9-NEXT:  .LBB35_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -6657,17 +7046,20 @@ define inreg <3 x float> @bitcast_v6i16_to_v3f32_scalar(<6 x i16> inreg %a, i32
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s3, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB35_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-NEXT:    s_cbranch_vccnz .LBB35_4
-; GFX11-NEXT:  .LBB35_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s3, -1
+; GFX11-NEXT:  .LBB35_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB35_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB35_3:
-; GFX11-NEXT:    s_branch .LBB35_2
 ; GFX11-NEXT:  .LBB35_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_mov_b32_e32 v2, s2
@@ -7139,7 +7531,7 @@ define inreg <6 x bfloat> @bitcast_v12i8_to_v6bf16_scalar(<12 x i8> inreg %a, i3
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB37_4
+; SI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
@@ -7165,8 +7557,22 @@ define inreg <6 x bfloat> @bitcast_v12i8_to_v6bf16_scalar(<12 x i8> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s4, s4, 16
 ; SI-NEXT:    s_lshl_b32 s5, s27, 24
 ; SI-NEXT:    s_or_b32 s11, s5, s4
-; SI-NEXT:    s_cbranch_execnz .LBB37_3
-; SI-NEXT:  .LBB37_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB37_3
+; SI-NEXT:  .LBB37_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:  .LBB37_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB37_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s24, s24, 3
 ; SI-NEXT:    s_and_b32 s4, s24, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s25, 8
@@ -7212,7 +7618,7 @@ define inreg <6 x bfloat> @bitcast_v12i8_to_v6bf16_scalar(<12 x i8> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s7, s5, 16
 ; SI-NEXT:    s_and_b32 s11, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s9, s4, 16
-; SI-NEXT:  .LBB37_3: ; %end
+; SI-NEXT:  .LBB37_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s8
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s6
@@ -7226,20 +7632,12 @@ define inreg <6 x bfloat> @bitcast_v12i8_to_v6bf16_scalar(<12 x i8> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s9
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[2:3], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB37_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    s_branch .LBB37_2
 ;
 ; VI-LABEL: bitcast_v12i8_to_v6bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB37_4
+; VI-NEXT:    s_cbranch_scc0 .LBB37_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -7260,8 +7658,17 @@ define inreg <6 x bfloat> @bitcast_v12i8_to_v6bf16_scalar(<12 x i8> inreg %a, i3
 ; VI-NEXT:    v_perm_b32 v2, s26, v4, v2
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    s_cbranch_execnz .LBB37_3
-; VI-NEXT:  .LBB37_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB37_3
+; VI-NEXT:  .LBB37_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; VI-NEXT:  .LBB37_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB37_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
@@ -7293,17 +7700,14 @@ define inreg <6 x bfloat> @bitcast_v12i8_to_v6bf16_scalar(<12 x i8> inreg %a, i3
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
 ; VI-NEXT:    v_add_u32_e32 v2, vcc, 0x3000000, v2
-; VI-NEXT:  .LBB37_3: ; %end
+; VI-NEXT:  .LBB37_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB37_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; VI-NEXT:    s_branch .LBB37_2
 ;
 ; GFX9-LABEL: bitcast_v12i8_to_v6bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB37_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -7324,8 +7728,17 @@ define inreg <6 x bfloat> @bitcast_v12i8_to_v6bf16_scalar(<12 x i8> inreg %a, i3
 ; GFX9-NEXT:    v_perm_b32 v2, s26, v4, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; GFX9-NEXT:    v_or_b32_e32 v2, v3, v2
-; GFX9-NEXT:    s_cbranch_execnz .LBB37_3
-; GFX9-NEXT:  .LBB37_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB37_3
+; GFX9-NEXT:  .LBB37_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX9-NEXT:  .LBB37_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
@@ -7355,18 +7768,15 @@ define inreg <6 x bfloat> @bitcast_v12i8_to_v6bf16_scalar(<12 x i8> inreg %a, i3
 ; GFX9-NEXT:    v_add_u32_e32 v3, 0x300, v3
 ; GFX9-NEXT:    v_add_u32_sdwa v2, v2, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB37_3: ; %end
+; GFX9-NEXT:  .LBB37_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB37_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX9-NEXT:    s_branch .LBB37_2
 ;
 ; GFX11-LABEL: bitcast_v12i8_to_v6bf16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB37_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
@@ -7384,9 +7794,17 @@ define inreg <6 x bfloat> @bitcast_v12i8_to_v6bf16_scalar(<12 x i8> inreg %a, i3
 ; GFX11-NEXT:    v_or_b32_e32 v1, v5, v2
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3)
 ; GFX11-NEXT:    v_or_b32_e32 v2, v6, v3
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB37_3
-; GFX11-NEXT:  .LBB37_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB37_3
+; GFX11-NEXT:  .LBB37_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX11-NEXT:  .LBB37_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -7416,11 +7834,8 @@ define inreg <6 x bfloat> @bitcast_v12i8_to_v6bf16_scalar(<12 x i8> inreg %a, i3
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_or_b32_e32 v1, v3, v4
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v6
-; GFX11-NEXT:  .LBB37_3: ; %end
+; GFX11-NEXT:  .LBB37_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB37_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX11-NEXT:    s_branch .LBB37_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -7978,7 +8393,7 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v5, 1.0, s7
 ; SI-NEXT:    v_mul_f32_e64 v19, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v9, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB39_4
+; SI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v21
 ; SI-NEXT:    v_lshr_b64 v[16:17], v[0:1], 16
@@ -7991,18 +8406,35 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_lshrrev_b32_e32 v11, 24, v19
 ; SI-NEXT:    v_lshrrev_b32_e32 v8, 8, v17
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 8, v13
+; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    v_lshr_b64 v[14:15], v[16:17], 16
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[16:17], 8
-; SI-NEXT:    s_cbranch_execnz .LBB39_3
-; SI-NEXT:  .LBB39_2: ; %cmp.true
-; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v21
-; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v0
-; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
-; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
-; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
-; SI-NEXT:    v_lshr_b64 v[16:17], v[0:1], 16
-; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v5
-; SI-NEXT:    v_add_f32_e32 v5, 0x40c00000, v0
+; SI-NEXT:    s_branch .LBB39_3
+; SI-NEXT:  .LBB39_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr16
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:    ; implicit-def: $vgpr14
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:    ; implicit-def: $vgpr8
+; SI-NEXT:    ; implicit-def: $vgpr7
+; SI-NEXT:    ; implicit-def: $vgpr13
+; SI-NEXT:    ; implicit-def: $vgpr12
+; SI-NEXT:    ; implicit-def: $vgpr11
+; SI-NEXT:  .LBB39_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB39_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
+; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v21
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v0
+; SI-NEXT:    v_add_f32_e32 v1, 0x40c00000, v1
+; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
+; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
+; SI-NEXT:    v_lshr_b64 v[16:17], v[0:1], 16
+; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v5
+; SI-NEXT:    v_add_f32_e32 v5, 0x40c00000, v0
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v20
 ; SI-NEXT:    v_add_f32_e32 v0, 0x40c00000, v0
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v9
@@ -8020,7 +8452,7 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_lshrrev_b32_e32 v12, 8, v13
 ; SI-NEXT:    v_lshrrev_b32_e32 v7, 24, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v11, 24, v5
-; SI-NEXT:  .LBB39_3: ; %end
+; SI-NEXT:  .LBB39_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, v16
 ; SI-NEXT:    v_mov_b32_e32 v2, v14
 ; SI-NEXT:    v_mov_b32_e32 v4, v17
@@ -8028,23 +8460,12 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_mov_b32_e32 v8, v13
 ; SI-NEXT:    v_mov_b32_e32 v9, v12
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB39_4:
-; SI-NEXT:    ; implicit-def: $vgpr16
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    ; implicit-def: $vgpr14
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    ; implicit-def: $vgpr8
-; SI-NEXT:    ; implicit-def: $vgpr7
-; SI-NEXT:    ; implicit-def: $vgpr13
-; SI-NEXT:    ; implicit-def: $vgpr12
-; SI-NEXT:    ; implicit-def: $vgpr11
-; SI-NEXT:    s_branch .LBB39_2
 ;
 ; VI-LABEL: bitcast_v6bf16_to_v12i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB39_3
+; VI-NEXT:    s_cbranch_scc0 .LBB39_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s19, s18, 16
 ; VI-NEXT:    s_lshr_b32 s15, s18, 8
@@ -8055,8 +8476,25 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; VI-NEXT:    s_lshr_b32 s13, s16, 8
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB39_4
-; VI-NEXT:  .LBB39_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[8:9], 0
+; VI-NEXT:    s_branch .LBB39_3
+; VI-NEXT:  .LBB39_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr19
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:  .LBB39_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB39_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v3, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v3
@@ -8123,19 +8561,8 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; VI-NEXT:    v_lshrrev_b32_e32 v5, 8, v4
 ; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; VI-NEXT:    v_lshrrev_b32_e32 v1, 8, v0
-; VI-NEXT:    s_branch .LBB39_5
-; VI-NEXT:  .LBB39_3:
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr19
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    s_branch .LBB39_2
-; VI-NEXT:  .LBB39_4:
+; VI-NEXT:    s_branch .LBB39_6
+; VI-NEXT:  .LBB39_5:
 ; VI-NEXT:    v_mov_b32_e32 v8, s18
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v4, s17
@@ -8148,7 +8575,7 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; VI-NEXT:    v_mov_b32_e32 v5, s10
 ; VI-NEXT:    v_mov_b32_e32 v11, s6
 ; VI-NEXT:    v_mov_b32_e32 v14, s4
-; VI-NEXT:  .LBB39_5: ; %end
+; VI-NEXT:  .LBB39_6: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v3, v14
 ; VI-NEXT:    v_mov_b32_e32 v9, v13
 ; VI-NEXT:    s_setpc_b64 s[30:31]
@@ -8157,7 +8584,7 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s19, s18, 16
 ; GFX9-NEXT:    s_lshr_b32 s12, s18, 8
@@ -8168,8 +8595,25 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; GFX9-NEXT:    s_lshr_b32 s13, s16, 8
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB39_4
-; GFX9-NEXT:  .LBB39_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[8:9], 0
+; GFX9-NEXT:    s_branch .LBB39_3
+; GFX9-NEXT:  .LBB39_2:
+; GFX9-NEXT:    s_mov_b64 s[8:9], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr19
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:  .LBB39_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v0, s4, v1
@@ -8240,18 +8684,7 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v14
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v13
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB39_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr19
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    s_branch .LBB39_2
-; GFX9-NEXT:  .LBB39_4:
+; GFX9-NEXT:  .LBB39_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s18
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s19
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
@@ -8271,7 +8704,7 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s14, s2, 16
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s10, s2, 8
@@ -8282,9 +8715,25 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s11, s0, 8
 ; GFX11-TRUE16-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-TRUE16-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-TRUE16-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_branch .LBB39_3
+; GFX11-TRUE16-NEXT:  .LBB39_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-TRUE16-NEXT:  .LBB39_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s3, 0, s1
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s1, s1, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s3
@@ -8363,18 +8812,7 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v9, 8, v11
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b64 v[11:12], 24, v[11:12]
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB39_3:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr4
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-TRUE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-TRUE16-NEXT:    s_branch .LBB39_2
-; GFX11-TRUE16-NEXT:  .LBB39_4:
+; GFX11-TRUE16-NEXT:  .LBB39_5:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v8, s2 :: v_dual_mov_b32 v9, s10
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v10, s14 :: v_dual_mov_b32 v1, s11
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v7, s8
@@ -8388,7 +8826,7 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB39_3
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s14, s2, 16
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s10, s2, 8
@@ -8399,9 +8837,25 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s11, s0, 8
 ; GFX11-FAKE16-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-FAKE16-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB39_4
-; GFX11-FAKE16-NEXT:  .LBB39_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_branch .LBB39_3
+; GFX11-FAKE16-NEXT:  .LBB39_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr4
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
+; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
+; GFX11-FAKE16-NEXT:  .LBB39_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s3, s3, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s3, 0, s1
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s1, s1, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s3
@@ -8479,18 +8933,7 @@ define inreg <12 x i8> @bitcast_v6bf16_to_v12i8_scalar(<6 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b64 v[11:12], 24, v[11:12]
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v13
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB39_3:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr11
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr13
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr4
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr9
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr12
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr8
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr10
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr14
-; GFX11-FAKE16-NEXT:    ; implicit-def: $sgpr6
-; GFX11-FAKE16-NEXT:    s_branch .LBB39_2
-; GFX11-FAKE16-NEXT:  .LBB39_4:
+; GFX11-FAKE16-NEXT:  .LBB39_5:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v8, s2 :: v_dual_mov_b32 v9, s10
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v10, s14 :: v_dual_mov_b32 v1, s11
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v7, s8
@@ -8963,7 +9406,7 @@ define inreg <6 x half> @bitcast_v12i8_to_v6f16_scalar(<12 x i8> inreg %a, i32 i
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB41_4
+; SI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -8995,9 +9438,22 @@ define inreg <6 x half> @bitcast_v12i8_to_v6f16_scalar(<12 x i8> inreg %a, i32 i
 ; SI-NEXT:    s_or_b32 s4, s4, s12
 ; SI-NEXT:    s_lshr_b32 s7, s9, 16
 ; SI-NEXT:    s_lshr_b32 s11, s8, 16
+; SI-NEXT:    s_mov_b64 s[8:9], 0
 ; SI-NEXT:    s_mov_b32 s5, s13
-; SI-NEXT:    s_cbranch_execnz .LBB41_3
-; SI-NEXT:  .LBB41_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB41_3
+; SI-NEXT:  .LBB41_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:  .LBB41_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB41_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -9040,7 +9496,7 @@ define inreg <6 x half> @bitcast_v12i8_to_v6f16_scalar(<12 x i8> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[4:5], 16
 ; SI-NEXT:    s_lshr_b32 s7, s5, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
-; SI-NEXT:  .LBB41_3: ; %end
+; SI-NEXT:  .LBB41_5: ; %end
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s6
@@ -9054,19 +9510,12 @@ define inreg <6 x half> @bitcast_v12i8_to_v6f16_scalar(<12 x i8> inreg %a, i32 i
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB41_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    s_branch .LBB41_2
 ;
 ; VI-LABEL: bitcast_v12i8_to_v6f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB41_4
+; VI-NEXT:    s_cbranch_scc0 .LBB41_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -9087,8 +9536,17 @@ define inreg <6 x half> @bitcast_v12i8_to_v6f16_scalar(<12 x i8> inreg %a, i32 i
 ; VI-NEXT:    v_perm_b32 v2, s26, v4, v2
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    s_cbranch_execnz .LBB41_3
-; VI-NEXT:  .LBB41_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB41_3
+; VI-NEXT:  .LBB41_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; VI-NEXT:  .LBB41_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB41_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
@@ -9120,17 +9578,14 @@ define inreg <6 x half> @bitcast_v12i8_to_v6f16_scalar(<12 x i8> inreg %a, i32 i
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
 ; VI-NEXT:    v_add_u32_e32 v2, vcc, 0x3000000, v2
-; VI-NEXT:  .LBB41_3: ; %end
+; VI-NEXT:  .LBB41_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB41_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; VI-NEXT:    s_branch .LBB41_2
 ;
 ; GFX9-LABEL: bitcast_v12i8_to_v6f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -9151,8 +9606,17 @@ define inreg <6 x half> @bitcast_v12i8_to_v6f16_scalar(<12 x i8> inreg %a, i32 i
 ; GFX9-NEXT:    v_perm_b32 v2, s26, v4, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; GFX9-NEXT:    v_or_b32_e32 v2, v3, v2
-; GFX9-NEXT:    s_cbranch_execnz .LBB41_3
-; GFX9-NEXT:  .LBB41_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB41_3
+; GFX9-NEXT:  .LBB41_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX9-NEXT:  .LBB41_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
@@ -9182,18 +9646,15 @@ define inreg <6 x half> @bitcast_v12i8_to_v6f16_scalar(<12 x i8> inreg %a, i32 i
 ; GFX9-NEXT:    v_add_u32_e32 v3, 0x300, v3
 ; GFX9-NEXT:    v_add_u32_sdwa v2, v2, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB41_3: ; %end
+; GFX9-NEXT:  .LBB41_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB41_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX9-NEXT:    s_branch .LBB41_2
 ;
 ; GFX11-LABEL: bitcast_v12i8_to_v6f16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB41_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
@@ -9211,9 +9672,17 @@ define inreg <6 x half> @bitcast_v12i8_to_v6f16_scalar(<12 x i8> inreg %a, i32 i
 ; GFX11-NEXT:    v_or_b32_e32 v1, v5, v2
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3)
 ; GFX11-NEXT:    v_or_b32_e32 v2, v6, v3
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB41_3
-; GFX11-NEXT:  .LBB41_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB41_3
+; GFX11-NEXT:  .LBB41_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX11-NEXT:  .LBB41_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -9243,11 +9712,8 @@ define inreg <6 x half> @bitcast_v12i8_to_v6f16_scalar(<12 x i8> inreg %a, i32 i
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_or_b32_e32 v1, v3, v4
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v6
-; GFX11-NEXT:  .LBB41_3: ; %end
+; GFX11-NEXT:  .LBB41_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB41_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX11-NEXT:    s_branch .LBB41_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -9590,7 +10056,7 @@ define inreg <12 x i8> @bitcast_v6f16_to_v12i8_scalar(<6 x half> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b32 s15, s17, 16
 ; SI-NEXT:    s_lshr_b32 s20, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB43_3
+; SI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s20, 16
@@ -9608,8 +10074,25 @@ define inreg <12 x i8> @bitcast_v6f16_to_v12i8_scalar(<6 x half> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b32 s9, s11, 8
 ; SI-NEXT:    s_bfe_u32 s19, s15, 0x80008
 ; SI-NEXT:    s_bfe_u32 s21, s14, 0x80008
-; SI-NEXT:    s_cbranch_execnz .LBB43_4
-; SI-NEXT:  .LBB43_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB43_3
+; SI-NEXT:  .LBB43_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr19
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr21
+; SI-NEXT:  .LBB43_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB43_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s20
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s15
@@ -9641,19 +10124,8 @@ define inreg <12 x i8> @bitcast_v6f16_to_v12i8_scalar(<6 x half> inreg %a, i32 i
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 8, v8
 ; SI-NEXT:    v_bfe_u32 v7, v6, 8, 8
 ; SI-NEXT:    v_bfe_u32 v11, v10, 8, 8
-; SI-NEXT:    s_branch .LBB43_5
-; SI-NEXT:  .LBB43_3:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr19
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr21
-; SI-NEXT:    s_branch .LBB43_2
-; SI-NEXT:  .LBB43_4:
+; SI-NEXT:    s_branch .LBB43_6
+; SI-NEXT:  .LBB43_5:
 ; SI-NEXT:    v_mov_b32_e32 v10, s14
 ; SI-NEXT:    v_mov_b32_e32 v6, s15
 ; SI-NEXT:    v_mov_b32_e32 v11, s21
@@ -9666,7 +10138,7 @@ define inreg <12 x i8> @bitcast_v6f16_to_v12i8_scalar(<6 x half> inreg %a, i32 i
 ; SI-NEXT:    v_mov_b32_e32 v3, s6
 ; SI-NEXT:    v_mov_b32_e32 v4, s8
 ; SI-NEXT:    v_mov_b32_e32 v1, s10
-; SI-NEXT:  .LBB43_5: ; %end
+; SI-NEXT:  .LBB43_6: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, v12
 ; SI-NEXT:    v_mov_b32_e32 v2, v4
 ; SI-NEXT:    v_mov_b32_e32 v4, v13
@@ -9676,7 +10148,7 @@ define inreg <12 x i8> @bitcast_v6f16_to_v12i8_scalar(<6 x half> inreg %a, i32 i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB43_3
+; VI-NEXT:    s_cbranch_scc0 .LBB43_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s19, s16, 16
 ; VI-NEXT:    s_lshr_b32 s14, s18, 16
@@ -9687,8 +10159,25 @@ define inreg <12 x i8> @bitcast_v6f16_to_v12i8_scalar(<6 x half> inreg %a, i32 i
 ; VI-NEXT:    s_lshr_b32 s12, s16, 8
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB43_4
-; VI-NEXT:  .LBB43_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[8:9], 0
+; VI-NEXT:    s_branch .LBB43_3
+; VI-NEXT:  .LBB43_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr19
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:  .LBB43_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB43_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, 0x200
 ; VI-NEXT:    v_add_f16_e32 v6, s4, v1
@@ -9714,18 +10203,7 @@ define inreg <12 x i8> @bitcast_v6f16_to_v12i8_scalar(<6 x half> inreg %a, i32 i
 ; VI-NEXT:    v_bfe_u32 v7, v6, 8, 8
 ; VI-NEXT:    v_mov_b32_e32 v4, v13
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB43_3:
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr19
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    s_branch .LBB43_2
-; VI-NEXT:  .LBB43_4:
+; VI-NEXT:  .LBB43_5:
 ; VI-NEXT:    v_mov_b32_e32 v2, s19
 ; VI-NEXT:    v_mov_b32_e32 v6, s15
 ; VI-NEXT:    v_mov_b32_e32 v10, s14
@@ -9744,7 +10222,7 @@ define inreg <12 x i8> @bitcast_v6f16_to_v12i8_scalar(<6 x half> inreg %a, i32 i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s19, s16, 8
 ; GFX9-NEXT:    s_lshr_b32 s10, s18, 16
@@ -9755,8 +10233,25 @@ define inreg <12 x i8> @bitcast_v6f16_to_v12i8_scalar(<6 x half> inreg %a, i32 i
 ; GFX9-NEXT:    s_lshr_b32 s14, s16, 16
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB43_4
-; GFX9-NEXT:  .LBB43_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[8:9], 0
+; GFX9-NEXT:    s_branch .LBB43_3
+; GFX9-NEXT:  .LBB43_2:
+; GFX9-NEXT:    s_mov_b64 s[8:9], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr19
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:  .LBB43_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v15, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v14, s16, v0 op_sel_hi:[1,0]
@@ -9771,19 +10266,8 @@ define inreg <12 x i8> @bitcast_v6f16_to_v12i8_scalar(<6 x half> inreg %a, i32 i
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v15
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v14
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v14
-; GFX9-NEXT:    s_branch .LBB43_5
-; GFX9-NEXT:  .LBB43_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr19
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    s_branch .LBB43_2
-; GFX9-NEXT:  .LBB43_4:
+; GFX9-NEXT:    s_branch .LBB43_6
+; GFX9-NEXT:  .LBB43_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v15, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s18
@@ -9796,7 +10280,7 @@ define inreg <12 x i8> @bitcast_v6f16_to_v12i8_scalar(<6 x half> inreg %a, i32 i
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s10
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:  .LBB43_5: ; %end
+; GFX9-NEXT:  .LBB43_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, v14
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v15
 ; GFX9-NEXT:    v_mov_b32_e32 v9, v13
@@ -9806,10 +10290,10 @@ define inreg <12 x i8> @bitcast_v6f16_to_v12i8_scalar(<6 x half> inreg %a, i32 i
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
-; GFX11-NEXT:    s_mov_b32 s3, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB43_3
+; GFX11-NEXT:    s_mov_b32 s8, 0
+; GFX11-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-NEXT:    s_lshr_b32 s8, s2, 16
+; GFX11-NEXT:    s_lshr_b32 s3, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s9, s2, 8
 ; GFX11-NEXT:    s_lshr_b32 s10, s1, 24
 ; GFX11-NEXT:    s_lshr_b32 s11, s1, 16
@@ -9818,9 +10302,25 @@ define inreg <12 x i8> @bitcast_v6f16_to_v12i8_scalar(<6 x half> inreg %a, i32 i
 ; GFX11-NEXT:    s_lshr_b32 s14, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-NEXT:    s_cbranch_vccnz .LBB43_4
-; GFX11-NEXT:  .LBB43_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB43_3
+; GFX11-NEXT:  .LBB43_2:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr3
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:  .LBB43_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v15, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v14, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v8, 0x200, s2 op_sel_hi:[0,1]
@@ -9836,27 +10336,16 @@ define inreg <12 x i8> @bitcast_v6f16_to_v12i8_scalar(<6 x half> inreg %a, i32 i
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v15
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v14
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v14
-; GFX11-NEXT:    s_branch .LBB43_5
-; GFX11-NEXT:  .LBB43_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    s_branch .LBB43_2
-; GFX11-NEXT:  .LBB43_4:
+; GFX11-NEXT:    s_branch .LBB43_6
+; GFX11-NEXT:  .LBB43_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v14, s0 :: v_dual_mov_b32 v15, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s2 :: v_dual_mov_b32 v1, s14
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s12 :: v_dual_mov_b32 v5, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s11 :: v_dual_mov_b32 v7, s10
-; GFX11-NEXT:    v_dual_mov_b32 v13, s9 :: v_dual_mov_b32 v10, s8
+; GFX11-NEXT:    v_dual_mov_b32 v13, s9 :: v_dual_mov_b32 v10, s3
 ; GFX11-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX11-NEXT:    v_mov_b32_e32 v3, s4
-; GFX11-NEXT:  .LBB43_5: ; %end
+; GFX11-NEXT:  .LBB43_6: ; %end
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3)
 ; GFX11-NEXT:    v_dual_mov_b32 v0, v14 :: v_dual_mov_b32 v9, v13
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v15
@@ -10326,7 +10815,7 @@ define inreg <6 x i16> @bitcast_v12i8_to_v6i16_scalar(<12 x i8> inreg %a, i32 in
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s28, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB45_4
+; SI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -10358,9 +10847,22 @@ define inreg <6 x i16> @bitcast_v12i8_to_v6i16_scalar(<12 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_or_b32 s4, s4, s12
 ; SI-NEXT:    s_lshr_b32 s7, s9, 16
 ; SI-NEXT:    s_lshr_b32 s11, s8, 16
+; SI-NEXT:    s_mov_b64 s[8:9], 0
 ; SI-NEXT:    s_mov_b32 s5, s13
-; SI-NEXT:    s_cbranch_execnz .LBB45_3
-; SI-NEXT:  .LBB45_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB45_3
+; SI-NEXT:  .LBB45_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:  .LBB45_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB45_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xff
 ; SI-NEXT:    s_lshl_b32 s5, s17, 8
@@ -10403,7 +10905,7 @@ define inreg <6 x i16> @bitcast_v12i8_to_v6i16_scalar(<12 x i8> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[4:5], 16
 ; SI-NEXT:    s_lshr_b32 s7, s5, 16
 ; SI-NEXT:    s_lshr_b32 s11, s10, 16
-; SI-NEXT:  .LBB45_3: ; %end
+; SI-NEXT:  .LBB45_5: ; %end
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s6
@@ -10417,19 +10919,12 @@ define inreg <6 x i16> @bitcast_v12i8_to_v6i16_scalar(<12 x i8> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB45_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    s_branch .LBB45_2
 ;
 ; VI-LABEL: bitcast_v12i8_to_v6i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s28, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB45_4
+; VI-NEXT:    s_cbranch_scc0 .LBB45_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
@@ -10450,8 +10945,17 @@ define inreg <6 x i16> @bitcast_v12i8_to_v6i16_scalar(<12 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_perm_b32 v2, s26, v4, v2
 ; VI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; VI-NEXT:    v_or_b32_e32 v2, v3, v2
-; VI-NEXT:    s_cbranch_execnz .LBB45_3
-; VI-NEXT:  .LBB45_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB45_3
+; VI-NEXT:  .LBB45_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; VI-NEXT:  .LBB45_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB45_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s16, s16, 3
 ; VI-NEXT:    v_mov_b32_e32 v0, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
@@ -10483,17 +10987,14 @@ define inreg <6 x i16> @bitcast_v12i8_to_v6i16_scalar(<12 x i8> inreg %a, i32 in
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0x3000000, v0
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, 0x3000000, v1
 ; VI-NEXT:    v_add_u32_e32 v2, vcc, 0x3000000, v2
-; VI-NEXT:  .LBB45_3: ; %end
+; VI-NEXT:  .LBB45_5: ; %end
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB45_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; VI-NEXT:    s_branch .LBB45_2
 ;
 ; GFX9-LABEL: bitcast_v12i8_to_v6i16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s28, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s19
@@ -10514,8 +11015,17 @@ define inreg <6 x i16> @bitcast_v12i8_to_v6i16_scalar(<12 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_perm_b32 v2, s26, v4, v2
 ; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; GFX9-NEXT:    v_or_b32_e32 v2, v3, v2
-; GFX9-NEXT:    s_cbranch_execnz .LBB45_3
-; GFX9-NEXT:  .LBB45_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB45_3
+; GFX9-NEXT:  .LBB45_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX9-NEXT:  .LBB45_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_add_i32 s16, s16, 3
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0xc0c0004
@@ -10545,18 +11055,15 @@ define inreg <6 x i16> @bitcast_v12i8_to_v6i16_scalar(<12 x i8> inreg %a, i32 in
 ; GFX9-NEXT:    v_add_u32_e32 v3, 0x300, v3
 ; GFX9-NEXT:    v_add_u32_sdwa v2, v2, s4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX9-NEXT:    v_or_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; GFX9-NEXT:  .LBB45_3: ; %end
+; GFX9-NEXT:  .LBB45_5: ; %end
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB45_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX9-NEXT:    s_branch .LBB45_2
 ;
 ; GFX11-LABEL: bitcast_v12i8_to_v6i16_scalar:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s24, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB45_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
@@ -10574,9 +11081,17 @@ define inreg <6 x i16> @bitcast_v12i8_to_v6i16_scalar(<12 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    v_or_b32_e32 v1, v5, v2
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3)
 ; GFX11-NEXT:    v_or_b32_e32 v2, v6, v3
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB45_3
-; GFX11-NEXT:  .LBB45_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB45_3
+; GFX11-NEXT:  .LBB45_2:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
+; GFX11-NEXT:  .LBB45_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xc0c0004
 ; GFX11-NEXT:    s_add_i32 s0, s0, 3
 ; GFX11-NEXT:    s_add_i32 s2, s2, 3
@@ -10606,11 +11121,8 @@ define inreg <6 x i16> @bitcast_v12i8_to_v6i16_scalar(<12 x i8> inreg %a, i32 in
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)
 ; GFX11-NEXT:    v_or_b32_e32 v1, v3, v4
 ; GFX11-NEXT:    v_or_b32_e32 v2, v5, v6
-; GFX11-NEXT:  .LBB45_3: ; %end
+; GFX11-NEXT:  .LBB45_5: ; %end
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB45_4:
-; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX11-NEXT:    s_branch .LBB45_2
   %cmp = icmp eq i32 %b, 0
   br i1 %cmp, label %cmp.true, label %cmp.false
 
@@ -10946,7 +11458,7 @@ define inreg <12 x i8> @bitcast_v6i16_to_v12i8_scalar(<6 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b32 s15, s17, 16
 ; SI-NEXT:    s_lshr_b32 s20, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB47_4
+; SI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s20, 16
@@ -10964,8 +11476,25 @@ define inreg <12 x i8> @bitcast_v6i16_to_v12i8_scalar(<6 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b32 s21, s19, 8
 ; SI-NEXT:    s_bfe_u32 s9, s15, 0x80008
 ; SI-NEXT:    s_bfe_u32 s11, s14, 0x80008
-; SI-NEXT:    s_cbranch_execnz .LBB47_3
-; SI-NEXT:  .LBB47_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB47_3
+; SI-NEXT:  .LBB47_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr19
+; SI-NEXT:    ; implicit-def: $sgpr21
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:  .LBB47_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB47_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s20, 16
@@ -10990,7 +11519,7 @@ define inreg <12 x i8> @bitcast_v6i16_to_v12i8_scalar(<6 x i16> inreg %a, i32 in
 ; SI-NEXT:    s_lshr_b32 s11, s19, 24
 ; SI-NEXT:    s_lshr_b32 s14, s19, 16
 ; SI-NEXT:    s_lshr_b32 s21, s19, 8
-; SI-NEXT:  .LBB47_3: ; %end
+; SI-NEXT:  .LBB47_5: ; %end
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s10
 ; SI-NEXT:    v_mov_b32_e32 v2, s8
@@ -11004,23 +11533,12 @@ define inreg <12 x i8> @bitcast_v6i16_to_v12i8_scalar(<6 x i16> inreg %a, i32 in
 ; SI-NEXT:    v_mov_b32_e32 v10, s14
 ; SI-NEXT:    v_mov_b32_e32 v11, s11
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB47_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr19
-; SI-NEXT:    ; implicit-def: $sgpr21
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    s_branch .LBB47_2
 ;
 ; VI-LABEL: bitcast_v6i16_to_v12i8_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB47_4
+; VI-NEXT:    s_cbranch_scc0 .LBB47_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
 ; VI-NEXT:    s_lshr_b32 s19, s16, 8
 ; VI-NEXT:    s_lshr_b32 s10, s18, 16
@@ -11031,8 +11549,25 @@ define inreg <12 x i8> @bitcast_v6i16_to_v12i8_scalar(<6 x i16> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s15, s16, 16
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; VI-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; VI-NEXT:    s_cbranch_execnz .LBB47_3
-; VI-NEXT:  .LBB47_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[8:9], 0
+; VI-NEXT:    s_branch .LBB47_3
+; VI-NEXT:  .LBB47_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
+; VI-NEXT:    ; implicit-def: $sgpr19
+; VI-NEXT:    ; implicit-def: $sgpr15
+; VI-NEXT:    ; implicit-def: $sgpr4
+; VI-NEXT:    ; implicit-def: $sgpr14
+; VI-NEXT:    ; implicit-def: $sgpr13
+; VI-NEXT:    ; implicit-def: $sgpr12
+; VI-NEXT:    ; implicit-def: $sgpr11
+; VI-NEXT:    ; implicit-def: $sgpr10
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:  .LBB47_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s5, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB47_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s17, 3
 ; VI-NEXT:    s_and_b32 s4, s17, 0xffff0000
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffff
@@ -11057,7 +11592,7 @@ define inreg <12 x i8> @bitcast_v6i16_to_v12i8_scalar(<6 x i16> inreg %a, i32 in
 ; VI-NEXT:    s_lshr_b32 s14, s17, 8
 ; VI-NEXT:    s_lshr_b32 s15, s16, 16
 ; VI-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
-; VI-NEXT:  .LBB47_3: ; %end
+; VI-NEXT:  .LBB47_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s19
 ; VI-NEXT:    v_mov_b32_e32 v2, s15
@@ -11071,23 +11606,12 @@ define inreg <12 x i8> @bitcast_v6i16_to_v12i8_scalar(<6 x i16> inreg %a, i32 in
 ; VI-NEXT:    v_mov_b32_e32 v10, s10
 ; VI-NEXT:    v_mov_b32_e32 v11, s6
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB47_4:
-; VI-NEXT:    ; implicit-def: $sgpr19
-; VI-NEXT:    ; implicit-def: $sgpr15
-; VI-NEXT:    ; implicit-def: $sgpr4
-; VI-NEXT:    ; implicit-def: $sgpr14
-; VI-NEXT:    ; implicit-def: $sgpr13
-; VI-NEXT:    ; implicit-def: $sgpr12
-; VI-NEXT:    ; implicit-def: $sgpr11
-; VI-NEXT:    ; implicit-def: $sgpr10
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    s_branch .LBB47_2
 ;
 ; GFX9-LABEL: bitcast_v6i16_to_v12i8_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
 ; GFX9-NEXT:    s_lshr_b32 s19, s16, 8
 ; GFX9-NEXT:    s_lshr_b32 s10, s18, 16
@@ -11098,8 +11622,25 @@ define inreg <12 x i8> @bitcast_v6i16_to_v12i8_scalar(<6 x i16> inreg %a, i32 in
 ; GFX9-NEXT:    s_lshr_b32 s14, s16, 16
 ; GFX9-NEXT:    s_lshr_b64 s[6:7], s[18:19], 24
 ; GFX9-NEXT:    s_lshr_b64 s[4:5], s[16:17], 24
-; GFX9-NEXT:    s_cbranch_execnz .LBB47_4
-; GFX9-NEXT:  .LBB47_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[8:9], 0
+; GFX9-NEXT:    s_branch .LBB47_3
+; GFX9-NEXT:  .LBB47_2:
+; GFX9-NEXT:    s_mov_b64 s[8:9], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr19
+; GFX9-NEXT:    ; implicit-def: $sgpr14
+; GFX9-NEXT:    ; implicit-def: $sgpr4
+; GFX9-NEXT:    ; implicit-def: $sgpr15
+; GFX9-NEXT:    ; implicit-def: $sgpr13
+; GFX9-NEXT:    ; implicit-def: $sgpr12
+; GFX9-NEXT:    ; implicit-def: $sgpr11
+; GFX9-NEXT:    ; implicit-def: $sgpr10
+; GFX9-NEXT:    ; implicit-def: $sgpr6
+; GFX9-NEXT:  .LBB47_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v8, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v14, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v13, s16, 3 op_sel_hi:[1,0]
@@ -11112,19 +11653,8 @@ define inreg <12 x i8> @bitcast_v6i16_to_v12i8_scalar(<6 x i16> inreg %a, i32 in
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 8, v14
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 16, v13
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 8, v13
-; GFX9-NEXT:    s_branch .LBB47_5
-; GFX9-NEXT:  .LBB47_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr19
-; GFX9-NEXT:    ; implicit-def: $sgpr14
-; GFX9-NEXT:    ; implicit-def: $sgpr4
-; GFX9-NEXT:    ; implicit-def: $sgpr15
-; GFX9-NEXT:    ; implicit-def: $sgpr13
-; GFX9-NEXT:    ; implicit-def: $sgpr12
-; GFX9-NEXT:    ; implicit-def: $sgpr11
-; GFX9-NEXT:    ; implicit-def: $sgpr10
-; GFX9-NEXT:    ; implicit-def: $sgpr6
-; GFX9-NEXT:    s_branch .LBB47_2
-; GFX9-NEXT:  .LBB47_4:
+; GFX9-NEXT:    s_branch .LBB47_6
+; GFX9-NEXT:  .LBB47_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v13, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v14, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v8, s18
@@ -11137,7 +11667,7 @@ define inreg <12 x i8> @bitcast_v6i16_to_v12i8_scalar(<6 x i16> inreg %a, i32 in
 ; GFX9-NEXT:    v_mov_b32_e32 v10, s10
 ; GFX9-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX9-NEXT:    v_mov_b32_e32 v3, s4
-; GFX9-NEXT:  .LBB47_5: ; %end
+; GFX9-NEXT:  .LBB47_6: ; %end
 ; GFX9-NEXT:    v_mov_b32_e32 v0, v13
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v14
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
@@ -11146,10 +11676,10 @@ define inreg <12 x i8> @bitcast_v6i16_to_v12i8_scalar(<6 x i16> inreg %a, i32 in
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
-; GFX11-NEXT:    s_mov_b32 s3, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB47_3
+; GFX11-NEXT:    s_mov_b32 s8, 0
+; GFX11-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX11-NEXT:  ; %bb.1: ; %cmp.false
-; GFX11-NEXT:    s_lshr_b32 s8, s2, 16
+; GFX11-NEXT:    s_lshr_b32 s3, s2, 16
 ; GFX11-NEXT:    s_lshr_b32 s9, s2, 8
 ; GFX11-NEXT:    s_lshr_b32 s10, s1, 24
 ; GFX11-NEXT:    s_lshr_b32 s11, s1, 16
@@ -11158,9 +11688,25 @@ define inreg <12 x i8> @bitcast_v6i16_to_v12i8_scalar(<6 x i16> inreg %a, i32 in
 ; GFX11-NEXT:    s_lshr_b32 s14, s0, 8
 ; GFX11-NEXT:    s_lshr_b64 s[6:7], s[2:3], 24
 ; GFX11-NEXT:    s_lshr_b64 s[4:5], s[0:1], 24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s3
-; GFX11-NEXT:    s_cbranch_vccnz .LBB47_4
-; GFX11-NEXT:  .LBB47_2: ; %cmp.true
+; GFX11-NEXT:    s_branch .LBB47_3
+; GFX11-NEXT:  .LBB47_2:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr14
+; GFX11-NEXT:    ; implicit-def: $sgpr12
+; GFX11-NEXT:    ; implicit-def: $sgpr4
+; GFX11-NEXT:    ; implicit-def: $sgpr13
+; GFX11-NEXT:    ; implicit-def: $sgpr11
+; GFX11-NEXT:    ; implicit-def: $sgpr10
+; GFX11-NEXT:    ; implicit-def: $sgpr9
+; GFX11-NEXT:    ; implicit-def: $sgpr3
+; GFX11-NEXT:    ; implicit-def: $sgpr6
+; GFX11-NEXT:  .LBB47_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s5, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX11-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v8, s2, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v14, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v13, s0, 3 op_sel_hi:[1,0]
@@ -11174,27 +11720,16 @@ define inreg <12 x i8> @bitcast_v6i16_to_v12i8_scalar(<6 x i16> inreg %a, i32 in
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 8, v14
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v13
 ; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 8, v13
-; GFX11-NEXT:    s_branch .LBB47_5
-; GFX11-NEXT:  .LBB47_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr14
-; GFX11-NEXT:    ; implicit-def: $sgpr12
-; GFX11-NEXT:    ; implicit-def: $sgpr4
-; GFX11-NEXT:    ; implicit-def: $sgpr13
-; GFX11-NEXT:    ; implicit-def: $sgpr11
-; GFX11-NEXT:    ; implicit-def: $sgpr10
-; GFX11-NEXT:    ; implicit-def: $sgpr9
-; GFX11-NEXT:    ; implicit-def: $sgpr8
-; GFX11-NEXT:    ; implicit-def: $sgpr6
-; GFX11-NEXT:    s_branch .LBB47_2
-; GFX11-NEXT:  .LBB47_4:
+; GFX11-NEXT:    s_branch .LBB47_6
+; GFX11-NEXT:  .LBB47_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v13, s0 :: v_dual_mov_b32 v14, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s2 :: v_dual_mov_b32 v1, s14
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s12 :: v_dual_mov_b32 v5, s13
 ; GFX11-NEXT:    v_dual_mov_b32 v6, s11 :: v_dual_mov_b32 v7, s10
-; GFX11-NEXT:    v_dual_mov_b32 v9, s9 :: v_dual_mov_b32 v10, s8
+; GFX11-NEXT:    v_dual_mov_b32 v9, s9 :: v_dual_mov_b32 v10, s3
 ; GFX11-NEXT:    v_mov_b32_e32 v11, s6
 ; GFX11-NEXT:    v_mov_b32_e32 v3, s4
-; GFX11-NEXT:  .LBB47_5: ; %end
+; GFX11-NEXT:  .LBB47_6: ; %end
 ; GFX11-NEXT:    v_mov_b32_e32 v0, v13
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v14
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
@@ -11594,7 +12129,7 @@ define inreg <6 x half> @bitcast_v6bf16_to_v6f16_scalar(<6 x bfloat> inreg %a, i
 ; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s9
 ; SI-NEXT:    v_mul_f32_e64 v15, 1.0, s4
 ; SI-NEXT:    v_mul_f32_e64 v3, 1.0, s5
-; SI-NEXT:    s_cbranch_scc0 .LBB49_4
+; SI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v14
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[5:6], 16
@@ -11604,8 +12139,20 @@ define inreg <6 x half> @bitcast_v6bf16_to_v6f16_scalar(<6 x bfloat> inreg %a, i
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v15
 ; SI-NEXT:    v_lshr_b64 v[12:13], v[0:1], 16
 ; SI-NEXT:    v_lshr_b64 v[8:9], v[3:4], 16
-; SI-NEXT:    s_cbranch_execnz .LBB49_3
-; SI-NEXT:  .LBB49_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB49_3
+; SI-NEXT:  .LBB49_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr7
+; SI-NEXT:    ; implicit-def: $vgpr12
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:    ; implicit-def: $vgpr8
+; SI-NEXT:  .LBB49_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB49_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v16
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v10
 ; SI-NEXT:    v_add_f32_e32 v10, 0x40c00000, v1
@@ -11626,7 +12173,7 @@ define inreg <6 x half> @bitcast_v6bf16_to_v6f16_scalar(<6 x bfloat> inreg %a, i
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v10
 ; SI-NEXT:    v_lshr_b64 v[8:9], v[3:4], 16
 ; SI-NEXT:    v_lshr_b64 v[12:13], v[0:1], 16
-; SI-NEXT:  .LBB49_3: ; %end
+; SI-NEXT:  .LBB49_5: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v7
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v12
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
@@ -11637,21 +12184,23 @@ define inreg <6 x half> @bitcast_v6bf16_to_v6f16_scalar(<6 x bfloat> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB49_4:
-; SI-NEXT:    ; implicit-def: $vgpr7
-; SI-NEXT:    ; implicit-def: $vgpr12
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    ; implicit-def: $vgpr8
-; SI-NEXT:    s_branch .LBB49_2
 ;
 ; VI-LABEL: bitcast_v6bf16_to_v6f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB49_3
+; VI-NEXT:    s_cbranch_scc0 .LBB49_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB49_4
-; VI-NEXT:  .LBB49_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB49_3
+; VI-NEXT:  .LBB49_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB49_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB49_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v3, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v3
@@ -11709,9 +12258,7 @@ define inreg <6 x half> @bitcast_v6bf16_to_v6f16_scalar(<6 x bfloat> inreg %a, i
 ; VI-NEXT:    v_lshrrev_b64 v[0:1], 16, v[0:1]
 ; VI-NEXT:    v_mov_b32_e32 v1, v3
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB49_3:
-; VI-NEXT:    s_branch .LBB49_2
-; VI-NEXT:  .LBB49_4:
+; VI-NEXT:  .LBB49_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -11722,10 +12269,18 @@ define inreg <6 x half> @bitcast_v6bf16_to_v6f16_scalar(<6 x bfloat> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB49_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB49_4
-; GFX9-NEXT:  .LBB49_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB49_3
+; GFX9-NEXT:  .LBB49_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB49_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -11786,9 +12341,7 @@ define inreg <6 x half> @bitcast_v6bf16_to_v6f16_scalar(<6 x bfloat> inreg %a, i
 ; GFX9-NEXT:    v_and_b32_sdwa v0, v6, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
 ; GFX9-NEXT:    v_lshl_or_b32 v0, v3, 16, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB49_3:
-; GFX9-NEXT:    s_branch .LBB49_2
-; GFX9-NEXT:  .LBB49_4:
+; GFX9-NEXT:  .LBB49_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -11800,11 +12353,16 @@ define inreg <6 x half> @bitcast_v6bf16_to_v6f16_scalar(<6 x bfloat> inreg %a, i
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB49_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-TRUE16-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB49_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-TRUE16-NEXT:  .LBB49_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB49_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s3, 0, s0
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s3
@@ -11868,8 +12426,6 @@ define inreg <6 x half> @bitcast_v6bf16_to_v6f16_scalar(<6 x bfloat> inreg %a, i
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v5
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v6.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB49_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB49_2
 ; GFX11-TRUE16-NEXT:  .LBB49_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -11880,11 +12436,16 @@ define inreg <6 x half> @bitcast_v6bf16_to_v6f16_scalar(<6 x bfloat> inreg %a, i
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB49_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB49_4
-; GFX11-FAKE16-NEXT:  .LBB49_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB49_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-FAKE16-NEXT:  .LBB49_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB49_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s3, 0, s0
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s3
@@ -11952,8 +12513,6 @@ define inreg <6 x half> @bitcast_v6bf16_to_v6f16_scalar(<6 x bfloat> inreg %a, i
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v4
 ; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v2, v4, 16, v5
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB49_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB49_2
 ; GFX11-FAKE16-NEXT:  .LBB49_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -12127,7 +12686,7 @@ define inreg <6 x bfloat> @bitcast_v6f16_to_v6bf16_scalar(<6 x half> inreg %a, i
 ; SI-NEXT:    s_lshr_b32 s7, s17, 16
 ; SI-NEXT:    s_lshr_b32 s6, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB51_3
+; SI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s9, s16, 16
 ; SI-NEXT:    s_lshl_b32 s10, s6, 16
@@ -12135,8 +12694,22 @@ define inreg <6 x bfloat> @bitcast_v6f16_to_v6bf16_scalar(<6 x half> inreg %a, i
 ; SI-NEXT:    s_lshl_b32 s12, s7, 16
 ; SI-NEXT:    s_lshl_b32 s13, s18, 16
 ; SI-NEXT:    s_lshl_b32 s14, s8, 16
-; SI-NEXT:    s_cbranch_execnz .LBB51_4
-; SI-NEXT:  .LBB51_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB51_3
+; SI-NEXT:  .LBB51_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:    ; implicit-def: $sgpr13
+; SI-NEXT:    ; implicit-def: $sgpr14
+; SI-NEXT:  .LBB51_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB51_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s8
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s18
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s6
@@ -12161,23 +12734,15 @@ define inreg <6 x bfloat> @bitcast_v6f16_to_v6bf16_scalar(<6 x half> inreg %a, i
 ; SI-NEXT:    v_lshlrev_b32_e32 v5, 16, v7
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
-; SI-NEXT:    s_branch .LBB51_5
-; SI-NEXT:  .LBB51_3:
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    ; implicit-def: $sgpr13
-; SI-NEXT:    ; implicit-def: $sgpr14
-; SI-NEXT:    s_branch .LBB51_2
-; SI-NEXT:  .LBB51_4:
+; SI-NEXT:    s_branch .LBB51_6
+; SI-NEXT:  .LBB51_5:
 ; SI-NEXT:    v_mov_b32_e32 v4, s14
 ; SI-NEXT:    v_mov_b32_e32 v3, s13
 ; SI-NEXT:    v_mov_b32_e32 v5, s12
 ; SI-NEXT:    v_mov_b32_e32 v2, s11
 ; SI-NEXT:    v_mov_b32_e32 v1, s10
 ; SI-NEXT:    v_mov_b32_e32 v0, s9
-; SI-NEXT:  .LBB51_5: ; %end
+; SI-NEXT:  .LBB51_6: ; %end
 ; SI-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
 ; SI-NEXT:    v_mul_f32_e32 v0, 1.0, v0
@@ -12196,10 +12761,18 @@ define inreg <6 x bfloat> @bitcast_v6f16_to_v6bf16_scalar(<6 x half> inreg %a, i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB51_3
+; VI-NEXT:    s_cbranch_scc0 .LBB51_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB51_4
-; VI-NEXT:  .LBB51_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB51_3
+; VI-NEXT:  .LBB51_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB51_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB51_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
@@ -12217,9 +12790,7 @@ define inreg <6 x bfloat> @bitcast_v6f16_to_v6bf16_scalar(<6 x half> inreg %a, i
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v5
 ; VI-NEXT:    v_or_b32_e32 v0, v3, v4
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB51_3:
-; VI-NEXT:    s_branch .LBB51_2
-; VI-NEXT:  .LBB51_4:
+; VI-NEXT:  .LBB51_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -12230,18 +12801,24 @@ define inreg <6 x bfloat> @bitcast_v6f16_to_v6bf16_scalar(<6 x half> inreg %a, i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB51_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB51_4
-; GFX9-NEXT:  .LBB51_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB51_3
+; GFX9-NEXT:  .LBB51_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB51_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB51_3:
-; GFX9-NEXT:    s_branch .LBB51_2
-; GFX9-NEXT:  .LBB51_4:
+; GFX9-NEXT:  .LBB51_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -12253,17 +12830,20 @@ define inreg <6 x bfloat> @bitcast_v6f16_to_v6bf16_scalar(<6 x half> inreg %a, i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB51_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB51_4
-; GFX11-NEXT:  .LBB51_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB51_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB51_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB51_3:
-; GFX11-NEXT:    s_branch .LBB51_2
 ; GFX11-NEXT:  .LBB51_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -12657,7 +13237,7 @@ define inreg <6 x i16> @bitcast_v6bf16_to_v6i16_scalar(<6 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s6
 ; SI-NEXT:    v_mul_f32_e64 v10, 1.0, s5
 ; SI-NEXT:    v_mul_f32_e64 v7, 1.0, s4
-; SI-NEXT:    s_cbranch_scc0 .LBB53_4
+; SI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v11
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v4
@@ -12665,8 +13245,22 @@ define inreg <6 x i16> @bitcast_v6bf16_to_v6i16_scalar(<6 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v10
 ; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v7
-; SI-NEXT:    s_cbranch_execnz .LBB53_3
-; SI-NEXT:  .LBB53_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB53_3
+; SI-NEXT:  .LBB53_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:    ; implicit-def: $vgpr9
+; SI-NEXT:    ; implicit-def: $vgpr1
+; SI-NEXT:    ; implicit-def: $vgpr8
+; SI-NEXT:    ; implicit-def: $vgpr6
+; SI-NEXT:    ; implicit-def: $vgpr5
+; SI-NEXT:  .LBB53_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB53_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v11
 ; SI-NEXT:    v_add_f32_e32 v3, 0x40c00000, v1
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff0000, v4
@@ -12687,7 +13281,7 @@ define inreg <6 x i16> @bitcast_v6bf16_to_v6i16_scalar(<6 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_lshr_b64 v[1:2], v[7:8], 16
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff0000, v9
 ; SI-NEXT:    v_lshr_b64 v[9:10], v[0:1], 16
-; SI-NEXT:  .LBB53_3: ; %end
+; SI-NEXT:  .LBB53_5: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v9
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
@@ -12698,23 +13292,23 @@ define inreg <6 x i16> @bitcast_v6bf16_to_v6i16_scalar(<6 x bfloat> inreg %a, i3
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB53_4:
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    ; implicit-def: $vgpr9
-; SI-NEXT:    ; implicit-def: $vgpr1
-; SI-NEXT:    ; implicit-def: $vgpr8
-; SI-NEXT:    ; implicit-def: $vgpr6
-; SI-NEXT:    ; implicit-def: $vgpr5
-; SI-NEXT:    s_branch .LBB53_2
 ;
 ; VI-LABEL: bitcast_v6bf16_to_v6i16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB53_3
+; VI-NEXT:    s_cbranch_scc0 .LBB53_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB53_4
-; VI-NEXT:  .LBB53_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB53_3
+; VI-NEXT:  .LBB53_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB53_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB53_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshl_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v3, 0x40c00000
 ; VI-NEXT:    v_add_f32_e32 v0, s4, v3
@@ -12772,9 +13366,7 @@ define inreg <6 x i16> @bitcast_v6bf16_to_v6i16_scalar(<6 x bfloat> inreg %a, i3
 ; VI-NEXT:    v_lshrrev_b64 v[0:1], 16, v[0:1]
 ; VI-NEXT:    v_mov_b32_e32 v1, v3
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB53_3:
-; VI-NEXT:    s_branch .LBB53_2
-; VI-NEXT:  .LBB53_4:
+; VI-NEXT:  .LBB53_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -12785,10 +13377,18 @@ define inreg <6 x i16> @bitcast_v6bf16_to_v6i16_scalar(<6 x bfloat> inreg %a, i3
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB53_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB53_4
-; GFX9-NEXT:  .LBB53_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB53_3
+; GFX9-NEXT:  .LBB53_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB53_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    s_pack_lh_b32_b16 s4, 0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40c00000
 ; GFX9-NEXT:    v_add_f32_e32 v1, s4, v0
@@ -12846,9 +13446,7 @@ define inreg <6 x i16> @bitcast_v6bf16_to_v6i16_scalar(<6 x bfloat> inreg %a, i3
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v0, 16, v4
 ; GFX9-NEXT:    v_and_or_b32 v0, v3, v6, v0
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB53_3:
-; GFX9-NEXT:    s_branch .LBB53_2
-; GFX9-NEXT:  .LBB53_4:
+; GFX9-NEXT:  .LBB53_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -12860,11 +13458,16 @@ define inreg <6 x i16> @bitcast_v6bf16_to_v6i16_scalar(<6 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB53_3
-; GFX11-TRUE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-TRUE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB53_2
+; GFX11-TRUE16-NEXT:  ; %bb.1:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-TRUE16-NEXT:  .LBB53_2: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB53_4
+; GFX11-TRUE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-TRUE16-NEXT:    s_pack_lh_b32_b16 s3, 0, s0
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-TRUE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s3
@@ -12919,8 +13522,6 @@ define inreg <6 x i16> @bitcast_v6bf16_to_v6i16_scalar(<6 x bfloat> inreg %a, i3
 ; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v7, v11, vcc_lo
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v6.h
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB53_3:
-; GFX11-TRUE16-NEXT:    s_branch .LBB53_2
 ; GFX11-TRUE16-NEXT:  .LBB53_4:
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -12931,11 +13532,16 @@ define inreg <6 x i16> @bitcast_v6bf16_to_v6i16_scalar(<6 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB53_3
-; GFX11-FAKE16-NEXT:  ; %bb.1: ; %Flow
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB53_4
-; GFX11-FAKE16-NEXT:  .LBB53_2: ; %cmp.true
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB53_2
+; GFX11-FAKE16-NEXT:  ; %bb.1:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, -1
+; GFX11-FAKE16-NEXT:  .LBB53_2: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB53_4
+; GFX11-FAKE16-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-FAKE16-NEXT:    s_pack_lh_b32_b16 s3, 0, s0
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s0, s0, 16
 ; GFX11-FAKE16-NEXT:    v_add_f32_e64 v0, 0x40c00000, s3
@@ -12994,8 +13600,6 @@ define inreg <6 x i16> @bitcast_v6bf16_to_v6i16_scalar(<6 x bfloat> inreg %a, i3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
 ; GFX11-FAKE16-NEXT:    v_and_or_b32 v0, 0xffff0000, v0, v7
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB53_3:
-; GFX11-FAKE16-NEXT:    s_branch .LBB53_2
 ; GFX11-FAKE16-NEXT:  .LBB53_4:
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -13156,7 +13760,7 @@ define inreg <6 x bfloat> @bitcast_v6i16_to_v6bf16_scalar(<6 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshr_b32 s13, s17, 16
 ; SI-NEXT:    s_lshr_b32 s12, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB55_4
+; SI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_lshl_b32 s8, s16, 16
 ; SI-NEXT:    s_lshl_b32 s11, s12, 16
@@ -13164,8 +13768,22 @@ define inreg <6 x bfloat> @bitcast_v6i16_to_v6bf16_scalar(<6 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s10, s13, 16
 ; SI-NEXT:    s_lshl_b32 s6, s18, 16
 ; SI-NEXT:    s_lshl_b32 s9, s14, 16
-; SI-NEXT:    s_cbranch_execnz .LBB55_3
-; SI-NEXT:  .LBB55_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB55_3
+; SI-NEXT:  .LBB55_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $sgpr8
+; SI-NEXT:    ; implicit-def: $sgpr11
+; SI-NEXT:    ; implicit-def: $sgpr7
+; SI-NEXT:    ; implicit-def: $sgpr10
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr9
+; SI-NEXT:  .LBB55_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB55_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s18, s18, 3
 ; SI-NEXT:    s_and_b32 s4, s18, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s14, 16
@@ -13187,7 +13805,7 @@ define inreg <6 x bfloat> @bitcast_v6i16_to_v6bf16_scalar(<6 x i16> inreg %a, i3
 ; SI-NEXT:    s_lshl_b32 s7, s5, 16
 ; SI-NEXT:    s_and_b32 s9, s4, 0xffff0000
 ; SI-NEXT:    s_lshl_b32 s6, s4, 16
-; SI-NEXT:  .LBB55_3: ; %end
+; SI-NEXT:  .LBB55_5: ; %end
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s11
 ; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
 ; SI-NEXT:    v_mul_f32_e64 v0, 1.0, s8
@@ -13201,23 +13819,23 @@ define inreg <6 x bfloat> @bitcast_v6i16_to_v6bf16_scalar(<6 x i16> inreg %a, i3
 ; SI-NEXT:    v_mul_f32_e64 v2, 1.0, s6
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[2:3], 16
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB55_4:
-; SI-NEXT:    ; implicit-def: $sgpr8
-; SI-NEXT:    ; implicit-def: $sgpr11
-; SI-NEXT:    ; implicit-def: $sgpr7
-; SI-NEXT:    ; implicit-def: $sgpr10
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr9
-; SI-NEXT:    s_branch .LBB55_2
 ;
 ; VI-LABEL: bitcast_v6i16_to_v6bf16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB55_4
+; VI-NEXT:    s_cbranch_scc0 .LBB55_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB55_3
-; VI-NEXT:  .LBB55_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB55_3
+; VI-NEXT:  .LBB55_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB55_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB55_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_add_i32 s7, s17, 3
 ; VI-NEXT:    s_add_i32 s9, s18, 3
@@ -13233,29 +13851,33 @@ define inreg <6 x bfloat> @bitcast_v6i16_to_v6bf16_scalar(<6 x i16> inreg %a, i3
 ; VI-NEXT:    s_add_i32 s18, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB55_3: ; %end
+; VI-NEXT:  .LBB55_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB55_4:
-; VI-NEXT:    s_branch .LBB55_2
 ;
 ; GFX9-LABEL: bitcast_v6i16_to_v6bf16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB55_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB55_4
-; GFX9-NEXT:  .LBB55_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB55_3
+; GFX9-NEXT:  .LBB55_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB55_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB55_3:
-; GFX9-NEXT:    s_branch .LBB55_2
-; GFX9-NEXT:  .LBB55_4:
+; GFX9-NEXT:  .LBB55_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -13267,17 +13889,20 @@ define inreg <6 x bfloat> @bitcast_v6i16_to_v6bf16_scalar(<6 x i16> inreg %a, i3
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB55_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB55_4
-; GFX11-NEXT:  .LBB55_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB55_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB55_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB55_3:
-; GFX11-NEXT:    s_branch .LBB55_2
 ; GFX11-NEXT:  .LBB55_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -13429,10 +14054,18 @@ define inreg <6 x i16> @bitcast_v6f16_to_v6i16_scalar(<6 x half> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b32 s6, s17, 16
 ; SI-NEXT:    s_lshr_b32 s8, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB57_3
+; SI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
-; SI-NEXT:    s_cbranch_execnz .LBB57_4
-; SI-NEXT:  .LBB57_2: ; %cmp.true
+; SI-NEXT:    s_mov_b64 s[4:5], 0
+; SI-NEXT:    s_branch .LBB57_3
+; SI-NEXT:  .LBB57_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:  .LBB57_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB57_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s8
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, s16
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, s7
@@ -13458,17 +14091,15 @@ define inreg <6 x i16> @bitcast_v6f16_to_v6i16_scalar(<6 x half> inreg %a, i32 i
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v2
 ; SI-NEXT:    v_lshr_b64 v[2:3], v[0:1], 16
 ; SI-NEXT:    v_or_b32_e32 v3, v8, v7
-; SI-NEXT:    s_branch .LBB57_5
-; SI-NEXT:  .LBB57_3:
-; SI-NEXT:    s_branch .LBB57_2
-; SI-NEXT:  .LBB57_4:
+; SI-NEXT:    s_branch .LBB57_6
+; SI-NEXT:  .LBB57_5:
 ; SI-NEXT:    v_mov_b32_e32 v4, s7
 ; SI-NEXT:    v_mov_b32_e32 v6, s6
 ; SI-NEXT:    v_mov_b32_e32 v1, s17
 ; SI-NEXT:    v_mov_b32_e32 v3, s18
 ; SI-NEXT:    v_mov_b32_e32 v5, s16
 ; SI-NEXT:    v_mov_b32_e32 v2, s8
-; SI-NEXT:  .LBB57_5: ; %end
+; SI-NEXT:  .LBB57_6: ; %end
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v0, v0, v2
@@ -13484,10 +14115,18 @@ define inreg <6 x i16> @bitcast_v6f16_to_v6i16_scalar(<6 x half> inreg %a, i32 i
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB57_3
+; VI-NEXT:    s_cbranch_scc0 .LBB57_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB57_4
-; VI-NEXT:  .LBB57_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB57_3
+; VI-NEXT:  .LBB57_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB57_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB57_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_lshr_b32 s4, s16, 16
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    s_lshr_b32 s4, s17, 16
@@ -13505,9 +14144,7 @@ define inreg <6 x i16> @bitcast_v6f16_to_v6i16_scalar(<6 x half> inreg %a, i32 i
 ; VI-NEXT:    v_or_b32_e32 v1, v1, v5
 ; VI-NEXT:    v_or_b32_e32 v0, v3, v4
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB57_3:
-; VI-NEXT:    s_branch .LBB57_2
-; VI-NEXT:  .LBB57_4:
+; VI-NEXT:  .LBB57_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
@@ -13518,18 +14155,24 @@ define inreg <6 x i16> @bitcast_v6f16_to_v6i16_scalar(<6 x half> inreg %a, i32 i
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB57_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB57_4
-; GFX9-NEXT:  .LBB57_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB57_3
+; GFX9-NEXT:  .LBB57_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB57_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x200
 ; GFX9-NEXT:    v_pk_add_f16 v2, s18, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v1, s17, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_f16 v0, s16, v0 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB57_3:
-; GFX9-NEXT:    s_branch .LBB57_2
-; GFX9-NEXT:  .LBB57_4:
+; GFX9-NEXT:  .LBB57_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -13541,17 +14184,20 @@ define inreg <6 x i16> @bitcast_v6f16_to_v6i16_scalar(<6 x half> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB57_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB57_4
-; GFX11-NEXT:  .LBB57_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB57_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB57_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_f16 v2, 0x200, s2 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v1, 0x200, s1 op_sel_hi:[0,1]
 ; GFX11-NEXT:    v_pk_add_f16 v0, 0x200, s0 op_sel_hi:[0,1]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB57_3:
-; GFX11-NEXT:    s_branch .LBB57_2
 ; GFX11-NEXT:  .LBB57_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
@@ -13714,7 +14360,7 @@ define inreg <6 x half> @bitcast_v6i16_to_v6f16_scalar(<6 x i16> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b32 s11, s17, 16
 ; SI-NEXT:    s_lshr_b32 s13, s16, 16
 ; SI-NEXT:    s_cmp_lg_u32 s19, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB59_4
+; SI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; SI-NEXT:  ; %bb.1: ; %cmp.false
 ; SI-NEXT:    s_and_b32 s5, s18, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s10, 16
@@ -13726,9 +14372,20 @@ define inreg <6 x half> @bitcast_v6i16_to_v6f16_scalar(<6 x i16> inreg %a, i32 i
 ; SI-NEXT:    s_or_b32 s15, s5, s6
 ; SI-NEXT:    s_or_b32 s4, s4, s14
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[14:15], 16
+; SI-NEXT:    s_mov_b64 s[8:9], 0
 ; SI-NEXT:    s_mov_b32 s5, s15
-; SI-NEXT:    s_cbranch_execnz .LBB59_3
-; SI-NEXT:  .LBB59_2: ; %cmp.true
+; SI-NEXT:    s_branch .LBB59_3
+; SI-NEXT:  .LBB59_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $sgpr4
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:    ; implicit-def: $sgpr12
+; SI-NEXT:  .LBB59_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s7, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB59_5
+; SI-NEXT:  ; %bb.4: ; %cmp.true
 ; SI-NEXT:    s_add_i32 s16, s16, 3
 ; SI-NEXT:    s_and_b32 s4, s16, 0xffff
 ; SI-NEXT:    s_lshl_b32 s5, s13, 16
@@ -13747,7 +14404,7 @@ define inreg <6 x half> @bitcast_v6i16_to_v6f16_scalar(<6 x i16> inreg %a, i32 i
 ; SI-NEXT:    s_lshr_b64 s[6:7], s[4:5], 16
 ; SI-NEXT:    s_lshr_b32 s11, s5, 16
 ; SI-NEXT:    s_lshr_b32 s10, s12, 16
-; SI-NEXT:  .LBB59_3: ; %end
+; SI-NEXT:  .LBB59_5: ; %end
 ; SI-NEXT:    s_and_b32 s4, s4, 0xffff
 ; SI-NEXT:    s_lshl_b32 s6, s6, 16
 ; SI-NEXT:    s_or_b32 s4, s4, s6
@@ -13761,20 +14418,23 @@ define inreg <6 x half> @bitcast_v6i16_to_v6f16_scalar(<6 x i16> inreg %a, i32 i
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    v_mov_b32_e32 v2, s6
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB59_4:
-; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    ; implicit-def: $sgpr12
-; SI-NEXT:    s_branch .LBB59_2
 ;
 ; VI-LABEL: bitcast_v6i16_to_v6f16_scalar:
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s19, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB59_4
+; VI-NEXT:    s_cbranch_scc0 .LBB59_2
 ; VI-NEXT:  ; %bb.1: ; %cmp.false
-; VI-NEXT:    s_cbranch_execnz .LBB59_3
-; VI-NEXT:  .LBB59_2: ; %cmp.true
+; VI-NEXT:    s_mov_b64 s[4:5], 0
+; VI-NEXT:    s_branch .LBB59_3
+; VI-NEXT:  .LBB59_2:
+; VI-NEXT:    s_mov_b64 s[4:5], -1
+; VI-NEXT:  .LBB59_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB59_5
+; VI-NEXT:  ; %bb.4: ; %cmp.true
 ; VI-NEXT:    s_add_i32 s5, s16, 3
 ; VI-NEXT:    s_add_i32 s7, s17, 3
 ; VI-NEXT:    s_add_i32 s9, s18, 3
@@ -13790,29 +14450,33 @@ define inreg <6 x half> @bitcast_v6i16_to_v6f16_scalar(<6 x i16> inreg %a, i32 i
 ; VI-NEXT:    s_add_i32 s18, s8, 0x30000
 ; VI-NEXT:    s_add_i32 s17, s6, 0x30000
 ; VI-NEXT:    s_add_i32 s16, s4, 0x30000
-; VI-NEXT:  .LBB59_3: ; %end
+; VI-NEXT:  .LBB59_5: ; %end
 ; VI-NEXT:    v_mov_b32_e32 v0, s16
 ; VI-NEXT:    v_mov_b32_e32 v1, s17
 ; VI-NEXT:    v_mov_b32_e32 v2, s18
 ; VI-NEXT:    s_setpc_b64 s[30:31]
-; VI-NEXT:  .LBB59_4:
-; VI-NEXT:    s_branch .LBB59_2
 ;
 ; GFX9-LABEL: bitcast_v6i16_to_v6f16_scalar:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s19, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB59_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX9-NEXT:  ; %bb.1: ; %cmp.false
-; GFX9-NEXT:    s_cbranch_execnz .LBB59_4
-; GFX9-NEXT:  .LBB59_2: ; %cmp.true
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB59_3
+; GFX9-NEXT:  .LBB59_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:  .LBB59_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX9-NEXT:  ; %bb.4: ; %cmp.true
 ; GFX9-NEXT:    v_pk_add_u16 v2, s18, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v1, s17, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    v_pk_add_u16 v0, s16, 3 op_sel_hi:[1,0]
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB59_3:
-; GFX9-NEXT:    s_branch .LBB59_2
-; GFX9-NEXT:  .LBB59_4:
+; GFX9-NEXT:  .LBB59_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s16
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s17
 ; GFX9-NEXT:    v_mov_b32_e32 v2, s18
@@ -13824,17 +14488,20 @@ define inreg <6 x half> @bitcast_v6i16_to_v6f16_scalar(<6 x i16> inreg %a, i32 i
 ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_mov_b32 s4, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB59_3
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX11-NEXT:    s_cbranch_vccnz .LBB59_4
-; GFX11-NEXT:  .LBB59_2: ; %cmp.true
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_2
+; GFX11-NEXT:  ; %bb.1:
+; GFX11-NEXT:    s_mov_b32 s4, -1
+; GFX11-NEXT:  .LBB59_2: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB59_4
+; GFX11-NEXT:  ; %bb.3: ; %cmp.true
 ; GFX11-NEXT:    v_pk_add_u16 v2, s2, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v1, s1, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    v_pk_add_u16 v0, s0, 3 op_sel_hi:[1,0]
 ; GFX11-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-NEXT:  .LBB59_3:
-; GFX11-NEXT:    s_branch .LBB59_2
 ; GFX11-NEXT:  .LBB59_4:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3

diff  --git a/llvm/test/CodeGen/AMDGPU/amdgpu-miscellaneous-uniform-intrinsic.ll b/llvm/test/CodeGen/AMDGPU/amdgpu-miscellaneous-uniform-intrinsic.ll
index 92198f2593f3a..d35b3da59d92f 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgpu-miscellaneous-uniform-intrinsic.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgpu-miscellaneous-uniform-intrinsic.ll
@@ -138,9 +138,12 @@ define protected amdgpu_kernel void @trivial_waterfall_eq_zero(ptr addrspace(1)
 ; CHECK-NEXT:    s_branch .LBB7_2
 ; CHECK-NEXT:  .LBB7_1: ; %Flow
 ; CHECK-NEXT:    ; in Loop: Header=BB7_2 Depth=1
-; CHECK-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
+; CHECK-NEXT:    s_and_b32 s2, s2, exec_lo
+; CHECK-NEXT:    s_cselect_b32 s2, 1, 0
+; CHECK-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; CHECK-NEXT:    s_cmp_lg_u32 s2, 1
 ; CHECK-NEXT:    s_mov_b32 s2, -1
-; CHECK-NEXT:    s_cbranch_vccz .LBB7_4
+; CHECK-NEXT:    s_cbranch_scc0 .LBB7_4
 ; CHECK-NEXT:  .LBB7_2: ; %while
 ; CHECK-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CHECK-NEXT:    s_and_b32 vcc_lo, exec_lo, s2

diff  --git a/llvm/test/CodeGen/AMDGPU/anyext.ll b/llvm/test/CodeGen/AMDGPU/anyext.ll
index 1492119a6022d..835bee67376f1 100644
--- a/llvm/test/CodeGen/AMDGPU/anyext.ll
+++ b/llvm/test/CodeGen/AMDGPU/anyext.ll
@@ -15,8 +15,8 @@ define amdgpu_kernel void @anyext_i1_i32(ptr addrspace(1) %out, i32 %cond) #0 {
 ; GCN-NEXT:    s_mov_b32 s2, -1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_cmp_lg_u32 s6, 0
-; GCN-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; GCN-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GCN-NEXT:    s_endpgm
 ;
@@ -28,8 +28,8 @@ define amdgpu_kernel void @anyext_i1_i32(ptr addrspace(1) %out, i32 %cond) #0 {
 ; GFX8-NEXT:    s_mov_b32 s2, -1
 ; GFX8-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX8-NEXT:    s_cmp_lg_u32 s6, 0
-; GFX8-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GFX8-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; GFX8-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX8-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX8-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GFX8-NEXT:    s_endpgm
 ;
@@ -41,8 +41,8 @@ define amdgpu_kernel void @anyext_i1_i32(ptr addrspace(1) %out, i32 %cond) #0 {
 ; GFX9-NEXT:    s_mov_b32 s2, -1
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s6, 0
-; GFX9-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX9-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GFX9-NEXT:    s_endpgm
 entry:
@@ -150,7 +150,9 @@ define amdgpu_kernel void @anyext_v2i16_to_v2i32() #0 {
 ; GCN-NEXT:    v_and_b32_e32 v0, 0x8001, v0
 ; GCN-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
 ; GCN-NEXT:    v_cmp_eq_f32_e32 vcc, 0, v0
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; GCN-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; GCN-NEXT:    s_endpgm
 ;
@@ -163,7 +165,9 @@ define amdgpu_kernel void @anyext_v2i16_to_v2i32() #0 {
 ; GFX8-NEXT:    s_waitcnt vmcnt(0)
 ; GFX8-NEXT:    v_and_b32_sdwa v0, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
 ; GFX8-NEXT:    v_cmp_eq_f32_e32 vcc, 0, v0
-; GFX8-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; GFX8-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GFX8-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX8-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX8-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; GFX8-NEXT:    s_endpgm
 ;
@@ -177,7 +181,9 @@ define amdgpu_kernel void @anyext_v2i16_to_v2i32() #0 {
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0x80018001, v0
 ; GFX9-NEXT:    v_bfi_b32 v0, v1, 0, v0
 ; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, 0, v0
-; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; GFX9-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX9-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; GFX9-NEXT:    s_endpgm
 bb:

diff  --git a/llvm/test/CodeGen/AMDGPU/atomic_optimizations_pixelshader.ll b/llvm/test/CodeGen/AMDGPU/atomic_optimizations_pixelshader.ll
index 15a43df327447..f0b994420a2ca 100644
--- a/llvm/test/CodeGen/AMDGPU/atomic_optimizations_pixelshader.ll
+++ b/llvm/test/CodeGen/AMDGPU/atomic_optimizations_pixelshader.ll
@@ -44,8 +44,10 @@ define amdgpu_ps void @add_i32_constant(ptr addrspace(8) inreg %out, ptr addrspa
 ; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]
 ; GFX7-NEXT:    s_wqm_b64 s[4:5], -1
 ; GFX7-NEXT:    s_and_b64 s[4:5], s[4:5], s[4:5]
-; GFX7-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GFX7-NEXT:    s_cbranch_vccnz .LBB0_6
+; GFX7-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX7-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX7-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX7-NEXT:    s_cbranch_scc1 .LBB0_6
 ; GFX7-NEXT:  ; %bb.5: ; %if
 ; GFX7-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GFX7-NEXT:  .LBB0_6: ; %UnifiedReturnBlock
@@ -79,8 +81,10 @@ define amdgpu_ps void @add_i32_constant(ptr addrspace(8) inreg %out, ptr addrspa
 ; GFX89-NEXT:    s_or_b64 exec, exec, s[8:9]
 ; GFX89-NEXT:    s_wqm_b64 s[4:5], -1
 ; GFX89-NEXT:    s_and_b64 s[4:5], s[4:5], s[4:5]
-; GFX89-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GFX89-NEXT:    s_cbranch_vccnz .LBB0_6
+; GFX89-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX89-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX89-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX89-NEXT:    s_cbranch_scc1 .LBB0_6
 ; GFX89-NEXT:  ; %bb.5: ; %if
 ; GFX89-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GFX89-NEXT:  .LBB0_6: ; %UnifiedReturnBlock
@@ -115,8 +119,10 @@ define amdgpu_ps void @add_i32_constant(ptr addrspace(8) inreg %out, ptr addrspa
 ; GFX1064-NEXT:    s_or_b64 exec, exec, s[8:9]
 ; GFX1064-NEXT:    s_wqm_b64 s[4:5], -1
 ; GFX1064-NEXT:    s_and_b64 s[4:5], s[4:5], s[4:5]
-; GFX1064-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GFX1064-NEXT:    s_cbranch_vccnz .LBB0_6
+; GFX1064-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX1064-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1064-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX1064-NEXT:    s_cbranch_scc1 .LBB0_6
 ; GFX1064-NEXT:  ; %bb.5: ; %if
 ; GFX1064-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GFX1064-NEXT:  .LBB0_6: ; %UnifiedReturnBlock
@@ -150,8 +156,10 @@ define amdgpu_ps void @add_i32_constant(ptr addrspace(8) inreg %out, ptr addrspa
 ; GFX1032-NEXT:    s_or_b32 exec_lo, exec_lo, s8
 ; GFX1032-NEXT:    s_wqm_b32 s4, -1
 ; GFX1032-NEXT:    s_and_b32 s4, s4, s4
-; GFX1032-NEXT:    s_andn2_b32 vcc_lo, exec_lo, s4
-; GFX1032-NEXT:    s_cbranch_vccnz .LBB0_6
+; GFX1032-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX1032-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1032-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX1032-NEXT:    s_cbranch_scc1 .LBB0_6
 ; GFX1032-NEXT:  ; %bb.5: ; %if
 ; GFX1032-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GFX1032-NEXT:  .LBB0_6: ; %UnifiedReturnBlock
@@ -190,8 +198,11 @@ define amdgpu_ps void @add_i32_constant(ptr addrspace(8) inreg %out, ptr addrspa
 ; GFX1164-NEXT:    s_wqm_b64 s[4:5], -1
 ; GFX1164-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1164-NEXT:    s_and_b64 s[4:5], s[4:5], s[4:5]
-; GFX1164-NEXT:    s_and_not1_b64 vcc, exec, s[4:5]
-; GFX1164-NEXT:    s_cbranch_vccnz .LBB0_6
+; GFX1164-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX1164-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1164-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1164-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX1164-NEXT:    s_cbranch_scc1 .LBB0_6
 ; GFX1164-NEXT:  ; %bb.5: ; %if
 ; GFX1164-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
 ; GFX1164-NEXT:  .LBB0_6: ; %UnifiedReturnBlock
@@ -229,8 +240,11 @@ define amdgpu_ps void @add_i32_constant(ptr addrspace(8) inreg %out, ptr addrspa
 ; GFX1132-NEXT:    s_wqm_b32 s4, -1
 ; GFX1132-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1132-NEXT:    s_and_b32 s4, s4, s4
-; GFX1132-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX1132-NEXT:    s_cbranch_vccnz .LBB0_6
+; GFX1132-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX1132-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1132-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1132-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX1132-NEXT:    s_cbranch_scc1 .LBB0_6
 ; GFX1132-NEXT:  ; %bb.5: ; %if
 ; GFX1132-NEXT:    buffer_store_b32 v0, off, s[0:3], 0
 ; GFX1132-NEXT:  .LBB0_6: ; %UnifiedReturnBlock
@@ -269,8 +283,11 @@ define amdgpu_ps void @add_i32_constant(ptr addrspace(8) inreg %out, ptr addrspa
 ; GFX1364-NEXT:    s_wqm_b64 s[4:5], -1
 ; GFX1364-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1364-NEXT:    s_and_b64 s[4:5], s[4:5], s[4:5]
-; GFX1364-NEXT:    s_and_not1_b64 vcc, exec, s[4:5]
-; GFX1364-NEXT:    s_cbranch_vccnz .LBB0_6
+; GFX1364-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX1364-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1364-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1364-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX1364-NEXT:    s_cbranch_scc1 .LBB0_6
 ; GFX1364-NEXT:  ; %bb.5: ; %if
 ; GFX1364-NEXT:    buffer_store_b32 v0, off, s[0:3], null
 ; GFX1364-NEXT:  .LBB0_6: ; %UnifiedReturnBlock
@@ -308,8 +325,11 @@ define amdgpu_ps void @add_i32_constant(ptr addrspace(8) inreg %out, ptr addrspa
 ; GFX1332-NEXT:    s_wqm_b32 s4, -1
 ; GFX1332-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1332-NEXT:    s_and_b32 s4, s4, s4
-; GFX1332-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX1332-NEXT:    s_cbranch_vccnz .LBB0_6
+; GFX1332-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX1332-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1332-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1332-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX1332-NEXT:    s_cbranch_scc1 .LBB0_6
 ; GFX1332-NEXT:  ; %bb.5: ; %if
 ; GFX1332-NEXT:    buffer_store_b32 v0, off, s[0:3], null
 ; GFX1332-NEXT:  .LBB0_6: ; %UnifiedReturnBlock
@@ -333,8 +353,10 @@ define amdgpu_ps void @add_i32_varying(ptr addrspace(8) inreg %out, ptr addrspac
 ; GFX7:       ; %bb.0: ; %entry
 ; GFX7-NEXT:    buffer_atomic_add v0, off, s[4:7], 0 glc
 ; GFX7-NEXT:    s_wqm_b64 s[4:5], -1
-; GFX7-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GFX7-NEXT:    s_cbranch_vccnz .LBB1_2
+; GFX7-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX7-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX7-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX7-NEXT:    s_cbranch_scc1 .LBB1_2
 ; GFX7-NEXT:  ; %bb.1: ; %if
 ; GFX7-NEXT:    s_waitcnt vmcnt(0)
 ; GFX7-NEXT:    buffer_store_dword v0, off, s[0:3], 0
@@ -389,8 +411,10 @@ define amdgpu_ps void @add_i32_varying(ptr addrspace(8) inreg %out, ptr addrspac
 ; GFX8-NEXT:    s_or_b64 exec, exec, s[8:9]
 ; GFX8-NEXT:    s_wqm_b64 s[4:5], -1
 ; GFX8-NEXT:    s_and_b64 s[4:5], s[4:5], s[4:5]
-; GFX8-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GFX8-NEXT:    s_cbranch_vccnz .LBB1_6
+; GFX8-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX8-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX8-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX8-NEXT:    s_cbranch_scc1 .LBB1_6
 ; GFX8-NEXT:  ; %bb.5: ; %if
 ; GFX8-NEXT:    buffer_store_dword v3, off, s[0:3], 0
 ; GFX8-NEXT:  .LBB1_6: ; %UnifiedReturnBlock
@@ -444,8 +468,10 @@ define amdgpu_ps void @add_i32_varying(ptr addrspace(8) inreg %out, ptr addrspac
 ; GFX9-NEXT:    s_or_b64 exec, exec, s[8:9]
 ; GFX9-NEXT:    s_wqm_b64 s[4:5], -1
 ; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], s[4:5]
-; GFX9-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GFX9-NEXT:    s_cbranch_vccnz .LBB1_6
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_6
 ; GFX9-NEXT:  ; %bb.5: ; %if
 ; GFX9-NEXT:    buffer_store_dword v3, off, s[0:3], 0
 ; GFX9-NEXT:  .LBB1_6: ; %UnifiedReturnBlock
@@ -504,8 +530,10 @@ define amdgpu_ps void @add_i32_varying(ptr addrspace(8) inreg %out, ptr addrspac
 ; GFX1064-NEXT:    s_or_b64 exec, exec, s[8:9]
 ; GFX1064-NEXT:    s_wqm_b64 s[4:5], -1
 ; GFX1064-NEXT:    s_and_b64 s[4:5], s[4:5], s[4:5]
-; GFX1064-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GFX1064-NEXT:    s_cbranch_vccnz .LBB1_6
+; GFX1064-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX1064-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1064-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX1064-NEXT:    s_cbranch_scc1 .LBB1_6
 ; GFX1064-NEXT:  ; %bb.5: ; %if
 ; GFX1064-NEXT:    buffer_store_dword v4, off, s[0:3], 0
 ; GFX1064-NEXT:  .LBB1_6: ; %UnifiedReturnBlock
@@ -554,8 +582,10 @@ define amdgpu_ps void @add_i32_varying(ptr addrspace(8) inreg %out, ptr addrspac
 ; GFX1032-NEXT:    s_or_b32 exec_lo, exec_lo, s8
 ; GFX1032-NEXT:    s_wqm_b32 s4, -1
 ; GFX1032-NEXT:    s_and_b32 s4, s4, s4
-; GFX1032-NEXT:    s_andn2_b32 vcc_lo, exec_lo, s4
-; GFX1032-NEXT:    s_cbranch_vccnz .LBB1_6
+; GFX1032-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX1032-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1032-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX1032-NEXT:    s_cbranch_scc1 .LBB1_6
 ; GFX1032-NEXT:  ; %bb.5: ; %if
 ; GFX1032-NEXT:    buffer_store_dword v4, off, s[0:3], 0
 ; GFX1032-NEXT:  .LBB1_6: ; %UnifiedReturnBlock
@@ -625,8 +655,11 @@ define amdgpu_ps void @add_i32_varying(ptr addrspace(8) inreg %out, ptr addrspac
 ; GFX1164-NEXT:    s_wqm_b64 s[4:5], -1
 ; GFX1164-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1164-NEXT:    s_and_b64 s[4:5], s[4:5], s[4:5]
-; GFX1164-NEXT:    s_and_not1_b64 vcc, exec, s[4:5]
-; GFX1164-NEXT:    s_cbranch_vccnz .LBB1_6
+; GFX1164-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX1164-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1164-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1164-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX1164-NEXT:    s_cbranch_scc1 .LBB1_6
 ; GFX1164-NEXT:  ; %bb.5: ; %if
 ; GFX1164-NEXT:    buffer_store_b32 v4, off, s[0:3], 0
 ; GFX1164-NEXT:  .LBB1_6: ; %UnifiedReturnBlock
@@ -682,8 +715,11 @@ define amdgpu_ps void @add_i32_varying(ptr addrspace(8) inreg %out, ptr addrspac
 ; GFX1132-NEXT:    s_wqm_b32 s4, -1
 ; GFX1132-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1132-NEXT:    s_and_b32 s4, s4, s4
-; GFX1132-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX1132-NEXT:    s_cbranch_vccnz .LBB1_6
+; GFX1132-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX1132-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1132-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1132-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX1132-NEXT:    s_cbranch_scc1 .LBB1_6
 ; GFX1132-NEXT:  ; %bb.5: ; %if
 ; GFX1132-NEXT:    buffer_store_b32 v4, off, s[0:3], 0
 ; GFX1132-NEXT:  .LBB1_6: ; %UnifiedReturnBlock
@@ -752,8 +788,11 @@ define amdgpu_ps void @add_i32_varying(ptr addrspace(8) inreg %out, ptr addrspac
 ; GFX1364-NEXT:    s_wqm_b64 s[4:5], -1
 ; GFX1364-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1364-NEXT:    s_and_b64 s[4:5], s[4:5], s[4:5]
-; GFX1364-NEXT:    s_and_not1_b64 vcc, exec, s[4:5]
-; GFX1364-NEXT:    s_cbranch_vccnz .LBB1_6
+; GFX1364-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX1364-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1364-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1364-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX1364-NEXT:    s_cbranch_scc1 .LBB1_6
 ; GFX1364-NEXT:  ; %bb.5: ; %if
 ; GFX1364-NEXT:    buffer_store_b32 v4, off, s[0:3], null
 ; GFX1364-NEXT:  .LBB1_6: ; %UnifiedReturnBlock
@@ -808,8 +847,11 @@ define amdgpu_ps void @add_i32_varying(ptr addrspace(8) inreg %out, ptr addrspac
 ; GFX1332-NEXT:    s_wqm_b32 s4, -1
 ; GFX1332-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1332-NEXT:    s_and_b32 s4, s4, s4
-; GFX1332-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX1332-NEXT:    s_cbranch_vccnz .LBB1_6
+; GFX1332-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX1332-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1332-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1332-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX1332-NEXT:    s_cbranch_scc1 .LBB1_6
 ; GFX1332-NEXT:  ; %bb.5: ; %if
 ; GFX1332-NEXT:    buffer_store_b32 v4, off, s[0:3], null
 ; GFX1332-NEXT:  .LBB1_6: ; %UnifiedReturnBlock

diff  --git a/llvm/test/CodeGen/AMDGPU/av-split-dead-valno-crash.ll b/llvm/test/CodeGen/AMDGPU/av-split-dead-valno-crash.ll
index 8d2e1c8b89ffd..9c379996385ce 100644
--- a/llvm/test/CodeGen/AMDGPU/av-split-dead-valno-crash.ll
+++ b/llvm/test/CodeGen/AMDGPU/av-split-dead-valno-crash.ll
@@ -5,20 +5,17 @@ define amdgpu_kernel void @vgpr_mfma_pass_av_split_crash(double %arg1, i1 %arg2,
 ; CHECK-LABEL: vgpr_mfma_pass_av_split_crash:
 ; CHECK:       ; %bb.0: ; %entry
 ; CHECK-NEXT:    s_load_dword s0, s[4:5], 0x8
-; CHECK-NEXT:    s_load_dwordx2 s[10:11], s[4:5], 0x0
-; CHECK-NEXT:    s_load_dwordx4 s[12:15], s[4:5], 0x10
+; CHECK-NEXT:    s_load_dwordx2 s[12:13], s[4:5], 0x0
+; CHECK-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x10
 ; CHECK-NEXT:    v_mov_b32_e32 v30, 0x9037ab78
 ; CHECK-NEXT:    v_mov_b32_e32 v31, 0x3e21eeb6
 ; CHECK-NEXT:    s_waitcnt lgkmcnt(0)
 ; CHECK-NEXT:    s_bitcmp1_b32 s0, 0
-; CHECK-NEXT:    s_cselect_b64 s[16:17], -1, 0
-; CHECK-NEXT:    s_xor_b64 s[18:19], s[16:17], -1
+; CHECK-NEXT:    s_cselect_b64 s[14:15], -1, 0
+; CHECK-NEXT:    s_xor_b64 s[16:17], s[14:15], -1
 ; CHECK-NEXT:    s_bitcmp1_b32 s0, 8
-; CHECK-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[2:3]
-; CHECK-NEXT:    s_xor_b64 s[20:21], s[2:3], -1
-; CHECK-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; CHECK-NEXT:    s_and_b64 s[2:3], exec, s[2:3]
+; CHECK-NEXT:    s_cselect_b64 s[18:19], -1, 0
+; CHECK-NEXT:    s_xor_b64 s[20:21], s[18:19], -1
 ; CHECK-NEXT:    v_mov_b32_e32 v2, 0xa17f65f6
 ; CHECK-NEXT:    v_mov_b32_e32 v3, 0xbe927e4f
 ; CHECK-NEXT:    v_mov_b32_e32 v4, 0x19f4ec90
@@ -31,15 +28,16 @@ define amdgpu_kernel void @vgpr_mfma_pass_av_split_crash(double %arg1, i1 %arg2,
 ; CHECK-NEXT:    v_mov_b32_e32 v11, 0xbf8c6ea4
 ; CHECK-NEXT:    v_mov_b32_e32 v12, 0xe82d3ff0
 ; CHECK-NEXT:    v_mov_b32_e32 v13, 0xbfa59976
+; CHECK-NEXT:    s_mov_b64 s[22:23], 0
 ; CHECK-NEXT:    v_mov_b32_e32 v14, 0x8427b883
 ; CHECK-NEXT:    v_mov_b32_e32 v15, 0x3fae1bb4
-; CHECK-NEXT:    s_mov_b64 s[22:23], 0
+; CHECK-NEXT:    s_and_b64 s[0:1], exec, s[14:15]
 ; CHECK-NEXT:    v_mov_b32_e32 v16, 0x57b87036
 ; CHECK-NEXT:    v_mov_b32_e32 v17, 0x3fb3b136
-; CHECK-NEXT:    s_and_b64 s[4:5], exec, s[16:17]
+; CHECK-NEXT:    s_and_b64 s[2:3], exec, s[18:19]
 ; CHECK-NEXT:    v_mov_b32_e32 v18, 0x55555523
 ; CHECK-NEXT:    v_mov_b32_e32 v19, 0xbfd55555
-; CHECK-NEXT:    s_and_b64 s[6:7], exec, s[18:19]
+; CHECK-NEXT:    s_and_b64 s[4:5], exec, s[16:17]
 ; CHECK-NEXT:    v_mov_b32_e32 v0, 0
 ; CHECK-NEXT:    v_mov_b64_e32 v[20:21], 0
 ; CHECK-NEXT:    ; implicit-def: $agpr0_agpr1
@@ -47,20 +45,24 @@ define amdgpu_kernel void @vgpr_mfma_pass_av_split_crash(double %arg1, i1 %arg2,
 ; CHECK-NEXT:    s_branch .LBB0_2
 ; CHECK-NEXT:  .LBB0_1: ; %Flow9
 ; CHECK-NEXT:    ; in Loop: Header=BB0_2 Depth=1
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[24:25]
-; CHECK-NEXT:    s_cbranch_vccz .LBB0_17
+; CHECK-NEXT:    s_and_b64 s[6:7], s[24:25], exec
+; CHECK-NEXT:    s_cselect_b32 s6, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s6, 1
+; CHECK-NEXT:    s_cbranch_scc0 .LBB0_17
 ; CHECK-NEXT:  .LBB0_2: ; %._crit_edge1942.i.i.i3548
 ; CHECK-NEXT:    ; =>This Loop Header: Depth=1
 ; CHECK-NEXT:    ; Child Loop BB0_6 Depth 2
-; CHECK-NEXT:    s_and_b64 vcc, exec, s[0:1]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_9
+; CHECK-NEXT:    s_and_b64 s[6:7], exec, s[18:19]
+; CHECK-NEXT:    s_cselect_b32 s6, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s6, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_9
 ; CHECK-NEXT:  ; %bb.3: ; %.preheader1868.i.i.i3244
 ; CHECK-NEXT:    ; in Loop: Header=BB0_2 Depth=1
-; CHECK-NEXT:    s_mov_b64 vcc, s[4:5]
+; CHECK-NEXT:    s_mov_b64 vcc, s[0:1]
 ; CHECK-NEXT:    s_cbranch_vccz .LBB0_10
 ; CHECK-NEXT:  ; %bb.4: ; %.preheader1855.i.i.i3329.preheader
 ; CHECK-NEXT:    ; in Loop: Header=BB0_2 Depth=1
-; CHECK-NEXT:    v_mov_b64_e32 v[24:25], s[14:15]
+; CHECK-NEXT:    v_mov_b64_e32 v[24:25], s[10:11]
 ; CHECK-NEXT:    flat_load_dwordx2 v[24:25], v[24:25]
 ; CHECK-NEXT:    v_mov_b64_e32 v[26:27], v[30:31]
 ; CHECK-NEXT:    v_mov_b64_e32 v[28:29], v[2:3]
@@ -88,7 +90,7 @@ define amdgpu_kernel void @vgpr_mfma_pass_av_split_crash(double %arg1, i1 %arg2,
 ; CHECK-NEXT:    s_branch .LBB0_6
 ; CHECK-NEXT:  .LBB0_5: ; %Flow
 ; CHECK-NEXT:    ; in Loop: Header=BB0_6 Depth=2
-; CHECK-NEXT:    s_and_b64 vcc, exec, s[8:9]
+; CHECK-NEXT:    s_and_b64 vcc, exec, s[6:7]
 ; CHECK-NEXT:    s_cbranch_vccnz .LBB0_11
 ; CHECK-NEXT:  .LBB0_6: ; %.preheader1855.i.i.i3329
 ; CHECK-NEXT:    ; Parent Loop BB0_2 Depth=1
@@ -96,7 +98,7 @@ define amdgpu_kernel void @vgpr_mfma_pass_av_split_crash(double %arg1, i1 %arg2,
 ; CHECK-NEXT:    v_accvgpr_read_b32 v27, a3
 ; CHECK-NEXT:    v_accvgpr_read_b32 v26, a2
 ; CHECK-NEXT:    s_mov_b64 s[24:25], -1
-; CHECK-NEXT:    s_mov_b64 s[8:9], -1
+; CHECK-NEXT:    s_mov_b64 s[6:7], -1
 ; CHECK-NEXT:    s_mov_b64 vcc, s[2:3]
 ; CHECK-NEXT:    ; implicit-def: $agpr2_agpr3
 ; CHECK-NEXT:    s_cbranch_vccz .LBB0_5
@@ -104,25 +106,25 @@ define amdgpu_kernel void @vgpr_mfma_pass_av_split_crash(double %arg1, i1 %arg2,
 ; CHECK-NEXT:    ; in Loop: Header=BB0_6 Depth=2
 ; CHECK-NEXT:    v_accvgpr_mov_b32 a3, a1
 ; CHECK-NEXT:    v_accvgpr_mov_b32 a2, a0
-; CHECK-NEXT:    s_mov_b64 s[8:9], s[18:19]
-; CHECK-NEXT:    s_mov_b64 vcc, s[6:7]
+; CHECK-NEXT:    s_mov_b64 s[6:7], s[16:17]
+; CHECK-NEXT:    s_mov_b64 vcc, s[4:5]
 ; CHECK-NEXT:    s_cbranch_vccz .LBB0_5
 ; CHECK-NEXT:  ; %bb.8: ; %.preheader1856.preheader.i.i.i3325
 ; CHECK-NEXT:    ; in Loop: Header=BB0_6 Depth=2
 ; CHECK-NEXT:    v_accvgpr_write_b32 a2, v28
 ; CHECK-NEXT:    s_mov_b64 s[24:25], 0
 ; CHECK-NEXT:    v_accvgpr_write_b32 a3, v29
-; CHECK-NEXT:    s_mov_b64 s[8:9], 0
+; CHECK-NEXT:    s_mov_b64 s[6:7], 0
 ; CHECK-NEXT:    s_branch .LBB0_5
 ; CHECK-NEXT:  .LBB0_9: ; in Loop: Header=BB0_2 Depth=1
-; CHECK-NEXT:    v_mov_b64_e32 v[24:25], s[10:11]
+; CHECK-NEXT:    v_mov_b64_e32 v[24:25], s[12:13]
 ; CHECK-NEXT:    v_accvgpr_write_b32 a0, v24
 ; CHECK-NEXT:    s_mov_b64 s[22:23], 0
 ; CHECK-NEXT:    v_accvgpr_write_b32 a1, v25
-; CHECK-NEXT:    s_mov_b64 s[8:9], s[20:21]
+; CHECK-NEXT:    s_mov_b64 s[6:7], s[20:21]
 ; CHECK-NEXT:    s_branch .LBB0_15
 ; CHECK-NEXT:  .LBB0_10: ; in Loop: Header=BB0_2 Depth=1
-; CHECK-NEXT:    s_mov_b64 s[8:9], -1
+; CHECK-NEXT:    s_mov_b64 s[6:7], -1
 ; CHECK-NEXT:    v_mov_b64_e32 v[22:23], 0
 ; CHECK-NEXT:    s_branch .LBB0_15
 ; CHECK-NEXT:  .LBB0_11: ; %loop.exit.guard
@@ -131,21 +133,21 @@ define amdgpu_kernel void @vgpr_mfma_pass_av_split_crash(double %arg1, i1 %arg2,
 ; CHECK-NEXT:    s_cbranch_vccz .LBB0_13
 ; CHECK-NEXT:  ; %bb.12: ; %._crit_edge2105.i.i.i2330.loopexit
 ; CHECK-NEXT:    ; in Loop: Header=BB0_2 Depth=1
-; CHECK-NEXT:    v_cmp_nlg_f64_e64 s[8:9], 0, v[26:27]
+; CHECK-NEXT:    v_cmp_nlg_f64_e64 s[6:7], 0, v[26:27]
 ; CHECK-NEXT:    v_accvgpr_write_b32 a0, v24
-; CHECK-NEXT:    v_cndmask_b32_e64 v23, v23, 0, s[16:17]
-; CHECK-NEXT:    v_cndmask_b32_e64 v26, 0, 1, s[8:9]
+; CHECK-NEXT:    v_cndmask_b32_e64 v23, v23, 0, s[14:15]
+; CHECK-NEXT:    v_cndmask_b32_e64 v26, 0, 1, s[6:7]
 ; CHECK-NEXT:    v_mov_b32_e32 v27, v26
-; CHECK-NEXT:    s_and_b64 s[8:9], exec, s[16:17]
-; CHECK-NEXT:    v_cndmask_b32_e64 v22, v22, 0, s[16:17]
-; CHECK-NEXT:    global_store_dwordx2 v0, v[26:27], s[12:13]
+; CHECK-NEXT:    s_and_b64 s[6:7], exec, s[14:15]
+; CHECK-NEXT:    v_cndmask_b32_e64 v22, v22, 0, s[14:15]
+; CHECK-NEXT:    global_store_dwordx2 v0, v[26:27], s[8:9]
 ; CHECK-NEXT:    s_cselect_b32 s23, s23, 0
 ; CHECK-NEXT:    s_cselect_b32 s22, s22, 0
-; CHECK-NEXT:    s_mov_b64 s[8:9], -1
+; CHECK-NEXT:    s_mov_b64 s[6:7], -1
 ; CHECK-NEXT:    s_branch .LBB0_14
 ; CHECK-NEXT:  .LBB0_13: ; in Loop: Header=BB0_2 Depth=1
 ; CHECK-NEXT:    v_accvgpr_write_b32 a0, v24
-; CHECK-NEXT:    s_mov_b64 s[8:9], 0
+; CHECK-NEXT:    s_mov_b64 s[6:7], 0
 ; CHECK-NEXT:    v_mov_b64_e32 v[22:23], 0
 ; CHECK-NEXT:  .LBB0_14: ; %Flow6
 ; CHECK-NEXT:    ; in Loop: Header=BB0_2 Depth=1
@@ -153,12 +155,12 @@ define amdgpu_kernel void @vgpr_mfma_pass_av_split_crash(double %arg1, i1 %arg2,
 ; CHECK-NEXT:  .LBB0_15: ; %Flow6
 ; CHECK-NEXT:    ; in Loop: Header=BB0_2 Depth=1
 ; CHECK-NEXT:    s_mov_b64 s[24:25], -1
-; CHECK-NEXT:    s_and_b64 vcc, exec, s[8:9]
+; CHECK-NEXT:    s_and_b64 vcc, exec, s[6:7]
 ; CHECK-NEXT:    s_cbranch_vccz .LBB0_1
 ; CHECK-NEXT:  ; %bb.16: ; %._crit_edge2105.i.i.i2330
 ; CHECK-NEXT:    ; in Loop: Header=BB0_2 Depth=1
 ; CHECK-NEXT:    s_mov_b64 s[24:25], 0
-; CHECK-NEXT:    global_store_dwordx2 v0, v[20:21], s[12:13]
+; CHECK-NEXT:    global_store_dwordx2 v0, v[20:21], s[8:9]
 ; CHECK-NEXT:    s_branch .LBB0_1
 ; CHECK-NEXT:  .LBB0_17: ; %DummyReturnBlock
 ; CHECK-NEXT:    s_endpgm

diff  --git a/llvm/test/CodeGen/AMDGPU/blender-no-live-segment-at-def-implicit-def.ll b/llvm/test/CodeGen/AMDGPU/blender-no-live-segment-at-def-implicit-def.ll
index 554d7eb2cfbdb..dda8f1e343a2c 100644
--- a/llvm/test/CodeGen/AMDGPU/blender-no-live-segment-at-def-implicit-def.ll
+++ b/llvm/test/CodeGen/AMDGPU/blender-no-live-segment-at-def-implicit-def.ll
@@ -40,12 +40,14 @@ define amdgpu_kernel void @blender_no_live_segment_at_def_error(<4 x float> %ext
 ; CHECK-NEXT:    s_mov_b32 s15, 1.0
 ; CHECK-NEXT:    s_mov_b32 s12, 0x7fc00000
 ; CHECK-NEXT:  .LBB0_6: ; %Flow
+; CHECK-NEXT:    s_and_b32 s17, s17, exec_lo
 ; CHECK-NEXT:    s_mov_b32 s48, 1.0
-; CHECK-NEXT:    s_andn2_b32 vcc_lo, exec_lo, s17
+; CHECK-NEXT:    s_cselect_b32 s17, 1, 0
 ; CHECK-NEXT:    s_mov_b32 s49, s48
 ; CHECK-NEXT:    s_mov_b32 s50, s48
+; CHECK-NEXT:    s_cmp_lg_u32 s17, 1
 ; CHECK-NEXT:    s_mov_b32 s51, s48
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_8
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_8
 ; CHECK-NEXT:  ; %bb.7: ; %if.end273.i.i
 ; CHECK-NEXT:    s_add_u32 s18, s8, 40
 ; CHECK-NEXT:    s_addc_u32 s19, s9, 0

diff  --git a/llvm/test/CodeGen/AMDGPU/branch-folding-implicit-def-subreg.ll b/llvm/test/CodeGen/AMDGPU/branch-folding-implicit-def-subreg.ll
index f9c7186831ee7..5531b2f5ad5d5 100644
--- a/llvm/test/CodeGen/AMDGPU/branch-folding-implicit-def-subreg.ll
+++ b/llvm/test/CodeGen/AMDGPU/branch-folding-implicit-def-subreg.ll
@@ -98,19 +98,19 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   renamable $vgpr56_vgpr57 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr44_vgpr45 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr42_vgpr43 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr7 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr15 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr14 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr22 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr24 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr30 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr23 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr21 = IMPLICIT_DEF implicit-def $vgpr20
   ; GFX90A-NEXT:   renamable $sgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr16 = IMPLICIT_DEF
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.6.Flow20:
   ; GFX90A-NEXT:   successors: %bb.7(0x80000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   renamable $vgpr26 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr28 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec
@@ -123,7 +123,7 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.7.Flow19:
   ; GFX90A-NEXT:   successors: %bb.62(0x40000000), %bb.8(0x40000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000F, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000F, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr26_vgpr27:0x000000000000000F, $vgpr28_vgpr29:0x000000000000000F, $vgpr32_vgpr33:0x000000000000000F, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000F, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000F, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr26_vgpr27:0x000000000000000F, $vgpr28_vgpr29:0x000000000000000F, $vgpr32_vgpr33:0x000000000000000F, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   renamable $sgpr68_sgpr69 = S_MOV_B64 0
   ; GFX90A-NEXT:   $sgpr18_sgpr19 = S_AND_SAVEEXEC_B64 $sgpr36_sgpr37, implicit-def $exec, implicit-def $scc, implicit $exec
@@ -320,8 +320,10 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   liveins: $sgpr4_sgpr5, $sgpr34_sgpr35, $sgpr68_sgpr69, $vgpr40_vgpr41:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   $exec = S_OR_B64 $exec, killed renamable $sgpr4_sgpr5, implicit-def $scc
-  ; GFX90A-NEXT:   $vcc = S_ANDN2_B64 $exec, killed renamable $sgpr34_sgpr35, implicit-def dead $scc
-  ; GFX90A-NEXT:   S_CBRANCH_VCCNZ %bb.31, implicit $vcc
+  ; GFX90A-NEXT:   dead renamable $sgpr4_sgpr5 = S_AND_B64 killed renamable $sgpr34_sgpr35, $exec, implicit-def $scc
+  ; GFX90A-NEXT:   renamable $sgpr4 = S_CSELECT_B32 1, 0, implicit killed $scc
+  ; GFX90A-NEXT:   S_CMP_LG_U32 killed renamable $sgpr4, 1, implicit-def $scc
+  ; GFX90A-NEXT:   S_CBRANCH_SCC1 %bb.31, implicit killed $scc
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.30.bb19:
   ; GFX90A-NEXT:   successors: %bb.31(0x80000000)
@@ -386,12 +388,12 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   renamable $vgpr58_vgpr59 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr56_vgpr57 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr44_vgpr45 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr7 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr15 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr14 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr22 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr24 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr30 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr23 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr21 = IMPLICIT_DEF implicit-def $vgpr20
   ; GFX90A-NEXT:   renamable $sgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr16 = IMPLICIT_DEF
@@ -400,7 +402,7 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.36.Flow21:
   ; GFX90A-NEXT:   successors: %bb.6(0x80000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   $exec = S_OR_B64 $exec, killed renamable $sgpr24_sgpr25, implicit-def $scc
   ; GFX90A-NEXT:   S_BRANCH %bb.6
@@ -425,12 +427,12 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   renamable $vgpr60_vgpr61 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr58_vgpr59 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr56_vgpr57 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr7 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr15 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr14 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr22 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr24 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr30 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr23 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr21 = IMPLICIT_DEF implicit-def $vgpr20
   ; GFX90A-NEXT:   renamable $sgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr16 = IMPLICIT_DEF
@@ -439,7 +441,7 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.38.Flow22:
   ; GFX90A-NEXT:   successors: %bb.36(0x80000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr58_sgpr59, $sgpr60_sgpr61, $sgpr62_sgpr63, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr58_sgpr59, $sgpr60_sgpr61, $sgpr62_sgpr63, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   $exec = S_OR_B64 $exec, killed renamable $sgpr38_sgpr39, implicit-def $scc
   ; GFX90A-NEXT:   renamable $sgpr38_sgpr39 = S_XOR_B64 $exec, -1, implicit-def dead $scc
@@ -477,12 +479,12 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   renamable $vgpr62_vgpr63 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr60_vgpr61 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr58_vgpr59 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr7 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr15 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr14 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr22 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr24 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr30 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr23 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr21 = IMPLICIT_DEF implicit-def $vgpr20
   ; GFX90A-NEXT:   renamable $sgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr16 = IMPLICIT_DEF
@@ -491,7 +493,7 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.40.Flow23:
   ; GFX90A-NEXT:   successors: %bb.38(0x80000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr54_sgpr55, $sgpr58_sgpr59, $sgpr60_sgpr61, $sgpr62_sgpr63, $sgpr64_sgpr65, $sgpr68_sgpr69, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr54_sgpr55, $sgpr58_sgpr59, $sgpr60_sgpr61, $sgpr62_sgpr63, $sgpr64_sgpr65, $sgpr68_sgpr69, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   $exec = S_OR_B64 $exec, killed renamable $sgpr40_sgpr41, implicit-def $scc
   ; GFX90A-NEXT:   renamable $sgpr42_sgpr43 = S_XOR_B64 $exec, -1, implicit-def dead $scc
@@ -527,12 +529,12 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   renamable $vgpr0_vgpr1 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr62_vgpr63 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr60_vgpr61 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr7 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr15 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr14 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr22 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr24 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr30 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr23 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr21 = IMPLICIT_DEF implicit-def $vgpr20
   ; GFX90A-NEXT:   renamable $sgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr16 = IMPLICIT_DEF
@@ -541,7 +543,7 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.42.Flow24:
   ; GFX90A-NEXT:   successors: %bb.40(0x80000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr58_sgpr59, $sgpr60_sgpr61, $sgpr62_sgpr63, $sgpr64_sgpr65, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr58_sgpr59, $sgpr60_sgpr61, $sgpr62_sgpr63, $sgpr64_sgpr65, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   $exec = S_OR_B64 $exec, killed renamable $sgpr42_sgpr43, implicit-def $scc
   ; GFX90A-NEXT:   renamable $sgpr44_sgpr45 = S_XOR_B64 $exec, -1, implicit-def dead $scc
@@ -572,19 +574,19 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.44:
   ; GFX90A-NEXT:   successors: %bb.45(0x80000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr57, $vgpr62, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8, $sgpr9, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $vgpr40, $vgpr61, $sgpr54_sgpr55, $sgpr58_sgpr59, $sgpr60_sgpr61, $sgpr20_sgpr21_sgpr22, $sgpr22_sgpr23, $sgpr24_sgpr25_sgpr26, $sgpr26_sgpr27, $vgpr56, $vgpr47, $vgpr2, $vgpr4, $vgpr5, $vgpr6, $vgpr46, $vgpr45, $vgpr44, $vgpr43, $vgpr42, $vgpr41, $vgpr58, $vgpr60, $vgpr63, $vgpr59
+  ; GFX90A-NEXT:   liveins: $sgpr14, $vgpr57, $sgpr16, $sgpr17, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8, $sgpr9, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $vgpr59, $vgpr40, $vgpr61, $sgpr54_sgpr55, $sgpr58_sgpr59, $sgpr60_sgpr61, $sgpr20_sgpr21_sgpr22, $vgpr62, $sgpr24_sgpr25_sgpr26, $sgpr26_sgpr27, $vgpr47, $vgpr56, $vgpr2, $vgpr4, $vgpr5, $vgpr6, $vgpr45, $vgpr46, $vgpr43, $vgpr44, $vgpr41, $vgpr42, $vgpr58, $vgpr60, $vgpr63
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   renamable $sgpr52_sgpr53 = COPY renamable $sgpr36_sgpr37
   ; GFX90A-NEXT:   renamable $vgpr12_vgpr13 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr10_vgpr11 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr8_vgpr9 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr0_vgpr1 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr7 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr15 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr14 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr22 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr24 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr30 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr23 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr21 = IMPLICIT_DEF implicit-def $vgpr20
   ; GFX90A-NEXT:   renamable $sgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr16 = IMPLICIT_DEF
@@ -592,7 +594,7 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.45.Flow26:
   ; GFX90A-NEXT:   successors: %bb.47(0x80000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr58_sgpr59, $sgpr60_sgpr61, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr58_sgpr59, $sgpr60_sgpr61, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   renamable $sgpr62_sgpr63 = S_XOR_B64 $exec, -1, implicit-def dead $scc
   ; GFX90A-NEXT:   renamable $sgpr64_sgpr65 = S_AND_B64 killed renamable $sgpr46_sgpr47, $exec, implicit-def dead $scc
@@ -625,12 +627,12 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   renamable $vgpr8_vgpr9 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr0_vgpr1 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr62_vgpr63 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr7 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr15 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr14 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr22 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr24 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr30 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr23 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr21 = IMPLICIT_DEF implicit-def $vgpr20
   ; GFX90A-NEXT:   renamable $sgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr16 = IMPLICIT_DEF
@@ -639,7 +641,7 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.47.Flow25:
   ; GFX90A-NEXT:   successors: %bb.42(0x80000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr58_sgpr59, $sgpr62_sgpr63, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr68_sgpr69, $sgpr70_sgpr71, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr58_sgpr59, $sgpr62_sgpr63, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr68_sgpr69, $sgpr70_sgpr71, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   $exec = S_OR_B64 $exec, killed renamable $sgpr44_sgpr45, implicit-def $scc
   ; GFX90A-NEXT:   renamable $sgpr46_sgpr47 = S_XOR_B64 $exec, -1, implicit-def dead $scc
@@ -687,12 +689,12 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   renamable $vgpr12_vgpr13 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr10_vgpr11 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr8_vgpr9 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr7 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr15 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr14 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr22 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr24 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr30 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr23 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr21 = IMPLICIT_DEF implicit-def $vgpr20
   ; GFX90A-NEXT:   renamable $sgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr16 = IMPLICIT_DEF
@@ -715,12 +717,12 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   renamable $sgpr54_sgpr55 = S_MOV_B64 -1
   ; GFX90A-NEXT:   renamable $sgpr66_sgpr67 = COPY renamable $sgpr36_sgpr37
   ; GFX90A-NEXT:   renamable $vgpr12_vgpr13 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr7 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr15 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr14 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr22 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr24 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr30 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr23 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr21 = IMPLICIT_DEF implicit-def $vgpr20
   ; GFX90A-NEXT:   renamable $sgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr16 = IMPLICIT_DEF
@@ -739,12 +741,12 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   renamable $vcc = V_CMP_EQ_U16_e64 0, killed $vgpr3, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr12_vgpr13 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr10_vgpr11 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr7 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr15 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr14 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr22 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr24 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr30 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr23 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr21 = IMPLICIT_DEF implicit-def $vgpr20
   ; GFX90A-NEXT:   renamable $sgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr16 = IMPLICIT_DEF
@@ -753,7 +755,7 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.55.Flow29:
   ; GFX90A-NEXT:   successors: %bb.45(0x80000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr58_sgpr59, $sgpr60_sgpr61, $sgpr62_sgpr63, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr58_sgpr59, $sgpr60_sgpr61, $sgpr62_sgpr63, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   $exec = S_OR_B64 $exec, killed renamable $sgpr62_sgpr63, implicit-def $scc
   ; GFX90A-NEXT:   S_BRANCH %bb.45
@@ -762,7 +764,8 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   successors: %bb.60(0x80000000)
   ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr54_sgpr55, $sgpr56_sgpr57:0x000000000000000F, $sgpr62_sgpr63, $sgpr64_sgpr65, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
-  ; GFX90A-NEXT:   renamable $vgpr30 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed $sgpr64_sgpr65, implicit $exec
+  ; GFX90A-NEXT:   dead renamable $sgpr18_sgpr19 = S_AND_B64 killed renamable $sgpr64_sgpr65, $exec, implicit-def $scc
+  ; GFX90A-NEXT:   renamable $sgpr23 = S_CSELECT_B32 1, 0, implicit killed $scc
   ; GFX90A-NEXT:   renamable $vgpr3 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr7 = COPY renamable $sgpr21, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr24_vgpr25 = DS_READ_B64_gfx9 killed renamable $vgpr7, 0, 0, implicit $exec :: (load (s64) from %ir.4, addrspace 3)
@@ -771,7 +774,8 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   renamable $vgpr20_vgpr21 = DS_READ_B64_gfx9 killed renamable $vgpr3, 0, 0, implicit $exec :: (load (s64) from %ir.5, addrspace 3)
   ; GFX90A-NEXT:   renamable $sgpr18_sgpr19 = S_LSHR_B64 killed renamable $sgpr56_sgpr57, 1, implicit-def dead $scc
   ; GFX90A-NEXT:   renamable $vgpr18_vgpr19 = V_LSHRREV_B64_e64 1, $vgpr24_vgpr25, implicit $exec
-  ; GFX90A-NEXT:   renamable $vgpr7 = V_CNDMASK_B32_e64 0, 0, 0, 1, $sgpr12_sgpr13, implicit $exec
+  ; GFX90A-NEXT:   dead renamable $sgpr52_sgpr53 = S_AND_B64 renamable $sgpr12_sgpr13, $exec, implicit-def $scc
+  ; GFX90A-NEXT:   renamable $sgpr15 = S_CSELECT_B32 1, 0, implicit killed $scc
   ; GFX90A-NEXT:   renamable $vgpr14_vgpr15 = V_LSHRREV_B64_e64 1, $vgpr22_vgpr23, implicit $exec
   ; GFX90A-NEXT:   renamable $sgpr52_sgpr53 = S_XOR_B64 $exec, -1, implicit-def dead $scc
   ; GFX90A-NEXT:   renamable $sgpr66_sgpr67 = S_OR_B64 renamable $sgpr36_sgpr37, $exec, implicit-def dead $scc
@@ -782,10 +786,9 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   successors: %bb.7(0x80000000)
   ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr36_sgpr37, $sgpr40_sgpr41, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr2_vgpr3:0x000000000000000F, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000F, $vgpr26_vgpr27:0x000000000000000F, $vgpr28_vgpr29:0x000000000000000F, $vgpr32_vgpr33:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
-  ; GFX90A-NEXT:   renamable $vgpr24 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec
+  ; GFX90A-NEXT:   renamable $sgpr15 = S_MOV_B32 0
   ; GFX90A-NEXT:   renamable $vgpr20 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr21 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec
-  ; GFX90A-NEXT:   renamable $vgpr30 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr22 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr14 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr18 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec
@@ -811,7 +814,8 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   renamable $vgpr42_vgpr43 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr40_vgpr41 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr46_vgpr47 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr7 = COPY renamable $vgpr5, implicit $exec
+  ; GFX90A-NEXT:   renamable $vgpr24 = COPY renamable $vgpr5, implicit $exec
+  ; GFX90A-NEXT:   renamable $sgpr23 = S_MOV_B32 0
   ; GFX90A-NEXT:   renamable $sgpr34_sgpr35 = S_MOV_B64 0
   ; GFX90A-NEXT:   S_BRANCH %bb.7
   ; GFX90A-NEXT: {{  $}}
@@ -842,12 +846,12 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   renamable $sgpr52_sgpr53 = S_MOV_B64 -1
   ; GFX90A-NEXT:   renamable $vcc = V_CMP_EQ_U16_e64 0, killed $vgpr3, implicit $exec
   ; GFX90A-NEXT:   renamable $sgpr66_sgpr67 = COPY renamable $sgpr36_sgpr37
-  ; GFX90A-NEXT:   renamable $vgpr7 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr15 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr14 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr22 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr24 = IMPLICIT_DEF
-  ; GFX90A-NEXT:   renamable $vgpr30 = IMPLICIT_DEF
+  ; GFX90A-NEXT:   renamable $sgpr23 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr21 = IMPLICIT_DEF implicit-def $vgpr20
   ; GFX90A-NEXT:   renamable $sgpr18 = IMPLICIT_DEF
   ; GFX90A-NEXT:   renamable $vgpr16 = IMPLICIT_DEF
@@ -856,14 +860,14 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.60.Flow31:
   ; GFX90A-NEXT:   successors: %bb.61(0x80000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr62_sgpr63, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr62_sgpr63, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   $exec = S_OR_B64 $exec, killed renamable $sgpr54_sgpr55, implicit-def $scc
   ; GFX90A-NEXT:   renamable $sgpr54_sgpr55 = S_MOV_B64 0
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.61.Flow30:
   ; GFX90A-NEXT:   successors: %bb.55(0x80000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr62_sgpr63, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19:0x0000000000000003, $sgpr24_sgpr25, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr62_sgpr63, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x0000000000000003, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x0000000000000003, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   renamable $sgpr58_sgpr59 = S_XOR_B64 $exec, -1, implicit-def dead $scc
   ; GFX90A-NEXT:   renamable $sgpr60_sgpr61 = S_AND_B64 killed renamable $sgpr54_sgpr55, $exec, implicit-def dead $scc
@@ -875,7 +879,7 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.62.bb140:
   ; GFX90A-NEXT:   successors: %bb.68(0x40000000), %bb.63(0x40000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000F, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000F, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr26_vgpr27:0x000000000000000F, $vgpr28_vgpr29:0x000000000000000F, $vgpr32_vgpr33:0x000000000000000F, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19, $sgpr28_sgpr29, $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000F, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000F, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr26_vgpr27:0x000000000000000F, $vgpr28_vgpr29:0x000000000000000F, $vgpr32_vgpr33:0x000000000000000F, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   renamable $sgpr24_sgpr25 = S_MOV_B64 -1
   ; GFX90A-NEXT:   renamable $vcc = S_AND_B64 $exec, killed renamable $sgpr30_sgpr31, implicit-def dead $scc
@@ -883,14 +887,16 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.63.Flow13:
   ; GFX90A-NEXT:   successors: %bb.64(0x40000000), %bb.66(0x40000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr18_sgpr19, $sgpr24_sgpr25, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000C, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000C, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000C, $vgpr26_vgpr27:0x000000000000000C, $vgpr28_vgpr29:0x000000000000000C, $vgpr32_vgpr33:0x000000000000000C, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr18_sgpr19, $sgpr24_sgpr25, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000C, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000C, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000C, $vgpr26_vgpr27:0x000000000000000C, $vgpr28_vgpr29:0x000000000000000C, $vgpr32_vgpr33:0x000000000000000C, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
-  ; GFX90A-NEXT:   $vcc = S_ANDN2_B64 $exec, killed renamable $sgpr24_sgpr25, implicit-def dead $scc
-  ; GFX90A-NEXT:   S_CBRANCH_VCCNZ %bb.66, implicit $vcc
+  ; GFX90A-NEXT:   dead renamable $sgpr12_sgpr13 = S_AND_B64 killed renamable $sgpr24_sgpr25, $exec, implicit-def $scc
+  ; GFX90A-NEXT:   renamable $sgpr12 = S_CSELECT_B32 1, 0, implicit killed $scc
+  ; GFX90A-NEXT:   S_CMP_LG_U32 killed renamable $sgpr12, 1, implicit-def $scc
+  ; GFX90A-NEXT:   S_CBRANCH_SCC1 %bb.66, implicit killed $scc
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.64.bb159:
   ; GFX90A-NEXT:   successors: %bb.67(0x40000000), %bb.65(0x40000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr18_sgpr19, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000C, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000C, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000C, $vgpr26_vgpr27:0x000000000000000C, $vgpr28_vgpr29:0x000000000000000C, $vgpr32_vgpr33:0x000000000000000C, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr18_sgpr19, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000C, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000C, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000C, $vgpr26_vgpr27:0x000000000000000C, $vgpr28_vgpr29:0x000000000000000C, $vgpr32_vgpr33:0x000000000000000C, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   renamable $vcc = V_CMP_NE_U32_e64 0, killed $vgpr6, implicit $exec
   ; GFX90A-NEXT:   $sgpr12_sgpr13 = S_AND_SAVEEXEC_B64 $vcc, implicit-def $exec, implicit-def $scc, implicit $exec
@@ -913,28 +919,30 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.67.bb161:
   ; GFX90A-NEXT:   successors: %bb.65(0x80000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000C, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000C, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000C, $vgpr26_vgpr27:0x000000000000000C, $vgpr28_vgpr29:0x000000000000000C, $vgpr32_vgpr33:0x000000000000000C, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000C, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000C, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000C, $vgpr26_vgpr27:0x000000000000000C, $vgpr28_vgpr29:0x000000000000000C, $vgpr32_vgpr33:0x000000000000000C, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   renamable $vgpr2 = V_OR_B32_e32 killed $vgpr27, killed $vgpr29, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr2 = V_OR_B32_e32 killed $vgpr2, killed $vgpr33, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr3 = V_OR_B32_e32 killed $vgpr17, killed $vgpr3, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr2 = V_OR_B32_e32 killed $vgpr3, killed $vgpr2, implicit $exec
-  ; GFX90A-NEXT:   renamable $vgpr3 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec
-  ; GFX90A-NEXT:   renamable $vcc = V_CMP_EQ_U32_sdwa 0, killed $vgpr30, 0, $vgpr3, 0, 0, 6, implicit $exec
+  ; GFX90A-NEXT:   dead renamable $sgpr20 = S_AND_B32 killed renamable $sgpr23, 255, implicit-def $scc
+  ; GFX90A-NEXT:   renamable $vcc = S_CSELECT_B64 0, -1, implicit killed $scc
   ; GFX90A-NEXT:   renamable $vgpr2 = V_CNDMASK_B32_e64 0, 0, 0, killed $vgpr2, killed $vcc, implicit $exec
-  ; GFX90A-NEXT:   renamable $vgpr4 = V_OR_B32_e32 killed $vgpr18, killed $vgpr21, implicit $exec
-  ; GFX90A-NEXT:   renamable $vgpr2 = V_OR_B32_e32 killed $vgpr4, killed $vgpr2, implicit $exec
-  ; GFX90A-NEXT:   renamable $vcc = V_CMP_EQ_U32_sdwa 0, killed $vgpr7, 0, $vgpr3, 0, 0, 6, implicit $exec
+  ; GFX90A-NEXT:   renamable $vgpr3 = V_OR_B32_e32 killed $vgpr18, killed $vgpr21, implicit $exec
+  ; GFX90A-NEXT:   renamable $vgpr2 = V_OR_B32_e32 killed $vgpr3, killed $vgpr2, implicit $exec
+  ; GFX90A-NEXT:   dead renamable $sgpr15 = S_AND_B32 killed renamable $sgpr15, 255, implicit-def $scc
+  ; GFX90A-NEXT:   renamable $vcc = S_CSELECT_B64 0, -1, implicit killed $scc
   ; GFX90A-NEXT:   renamable $vgpr2 = V_CNDMASK_B32_e64 0, 0, 0, killed $vgpr2, killed $vcc, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr2 = V_OR_B32_e32 killed $vgpr2, killed $vgpr14, implicit $exec
+  ; GFX90A-NEXT:   renamable $vgpr3 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec
   ; GFX90A-NEXT:   DS_WRITE2_B32_gfx9 killed renamable $vgpr3, killed renamable $vgpr2, renamable $vgpr3, 0, 1, 0, implicit $exec :: (store (s64) into `ptr addrspace(3) null`, align 4, addrspace 3)
   ; GFX90A-NEXT:   S_BRANCH %bb.65
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.68.bb174:
   ; GFX90A-NEXT:   successors: %bb.72(0x40000000), %bb.69(0x40000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19, $sgpr28_sgpr29, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000F, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000F, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr26_vgpr27:0x000000000000000F, $vgpr28_vgpr29:0x000000000000000F, $vgpr32_vgpr33:0x000000000000000F, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19, $sgpr28_sgpr29, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000F, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000F, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr26_vgpr27:0x000000000000000F, $vgpr28_vgpr29:0x000000000000000F, $vgpr32_vgpr33:0x000000000000000F, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
-  ; GFX90A-NEXT:   renamable $agpr0 = COPY killed renamable $vgpr14, implicit $exec
+  ; GFX90A-NEXT:   renamable $vgpr30 = COPY killed renamable $vgpr14, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr34 = V_OR_B32_e32 1, $vgpr32, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr54 = V_OR_B32_e32 $vgpr34, $vgpr28, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr48 = V_OR_B32_e32 $vgpr54, $vgpr26, implicit $exec
@@ -949,14 +957,16 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.69.Flow:
   ; GFX90A-NEXT:   successors: %bb.70(0x40000000), %bb.71(0x40000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $agpr0_agpr1:0x0000000000000003, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000C, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000C, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000C, $vgpr26_vgpr27:0x000000000000000C, $vgpr28_vgpr29:0x000000000000000C, $vgpr32_vgpr33:0x000000000000000C, $vgpr34_vgpr35:0x0000000000000003, $vgpr36_vgpr37:0x0000000000000003, $vgpr38_vgpr39:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr48_vgpr49:0x0000000000000003, $vgpr50_vgpr51:0x0000000000000003, $vgpr52_vgpr53:0x0000000000000003, $vgpr54_vgpr55:0x0000000000000003, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr18_sgpr19, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000C, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000C, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000C, $vgpr26_vgpr27:0x000000000000000C, $vgpr28_vgpr29:0x000000000000000C, $vgpr30_vgpr31:0x0000000000000003, $vgpr32_vgpr33:0x000000000000000C, $vgpr34_vgpr35:0x0000000000000003, $vgpr36_vgpr37:0x0000000000000003, $vgpr38_vgpr39:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr48_vgpr49:0x0000000000000003, $vgpr50_vgpr51:0x0000000000000003, $vgpr52_vgpr53:0x0000000000000003, $vgpr54_vgpr55:0x0000000000000003, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
-  ; GFX90A-NEXT:   $vcc = S_ANDN2_B64 $exec, killed renamable $sgpr12_sgpr13, implicit-def dead $scc
-  ; GFX90A-NEXT:   S_CBRANCH_VCCNZ %bb.71, implicit $vcc
+  ; GFX90A-NEXT:   dead renamable $sgpr12_sgpr13 = S_AND_B64 killed renamable $sgpr12_sgpr13, $exec, implicit-def $scc
+  ; GFX90A-NEXT:   renamable $sgpr12 = S_CSELECT_B32 1, 0, implicit killed $scc
+  ; GFX90A-NEXT:   S_CMP_LG_U32 killed renamable $sgpr12, 1, implicit-def $scc
+  ; GFX90A-NEXT:   S_CBRANCH_SCC1 %bb.71, implicit killed $scc
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.70.bb186:
   ; GFX90A-NEXT:   successors: %bb.71(0x80000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $agpr0_agpr1:0x0000000000000003, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr18_sgpr19, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000C, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000C, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000C, $vgpr26_vgpr27:0x000000000000000C, $vgpr28_vgpr29:0x000000000000000C, $vgpr32_vgpr33:0x000000000000000C, $vgpr34_vgpr35:0x0000000000000003, $vgpr36_vgpr37:0x0000000000000003, $vgpr38_vgpr39:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr48_vgpr49:0x0000000000000003, $vgpr50_vgpr51:0x0000000000000003, $vgpr52_vgpr53:0x0000000000000003, $vgpr54_vgpr55:0x0000000000000003, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr18_sgpr19, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000C, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000C, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000C, $vgpr26_vgpr27:0x000000000000000C, $vgpr28_vgpr29:0x000000000000000C, $vgpr30_vgpr31:0x0000000000000003, $vgpr32_vgpr33:0x000000000000000C, $vgpr34_vgpr35:0x0000000000000003, $vgpr36_vgpr37:0x0000000000000003, $vgpr38_vgpr39:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr48_vgpr49:0x0000000000000003, $vgpr50_vgpr51:0x0000000000000003, $vgpr52_vgpr53:0x0000000000000003, $vgpr54_vgpr55:0x0000000000000003, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   renamable $vgpr4_vgpr5 = nsw V_LSHLREV_B64_e64 3, killed $vgpr4_vgpr5, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr2 = COPY renamable $sgpr27, implicit $exec
@@ -973,8 +983,8 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT:   DS_WRITE_B64_gfx9 renamable $vgpr35, renamable $vgpr34_vgpr35, 0, 0, implicit $exec :: (store (s64) into `ptr addrspace(3) null`, addrspace 3)
   ; GFX90A-NEXT:   renamable $vgpr5 = COPY renamable $sgpr21, implicit $exec
   ; GFX90A-NEXT:   DS_WRITE_B64_gfx9 renamable $vgpr5, killed renamable $vgpr54_vgpr55, 0, 0, implicit $exec :: (store (s64) into %ir.4, addrspace 3)
-  ; GFX90A-NEXT:   renamable $vgpr16 = COPY killed renamable $sgpr22, implicit $exec
-  ; GFX90A-NEXT:   DS_WRITE_B64_gfx9 killed renamable $vgpr16, killed renamable $vgpr48_vgpr49, 0, 0, implicit $exec :: (store (s64) into %ir.5, addrspace 3)
+  ; GFX90A-NEXT:   renamable $vgpr7 = COPY killed renamable $sgpr22, implicit $exec
+  ; GFX90A-NEXT:   DS_WRITE_B64_gfx9 killed renamable $vgpr7, killed renamable $vgpr48_vgpr49, 0, 0, implicit $exec :: (store (s64) into %ir.5, addrspace 3)
   ; GFX90A-NEXT:   DS_WRITE_B64_gfx9 renamable $vgpr35, killed renamable $vgpr52_vgpr53, 0, 0, implicit $exec :: (store (s64) into `ptr addrspace(3) null`, addrspace 3)
   ; GFX90A-NEXT:   DS_WRITE_B64_gfx9 renamable $vgpr5, killed renamable $vgpr50_vgpr51, 0, 0, implicit $exec :: (store (s64) into %ir.4, addrspace 3)
   ; GFX90A-NEXT:   DS_WRITE_B64_gfx9 renamable $vgpr35, killed renamable $vgpr36_vgpr37, 0, 0, implicit $exec :: (store (s64) into `ptr addrspace(3) null`, addrspace 3)
@@ -985,15 +995,15 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.71.Flow9:
   ; GFX90A-NEXT:   successors: %bb.63(0x80000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $agpr0_agpr1:0x0000000000000003, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr18_sgpr19, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000C, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr16_vgpr17:0x000000000000000C, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000C, $vgpr26_vgpr27:0x000000000000000C, $vgpr28_vgpr29:0x000000000000000C, $vgpr32_vgpr33:0x000000000000000C, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr18_sgpr19, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000C, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr16_vgpr17:0x000000000000000C, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000C, $vgpr26_vgpr27:0x000000000000000C, $vgpr28_vgpr29:0x000000000000000C, $vgpr30_vgpr31:0x0000000000000003, $vgpr32_vgpr33:0x000000000000000C, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   renamable $sgpr24_sgpr25 = S_MOV_B64 0
-  ; GFX90A-NEXT:   renamable $vgpr14 = COPY killed renamable $agpr0, implicit $exec
+  ; GFX90A-NEXT:   renamable $vgpr14 = COPY killed renamable $vgpr30, implicit $exec
   ; GFX90A-NEXT:   S_BRANCH %bb.63
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT: bb.72.bb196:
   ; GFX90A-NEXT:   successors: %bb.69(0x80000000)
-  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr16, $sgpr17, $vgpr7, $vgpr30, $vgpr31, $agpr0_agpr1:0x0000000000000003, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr18_sgpr19, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000C, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000C, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000C, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr26_vgpr27:0x000000000000000C, $vgpr28_vgpr29:0x000000000000000C, $vgpr32_vgpr33:0x000000000000000C, $vgpr34_vgpr35:0x0000000000000003, $vgpr36_vgpr37:0x0000000000000003, $vgpr38_vgpr39:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr48_vgpr49:0x0000000000000003, $vgpr50_vgpr51:0x0000000000000003, $vgpr52_vgpr53:0x0000000000000003, $vgpr54_vgpr55:0x0000000000000003, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
+  ; GFX90A-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr23, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x000000000000000F, $sgpr10_sgpr11, $sgpr18_sgpr19, $sgpr34_sgpr35, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr52_sgpr53, $sgpr54_sgpr55, $sgpr64_sgpr65, $sgpr66_sgpr67, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $sgpr24_sgpr25_sgpr26_sgpr27:0x00000000000000F0, $vgpr0_vgpr1:0x000000000000000F, $vgpr2_vgpr3:0x000000000000000C, $vgpr4_vgpr5:0x000000000000000F, $vgpr6_vgpr7:0x0000000000000003, $vgpr8_vgpr9:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr12_vgpr13:0x000000000000000F, $vgpr14_vgpr15:0x0000000000000003, $vgpr16_vgpr17:0x000000000000000C, $vgpr18_vgpr19:0x0000000000000003, $vgpr20_vgpr21:0x000000000000000C, $vgpr22_vgpr23:0x0000000000000003, $vgpr24_vgpr25:0x0000000000000003, $vgpr26_vgpr27:0x000000000000000C, $vgpr28_vgpr29:0x000000000000000C, $vgpr30_vgpr31:0x0000000000000003, $vgpr32_vgpr33:0x000000000000000C, $vgpr34_vgpr35:0x0000000000000003, $vgpr36_vgpr37:0x0000000000000003, $vgpr38_vgpr39:0x0000000000000003, $vgpr40_vgpr41:0x000000000000000F, $vgpr42_vgpr43:0x000000000000000F, $vgpr44_vgpr45:0x000000000000000F, $vgpr46_vgpr47:0x000000000000000F, $vgpr48_vgpr49:0x0000000000000003, $vgpr50_vgpr51:0x0000000000000003, $vgpr52_vgpr53:0x0000000000000003, $vgpr54_vgpr55:0x0000000000000003, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F, $vgpr62_vgpr63:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
   ; GFX90A-NEXT: {{  $}}
   ; GFX90A-NEXT:   renamable $vgpr2 = V_OR_B32_e32 $vgpr14, killed $vgpr24, implicit $exec
   ; GFX90A-NEXT:   renamable $vgpr22 = V_OR_B32_e32 killed $vgpr2, killed $vgpr22, implicit $exec

diff  --git a/llvm/test/CodeGen/AMDGPU/branch-relaxation-gfx1250.ll b/llvm/test/CodeGen/AMDGPU/branch-relaxation-gfx1250.ll
index 086a061d7719e..e1fbd4e88be46 100644
--- a/llvm/test/CodeGen/AMDGPU/branch-relaxation-gfx1250.ll
+++ b/llvm/test/CodeGen/AMDGPU/branch-relaxation-gfx1250.ll
@@ -515,47 +515,38 @@ define amdgpu_kernel void @uniform_unconditional_min_long_forward_branch(ptr add
 ; GCN-NEXT:    s_wait_kmcnt 0x0
 ; GCN-NEXT:    s_cmp_eq_u32 s0, 0
 ; GCN-NEXT:    s_mov_b32 s0, -1
-; GCN-NEXT:    s_cbranch_scc0 .LBB5_1
-; GCN-NEXT:  ; %bb.7: ; %bb0
-; GCN-NEXT:    s_get_pc_i64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc6:
-; GCN-NEXT:    s_add_co_u32 s0, s0, (.LBB5_4-.Lpost_getpc6)&4294967295
-; GCN-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB5_4-.Lpost_getpc6)>>32
-; GCN-NEXT:    s_set_pc_i64 s[0:1]
-; GCN-NEXT:  .LBB5_1: ; %Flow
-; GCN-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GCN-NEXT:    s_cbranch_vccnz .LBB5_3
-; GCN-NEXT:  .LBB5_2: ; %bb2
+; GCN-NEXT:    s_cbranch_scc1 .LBB5_1
+; GCN-NEXT:  ; %bb.5: ; %bb0
+; GCN-NEXT:    s_get_pc_i64 s[2:3]
+; GCN-NEXT:  .Lpost_getpc5:
+; GCN-NEXT:    s_add_co_u32 s2, s2, (.LBB5_2-.Lpost_getpc5)&4294967295
+; GCN-NEXT:    s_add_co_ci_u32 s3, s3, (.LBB5_2-.Lpost_getpc5)>>32
+; GCN-NEXT:    s_set_pc_i64 s[2:3]
+; GCN-NEXT:  .LBB5_1: ; %bb3
+; GCN-NEXT:    ;;#ASMSTART
+; GCN-NEXT:    v_nop_e64
+; GCN-NEXT:    v_nop_e64
+; GCN-NEXT:    ;;#ASMEND
+; GCN-NEXT:    s_sleep 0
+; GCN-NEXT:    s_mov_b32 s0, 0
+; GCN-NEXT:    s_sleep 0
+; GCN-NEXT:  .LBB5_2: ; %Flow
+; GCN-NEXT:    s_and_b32 s0, s0, exec_lo
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GCN-NEXT:    s_cmp_lg_u32 s0, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB5_4
+; GCN-NEXT:  ; %bb.3: ; %bb2
 ; GCN-NEXT:    v_mov_b32_e32 v0, 17
 ; GCN-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS
 ; GCN-NEXT:    s_wait_storecnt 0x0
-; GCN-NEXT:  .LBB5_3: ; %bb4
+; GCN-NEXT:  .LBB5_4: ; %bb4
 ; GCN-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24 nv
 ; GCN-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 63
 ; GCN-NEXT:    s_wait_kmcnt 0x0
 ; GCN-NEXT:    global_store_b32 v0, v1, s[0:1] scope:SCOPE_SYS
 ; GCN-NEXT:    s_wait_storecnt 0x0
 ; GCN-NEXT:    s_endpgm
-; GCN-NEXT:  .LBB5_4: ; %bb3
-; GCN-NEXT:    ;;#ASMSTART
-; GCN-NEXT:    v_nop_e64
-; GCN-NEXT:    v_nop_e64
-; GCN-NEXT:    ;;#ASMEND
-; GCN-NEXT:    s_sleep 0
-; GCN-NEXT:    s_sleep 0
-; GCN-NEXT:    s_cbranch_execnz .LBB5_5
-; GCN-NEXT:  ; %bb.9: ; %bb3
-; GCN-NEXT:    s_get_pc_i64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc7:
-; GCN-NEXT:    s_add_co_u32 s0, s0, (.LBB5_2-.Lpost_getpc7)&4294967295
-; GCN-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB5_2-.Lpost_getpc7)>>32
-; GCN-NEXT:    s_set_pc_i64 s[0:1]
-; GCN-NEXT:  .LBB5_5: ; %bb3
-; GCN-NEXT:    s_get_pc_i64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc5:
-; GCN-NEXT:    s_add_co_u32 s0, s0, (.LBB5_3-.Lpost_getpc5)&4294967295
-; GCN-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB5_3-.Lpost_getpc5)>>32
-; GCN-NEXT:    s_set_pc_i64 s[0:1]
 ;
 ; GCN-ADD-PC64-LABEL: uniform_unconditional_min_long_forward_branch:
 ; GCN-ADD-PC64:       ; %bb.0: ; %bb0
@@ -564,38 +555,35 @@ define amdgpu_kernel void @uniform_unconditional_min_long_forward_branch(ptr add
 ; GCN-ADD-PC64-NEXT:    s_wait_kmcnt 0x0
 ; GCN-ADD-PC64-NEXT:    s_cmp_eq_u32 s0, 0
 ; GCN-ADD-PC64-NEXT:    s_mov_b32 s0, -1
-; GCN-ADD-PC64-NEXT:    s_cbranch_scc0 .LBB5_1
-; GCN-ADD-PC64-NEXT:  ; %bb.7: ; %bb0
-; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB5_4-.Lpost_addpc6
-; GCN-ADD-PC64-NEXT:  .Lpost_addpc6:
-; GCN-ADD-PC64-NEXT:  .LBB5_1: ; %Flow
-; GCN-ADD-PC64-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GCN-ADD-PC64-NEXT:    s_cbranch_vccnz .LBB5_3
-; GCN-ADD-PC64-NEXT:  .LBB5_2: ; %bb2
+; GCN-ADD-PC64-NEXT:    s_cbranch_scc1 .LBB5_1
+; GCN-ADD-PC64-NEXT:  ; %bb.5: ; %bb0
+; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB5_2-.Lpost_addpc5
+; GCN-ADD-PC64-NEXT:  .Lpost_addpc5:
+; GCN-ADD-PC64-NEXT:  .LBB5_1: ; %bb3
+; GCN-ADD-PC64-NEXT:    ;;#ASMSTART
+; GCN-ADD-PC64-NEXT:    v_nop_e64
+; GCN-ADD-PC64-NEXT:    v_nop_e64
+; GCN-ADD-PC64-NEXT:    ;;#ASMEND
+; GCN-ADD-PC64-NEXT:    s_sleep 0
+; GCN-ADD-PC64-NEXT:    s_mov_b32 s0, 0
+; GCN-ADD-PC64-NEXT:    s_sleep 0
+; GCN-ADD-PC64-NEXT:  .LBB5_2: ; %Flow
+; GCN-ADD-PC64-NEXT:    s_and_b32 s0, s0, exec_lo
+; GCN-ADD-PC64-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-ADD-PC64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GCN-ADD-PC64-NEXT:    s_cmp_lg_u32 s0, 1
+; GCN-ADD-PC64-NEXT:    s_cbranch_scc1 .LBB5_4
+; GCN-ADD-PC64-NEXT:  ; %bb.3: ; %bb2
 ; GCN-ADD-PC64-NEXT:    v_mov_b32_e32 v0, 17
 ; GCN-ADD-PC64-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS
 ; GCN-ADD-PC64-NEXT:    s_wait_storecnt 0x0
-; GCN-ADD-PC64-NEXT:  .LBB5_3: ; %bb4
+; GCN-ADD-PC64-NEXT:  .LBB5_4: ; %bb4
 ; GCN-ADD-PC64-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24 nv
 ; GCN-ADD-PC64-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 63
 ; GCN-ADD-PC64-NEXT:    s_wait_kmcnt 0x0
 ; GCN-ADD-PC64-NEXT:    global_store_b32 v0, v1, s[0:1] scope:SCOPE_SYS
 ; GCN-ADD-PC64-NEXT:    s_wait_storecnt 0x0
 ; GCN-ADD-PC64-NEXT:    s_endpgm
-; GCN-ADD-PC64-NEXT:  .LBB5_4: ; %bb3
-; GCN-ADD-PC64-NEXT:    ;;#ASMSTART
-; GCN-ADD-PC64-NEXT:    v_nop_e64
-; GCN-ADD-PC64-NEXT:    v_nop_e64
-; GCN-ADD-PC64-NEXT:    ;;#ASMEND
-; GCN-ADD-PC64-NEXT:    s_sleep 0
-; GCN-ADD-PC64-NEXT:    s_sleep 0
-; GCN-ADD-PC64-NEXT:    s_cbranch_execnz .LBB5_5
-; GCN-ADD-PC64-NEXT:  ; %bb.9: ; %bb3
-; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB5_2-.Lpost_addpc7
-; GCN-ADD-PC64-NEXT:  .Lpost_addpc7:
-; GCN-ADD-PC64-NEXT:  .LBB5_5: ; %bb3
-; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB5_3-.Lpost_addpc5
-; GCN-ADD-PC64-NEXT:  .Lpost_addpc5:
 ; GCN-ENABLE-ADD-PC64-LABEL: uniform_unconditional_min_long_forward_branch:
 ; GCN-ENABLE-ADD-PC64:       ; %bb.0: ; %bb0
 ; GCN-ENABLE-ADD-PC64-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1
@@ -674,9 +662,9 @@ define amdgpu_kernel void @uniform_unconditional_min_long_backward_branch(ptr ad
 ; GCN-NEXT:  ; %bb.3: ; %loop
 ; GCN-NEXT:    ; in Loop: Header=BB6_1 Depth=1
 ; GCN-NEXT:    s_get_pc_i64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc8:
-; GCN-NEXT:    s_add_co_u32 s0, s0, (.LBB6_1-.Lpost_getpc8)&4294967295
-; GCN-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB6_1-.Lpost_getpc8)>>32
+; GCN-NEXT:  .Lpost_getpc6:
+; GCN-NEXT:    s_add_co_u32 s0, s0, (.LBB6_1-.Lpost_getpc6)&4294967295
+; GCN-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB6_1-.Lpost_getpc6)>>32
 ; GCN-NEXT:    s_set_pc_i64 s[0:1]
 ; GCN-NEXT:  .LBB6_2: ; %DummyReturnBlock
 ; GCN-NEXT:    s_endpgm
@@ -696,8 +684,8 @@ define amdgpu_kernel void @uniform_unconditional_min_long_backward_branch(ptr ad
 ; GCN-ADD-PC64-NEXT:    s_cbranch_vccz .LBB6_2
 ; GCN-ADD-PC64-NEXT:  ; %bb.3: ; %loop
 ; GCN-ADD-PC64-NEXT:    ; in Loop: Header=BB6_1 Depth=1
-; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB6_1-.Lpost_addpc8
-; GCN-ADD-PC64-NEXT:  .Lpost_addpc8:
+; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB6_1-.Lpost_addpc6
+; GCN-ADD-PC64-NEXT:  .Lpost_addpc6:
 ; GCN-ADD-PC64-NEXT:  .LBB6_2: ; %DummyReturnBlock
 ; GCN-ADD-PC64-NEXT:    s_endpgm
 ; GCN-ENABLE-ADD-PC64-LABEL: uniform_unconditional_min_long_backward_branch:
@@ -752,14 +740,16 @@ define amdgpu_kernel void @expand_requires_expand(i32 %cond0) #0 {
 ; GCN-NEXT:    s_cmp_lg_u32 s0, 3
 ; GCN-NEXT:    s_cselect_b32 s0, -1, 0
 ; GCN-NEXT:  .LBB7_2: ; %Flow
-; GCN-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GCN-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GCN-NEXT:    s_cbranch_vccz .LBB7_3
+; GCN-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GCN-NEXT:    s_and_b32 s0, s0, exec_lo
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s0, 1
+; GCN-NEXT:    s_cbranch_scc0 .LBB7_3
 ; GCN-NEXT:  ; %bb.5: ; %Flow
 ; GCN-NEXT:    s_get_pc_i64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc9:
-; GCN-NEXT:    s_add_co_u32 s0, s0, (.LBB7_4-.Lpost_getpc9)&4294967295
-; GCN-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB7_4-.Lpost_getpc9)>>32
+; GCN-NEXT:  .Lpost_getpc7:
+; GCN-NEXT:    s_add_co_u32 s0, s0, (.LBB7_4-.Lpost_getpc7)&4294967295
+; GCN-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB7_4-.Lpost_getpc7)>>32
 ; GCN-NEXT:    s_set_pc_i64 s[0:1]
 ; GCN-NEXT:  .LBB7_3: ; %bb2
 ; GCN-NEXT:    ;;#ASMSTART
@@ -793,12 +783,14 @@ define amdgpu_kernel void @expand_requires_expand(i32 %cond0) #0 {
 ; GCN-ADD-PC64-NEXT:    s_cmp_lg_u32 s0, 3
 ; GCN-ADD-PC64-NEXT:    s_cselect_b32 s0, -1, 0
 ; GCN-ADD-PC64-NEXT:  .LBB7_2: ; %Flow
-; GCN-ADD-PC64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GCN-ADD-PC64-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GCN-ADD-PC64-NEXT:    s_cbranch_vccz .LBB7_3
+; GCN-ADD-PC64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GCN-ADD-PC64-NEXT:    s_and_b32 s0, s0, exec_lo
+; GCN-ADD-PC64-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-ADD-PC64-NEXT:    s_cmp_lg_u32 s0, 1
+; GCN-ADD-PC64-NEXT:    s_cbranch_scc0 .LBB7_3
 ; GCN-ADD-PC64-NEXT:  ; %bb.5: ; %Flow
-; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB7_4-.Lpost_addpc9
-; GCN-ADD-PC64-NEXT:  .Lpost_addpc9:
+; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB7_4-.Lpost_addpc7
+; GCN-ADD-PC64-NEXT:  .Lpost_addpc7:
 ; GCN-ADD-PC64-NEXT:  .LBB7_3: ; %bb2
 ; GCN-ADD-PC64-NEXT:    ;;#ASMSTART
 ; GCN-ADD-PC64-NEXT:    v_nop_e64
@@ -892,9 +884,9 @@ define amdgpu_kernel void @uniform_inside_divergent(ptr addrspace(1) %out, i32 %
 ; GCN-NEXT:    s_cbranch_execnz .LBB8_1
 ; GCN-NEXT:  ; %bb.4: ; %entry
 ; GCN-NEXT:    s_get_pc_i64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc10:
-; GCN-NEXT:    s_add_co_u32 s0, s0, (.LBB8_3-.Lpost_getpc10)&4294967295
-; GCN-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB8_3-.Lpost_getpc10)>>32
+; GCN-NEXT:  .Lpost_getpc8:
+; GCN-NEXT:    s_add_co_u32 s0, s0, (.LBB8_3-.Lpost_getpc8)&4294967295
+; GCN-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB8_3-.Lpost_getpc8)>>32
 ; GCN-NEXT:    s_set_pc_i64 s[0:1]
 ; GCN-NEXT:  .LBB8_1: ; %if
 ; GCN-NEXT:    s_load_b96 s[0:2], s[4:5], 0x24 nv
@@ -921,8 +913,8 @@ define amdgpu_kernel void @uniform_inside_divergent(ptr addrspace(1) %out, i32 %
 ; GCN-ADD-PC64-NEXT:    v_cmpx_gt_u32_e32 16, v0
 ; GCN-ADD-PC64-NEXT:    s_cbranch_execnz .LBB8_1
 ; GCN-ADD-PC64-NEXT:  ; %bb.4: ; %entry
-; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB8_3-.Lpost_addpc10
-; GCN-ADD-PC64-NEXT:  .Lpost_addpc10:
+; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB8_3-.Lpost_addpc8
+; GCN-ADD-PC64-NEXT:  .Lpost_addpc8:
 ; GCN-ADD-PC64-NEXT:  .LBB8_1: ; %if
 ; GCN-ADD-PC64-NEXT:    s_load_b96 s[0:2], s[4:5], 0x24 nv
 ; GCN-ADD-PC64-NEXT:    v_mov_b32_e32 v0, 0
@@ -1008,9 +1000,9 @@ define amdgpu_kernel void @analyze_mask_branch() #0 {
 ; GCN-NEXT:    s_cbranch_execnz .LBB9_3
 ; GCN-NEXT:  ; %bb.6: ; %Flow1
 ; GCN-NEXT:    s_get_pc_i64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc11:
-; GCN-NEXT:    s_add_co_u32 s0, s0, (.LBB9_5-.Lpost_getpc11)&4294967295
-; GCN-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB9_5-.Lpost_getpc11)>>32
+; GCN-NEXT:  .Lpost_getpc9:
+; GCN-NEXT:    s_add_co_u32 s0, s0, (.LBB9_5-.Lpost_getpc9)&4294967295
+; GCN-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB9_5-.Lpost_getpc9)>>32
 ; GCN-NEXT:    s_set_pc_i64 s[0:1]
 ; GCN-NEXT:  .LBB9_3: ; %loop.preheader
 ; GCN-NEXT:    s_mov_b32 vcc_lo, 0
@@ -1030,9 +1022,9 @@ define amdgpu_kernel void @analyze_mask_branch() #0 {
 ; GCN-NEXT:  ; %bb.8: ; %loop
 ; GCN-NEXT:    ; in Loop: Header=BB9_4 Depth=1
 ; GCN-NEXT:    s_get_pc_i64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc12:
-; GCN-NEXT:    s_add_co_u32 s0, s0, (.LBB9_4-.Lpost_getpc12)&4294967295
-; GCN-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB9_4-.Lpost_getpc12)>>32
+; GCN-NEXT:  .Lpost_getpc10:
+; GCN-NEXT:    s_add_co_u32 s0, s0, (.LBB9_4-.Lpost_getpc10)&4294967295
+; GCN-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB9_4-.Lpost_getpc10)>>32
 ; GCN-NEXT:    s_set_pc_i64 s[0:1]
 ; GCN-NEXT:  .LBB9_5: ; %UnifiedReturnBlock
 ; GCN-NEXT:    s_endpgm
@@ -1056,8 +1048,8 @@ define amdgpu_kernel void @analyze_mask_branch() #0 {
 ; GCN-ADD-PC64-NEXT:    s_and_not1_saveexec_b32 s0, s0
 ; GCN-ADD-PC64-NEXT:    s_cbranch_execnz .LBB9_3
 ; GCN-ADD-PC64-NEXT:  ; %bb.6: ; %Flow1
-; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB9_5-.Lpost_addpc11
-; GCN-ADD-PC64-NEXT:  .Lpost_addpc11:
+; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB9_5-.Lpost_addpc9
+; GCN-ADD-PC64-NEXT:  .Lpost_addpc9:
 ; GCN-ADD-PC64-NEXT:  .LBB9_3: ; %loop.preheader
 ; GCN-ADD-PC64-NEXT:    s_mov_b32 vcc_lo, 0
 ; GCN-ADD-PC64-NEXT:  .LBB9_4: ; %loop
@@ -1075,8 +1067,8 @@ define amdgpu_kernel void @analyze_mask_branch() #0 {
 ; GCN-ADD-PC64-NEXT:    s_cbranch_vccnz .LBB9_5
 ; GCN-ADD-PC64-NEXT:  ; %bb.8: ; %loop
 ; GCN-ADD-PC64-NEXT:    ; in Loop: Header=BB9_4 Depth=1
-; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB9_4-.Lpost_addpc12
-; GCN-ADD-PC64-NEXT:  .Lpost_addpc12:
+; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB9_4-.Lpost_addpc10
+; GCN-ADD-PC64-NEXT:  .Lpost_addpc10:
 ; GCN-ADD-PC64-NEXT:  .LBB9_5: ; %UnifiedReturnBlock
 ; GCN-ADD-PC64-NEXT:    s_endpgm
 ; GCN-ENABLE-ADD-PC64-LABEL: analyze_mask_branch:
@@ -1152,176 +1144,148 @@ define amdgpu_kernel void @long_branch_hang(ptr addrspace(1) nocapture %arg, i32
 ; GCN:       ; %bb.0: ; %bb
 ; GCN-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
 ; GCN-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2c nv
-; GCN-NEXT:    s_mov_b32 s7, -1
+; GCN-NEXT:    s_mov_b32 s8, -1
 ; GCN-NEXT:    s_wait_kmcnt 0x0
 ; GCN-NEXT:    s_cmp_eq_u32 s0, 0
 ; GCN-NEXT:    s_cselect_b32 s6, -1, 0
 ; GCN-NEXT:    s_cmp_lg_u32 s0, 0
 ; GCN-NEXT:    s_mov_b32 s0, 0
-; GCN-NEXT:    s_cselect_b32 s8, -1, 0
+; GCN-NEXT:    s_cselect_b32 s7, -1, 0
 ; GCN-NEXT:    s_cmp_lt_i32 s3, 6
-; GCN-NEXT:    s_cbranch_scc0 .LBB10_1
-; GCN-NEXT:  ; %bb.10: ; %bb
+; GCN-NEXT:    s_cbranch_scc1 .LBB10_1
+; GCN-NEXT:  ; %bb.7: ; %bb
 ; GCN-NEXT:    s_get_pc_i64 s[10:11]
-; GCN-NEXT:  .Lpost_getpc14:
-; GCN-NEXT:    s_add_co_u32 s10, s10, (.LBB10_4-.Lpost_getpc14)&4294967295
-; GCN-NEXT:    s_add_co_ci_u32 s11, s11, (.LBB10_4-.Lpost_getpc14)>>32
+; GCN-NEXT:  .Lpost_getpc11:
+; GCN-NEXT:    s_add_co_u32 s10, s10, (.LBB10_2-.Lpost_getpc11)&4294967295
+; GCN-NEXT:    s_add_co_ci_u32 s11, s11, (.LBB10_2-.Lpost_getpc11)>>32
 ; GCN-NEXT:    s_set_pc_i64 s[10:11]
-; GCN-NEXT:  .LBB10_1: ; %Flow
-; GCN-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s7
-; GCN-NEXT:    s_cbranch_vccnz .LBB10_2
-; GCN-NEXT:  ; %bb.12: ; %Flow
-; GCN-NEXT:    s_get_pc_i64 s[8:9]
-; GCN-NEXT:  .Lpost_getpc15:
-; GCN-NEXT:    s_add_co_u32 s8, s8, (.LBB10_5-.Lpost_getpc15)&4294967295
-; GCN-NEXT:    s_add_co_ci_u32 s9, s9, (.LBB10_5-.Lpost_getpc15)>>32
-; GCN-NEXT:    s_set_pc_i64 s[8:9]
-; GCN-NEXT:  .LBB10_2: ; %Flow5
-; GCN-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GCN-NEXT:    s_cbranch_vccz .LBB10_3
-; GCN-NEXT:  ; %bb.14: ; %Flow5
-; GCN-NEXT:    s_get_pc_i64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc16:
-; GCN-NEXT:    s_add_co_u32 s0, s0, (.LBB10_6-.Lpost_getpc16)&4294967295
-; GCN-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB10_6-.Lpost_getpc16)>>32
-; GCN-NEXT:    s_set_pc_i64 s[0:1]
-; GCN-NEXT:  .LBB10_3: ; %bb14
-; GCN-NEXT:    s_cmp_lt_i32 s1, 9
-; GCN-NEXT:    s_cselect_b32 s0, -1, 0
-; GCN-NEXT:    s_cmp_lt_i32 s2, s3
-; GCN-NEXT:    s_cselect_b32 s1, -1, 0
-; GCN-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GCN-NEXT:    s_or_b32 s0, s1, s0
-; GCN-NEXT:    s_and_b32 s0, s6, s0
-; GCN-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; GCN-NEXT:  ; %bb.8: ; %bb14
-; GCN-NEXT:    s_get_pc_i64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc13:
-; GCN-NEXT:    s_add_co_u32 s0, s0, (.LBB10_7-.Lpost_getpc13)&4294967295
-; GCN-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB10_7-.Lpost_getpc13)>>32
-; GCN-NEXT:    s_set_pc_i64 s[0:1]
-; GCN-NEXT:  .LBB10_4: ; %bb13
+; GCN-NEXT:  .LBB10_1: ; %bb13
 ; GCN-NEXT:    ;;#ASMSTART
 ; GCN-NEXT:    v_nop_e64
 ; GCN-NEXT:    v_nop_e64
 ; GCN-NEXT:    ;;#ASMEND
 ; GCN-NEXT:    s_sleep 0
-; GCN-NEXT:    s_mov_b32 s0, s8
+; GCN-NEXT:    s_mov_b32 s8, 0
+; GCN-NEXT:    s_mov_b32 s0, s7
 ; GCN-NEXT:    s_sleep 0
-; GCN-NEXT:    s_cbranch_execz .LBB10_5
-; GCN-NEXT:  ; %bb.16: ; %bb13
-; GCN-NEXT:    s_get_pc_i64 s[8:9]
-; GCN-NEXT:  .Lpost_getpc17:
-; GCN-NEXT:    s_add_co_u32 s8, s8, (.LBB10_2-.Lpost_getpc17)&4294967295
-; GCN-NEXT:    s_add_co_ci_u32 s9, s9, (.LBB10_2-.Lpost_getpc17)>>32
-; GCN-NEXT:    s_set_pc_i64 s[8:9]
-; GCN-NEXT:  .LBB10_5: ; %bb9
+; GCN-NEXT:  .LBB10_2: ; %Flow
+; GCN-NEXT:    s_and_b32 s7, s8, exec_lo
+; GCN-NEXT:    s_cselect_b32 s7, 1, 0
+; GCN-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GCN-NEXT:    s_cmp_lg_u32 s7, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB10_4
+; GCN-NEXT:  ; %bb.3: ; %bb9
 ; GCN-NEXT:    s_cmp_lt_i32 s3, 11
 ; GCN-NEXT:    s_cselect_b32 s0, -1, 0
 ; GCN-NEXT:    s_cmp_ge_i32 s2, s3
 ; GCN-NEXT:    s_cselect_b32 s7, -1, 0
-; GCN-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GCN-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GCN-NEXT:    s_and_b32 s0, s7, s0
-; GCN-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GCN-NEXT:    s_cbranch_vccnz .LBB10_6
-; GCN-NEXT:  ; %bb.18: ; %bb9
-; GCN-NEXT:    s_get_pc_i64 s[8:9]
-; GCN-NEXT:  .Lpost_getpc18:
-; GCN-NEXT:    s_add_co_u32 s8, s8, (.LBB10_3-.Lpost_getpc18)&4294967295
-; GCN-NEXT:    s_add_co_ci_u32 s9, s9, (.LBB10_3-.Lpost_getpc18)>>32
-; GCN-NEXT:    s_set_pc_i64 s[8:9]
-; GCN-NEXT:  .LBB10_6:
-; GCN-NEXT:    ; implicit-def: $vgpr0
-; GCN-NEXT:  .LBB10_7: ; %bb19
+; GCN-NEXT:  .LBB10_4: ; %Flow5
+; GCN-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GCN-NEXT:    s_and_b32 s0, s0, exec_lo
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s0, 1
+; GCN-NEXT:    ; implicit-def: $sgpr0
+; GCN-NEXT:    s_cbranch_scc0 .LBB10_5
+; GCN-NEXT:  ; %bb.9: ; %Flow5
+; GCN-NEXT:    s_get_pc_i64 s[2:3]
+; GCN-NEXT:  .Lpost_getpc12:
+; GCN-NEXT:    s_add_co_u32 s2, s2, (.LBB10_6-.Lpost_getpc12)&4294967295
+; GCN-NEXT:    s_add_co_ci_u32 s3, s3, (.LBB10_6-.Lpost_getpc12)>>32
+; GCN-NEXT:    s_set_pc_i64 s[2:3]
+; GCN-NEXT:  .LBB10_5: ; %bb14
+; GCN-NEXT:    s_cmp_lt_i32 s1, 9
+; GCN-NEXT:    s_cselect_b32 s0, -1, 0
+; GCN-NEXT:    s_cmp_lt_i32 s2, s3
+; GCN-NEXT:    s_cselect_b32 s1, -1, 0
+; GCN-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GCN-NEXT:    s_or_b32 s0, s1, s0
+; GCN-NEXT:    s_and_b32 s0, s6, s0
+; GCN-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GCN-NEXT:    s_and_b32 s0, s0, exec_lo
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:  .LBB10_6: ; %bb19
 ; GCN-NEXT:    s_clause 0x1
-; GCN-NEXT:    s_load_b64 s[0:1], s[4:5], 0x3c nv
-; GCN-NEXT:    s_load_b64 s[2:3], s[4:5], 0x24 nv
-; GCN-NEXT:    v_mov_b32_e32 v1, 0
+; GCN-NEXT:    s_load_b64 s[2:3], s[4:5], 0x3c nv
+; GCN-NEXT:    s_load_b64 s[6:7], s[4:5], 0x24 nv
+; GCN-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s0
 ; GCN-NEXT:    s_wait_kmcnt 0x0
-; GCN-NEXT:    s_lshl_b64 s[0:1], s[0:1], 2
+; GCN-NEXT:    s_lshl_b64 s[0:1], s[2:3], 2
 ; GCN-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GCN-NEXT:    s_add_nc_u64 s[0:1], s[2:3], s[0:1]
-; GCN-NEXT:    global_store_b32 v1, v0, s[0:1]
+; GCN-NEXT:    s_add_nc_u64 s[0:1], s[6:7], s[0:1]
+; GCN-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GCN-NEXT:    s_endpgm
 ;
 ; GCN-ADD-PC64-LABEL: long_branch_hang:
 ; GCN-ADD-PC64:       ; %bb.0: ; %bb
 ; GCN-ADD-PC64-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
 ; GCN-ADD-PC64-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2c nv
-; GCN-ADD-PC64-NEXT:    s_mov_b32 s7, -1
+; GCN-ADD-PC64-NEXT:    s_mov_b32 s8, -1
 ; GCN-ADD-PC64-NEXT:    s_wait_kmcnt 0x0
 ; GCN-ADD-PC64-NEXT:    s_cmp_eq_u32 s0, 0
 ; GCN-ADD-PC64-NEXT:    s_cselect_b32 s6, -1, 0
 ; GCN-ADD-PC64-NEXT:    s_cmp_lg_u32 s0, 0
 ; GCN-ADD-PC64-NEXT:    s_mov_b32 s0, 0
-; GCN-ADD-PC64-NEXT:    s_cselect_b32 s8, -1, 0
+; GCN-ADD-PC64-NEXT:    s_cselect_b32 s7, -1, 0
 ; GCN-ADD-PC64-NEXT:    s_cmp_lt_i32 s3, 6
-; GCN-ADD-PC64-NEXT:    s_cbranch_scc0 .LBB10_1
-; GCN-ADD-PC64-NEXT:  ; %bb.10: ; %bb
-; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB10_4-.Lpost_addpc14
-; GCN-ADD-PC64-NEXT:  .Lpost_addpc14:
-; GCN-ADD-PC64-NEXT:  .LBB10_1: ; %Flow
-; GCN-ADD-PC64-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s7
-; GCN-ADD-PC64-NEXT:    s_cbranch_vccnz .LBB10_2
-; GCN-ADD-PC64-NEXT:  ; %bb.12: ; %Flow
-; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB10_5-.Lpost_addpc15
-; GCN-ADD-PC64-NEXT:  .Lpost_addpc15:
-; GCN-ADD-PC64-NEXT:  .LBB10_2: ; %Flow5
-; GCN-ADD-PC64-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GCN-ADD-PC64-NEXT:    s_cbranch_vccz .LBB10_3
-; GCN-ADD-PC64-NEXT:  ; %bb.14: ; %Flow5
-; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB10_6-.Lpost_addpc16
-; GCN-ADD-PC64-NEXT:  .Lpost_addpc16:
-; GCN-ADD-PC64-NEXT:  .LBB10_3: ; %bb14
-; GCN-ADD-PC64-NEXT:    s_cmp_lt_i32 s1, 9
-; GCN-ADD-PC64-NEXT:    s_cselect_b32 s0, -1, 0
-; GCN-ADD-PC64-NEXT:    s_cmp_lt_i32 s2, s3
-; GCN-ADD-PC64-NEXT:    s_cselect_b32 s1, -1, 0
-; GCN-ADD-PC64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GCN-ADD-PC64-NEXT:    s_or_b32 s0, s1, s0
-; GCN-ADD-PC64-NEXT:    s_and_b32 s0, s6, s0
-; GCN-ADD-PC64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GCN-ADD-PC64-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; GCN-ADD-PC64-NEXT:  ; %bb.8: ; %bb14
-; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB10_7-.Lpost_addpc13
-; GCN-ADD-PC64-NEXT:  .Lpost_addpc13:
-; GCN-ADD-PC64-NEXT:  .LBB10_4: ; %bb13
+; GCN-ADD-PC64-NEXT:    s_cbranch_scc1 .LBB10_1
+; GCN-ADD-PC64-NEXT:  ; %bb.7: ; %bb
+; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB10_2-.Lpost_addpc11
+; GCN-ADD-PC64-NEXT:  .Lpost_addpc11:
+; GCN-ADD-PC64-NEXT:  .LBB10_1: ; %bb13
 ; GCN-ADD-PC64-NEXT:    ;;#ASMSTART
 ; GCN-ADD-PC64-NEXT:    v_nop_e64
 ; GCN-ADD-PC64-NEXT:    v_nop_e64
 ; GCN-ADD-PC64-NEXT:    ;;#ASMEND
 ; GCN-ADD-PC64-NEXT:    s_sleep 0
-; GCN-ADD-PC64-NEXT:    s_mov_b32 s0, s8
+; GCN-ADD-PC64-NEXT:    s_mov_b32 s8, 0
+; GCN-ADD-PC64-NEXT:    s_mov_b32 s0, s7
 ; GCN-ADD-PC64-NEXT:    s_sleep 0
-; GCN-ADD-PC64-NEXT:    s_cbranch_execz .LBB10_5
-; GCN-ADD-PC64-NEXT:  ; %bb.16: ; %bb13
-; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB10_2-.Lpost_addpc17
-; GCN-ADD-PC64-NEXT:  .Lpost_addpc17:
-; GCN-ADD-PC64-NEXT:  .LBB10_5: ; %bb9
+; GCN-ADD-PC64-NEXT:  .LBB10_2: ; %Flow
+; GCN-ADD-PC64-NEXT:    s_and_b32 s7, s8, exec_lo
+; GCN-ADD-PC64-NEXT:    s_cselect_b32 s7, 1, 0
+; GCN-ADD-PC64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GCN-ADD-PC64-NEXT:    s_cmp_lg_u32 s7, 1
+; GCN-ADD-PC64-NEXT:    s_cbranch_scc1 .LBB10_4
+; GCN-ADD-PC64-NEXT:  ; %bb.3: ; %bb9
 ; GCN-ADD-PC64-NEXT:    s_cmp_lt_i32 s3, 11
 ; GCN-ADD-PC64-NEXT:    s_cselect_b32 s0, -1, 0
 ; GCN-ADD-PC64-NEXT:    s_cmp_ge_i32 s2, s3
 ; GCN-ADD-PC64-NEXT:    s_cselect_b32 s7, -1, 0
-; GCN-ADD-PC64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GCN-ADD-PC64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GCN-ADD-PC64-NEXT:    s_and_b32 s0, s7, s0
-; GCN-ADD-PC64-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GCN-ADD-PC64-NEXT:    s_cbranch_vccnz .LBB10_6
-; GCN-ADD-PC64-NEXT:  ; %bb.18: ; %bb9
-; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB10_3-.Lpost_addpc18
-; GCN-ADD-PC64-NEXT:  .Lpost_addpc18:
-; GCN-ADD-PC64-NEXT:  .LBB10_6:
-; GCN-ADD-PC64-NEXT:    ; implicit-def: $vgpr0
-; GCN-ADD-PC64-NEXT:  .LBB10_7: ; %bb19
+; GCN-ADD-PC64-NEXT:  .LBB10_4: ; %Flow5
+; GCN-ADD-PC64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GCN-ADD-PC64-NEXT:    s_and_b32 s0, s0, exec_lo
+; GCN-ADD-PC64-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-ADD-PC64-NEXT:    s_cmp_lg_u32 s0, 1
+; GCN-ADD-PC64-NEXT:    ; implicit-def: $sgpr0
+; GCN-ADD-PC64-NEXT:    s_cbranch_scc0 .LBB10_5
+; GCN-ADD-PC64-NEXT:  ; %bb.9: ; %Flow5
+; GCN-ADD-PC64-NEXT:    s_add_pc_i64 .LBB10_6-.Lpost_addpc12
+; GCN-ADD-PC64-NEXT:  .Lpost_addpc12:
+; GCN-ADD-PC64-NEXT:  .LBB10_5: ; %bb14
+; GCN-ADD-PC64-NEXT:    s_cmp_lt_i32 s1, 9
+; GCN-ADD-PC64-NEXT:    s_cselect_b32 s0, -1, 0
+; GCN-ADD-PC64-NEXT:    s_cmp_lt_i32 s2, s3
+; GCN-ADD-PC64-NEXT:    s_cselect_b32 s1, -1, 0
+; GCN-ADD-PC64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GCN-ADD-PC64-NEXT:    s_or_b32 s0, s1, s0
+; GCN-ADD-PC64-NEXT:    s_and_b32 s0, s6, s0
+; GCN-ADD-PC64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GCN-ADD-PC64-NEXT:    s_and_b32 s0, s0, exec_lo
+; GCN-ADD-PC64-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-ADD-PC64-NEXT:  .LBB10_6: ; %bb19
 ; GCN-ADD-PC64-NEXT:    s_clause 0x1
-; GCN-ADD-PC64-NEXT:    s_load_b64 s[0:1], s[4:5], 0x3c nv
-; GCN-ADD-PC64-NEXT:    s_load_b64 s[2:3], s[4:5], 0x24 nv
-; GCN-ADD-PC64-NEXT:    v_mov_b32_e32 v1, 0
+; GCN-ADD-PC64-NEXT:    s_load_b64 s[2:3], s[4:5], 0x3c nv
+; GCN-ADD-PC64-NEXT:    s_load_b64 s[6:7], s[4:5], 0x24 nv
+; GCN-ADD-PC64-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s0
 ; GCN-ADD-PC64-NEXT:    s_wait_kmcnt 0x0
-; GCN-ADD-PC64-NEXT:    s_lshl_b64 s[0:1], s[0:1], 2
+; GCN-ADD-PC64-NEXT:    s_lshl_b64 s[0:1], s[2:3], 2
 ; GCN-ADD-PC64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GCN-ADD-PC64-NEXT:    s_add_nc_u64 s[0:1], s[2:3], s[0:1]
-; GCN-ADD-PC64-NEXT:    global_store_b32 v1, v0, s[0:1]
+; GCN-ADD-PC64-NEXT:    s_add_nc_u64 s[0:1], s[6:7], s[0:1]
+; GCN-ADD-PC64-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GCN-ADD-PC64-NEXT:    s_endpgm
 ; GCN-ENABLE-ADD-PC64-LABEL: long_branch_hang:
 ; GCN-ENABLE-ADD-PC64:       ; %bb.0: ; %bb

diff  --git a/llvm/test/CodeGen/AMDGPU/branch-relaxation.ll b/llvm/test/CodeGen/AMDGPU/branch-relaxation.ll
index 55ac36a53bfd6..e467ee195e18a 100644
--- a/llvm/test/CodeGen/AMDGPU/branch-relaxation.ll
+++ b/llvm/test/CodeGen/AMDGPU/branch-relaxation.ll
@@ -574,23 +574,33 @@ define amdgpu_kernel void @uniform_unconditional_min_long_forward_branch(ptr add
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_cmp_eq_u32 s0, 0
 ; GCN-NEXT:    s_mov_b64 s[0:1], -1
-; GCN-NEXT:    s_cbranch_scc0 .LBB5_1
-; GCN-NEXT:  ; %bb.7: ; %bb0
-; GCN-NEXT:    s_getpc_b64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc5:
-; GCN-NEXT:    s_add_u32 s0, s0, (.LBB5_4-.Lpost_getpc5)&4294967295
-; GCN-NEXT:    s_addc_u32 s1, s1, (.LBB5_4-.Lpost_getpc5)>>32
-; GCN-NEXT:    s_setpc_b64 s[0:1]
-; GCN-NEXT:  .LBB5_1: ; %Flow
-; GCN-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; GCN-NEXT:    s_cbranch_vccnz .LBB5_3
-; GCN-NEXT:  .LBB5_2: ; %bb2
+; GCN-NEXT:    s_cbranch_scc1 .LBB5_1
+; GCN-NEXT:  ; %bb.5: ; %bb0
+; GCN-NEXT:    s_getpc_b64 s[2:3]
+; GCN-NEXT:  .Lpost_getpc4:
+; GCN-NEXT:    s_add_u32 s2, s2, (.LBB5_2-.Lpost_getpc4)&4294967295
+; GCN-NEXT:    s_addc_u32 s3, s3, (.LBB5_2-.Lpost_getpc4)>>32
+; GCN-NEXT:    s_setpc_b64 s[2:3]
+; GCN-NEXT:  .LBB5_1: ; %bb3
+; GCN-NEXT:    ;;#ASMSTART
+; GCN-NEXT:    v_nop_e64
+; GCN-NEXT:    v_nop_e64
+; GCN-NEXT:    v_nop_e64
+; GCN-NEXT:    v_nop_e64
+; GCN-NEXT:    ;;#ASMEND
+; GCN-NEXT:    s_mov_b64 s[0:1], 0
+; GCN-NEXT:  .LBB5_2: ; %Flow
+; GCN-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s0, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB5_4
+; GCN-NEXT:  ; %bb.3: ; %bb2
 ; GCN-NEXT:    s_mov_b32 s3, 0xf000
 ; GCN-NEXT:    s_mov_b32 s2, -1
 ; GCN-NEXT:    v_mov_b32_e32 v0, 17
 ; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GCN-NEXT:    s_waitcnt vmcnt(0)
-; GCN-NEXT:  .LBB5_3: ; %bb4
+; GCN-NEXT:  .LBB5_4: ; %bb4
 ; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9
 ; GCN-NEXT:    s_mov_b32 s3, 0xf000
 ; GCN-NEXT:    s_mov_b32 s2, -1
@@ -600,26 +610,6 @@ define amdgpu_kernel void @uniform_unconditional_min_long_forward_branch(ptr add
 ; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GCN-NEXT:    s_waitcnt vmcnt(0)
 ; GCN-NEXT:    s_endpgm
-; GCN-NEXT:  .LBB5_4: ; %bb3
-; GCN-NEXT:    ;;#ASMSTART
-; GCN-NEXT:    v_nop_e64
-; GCN-NEXT:    v_nop_e64
-; GCN-NEXT:    v_nop_e64
-; GCN-NEXT:    v_nop_e64
-; GCN-NEXT:    ;;#ASMEND
-; GCN-NEXT:    s_cbranch_execnz .LBB5_5
-; GCN-NEXT:  ; %bb.9: ; %bb3
-; GCN-NEXT:    s_getpc_b64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc6:
-; GCN-NEXT:    s_add_u32 s0, s0, (.LBB5_2-.Lpost_getpc6)&4294967295
-; GCN-NEXT:    s_addc_u32 s1, s1, (.LBB5_2-.Lpost_getpc6)>>32
-; GCN-NEXT:    s_setpc_b64 s[0:1]
-; GCN-NEXT:  .LBB5_5: ; %bb3
-; GCN-NEXT:    s_getpc_b64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc4:
-; GCN-NEXT:    s_add_u32 s0, s0, (.LBB5_3-.Lpost_getpc4)&4294967295
-; GCN-NEXT:    s_addc_u32 s1, s1, (.LBB5_3-.Lpost_getpc4)>>32
-; GCN-NEXT:    s_setpc_b64 s[0:1]
 ;
 ; GFX11-LABEL: uniform_unconditional_min_long_forward_branch:
 ; GFX11:       ; %bb.0: ; %bb0
@@ -627,15 +617,34 @@ define amdgpu_kernel void @uniform_unconditional_min_long_forward_branch(ptr add
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_eq_u32 s0, 0
 ; GFX11-NEXT:    s_mov_b64 s[0:1], -1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB5_1
+; GFX11-NEXT:  ; %bb.5: ; %bb0
+; GFX11-NEXT:    s_getpc_b64 s[2:3]
+; GFX11-NEXT:  .Lpost_getpc5:
+; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
+; GFX11-NEXT:    s_add_u32 s2, s2, (.LBB5_2-.Lpost_getpc5)&4294967295
+; GFX11-NEXT:    s_addc_u32 s3, s3, (.LBB5_2-.Lpost_getpc5)>>32
+; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
+; GFX11-NEXT:    s_setpc_b64 s[2:3]
+; GFX11-NEXT:  .LBB5_1: ; %bb3
+; GFX11-NEXT:    s_mov_b64 s[0:1], 0
+; GFX11-NEXT:    ;;#ASMSTART
+; GFX11-NEXT:    v_nop_e64
+; GFX11-NEXT:    v_nop_e64
+; GFX11-NEXT:    v_nop_e64
+; GFX11-NEXT:    v_nop_e64
+; GFX11-NEXT:    ;;#ASMEND
+; GFX11-NEXT:  .LBB5_2: ; %Flow
+; GFX11-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
 ; GFX11-NEXT:    s_cbranch_scc1 .LBB5_4
-; GFX11-NEXT:  ; %bb.1: ; %Flow
-; GFX11-NEXT:    s_and_not1_b64 vcc, exec, s[0:1]
-; GFX11-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-NEXT:  .LBB5_2: ; %bb2
+; GFX11-NEXT:  ; %bb.3: ; %bb2
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 17
 ; GFX11-NEXT:    global_store_b32 v[0:1], v0, off dlc
 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
-; GFX11-NEXT:  .LBB5_3: ; %bb4
+; GFX11-NEXT:  .LBB5_4: ; %bb4
 ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    v_mov_b32_e32 v1, 63
@@ -643,30 +652,6 @@ define amdgpu_kernel void @uniform_unconditional_min_long_forward_branch(ptr add
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1] dlc
 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
 ; GFX11-NEXT:    s_endpgm
-; GFX11-NEXT:  .LBB5_4: ; %bb3
-; GFX11-NEXT:    ;;#ASMSTART
-; GFX11-NEXT:    v_nop_e64
-; GFX11-NEXT:    v_nop_e64
-; GFX11-NEXT:    v_nop_e64
-; GFX11-NEXT:    v_nop_e64
-; GFX11-NEXT:    ;;#ASMEND
-; GFX11-NEXT:    s_cbranch_execnz .LBB5_5
-; GFX11-NEXT:  ; %bb.7: ; %bb3
-; GFX11-NEXT:    s_getpc_b64 s[0:1]
-; GFX11-NEXT:  .Lpost_getpc6:
-; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
-; GFX11-NEXT:    s_add_u32 s0, s0, (.LBB5_2-.Lpost_getpc6)&4294967295
-; GFX11-NEXT:    s_addc_u32 s1, s1, (.LBB5_2-.Lpost_getpc6)>>32
-; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
-; GFX11-NEXT:    s_setpc_b64 s[0:1]
-; GFX11-NEXT:  .LBB5_5: ; %bb3
-; GFX11-NEXT:    s_getpc_b64 s[0:1]
-; GFX11-NEXT:  .Lpost_getpc5:
-; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
-; GFX11-NEXT:    s_add_u32 s0, s0, (.LBB5_3-.Lpost_getpc5)&4294967295
-; GFX11-NEXT:    s_addc_u32 s1, s1, (.LBB5_3-.Lpost_getpc5)>>32
-; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
-; GFX11-NEXT:    s_setpc_b64 s[0:1]
 ;
 ; GFX12-LABEL: uniform_unconditional_min_long_forward_branch:
 ; GFX12:       ; %bb.0: ; %bb0
@@ -674,53 +659,40 @@ define amdgpu_kernel void @uniform_unconditional_min_long_forward_branch(ptr add
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s0, 0
 ; GFX12-NEXT:    s_mov_b32 s0, -1
-; GFX12-NEXT:    s_cbranch_scc0 .LBB5_1
-; GFX12-NEXT:  ; %bb.7: ; %bb0
-; GFX12-NEXT:    s_getpc_b64 s[0:1]
-; GFX12-NEXT:  .Lpost_getpc6:
+; GFX12-NEXT:    s_cbranch_scc1 .LBB5_1
+; GFX12-NEXT:  ; %bb.5: ; %bb0
+; GFX12-NEXT:    s_getpc_b64 s[2:3]
+; GFX12-NEXT:  .Lpost_getpc5:
 ; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_add_co_u32 s0, s0, (.LBB5_4-.Lpost_getpc6)&4294967295
-; GFX12-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB5_4-.Lpost_getpc6)>>32
+; GFX12-NEXT:    s_add_co_u32 s2, s2, (.LBB5_2-.Lpost_getpc5)&4294967295
+; GFX12-NEXT:    s_add_co_ci_u32 s3, s3, (.LBB5_2-.Lpost_getpc5)>>32
 ; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_setpc_b64 s[0:1]
-; GFX12-NEXT:  .LBB5_1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX12-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX12-NEXT:  .LBB5_2: ; %bb2
+; GFX12-NEXT:    s_setpc_b64 s[2:3]
+; GFX12-NEXT:  .LBB5_1: ; %bb3
+; GFX12-NEXT:    s_mov_b32 s0, 0
+; GFX12-NEXT:    ;;#ASMSTART
+; GFX12-NEXT:    v_nop_e64
+; GFX12-NEXT:    v_nop_e64
+; GFX12-NEXT:    v_nop_e64
+; GFX12-NEXT:    v_nop_e64
+; GFX12-NEXT:    ;;#ASMEND
+; GFX12-NEXT:  .LBB5_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB5_4
+; GFX12-NEXT:  ; %bb.3: ; %bb2
 ; GFX12-NEXT:    v_mov_b32_e32 v0, 17
 ; GFX12-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS
 ; GFX12-NEXT:    s_wait_storecnt 0x0
-; GFX12-NEXT:  .LBB5_3: ; %bb4
+; GFX12-NEXT:  .LBB5_4: ; %bb4
 ; GFX12-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
 ; GFX12-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 63
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    global_store_b32 v0, v1, s[0:1] scope:SCOPE_SYS
 ; GFX12-NEXT:    s_wait_storecnt 0x0
 ; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB5_4: ; %bb3
-; GFX12-NEXT:    ;;#ASMSTART
-; GFX12-NEXT:    v_nop_e64
-; GFX12-NEXT:    v_nop_e64
-; GFX12-NEXT:    v_nop_e64
-; GFX12-NEXT:    v_nop_e64
-; GFX12-NEXT:    ;;#ASMEND
-; GFX12-NEXT:    s_cbranch_execnz .LBB5_5
-; GFX12-NEXT:  ; %bb.9: ; %bb3
-; GFX12-NEXT:    s_getpc_b64 s[0:1]
-; GFX12-NEXT:  .Lpost_getpc7:
-; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_add_co_u32 s0, s0, (.LBB5_2-.Lpost_getpc7)&4294967295
-; GFX12-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB5_2-.Lpost_getpc7)>>32
-; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_setpc_b64 s[0:1]
-; GFX12-NEXT:  .LBB5_5: ; %bb3
-; GFX12-NEXT:    s_getpc_b64 s[0:1]
-; GFX12-NEXT:  .Lpost_getpc5:
-; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_add_co_u32 s0, s0, (.LBB5_3-.Lpost_getpc5)&4294967295
-; GFX12-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB5_3-.Lpost_getpc5)>>32
-; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_setpc_b64 s[0:1]
 bb0:
   %tmp = icmp ne i32 %arg1, 0
   br i1 %tmp, label %bb2, label %bb3
@@ -760,9 +732,9 @@ define amdgpu_kernel void @uniform_unconditional_min_long_backward_branch(ptr ad
 ; GCN-NEXT:  ; %bb.3: ; %loop
 ; GCN-NEXT:    ; in Loop: Header=BB6_1 Depth=1
 ; GCN-NEXT:    s_getpc_b64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc7:
-; GCN-NEXT:    s_add_u32 s0, s0, (.LBB6_1-.Lpost_getpc7)&4294967295
-; GCN-NEXT:    s_addc_u32 s1, s1, (.LBB6_1-.Lpost_getpc7)>>32
+; GCN-NEXT:  .Lpost_getpc5:
+; GCN-NEXT:    s_add_u32 s0, s0, (.LBB6_1-.Lpost_getpc5)&4294967295
+; GCN-NEXT:    s_addc_u32 s1, s1, (.LBB6_1-.Lpost_getpc5)>>32
 ; GCN-NEXT:    s_setpc_b64 s[0:1]
 ; GCN-NEXT:  .LBB6_2: ; %DummyReturnBlock
 ; GCN-NEXT:    s_endpgm
@@ -783,10 +755,10 @@ define amdgpu_kernel void @uniform_unconditional_min_long_backward_branch(ptr ad
 ; GFX11-NEXT:  ; %bb.3: ; %loop
 ; GFX11-NEXT:    ; in Loop: Header=BB6_1 Depth=1
 ; GFX11-NEXT:    s_getpc_b64 s[0:1]
-; GFX11-NEXT:  .Lpost_getpc7:
+; GFX11-NEXT:  .Lpost_getpc6:
 ; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
-; GFX11-NEXT:    s_add_u32 s0, s0, (.LBB6_1-.Lpost_getpc7)&4294967295
-; GFX11-NEXT:    s_addc_u32 s1, s1, (.LBB6_1-.Lpost_getpc7)>>32
+; GFX11-NEXT:    s_add_u32 s0, s0, (.LBB6_1-.Lpost_getpc6)&4294967295
+; GFX11-NEXT:    s_addc_u32 s1, s1, (.LBB6_1-.Lpost_getpc6)>>32
 ; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
 ; GFX11-NEXT:    s_setpc_b64 s[0:1]
 ; GFX11-NEXT:  .LBB6_2: ; %DummyReturnBlock
@@ -807,10 +779,10 @@ define amdgpu_kernel void @uniform_unconditional_min_long_backward_branch(ptr ad
 ; GFX12-NEXT:  ; %bb.3: ; %loop
 ; GFX12-NEXT:    ; in Loop: Header=BB6_1 Depth=1
 ; GFX12-NEXT:    s_getpc_b64 s[0:1]
-; GFX12-NEXT:  .Lpost_getpc8:
+; GFX12-NEXT:  .Lpost_getpc6:
 ; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_add_co_u32 s0, s0, (.LBB6_1-.Lpost_getpc8)&4294967295
-; GFX12-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB6_1-.Lpost_getpc8)>>32
+; GFX12-NEXT:    s_add_co_u32 s0, s0, (.LBB6_1-.Lpost_getpc6)&4294967295
+; GFX12-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB6_1-.Lpost_getpc6)>>32
 ; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-NEXT:    s_setpc_b64 s[0:1]
 ; GFX12-NEXT:  .LBB6_2: ; %DummyReturnBlock
@@ -846,13 +818,15 @@ define amdgpu_kernel void @expand_requires_expand(i32 %cond0) #0 {
 ; GCN-NEXT:    s_cmp_lg_u32 s0, 3
 ; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GCN-NEXT:  .LBB7_2: ; %Flow
-; GCN-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; GCN-NEXT:    s_cbranch_vccz .LBB7_3
+; GCN-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s0, 1
+; GCN-NEXT:    s_cbranch_scc0 .LBB7_3
 ; GCN-NEXT:  ; %bb.5: ; %Flow
 ; GCN-NEXT:    s_getpc_b64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc8:
-; GCN-NEXT:    s_add_u32 s0, s0, (.LBB7_4-.Lpost_getpc8)&4294967295
-; GCN-NEXT:    s_addc_u32 s1, s1, (.LBB7_4-.Lpost_getpc8)>>32
+; GCN-NEXT:  .Lpost_getpc6:
+; GCN-NEXT:    s_add_u32 s0, s0, (.LBB7_4-.Lpost_getpc6)&4294967295
+; GCN-NEXT:    s_addc_u32 s1, s1, (.LBB7_4-.Lpost_getpc6)>>32
 ; GCN-NEXT:    s_setpc_b64 s[0:1]
 ; GCN-NEXT:  .LBB7_3: ; %bb2
 ; GCN-NEXT:    ;;#ASMSTART
@@ -885,15 +859,17 @@ define amdgpu_kernel void @expand_requires_expand(i32 %cond0) #0 {
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 3
 ; GFX11-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GFX11-NEXT:  .LBB7_2: ; %Flow
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    s_and_not1_b64 vcc, exec, s[0:1]
-; GFX11-NEXT:    s_cbranch_vccz .LBB7_3
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc0 .LBB7_3
 ; GFX11-NEXT:  ; %bb.5: ; %Flow
 ; GFX11-NEXT:    s_getpc_b64 s[0:1]
-; GFX11-NEXT:  .Lpost_getpc8:
+; GFX11-NEXT:  .Lpost_getpc7:
 ; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
-; GFX11-NEXT:    s_add_u32 s0, s0, (.LBB7_4-.Lpost_getpc8)&4294967295
-; GFX11-NEXT:    s_addc_u32 s1, s1, (.LBB7_4-.Lpost_getpc8)>>32
+; GFX11-NEXT:    s_add_u32 s0, s0, (.LBB7_4-.Lpost_getpc7)&4294967295
+; GFX11-NEXT:    s_addc_u32 s1, s1, (.LBB7_4-.Lpost_getpc7)>>32
 ; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
 ; GFX11-NEXT:    s_setpc_b64 s[0:1]
 ; GFX11-NEXT:  .LBB7_3: ; %bb2
@@ -927,15 +903,17 @@ define amdgpu_kernel void @expand_requires_expand(i32 %cond0) #0 {
 ; GFX12-NEXT:    s_cmp_lg_u32 s0, 3
 ; GFX12-NEXT:    s_cselect_b32 s0, -1, 0
 ; GFX12-NEXT:  .LBB7_2: ; %Flow
-; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX12-NEXT:    s_cbranch_vccz .LBB7_3
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB7_3
 ; GFX12-NEXT:  ; %bb.5: ; %Flow
 ; GFX12-NEXT:    s_getpc_b64 s[0:1]
-; GFX12-NEXT:  .Lpost_getpc9:
+; GFX12-NEXT:  .Lpost_getpc7:
 ; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_add_co_u32 s0, s0, (.LBB7_4-.Lpost_getpc9)&4294967295
-; GFX12-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB7_4-.Lpost_getpc9)>>32
+; GFX12-NEXT:    s_add_co_u32 s0, s0, (.LBB7_4-.Lpost_getpc7)&4294967295
+; GFX12-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB7_4-.Lpost_getpc7)>>32
 ; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-NEXT:    s_setpc_b64 s[0:1]
 ; GFX12-NEXT:  .LBB7_3: ; %bb2
@@ -991,9 +969,9 @@ define amdgpu_kernel void @uniform_inside_divergent(ptr addrspace(1) %out, i32 %
 ; GCN-NEXT:    s_cbranch_execnz .LBB8_1
 ; GCN-NEXT:  ; %bb.4: ; %entry
 ; GCN-NEXT:    s_getpc_b64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc9:
-; GCN-NEXT:    s_add_u32 s0, s0, (.LBB8_3-.Lpost_getpc9)&4294967295
-; GCN-NEXT:    s_addc_u32 s1, s1, (.LBB8_3-.Lpost_getpc9)>>32
+; GCN-NEXT:  .Lpost_getpc7:
+; GCN-NEXT:    s_add_u32 s0, s0, (.LBB8_3-.Lpost_getpc7)&4294967295
+; GCN-NEXT:    s_addc_u32 s1, s1, (.LBB8_3-.Lpost_getpc7)>>32
 ; GCN-NEXT:    s_setpc_b64 s[0:1]
 ; GCN-NEXT:  .LBB8_1: ; %if
 ; GCN-NEXT:    s_load_dword s8, s[4:5], 0xb
@@ -1103,9 +1081,9 @@ define amdgpu_kernel void @analyze_mask_branch() #0 {
 ; GCN-NEXT:    s_cbranch_execnz .LBB9_3
 ; GCN-NEXT:  ; %bb.6: ; %Flow1
 ; GCN-NEXT:    s_getpc_b64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc10:
-; GCN-NEXT:    s_add_u32 s0, s0, (.LBB9_5-.Lpost_getpc10)&4294967295
-; GCN-NEXT:    s_addc_u32 s1, s1, (.LBB9_5-.Lpost_getpc10)>>32
+; GCN-NEXT:  .Lpost_getpc8:
+; GCN-NEXT:    s_add_u32 s0, s0, (.LBB9_5-.Lpost_getpc8)&4294967295
+; GCN-NEXT:    s_addc_u32 s1, s1, (.LBB9_5-.Lpost_getpc8)>>32
 ; GCN-NEXT:    s_setpc_b64 s[0:1]
 ; GCN-NEXT:  .LBB9_3: ; %loop.preheader
 ; GCN-NEXT:    s_and_b64 vcc, exec, 0
@@ -1126,9 +1104,9 @@ define amdgpu_kernel void @analyze_mask_branch() #0 {
 ; GCN-NEXT:  ; %bb.8: ; %loop
 ; GCN-NEXT:    ; in Loop: Header=BB9_4 Depth=1
 ; GCN-NEXT:    s_getpc_b64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc11:
-; GCN-NEXT:    s_add_u32 s0, s0, (.LBB9_4-.Lpost_getpc11)&4294967295
-; GCN-NEXT:    s_addc_u32 s1, s1, (.LBB9_4-.Lpost_getpc11)>>32
+; GCN-NEXT:  .Lpost_getpc9:
+; GCN-NEXT:    s_add_u32 s0, s0, (.LBB9_4-.Lpost_getpc9)&4294967295
+; GCN-NEXT:    s_addc_u32 s1, s1, (.LBB9_4-.Lpost_getpc9)>>32
 ; GCN-NEXT:    s_setpc_b64 s[0:1]
 ; GCN-NEXT:  .LBB9_5: ; %UnifiedReturnBlock
 ; GCN-NEXT:    s_endpgm
@@ -1151,10 +1129,10 @@ define amdgpu_kernel void @analyze_mask_branch() #0 {
 ; GFX11-NEXT:    s_cbranch_execnz .LBB9_3
 ; GFX11-NEXT:  ; %bb.6: ; %Flow1
 ; GFX11-NEXT:    s_getpc_b64 s[0:1]
-; GFX11-NEXT:  .Lpost_getpc9:
+; GFX11-NEXT:  .Lpost_getpc8:
 ; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
-; GFX11-NEXT:    s_add_u32 s0, s0, (.LBB9_5-.Lpost_getpc9)&4294967295
-; GFX11-NEXT:    s_addc_u32 s1, s1, (.LBB9_5-.Lpost_getpc9)>>32
+; GFX11-NEXT:    s_add_u32 s0, s0, (.LBB9_5-.Lpost_getpc8)&4294967295
+; GFX11-NEXT:    s_addc_u32 s1, s1, (.LBB9_5-.Lpost_getpc8)>>32
 ; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
 ; GFX11-NEXT:    s_setpc_b64 s[0:1]
 ; GFX11-NEXT:  .LBB9_3: ; %loop.preheader
@@ -1176,10 +1154,10 @@ define amdgpu_kernel void @analyze_mask_branch() #0 {
 ; GFX11-NEXT:  ; %bb.8: ; %loop
 ; GFX11-NEXT:    ; in Loop: Header=BB9_4 Depth=1
 ; GFX11-NEXT:    s_getpc_b64 s[0:1]
-; GFX11-NEXT:  .Lpost_getpc10:
+; GFX11-NEXT:  .Lpost_getpc9:
 ; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
-; GFX11-NEXT:    s_add_u32 s0, s0, (.LBB9_4-.Lpost_getpc10)&4294967295
-; GFX11-NEXT:    s_addc_u32 s1, s1, (.LBB9_4-.Lpost_getpc10)>>32
+; GFX11-NEXT:    s_add_u32 s0, s0, (.LBB9_4-.Lpost_getpc9)&4294967295
+; GFX11-NEXT:    s_addc_u32 s1, s1, (.LBB9_4-.Lpost_getpc9)>>32
 ; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
 ; GFX11-NEXT:    s_setpc_b64 s[0:1]
 ; GFX11-NEXT:  .LBB9_5: ; %UnifiedReturnBlock
@@ -1203,10 +1181,10 @@ define amdgpu_kernel void @analyze_mask_branch() #0 {
 ; GFX12-NEXT:    s_cbranch_execnz .LBB9_3
 ; GFX12-NEXT:  ; %bb.6: ; %Flow1
 ; GFX12-NEXT:    s_getpc_b64 s[0:1]
-; GFX12-NEXT:  .Lpost_getpc10:
+; GFX12-NEXT:  .Lpost_getpc8:
 ; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_add_co_u32 s0, s0, (.LBB9_5-.Lpost_getpc10)&4294967295
-; GFX12-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB9_5-.Lpost_getpc10)>>32
+; GFX12-NEXT:    s_add_co_u32 s0, s0, (.LBB9_5-.Lpost_getpc8)&4294967295
+; GFX12-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB9_5-.Lpost_getpc8)>>32
 ; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-NEXT:    s_setpc_b64 s[0:1]
 ; GFX12-NEXT:  .LBB9_3: ; %loop.preheader
@@ -1227,10 +1205,10 @@ define amdgpu_kernel void @analyze_mask_branch() #0 {
 ; GFX12-NEXT:  ; %bb.8: ; %loop
 ; GFX12-NEXT:    ; in Loop: Header=BB9_4 Depth=1
 ; GFX12-NEXT:    s_getpc_b64 s[0:1]
-; GFX12-NEXT:  .Lpost_getpc11:
+; GFX12-NEXT:  .Lpost_getpc9:
 ; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_add_co_u32 s0, s0, (.LBB9_4-.Lpost_getpc11)&4294967295
-; GFX12-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB9_4-.Lpost_getpc11)>>32
+; GFX12-NEXT:    s_add_co_u32 s0, s0, (.LBB9_4-.Lpost_getpc9)&4294967295
+; GFX12-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB9_4-.Lpost_getpc9)>>32
 ; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-NEXT:    s_setpc_b64 s[0:1]
 ; GFX12-NEXT:  .LBB9_5: ; %UnifiedReturnBlock
@@ -1274,9 +1252,9 @@ define amdgpu_kernel void @long_branch_hang(ptr addrspace(1) nocapture %arg, i32
 ; GCN-NEXT:    s_cbranch_scc1 .LBB10_1
 ; GCN-NEXT:  ; %bb.8: ; %bb
 ; GCN-NEXT:    s_getpc_b64 s[8:9]
-; GCN-NEXT:  .Lpost_getpc12:
-; GCN-NEXT:    s_add_u32 s8, s8, (.LBB10_2-.Lpost_getpc12)&4294967295
-; GCN-NEXT:    s_addc_u32 s9, s9, (.LBB10_2-.Lpost_getpc12)>>32
+; GCN-NEXT:  .Lpost_getpc10:
+; GCN-NEXT:    s_add_u32 s8, s8, (.LBB10_2-.Lpost_getpc10)&4294967295
+; GCN-NEXT:    s_addc_u32 s9, s9, (.LBB10_2-.Lpost_getpc10)>>32
 ; GCN-NEXT:    s_setpc_b64 s[8:9]
 ; GCN-NEXT:  .LBB10_1: ; %bb13
 ; GCN-NEXT:    ;;#ASMSTART
@@ -1285,46 +1263,54 @@ define amdgpu_kernel void @long_branch_hang(ptr addrspace(1) nocapture %arg, i32
 ; GCN-NEXT:    v_nop_e64
 ; GCN-NEXT:    v_nop_e64
 ; GCN-NEXT:    ;;#ASMEND
-; GCN-NEXT:    s_cbranch_execz .LBB10_3
-; GCN-NEXT:    s_branch .LBB10_4
+; GCN-NEXT:    s_mov_b64 s[10:11], 0
+; GCN-NEXT:    s_branch .LBB10_3
 ; GCN-NEXT:  .LBB10_2:
+; GCN-NEXT:    s_mov_b64 s[10:11], -1
 ; GCN-NEXT:    s_mov_b64 s[8:9], 0
-; GCN-NEXT:  .LBB10_3: ; %bb9
+; GCN-NEXT:  .LBB10_3: ; %Flow
+; GCN-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s0, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB10_5
+; GCN-NEXT:  ; %bb.4: ; %bb9
 ; GCN-NEXT:    s_cmp_lt_i32 s3, 11
 ; GCN-NEXT:    s_cselect_b64 s[8:9], -1, 0
 ; GCN-NEXT:    s_cmp_ge_i32 s2, s3
 ; GCN-NEXT:    s_cselect_b64 s[10:11], -1, 0
 ; GCN-NEXT:    s_and_b64 s[8:9], s[10:11], s[8:9]
-; GCN-NEXT:  .LBB10_4: ; %Flow5
-; GCN-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
-; GCN-NEXT:    s_cbranch_vccz .LBB10_5
+; GCN-NEXT:  .LBB10_5: ; %Flow5
+; GCN-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s0, 1
+; GCN-NEXT:    ; implicit-def: $sgpr0
+; GCN-NEXT:    s_cbranch_scc0 .LBB10_6
 ; GCN-NEXT:  ; %bb.10: ; %Flow5
-; GCN-NEXT:    s_getpc_b64 s[0:1]
-; GCN-NEXT:  .Lpost_getpc13:
-; GCN-NEXT:    s_add_u32 s0, s0, (.LBB10_6-.Lpost_getpc13)&4294967295
-; GCN-NEXT:    s_addc_u32 s1, s1, (.LBB10_6-.Lpost_getpc13)>>32
-; GCN-NEXT:    s_setpc_b64 s[0:1]
-; GCN-NEXT:  .LBB10_5: ; %bb14
+; GCN-NEXT:    s_getpc_b64 s[2:3]
+; GCN-NEXT:  .Lpost_getpc11:
+; GCN-NEXT:    s_add_u32 s2, s2, (.LBB10_7-.Lpost_getpc11)&4294967295
+; GCN-NEXT:    s_addc_u32 s3, s3, (.LBB10_7-.Lpost_getpc11)>>32
+; GCN-NEXT:    s_setpc_b64 s[2:3]
+; GCN-NEXT:  .LBB10_6: ; %bb14
 ; GCN-NEXT:    s_cmp_lt_i32 s1, 9
 ; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GCN-NEXT:    s_cmp_lt_i32 s2, s3
 ; GCN-NEXT:    s_cselect_b64 s[2:3], -1, 0
 ; GCN-NEXT:    s_or_b64 s[0:1], s[2:3], s[0:1]
 ; GCN-NEXT:    s_and_b64 s[0:1], s[6:7], s[0:1]
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    s_branch .LBB10_7
-; GCN-NEXT:  .LBB10_6:
-; GCN-NEXT:    ; implicit-def: $vgpr0
+; GCN-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
 ; GCN-NEXT:  .LBB10_7: ; %bb19
-; GCN-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0xf
-; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9
-; GCN-NEXT:    s_mov_b32 s3, 0xf000
-; GCN-NEXT:    s_mov_b32 s2, 0
+; GCN-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0xf
+; GCN-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x9
+; GCN-NEXT:    s_mov_b32 s7, 0xf000
+; GCN-NEXT:    s_mov_b32 s6, 0
+; GCN-NEXT:    v_mov_b32_e32 v2, s0
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-NEXT:    s_lshl_b64 s[4:5], s[6:7], 2
-; GCN-NEXT:    v_mov_b32_e32 v1, s4
-; GCN-NEXT:    v_mov_b32_e32 v2, s5
-; GCN-NEXT:    buffer_store_dword v0, v[1:2], s[0:3], 0 addr64
+; GCN-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
+; GCN-NEXT:    v_mov_b32_e32 v0, s2
+; GCN-NEXT:    v_mov_b32_e32 v1, s3
+; GCN-NEXT:    buffer_store_dword v2, v[0:1], s[4:7], 0 addr64
 ; GCN-NEXT:    s_endpgm
 ;
 ; GFX11-LABEL: long_branch_hang:
@@ -1339,35 +1325,45 @@ define amdgpu_kernel void @long_branch_hang(ptr addrspace(1) nocapture %arg, i32
 ; GFX11-NEXT:    s_cbranch_scc1 .LBB10_1
 ; GFX11-NEXT:  ; %bb.8: ; %bb
 ; GFX11-NEXT:    s_getpc_b64 s[8:9]
-; GFX11-NEXT:  .Lpost_getpc11:
+; GFX11-NEXT:  .Lpost_getpc10:
 ; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
-; GFX11-NEXT:    s_add_u32 s8, s8, (.LBB10_2-.Lpost_getpc11)&4294967295
-; GFX11-NEXT:    s_addc_u32 s9, s9, (.LBB10_2-.Lpost_getpc11)>>32
+; GFX11-NEXT:    s_add_u32 s8, s8, (.LBB10_2-.Lpost_getpc10)&4294967295
+; GFX11-NEXT:    s_addc_u32 s9, s9, (.LBB10_2-.Lpost_getpc10)>>32
 ; GFX11-NEXT:    s_waitcnt_depctr depctr_sa_sdst(0)
 ; GFX11-NEXT:    s_setpc_b64 s[8:9]
 ; GFX11-NEXT:  .LBB10_1: ; %bb13
+; GFX11-NEXT:    s_mov_b64 s[10:11], 0
 ; GFX11-NEXT:    ;;#ASMSTART
 ; GFX11-NEXT:    v_nop_e64
 ; GFX11-NEXT:    v_nop_e64
 ; GFX11-NEXT:    v_nop_e64
 ; GFX11-NEXT:    v_nop_e64
 ; GFX11-NEXT:    ;;#ASMEND
-; GFX11-NEXT:    s_cbranch_execz .LBB10_3
-; GFX11-NEXT:    s_branch .LBB10_4
+; GFX11-NEXT:    s_branch .LBB10_3
 ; GFX11-NEXT:  .LBB10_2:
+; GFX11-NEXT:    s_mov_b64 s[10:11], -1
 ; GFX11-NEXT:    s_mov_b64 s[8:9], 0
-; GFX11-NEXT:  .LBB10_3: ; %bb9
+; GFX11-NEXT:  .LBB10_3: ; %Flow
+; GFX11-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB10_5
+; GFX11-NEXT:  ; %bb.4: ; %bb9
 ; GFX11-NEXT:    s_cmp_lt_i32 s3, 11
 ; GFX11-NEXT:    s_cselect_b64 s[8:9], -1, 0
 ; GFX11-NEXT:    s_cmp_ge_i32 s2, s3
 ; GFX11-NEXT:    s_cselect_b64 s[10:11], -1, 0
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_and_b64 s[8:9], s[10:11], s[8:9]
-; GFX11-NEXT:  .LBB10_4: ; %Flow5
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    s_and_not1_b64 vcc, exec, s[8:9]
-; GFX11-NEXT:    s_cbranch_vccnz .LBB10_6
-; GFX11-NEXT:  ; %bb.5: ; %bb14
+; GFX11-NEXT:  .LBB10_5: ; %Flow5
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    ; implicit-def: $sgpr0
+; GFX11-NEXT:    s_cbranch_scc1 .LBB10_7
+; GFX11-NEXT:  ; %bb.6: ; %bb14
 ; GFX11-NEXT:    s_cmp_lt_i32 s1, 9
 ; GFX11-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GFX11-NEXT:    s_cmp_lt_i32 s2, s3
@@ -1376,21 +1372,20 @@ define amdgpu_kernel void @long_branch_hang(ptr addrspace(1) nocapture %arg, i32
 ; GFX11-NEXT:    s_or_b64 s[0:1], s[2:3], s[0:1]
 ; GFX11-NEXT:    s_and_b64 s[0:1], s[6:7], s[0:1]
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GFX11-NEXT:    s_branch .LBB10_7
-; GFX11-NEXT:  .LBB10_6:
-; GFX11-NEXT:    ; implicit-def: $vgpr0
+; GFX11-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX11-NEXT:  .LBB10_7: ; %bb19
 ; GFX11-NEXT:    s_clause 0x1
-; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x3c
-; GFX11-NEXT:    s_load_b64 s[2:3], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v1, 0
+; GFX11-NEXT:    s_load_b64 s[2:3], s[4:5], 0x3c
+; GFX11-NEXT:    s_load_b64 s[4:5], s[4:5], 0x24
+; GFX11-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-NEXT:    v_mov_b32_e32 v1, s0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-NEXT:    s_lshl_b64 s[0:1], s[0:1], 2
+; GFX11-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    s_add_u32 s0, s2, s0
-; GFX11-NEXT:    s_addc_u32 s1, s3, s1
-; GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]
+; GFX11-NEXT:    s_add_u32 s0, s4, s2
+; GFX11-NEXT:    s_addc_u32 s1, s5, s3
+; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: long_branch_hang:
@@ -1404,56 +1399,17 @@ define amdgpu_kernel void @long_branch_hang(ptr addrspace(1) nocapture %arg, i32
 ; GFX12-NEXT:    s_mov_b32 s0, 0
 ; GFX12-NEXT:    s_cselect_b32 s8, -1, 0
 ; GFX12-NEXT:    s_cmp_lt_i32 s3, 6
-; GFX12-NEXT:    s_cbranch_scc0 .LBB10_1
-; GFX12-NEXT:  ; %bb.18: ; %bb
-; GFX12-NEXT:    s_getpc_b64 s[10:11]
-; GFX12-NEXT:  .Lpost_getpc17:
-; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_add_co_u32 s10, s10, (.LBB10_4-.Lpost_getpc17)&4294967295
-; GFX12-NEXT:    s_add_co_ci_u32 s11, s11, (.LBB10_4-.Lpost_getpc17)>>32
-; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_setpc_b64 s[10:11]
-; GFX12-NEXT:  .LBB10_1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s7
-; GFX12-NEXT:    s_cbranch_vccnz .LBB10_2
-; GFX12-NEXT:  ; %bb.10: ; %Flow
+; GFX12-NEXT:    s_cbranch_scc1 .LBB10_1
+; GFX12-NEXT:  ; %bb.7: ; %bb
 ; GFX12-NEXT:    s_getpc_b64 s[8:9]
-; GFX12-NEXT:  .Lpost_getpc13:
+; GFX12-NEXT:  .Lpost_getpc10:
 ; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_add_co_u32 s8, s8, (.LBB10_5-.Lpost_getpc13)&4294967295
-; GFX12-NEXT:    s_add_co_ci_u32 s9, s9, (.LBB10_5-.Lpost_getpc13)>>32
+; GFX12-NEXT:    s_add_co_u32 s8, s8, (.LBB10_2-.Lpost_getpc10)&4294967295
+; GFX12-NEXT:    s_add_co_ci_u32 s9, s9, (.LBB10_2-.Lpost_getpc10)>>32
 ; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-NEXT:    s_setpc_b64 s[8:9]
-; GFX12-NEXT:  .LBB10_2: ; %Flow5
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX12-NEXT:    s_cbranch_vccz .LBB10_3
-; GFX12-NEXT:  ; %bb.12: ; %Flow5
-; GFX12-NEXT:    s_getpc_b64 s[0:1]
-; GFX12-NEXT:  .Lpost_getpc14:
-; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_add_co_u32 s0, s0, (.LBB10_6-.Lpost_getpc14)&4294967295
-; GFX12-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB10_6-.Lpost_getpc14)>>32
-; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_setpc_b64 s[0:1]
-; GFX12-NEXT:  .LBB10_3: ; %bb14
-; GFX12-NEXT:    s_cmp_lt_i32 s1, 9
-; GFX12-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX12-NEXT:    s_cmp_lt_i32 s2, s3
-; GFX12-NEXT:    s_cselect_b32 s1, -1, 0
-; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX12-NEXT:    s_or_b32 s0, s1, s0
-; GFX12-NEXT:    s_and_b32 s0, s6, s0
-; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; GFX12-NEXT:  ; %bb.8: ; %bb14
-; GFX12-NEXT:    s_getpc_b64 s[0:1]
-; GFX12-NEXT:  .Lpost_getpc12:
-; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_add_co_u32 s0, s0, (.LBB10_7-.Lpost_getpc12)&4294967295
-; GFX12-NEXT:    s_add_co_ci_u32 s1, s1, (.LBB10_7-.Lpost_getpc12)>>32
-; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_setpc_b64 s[0:1]
-; GFX12-NEXT:  .LBB10_4: ; %bb13
+; GFX12-NEXT:  .LBB10_1: ; %bb13
+; GFX12-NEXT:    s_mov_b32 s7, 0
 ; GFX12-NEXT:    s_mov_b32 s0, s8
 ; GFX12-NEXT:    ;;#ASMSTART
 ; GFX12-NEXT:    v_nop_e64
@@ -1461,44 +1417,47 @@ define amdgpu_kernel void @long_branch_hang(ptr addrspace(1) nocapture %arg, i32
 ; GFX12-NEXT:    v_nop_e64
 ; GFX12-NEXT:    v_nop_e64
 ; GFX12-NEXT:    ;;#ASMEND
-; GFX12-NEXT:    s_cbranch_execz .LBB10_5
-; GFX12-NEXT:  ; %bb.14: ; %bb13
-; GFX12-NEXT:    s_getpc_b64 s[8:9]
-; GFX12-NEXT:  .Lpost_getpc15:
-; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_add_co_u32 s8, s8, (.LBB10_2-.Lpost_getpc15)&4294967295
-; GFX12-NEXT:    s_add_co_ci_u32 s9, s9, (.LBB10_2-.Lpost_getpc15)>>32
-; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_setpc_b64 s[8:9]
-; GFX12-NEXT:  .LBB10_5: ; %bb9
+; GFX12-NEXT:  .LBB10_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s7, s7, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB10_4
+; GFX12-NEXT:  ; %bb.3: ; %bb9
 ; GFX12-NEXT:    s_cmp_lt_i32 s3, 11
 ; GFX12-NEXT:    s_cselect_b32 s0, -1, 0
 ; GFX12-NEXT:    s_cmp_ge_i32 s2, s3
 ; GFX12-NEXT:    s_cselect_b32 s7, -1, 0
-; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_and_b32 s0, s7, s0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX12-NEXT:    s_cbranch_vccnz .LBB10_6
-; GFX12-NEXT:  ; %bb.16: ; %bb9
-; GFX12-NEXT:    s_getpc_b64 s[8:9]
-; GFX12-NEXT:  .Lpost_getpc16:
-; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_add_co_u32 s8, s8, (.LBB10_3-.Lpost_getpc16)&4294967295
-; GFX12-NEXT:    s_add_co_ci_u32 s9, s9, (.LBB10_3-.Lpost_getpc16)>>32
-; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_setpc_b64 s[8:9]
-; GFX12-NEXT:  .LBB10_6:
-; GFX12-NEXT:    ; implicit-def: $vgpr0
-; GFX12-NEXT:  .LBB10_7: ; %bb19
+; GFX12-NEXT:  .LBB10_4: ; %Flow5
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX12-NEXT:    ; implicit-def: $sgpr0
+; GFX12-NEXT:    s_cbranch_scc1 .LBB10_6
+; GFX12-NEXT:  ; %bb.5: ; %bb14
+; GFX12-NEXT:    s_cmp_lt_i32 s1, 9
+; GFX12-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX12-NEXT:    s_cmp_lt_i32 s2, s3
+; GFX12-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_or_b32 s0, s1, s0
+; GFX12-NEXT:    s_and_b32 s0, s6, s0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX12-NEXT:  .LBB10_6: ; %bb19
 ; GFX12-NEXT:    s_clause 0x1
-; GFX12-NEXT:    s_load_b64 s[0:1], s[4:5], 0x3c
-; GFX12-NEXT:    s_load_b64 s[2:3], s[4:5], 0x24
-; GFX12-NEXT:    v_mov_b32_e32 v1, 0
+; GFX12-NEXT:    s_load_b64 s[2:3], s[4:5], 0x3c
+; GFX12-NEXT:    s_load_b64 s[4:5], s[4:5], 0x24
+; GFX12-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s0
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
-; GFX12-NEXT:    s_lshl_b64 s[0:1], s[0:1], 2
+; GFX12-NEXT:    s_lshl_b64 s[0:1], s[2:3], 2
 ; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[2:3], s[0:1]
-; GFX12-NEXT:    global_store_b32 v1, v0, s[0:1]
+; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[4:5], s[0:1]
+; GFX12-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX12-NEXT:    s_endpgm
 bb:
   %tmp = icmp slt i32 %arg2, 9

diff  --git a/llvm/test/CodeGen/AMDGPU/bug-cselect-b64.ll b/llvm/test/CodeGen/AMDGPU/bug-cselect-b64.ll
index ea93e3ac1e595..cf84201a8eb82 100644
--- a/llvm/test/CodeGen/AMDGPU/bug-cselect-b64.ll
+++ b/llvm/test/CodeGen/AMDGPU/bug-cselect-b64.ll
@@ -12,7 +12,7 @@ define amdgpu_cs <2 x i32> @f() {
 ; CHECK-NEXT:    buffer_load_dwordx2 v[0:1], off, s[4:7], 0
 ; CHECK-NEXT:    s_waitcnt vmcnt(0)
 ; CHECK-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]
-; CHECK-NEXT:    v_mov_b32_e32 v1, s4
+; CHECK-NEXT:    v_mov_b32_e32 v1, 0
 ; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
 ; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
 ; CHECK-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0

diff  --git a/llvm/test/CodeGen/AMDGPU/carryout-selection.ll b/llvm/test/CodeGen/AMDGPU/carryout-selection.ll
index 1e6d2886e70b2..48f0ef41db527 100644
--- a/llvm/test/CodeGen/AMDGPU/carryout-selection.ll
+++ b/llvm/test/CodeGen/AMDGPU/carryout-selection.ll
@@ -721,13 +721,16 @@ define amdgpu_kernel void @uaddo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; CISI-NEXT:    v_mov_b32_e32 v0, s9
 ; CISI-NEXT:    s_mov_b32 s5, s1
 ; CISI-NEXT:    v_add_i32_e32 v0, vcc, s8, v0
+; CISI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
+; CISI-NEXT:    s_and_b64 s[4:5], vcc, exec
+; CISI-NEXT:    s_cselect_b32 s4, 1, 0
 ; CISI-NEXT:    s_mov_b32 s0, s2
 ; CISI-NEXT:    s_mov_b32 s1, s3
 ; CISI-NEXT:    s_mov_b32 s2, s6
 ; CISI-NEXT:    s_mov_b32 s3, s7
-; CISI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
-; CISI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
-; CISI-NEXT:    buffer_store_byte v1, off, s[0:3], 0
+; CISI-NEXT:    s_waitcnt expcnt(0)
+; CISI-NEXT:    v_mov_b32_e32 v0, s4
+; CISI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; CISI-NEXT:    s_endpgm
 ;
 ; VI-LABEL: uaddo32_vcc_user:
@@ -737,13 +740,15 @@ define amdgpu_kernel void @uaddo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    v_mov_b32_e32 v4, s5
-; VI-NEXT:    v_mov_b32_e32 v1, s1
 ; VI-NEXT:    v_add_u32_e32 v4, vcc, s4, v4
+; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    v_mov_b32_e32 v3, s3
-; VI-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc
 ; VI-NEXT:    flat_store_dword v[0:1], v4
-; VI-NEXT:    flat_store_byte v[2:3], v5
+; VI-NEXT:    v_mov_b32_e32 v0, s0
+; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX9-LABEL: uaddo32_vcc_user:
@@ -754,9 +759,11 @@ define amdgpu_kernel void @uaddo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s7
 ; GFX9-NEXT:    v_add_co_u32_e32 v1, vcc, s6, v1
-; GFX9-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
 ; GFX9-NEXT:    global_store_dword v0, v1, s[0:1]
-; GFX9-NEXT:    global_store_byte v0, v2, s[2:3]
+; GFX9-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    v_mov_b32_e32 v1, s0
+; GFX9-NEXT:    global_store_byte v0, v1, s[2:3]
 ; GFX9-NEXT:    s_endpgm
 ;
 ; GFX1010-LABEL: uaddo32_vcc_user:
@@ -764,12 +771,14 @@ define amdgpu_kernel void @uaddo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GFX1010-NEXT:    s_clause 0x1
 ; GFX1010-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GFX1010-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GFX1010-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1010-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX1010-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX1010-NEXT:    v_add_co_u32 v1, s4, s6, s7
-; GFX1010-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
-; GFX1010-NEXT:    global_store_dword v0, v1, s[0:1]
-; GFX1010-NEXT:    global_store_byte v0, v2, s[2:3]
+; GFX1010-NEXT:    v_add_co_u32 v0, s4, s6, s7
+; GFX1010-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1010-NEXT:    v_mov_b32_e32 v2, s4
+; GFX1010-NEXT:    global_store_dword v1, v0, s[0:1]
+; GFX1010-NEXT:    global_store_byte v1, v2, s[2:3]
 ; GFX1010-NEXT:    s_endpgm
 ;
 ; GFX1030W32-LABEL: uaddo32_vcc_user:
@@ -777,12 +786,14 @@ define amdgpu_kernel void @uaddo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GFX1030W32-NEXT:    s_clause 0x1
 ; GFX1030W32-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GFX1030W32-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GFX1030W32-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1030W32-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX1030W32-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX1030W32-NEXT:    v_add_co_u32 v1, s4, s6, s7
-; GFX1030W32-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
-; GFX1030W32-NEXT:    global_store_dword v0, v1, s[0:1]
-; GFX1030W32-NEXT:    global_store_byte v0, v2, s[2:3]
+; GFX1030W32-NEXT:    v_add_co_u32 v0, s4, s6, s7
+; GFX1030W32-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX1030W32-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1030W32-NEXT:    v_mov_b32_e32 v2, s4
+; GFX1030W32-NEXT:    global_store_dword v1, v0, s[0:1]
+; GFX1030W32-NEXT:    global_store_byte v1, v2, s[2:3]
 ; GFX1030W32-NEXT:    s_endpgm
 ;
 ; GFX1030W64-LABEL: uaddo32_vcc_user:
@@ -790,12 +801,14 @@ define amdgpu_kernel void @uaddo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GFX1030W64-NEXT:    s_clause 0x1
 ; GFX1030W64-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GFX1030W64-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GFX1030W64-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1030W64-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX1030W64-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX1030W64-NEXT:    v_add_co_u32 v1, s[4:5], s6, s7
-; GFX1030W64-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]
-; GFX1030W64-NEXT:    global_store_dword v0, v1, s[0:1]
-; GFX1030W64-NEXT:    global_store_byte v0, v2, s[2:3]
+; GFX1030W64-NEXT:    v_add_co_u32 v0, s[4:5], s6, s7
+; GFX1030W64-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX1030W64-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1030W64-NEXT:    v_mov_b32_e32 v2, s4
+; GFX1030W64-NEXT:    global_store_dword v1, v0, s[0:1]
+; GFX1030W64-NEXT:    global_store_byte v1, v2, s[2:3]
 ; GFX1030W64-NEXT:    s_endpgm
 ;
 ; GFX11-LABEL: uaddo32_vcc_user:
@@ -803,14 +816,15 @@ define amdgpu_kernel void @uaddo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b64 s[6:7], s[4:5], 0x34
 ; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-NEXT:    v_add_co_u32 v1, s4, s6, s7
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX11-NEXT:    v_add_co_u32 v0, s4, s6, s7
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s4
 ; GFX11-NEXT:    s_clause 0x1
-; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
-; GFX11-NEXT:    global_store_b8 v0, v2, s[2:3]
+; GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]
+; GFX11-NEXT:    global_store_b8 v1, v2, s[2:3]
 ; GFX11-NEXT:    s_endpgm
 ;
 ; GFX1250-LABEL: uaddo32_vcc_user:
@@ -819,14 +833,15 @@ define amdgpu_kernel void @uaddo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GFX1250-NEXT:    s_clause 0x1
 ; GFX1250-NEXT:    s_load_b64 s[6:7], s[4:5], 0x34 nv
 ; GFX1250-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24 nv
-; GFX1250-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX1250-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-NEXT:    v_add_co_u32 v1, s4, s6, s7
-; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX1250-NEXT:    v_add_co_u32 v0, s4, s6, s7
+; GFX1250-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX1250-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1250-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s4
 ; GFX1250-NEXT:    s_clause 0x1
-; GFX1250-NEXT:    global_store_b32 v0, v1, s[0:1]
-; GFX1250-NEXT:    global_store_b8 v0, v2, s[2:3]
+; GFX1250-NEXT:    global_store_b32 v1, v0, s[0:1]
+; GFX1250-NEXT:    global_store_b8 v1, v2, s[2:3]
 ; GFX1250-NEXT:    s_endpgm
 ;
 ; GFX13-LABEL: uaddo32_vcc_user:
@@ -834,14 +849,15 @@ define amdgpu_kernel void @uaddo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GFX13-NEXT:    s_clause 0x1
 ; GFX13-NEXT:    s_load_b64 s[6:7], s[4:5], 0x34 nv
 ; GFX13-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24 nv
-; GFX13-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX13-NEXT:    s_wait_kmcnt 0x0
-; GFX13-NEXT:    v_add_co_u32 v1, s4, s6, s7
-; GFX13-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX13-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX13-NEXT:    v_add_co_u32 v0, s4, s6, s7
+; GFX13-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX13-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX13-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX13-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s4
 ; GFX13-NEXT:    s_clause 0x1
-; GFX13-NEXT:    global_store_b32 v0, v1, s[0:1]
-; GFX13-NEXT:    global_store_b8 v0, v2, s[2:3]
+; GFX13-NEXT:    global_store_b32 v1, v0, s[0:1]
+; GFX13-NEXT:    global_store_b8 v1, v2, s[2:3]
 ; GFX13-NEXT:    s_endpgm
 ; GCN-ISEL-LABEL: name: uaddo32_vcc_user
 ; GCN-ISEL: bb.0 (%ir-block.0):
@@ -867,10 +883,12 @@ define amdgpu_kernel void @uaddo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GCN-ISEL-NEXT:   [[COPY9:%[0-9]+]]:sreg_32 = COPY [[S_LOAD_DWORDX2_IMM]].sub0
 ; GCN-ISEL-NEXT:   [[COPY10:%[0-9]+]]:sreg_32 = COPY [[S_LOAD_DWORDX2_IMM]].sub1
 ; GCN-ISEL-NEXT:   [[COPY11:%[0-9]+]]:vgpr_32 = COPY killed [[COPY10]]
-; GCN-ISEL-NEXT:   [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 killed [[COPY9]], [[COPY11]], 0, implicit $exec
+; GCN-ISEL-NEXT:   [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_ADD_CO_U32_e64 killed [[COPY9]], [[COPY11]], 0, implicit $exec
 ; GCN-ISEL-NEXT:   BUFFER_STORE_DWORD_OFFSET killed [[V_ADD_CO_U32_e64_]], killed [[REG_SEQUENCE1]], 0, 0, 0, 0, implicit $exec :: (store (s32) into %ir.2, addrspace 1)
-; GCN-ISEL-NEXT:   [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed [[V_ADD_CO_U32_e64_1]], implicit $exec
-; GCN-ISEL-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[V_CNDMASK_B32_e64_]], killed [[REG_SEQUENCE3]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.3, addrspace 1)
+; GCN-ISEL-NEXT:   $scc = COPY [[V_ADD_CO_U32_e64_1]]
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 1, 0, implicit $scc
+; GCN-ISEL-NEXT:   [[COPY12:%[0-9]+]]:vgpr_32 = COPY [[S_CSELECT_B32_]]
+; GCN-ISEL-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[COPY12]], killed [[REG_SEQUENCE3]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.3, addrspace 1)
 ; GCN-ISEL-NEXT:   S_ENDPGM 0
   %uadd = call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 %a, i32 %b)
   %val = extractvalue { i32, i1 } %uadd, 0
@@ -887,20 +905,22 @@ define amdgpu_kernel void @suaddo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; CISI-NEXT:    s_mov_b32 s11, 0xf000
 ; CISI-NEXT:    s_mov_b32 s10, -1
 ; CISI-NEXT:    s_waitcnt lgkmcnt(0)
-; CISI-NEXT:    s_add_u32 s4, s4, s6
-; CISI-NEXT:    s_addc_u32 s5, s5, s7
+; CISI-NEXT:    s_add_u32 s6, s4, s6
+; CISI-NEXT:    s_addc_u32 s7, s5, s7
+; CISI-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; CISI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; CISI-NEXT:    s_mov_b32 s8, s0
 ; CISI-NEXT:    s_mov_b32 s9, s1
-; CISI-NEXT:    v_mov_b32_e32 v0, s4
-; CISI-NEXT:    v_mov_b32_e32 v1, s5
-; CISI-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; CISI-NEXT:    v_mov_b32_e32 v0, s6
+; CISI-NEXT:    v_mov_b32_e32 v1, s7
+; CISI-NEXT:    s_cselect_b32 s4, 1, 0
 ; CISI-NEXT:    s_mov_b32 s0, s2
 ; CISI-NEXT:    s_mov_b32 s1, s3
 ; CISI-NEXT:    s_mov_b32 s2, s10
 ; CISI-NEXT:    s_mov_b32 s3, s11
 ; CISI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 0
 ; CISI-NEXT:    s_waitcnt expcnt(0)
-; CISI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; CISI-NEXT:    v_mov_b32_e32 v0, s4
 ; CISI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; CISI-NEXT:    s_endpgm
 ;
@@ -908,17 +928,19 @@ define amdgpu_kernel void @suaddo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_load_dwordx8 s[0:7], s[4:5], 0x24
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
+; VI-NEXT:    v_mov_b32_e32 v2, s2
+; VI-NEXT:    s_add_u32 s2, s4, s6
+; VI-NEXT:    v_mov_b32_e32 v3, s3
+; VI-NEXT:    s_addc_u32 s3, s5, s7
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    s_add_u32 s0, s4, s6
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
-; VI-NEXT:    s_addc_u32 s1, s5, s7
-; VI-NEXT:    v_mov_b32_e32 v4, s0
-; VI-NEXT:    v_mov_b32_e32 v5, s1
 ; VI-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; VI-NEXT:    v_mov_b32_e32 v2, s2
-; VI-NEXT:    v_mov_b32_e32 v3, s3
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    v_mov_b32_e32 v4, s2
+; VI-NEXT:    v_mov_b32_e32 v5, s3
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dwordx2 v[0:1], v[4:5]
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
@@ -928,13 +950,15 @@ define amdgpu_kernel void @suaddo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    s_add_u32 s0, s12, s14
-; GFX9-NEXT:    s_addc_u32 s1, s13, s15
+; GFX9-NEXT:    s_addc_u32 s2, s13, s15
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
-; GFX9-NEXT:    v_mov_b32_e32 v1, s1
 ; GFX9-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX9-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[0:1]
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-NEXT:    v_mov_b32_e32 v1, s2
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]
-; GFX9-NEXT:    global_store_byte v2, v3, s[10:11]
+; GFX9-NEXT:    v_mov_b32_e32 v0, s0
+; GFX9-NEXT:    global_store_byte v2, v0, s[10:11]
 ; GFX9-NEXT:    s_endpgm
 ;
 ; GFX1010-LABEL: suaddo64:
@@ -944,10 +968,12 @@ define amdgpu_kernel void @suaddo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GFX1010-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX1010-NEXT:    s_add_u32 s0, s12, s14
 ; GFX1010-NEXT:    s_addc_u32 s1, s13, s15
+; GFX1010-NEXT:    s_cselect_b32 s2, -1, 0
 ; GFX1010-NEXT:    v_mov_b32_e32 v0, s0
-; GFX1010-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX1010-NEXT:    s_and_b32 s0, s2, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX1010-NEXT:    v_mov_b32_e32 v1, s1
-; GFX1010-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s0
+; GFX1010-NEXT:    v_mov_b32_e32 v3, s0
 ; GFX1010-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]
 ; GFX1010-NEXT:    global_store_byte v2, v3, s[10:11]
 ; GFX1010-NEXT:    s_endpgm
@@ -959,10 +985,12 @@ define amdgpu_kernel void @suaddo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GFX1030W32-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX1030W32-NEXT:    s_add_u32 s4, s4, s6
 ; GFX1030W32-NEXT:    s_addc_u32 s5, s5, s7
+; GFX1030W32-NEXT:    s_cselect_b32 s6, -1, 0
 ; GFX1030W32-NEXT:    v_mov_b32_e32 v0, s4
-; GFX1030W32-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX1030W32-NEXT:    s_and_b32 s4, s6, exec_lo
+; GFX1030W32-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX1030W32-NEXT:    v_mov_b32_e32 v1, s5
-; GFX1030W32-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4
+; GFX1030W32-NEXT:    v_mov_b32_e32 v3, s4
 ; GFX1030W32-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
 ; GFX1030W32-NEXT:    global_store_byte v2, v3, s[2:3]
 ; GFX1030W32-NEXT:    s_endpgm
@@ -972,12 +1000,14 @@ define amdgpu_kernel void @suaddo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GFX1030W64-NEXT:    s_load_dwordx8 s[0:7], s[4:5], 0x24
 ; GFX1030W64-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX1030W64-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX1030W64-NEXT:    s_add_u32 s4, s4, s6
-; GFX1030W64-NEXT:    s_addc_u32 s5, s5, s7
-; GFX1030W64-NEXT:    v_mov_b32_e32 v0, s4
-; GFX1030W64-NEXT:    v_mov_b32_e32 v1, s5
+; GFX1030W64-NEXT:    s_add_u32 s6, s4, s6
+; GFX1030W64-NEXT:    s_addc_u32 s7, s5, s7
 ; GFX1030W64-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GFX1030W64-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]
+; GFX1030W64-NEXT:    v_mov_b32_e32 v0, s6
+; GFX1030W64-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX1030W64-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1030W64-NEXT:    v_mov_b32_e32 v1, s7
+; GFX1030W64-NEXT:    v_mov_b32_e32 v3, s4
 ; GFX1030W64-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
 ; GFX1030W64-NEXT:    global_store_byte v2, v3, s[2:3]
 ; GFX1030W64-NEXT:    s_endpgm
@@ -988,10 +1018,12 @@ define amdgpu_kernel void @suaddo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_add_u32 s4, s4, s6
 ; GFX11-NEXT:    s_addc_u32 s5, s5, s7
+; GFX11-NEXT:    s_cselect_b32 s6, -1, 0
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s4
-; GFX11-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX11-NEXT:    s_and_b32 s4, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX11-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, s5
-; GFX11-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4
+; GFX11-NEXT:    v_mov_b32_e32 v3, s4
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
 ; GFX11-NEXT:    global_store_b8 v2, v3, s[2:3]
@@ -1004,10 +1036,12 @@ define amdgpu_kernel void @suaddo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GFX1250-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-NEXT:    s_add_co_u32 s0, s12, s14
 ; GFX1250-NEXT:    s_add_co_ci_u32 s1, s13, s15
+; GFX1250-NEXT:    s_cselect_b32 s2, -1, 0
 ; GFX1250-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v0, s0
-; GFX1250-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX1250-NEXT:    v_mov_b32_e32 v1, s1
-; GFX1250-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s0
+; GFX1250-NEXT:    s_and_b32 s0, s2, exec_lo
+; GFX1250-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX1250-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-NEXT:    v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v3, s0
 ; GFX1250-NEXT:    s_clause 0x1
 ; GFX1250-NEXT:    global_store_b64 v2, v[0:1], s[8:9]
 ; GFX1250-NEXT:    global_store_b8 v2, v3, s[10:11]
@@ -1019,10 +1053,12 @@ define amdgpu_kernel void @suaddo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GFX13-NEXT:    s_wait_kmcnt 0x0
 ; GFX13-NEXT:    s_add_co_u32 s4, s4, s6
 ; GFX13-NEXT:    s_add_co_ci_u32 s5, s5, s7
+; GFX13-NEXT:    s_cselect_b32 s6, -1, 0
 ; GFX13-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v0, s4
-; GFX13-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX13-NEXT:    v_mov_b32_e32 v1, s5
-; GFX13-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4
+; GFX13-NEXT:    s_and_b32 s4, s6, exec_lo
+; GFX13-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX13-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX13-NEXT:    v_dual_mov_b32 v1, s5 :: v_dual_mov_b32 v3, s4
 ; GFX13-NEXT:    s_clause 0x1
 ; GFX13-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
 ; GFX13-NEXT:    global_store_b8 v2, v3, s[2:3]
@@ -1062,8 +1098,10 @@ define amdgpu_kernel void @suaddo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE6:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_UADDO]], %subreg.sub0, killed [[S_ADD_C]], %subreg.sub1
 ; GCN-ISEL-NEXT:   [[COPY17:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE6]]
 ; GCN-ISEL-NEXT:   BUFFER_STORE_DWORDX2_OFFSET killed [[COPY17]], killed [[REG_SEQUENCE1]], 0, 0, 0, 0, implicit $exec :: (store (s64) into %ir.2, addrspace 1)
-; GCN-ISEL-NEXT:   [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed [[S_ADD_C1]], implicit $exec
-; GCN-ISEL-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[V_CNDMASK_B32_e64_]], killed [[REG_SEQUENCE3]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.3, addrspace 1)
+; GCN-ISEL-NEXT:   $scc = COPY [[S_ADD_C1]]
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 1, 0, implicit $scc
+; GCN-ISEL-NEXT:   [[COPY18:%[0-9]+]]:vgpr_32 = COPY [[S_CSELECT_B32_]]
+; GCN-ISEL-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[COPY18]], killed [[REG_SEQUENCE3]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.3, addrspace 1)
 ; GCN-ISEL-NEXT:   S_ENDPGM 0
   %uadd = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %a, i64 %b)
   %val = extractvalue { i64, i1 } %uadd, 0
@@ -1981,13 +2019,16 @@ define amdgpu_kernel void @usubo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; CISI-NEXT:    v_mov_b32_e32 v0, s9
 ; CISI-NEXT:    s_mov_b32 s5, s1
 ; CISI-NEXT:    v_sub_i32_e32 v0, vcc, s8, v0
+; CISI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
+; CISI-NEXT:    s_and_b64 s[4:5], vcc, exec
+; CISI-NEXT:    s_cselect_b32 s4, 1, 0
 ; CISI-NEXT:    s_mov_b32 s0, s2
 ; CISI-NEXT:    s_mov_b32 s1, s3
 ; CISI-NEXT:    s_mov_b32 s2, s6
 ; CISI-NEXT:    s_mov_b32 s3, s7
-; CISI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
-; CISI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
-; CISI-NEXT:    buffer_store_byte v1, off, s[0:3], 0
+; CISI-NEXT:    s_waitcnt expcnt(0)
+; CISI-NEXT:    v_mov_b32_e32 v0, s4
+; CISI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; CISI-NEXT:    s_endpgm
 ;
 ; VI-LABEL: usubo32_vcc_user:
@@ -1997,13 +2038,15 @@ define amdgpu_kernel void @usubo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    v_mov_b32_e32 v4, s5
-; VI-NEXT:    v_mov_b32_e32 v1, s1
 ; VI-NEXT:    v_sub_u32_e32 v4, vcc, s4, v4
+; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    v_mov_b32_e32 v3, s3
-; VI-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc
 ; VI-NEXT:    flat_store_dword v[0:1], v4
-; VI-NEXT:    flat_store_byte v[2:3], v5
+; VI-NEXT:    v_mov_b32_e32 v0, s0
+; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX9-LABEL: usubo32_vcc_user:
@@ -2014,9 +2057,11 @@ define amdgpu_kernel void @usubo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s7
 ; GFX9-NEXT:    v_sub_co_u32_e32 v1, vcc, s6, v1
-; GFX9-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
 ; GFX9-NEXT:    global_store_dword v0, v1, s[0:1]
-; GFX9-NEXT:    global_store_byte v0, v2, s[2:3]
+; GFX9-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    v_mov_b32_e32 v1, s0
+; GFX9-NEXT:    global_store_byte v0, v1, s[2:3]
 ; GFX9-NEXT:    s_endpgm
 ;
 ; GFX1010-LABEL: usubo32_vcc_user:
@@ -2024,12 +2069,14 @@ define amdgpu_kernel void @usubo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GFX1010-NEXT:    s_clause 0x1
 ; GFX1010-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GFX1010-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GFX1010-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1010-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX1010-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX1010-NEXT:    v_sub_co_u32 v1, s4, s6, s7
-; GFX1010-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
-; GFX1010-NEXT:    global_store_dword v0, v1, s[0:1]
-; GFX1010-NEXT:    global_store_byte v0, v2, s[2:3]
+; GFX1010-NEXT:    v_sub_co_u32 v0, s4, s6, s7
+; GFX1010-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1010-NEXT:    v_mov_b32_e32 v2, s4
+; GFX1010-NEXT:    global_store_dword v1, v0, s[0:1]
+; GFX1010-NEXT:    global_store_byte v1, v2, s[2:3]
 ; GFX1010-NEXT:    s_endpgm
 ;
 ; GFX1030W32-LABEL: usubo32_vcc_user:
@@ -2037,12 +2084,14 @@ define amdgpu_kernel void @usubo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GFX1030W32-NEXT:    s_clause 0x1
 ; GFX1030W32-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GFX1030W32-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GFX1030W32-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1030W32-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX1030W32-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX1030W32-NEXT:    v_sub_co_u32 v1, s4, s6, s7
-; GFX1030W32-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
-; GFX1030W32-NEXT:    global_store_dword v0, v1, s[0:1]
-; GFX1030W32-NEXT:    global_store_byte v0, v2, s[2:3]
+; GFX1030W32-NEXT:    v_sub_co_u32 v0, s4, s6, s7
+; GFX1030W32-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX1030W32-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1030W32-NEXT:    v_mov_b32_e32 v2, s4
+; GFX1030W32-NEXT:    global_store_dword v1, v0, s[0:1]
+; GFX1030W32-NEXT:    global_store_byte v1, v2, s[2:3]
 ; GFX1030W32-NEXT:    s_endpgm
 ;
 ; GFX1030W64-LABEL: usubo32_vcc_user:
@@ -2050,12 +2099,14 @@ define amdgpu_kernel void @usubo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GFX1030W64-NEXT:    s_clause 0x1
 ; GFX1030W64-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GFX1030W64-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GFX1030W64-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1030W64-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX1030W64-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX1030W64-NEXT:    v_sub_co_u32 v1, s[4:5], s6, s7
-; GFX1030W64-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]
-; GFX1030W64-NEXT:    global_store_dword v0, v1, s[0:1]
-; GFX1030W64-NEXT:    global_store_byte v0, v2, s[2:3]
+; GFX1030W64-NEXT:    v_sub_co_u32 v0, s[4:5], s6, s7
+; GFX1030W64-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX1030W64-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1030W64-NEXT:    v_mov_b32_e32 v2, s4
+; GFX1030W64-NEXT:    global_store_dword v1, v0, s[0:1]
+; GFX1030W64-NEXT:    global_store_byte v1, v2, s[2:3]
 ; GFX1030W64-NEXT:    s_endpgm
 ;
 ; GFX11-LABEL: usubo32_vcc_user:
@@ -2063,14 +2114,15 @@ define amdgpu_kernel void @usubo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b64 s[6:7], s[4:5], 0x34
 ; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-NEXT:    v_sub_co_u32 v1, s4, s6, s7
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX11-NEXT:    v_sub_co_u32 v0, s4, s6, s7
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s4
 ; GFX11-NEXT:    s_clause 0x1
-; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
-; GFX11-NEXT:    global_store_b8 v0, v2, s[2:3]
+; GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]
+; GFX11-NEXT:    global_store_b8 v1, v2, s[2:3]
 ; GFX11-NEXT:    s_endpgm
 ;
 ; GFX1250-LABEL: usubo32_vcc_user:
@@ -2079,14 +2131,15 @@ define amdgpu_kernel void @usubo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GFX1250-NEXT:    s_clause 0x1
 ; GFX1250-NEXT:    s_load_b64 s[6:7], s[4:5], 0x34 nv
 ; GFX1250-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24 nv
-; GFX1250-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX1250-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-NEXT:    v_sub_co_u32 v1, s4, s6, s7
-; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX1250-NEXT:    v_sub_co_u32 v0, s4, s6, s7
+; GFX1250-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX1250-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1250-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s4
 ; GFX1250-NEXT:    s_clause 0x1
-; GFX1250-NEXT:    global_store_b32 v0, v1, s[0:1]
-; GFX1250-NEXT:    global_store_b8 v0, v2, s[2:3]
+; GFX1250-NEXT:    global_store_b32 v1, v0, s[0:1]
+; GFX1250-NEXT:    global_store_b8 v1, v2, s[2:3]
 ; GFX1250-NEXT:    s_endpgm
 ;
 ; GFX13-LABEL: usubo32_vcc_user:
@@ -2094,14 +2147,15 @@ define amdgpu_kernel void @usubo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GFX13-NEXT:    s_clause 0x1
 ; GFX13-NEXT:    s_load_b64 s[6:7], s[4:5], 0x34 nv
 ; GFX13-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24 nv
-; GFX13-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX13-NEXT:    s_wait_kmcnt 0x0
-; GFX13-NEXT:    v_sub_co_u32 v1, s4, s6, s7
-; GFX13-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX13-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX13-NEXT:    v_sub_co_u32 v0, s4, s6, s7
+; GFX13-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX13-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX13-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX13-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s4
 ; GFX13-NEXT:    s_clause 0x1
-; GFX13-NEXT:    global_store_b32 v0, v1, s[0:1]
-; GFX13-NEXT:    global_store_b8 v0, v2, s[2:3]
+; GFX13-NEXT:    global_store_b32 v1, v0, s[0:1]
+; GFX13-NEXT:    global_store_b8 v1, v2, s[2:3]
 ; GFX13-NEXT:    s_endpgm
 ; GCN-ISEL-LABEL: name: usubo32_vcc_user
 ; GCN-ISEL: bb.0 (%ir-block.0):
@@ -2127,10 +2181,12 @@ define amdgpu_kernel void @usubo32_vcc_user(ptr addrspace(1) %out, ptr addrspace
 ; GCN-ISEL-NEXT:   [[COPY9:%[0-9]+]]:sreg_32 = COPY [[S_LOAD_DWORDX2_IMM]].sub0
 ; GCN-ISEL-NEXT:   [[COPY10:%[0-9]+]]:sreg_32 = COPY [[S_LOAD_DWORDX2_IMM]].sub1
 ; GCN-ISEL-NEXT:   [[COPY11:%[0-9]+]]:vgpr_32 = COPY killed [[COPY10]]
-; GCN-ISEL-NEXT:   [[V_SUB_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_SUB_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_SUB_CO_U32_e64 killed [[COPY9]], [[COPY11]], 0, implicit $exec
+; GCN-ISEL-NEXT:   [[V_SUB_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_SUB_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_SUB_CO_U32_e64 killed [[COPY9]], [[COPY11]], 0, implicit $exec
 ; GCN-ISEL-NEXT:   BUFFER_STORE_DWORD_OFFSET killed [[V_SUB_CO_U32_e64_]], killed [[REG_SEQUENCE1]], 0, 0, 0, 0, implicit $exec :: (store (s32) into %ir.2, addrspace 1)
-; GCN-ISEL-NEXT:   [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed [[V_SUB_CO_U32_e64_1]], implicit $exec
-; GCN-ISEL-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[V_CNDMASK_B32_e64_]], killed [[REG_SEQUENCE3]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.3, addrspace 1)
+; GCN-ISEL-NEXT:   $scc = COPY [[V_SUB_CO_U32_e64_1]]
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 1, 0, implicit $scc
+; GCN-ISEL-NEXT:   [[COPY12:%[0-9]+]]:vgpr_32 = COPY [[S_CSELECT_B32_]]
+; GCN-ISEL-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[COPY12]], killed [[REG_SEQUENCE3]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.3, addrspace 1)
 ; GCN-ISEL-NEXT:   S_ENDPGM 0
   %usub = call { i32, i1 } @llvm.usub.with.overflow.i32(i32 %a, i32 %b)
   %val = extractvalue { i32, i1 } %usub, 0
@@ -2147,20 +2203,22 @@ define amdgpu_kernel void @susubo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; CISI-NEXT:    s_mov_b32 s11, 0xf000
 ; CISI-NEXT:    s_mov_b32 s10, -1
 ; CISI-NEXT:    s_waitcnt lgkmcnt(0)
-; CISI-NEXT:    s_sub_u32 s4, s4, s6
-; CISI-NEXT:    s_subb_u32 s5, s5, s7
+; CISI-NEXT:    s_sub_u32 s6, s4, s6
+; CISI-NEXT:    s_subb_u32 s7, s5, s7
+; CISI-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; CISI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; CISI-NEXT:    s_mov_b32 s8, s0
 ; CISI-NEXT:    s_mov_b32 s9, s1
-; CISI-NEXT:    v_mov_b32_e32 v0, s4
-; CISI-NEXT:    v_mov_b32_e32 v1, s5
-; CISI-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; CISI-NEXT:    v_mov_b32_e32 v0, s6
+; CISI-NEXT:    v_mov_b32_e32 v1, s7
+; CISI-NEXT:    s_cselect_b32 s4, 1, 0
 ; CISI-NEXT:    s_mov_b32 s0, s2
 ; CISI-NEXT:    s_mov_b32 s1, s3
 ; CISI-NEXT:    s_mov_b32 s2, s10
 ; CISI-NEXT:    s_mov_b32 s3, s11
 ; CISI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 0
 ; CISI-NEXT:    s_waitcnt expcnt(0)
-; CISI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; CISI-NEXT:    v_mov_b32_e32 v0, s4
 ; CISI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; CISI-NEXT:    s_endpgm
 ;
@@ -2168,17 +2226,19 @@ define amdgpu_kernel void @susubo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_load_dwordx8 s[0:7], s[4:5], 0x24
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
+; VI-NEXT:    v_mov_b32_e32 v2, s2
+; VI-NEXT:    s_sub_u32 s2, s4, s6
+; VI-NEXT:    v_mov_b32_e32 v3, s3
+; VI-NEXT:    s_subb_u32 s3, s5, s7
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    s_sub_u32 s0, s4, s6
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
-; VI-NEXT:    s_subb_u32 s1, s5, s7
-; VI-NEXT:    v_mov_b32_e32 v4, s0
-; VI-NEXT:    v_mov_b32_e32 v5, s1
 ; VI-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; VI-NEXT:    v_mov_b32_e32 v2, s2
-; VI-NEXT:    v_mov_b32_e32 v3, s3
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    v_mov_b32_e32 v4, s2
+; VI-NEXT:    v_mov_b32_e32 v5, s3
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dwordx2 v[0:1], v[4:5]
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
@@ -2188,13 +2248,15 @@ define amdgpu_kernel void @susubo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    s_sub_u32 s0, s12, s14
-; GFX9-NEXT:    s_subb_u32 s1, s13, s15
+; GFX9-NEXT:    s_subb_u32 s2, s13, s15
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
-; GFX9-NEXT:    v_mov_b32_e32 v1, s1
 ; GFX9-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX9-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[0:1]
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-NEXT:    v_mov_b32_e32 v1, s2
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]
-; GFX9-NEXT:    global_store_byte v2, v3, s[10:11]
+; GFX9-NEXT:    v_mov_b32_e32 v0, s0
+; GFX9-NEXT:    global_store_byte v2, v0, s[10:11]
 ; GFX9-NEXT:    s_endpgm
 ;
 ; GFX1010-LABEL: susubo64:
@@ -2204,10 +2266,12 @@ define amdgpu_kernel void @susubo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GFX1010-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX1010-NEXT:    s_sub_u32 s0, s12, s14
 ; GFX1010-NEXT:    s_subb_u32 s1, s13, s15
+; GFX1010-NEXT:    s_cselect_b32 s2, -1, 0
 ; GFX1010-NEXT:    v_mov_b32_e32 v0, s0
-; GFX1010-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX1010-NEXT:    s_and_b32 s0, s2, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX1010-NEXT:    v_mov_b32_e32 v1, s1
-; GFX1010-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s0
+; GFX1010-NEXT:    v_mov_b32_e32 v3, s0
 ; GFX1010-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]
 ; GFX1010-NEXT:    global_store_byte v2, v3, s[10:11]
 ; GFX1010-NEXT:    s_endpgm
@@ -2219,10 +2283,12 @@ define amdgpu_kernel void @susubo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GFX1030W32-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX1030W32-NEXT:    s_sub_u32 s4, s4, s6
 ; GFX1030W32-NEXT:    s_subb_u32 s5, s5, s7
+; GFX1030W32-NEXT:    s_cselect_b32 s6, -1, 0
 ; GFX1030W32-NEXT:    v_mov_b32_e32 v0, s4
-; GFX1030W32-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX1030W32-NEXT:    s_and_b32 s4, s6, exec_lo
+; GFX1030W32-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX1030W32-NEXT:    v_mov_b32_e32 v1, s5
-; GFX1030W32-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4
+; GFX1030W32-NEXT:    v_mov_b32_e32 v3, s4
 ; GFX1030W32-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
 ; GFX1030W32-NEXT:    global_store_byte v2, v3, s[2:3]
 ; GFX1030W32-NEXT:    s_endpgm
@@ -2232,12 +2298,14 @@ define amdgpu_kernel void @susubo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GFX1030W64-NEXT:    s_load_dwordx8 s[0:7], s[4:5], 0x24
 ; GFX1030W64-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX1030W64-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX1030W64-NEXT:    s_sub_u32 s4, s4, s6
-; GFX1030W64-NEXT:    s_subb_u32 s5, s5, s7
-; GFX1030W64-NEXT:    v_mov_b32_e32 v0, s4
-; GFX1030W64-NEXT:    v_mov_b32_e32 v1, s5
+; GFX1030W64-NEXT:    s_sub_u32 s6, s4, s6
+; GFX1030W64-NEXT:    s_subb_u32 s7, s5, s7
 ; GFX1030W64-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GFX1030W64-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]
+; GFX1030W64-NEXT:    v_mov_b32_e32 v0, s6
+; GFX1030W64-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX1030W64-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1030W64-NEXT:    v_mov_b32_e32 v1, s7
+; GFX1030W64-NEXT:    v_mov_b32_e32 v3, s4
 ; GFX1030W64-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
 ; GFX1030W64-NEXT:    global_store_byte v2, v3, s[2:3]
 ; GFX1030W64-NEXT:    s_endpgm
@@ -2248,10 +2316,12 @@ define amdgpu_kernel void @susubo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_sub_u32 s4, s4, s6
 ; GFX11-NEXT:    s_subb_u32 s5, s5, s7
+; GFX11-NEXT:    s_cselect_b32 s6, -1, 0
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s4
-; GFX11-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX11-NEXT:    s_and_b32 s4, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX11-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, s5
-; GFX11-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4
+; GFX11-NEXT:    v_mov_b32_e32 v3, s4
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
 ; GFX11-NEXT:    global_store_b8 v2, v3, s[2:3]
@@ -2264,10 +2334,12 @@ define amdgpu_kernel void @susubo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GFX1250-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-NEXT:    s_sub_co_u32 s0, s12, s14
 ; GFX1250-NEXT:    s_sub_co_ci_u32 s1, s13, s15
+; GFX1250-NEXT:    s_cselect_b32 s2, -1, 0
 ; GFX1250-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v0, s0
-; GFX1250-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX1250-NEXT:    v_mov_b32_e32 v1, s1
-; GFX1250-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s0
+; GFX1250-NEXT:    s_and_b32 s0, s2, exec_lo
+; GFX1250-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX1250-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-NEXT:    v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v3, s0
 ; GFX1250-NEXT:    s_clause 0x1
 ; GFX1250-NEXT:    global_store_b64 v2, v[0:1], s[8:9]
 ; GFX1250-NEXT:    global_store_b8 v2, v3, s[10:11]
@@ -2279,10 +2351,12 @@ define amdgpu_kernel void @susubo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GFX13-NEXT:    s_wait_kmcnt 0x0
 ; GFX13-NEXT:    s_sub_co_u32 s4, s4, s6
 ; GFX13-NEXT:    s_sub_co_ci_u32 s5, s5, s7
+; GFX13-NEXT:    s_cselect_b32 s6, -1, 0
 ; GFX13-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v0, s4
-; GFX13-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX13-NEXT:    v_mov_b32_e32 v1, s5
-; GFX13-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4
+; GFX13-NEXT:    s_and_b32 s4, s6, exec_lo
+; GFX13-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX13-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX13-NEXT:    v_dual_mov_b32 v1, s5 :: v_dual_mov_b32 v3, s4
 ; GFX13-NEXT:    s_clause 0x1
 ; GFX13-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
 ; GFX13-NEXT:    global_store_b8 v2, v3, s[2:3]
@@ -2322,8 +2396,10 @@ define amdgpu_kernel void @susubo64(ptr addrspace(1) %out, ptr addrspace(1) %car
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE6:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_USUBO]], %subreg.sub0, killed [[S_SUB_C]], %subreg.sub1
 ; GCN-ISEL-NEXT:   [[COPY17:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE6]]
 ; GCN-ISEL-NEXT:   BUFFER_STORE_DWORDX2_OFFSET killed [[COPY17]], killed [[REG_SEQUENCE1]], 0, 0, 0, 0, implicit $exec :: (store (s64) into %ir.2, addrspace 1)
-; GCN-ISEL-NEXT:   [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed [[S_SUB_C1]], implicit $exec
-; GCN-ISEL-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[V_CNDMASK_B32_e64_]], killed [[REG_SEQUENCE3]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.3, addrspace 1)
+; GCN-ISEL-NEXT:   $scc = COPY [[S_SUB_C1]]
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 1, 0, implicit $scc
+; GCN-ISEL-NEXT:   [[COPY18:%[0-9]+]]:vgpr_32 = COPY [[S_CSELECT_B32_]]
+; GCN-ISEL-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[COPY18]], killed [[REG_SEQUENCE3]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.3, addrspace 1)
 ; GCN-ISEL-NEXT:   S_ENDPGM 0
   %usub = call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %a, i64 %b)
   %val = extractvalue { i64, i1 } %usub, 0
@@ -2540,12 +2616,13 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; CISI-NEXT:    s_waitcnt lgkmcnt(0)
 ; CISI-NEXT:    s_or_b64 s[0:1], s[10:11], s[2:3]
 ; CISI-NEXT:    s_cmp_lg_u32 s1, 0
-; CISI-NEXT:    s_cbranch_scc0 .LBB16_4
+; CISI-NEXT:    s_cbranch_scc0 .LBB16_2
 ; CISI-NEXT:  ; %bb.1:
 ; CISI-NEXT:    v_cvt_f32_u32_e32 v0, s2
 ; CISI-NEXT:    v_cvt_f32_u32_e32 v1, s3
 ; CISI-NEXT:    s_sub_u32 s0, 0, s2
 ; CISI-NEXT:    s_subb_u32 s1, 0, s3
+; CISI-NEXT:    s_mov_b64 s[4:5], 0
 ; CISI-NEXT:    v_madmk_f32 v0, v1, 0x4f800000, v0
 ; CISI-NEXT:    v_rcp_f32_e32 v0, v0
 ; CISI-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v0
@@ -2648,8 +2725,16 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; CISI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v2
 ; CISI-NEXT:    v_cndmask_b32_e32 v1, v1, v5, vcc
 ; CISI-NEXT:    v_cndmask_b32_e32 v0, v0, v4, vcc
-; CISI-NEXT:    s_cbranch_execnz .LBB16_3
+; CISI-NEXT:    s_branch .LBB16_3
 ; CISI-NEXT:  .LBB16_2:
+; CISI-NEXT:    s_mov_b64 s[4:5], -1
+; CISI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; CISI-NEXT:  .LBB16_3: ; %Flow
+; CISI-NEXT:    s_and_b64 s[0:1], s[4:5], exec
+; CISI-NEXT:    s_cselect_b32 s0, 1, 0
+; CISI-NEXT:    s_cmp_lg_u32 s0, 1
+; CISI-NEXT:    s_cbranch_scc1 .LBB16_5
+; CISI-NEXT:  ; %bb.4:
 ; CISI-NEXT:    v_cvt_f32_u32_e32 v0, s2
 ; CISI-NEXT:    s_sub_i32 s0, 0, s2
 ; CISI-NEXT:    v_rcp_iflag_f32_e32 v0, v0
@@ -2673,14 +2758,11 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; CISI-NEXT:    s_cselect_b64 vcc, -1, 0
 ; CISI-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc
 ; CISI-NEXT:    v_mov_b32_e32 v1, 0
-; CISI-NEXT:  .LBB16_3: ; %.split
+; CISI-NEXT:  .LBB16_5: ; %.split
 ; CISI-NEXT:    s_mov_b32 s11, 0xf000
 ; CISI-NEXT:    s_mov_b32 s10, -1
 ; CISI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 0
 ; CISI-NEXT:    s_endpgm
-; CISI-NEXT:  .LBB16_4:
-; CISI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; CISI-NEXT:    s_branch .LBB16_2
 ;
 ; VI-LABEL: sudiv64:
 ; VI:       ; %bb.0:
@@ -2689,7 +2771,7 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    s_or_b64 s[6:7], s[2:3], s[4:5]
 ; VI-NEXT:    s_cmp_lg_u32 s7, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB16_3
+; VI-NEXT:    s_cbranch_scc0 .LBB16_2
 ; VI-NEXT:  ; %bb.1:
 ; VI-NEXT:    v_cvt_f32_u32_e32 v0, s4
 ; VI-NEXT:    v_cvt_f32_u32_e32 v1, s5
@@ -2760,6 +2842,7 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; VI-NEXT:    v_mad_u64_u32 v[0:1], s[6:7], s4, v0, 0
 ; VI-NEXT:    s_addc_u32 s11, 0, s8
 ; VI-NEXT:    s_mul_i32 s8, s4, s11
+; VI-NEXT:    s_mov_b64 s[6:7], 0
 ; VI-NEXT:    v_readfirstlane_b32 s9, v1
 ; VI-NEXT:    s_add_i32 s8, s9, s8
 ; VI-NEXT:    s_mul_i32 s9, s5, s10
@@ -2795,8 +2878,16 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; VI-NEXT:    s_cmp_lg_u32 s3, 0
 ; VI-NEXT:    s_cselect_b32 s9, s15, s11
 ; VI-NEXT:    s_cselect_b32 s8, s13, s10
-; VI-NEXT:    s_cbranch_execnz .LBB16_4
+; VI-NEXT:    s_branch .LBB16_3
 ; VI-NEXT:  .LBB16_2:
+; VI-NEXT:    s_mov_b64 s[6:7], -1
+; VI-NEXT:    ; implicit-def: $sgpr8_sgpr9
+; VI-NEXT:  .LBB16_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; VI-NEXT:    s_cselect_b32 s3, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s3, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB16_5
+; VI-NEXT:  ; %bb.4:
 ; VI-NEXT:    v_cvt_f32_u32_e32 v0, s4
 ; VI-NEXT:    s_sub_i32 s3, 0, s4
 ; VI-NEXT:    v_rcp_iflag_f32_e32 v0, v0
@@ -2820,14 +2911,11 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; VI-NEXT:    s_cselect_b64 vcc, -1, 0
 ; VI-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc
 ; VI-NEXT:    v_mov_b32_e32 v1, 0
-; VI-NEXT:    s_branch .LBB16_5
-; VI-NEXT:  .LBB16_3:
-; VI-NEXT:    ; implicit-def: $sgpr8_sgpr9
-; VI-NEXT:    s_branch .LBB16_2
-; VI-NEXT:  .LBB16_4:
+; VI-NEXT:    s_branch .LBB16_6
+; VI-NEXT:  .LBB16_5:
 ; VI-NEXT:    v_mov_b32_e32 v0, s8
 ; VI-NEXT:    v_mov_b32_e32 v1, s9
-; VI-NEXT:  .LBB16_5: ; %.split
+; VI-NEXT:  .LBB16_6: ; %.split
 ; VI-NEXT:    v_mov_b32_e32 v2, s0
 ; VI-NEXT:    v_mov_b32_e32 v3, s1
 ; VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -2840,12 +2928,13 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    s_or_b64 s[4:5], s[2:3], s[6:7]
 ; GFX9-NEXT:    s_cmp_lg_u32 s5, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB16_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GFX9-NEXT:  ; %bb.1:
 ; GFX9-NEXT:    v_cvt_f32_u32_e32 v0, s6
 ; GFX9-NEXT:    v_cvt_f32_u32_e32 v1, s7
 ; GFX9-NEXT:    s_sub_u32 s8, 0, s6
 ; GFX9-NEXT:    s_subb_u32 s9, 0, s7
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
 ; GFX9-NEXT:    v_madmk_f32 v0, v1, 0x4f800000, v0
 ; GFX9-NEXT:    v_rcp_f32_e32 v0, v0
 ; GFX9-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v0
@@ -2950,8 +3039,16 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX9-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX9-NEXT:    s_cselect_b32 s9, s15, s10
 ; GFX9-NEXT:    s_cselect_b32 s8, s13, s11
-; GFX9-NEXT:    s_cbranch_execnz .LBB16_3
+; GFX9-NEXT:    s_branch .LBB16_3
 ; GFX9-NEXT:  .LBB16_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr8_sgpr9
+; GFX9-NEXT:  .LBB16_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB16_5
+; GFX9-NEXT:  ; %bb.4:
 ; GFX9-NEXT:    v_cvt_f32_u32_e32 v0, s6
 ; GFX9-NEXT:    s_sub_i32 s3, 0, s6
 ; GFX9-NEXT:    s_mov_b32 s9, 0
@@ -2973,15 +3070,12 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX9-NEXT:    s_add_i32 s4, s3, 1
 ; GFX9-NEXT:    s_cmp_ge_u32 s2, s6
 ; GFX9-NEXT:    s_cselect_b32 s8, s4, s3
-; GFX9-NEXT:  .LBB16_3: ; %.split
+; GFX9-NEXT:  .LBB16_5: ; %.split
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s8
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s9
 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
 ; GFX9-NEXT:    s_endpgm
-; GFX9-NEXT:  .LBB16_4:
-; GFX9-NEXT:    ; implicit-def: $sgpr8_sgpr9
-; GFX9-NEXT:    s_branch .LBB16_2
 ;
 ; GFX1010-LABEL: sudiv64:
 ; GFX1010:       ; %bb.0:
@@ -2992,7 +3086,7 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX1010-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX1010-NEXT:    s_or_b64 s[4:5], s[2:3], s[6:7]
 ; GFX1010-NEXT:    s_cmp_lg_u32 s5, 0
-; GFX1010-NEXT:    s_cbranch_scc0 .LBB16_4
+; GFX1010-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GFX1010-NEXT:  ; %bb.1:
 ; GFX1010-NEXT:    v_cvt_f32_u32_e32 v0, s6
 ; GFX1010-NEXT:    v_cvt_f32_u32_e32 v1, s7
@@ -3102,9 +3196,16 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX1010-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX1010-NEXT:    s_cselect_b32 s5, s13, s5
 ; GFX1010-NEXT:    s_cselect_b32 s4, s11, s4
-; GFX1010-NEXT:    s_andn2_b32 vcc_lo, exec_lo, s8
-; GFX1010-NEXT:    s_cbranch_vccnz .LBB16_3
+; GFX1010-NEXT:    s_branch .LBB16_3
 ; GFX1010-NEXT:  .LBB16_2:
+; GFX1010-NEXT:    s_mov_b32 s8, -1
+; GFX1010-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; GFX1010-NEXT:  .LBB16_3: ; %Flow
+; GFX1010-NEXT:    s_and_b32 s3, s8, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX1010-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX1010-NEXT:    s_cbranch_scc1 .LBB16_5
+; GFX1010-NEXT:  ; %bb.4:
 ; GFX1010-NEXT:    v_cvt_f32_u32_e32 v0, s6
 ; GFX1010-NEXT:    s_sub_i32 s4, 0, s6
 ; GFX1010-NEXT:    v_rcp_iflag_f32_e32 v0, v0
@@ -3126,15 +3227,12 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX1010-NEXT:    s_cmp_ge_u32 s2, s6
 ; GFX1010-NEXT:    s_mov_b32 s5, 0
 ; GFX1010-NEXT:    s_cselect_b32 s4, s4, s3
-; GFX1010-NEXT:  .LBB16_3: ; %.split
+; GFX1010-NEXT:  .LBB16_5: ; %.split
 ; GFX1010-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX1010-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX1010-NEXT:    v_mov_b32_e32 v1, s5
 ; GFX1010-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
 ; GFX1010-NEXT:    s_endpgm
-; GFX1010-NEXT:  .LBB16_4:
-; GFX1010-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; GFX1010-NEXT:    s_branch .LBB16_2
 ;
 ; GFX1030W32-LABEL: sudiv64:
 ; GFX1030W32:       ; %bb.0:
@@ -3145,7 +3243,7 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX1030W32-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX1030W32-NEXT:    s_or_b64 s[6:7], s[2:3], s[4:5]
 ; GFX1030W32-NEXT:    s_cmp_lg_u32 s7, 0
-; GFX1030W32-NEXT:    s_cbranch_scc0 .LBB16_4
+; GFX1030W32-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GFX1030W32-NEXT:  ; %bb.1:
 ; GFX1030W32-NEXT:    v_cvt_f32_u32_e32 v0, s4
 ; GFX1030W32-NEXT:    v_cvt_f32_u32_e32 v1, s5
@@ -3255,9 +3353,16 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX1030W32-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX1030W32-NEXT:    s_cselect_b32 s7, s13, s7
 ; GFX1030W32-NEXT:    s_cselect_b32 s6, s11, s6
-; GFX1030W32-NEXT:    s_andn2_b32 vcc_lo, exec_lo, s8
-; GFX1030W32-NEXT:    s_cbranch_vccnz .LBB16_3
+; GFX1030W32-NEXT:    s_branch .LBB16_3
 ; GFX1030W32-NEXT:  .LBB16_2:
+; GFX1030W32-NEXT:    s_mov_b32 s8, -1
+; GFX1030W32-NEXT:    ; implicit-def: $sgpr6_sgpr7
+; GFX1030W32-NEXT:  .LBB16_3: ; %Flow
+; GFX1030W32-NEXT:    s_and_b32 s3, s8, exec_lo
+; GFX1030W32-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX1030W32-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX1030W32-NEXT:    s_cbranch_scc1 .LBB16_5
+; GFX1030W32-NEXT:  ; %bb.4:
 ; GFX1030W32-NEXT:    v_cvt_f32_u32_e32 v0, s4
 ; GFX1030W32-NEXT:    s_sub_i32 s5, 0, s4
 ; GFX1030W32-NEXT:    s_mov_b32 s7, 0
@@ -3279,15 +3384,12 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX1030W32-NEXT:    s_add_i32 s5, s3, 1
 ; GFX1030W32-NEXT:    s_cmp_ge_u32 s2, s4
 ; GFX1030W32-NEXT:    s_cselect_b32 s6, s5, s3
-; GFX1030W32-NEXT:  .LBB16_3: ; %.split
+; GFX1030W32-NEXT:  .LBB16_5: ; %.split
 ; GFX1030W32-NEXT:    v_mov_b32_e32 v0, s6
 ; GFX1030W32-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX1030W32-NEXT:    v_mov_b32_e32 v1, s7
 ; GFX1030W32-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
 ; GFX1030W32-NEXT:    s_endpgm
-; GFX1030W32-NEXT:  .LBB16_4:
-; GFX1030W32-NEXT:    ; implicit-def: $sgpr6_sgpr7
-; GFX1030W32-NEXT:    s_branch .LBB16_2
 ;
 ; GFX1030W64-LABEL: sudiv64:
 ; GFX1030W64:       ; %bb.0:
@@ -3297,7 +3399,7 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX1030W64-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX1030W64-NEXT:    s_or_b64 s[6:7], s[2:3], s[4:5]
 ; GFX1030W64-NEXT:    s_cmp_lg_u32 s7, 0
-; GFX1030W64-NEXT:    s_cbranch_scc0 .LBB16_4
+; GFX1030W64-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GFX1030W64-NEXT:  ; %bb.1:
 ; GFX1030W64-NEXT:    v_cvt_f32_u32_e32 v0, s4
 ; GFX1030W64-NEXT:    v_cvt_f32_u32_e32 v1, s5
@@ -3398,6 +3500,7 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX1030W64-NEXT:    s_cselect_b32 s14, s16, s14
 ; GFX1030W64-NEXT:    s_cmp_lg_u64 s[6:7], 0
 ; GFX1030W64-NEXT:    s_subb_u32 s3, s3, s8
+; GFX1030W64-NEXT:    s_mov_b64 s[8:9], 0
 ; GFX1030W64-NEXT:    s_cmp_ge_u32 s3, s5
 ; GFX1030W64-NEXT:    s_cselect_b32 s6, -1, 0
 ; GFX1030W64-NEXT:    s_cmp_ge_u32 s12, s4
@@ -3407,8 +3510,16 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX1030W64-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX1030W64-NEXT:    s_cselect_b32 s7, s14, s11
 ; GFX1030W64-NEXT:    s_cselect_b32 s6, s13, s10
-; GFX1030W64-NEXT:    s_cbranch_execnz .LBB16_3
+; GFX1030W64-NEXT:    s_branch .LBB16_3
 ; GFX1030W64-NEXT:  .LBB16_2:
+; GFX1030W64-NEXT:    s_mov_b64 s[8:9], -1
+; GFX1030W64-NEXT:    ; implicit-def: $sgpr6_sgpr7
+; GFX1030W64-NEXT:  .LBB16_3: ; %Flow
+; GFX1030W64-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX1030W64-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX1030W64-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX1030W64-NEXT:    s_cbranch_scc1 .LBB16_5
+; GFX1030W64-NEXT:  ; %bb.4:
 ; GFX1030W64-NEXT:    v_cvt_f32_u32_e32 v0, s4
 ; GFX1030W64-NEXT:    s_sub_i32 s5, 0, s4
 ; GFX1030W64-NEXT:    s_mov_b32 s7, 0
@@ -3430,15 +3541,12 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX1030W64-NEXT:    s_add_i32 s5, s3, 1
 ; GFX1030W64-NEXT:    s_cmp_ge_u32 s2, s4
 ; GFX1030W64-NEXT:    s_cselect_b32 s6, s5, s3
-; GFX1030W64-NEXT:  .LBB16_3: ; %.split
+; GFX1030W64-NEXT:  .LBB16_5: ; %.split
 ; GFX1030W64-NEXT:    v_mov_b32_e32 v0, s6
 ; GFX1030W64-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX1030W64-NEXT:    v_mov_b32_e32 v1, s7
 ; GFX1030W64-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
 ; GFX1030W64-NEXT:    s_endpgm
-; GFX1030W64-NEXT:  .LBB16_4:
-; GFX1030W64-NEXT:    ; implicit-def: $sgpr6_sgpr7
-; GFX1030W64-NEXT:    s_branch .LBB16_2
 ;
 ; GFX11-LABEL: sudiv64:
 ; GFX11:       ; %bb.0:
@@ -3450,7 +3558,7 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX11-NEXT:    s_or_b64 s[6:7], s[2:3], s[4:5]
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_cmp_lg_u32 s7, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB16_4
+; GFX11-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GFX11-NEXT:  ; %bb.1:
 ; GFX11-NEXT:    v_cvt_f32_u32_e32 v0, s4
 ; GFX11-NEXT:    v_cvt_f32_u32_e32 v1, s5
@@ -3569,9 +3677,17 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX11-NEXT:    s_cselect_b32 s7, s13, s7
 ; GFX11-NEXT:    s_cselect_b32 s6, s11, s6
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB16_3
+; GFX11-NEXT:    s_branch .LBB16_3
 ; GFX11-NEXT:  .LBB16_2:
+; GFX11-NEXT:    s_mov_b32 s8, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr6_sgpr7
+; GFX11-NEXT:  .LBB16_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s3, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB16_5
+; GFX11-NEXT:  ; %bb.4:
 ; GFX11-NEXT:    v_cvt_f32_u32_e32 v0, s4
 ; GFX11-NEXT:    s_sub_i32 s5, 0, s4
 ; GFX11-NEXT:    s_mov_b32 s7, 0
@@ -3598,15 +3714,12 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX11-NEXT:    s_add_i32 s5, s3, 1
 ; GFX11-NEXT:    s_cmp_ge_u32 s2, s4
 ; GFX11-NEXT:    s_cselect_b32 s6, s5, s3
-; GFX11-NEXT:  .LBB16_3: ; %.split
+; GFX11-NEXT:  .LBB16_5: ; %.split
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s6
 ; GFX11-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, s7
 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
 ; GFX11-NEXT:    s_endpgm
-; GFX11-NEXT:  .LBB16_4:
-; GFX11-NEXT:    ; implicit-def: $sgpr6_sgpr7
-; GFX11-NEXT:    s_branch .LBB16_2
 ;
 ; GFX1250-LABEL: sudiv64:
 ; GFX1250:       ; %bb.0:
@@ -3619,7 +3732,7 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX1250-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-NEXT:    s_cmp_lg_u32 s5, 0
 ; GFX1250-NEXT:    s_mov_b32 s5, 0
-; GFX1250-NEXT:    s_cbranch_scc0 .LBB16_4
+; GFX1250-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GFX1250-NEXT:  ; %bb.1:
 ; GFX1250-NEXT:    s_cvt_f32_u32 s4, s6
 ; GFX1250-NEXT:    s_cvt_f32_u32 s8, s7
@@ -3720,9 +3833,17 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX1250-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX1250-NEXT:    s_cselect_b32 s9, s13, s11
 ; GFX1250-NEXT:    s_cselect_b32 s8, s12, s10
-; GFX1250-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s5
-; GFX1250-NEXT:    s_cbranch_vccnz .LBB16_3
+; GFX1250-NEXT:    s_branch .LBB16_3
 ; GFX1250-NEXT:  .LBB16_2:
+; GFX1250-NEXT:    s_mov_b32 s5, -1
+; GFX1250-NEXT:    ; implicit-def: $sgpr8_sgpr9
+; GFX1250-NEXT:  .LBB16_3: ; %Flow
+; GFX1250-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-NEXT:    s_and_b32 s3, s5, exec_lo
+; GFX1250-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX1250-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX1250-NEXT:    s_cbranch_scc1 .LBB16_5
+; GFX1250-NEXT:  ; %bb.4:
 ; GFX1250-NEXT:    v_cvt_f32_u32_e32 v0, s6
 ; GFX1250-NEXT:    s_sub_co_i32 s4, 0, s6
 ; GFX1250-NEXT:    s_mov_b32 s9, 0
@@ -3750,15 +3871,12 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX1250-NEXT:    s_add_co_i32 s4, s3, 1
 ; GFX1250-NEXT:    s_cmp_ge_u32 s2, s6
 ; GFX1250-NEXT:    s_cselect_b32 s8, s4, s3
-; GFX1250-NEXT:  .LBB16_3: ; %.split
+; GFX1250-NEXT:  .LBB16_5: ; %.split
 ; GFX1250-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-NEXT:    v_mov_b64_e32 v[0:1], s[8:9]
 ; GFX1250-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX1250-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
 ; GFX1250-NEXT:    s_endpgm
-; GFX1250-NEXT:  .LBB16_4:
-; GFX1250-NEXT:    ; implicit-def: $sgpr8_sgpr9
-; GFX1250-NEXT:    s_branch .LBB16_2
 ;
 ; GFX13-LABEL: sudiv64:
 ; GFX13:       ; %bb.0:
@@ -3770,7 +3888,7 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX13-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX13-NEXT:    s_cmp_lg_u32 s7, 0
 ; GFX13-NEXT:    s_mov_b32 s7, 0
-; GFX13-NEXT:    s_cbranch_scc0 .LBB16_4
+; GFX13-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GFX13-NEXT:  ; %bb.1:
 ; GFX13-NEXT:    s_cvt_f32_u32 s6, s4
 ; GFX13-NEXT:    s_cvt_f32_u32 s8, s5
@@ -3871,9 +3989,17 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX13-NEXT:    s_cmp_lg_u32 s3, 0
 ; GFX13-NEXT:    s_cselect_b32 s9, s13, s11
 ; GFX13-NEXT:    s_cselect_b32 s8, s12, s10
-; GFX13-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s7
-; GFX13-NEXT:    s_cbranch_vccnz .LBB16_3
+; GFX13-NEXT:    s_branch .LBB16_3
 ; GFX13-NEXT:  .LBB16_2:
+; GFX13-NEXT:    s_mov_b32 s7, -1
+; GFX13-NEXT:    ; implicit-def: $sgpr8_sgpr9
+; GFX13-NEXT:  .LBB16_3: ; %Flow
+; GFX13-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX13-NEXT:    s_and_b32 s3, s7, exec_lo
+; GFX13-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX13-NEXT:    s_cmp_lg_u32 s3, 1
+; GFX13-NEXT:    s_cbranch_scc1 .LBB16_5
+; GFX13-NEXT:  ; %bb.4:
 ; GFX13-NEXT:    v_cvt_f32_u32_e32 v0, s4
 ; GFX13-NEXT:    s_sub_co_i32 s5, 0, s4
 ; GFX13-NEXT:    s_mov_b32 s9, 0
@@ -3900,15 +4026,12 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GFX13-NEXT:    s_add_co_i32 s5, s3, 1
 ; GFX13-NEXT:    s_cmp_ge_u32 s2, s4
 ; GFX13-NEXT:    s_cselect_b32 s8, s5, s3
-; GFX13-NEXT:  .LBB16_3: ; %.split
+; GFX13-NEXT:  .LBB16_5: ; %.split
 ; GFX13-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX13-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v0, s8
 ; GFX13-NEXT:    v_mov_b32_e32 v1, s9
 ; GFX13-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
 ; GFX13-NEXT:    s_endpgm
-; GFX13-NEXT:  .LBB16_4:
-; GFX13-NEXT:    ; implicit-def: $sgpr8_sgpr9
-; GFX13-NEXT:    s_branch .LBB16_2
 ; GCN-ISEL-LABEL: name: sudiv64
 ; GCN-ISEL: bb.0 (%ir-block.0):
 ; GCN-ISEL-NEXT:   successors: %bb.3(0x50000000), %bb.1(0x30000000)
@@ -3942,59 +4065,59 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GCN-ISEL-NEXT:   successors: %bb.2(0x40000000), %bb.4(0x40000000)
 ; GCN-ISEL-NEXT: {{  $}}
 ; GCN-ISEL-NEXT:   [[PHI:%[0-9]+]]:sreg_64 = PHI [[DEF]], %bb.0, %6, %bb.3
-; GCN-ISEL-NEXT:   [[PHI1:%[0-9]+]]:sreg_64_xexec = PHI [[S_MOV_B64_]], %bb.0, %35, %bb.3
-; GCN-ISEL-NEXT:   [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, [[PHI1]], implicit $exec
+; GCN-ISEL-NEXT:   [[PHI1:%[0-9]+]]:sreg_64 = PHI [[S_MOV_B64_]], %bb.0, %35, %bb.3
+; GCN-ISEL-NEXT:   $scc = COPY [[PHI1]]
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 1, 0, implicit $scc
 ; GCN-ISEL-NEXT:   [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 1
-; GCN-ISEL-NEXT:   [[COPY11:%[0-9]+]]:sreg_32 = COPY [[V_CNDMASK_B32_e64_]]
-; GCN-ISEL-NEXT:   S_CMP_LG_U32 killed [[COPY11]], killed [[S_MOV_B32_1]], implicit-def $scc
+; GCN-ISEL-NEXT:   S_CMP_LG_U32 killed [[S_CSELECT_B32_]], killed [[S_MOV_B32_1]], implicit-def $scc
 ; GCN-ISEL-NEXT:   S_CBRANCH_SCC1 %bb.4, implicit $scc
 ; GCN-ISEL-NEXT:   S_BRANCH %bb.2
 ; GCN-ISEL-NEXT: {{  $}}
 ; GCN-ISEL-NEXT: bb.2 (%ir-block.7):
 ; GCN-ISEL-NEXT:   successors: %bb.4(0x80000000)
 ; GCN-ISEL-NEXT: {{  $}}
-; GCN-ISEL-NEXT:   [[COPY12:%[0-9]+]]:sreg_32 = COPY [[COPY9]].sub0
-; GCN-ISEL-NEXT:   [[COPY13:%[0-9]+]]:sreg_32 = COPY [[COPY8]].sub0
+; GCN-ISEL-NEXT:   [[COPY11:%[0-9]+]]:sreg_32 = COPY [[COPY9]].sub0
+; GCN-ISEL-NEXT:   [[COPY12:%[0-9]+]]:sreg_32 = COPY [[COPY8]].sub0
 ; GCN-ISEL-NEXT:   [[S_MOV_B32_2:%[0-9]+]]:sreg_32 = S_MOV_B32 0
-; GCN-ISEL-NEXT:   [[S_SUB_I32_:%[0-9]+]]:sreg_32 = S_SUB_I32 killed [[S_MOV_B32_2]], [[COPY12]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[V_CVT_F32_U32_e32_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e32 [[COPY12]], implicit $mode, implicit $exec
+; GCN-ISEL-NEXT:   [[S_SUB_I32_:%[0-9]+]]:sreg_32 = S_SUB_I32 killed [[S_MOV_B32_2]], [[COPY11]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[V_CVT_F32_U32_e32_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e32 [[COPY11]], implicit $mode, implicit $exec
 ; GCN-ISEL-NEXT:   [[V_RCP_IFLAG_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_RCP_IFLAG_F32_e32 killed [[V_CVT_F32_U32_e32_]], implicit $mode, implicit $exec
 ; GCN-ISEL-NEXT:   [[V_MUL_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_MUL_F32_e32 1333788670, killed [[V_RCP_IFLAG_F32_e32_]], implicit $mode, implicit $exec
 ; GCN-ISEL-NEXT:   [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 killed [[V_MUL_F32_e32_]], implicit $mode, implicit $exec
-; GCN-ISEL-NEXT:   [[COPY14:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e32_]]
-; GCN-ISEL-NEXT:   [[S_MUL_I32_:%[0-9]+]]:sreg_32 = S_MUL_I32 killed [[S_SUB_I32_]], [[COPY14]]
+; GCN-ISEL-NEXT:   [[COPY13:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e32_]]
+; GCN-ISEL-NEXT:   [[S_MUL_I32_:%[0-9]+]]:sreg_32 = S_MUL_I32 killed [[S_SUB_I32_]], [[COPY13]]
 ; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[V_CVT_U32_F32_e32_]], killed [[S_MUL_I32_]], implicit $exec
-; GCN-ISEL-NEXT:   [[COPY15:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e32_]]
-; GCN-ISEL-NEXT:   [[COPY16:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_]]
-; GCN-ISEL-NEXT:   [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY15]], killed [[COPY16]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY17:%[0-9]+]]:vgpr_32 = COPY killed [[S_ADD_I32_]]
-; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_1:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY13]], [[COPY17]], implicit $exec
+; GCN-ISEL-NEXT:   [[COPY14:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e32_]]
+; GCN-ISEL-NEXT:   [[COPY15:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_]]
+; GCN-ISEL-NEXT:   [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY14]], killed [[COPY15]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[COPY16:%[0-9]+]]:vgpr_32 = COPY killed [[S_ADD_I32_]]
+; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_1:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY12]], [[COPY16]], implicit $exec
 ; GCN-ISEL-NEXT:   [[S_MOV_B32_3:%[0-9]+]]:sreg_32 = S_MOV_B32 1
+; GCN-ISEL-NEXT:   [[COPY17:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_1]]
+; GCN-ISEL-NEXT:   [[S_ADD_I32_1:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY17]], [[S_MOV_B32_3]], implicit-def dead $scc
 ; GCN-ISEL-NEXT:   [[COPY18:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_1]]
-; GCN-ISEL-NEXT:   [[S_ADD_I32_1:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY18]], [[S_MOV_B32_3]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[S_MUL_I32_1:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY18]], [[COPY11]]
+; GCN-ISEL-NEXT:   [[S_SUB_I32_1:%[0-9]+]]:sreg_32 = S_SUB_I32 [[COPY12]], killed [[S_MUL_I32_1]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[S_SUB_I32_2:%[0-9]+]]:sreg_32 = S_SUB_I32 [[S_SUB_I32_1]], [[COPY11]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   S_CMP_GE_U32 [[S_SUB_I32_1]], [[COPY11]], implicit-def $scc
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_1:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[S_SUB_I32_2]], [[S_SUB_I32_1]], implicit $scc
 ; GCN-ISEL-NEXT:   [[COPY19:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_1]]
-; GCN-ISEL-NEXT:   [[S_MUL_I32_1:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY19]], [[COPY12]]
-; GCN-ISEL-NEXT:   [[S_SUB_I32_1:%[0-9]+]]:sreg_32 = S_SUB_I32 [[COPY13]], killed [[S_MUL_I32_1]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[S_SUB_I32_2:%[0-9]+]]:sreg_32 = S_SUB_I32 [[S_SUB_I32_1]], [[COPY12]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   S_CMP_GE_U32 [[S_SUB_I32_1]], [[COPY12]], implicit-def $scc
-; GCN-ISEL-NEXT:   [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[S_SUB_I32_2]], [[S_SUB_I32_1]], implicit $scc
-; GCN-ISEL-NEXT:   [[COPY20:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_1]]
-; GCN-ISEL-NEXT:   [[S_CSELECT_B32_1:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[S_ADD_I32_1]], [[COPY20]], implicit $scc
-; GCN-ISEL-NEXT:   [[S_ADD_I32_2:%[0-9]+]]:sreg_32 = S_ADD_I32 [[S_CSELECT_B32_1]], [[S_MOV_B32_3]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   S_CMP_GE_U32 killed [[S_CSELECT_B32_]], [[COPY12]], implicit-def $scc
-; GCN-ISEL-NEXT:   [[S_CSELECT_B32_2:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[S_ADD_I32_2]], [[S_CSELECT_B32_1]], implicit $scc
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_2:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[S_ADD_I32_1]], [[COPY19]], implicit $scc
+; GCN-ISEL-NEXT:   [[S_ADD_I32_2:%[0-9]+]]:sreg_32 = S_ADD_I32 [[S_CSELECT_B32_2]], [[S_MOV_B32_3]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   S_CMP_GE_U32 killed [[S_CSELECT_B32_1]], [[COPY11]], implicit-def $scc
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_3:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[S_ADD_I32_2]], [[S_CSELECT_B32_2]], implicit $scc
 ; GCN-ISEL-NEXT:   [[S_MOV_B32_4:%[0-9]+]]:sreg_32 = S_MOV_B32 0
-; GCN-ISEL-NEXT:   [[REG_SEQUENCE3:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_CSELECT_B32_2]], %subreg.sub0, killed [[S_MOV_B32_4]], %subreg.sub1
-; GCN-ISEL-NEXT:   [[COPY21:%[0-9]+]]:sreg_64 = COPY [[REG_SEQUENCE3]]
+; GCN-ISEL-NEXT:   [[REG_SEQUENCE3:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_CSELECT_B32_3]], %subreg.sub0, killed [[S_MOV_B32_4]], %subreg.sub1
+; GCN-ISEL-NEXT:   [[COPY20:%[0-9]+]]:sreg_64 = COPY [[REG_SEQUENCE3]]
 ; GCN-ISEL-NEXT:   S_BRANCH %bb.4
 ; GCN-ISEL-NEXT: {{  $}}
 ; GCN-ISEL-NEXT: bb.3 (%ir-block.12):
 ; GCN-ISEL-NEXT:   successors: %bb.1(0x80000000)
 ; GCN-ISEL-NEXT: {{  $}}
-; GCN-ISEL-NEXT:   [[COPY22:%[0-9]+]]:sreg_32 = COPY [[COPY9]].sub0
-; GCN-ISEL-NEXT:   [[V_CVT_F32_U32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[COPY22]], 0, 0, implicit $mode, implicit $exec
-; GCN-ISEL-NEXT:   [[COPY23:%[0-9]+]]:sreg_32 = COPY [[COPY9]].sub1
-; GCN-ISEL-NEXT:   [[V_CVT_F32_U32_e64_1:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[COPY23]], 0, 0, implicit $mode, implicit $exec
+; GCN-ISEL-NEXT:   [[COPY21:%[0-9]+]]:sreg_32 = COPY [[COPY9]].sub0
+; GCN-ISEL-NEXT:   [[V_CVT_F32_U32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[COPY21]], 0, 0, implicit $mode, implicit $exec
+; GCN-ISEL-NEXT:   [[COPY22:%[0-9]+]]:sreg_32 = COPY [[COPY9]].sub1
+; GCN-ISEL-NEXT:   [[V_CVT_F32_U32_e64_1:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[COPY22]], 0, 0, implicit $mode, implicit $exec
 ; GCN-ISEL-NEXT:   [[S_MOV_B32_5:%[0-9]+]]:sgpr_32 = S_MOV_B32 1333788672
 ; GCN-ISEL-NEXT:   [[V_MAC_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAC_F32_e64 0, killed [[V_CVT_F32_U32_e64_1]], 0, killed [[S_MOV_B32_5]], 0, [[V_CVT_F32_U32_e64_]], 0, 0, implicit $mode, implicit $exec
 ; GCN-ISEL-NEXT:   [[V_RCP_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_RCP_F32_e64 0, killed [[V_MAC_F32_e64_]], 0, 0, implicit $mode, implicit $exec
@@ -4008,187 +4131,187 @@ define amdgpu_kernel void @sudiv64(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GCN-ISEL-NEXT:   [[V_CVT_U32_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e64 0, killed [[V_MAC_F32_e64_1]], 0, 0, implicit $mode, implicit $exec
 ; GCN-ISEL-NEXT:   [[S_MOV_B64_1:%[0-9]+]]:sreg_64 = S_MOV_B64 0
 ; GCN-ISEL-NEXT:   [[S_SUB_U:%[0-9]+]]:sreg_64 = S_SUB_U64_PSEUDO killed [[S_MOV_B64_1]], [[COPY9]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY24:%[0-9]+]]:sreg_32 = COPY [[S_SUB_U]].sub1
-; GCN-ISEL-NEXT:   [[COPY25:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_]]
-; GCN-ISEL-NEXT:   [[S_MUL_I32_2:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY24]], [[COPY25]]
-; GCN-ISEL-NEXT:   [[COPY26:%[0-9]+]]:sreg_32 = COPY [[S_SUB_U]].sub0
-; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_2:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY26]], [[V_CVT_U32_F32_e64_]], implicit $exec
+; GCN-ISEL-NEXT:   [[COPY23:%[0-9]+]]:sreg_32 = COPY [[S_SUB_U]].sub1
+; GCN-ISEL-NEXT:   [[COPY24:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_]]
+; GCN-ISEL-NEXT:   [[S_MUL_I32_2:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY23]], [[COPY24]]
+; GCN-ISEL-NEXT:   [[COPY25:%[0-9]+]]:sreg_32 = COPY [[S_SUB_U]].sub0
+; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_2:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY25]], [[V_CVT_U32_F32_e64_]], implicit $exec
 ; GCN-ISEL-NEXT:   [[V_CVT_U32_F32_e64_1:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e64 0, [[V_TRUNC_F32_e64_]], 0, 0, implicit $mode, implicit $exec
-; GCN-ISEL-NEXT:   [[COPY27:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_1]]
-; GCN-ISEL-NEXT:   [[S_MUL_I32_3:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY26]], [[COPY27]]
-; GCN-ISEL-NEXT:   [[COPY28:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_2]]
-; GCN-ISEL-NEXT:   [[S_ADD_I32_3:%[0-9]+]]:sreg_32 = S_ADD_I32 killed [[COPY28]], killed [[S_MUL_I32_3]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[COPY26:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_1]]
+; GCN-ISEL-NEXT:   [[S_MUL_I32_3:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY25]], [[COPY26]]
+; GCN-ISEL-NEXT:   [[COPY27:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_2]]
+; GCN-ISEL-NEXT:   [[S_ADD_I32_3:%[0-9]+]]:sreg_32 = S_ADD_I32 killed [[COPY27]], killed [[S_MUL_I32_3]], implicit-def dead $scc
 ; GCN-ISEL-NEXT:   [[S_ADD_I32_4:%[0-9]+]]:sreg_32 = S_ADD_I32 killed [[S_ADD_I32_3]], killed [[S_MUL_I32_2]], implicit-def dead $scc
 ; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_3:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[V_CVT_U32_F32_e64_]], [[S_ADD_I32_4]], implicit $exec
-; GCN-ISEL-NEXT:   [[COPY29:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_]]
-; GCN-ISEL-NEXT:   [[S_MUL_I32_4:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY29]], [[S_ADD_I32_4]]
+; GCN-ISEL-NEXT:   [[COPY28:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_]]
+; GCN-ISEL-NEXT:   [[S_MUL_I32_4:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY28]], [[S_ADD_I32_4]]
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE4:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_MUL_I32_4]], %subreg.sub0, killed [[V_MUL_HI_U32_e64_3]], %subreg.sub1
-; GCN-ISEL-NEXT:   [[COPY30:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_]]
-; GCN-ISEL-NEXT:   [[S_MUL_I32_5:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY26]], [[COPY30]]
+; GCN-ISEL-NEXT:   [[COPY29:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_]]
+; GCN-ISEL-NEXT:   [[S_MUL_I32_5:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY25]], [[COPY29]]
 ; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_4:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[V_CVT_U32_F32_e64_]], [[S_MUL_I32_5]], implicit $exec
 ; GCN-ISEL-NEXT:   [[S_MOV_B32_9:%[0-9]+]]:sreg_32 = S_MOV_B32 0
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE5:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[V_MUL_HI_U32_e64_4]], %subreg.sub0, [[S_MOV_B32_9]], %subreg.sub1
 ; GCN-ISEL-NEXT:   [[S_ADD_U:%[0-9]+]]:sreg_64 = S_ADD_U64_PSEUDO killed [[REG_SEQUENCE5]], killed [[REG_SEQUENCE4]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY31:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U]].sub0
+; GCN-ISEL-NEXT:   [[COPY30:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U]].sub0
 ; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_5:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[V_CVT_U32_F32_e64_1]], [[S_MUL_I32_5]], implicit $exec
-; GCN-ISEL-NEXT:   [[COPY32:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_1]]
-; GCN-ISEL-NEXT:   [[S_MUL_I32_6:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY32]], [[S_MUL_I32_5]]
+; GCN-ISEL-NEXT:   [[COPY31:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_1]]
+; GCN-ISEL-NEXT:   [[S_MUL_I32_6:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY31]], [[S_MUL_I32_5]]
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE6:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_MUL_I32_6]], %subreg.sub0, killed [[V_MUL_HI_U32_e64_5]], %subreg.sub1
-; GCN-ISEL-NEXT:   [[COPY33:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE6]].sub0
-; GCN-ISEL-NEXT:   [[S_UADDO:%[0-9]+]]:sreg_32, [[S_UADDO1:%[0-9]+]]:sreg_64_xexec = S_UADDO_PSEUDO killed [[COPY31]], killed [[COPY33]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY34:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U]].sub1
-; GCN-ISEL-NEXT:   [[COPY35:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE6]].sub1
-; GCN-ISEL-NEXT:   [[S_ADD_C:%[0-9]+]]:sreg_32, [[S_ADD_C1:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO killed [[COPY34]], killed [[COPY35]], killed [[S_UADDO1]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[COPY32:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE6]].sub0
+; GCN-ISEL-NEXT:   [[S_UADDO:%[0-9]+]]:sreg_32, [[S_UADDO1:%[0-9]+]]:sreg_64_xexec = S_UADDO_PSEUDO killed [[COPY30]], killed [[COPY32]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[COPY33:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U]].sub1
+; GCN-ISEL-NEXT:   [[COPY34:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE6]].sub1
+; GCN-ISEL-NEXT:   [[S_ADD_C:%[0-9]+]]:sreg_32, [[S_ADD_C1:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO killed [[COPY33]], killed [[COPY34]], killed [[S_UADDO1]], implicit-def dead $scc
 ; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_6:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[V_CVT_U32_F32_e64_1]], [[S_ADD_I32_4]], implicit $exec
 ; GCN-ISEL-NEXT:   [[S_MOV_B32_10:%[0-9]+]]:sreg_32 = S_MOV_B32 0
-; GCN-ISEL-NEXT:   [[COPY36:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_6]]
-; GCN-ISEL-NEXT:   [[S_ADD_C2:%[0-9]+]]:sreg_32, [[S_ADD_C3:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO killed [[COPY36]], [[S_MOV_B32_10]], killed [[S_ADD_C1]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY37:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_1]]
-; GCN-ISEL-NEXT:   [[S_MUL_I32_7:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY37]], [[S_ADD_I32_4]]
+; GCN-ISEL-NEXT:   [[COPY35:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_6]]
+; GCN-ISEL-NEXT:   [[S_ADD_C2:%[0-9]+]]:sreg_32, [[S_ADD_C3:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO killed [[COPY35]], [[S_MOV_B32_10]], killed [[S_ADD_C1]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[COPY36:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_1]]
+; GCN-ISEL-NEXT:   [[S_MUL_I32_7:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY36]], [[S_ADD_I32_4]]
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE7:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_MUL_I32_7]], %subreg.sub0, killed [[S_ADD_C2]], %subreg.sub1
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE8:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_UADDO]], %subreg.sub0, killed [[S_ADD_C]], %subreg.sub1
-; GCN-ISEL-NEXT:   [[COPY38:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE8]].sub1
-; GCN-ISEL-NEXT:   [[REG_SEQUENCE9:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[COPY38]], %subreg.sub0, [[S_MOV_B32_10]], %subreg.sub1
+; GCN-ISEL-NEXT:   [[COPY37:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE8]].sub1
+; GCN-ISEL-NEXT:   [[REG_SEQUENCE9:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[COPY37]], %subreg.sub0, [[S_MOV_B32_10]], %subreg.sub1
 ; GCN-ISEL-NEXT:   [[S_ADD_U1:%[0-9]+]]:sreg_64 = S_ADD_U64_PSEUDO killed [[REG_SEQUENCE9]], killed [[REG_SEQUENCE7]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY39:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U1]].sub0
-; GCN-ISEL-NEXT:   [[COPY40:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_]]
-; GCN-ISEL-NEXT:   [[S_UADDO2:%[0-9]+]]:sreg_32, [[S_UADDO3:%[0-9]+]]:sreg_64_xexec = S_UADDO_PSEUDO [[COPY40]], killed [[COPY39]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY41:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U1]].sub1
-; GCN-ISEL-NEXT:   [[COPY42:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_1]]
-; GCN-ISEL-NEXT:   [[S_ADD_C4:%[0-9]+]]:sreg_32, [[S_ADD_C5:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO [[COPY42]], killed [[COPY41]], killed [[S_UADDO3]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[S_MUL_I32_8:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY26]], [[S_UADDO2]]
-; GCN-ISEL-NEXT:   [[COPY43:%[0-9]+]]:vgpr_32 = COPY [[S_MUL_I32_8]]
-; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_7:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[S_ADD_C4]], [[COPY43]], implicit $exec
+; GCN-ISEL-NEXT:   [[COPY38:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U1]].sub0
+; GCN-ISEL-NEXT:   [[COPY39:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_]]
+; GCN-ISEL-NEXT:   [[S_UADDO2:%[0-9]+]]:sreg_32, [[S_UADDO3:%[0-9]+]]:sreg_64_xexec = S_UADDO_PSEUDO [[COPY39]], killed [[COPY38]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[COPY40:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U1]].sub1
+; GCN-ISEL-NEXT:   [[COPY41:%[0-9]+]]:sreg_32 = COPY [[V_CVT_U32_F32_e64_1]]
+; GCN-ISEL-NEXT:   [[S_ADD_C4:%[0-9]+]]:sreg_32, [[S_ADD_C5:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO [[COPY41]], killed [[COPY40]], killed [[S_UADDO3]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[S_MUL_I32_8:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY25]], [[S_UADDO2]]
+; GCN-ISEL-NEXT:   [[COPY42:%[0-9]+]]:vgpr_32 = COPY [[S_MUL_I32_8]]
+; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_7:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[S_ADD_C4]], [[COPY42]], implicit $exec
 ; GCN-ISEL-NEXT:   [[S_MUL_I32_9:%[0-9]+]]:sreg_32 = S_MUL_I32 [[S_ADD_C4]], [[S_MUL_I32_8]]
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE10:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_MUL_I32_9]], %subreg.sub0, killed [[V_MUL_HI_U32_e64_7]], %subreg.sub1
-; GCN-ISEL-NEXT:   [[COPY44:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE10]].sub0
-; GCN-ISEL-NEXT:   [[S_MUL_I32_10:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY26]], [[S_ADD_C4]]
-; GCN-ISEL-NEXT:   [[COPY45:%[0-9]+]]:vgpr_32 = COPY [[S_UADDO2]]
-; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_8:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY26]], [[COPY45]], implicit $exec
-; GCN-ISEL-NEXT:   [[COPY46:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_8]]
-; GCN-ISEL-NEXT:   [[S_ADD_I32_5:%[0-9]+]]:sreg_32 = S_ADD_I32 killed [[COPY46]], killed [[S_MUL_I32_10]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[S_MUL_I32_11:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY24]], [[S_UADDO2]]
+; GCN-ISEL-NEXT:   [[COPY43:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE10]].sub0
+; GCN-ISEL-NEXT:   [[S_MUL_I32_10:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY25]], [[S_ADD_C4]]
+; GCN-ISEL-NEXT:   [[COPY44:%[0-9]+]]:vgpr_32 = COPY [[S_UADDO2]]
+; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_8:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY25]], [[COPY44]], implicit $exec
+; GCN-ISEL-NEXT:   [[COPY45:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_8]]
+; GCN-ISEL-NEXT:   [[S_ADD_I32_5:%[0-9]+]]:sreg_32 = S_ADD_I32 killed [[COPY45]], killed [[S_MUL_I32_10]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[S_MUL_I32_11:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY23]], [[S_UADDO2]]
 ; GCN-ISEL-NEXT:   [[S_ADD_I32_6:%[0-9]+]]:sreg_32 = S_ADD_I32 killed [[S_ADD_I32_5]], killed [[S_MUL_I32_11]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY47:%[0-9]+]]:vgpr_32 = COPY [[S_ADD_I32_6]]
-; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_9:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[S_UADDO2]], [[COPY47]], implicit $exec
+; GCN-ISEL-NEXT:   [[COPY46:%[0-9]+]]:vgpr_32 = COPY [[S_ADD_I32_6]]
+; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_9:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[S_UADDO2]], [[COPY46]], implicit $exec
 ; GCN-ISEL-NEXT:   [[S_MUL_I32_12:%[0-9]+]]:sreg_32 = S_MUL_I32 [[S_UADDO2]], [[S_ADD_I32_6]]
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE11:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_MUL_I32_12]], %subreg.sub0, killed [[V_MUL_HI_U32_e64_9]], %subreg.sub1
-; GCN-ISEL-NEXT:   [[COPY48:%[0-9]+]]:vgpr_32 = COPY [[S_MUL_I32_8]]
-; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_10:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[S_UADDO2]], [[COPY48]], implicit $exec
+; GCN-ISEL-NEXT:   [[COPY47:%[0-9]+]]:vgpr_32 = COPY [[S_MUL_I32_8]]
+; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_10:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[S_UADDO2]], [[COPY47]], implicit $exec
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE12:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[V_MUL_HI_U32_e64_10]], %subreg.sub0, [[S_MOV_B32_9]], %subreg.sub1
 ; GCN-ISEL-NEXT:   [[S_ADD_U2:%[0-9]+]]:sreg_64 = S_ADD_U64_PSEUDO killed [[REG_SEQUENCE12]], killed [[REG_SEQUENCE11]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY49:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U2]].sub0
-; GCN-ISEL-NEXT:   [[S_UADDO4:%[0-9]+]]:sreg_32, [[S_UADDO5:%[0-9]+]]:sreg_64_xexec = S_UADDO_PSEUDO killed [[COPY49]], killed [[COPY44]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY50:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE10]].sub1
-; GCN-ISEL-NEXT:   [[COPY51:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U2]].sub1
-; GCN-ISEL-NEXT:   [[S_ADD_C6:%[0-9]+]]:sreg_32, [[S_ADD_C7:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO killed [[COPY51]], killed [[COPY50]], killed [[S_UADDO5]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[COPY48:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U2]].sub0
+; GCN-ISEL-NEXT:   [[S_UADDO4:%[0-9]+]]:sreg_32, [[S_UADDO5:%[0-9]+]]:sreg_64_xexec = S_UADDO_PSEUDO killed [[COPY48]], killed [[COPY43]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[COPY49:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE10]].sub1
+; GCN-ISEL-NEXT:   [[COPY50:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U2]].sub1
+; GCN-ISEL-NEXT:   [[S_ADD_C6:%[0-9]+]]:sreg_32, [[S_ADD_C7:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO killed [[COPY50]], killed [[COPY49]], killed [[S_UADDO5]], implicit-def dead $scc
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE13:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_UADDO4]], %subreg.sub0, killed [[S_ADD_C6]], %subreg.sub1
-; GCN-ISEL-NEXT:   [[COPY52:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE13]].sub1
-; GCN-ISEL-NEXT:   [[REG_SEQUENCE14:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[COPY52]], %subreg.sub0, [[S_MOV_B32_10]], %subreg.sub1
-; GCN-ISEL-NEXT:   [[COPY53:%[0-9]+]]:vgpr_32 = COPY [[S_ADD_I32_6]]
-; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_11:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[S_ADD_C4]], [[COPY53]], implicit $exec
-; GCN-ISEL-NEXT:   [[COPY54:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_11]]
-; GCN-ISEL-NEXT:   [[S_ADD_C8:%[0-9]+]]:sreg_32, [[S_ADD_C9:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO killed [[COPY54]], [[S_MOV_B32_10]], killed [[S_ADD_C7]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[COPY51:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE13]].sub1
+; GCN-ISEL-NEXT:   [[REG_SEQUENCE14:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[COPY51]], %subreg.sub0, [[S_MOV_B32_10]], %subreg.sub1
+; GCN-ISEL-NEXT:   [[COPY52:%[0-9]+]]:vgpr_32 = COPY [[S_ADD_I32_6]]
+; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_11:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[S_ADD_C4]], [[COPY52]], implicit $exec
+; GCN-ISEL-NEXT:   [[COPY53:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_11]]
+; GCN-ISEL-NEXT:   [[S_ADD_C8:%[0-9]+]]:sreg_32, [[S_ADD_C9:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO killed [[COPY53]], [[S_MOV_B32_10]], killed [[S_ADD_C7]], implicit-def dead $scc
 ; GCN-ISEL-NEXT:   [[S_MUL_I32_13:%[0-9]+]]:sreg_32 = S_MUL_I32 [[S_ADD_C4]], [[S_ADD_I32_6]]
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE15:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_MUL_I32_13]], %subreg.sub0, killed [[S_ADD_C8]], %subreg.sub1
 ; GCN-ISEL-NEXT:   [[S_ADD_U3:%[0-9]+]]:sreg_64 = S_ADD_U64_PSEUDO killed [[REG_SEQUENCE14]], killed [[REG_SEQUENCE15]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY55:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U3]].sub0
-; GCN-ISEL-NEXT:   [[S_UADDO6:%[0-9]+]]:sreg_32, [[S_UADDO7:%[0-9]+]]:sreg_64_xexec = S_UADDO_PSEUDO [[S_UADDO2]], killed [[COPY55]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY56:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U3]].sub1
-; GCN-ISEL-NEXT:   [[S_ADD_C10:%[0-9]+]]:sreg_32, [[S_ADD_C11:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO [[S_ADD_C4]], killed [[COPY56]], killed [[S_UADDO7]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY57:%[0-9]+]]:sreg_32 = COPY [[COPY8]].sub0
-; GCN-ISEL-NEXT:   [[COPY58:%[0-9]+]]:vgpr_32 = COPY [[S_ADD_C10]]
-; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_12:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY57]], [[COPY58]], implicit $exec
-; GCN-ISEL-NEXT:   [[S_MUL_I32_14:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY57]], [[S_ADD_C10]]
+; GCN-ISEL-NEXT:   [[COPY54:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U3]].sub0
+; GCN-ISEL-NEXT:   [[S_UADDO6:%[0-9]+]]:sreg_32, [[S_UADDO7:%[0-9]+]]:sreg_64_xexec = S_UADDO_PSEUDO [[S_UADDO2]], killed [[COPY54]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[COPY55:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U3]].sub1
+; GCN-ISEL-NEXT:   [[S_ADD_C10:%[0-9]+]]:sreg_32, [[S_ADD_C11:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO [[S_ADD_C4]], killed [[COPY55]], killed [[S_UADDO7]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[COPY56:%[0-9]+]]:sreg_32 = COPY [[COPY8]].sub0
+; GCN-ISEL-NEXT:   [[COPY57:%[0-9]+]]:vgpr_32 = COPY [[S_ADD_C10]]
+; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_12:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY56]], [[COPY57]], implicit $exec
+; GCN-ISEL-NEXT:   [[S_MUL_I32_14:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY56]], [[S_ADD_C10]]
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE16:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_MUL_I32_14]], %subreg.sub0, killed [[V_MUL_HI_U32_e64_12]], %subreg.sub1
-; GCN-ISEL-NEXT:   [[COPY59:%[0-9]+]]:vgpr_32 = COPY [[S_UADDO6]]
-; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_13:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY57]], [[COPY59]], implicit $exec
+; GCN-ISEL-NEXT:   [[COPY58:%[0-9]+]]:vgpr_32 = COPY [[S_UADDO6]]
+; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_13:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY56]], [[COPY58]], implicit $exec
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE17:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[V_MUL_HI_U32_e64_13]], %subreg.sub0, [[S_MOV_B32_9]], %subreg.sub1
 ; GCN-ISEL-NEXT:   [[S_ADD_U4:%[0-9]+]]:sreg_64 = S_ADD_U64_PSEUDO killed [[REG_SEQUENCE17]], killed [[REG_SEQUENCE16]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY60:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U4]].sub0
-; GCN-ISEL-NEXT:   [[COPY61:%[0-9]+]]:sreg_32 = COPY [[COPY8]].sub1
-; GCN-ISEL-NEXT:   [[COPY62:%[0-9]+]]:vgpr_32 = COPY [[S_UADDO6]]
-; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_14:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY61]], [[COPY62]], implicit $exec
-; GCN-ISEL-NEXT:   [[S_MUL_I32_15:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY61]], [[S_UADDO6]]
+; GCN-ISEL-NEXT:   [[COPY59:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U4]].sub0
+; GCN-ISEL-NEXT:   [[COPY60:%[0-9]+]]:sreg_32 = COPY [[COPY8]].sub1
+; GCN-ISEL-NEXT:   [[COPY61:%[0-9]+]]:vgpr_32 = COPY [[S_UADDO6]]
+; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_14:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY60]], [[COPY61]], implicit $exec
+; GCN-ISEL-NEXT:   [[S_MUL_I32_15:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY60]], [[S_UADDO6]]
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE18:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_MUL_I32_15]], %subreg.sub0, killed [[V_MUL_HI_U32_e64_14]], %subreg.sub1
-; GCN-ISEL-NEXT:   [[COPY63:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE18]].sub0
-; GCN-ISEL-NEXT:   [[S_UADDO8:%[0-9]+]]:sreg_32, [[S_UADDO9:%[0-9]+]]:sreg_64_xexec = S_UADDO_PSEUDO killed [[COPY60]], killed [[COPY63]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY64:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U4]].sub1
-; GCN-ISEL-NEXT:   [[COPY65:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE18]].sub1
-; GCN-ISEL-NEXT:   [[S_ADD_C12:%[0-9]+]]:sreg_32, [[S_ADD_C13:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO killed [[COPY64]], killed [[COPY65]], killed [[S_UADDO9]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY66:%[0-9]+]]:vgpr_32 = COPY [[S_ADD_C10]]
-; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_15:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY61]], [[COPY66]], implicit $exec
-; GCN-ISEL-NEXT:   [[COPY67:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_15]]
-; GCN-ISEL-NEXT:   [[S_ADD_C14:%[0-9]+]]:sreg_32, [[S_ADD_C15:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO killed [[COPY67]], [[S_MOV_B32_10]], killed [[S_ADD_C13]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[S_MUL_I32_16:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY61]], [[S_ADD_C10]]
+; GCN-ISEL-NEXT:   [[COPY62:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE18]].sub0
+; GCN-ISEL-NEXT:   [[S_UADDO8:%[0-9]+]]:sreg_32, [[S_UADDO9:%[0-9]+]]:sreg_64_xexec = S_UADDO_PSEUDO killed [[COPY59]], killed [[COPY62]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[COPY63:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U4]].sub1
+; GCN-ISEL-NEXT:   [[COPY64:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE18]].sub1
+; GCN-ISEL-NEXT:   [[S_ADD_C12:%[0-9]+]]:sreg_32, [[S_ADD_C13:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO killed [[COPY63]], killed [[COPY64]], killed [[S_UADDO9]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[COPY65:%[0-9]+]]:vgpr_32 = COPY [[S_ADD_C10]]
+; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_15:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY60]], [[COPY65]], implicit $exec
+; GCN-ISEL-NEXT:   [[COPY66:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_15]]
+; GCN-ISEL-NEXT:   [[S_ADD_C14:%[0-9]+]]:sreg_32, [[S_ADD_C15:%[0-9]+]]:sreg_64_xexec = S_ADD_CO_PSEUDO killed [[COPY66]], [[S_MOV_B32_10]], killed [[S_ADD_C13]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[S_MUL_I32_16:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY60]], [[S_ADD_C10]]
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE19:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_MUL_I32_16]], %subreg.sub0, killed [[S_ADD_C14]], %subreg.sub1
 ; GCN-ISEL-NEXT:   [[REG_SEQUENCE20:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_UADDO8]], %subreg.sub0, killed [[S_ADD_C12]], %subreg.sub1
-; GCN-ISEL-NEXT:   [[COPY68:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE20]].sub1
-; GCN-ISEL-NEXT:   [[REG_SEQUENCE21:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[COPY68]], %subreg.sub0, [[S_MOV_B32_10]], %subreg.sub1
+; GCN-ISEL-NEXT:   [[COPY67:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE20]].sub1
+; GCN-ISEL-NEXT:   [[REG_SEQUENCE21:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[COPY67]], %subreg.sub0, [[S_MOV_B32_10]], %subreg.sub1
 ; GCN-ISEL-NEXT:   [[S_ADD_U5:%[0-9]+]]:sreg_64 = S_ADD_U64_PSEUDO killed [[REG_SEQUENCE21]], killed [[REG_SEQUENCE19]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY69:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U5]].sub1
-; GCN-ISEL-NEXT:   [[S_MUL_I32_17:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY22]], [[COPY69]]
-; GCN-ISEL-NEXT:   [[COPY70:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U5]].sub0
-; GCN-ISEL-NEXT:   [[COPY71:%[0-9]+]]:vgpr_32 = COPY [[COPY70]]
-; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_16:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY22]], [[COPY71]], implicit $exec
-; GCN-ISEL-NEXT:   [[COPY72:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_16]]
-; GCN-ISEL-NEXT:   [[S_ADD_I32_7:%[0-9]+]]:sreg_32 = S_ADD_I32 killed [[COPY72]], killed [[S_MUL_I32_17]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[S_MUL_I32_18:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY23]], [[COPY70]]
+; GCN-ISEL-NEXT:   [[COPY68:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U5]].sub1
+; GCN-ISEL-NEXT:   [[S_MUL_I32_17:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY21]], [[COPY68]]
+; GCN-ISEL-NEXT:   [[COPY69:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U5]].sub0
+; GCN-ISEL-NEXT:   [[COPY70:%[0-9]+]]:vgpr_32 = COPY [[COPY69]]
+; GCN-ISEL-NEXT:   [[V_MUL_HI_U32_e64_16:%[0-9]+]]:vgpr_32 = V_MUL_HI_U32_e64 [[COPY21]], [[COPY70]], implicit $exec
+; GCN-ISEL-NEXT:   [[COPY71:%[0-9]+]]:sreg_32 = COPY [[V_MUL_HI_U32_e64_16]]
+; GCN-ISEL-NEXT:   [[S_ADD_I32_7:%[0-9]+]]:sreg_32 = S_ADD_I32 killed [[COPY71]], killed [[S_MUL_I32_17]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[S_MUL_I32_18:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY22]], [[COPY69]]
 ; GCN-ISEL-NEXT:   [[S_ADD_I32_8:%[0-9]+]]:sreg_32 = S_ADD_I32 killed [[S_ADD_I32_7]], killed [[S_MUL_I32_18]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[S_SUB_I32_3:%[0-9]+]]:sreg_32 = S_SUB_I32 [[COPY61]], [[S_ADD_I32_8]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[S_MUL_I32_19:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY22]], [[COPY70]]
-; GCN-ISEL-NEXT:   [[S_USUBO:%[0-9]+]]:sreg_32, [[S_USUBO1:%[0-9]+]]:sreg_64_xexec = S_USUBO_PSEUDO [[COPY57]], killed [[S_MUL_I32_19]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[S_SUB_C:%[0-9]+]]:sreg_32, [[S_SUB_C1:%[0-9]+]]:sreg_64_xexec = S_SUB_CO_PSEUDO killed [[S_SUB_I32_3]], [[COPY23]], [[S_USUBO1]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[S_USUBO2:%[0-9]+]]:sreg_32, [[S_USUBO3:%[0-9]+]]:sreg_64_xexec = S_USUBO_PSEUDO [[S_USUBO]], [[COPY22]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[S_SUB_I32_3:%[0-9]+]]:sreg_32 = S_SUB_I32 [[COPY60]], [[S_ADD_I32_8]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[S_MUL_I32_19:%[0-9]+]]:sreg_32 = S_MUL_I32 [[COPY21]], [[COPY69]]
+; GCN-ISEL-NEXT:   [[S_USUBO:%[0-9]+]]:sreg_32, [[S_USUBO1:%[0-9]+]]:sreg_64_xexec = S_USUBO_PSEUDO [[COPY56]], killed [[S_MUL_I32_19]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[S_SUB_C:%[0-9]+]]:sreg_32, [[S_SUB_C1:%[0-9]+]]:sreg_64_xexec = S_SUB_CO_PSEUDO killed [[S_SUB_I32_3]], [[COPY22]], [[S_USUBO1]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   [[S_USUBO2:%[0-9]+]]:sreg_32, [[S_USUBO3:%[0-9]+]]:sreg_64_xexec = S_USUBO_PSEUDO [[S_USUBO]], [[COPY21]], implicit-def dead $scc
 ; GCN-ISEL-NEXT:   [[S_SUB_C2:%[0-9]+]]:sreg_32, [[S_SUB_C3:%[0-9]+]]:sreg_64_xexec = S_SUB_CO_PSEUDO killed [[S_SUB_C]], [[S_MOV_B32_10]], killed [[S_USUBO3]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   S_CMP_GE_U32 [[S_SUB_C2]], [[COPY23]], implicit-def $scc
+; GCN-ISEL-NEXT:   S_CMP_GE_U32 [[S_SUB_C2]], [[COPY22]], implicit-def $scc
 ; GCN-ISEL-NEXT:   [[S_MOV_B32_11:%[0-9]+]]:sreg_32 = S_MOV_B32 -1
-; GCN-ISEL-NEXT:   [[S_CSELECT_B32_3:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[S_MOV_B32_11]], [[S_MOV_B32_10]], implicit $scc
-; GCN-ISEL-NEXT:   S_CMP_GE_U32 killed [[S_USUBO2]], [[COPY22]], implicit-def $scc
 ; GCN-ISEL-NEXT:   [[S_CSELECT_B32_4:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[S_MOV_B32_11]], [[S_MOV_B32_10]], implicit $scc
-; GCN-ISEL-NEXT:   S_CMP_EQ_U32 [[S_SUB_C2]], [[COPY23]], implicit-def $scc
-; GCN-ISEL-NEXT:   [[S_CSELECT_B32_5:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[S_CSELECT_B32_4]], killed [[S_CSELECT_B32_3]], implicit $scc
-; GCN-ISEL-NEXT:   [[COPY73:%[0-9]+]]:sreg_32 = COPY killed [[S_CSELECT_B32_5]]
-; GCN-ISEL-NEXT:   [[REG_SEQUENCE22:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY70]], %subreg.sub0, [[COPY69]], %subreg.sub1
+; GCN-ISEL-NEXT:   S_CMP_GE_U32 killed [[S_USUBO2]], [[COPY21]], implicit-def $scc
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_5:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[S_MOV_B32_11]], [[S_MOV_B32_10]], implicit $scc
+; GCN-ISEL-NEXT:   S_CMP_EQ_U32 [[S_SUB_C2]], [[COPY22]], implicit-def $scc
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_6:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[S_CSELECT_B32_5]], killed [[S_CSELECT_B32_4]], implicit $scc
+; GCN-ISEL-NEXT:   [[COPY72:%[0-9]+]]:sreg_32 = COPY killed [[S_CSELECT_B32_6]]
+; GCN-ISEL-NEXT:   [[REG_SEQUENCE22:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY69]], %subreg.sub0, [[COPY68]], %subreg.sub1
 ; GCN-ISEL-NEXT:   [[S_MOV_B64_2:%[0-9]+]]:sreg_64 = S_MOV_B64 1
 ; GCN-ISEL-NEXT:   [[S_ADD_U6:%[0-9]+]]:sreg_64 = S_ADD_U64_PSEUDO [[REG_SEQUENCE22]], killed [[S_MOV_B64_2]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY74:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U6]].sub0
+; GCN-ISEL-NEXT:   [[COPY73:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U6]].sub0
 ; GCN-ISEL-NEXT:   [[S_MOV_B64_3:%[0-9]+]]:sreg_64 = S_MOV_B64 2
 ; GCN-ISEL-NEXT:   [[S_ADD_U7:%[0-9]+]]:sreg_64 = S_ADD_U64_PSEUDO [[REG_SEQUENCE22]], killed [[S_MOV_B64_3]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   [[COPY75:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U7]].sub0
-; GCN-ISEL-NEXT:   S_CMP_LG_U32 killed [[COPY73]], [[S_MOV_B32_10]], implicit-def $scc
-; GCN-ISEL-NEXT:   [[S_CSELECT_B32_6:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[COPY75]], killed [[COPY74]], implicit $scc
-; GCN-ISEL-NEXT:   [[COPY76:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U6]].sub1
-; GCN-ISEL-NEXT:   [[COPY77:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U7]].sub1
-; GCN-ISEL-NEXT:   [[S_CSELECT_B32_7:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[COPY77]], killed [[COPY76]], implicit $scc
-; GCN-ISEL-NEXT:   [[S_SUB_C4:%[0-9]+]]:sreg_32, [[S_SUB_C5:%[0-9]+]]:sreg_64_xexec = S_SUB_CO_PSEUDO [[COPY61]], [[S_ADD_I32_8]], [[S_USUBO1]], implicit-def dead $scc
-; GCN-ISEL-NEXT:   S_CMP_GE_U32 [[S_SUB_C4]], [[COPY23]], implicit-def $scc
-; GCN-ISEL-NEXT:   [[S_CSELECT_B32_8:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[S_MOV_B32_11]], [[S_MOV_B32_10]], implicit $scc
-; GCN-ISEL-NEXT:   S_CMP_GE_U32 [[S_USUBO]], [[COPY22]], implicit-def $scc
+; GCN-ISEL-NEXT:   [[COPY74:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U7]].sub0
+; GCN-ISEL-NEXT:   S_CMP_LG_U32 killed [[COPY72]], [[S_MOV_B32_10]], implicit-def $scc
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_7:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[COPY74]], killed [[COPY73]], implicit $scc
+; GCN-ISEL-NEXT:   [[COPY75:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U6]].sub1
+; GCN-ISEL-NEXT:   [[COPY76:%[0-9]+]]:sreg_32 = COPY [[S_ADD_U7]].sub1
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_8:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[COPY76]], killed [[COPY75]], implicit $scc
+; GCN-ISEL-NEXT:   [[S_SUB_C4:%[0-9]+]]:sreg_32, [[S_SUB_C5:%[0-9]+]]:sreg_64_xexec = S_SUB_CO_PSEUDO [[COPY60]], [[S_ADD_I32_8]], [[S_USUBO1]], implicit-def dead $scc
+; GCN-ISEL-NEXT:   S_CMP_GE_U32 [[S_SUB_C4]], [[COPY22]], implicit-def $scc
 ; GCN-ISEL-NEXT:   [[S_CSELECT_B32_9:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[S_MOV_B32_11]], [[S_MOV_B32_10]], implicit $scc
-; GCN-ISEL-NEXT:   S_CMP_EQ_U32 [[S_SUB_C4]], [[COPY23]], implicit-def $scc
-; GCN-ISEL-NEXT:   [[S_CSELECT_B32_10:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[S_CSELECT_B32_9]], killed [[S_CSELECT_B32_8]], implicit $scc
-; GCN-ISEL-NEXT:   [[COPY78:%[0-9]+]]:sreg_32 = COPY killed [[S_CSELECT_B32_10]]
-; GCN-ISEL-NEXT:   S_CMP_LG_U32 killed [[COPY78]], [[S_MOV_B32_10]], implicit-def $scc
-; GCN-ISEL-NEXT:   [[S_CSELECT_B32_11:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[S_CSELECT_B32_7]], [[COPY69]], implicit $scc
-; GCN-ISEL-NEXT:   [[S_CSELECT_B32_12:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[S_CSELECT_B32_6]], [[COPY70]], implicit $scc
-; GCN-ISEL-NEXT:   [[REG_SEQUENCE23:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_CSELECT_B32_12]], %subreg.sub0, killed [[S_CSELECT_B32_11]], %subreg.sub1
+; GCN-ISEL-NEXT:   S_CMP_GE_U32 [[S_USUBO]], [[COPY21]], implicit-def $scc
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_10:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[S_MOV_B32_11]], [[S_MOV_B32_10]], implicit $scc
+; GCN-ISEL-NEXT:   S_CMP_EQ_U32 [[S_SUB_C4]], [[COPY22]], implicit-def $scc
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_11:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[S_CSELECT_B32_10]], killed [[S_CSELECT_B32_9]], implicit $scc
+; GCN-ISEL-NEXT:   [[COPY77:%[0-9]+]]:sreg_32 = COPY killed [[S_CSELECT_B32_11]]
+; GCN-ISEL-NEXT:   S_CMP_LG_U32 killed [[COPY77]], [[S_MOV_B32_10]], implicit-def $scc
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_12:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[S_CSELECT_B32_8]], [[COPY68]], implicit $scc
+; GCN-ISEL-NEXT:   [[S_CSELECT_B32_13:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[S_CSELECT_B32_7]], [[COPY69]], implicit $scc
+; GCN-ISEL-NEXT:   [[REG_SEQUENCE23:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[S_CSELECT_B32_13]], %subreg.sub0, killed [[S_CSELECT_B32_12]], %subreg.sub1
 ; GCN-ISEL-NEXT:   [[S_MOV_B64_4:%[0-9]+]]:sreg_64 = S_MOV_B64 0
-; GCN-ISEL-NEXT:   [[COPY79:%[0-9]+]]:sreg_64 = COPY [[REG_SEQUENCE23]]
+; GCN-ISEL-NEXT:   [[COPY78:%[0-9]+]]:sreg_64 = COPY [[REG_SEQUENCE23]]
 ; GCN-ISEL-NEXT:   S_BRANCH %bb.1
 ; GCN-ISEL-NEXT: {{  $}}
 ; GCN-ISEL-NEXT: bb.4..split:
-; GCN-ISEL-NEXT:   [[PHI2:%[0-9]+]]:sreg_64 = PHI [[PHI]], %bb.1, [[COPY21]], %bb.2
-; GCN-ISEL-NEXT:   [[COPY80:%[0-9]+]]:sreg_32 = COPY [[COPY7]].sub1
-; GCN-ISEL-NEXT:   [[COPY81:%[0-9]+]]:sreg_32 = COPY [[COPY7]].sub0
-; GCN-ISEL-NEXT:   [[REG_SEQUENCE24:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[COPY81]], %subreg.sub0, killed [[COPY80]], %subreg.sub1
-; GCN-ISEL-NEXT:   [[COPY82:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE24]].sub1
-; GCN-ISEL-NEXT:   [[COPY83:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE24]].sub0
+; GCN-ISEL-NEXT:   [[PHI2:%[0-9]+]]:sreg_64 = PHI [[PHI]], %bb.1, [[COPY20]], %bb.2
+; GCN-ISEL-NEXT:   [[COPY79:%[0-9]+]]:sreg_32 = COPY [[COPY7]].sub1
+; GCN-ISEL-NEXT:   [[COPY80:%[0-9]+]]:sreg_32 = COPY [[COPY7]].sub0
+; GCN-ISEL-NEXT:   [[REG_SEQUENCE24:%[0-9]+]]:sreg_64 = REG_SEQUENCE killed [[COPY80]], %subreg.sub0, killed [[COPY79]], %subreg.sub1
+; GCN-ISEL-NEXT:   [[COPY81:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE24]].sub1
+; GCN-ISEL-NEXT:   [[COPY82:%[0-9]+]]:sreg_32 = COPY [[REG_SEQUENCE24]].sub0
 ; GCN-ISEL-NEXT:   [[S_MOV_B32_12:%[0-9]+]]:sreg_32 = S_MOV_B32 61440
 ; GCN-ISEL-NEXT:   [[S_MOV_B32_13:%[0-9]+]]:sreg_32 = S_MOV_B32 -1
-; GCN-ISEL-NEXT:   [[REG_SEQUENCE25:%[0-9]+]]:sgpr_128 = REG_SEQUENCE killed [[COPY83]], %subreg.sub0, killed [[COPY82]], %subreg.sub1, killed [[S_MOV_B32_13]], %subreg.sub2, killed [[S_MOV_B32_12]], %subreg.sub3
-; GCN-ISEL-NEXT:   [[COPY84:%[0-9]+]]:vreg_64 = COPY [[PHI2]]
-; GCN-ISEL-NEXT:   BUFFER_STORE_DWORDX2_OFFSET [[COPY84]], killed [[REG_SEQUENCE25]], 0, 0, 0, 0, implicit $exec :: (store (s64) into %ir.15, addrspace 1)
+; GCN-ISEL-NEXT:   [[REG_SEQUENCE25:%[0-9]+]]:sgpr_128 = REG_SEQUENCE killed [[COPY82]], %subreg.sub0, killed [[COPY81]], %subreg.sub1, killed [[S_MOV_B32_13]], %subreg.sub2, killed [[S_MOV_B32_12]], %subreg.sub3
+; GCN-ISEL-NEXT:   [[COPY83:%[0-9]+]]:vreg_64 = COPY [[PHI2]]
+; GCN-ISEL-NEXT:   BUFFER_STORE_DWORDX2_OFFSET [[COPY83]], killed [[REG_SEQUENCE25]], 0, 0, 0, 0, implicit $exec :: (store (s64) into %ir.15, addrspace 1)
 ; GCN-ISEL-NEXT:   S_ENDPGM 0
   %result = udiv i64 %x, %y
   store i64 %result, ptr addrspace(1) %out

diff  --git a/llvm/test/CodeGen/AMDGPU/coalescer_distribute.ll b/llvm/test/CodeGen/AMDGPU/coalescer_distribute.ll
index 94085ad99ccda..7ea758ecc2097 100644
--- a/llvm/test/CodeGen/AMDGPU/coalescer_distribute.ll
+++ b/llvm/test/CodeGen/AMDGPU/coalescer_distribute.ll
@@ -20,8 +20,10 @@ define amdgpu_kernel void @hoge(i1 %c0, i1 %c1, i1 %c2, i1 %c3, i1 %c4) {
 ; CHECK-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
 ; CHECK-NEXT:  .LBB0_1: ; %bb25
 ; CHECK-NEXT:    ; =>This Inner Loop Header: Depth=1
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_1
+; CHECK-NEXT:    s_and_b64 s[2:3], s[0:1], exec
+; CHECK-NEXT:    s_cselect_b32 s2, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s2, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_1
 ; CHECK-NEXT:  ; %bb.2: ; %bb30
 ; CHECK-NEXT:    s_endpgm
 bb:

diff  --git a/llvm/test/CodeGen/AMDGPU/coexec-scheduler.ll b/llvm/test/CodeGen/AMDGPU/coexec-scheduler.ll
index ac121195de432..00136d8676bac 100644
--- a/llvm/test/CodeGen/AMDGPU/coexec-scheduler.ll
+++ b/llvm/test/CodeGen/AMDGPU/coexec-scheduler.ll
@@ -32,25 +32,24 @@ define amdgpu_kernel void @ds_wmma(ptr addrspace(3) %base, ptr addrspace(1) %out
 ; COEXEC-NEXT:    v_mov_b32_e32 v30, v0
 ; COEXEC-NEXT:    s_xor_b32 s0, s0, -1
 ; COEXEC-NEXT:    v_mov_b32_e32 v31, v0
-; COEXEC-NEXT:    v_cndmask_b32_e64 v32, 0, 1, s0
-; COEXEC-NEXT:    v_cmp_ne_u32_e64 s0, 1, v32
 ; COEXEC-NEXT:  .LBB0_1: ; %loop
 ; COEXEC-NEXT:    ; =>This Inner Loop Header: Depth=1
-; COEXEC-NEXT:    s_and_b32 vcc_lo, exec_lo, s0
 ; COEXEC-NEXT:    v_nop
 ; COEXEC-NEXT:    v_nop
 ; COEXEC-NEXT:    v_nop
 ; COEXEC-NEXT:    v_nop
 ; COEXEC-NEXT:    v_mov_b32_e32 v88, s2
 ; COEXEC-NEXT:    s_add_co_i32 s2, s2, s1
+; COEXEC-NEXT:    s_and_b32 s3, s0, exec_lo
+; COEXEC-NEXT:    s_cselect_b32 s3, 1, 0
 ; COEXEC-NEXT:    ds_load_tr16_b128 v[36:39], v88 offset:192
+; COEXEC-NEXT:    ds_load_tr16_b128 v[32:35], v88 offset:128
 ; COEXEC-NEXT:    ds_load_tr16_b128 v[40:43], v88
 ; COEXEC-NEXT:    ds_load_tr16_b128 v[44:47], v88 offset:64
-; COEXEC-NEXT:    ds_load_tr16_b128 v[32:35], v88 offset:128
 ; COEXEC-NEXT:    ds_load_tr16_b128 v[52:55], v88 offset:448
 ; COEXEC-NEXT:    ds_load_tr16_b128 v[48:51], v88 offset:384
-; COEXEC-NEXT:    ds_load_tr16_b128 v[56:59], v88 offset:256
 ; COEXEC-NEXT:    ds_load_tr16_b128 v[60:63], v88 offset:320
+; COEXEC-NEXT:    ds_load_tr16_b128 v[56:59], v88 offset:256
 ; COEXEC-NEXT:    ds_load_tr16_b128 v[68:71], v88 offset:704
 ; COEXEC-NEXT:    ds_load_tr16_b128 v[64:67], v88 offset:640
 ; COEXEC-NEXT:    ds_load_tr16_b128 v[76:79], v88 offset:576
@@ -59,6 +58,7 @@ define amdgpu_kernel void @ds_wmma(ptr addrspace(3) %base, ptr addrspace(1) %out
 ; COEXEC-NEXT:    ds_load_tr16_b128 v[80:83], v88 offset:896
 ; COEXEC-NEXT:    ds_load_tr16_b128 v[92:95], v88 offset:832
 ; COEXEC-NEXT:    ds_load_tr16_b128 v[88:91], v88 offset:768
+; COEXEC-NEXT:    s_cmp_lg_u32 s3, 1
 ; COEXEC-NEXT:    s_wait_dscnt 0xc
 ; COEXEC-NEXT:    v_wmma_f32_16x16x32_f16 v[24:31], v[40:47], v[32:39], v[24:31]
 ; COEXEC-NEXT:    s_wait_dscnt 0x8
@@ -71,7 +71,7 @@ define amdgpu_kernel void @ds_wmma(ptr addrspace(3) %base, ptr addrspace(1) %out
 ; COEXEC-NEXT:    v_wmma_f32_16x16x32_f16 v[16:23], v[56:63], v[48:55], v[16:23]
 ; COEXEC-NEXT:    v_wmma_f32_16x16x32_f16 v[8:15], v[72:79], v[64:71], v[8:15]
 ; COEXEC-NEXT:    v_wmma_f32_16x16x32_f16 v[0:7], v[88:95], v[80:87], v[0:7]
-; COEXEC-NEXT:    s_cbranch_vccnz .LBB0_1
+; COEXEC-NEXT:    s_cbranch_scc1 .LBB0_1
 ; COEXEC-NEXT:  ; %bb.2: ; %end
 ; COEXEC-NEXT:    v_nop
 ; COEXEC-NEXT:    v_mov_b32_e32 v32, 0
@@ -106,18 +106,16 @@ define amdgpu_kernel void @ds_wmma(ptr addrspace(3) %base, ptr addrspace(1) %out
 ; GCN-NEXT:    s_wait_kmcnt 0x0
 ; GCN-NEXT:    s_bitcmp1_b32 s0, 0
 ; GCN-NEXT:    v_dual_mov_b32 v15, v0 :: v_dual_mov_b32 v16, v0
-; GCN-NEXT:    s_cselect_b32 s0, -1, 0
 ; GCN-NEXT:    v_dual_mov_b32 v17, v0 :: v_dual_mov_b32 v18, v0
-; GCN-NEXT:    s_xor_b32 s0, s0, -1
 ; GCN-NEXT:    v_dual_mov_b32 v19, v0 :: v_dual_mov_b32 v20, v0
-; GCN-NEXT:    v_cndmask_b32_e64 v24, 0, 1, s0
 ; GCN-NEXT:    v_dual_mov_b32 v21, v0 :: v_dual_mov_b32 v22, v0
-; GCN-NEXT:    v_dual_mov_b32 v23, v0 :: v_dual_mov_b32 v25, v0
-; GCN-NEXT:    v_mov_b32_e32 v26, v0
-; GCN-NEXT:    v_cmp_ne_u32_e64 s0, 1, v24
-; GCN-NEXT:    v_dual_mov_b32 v24, v0 :: v_dual_mov_b32 v27, v0
-; GCN-NEXT:    v_dual_mov_b32 v28, v0 :: v_dual_mov_b32 v29, v0
-; GCN-NEXT:    v_dual_mov_b32 v30, v0 :: v_dual_mov_b32 v31, v0
+; GCN-NEXT:    v_dual_mov_b32 v23, v0 :: v_dual_mov_b32 v24, v0
+; GCN-NEXT:    v_dual_mov_b32 v25, v0 :: v_dual_mov_b32 v26, v0
+; GCN-NEXT:    v_dual_mov_b32 v27, v0 :: v_dual_mov_b32 v28, v0
+; GCN-NEXT:    v_dual_mov_b32 v29, v0 :: v_dual_mov_b32 v30, v0
+; GCN-NEXT:    v_mov_b32_e32 v31, v0
+; GCN-NEXT:    s_cselect_b32 s0, -1, 0
+; GCN-NEXT:    s_xor_b32 s0, s0, -1
 ; GCN-NEXT:  .LBB0_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    v_nop
@@ -125,8 +123,9 @@ define amdgpu_kernel void @ds_wmma(ptr addrspace(3) %base, ptr addrspace(1) %out
 ; GCN-NEXT:    v_nop
 ; GCN-NEXT:    v_nop
 ; GCN-NEXT:    v_mov_b32_e32 v92, s2
-; GCN-NEXT:    s_and_b32 vcc_lo, exec_lo, s0
 ; GCN-NEXT:    s_add_co_i32 s2, s2, s1
+; GCN-NEXT:    s_and_b32 s3, s0, exec_lo
+; GCN-NEXT:    s_cselect_b32 s3, 1, 0
 ; GCN-NEXT:    ds_load_tr16_b128 v[32:35], v92
 ; GCN-NEXT:    ds_load_tr16_b128 v[36:39], v92 offset:64
 ; GCN-NEXT:    ds_load_tr16_b128 v[40:43], v92 offset:128
@@ -143,6 +142,7 @@ define amdgpu_kernel void @ds_wmma(ptr addrspace(3) %base, ptr addrspace(1) %out
 ; GCN-NEXT:    ds_load_tr16_b128 v[84:87], v92 offset:832
 ; GCN-NEXT:    ds_load_tr16_b128 v[88:91], v92 offset:896
 ; GCN-NEXT:    ds_load_tr16_b128 v[92:95], v92 offset:960
+; GCN-NEXT:    s_cmp_lg_u32 s3, 1
 ; GCN-NEXT:    s_wait_dscnt 0xc
 ; GCN-NEXT:    v_wmma_f32_16x16x32_f16 v[24:31], v[32:39], v[40:47], v[24:31]
 ; GCN-NEXT:    s_wait_dscnt 0x8
@@ -155,7 +155,7 @@ define amdgpu_kernel void @ds_wmma(ptr addrspace(3) %base, ptr addrspace(1) %out
 ; GCN-NEXT:    v_wmma_f32_16x16x32_f16 v[16:23], v[48:55], v[56:63], v[16:23]
 ; GCN-NEXT:    v_wmma_f32_16x16x32_f16 v[8:15], v[64:71], v[72:79], v[8:15]
 ; GCN-NEXT:    v_wmma_f32_16x16x32_f16 v[0:7], v[80:87], v[88:95], v[0:7]
-; GCN-NEXT:    s_cbranch_vccnz .LBB0_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB0_1
 ; GCN-NEXT:  ; %bb.2: ; %end
 ; GCN-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8 nv
 ; GCN-NEXT:    v_nop
@@ -250,8 +250,8 @@ define amdgpu_kernel void @ds_wmma_permute(ptr addrspace(3) %base, ptr addrspace
 ; COEXEC-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
 ; COEXEC-NEXT:    s_mov_b32 s6, 0
 ; COEXEC-NEXT:    s_clause 0x1
-; COEXEC-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0 nv
-; COEXEC-NEXT:    s_load_b64 s[0:1], s[4:5], 0x10 nv
+; COEXEC-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 nv
+; COEXEC-NEXT:    s_load_b64 s[2:3], s[4:5], 0x10 nv
 ; COEXEC-NEXT:    v_mov_b32_e32 v0, 0
 ; COEXEC-NEXT:    v_dual_mov_b32 v1, v0 :: v_dual_mov_b32 v2, v0
 ; COEXEC-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_mov_b32 v4, v0
@@ -268,25 +268,25 @@ define amdgpu_kernel void @ds_wmma_permute(ptr addrspace(3) %base, ptr addrspace
 ; COEXEC-NEXT:    v_dual_mov_b32 v25, v0 :: v_dual_mov_b32 v26, v0
 ; COEXEC-NEXT:    v_dual_mov_b32 v27, v0 :: v_dual_mov_b32 v28, v0
 ; COEXEC-NEXT:    s_wait_kmcnt 0x0
-; COEXEC-NEXT:    s_bitcmp1_b32 s0, 0
+; COEXEC-NEXT:    s_bitcmp1_b32 s2, 0
 ; COEXEC-NEXT:    v_mov_b32_e32 v29, v0
-; COEXEC-NEXT:    s_cselect_b32 s0, -1, 0
+; COEXEC-NEXT:    s_cselect_b32 s2, -1, 0
 ; COEXEC-NEXT:    v_mov_b32_e32 v30, v0
-; COEXEC-NEXT:    s_xor_b32 s0, s0, -1
+; COEXEC-NEXT:    s_xor_b32 s2, s2, -1
 ; COEXEC-NEXT:    v_mov_b32_e32 v31, v0
-; COEXEC-NEXT:    v_cndmask_b32_e64 v32, 0, 1, s0
-; COEXEC-NEXT:    v_cmp_ne_u32_e64 s0, 1, v32
 ; COEXEC-NEXT:  .LBB1_1: ; %loop
 ; COEXEC-NEXT:    ; =>This Inner Loop Header: Depth=1
-; COEXEC-NEXT:    s_add_co_i32 s7, s2, s6
-; COEXEC-NEXT:    s_add_co_i32 s8, s3, s6
-; COEXEC-NEXT:    s_add_co_i32 s6, s6, s1
+; COEXEC-NEXT:    s_add_co_i32 s7, s0, s6
+; COEXEC-NEXT:    s_add_co_i32 s8, s1, s6
+; COEXEC-NEXT:    s_add_co_i32 s6, s6, s3
+; COEXEC-NEXT:    s_and_b32 s9, s2, exec_lo
+; COEXEC-NEXT:    s_cselect_b32 s9, 1, 0
 ; COEXEC-NEXT:    v_nop
 ; COEXEC-NEXT:    v_nop
 ; COEXEC-NEXT:    v_nop
 ; COEXEC-NEXT:    v_nop
 ; COEXEC-NEXT:    v_mov_b32_e32 v124, s7
-; COEXEC-NEXT:    s_and_b32 vcc_lo, exec_lo, s0
+; COEXEC-NEXT:    s_cmp_lg_u32 s9, 1
 ; COEXEC-NEXT:    v_mov_b32_e32 v156, s8
 ; COEXEC-NEXT:    ds_load_tr16_b128 v[32:35], v124
 ; COEXEC-NEXT:    ds_load_tr16_b128 v[36:39], v124 offset:64
@@ -344,7 +344,7 @@ define amdgpu_kernel void @ds_wmma_permute(ptr addrspace(3) %base, ptr addrspace
 ; COEXEC-NEXT:    v_wmma_f32_16x16x32_f16 v[16:23], v[104:111], v[136:143], v[16:23]
 ; COEXEC-NEXT:    v_wmma_f32_16x16x32_f16 v[8:15], v[112:119], v[144:151], v[8:15]
 ; COEXEC-NEXT:    v_wmma_f32_16x16x32_f16 v[0:7], v[120:127], v[152:159], v[0:7]
-; COEXEC-NEXT:    s_cbranch_vccnz .LBB1_1
+; COEXEC-NEXT:    s_cbranch_scc1 .LBB1_1
 ; COEXEC-NEXT:  ; %bb.2: ; %end
 ; COEXEC-NEXT:    v_mov_b32_e32 v32, 0
 ; COEXEC-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8 nv
@@ -379,25 +379,24 @@ define amdgpu_kernel void @ds_wmma_permute(ptr addrspace(3) %base, ptr addrspace
 ; GCN-NEXT:    s_wait_kmcnt 0x0
 ; GCN-NEXT:    s_bitcmp1_b32 s0, 0
 ; GCN-NEXT:    v_dual_mov_b32 v15, v0 :: v_dual_mov_b32 v16, v0
-; GCN-NEXT:    s_cselect_b32 s0, -1, 0
 ; GCN-NEXT:    v_dual_mov_b32 v17, v0 :: v_dual_mov_b32 v18, v0
-; GCN-NEXT:    s_xor_b32 s0, s0, -1
 ; GCN-NEXT:    v_dual_mov_b32 v19, v0 :: v_dual_mov_b32 v20, v0
-; GCN-NEXT:    v_cndmask_b32_e64 v24, 0, 1, s0
 ; GCN-NEXT:    v_dual_mov_b32 v21, v0 :: v_dual_mov_b32 v22, v0
-; GCN-NEXT:    v_dual_mov_b32 v23, v0 :: v_dual_mov_b32 v25, v0
-; GCN-NEXT:    v_mov_b32_e32 v26, v0
-; GCN-NEXT:    v_cmp_ne_u32_e64 s0, 1, v24
-; GCN-NEXT:    v_dual_mov_b32 v24, v0 :: v_dual_mov_b32 v27, v0
-; GCN-NEXT:    v_dual_mov_b32 v28, v0 :: v_dual_mov_b32 v29, v0
-; GCN-NEXT:    v_dual_mov_b32 v30, v0 :: v_dual_mov_b32 v31, v0
+; GCN-NEXT:    v_dual_mov_b32 v23, v0 :: v_dual_mov_b32 v24, v0
+; GCN-NEXT:    v_dual_mov_b32 v25, v0 :: v_dual_mov_b32 v26, v0
+; GCN-NEXT:    v_dual_mov_b32 v27, v0 :: v_dual_mov_b32 v28, v0
+; GCN-NEXT:    v_dual_mov_b32 v29, v0 :: v_dual_mov_b32 v30, v0
+; GCN-NEXT:    v_mov_b32_e32 v31, v0
+; GCN-NEXT:    s_cselect_b32 s0, -1, 0
+; GCN-NEXT:    s_xor_b32 s0, s0, -1
 ; GCN-NEXT:  .LBB1_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    s_add_co_i32 s7, s2, s6
 ; GCN-NEXT:    s_add_co_i32 s8, s3, s6
 ; GCN-NEXT:    v_dual_mov_b32 v96, s7 :: v_dual_mov_b32 v97, s8
-; GCN-NEXT:    s_and_b32 vcc_lo, exec_lo, s0
 ; GCN-NEXT:    s_add_co_i32 s6, s6, s1
+; GCN-NEXT:    s_and_b32 s7, s0, exec_lo
+; GCN-NEXT:    s_cselect_b32 s7, 1, 0
 ; GCN-NEXT:    ds_load_tr16_b128 v[32:35], v96
 ; GCN-NEXT:    ds_load_tr16_b128 v[36:39], v96 offset:64
 ; GCN-NEXT:    ds_load_tr16_b128 v[40:43], v97
@@ -414,6 +413,7 @@ define amdgpu_kernel void @ds_wmma_permute(ptr addrspace(3) %base, ptr addrspace
 ; GCN-NEXT:    ds_load_tr16_b128 v[84:87], v96 offset:832
 ; GCN-NEXT:    ds_load_tr16_b128 v[88:91], v97 offset:768
 ; GCN-NEXT:    ds_load_tr16_b128 v[92:95], v97 offset:832
+; GCN-NEXT:    s_cmp_lg_u32 s7, 1
 ; GCN-NEXT:    s_wait_dscnt 0xc
 ; GCN-NEXT:    v_wmma_f32_16x16x32_f16 v[24:31], v[32:39], v[40:47], v[24:31]
 ; GCN-NEXT:    s_wait_dscnt 0x8
@@ -454,7 +454,7 @@ define amdgpu_kernel void @ds_wmma_permute(ptr addrspace(3) %base, ptr addrspace
 ; GCN-NEXT:    v_wmma_f32_16x16x32_f16 v[16:23], v[48:55], v[56:63], v[16:23]
 ; GCN-NEXT:    v_wmma_f32_16x16x32_f16 v[8:15], v[64:71], v[72:79], v[8:15]
 ; GCN-NEXT:    v_wmma_f32_16x16x32_f16 v[0:7], v[80:87], v[88:95], v[0:7]
-; GCN-NEXT:    s_cbranch_vccnz .LBB1_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB1_1
 ; GCN-NEXT:  ; %bb.2: ; %end
 ; GCN-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8 nv
 ; GCN-NEXT:    v_nop

diff  --git a/llvm/test/CodeGen/AMDGPU/combine-add-zext-xor.ll b/llvm/test/CodeGen/AMDGPU/combine-add-zext-xor.ll
index 2558da401f89a..d24d6acf49ab4 100644
--- a/llvm/test/CodeGen/AMDGPU/combine-add-zext-xor.ll
+++ b/llvm/test/CodeGen/AMDGPU/combine-add-zext-xor.ll
@@ -9,66 +9,75 @@ define i32 @combine_add_zext_xor(i32 inreg %cond) {
 ; GFX1010:       ; %bb.0: ; %.entry
 ; GFX1010-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX1010-NEXT:    s_cmp_lg_u32 s16, 0
-; GFX1010-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1010-NEXT:    s_mov_b32 s5, 0
 ; GFX1010-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX1010-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4
-; GFX1010-NEXT:    v_cmp_ne_u32_e64 s4, 1, v0
 ; GFX1010-NEXT:    s_branch .LBB0_2
 ; GFX1010-NEXT:  .LBB0_1: ; %bb9
 ; GFX1010-NEXT:    ; in Loop: Header=BB0_2 Depth=1
-; GFX1010-NEXT:    s_xor_b32 s5, s5, -1
-; GFX1010-NEXT:    v_cmp_lt_i32_e32 vcc_lo, 0xfffffbe6, v1
-; GFX1010-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s5
-; GFX1010-NEXT:    v_add_nc_u32_e32 v2, v1, v0
-; GFX1010-NEXT:    v_mov_b32_e32 v1, v2
-; GFX1010-NEXT:    s_cbranch_vccz .LBB0_4
+; GFX1010-NEXT:    s_xor_b32 s6, s6, -1
+; GFX1010-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX1010-NEXT:    s_add_i32 s7, s5, s6
+; GFX1010-NEXT:    s_cmpk_gt_i32 s5, 0xfbe6
+; GFX1010-NEXT:    s_mov_b32 s5, s7
+; GFX1010-NEXT:    s_cbranch_scc0 .LBB0_4
 ; GFX1010-NEXT:  .LBB0_2: ; %.a
 ; GFX1010-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GFX1010-NEXT:    s_and_b32 vcc_lo, exec_lo, s4
-; GFX1010-NEXT:    ; implicit-def: $sgpr5
-; GFX1010-NEXT:    s_cbranch_vccnz .LBB0_1
+; GFX1010-NEXT:    s_and_b32 s6, s4, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX1010-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX1010-NEXT:    ; implicit-def: $sgpr6
+; GFX1010-NEXT:    s_cbranch_scc1 .LBB0_1
 ; GFX1010-NEXT:  ; %bb.3: ; %bb
 ; GFX1010-NEXT:    ; in Loop: Header=BB0_2 Depth=1
-; GFX1010-NEXT:    buffer_load_dword v0, v1, s[4:7], 64 offen glc
+; GFX1010-NEXT:    v_mov_b32_e32 v0, s5
+; GFX1010-NEXT:    buffer_load_dword v0, v0, s[4:7], 64 offen glc
 ; GFX1010-NEXT:    s_waitcnt vmcnt(0)
-; GFX1010-NEXT:    v_cmp_eq_u32_e64 s5, 0, v0
+; GFX1010-NEXT:    v_readfirstlane_b32 s6, v0
+; GFX1010-NEXT:    s_cmp_eq_u32 s6, 0
+; GFX1010-NEXT:    s_cselect_b32 s6, -1, 0
 ; GFX1010-NEXT:    s_branch .LBB0_1
 ; GFX1010-NEXT:  .LBB0_4: ; %.exit
+; GFX1010-NEXT:    v_mov_b32_e32 v0, s6
 ; GFX1010-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1100-LABEL: combine_add_zext_xor:
 ; GFX1100:       ; %bb.0: ; %.entry
 ; GFX1100-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX1100-NEXT:    s_cmp_lg_u32 s0, 0
-; GFX1100-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1100-NEXT:    s_mov_b32 s1, 0
 ; GFX1100-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1100-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; GFX1100-NEXT:    v_cmp_ne_u32_e64 s0, 1, v0
 ; GFX1100-NEXT:    s_branch .LBB0_2
+; GFX1100-NEXT:    .p2align 6
 ; GFX1100-NEXT:  .LBB0_1: ; %bb9
 ; GFX1100-NEXT:    ; in Loop: Header=BB0_2 Depth=1
-; GFX1100-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
-; GFX1100-NEXT:    s_xor_b32 s1, s1, -1
-; GFX1100-NEXT:    v_cmp_lt_i32_e32 vcc_lo, 0xfffffbe6, v1
-; GFX1100-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s1
-; GFX1100-NEXT:    v_add_nc_u32_e32 v2, v1, v0
-; GFX1100-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX1100-NEXT:    v_mov_b32_e32 v1, v2
-; GFX1100-NEXT:    s_cbranch_vccz .LBB0_4
+; GFX1100-NEXT:    s_xor_b32 s2, s2, -1
+; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1100-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1100-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1100-NEXT:    s_add_i32 s3, s1, s2
+; GFX1100-NEXT:    s_cmpk_gt_i32 s1, 0xfbe6
+; GFX1100-NEXT:    s_mov_b32 s1, s3
+; GFX1100-NEXT:    s_cbranch_scc0 .LBB0_4
 ; GFX1100-NEXT:  .LBB0_2: ; %.a
 ; GFX1100-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GFX1100-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX1100-NEXT:    s_and_b32 vcc_lo, exec_lo, s0
-; GFX1100-NEXT:    ; implicit-def: $sgpr1
-; GFX1100-NEXT:    s_cbranch_vccnz .LBB0_1
+; GFX1100-NEXT:    s_and_b32 s2, s0, exec_lo
+; GFX1100-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1100-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1100-NEXT:    ; implicit-def: $sgpr2
+; GFX1100-NEXT:    s_cbranch_scc1 .LBB0_1
 ; GFX1100-NEXT:  ; %bb.3: ; %bb
 ; GFX1100-NEXT:    ; in Loop: Header=BB0_2 Depth=1
-; GFX1100-NEXT:    buffer_load_b32 v0, v1, s[0:3], 64 offen glc
+; GFX1100-NEXT:    v_mov_b32_e32 v0, s1
+; GFX1100-NEXT:    buffer_load_b32 v0, v0, s[0:3], 64 offen glc
 ; GFX1100-NEXT:    s_waitcnt vmcnt(0)
-; GFX1100-NEXT:    v_cmp_eq_u32_e64 s1, 0, v0
+; GFX1100-NEXT:    v_readfirstlane_b32 s2, v0
+; GFX1100-NEXT:    s_cmp_eq_u32 s2, 0
+; GFX1100-NEXT:    s_cselect_b32 s2, -1, 0
 ; GFX1100-NEXT:    s_branch .LBB0_1
 ; GFX1100-NEXT:  .LBB0_4: ; %.exit
+; GFX1100-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX1100-NEXT:    s_setpc_b64 s[30:31]
 .entry:
   br label %.a
@@ -102,66 +111,75 @@ define i32 @combine_sub_zext_xor(i32 inreg %cond) {
 ; GFX1010:       ; %bb.0: ; %.entry
 ; GFX1010-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX1010-NEXT:    s_cmp_lg_u32 s16, 0
-; GFX1010-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1010-NEXT:    s_mov_b32 s5, 0
 ; GFX1010-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX1010-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4
-; GFX1010-NEXT:    v_cmp_ne_u32_e64 s4, 1, v0
 ; GFX1010-NEXT:    s_branch .LBB1_2
 ; GFX1010-NEXT:  .LBB1_1: ; %bb9
 ; GFX1010-NEXT:    ; in Loop: Header=BB1_2 Depth=1
-; GFX1010-NEXT:    s_xor_b32 s5, s5, -1
-; GFX1010-NEXT:    v_cmp_lt_i32_e32 vcc_lo, 0xfffffbe6, v1
-; GFX1010-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s5
-; GFX1010-NEXT:    v_sub_nc_u32_e32 v2, v1, v0
-; GFX1010-NEXT:    v_mov_b32_e32 v1, v2
-; GFX1010-NEXT:    s_cbranch_vccz .LBB1_4
+; GFX1010-NEXT:    s_xor_b32 s6, s6, -1
+; GFX1010-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX1010-NEXT:    s_sub_i32 s7, s5, s6
+; GFX1010-NEXT:    s_cmpk_gt_i32 s5, 0xfbe6
+; GFX1010-NEXT:    s_mov_b32 s5, s7
+; GFX1010-NEXT:    s_cbranch_scc0 .LBB1_4
 ; GFX1010-NEXT:  .LBB1_2: ; %.a
 ; GFX1010-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GFX1010-NEXT:    s_and_b32 vcc_lo, exec_lo, s4
-; GFX1010-NEXT:    ; implicit-def: $sgpr5
-; GFX1010-NEXT:    s_cbranch_vccnz .LBB1_1
+; GFX1010-NEXT:    s_and_b32 s6, s4, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX1010-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX1010-NEXT:    ; implicit-def: $sgpr6
+; GFX1010-NEXT:    s_cbranch_scc1 .LBB1_1
 ; GFX1010-NEXT:  ; %bb.3: ; %bb
 ; GFX1010-NEXT:    ; in Loop: Header=BB1_2 Depth=1
-; GFX1010-NEXT:    buffer_load_dword v0, v1, s[4:7], 64 offen glc
+; GFX1010-NEXT:    v_mov_b32_e32 v0, s5
+; GFX1010-NEXT:    buffer_load_dword v0, v0, s[4:7], 64 offen glc
 ; GFX1010-NEXT:    s_waitcnt vmcnt(0)
-; GFX1010-NEXT:    v_cmp_eq_u32_e64 s5, 0, v0
+; GFX1010-NEXT:    v_readfirstlane_b32 s6, v0
+; GFX1010-NEXT:    s_cmp_eq_u32 s6, 0
+; GFX1010-NEXT:    s_cselect_b32 s6, -1, 0
 ; GFX1010-NEXT:    s_branch .LBB1_1
 ; GFX1010-NEXT:  .LBB1_4: ; %.exit
+; GFX1010-NEXT:    v_mov_b32_e32 v0, s6
 ; GFX1010-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1100-LABEL: combine_sub_zext_xor:
 ; GFX1100:       ; %bb.0: ; %.entry
 ; GFX1100-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX1100-NEXT:    s_cmp_lg_u32 s0, 0
-; GFX1100-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1100-NEXT:    s_mov_b32 s1, 0
 ; GFX1100-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1100-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; GFX1100-NEXT:    v_cmp_ne_u32_e64 s0, 1, v0
 ; GFX1100-NEXT:    s_branch .LBB1_2
+; GFX1100-NEXT:    .p2align 6
 ; GFX1100-NEXT:  .LBB1_1: ; %bb9
 ; GFX1100-NEXT:    ; in Loop: Header=BB1_2 Depth=1
-; GFX1100-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
-; GFX1100-NEXT:    s_xor_b32 s1, s1, -1
-; GFX1100-NEXT:    v_cmp_lt_i32_e32 vcc_lo, 0xfffffbe6, v1
-; GFX1100-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s1
-; GFX1100-NEXT:    v_sub_nc_u32_e32 v2, v1, v0
-; GFX1100-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX1100-NEXT:    v_mov_b32_e32 v1, v2
-; GFX1100-NEXT:    s_cbranch_vccz .LBB1_4
+; GFX1100-NEXT:    s_xor_b32 s2, s2, -1
+; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1100-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1100-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1100-NEXT:    s_sub_i32 s3, s1, s2
+; GFX1100-NEXT:    s_cmpk_gt_i32 s1, 0xfbe6
+; GFX1100-NEXT:    s_mov_b32 s1, s3
+; GFX1100-NEXT:    s_cbranch_scc0 .LBB1_4
 ; GFX1100-NEXT:  .LBB1_2: ; %.a
 ; GFX1100-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GFX1100-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX1100-NEXT:    s_and_b32 vcc_lo, exec_lo, s0
-; GFX1100-NEXT:    ; implicit-def: $sgpr1
-; GFX1100-NEXT:    s_cbranch_vccnz .LBB1_1
+; GFX1100-NEXT:    s_and_b32 s2, s0, exec_lo
+; GFX1100-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1100-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1100-NEXT:    ; implicit-def: $sgpr2
+; GFX1100-NEXT:    s_cbranch_scc1 .LBB1_1
 ; GFX1100-NEXT:  ; %bb.3: ; %bb
 ; GFX1100-NEXT:    ; in Loop: Header=BB1_2 Depth=1
-; GFX1100-NEXT:    buffer_load_b32 v0, v1, s[0:3], 64 offen glc
+; GFX1100-NEXT:    v_mov_b32_e32 v0, s1
+; GFX1100-NEXT:    buffer_load_b32 v0, v0, s[0:3], 64 offen glc
 ; GFX1100-NEXT:    s_waitcnt vmcnt(0)
-; GFX1100-NEXT:    v_cmp_eq_u32_e64 s1, 0, v0
+; GFX1100-NEXT:    v_readfirstlane_b32 s2, v0
+; GFX1100-NEXT:    s_cmp_eq_u32 s2, 0
+; GFX1100-NEXT:    s_cselect_b32 s2, -1, 0
 ; GFX1100-NEXT:    s_branch .LBB1_1
 ; GFX1100-NEXT:  .LBB1_4: ; %.exit
+; GFX1100-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX1100-NEXT:    s_setpc_b64 s[30:31]
 .entry:
   br label %.a
@@ -195,69 +213,72 @@ define i32 @combine_add_zext_or(i32 inreg %cond) {
 ; GFX1010:       ; %bb.0: ; %.entry
 ; GFX1010-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX1010-NEXT:    s_cmp_lg_u32 s16, 0
-; GFX1010-NEXT:    s_mov_b32 s5, 0
-; GFX1010-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX1010-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4
-; GFX1010-NEXT:    v_cmp_ne_u32_e64 s4, 1, v0
+; GFX1010-NEXT:    s_mov_b32 s4, 0
+; GFX1010-NEXT:    s_cselect_b32 s5, -1, 0
 ; GFX1010-NEXT:    s_branch .LBB2_2
 ; GFX1010-NEXT:  .LBB2_1: ; %bb9
 ; GFX1010-NEXT:    ; in Loop: Header=BB2_2 Depth=1
-; GFX1010-NEXT:    s_cmpk_gt_i32 s5, 0xfbe6
+; GFX1010-NEXT:    s_cmpk_gt_i32 s4, 0xfbe6
 ; GFX1010-NEXT:    s_cselect_b32 s7, -1, 0
-; GFX1010-NEXT:    s_add_i32 s5, s5, 1
+; GFX1010-NEXT:    s_add_i32 s4, s4, 1
 ; GFX1010-NEXT:    s_and_b32 vcc_lo, exec_lo, s7
 ; GFX1010-NEXT:    s_cbranch_vccz .LBB2_4
 ; GFX1010-NEXT:  .LBB2_2: ; %.a
 ; GFX1010-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GFX1010-NEXT:    s_and_b32 vcc_lo, exec_lo, s4
+; GFX1010-NEXT:    s_and_b32 s6, s5, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX1010-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX1010-NEXT:    ; implicit-def: $sgpr6
-; GFX1010-NEXT:    s_cbranch_vccnz .LBB2_1
+; GFX1010-NEXT:    s_cbranch_scc1 .LBB2_1
 ; GFX1010-NEXT:  ; %bb.3: ; %bb
 ; GFX1010-NEXT:    ; in Loop: Header=BB2_2 Depth=1
-; GFX1010-NEXT:    v_mov_b32_e32 v0, s5
+; GFX1010-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX1010-NEXT:    buffer_load_dword v0, v0, s[4:7], 64 offen glc
 ; GFX1010-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1010-NEXT:    v_cmp_eq_u32_e64 s6, 0, v0
 ; GFX1010-NEXT:    s_branch .LBB2_1
 ; GFX1010-NEXT:  .LBB2_4: ; %.exit
 ; GFX1010-NEXT:    s_or_b32 s4, s6, s7
-; GFX1010-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4
+; GFX1010-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1010-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX1010-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1100-LABEL: combine_add_zext_or:
 ; GFX1100:       ; %bb.0: ; %.entry
 ; GFX1100-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX1100-NEXT:    s_cmp_lg_u32 s0, 0
-; GFX1100-NEXT:    s_mov_b32 s1, 0
-; GFX1100-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1100-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; GFX1100-NEXT:    v_cmp_ne_u32_e64 s0, 1, v0
+; GFX1100-NEXT:    s_mov_b32 s0, 0
+; GFX1100-NEXT:    s_cselect_b32 s1, -1, 0
 ; GFX1100-NEXT:    s_branch .LBB2_2
 ; GFX1100-NEXT:  .LBB2_1: ; %bb9
 ; GFX1100-NEXT:    ; in Loop: Header=BB2_2 Depth=1
-; GFX1100-NEXT:    s_cmpk_gt_i32 s1, 0xfbe6
+; GFX1100-NEXT:    s_cmpk_gt_i32 s0, 0xfbe6
 ; GFX1100-NEXT:    s_cselect_b32 s3, -1, 0
-; GFX1100-NEXT:    s_add_i32 s1, s1, 1
+; GFX1100-NEXT:    s_add_i32 s0, s0, 1
 ; GFX1100-NEXT:    s_and_b32 vcc_lo, exec_lo, s3
 ; GFX1100-NEXT:    s_cbranch_vccz .LBB2_4
 ; GFX1100-NEXT:  .LBB2_2: ; %.a
 ; GFX1100-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GFX1100-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX1100-NEXT:    s_and_b32 vcc_lo, exec_lo, s0
+; GFX1100-NEXT:    s_and_b32 s2, s1, exec_lo
+; GFX1100-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1100-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX1100-NEXT:    ; implicit-def: $sgpr2
-; GFX1100-NEXT:    s_cbranch_vccnz .LBB2_1
+; GFX1100-NEXT:    s_cbranch_scc1 .LBB2_1
 ; GFX1100-NEXT:  ; %bb.3: ; %bb
 ; GFX1100-NEXT:    ; in Loop: Header=BB2_2 Depth=1
-; GFX1100-NEXT:    v_mov_b32_e32 v0, s1
+; GFX1100-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX1100-NEXT:    buffer_load_b32 v0, v0, s[0:3], 64 offen glc
 ; GFX1100-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1100-NEXT:    v_cmp_eq_u32_e64 s2, 0, v0
 ; GFX1100-NEXT:    s_branch .LBB2_1
 ; GFX1100-NEXT:  .LBB2_4: ; %.exit
 ; GFX1100-NEXT:    s_or_b32 s0, s2, s3
-; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX1100-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
+; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1100-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX1100-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX1100-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX1100-NEXT:    s_setpc_b64 s[30:31]
 .entry:
   br label %.a
@@ -292,69 +313,72 @@ define i32 @combine_sub_zext_or(i32 inreg %cond) {
 ; GFX1010:       ; %bb.0: ; %.entry
 ; GFX1010-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX1010-NEXT:    s_cmp_lg_u32 s16, 0
-; GFX1010-NEXT:    s_mov_b32 s5, 0
-; GFX1010-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX1010-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4
-; GFX1010-NEXT:    v_cmp_ne_u32_e64 s4, 1, v0
+; GFX1010-NEXT:    s_mov_b32 s4, 0
+; GFX1010-NEXT:    s_cselect_b32 s5, -1, 0
 ; GFX1010-NEXT:    s_branch .LBB3_2
 ; GFX1010-NEXT:  .LBB3_1: ; %bb9
 ; GFX1010-NEXT:    ; in Loop: Header=BB3_2 Depth=1
-; GFX1010-NEXT:    s_cmpk_gt_i32 s5, 0xfbe6
+; GFX1010-NEXT:    s_cmpk_gt_i32 s4, 0xfbe6
 ; GFX1010-NEXT:    s_cselect_b32 s7, -1, 0
-; GFX1010-NEXT:    s_add_i32 s5, s5, -1
+; GFX1010-NEXT:    s_add_i32 s4, s4, -1
 ; GFX1010-NEXT:    s_and_b32 vcc_lo, exec_lo, s7
 ; GFX1010-NEXT:    s_cbranch_vccz .LBB3_4
 ; GFX1010-NEXT:  .LBB3_2: ; %.a
 ; GFX1010-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GFX1010-NEXT:    s_and_b32 vcc_lo, exec_lo, s4
+; GFX1010-NEXT:    s_and_b32 s6, s5, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX1010-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX1010-NEXT:    ; implicit-def: $sgpr6
-; GFX1010-NEXT:    s_cbranch_vccnz .LBB3_1
+; GFX1010-NEXT:    s_cbranch_scc1 .LBB3_1
 ; GFX1010-NEXT:  ; %bb.3: ; %bb
 ; GFX1010-NEXT:    ; in Loop: Header=BB3_2 Depth=1
-; GFX1010-NEXT:    v_mov_b32_e32 v0, s5
+; GFX1010-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX1010-NEXT:    buffer_load_dword v0, v0, s[4:7], 64 offen glc
 ; GFX1010-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1010-NEXT:    v_cmp_eq_u32_e64 s6, 0, v0
 ; GFX1010-NEXT:    s_branch .LBB3_1
 ; GFX1010-NEXT:  .LBB3_4: ; %.exit
 ; GFX1010-NEXT:    s_or_b32 s4, s6, s7
-; GFX1010-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4
+; GFX1010-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1010-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX1010-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1100-LABEL: combine_sub_zext_or:
 ; GFX1100:       ; %bb.0: ; %.entry
 ; GFX1100-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX1100-NEXT:    s_cmp_lg_u32 s0, 0
-; GFX1100-NEXT:    s_mov_b32 s1, 0
-; GFX1100-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1100-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; GFX1100-NEXT:    v_cmp_ne_u32_e64 s0, 1, v0
+; GFX1100-NEXT:    s_mov_b32 s0, 0
+; GFX1100-NEXT:    s_cselect_b32 s1, -1, 0
 ; GFX1100-NEXT:    s_branch .LBB3_2
 ; GFX1100-NEXT:  .LBB3_1: ; %bb9
 ; GFX1100-NEXT:    ; in Loop: Header=BB3_2 Depth=1
-; GFX1100-NEXT:    s_cmpk_gt_i32 s1, 0xfbe6
+; GFX1100-NEXT:    s_cmpk_gt_i32 s0, 0xfbe6
 ; GFX1100-NEXT:    s_cselect_b32 s3, -1, 0
-; GFX1100-NEXT:    s_add_i32 s1, s1, -1
+; GFX1100-NEXT:    s_add_i32 s0, s0, -1
 ; GFX1100-NEXT:    s_and_b32 vcc_lo, exec_lo, s3
 ; GFX1100-NEXT:    s_cbranch_vccz .LBB3_4
 ; GFX1100-NEXT:  .LBB3_2: ; %.a
 ; GFX1100-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GFX1100-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX1100-NEXT:    s_and_b32 vcc_lo, exec_lo, s0
+; GFX1100-NEXT:    s_and_b32 s2, s1, exec_lo
+; GFX1100-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1100-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX1100-NEXT:    ; implicit-def: $sgpr2
-; GFX1100-NEXT:    s_cbranch_vccnz .LBB3_1
+; GFX1100-NEXT:    s_cbranch_scc1 .LBB3_1
 ; GFX1100-NEXT:  ; %bb.3: ; %bb
 ; GFX1100-NEXT:    ; in Loop: Header=BB3_2 Depth=1
-; GFX1100-NEXT:    v_mov_b32_e32 v0, s1
+; GFX1100-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX1100-NEXT:    buffer_load_b32 v0, v0, s[0:3], 64 offen glc
 ; GFX1100-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1100-NEXT:    v_cmp_eq_u32_e64 s2, 0, v0
 ; GFX1100-NEXT:    s_branch .LBB3_1
 ; GFX1100-NEXT:  .LBB3_4: ; %.exit
 ; GFX1100-NEXT:    s_or_b32 s0, s2, s3
-; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX1100-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
+; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1100-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX1100-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX1100-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX1100-NEXT:    s_setpc_b64 s[30:31]
 .entry:
   br label %.a
@@ -389,64 +413,77 @@ define i32 @combine_add_zext_and(i32 inreg %cond) {
 ; GFX1010:       ; %bb.0: ; %.entry
 ; GFX1010-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX1010-NEXT:    s_cmp_lg_u32 s16, 0
-; GFX1010-NEXT:    v_mov_b32_e32 v1, 0
-; GFX1010-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX1010-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4
-; GFX1010-NEXT:    v_cmp_ne_u32_e64 s4, 1, v0
+; GFX1010-NEXT:    s_mov_b32 s4, 0
+; GFX1010-NEXT:    s_cselect_b32 s5, -1, 0
 ; GFX1010-NEXT:    s_branch .LBB4_2
 ; GFX1010-NEXT:  .LBB4_1: ; %bb9
 ; GFX1010-NEXT:    ; in Loop: Header=BB4_2 Depth=1
-; GFX1010-NEXT:    v_cmp_lt_i32_e32 vcc_lo, 0xfffffbe6, v1
-; GFX1010-NEXT:    s_and_b32 s5, s5, vcc_lo
-; GFX1010-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s5
-; GFX1010-NEXT:    v_add_nc_u32_e32 v1, v1, v0
+; GFX1010-NEXT:    s_cmpk_gt_i32 s4, 0xfbe6
+; GFX1010-NEXT:    s_cselect_b32 s7, -1, 0
+; GFX1010-NEXT:    s_and_b32 s6, s6, s7
+; GFX1010-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX1010-NEXT:    s_and_b32 vcc_lo, exec_lo, s7
+; GFX1010-NEXT:    s_add_i32 s4, s4, s6
 ; GFX1010-NEXT:    s_cbranch_vccz .LBB4_4
 ; GFX1010-NEXT:  .LBB4_2: ; %.a
 ; GFX1010-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GFX1010-NEXT:    s_and_b32 vcc_lo, exec_lo, s4
-; GFX1010-NEXT:    ; implicit-def: $sgpr5
-; GFX1010-NEXT:    s_cbranch_vccnz .LBB4_1
+; GFX1010-NEXT:    s_and_b32 s6, s5, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX1010-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX1010-NEXT:    ; implicit-def: $sgpr6
+; GFX1010-NEXT:    s_cbranch_scc1 .LBB4_1
 ; GFX1010-NEXT:  ; %bb.3: ; %bb
 ; GFX1010-NEXT:    ; in Loop: Header=BB4_2 Depth=1
-; GFX1010-NEXT:    buffer_load_dword v0, v1, s[4:7], 64 offen glc
+; GFX1010-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1010-NEXT:    buffer_load_dword v0, v0, s[4:7], 64 offen glc
 ; GFX1010-NEXT:    s_waitcnt vmcnt(0)
-; GFX1010-NEXT:    v_cmp_eq_u32_e64 s5, 0, v0
+; GFX1010-NEXT:    v_readfirstlane_b32 s6, v0
+; GFX1010-NEXT:    s_cmp_eq_u32 s6, 0
+; GFX1010-NEXT:    s_cselect_b32 s6, -1, 0
 ; GFX1010-NEXT:    s_branch .LBB4_1
 ; GFX1010-NEXT:  .LBB4_4: ; %.exit
+; GFX1010-NEXT:    v_mov_b32_e32 v0, s6
 ; GFX1010-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1100-LABEL: combine_add_zext_and:
 ; GFX1100:       ; %bb.0: ; %.entry
 ; GFX1100-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX1100-NEXT:    s_cmp_lg_u32 s0, 0
-; GFX1100-NEXT:    v_mov_b32_e32 v1, 0
-; GFX1100-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1100-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; GFX1100-NEXT:    v_cmp_ne_u32_e64 s0, 1, v0
+; GFX1100-NEXT:    s_mov_b32 s0, 0
+; GFX1100-NEXT:    s_cselect_b32 s1, -1, 0
 ; GFX1100-NEXT:    s_branch .LBB4_2
+; GFX1100-NEXT:    .p2align 6
 ; GFX1100-NEXT:  .LBB4_1: ; %bb9
 ; GFX1100-NEXT:    ; in Loop: Header=BB4_2 Depth=1
-; GFX1100-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1100-NEXT:    v_cmp_lt_i32_e32 vcc_lo, 0xfffffbe6, v1
-; GFX1100-NEXT:    s_and_b32 s1, s1, vcc_lo
-; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1100-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s1
-; GFX1100-NEXT:    v_add_nc_u32_e32 v1, v1, v0
+; GFX1100-NEXT:    s_cmpk_gt_i32 s0, 0xfbe6
+; GFX1100-NEXT:    s_cselect_b32 s3, -1, 0
+; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1100-NEXT:    s_and_b32 s2, s2, s3
+; GFX1100-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1100-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1100-NEXT:    s_and_b32 vcc_lo, exec_lo, s3
+; GFX1100-NEXT:    s_add_i32 s0, s0, s2
 ; GFX1100-NEXT:    s_cbranch_vccz .LBB4_4
 ; GFX1100-NEXT:  .LBB4_2: ; %.a
 ; GFX1100-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GFX1100-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX1100-NEXT:    s_and_b32 vcc_lo, exec_lo, s0
-; GFX1100-NEXT:    ; implicit-def: $sgpr1
-; GFX1100-NEXT:    s_cbranch_vccnz .LBB4_1
+; GFX1100-NEXT:    s_and_b32 s2, s1, exec_lo
+; GFX1100-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1100-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1100-NEXT:    ; implicit-def: $sgpr2
+; GFX1100-NEXT:    s_cbranch_scc1 .LBB4_1
 ; GFX1100-NEXT:  ; %bb.3: ; %bb
 ; GFX1100-NEXT:    ; in Loop: Header=BB4_2 Depth=1
-; GFX1100-NEXT:    buffer_load_b32 v0, v1, s[0:3], 64 offen glc
+; GFX1100-NEXT:    v_mov_b32_e32 v0, s0
+; GFX1100-NEXT:    buffer_load_b32 v0, v0, s[0:3], 64 offen glc
 ; GFX1100-NEXT:    s_waitcnt vmcnt(0)
-; GFX1100-NEXT:    v_cmp_eq_u32_e64 s1, 0, v0
+; GFX1100-NEXT:    v_readfirstlane_b32 s2, v0
+; GFX1100-NEXT:    s_cmp_eq_u32 s2, 0
+; GFX1100-NEXT:    s_cselect_b32 s2, -1, 0
 ; GFX1100-NEXT:    s_branch .LBB4_1
 ; GFX1100-NEXT:  .LBB4_4: ; %.exit
+; GFX1100-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX1100-NEXT:    s_setpc_b64 s[30:31]
 .entry:
   br label %.a
@@ -481,64 +518,77 @@ define i32 @combine_sub_zext_and(i32 inreg %cond) {
 ; GFX1010:       ; %bb.0: ; %.entry
 ; GFX1010-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX1010-NEXT:    s_cmp_lg_u32 s16, 0
-; GFX1010-NEXT:    v_mov_b32_e32 v1, 0
-; GFX1010-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX1010-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4
-; GFX1010-NEXT:    v_cmp_ne_u32_e64 s4, 1, v0
+; GFX1010-NEXT:    s_mov_b32 s4, 0
+; GFX1010-NEXT:    s_cselect_b32 s5, -1, 0
 ; GFX1010-NEXT:    s_branch .LBB5_2
 ; GFX1010-NEXT:  .LBB5_1: ; %bb9
 ; GFX1010-NEXT:    ; in Loop: Header=BB5_2 Depth=1
-; GFX1010-NEXT:    v_cmp_lt_i32_e32 vcc_lo, 0xfffffbe6, v1
-; GFX1010-NEXT:    s_and_b32 s5, s5, vcc_lo
-; GFX1010-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s5
-; GFX1010-NEXT:    v_sub_nc_u32_e32 v1, v1, v0
+; GFX1010-NEXT:    s_cmpk_gt_i32 s4, 0xfbe6
+; GFX1010-NEXT:    s_cselect_b32 s7, -1, 0
+; GFX1010-NEXT:    s_and_b32 s6, s6, s7
+; GFX1010-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX1010-NEXT:    s_and_b32 vcc_lo, exec_lo, s7
+; GFX1010-NEXT:    s_sub_i32 s4, s4, s6
 ; GFX1010-NEXT:    s_cbranch_vccz .LBB5_4
 ; GFX1010-NEXT:  .LBB5_2: ; %.a
 ; GFX1010-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GFX1010-NEXT:    s_and_b32 vcc_lo, exec_lo, s4
-; GFX1010-NEXT:    ; implicit-def: $sgpr5
-; GFX1010-NEXT:    s_cbranch_vccnz .LBB5_1
+; GFX1010-NEXT:    s_and_b32 s6, s5, exec_lo
+; GFX1010-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX1010-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX1010-NEXT:    ; implicit-def: $sgpr6
+; GFX1010-NEXT:    s_cbranch_scc1 .LBB5_1
 ; GFX1010-NEXT:  ; %bb.3: ; %bb
 ; GFX1010-NEXT:    ; in Loop: Header=BB5_2 Depth=1
-; GFX1010-NEXT:    buffer_load_dword v0, v1, s[4:7], 64 offen glc
+; GFX1010-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1010-NEXT:    buffer_load_dword v0, v0, s[4:7], 64 offen glc
 ; GFX1010-NEXT:    s_waitcnt vmcnt(0)
-; GFX1010-NEXT:    v_cmp_eq_u32_e64 s5, 0, v0
+; GFX1010-NEXT:    v_readfirstlane_b32 s6, v0
+; GFX1010-NEXT:    s_cmp_eq_u32 s6, 0
+; GFX1010-NEXT:    s_cselect_b32 s6, -1, 0
 ; GFX1010-NEXT:    s_branch .LBB5_1
 ; GFX1010-NEXT:  .LBB5_4: ; %.exit
+; GFX1010-NEXT:    v_mov_b32_e32 v0, s6
 ; GFX1010-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1100-LABEL: combine_sub_zext_and:
 ; GFX1100:       ; %bb.0: ; %.entry
 ; GFX1100-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX1100-NEXT:    s_cmp_lg_u32 s0, 0
-; GFX1100-NEXT:    v_mov_b32_e32 v1, 0
-; GFX1100-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1100-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; GFX1100-NEXT:    v_cmp_ne_u32_e64 s0, 1, v0
+; GFX1100-NEXT:    s_mov_b32 s0, 0
+; GFX1100-NEXT:    s_cselect_b32 s1, -1, 0
 ; GFX1100-NEXT:    s_branch .LBB5_2
+; GFX1100-NEXT:    .p2align 6
 ; GFX1100-NEXT:  .LBB5_1: ; %bb9
 ; GFX1100-NEXT:    ; in Loop: Header=BB5_2 Depth=1
-; GFX1100-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1100-NEXT:    v_cmp_lt_i32_e32 vcc_lo, 0xfffffbe6, v1
-; GFX1100-NEXT:    s_and_b32 s1, s1, vcc_lo
-; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1100-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s1
-; GFX1100-NEXT:    v_sub_nc_u32_e32 v1, v1, v0
+; GFX1100-NEXT:    s_cmpk_gt_i32 s0, 0xfbe6
+; GFX1100-NEXT:    s_cselect_b32 s3, -1, 0
+; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1100-NEXT:    s_and_b32 s2, s2, s3
+; GFX1100-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1100-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1100-NEXT:    s_and_b32 vcc_lo, exec_lo, s3
+; GFX1100-NEXT:    s_sub_i32 s0, s0, s2
 ; GFX1100-NEXT:    s_cbranch_vccz .LBB5_4
 ; GFX1100-NEXT:  .LBB5_2: ; %.a
 ; GFX1100-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GFX1100-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX1100-NEXT:    s_and_b32 vcc_lo, exec_lo, s0
-; GFX1100-NEXT:    ; implicit-def: $sgpr1
-; GFX1100-NEXT:    s_cbranch_vccnz .LBB5_1
+; GFX1100-NEXT:    s_and_b32 s2, s1, exec_lo
+; GFX1100-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1100-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1100-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1100-NEXT:    ; implicit-def: $sgpr2
+; GFX1100-NEXT:    s_cbranch_scc1 .LBB5_1
 ; GFX1100-NEXT:  ; %bb.3: ; %bb
 ; GFX1100-NEXT:    ; in Loop: Header=BB5_2 Depth=1
-; GFX1100-NEXT:    buffer_load_b32 v0, v1, s[0:3], 64 offen glc
+; GFX1100-NEXT:    v_mov_b32_e32 v0, s0
+; GFX1100-NEXT:    buffer_load_b32 v0, v0, s[0:3], 64 offen glc
 ; GFX1100-NEXT:    s_waitcnt vmcnt(0)
-; GFX1100-NEXT:    v_cmp_eq_u32_e64 s1, 0, v0
+; GFX1100-NEXT:    v_readfirstlane_b32 s2, v0
+; GFX1100-NEXT:    s_cmp_eq_u32 s2, 0
+; GFX1100-NEXT:    s_cselect_b32 s2, -1, 0
 ; GFX1100-NEXT:    s_branch .LBB5_1
 ; GFX1100-NEXT:  .LBB5_4: ; %.exit
+; GFX1100-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX1100-NEXT:    s_setpc_b64 s[30:31]
 .entry:
   br label %.a

diff  --git a/llvm/test/CodeGen/AMDGPU/combine_andor_with_cmps.ll b/llvm/test/CodeGen/AMDGPU/combine_andor_with_cmps.ll
index 0b04f73c8f960..1d5c41b110ba6 100644
--- a/llvm/test/CodeGen/AMDGPU/combine_andor_with_cmps.ll
+++ b/llvm/test/CodeGen/AMDGPU/combine_andor_with_cmps.ll
@@ -475,8 +475,8 @@ define amdgpu_gfx void @test34(i32 inreg %arg1, i32 inreg %arg2) {
 ; GCN-NEXT:    s_min_i32 s0, s4, s5
 ; GCN-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
 ; GCN-NEXT:    s_cmpk_lt_i32 s0, 0x3e9
-; GCN-NEXT:    s_cselect_b32 s0, -1, 0
-; GCN-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    v_mov_b32_e32 v2, s0
 ; GCN-NEXT:    global_store_b8 v[0:1], v2, off dlc
 ; GCN-NEXT:    s_waitcnt_vscnt null, 0x0
 ; GCN-NEXT:    s_setpc_b64 s[30:31]
@@ -494,8 +494,8 @@ define amdgpu_gfx void @test35(i32 inreg %arg1, i32 inreg %arg2) {
 ; GCN-NEXT:    s_max_i32 s0, s4, s5
 ; GCN-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
 ; GCN-NEXT:    s_cmpk_gt_i32 s0, 0x3e8
-; GCN-NEXT:    s_cselect_b32 s0, -1, 0
-; GCN-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    v_mov_b32_e32 v2, s0
 ; GCN-NEXT:    global_store_b8 v[0:1], v2, off dlc
 ; GCN-NEXT:    s_waitcnt_vscnt null, 0x0
 ; GCN-NEXT:    s_setpc_b64 s[30:31]
@@ -513,8 +513,8 @@ define amdgpu_gfx void @test36(i32 inreg %arg1, i32 inreg %arg2, i32 inreg %arg3
 ; GCN-NEXT:    s_min_u32 s0, s4, s5
 ; GCN-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
 ; GCN-NEXT:    s_cmp_lt_u32 s0, s6
-; GCN-NEXT:    s_cselect_b32 s0, -1, 0
-; GCN-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    v_mov_b32_e32 v2, s0
 ; GCN-NEXT:    global_store_b8 v[0:1], v2, off dlc
 ; GCN-NEXT:    s_waitcnt_vscnt null, 0x0
 ; GCN-NEXT:    s_setpc_b64 s[30:31]
@@ -532,8 +532,8 @@ define amdgpu_gfx void @test37(i32 inreg %arg1, i32 inreg %arg2, i32 inreg %arg3
 ; GCN-NEXT:    s_max_i32 s0, s4, s5
 ; GCN-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
 ; GCN-NEXT:    s_cmp_ge_i32 s0, s6
-; GCN-NEXT:    s_cselect_b32 s0, -1, 0
-; GCN-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    v_mov_b32_e32 v2, s0
 ; GCN-NEXT:    global_store_b8 v[0:1], v2, off dlc
 ; GCN-NEXT:    s_waitcnt_vscnt null, 0x0
 ; GCN-NEXT:    s_setpc_b64 s[30:31]
@@ -551,8 +551,8 @@ define amdgpu_gfx void @test38(i32 inreg %arg1, i32 inreg %arg2) {
 ; GCN-NEXT:    s_max_u32 s0, s4, s5
 ; GCN-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
 ; GCN-NEXT:    s_cmpk_lt_u32 s0, 0x3e9
-; GCN-NEXT:    s_cselect_b32 s0, -1, 0
-; GCN-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    v_mov_b32_e32 v2, s0
 ; GCN-NEXT:    global_store_b8 v[0:1], v2, off dlc
 ; GCN-NEXT:    s_waitcnt_vscnt null, 0x0
 ; GCN-NEXT:    s_setpc_b64 s[30:31]
@@ -570,8 +570,8 @@ define amdgpu_gfx void @test39(i32 inreg %arg1, i32 inreg %arg2) {
 ; GCN-NEXT:    s_min_i32 s0, s4, s5
 ; GCN-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
 ; GCN-NEXT:    s_cmpk_gt_i32 s0, 0x3e7
-; GCN-NEXT:    s_cselect_b32 s0, -1, 0
-; GCN-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    v_mov_b32_e32 v2, s0
 ; GCN-NEXT:    global_store_b8 v[0:1], v2, off dlc
 ; GCN-NEXT:    s_waitcnt_vscnt null, 0x0
 ; GCN-NEXT:    s_setpc_b64 s[30:31]
@@ -589,8 +589,8 @@ define amdgpu_gfx void @test40(i32 inreg %arg1, i32 inreg %arg2, i32 inreg %arg3
 ; GCN-NEXT:    s_max_i32 s0, s4, s5
 ; GCN-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
 ; GCN-NEXT:    s_cmp_le_i32 s0, s6
-; GCN-NEXT:    s_cselect_b32 s0, -1, 0
-; GCN-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    v_mov_b32_e32 v2, s0
 ; GCN-NEXT:    global_store_b8 v[0:1], v2, off dlc
 ; GCN-NEXT:    s_waitcnt_vscnt null, 0x0
 ; GCN-NEXT:    s_setpc_b64 s[30:31]
@@ -608,8 +608,8 @@ define amdgpu_gfx void @test41(i32 inreg %arg1, i32 inreg %arg2, i32 inreg %arg3
 ; GCN-NEXT:    s_min_u32 s0, s4, s5
 ; GCN-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
 ; GCN-NEXT:    s_cmp_ge_u32 s0, s6
-; GCN-NEXT:    s_cselect_b32 s0, -1, 0
-; GCN-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    v_mov_b32_e32 v2, s0
 ; GCN-NEXT:    global_store_b8 v[0:1], v2, off dlc
 ; GCN-NEXT:    s_waitcnt_vscnt null, 0x0
 ; GCN-NEXT:    s_setpc_b64 s[30:31]

diff  --git a/llvm/test/CodeGen/AMDGPU/commute-compares-scalar-float.ll b/llvm/test/CodeGen/AMDGPU/commute-compares-scalar-float.ll
index 4fc31c36aae3d..8187de3f21544 100644
--- a/llvm/test/CodeGen/AMDGPU/commute-compares-scalar-float.ll
+++ b/llvm/test/CodeGen/AMDGPU/commute-compares-scalar-float.ll
@@ -6,10 +6,9 @@ define amdgpu_vs void @fcmp_f32_olt_to_ogt(ptr addrspace(1) inreg %out, float in
 ; SDAG-LABEL: fcmp_f32_olt_to_ogt:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_gt_f32 s2, 2.0
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;
@@ -33,10 +32,9 @@ define amdgpu_vs void @fcmp_f32_ogt_to_olt(ptr addrspace(1) inreg %out, float in
 ; SDAG-LABEL: fcmp_f32_ogt_to_olt:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_lt_f32 s2, 2.0
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;
@@ -60,10 +58,9 @@ define amdgpu_vs void @fcmp_f32_ole_to_oge(ptr addrspace(1) inreg %out, float in
 ; SDAG-LABEL: fcmp_f32_ole_to_oge:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_ge_f32 s2, 2.0
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;
@@ -87,10 +84,9 @@ define amdgpu_vs void @fcmp_f32_oge_to_ole(ptr addrspace(1) inreg %out, float in
 ; SDAG-LABEL: fcmp_f32_oge_to_ole:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_le_f32 s2, 2.0
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;
@@ -114,10 +110,9 @@ define amdgpu_vs void @fcmp_f32_ult_to_ugt(ptr addrspace(1) inreg %out, float in
 ; SDAG-LABEL: fcmp_f32_ult_to_ugt:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_nle_f32 s2, 2.0
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;
@@ -141,10 +136,9 @@ define amdgpu_vs void @fcmp_f32_ugt_to_ult(ptr addrspace(1) inreg %out, float in
 ; SDAG-LABEL: fcmp_f32_ugt_to_ult:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_nge_f32 s2, 2.0
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;
@@ -168,10 +162,9 @@ define amdgpu_vs void @fcmp_f32_ule_to_uge(ptr addrspace(1) inreg %out, float in
 ; SDAG-LABEL: fcmp_f32_ule_to_uge:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_nlt_f32 s2, 2.0
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;
@@ -195,10 +188,9 @@ define amdgpu_vs void @fcmp_f32_uge_to_ule(ptr addrspace(1) inreg %out, float in
 ; SDAG-LABEL: fcmp_f32_uge_to_ule:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_ngt_f32 s2, 2.0
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;
@@ -222,10 +214,9 @@ define amdgpu_vs void @fcmp_f16_olt_to_ogt(ptr addrspace(1) inreg %out, half inr
 ; SDAG-LABEL: fcmp_f16_olt_to_ogt:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_gt_f16 s2, 0x4000
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;
@@ -249,10 +240,9 @@ define amdgpu_vs void @fcmp_f16_ogt_to_olt(ptr addrspace(1) inreg %out, half inr
 ; SDAG-LABEL: fcmp_f16_ogt_to_olt:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_lt_f16 s2, 0x4000
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;
@@ -276,10 +266,9 @@ define amdgpu_vs void @fcmp_f16_ole_to_oge(ptr addrspace(1) inreg %out, half inr
 ; SDAG-LABEL: fcmp_f16_ole_to_oge:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_ge_f16 s2, 0x4000
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;
@@ -303,10 +292,9 @@ define amdgpu_vs void @fcmp_f16_oge_to_ole(ptr addrspace(1) inreg %out, half inr
 ; SDAG-LABEL: fcmp_f16_oge_to_ole:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_le_f16 s2, 0x4000
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;
@@ -330,10 +318,9 @@ define amdgpu_vs void @fcmp_f16_ult_to_ugt(ptr addrspace(1) inreg %out, half inr
 ; SDAG-LABEL: fcmp_f16_ult_to_ugt:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_nle_f16 s2, 0x4000
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;
@@ -357,10 +344,9 @@ define amdgpu_vs void @fcmp_f16_ugt_to_ult(ptr addrspace(1) inreg %out, half inr
 ; SDAG-LABEL: fcmp_f16_ugt_to_ult:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_nge_f16 s2, 0x4000
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;
@@ -384,10 +370,9 @@ define amdgpu_vs void @fcmp_ule_to_uge(ptr addrspace(1) inreg %out, half inreg %
 ; SDAG-LABEL: fcmp_ule_to_uge:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_nlt_f16 s2, 0x4000
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;
@@ -411,10 +396,9 @@ define amdgpu_vs void @fcmp_uge_to_ule(ptr addrspace(1) inreg %out, half inreg %
 ; SDAG-LABEL: fcmp_uge_to_ule:
 ; SDAG:       ; %bb.0: ; %entry
 ; SDAG-NEXT:    s_cmp_ngt_f16 s2, 0x4000
-; SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-NEXT:    s_endpgm
 ;

diff  --git a/llvm/test/CodeGen/AMDGPU/ctpop.ll b/llvm/test/CodeGen/AMDGPU/ctpop.ll
index e92ea34f67635..06ab198746053 100644
--- a/llvm/test/CodeGen/AMDGPU/ctpop.ll
+++ b/llvm/test/CodeGen/AMDGPU/ctpop.ll
@@ -1642,27 +1642,30 @@ define amdgpu_kernel void @ctpop_i32_in_br(ptr addrspace(1) %out, ptr addrspace(
 ; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s6, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB14_4
+; SI-NEXT:    s_cbranch_scc0 .LBB14_2
 ; SI-NEXT:  ; %bb.1: ; %else
 ; SI-NEXT:    s_load_dword s6, s[2:3], 0x1
 ; SI-NEXT:    s_mov_b64 s[2:3], 0
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; SI-NEXT:    s_waitcnt lgkmcnt(0)
-; SI-NEXT:    s_mov_b64 vcc, vcc
-; SI-NEXT:    s_cbranch_vccnz .LBB14_3
-; SI-NEXT:  .LBB14_2: ; %if
+; SI-NEXT:    s_branch .LBB14_3
+; SI-NEXT:  .LBB14_2:
+; SI-NEXT:    s_mov_b64 s[2:3], -1
+; SI-NEXT:    ; implicit-def: $sgpr6
+; SI-NEXT:  .LBB14_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB14_5
+; SI-NEXT:  ; %bb.4: ; %if
 ; SI-NEXT:    s_load_dword s2, s[4:5], 0xd
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_bcnt1_i32_b32 s6, s2
-; SI-NEXT:  .LBB14_3: ; %endif
+; SI-NEXT:  .LBB14_5: ; %endif
 ; SI-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-NEXT:    s_mov_b32 s2, -1
+; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v0, s6
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
-; SI-NEXT:  .LBB14_4:
-; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:    s_branch .LBB14_2
 ;
 ; VI-LABEL: ctpop_i32_in_br:
 ; VI:       ; %bb.0: ; %entry
@@ -1670,24 +1673,30 @@ define amdgpu_kernel void @ctpop_i32_in_br(ptr addrspace(1) %out, ptr addrspace(
 ; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s6, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB14_4
+; VI-NEXT:    s_cbranch_scc0 .LBB14_2
 ; VI-NEXT:  ; %bb.1: ; %else
 ; VI-NEXT:    s_load_dword s6, s[2:3], 0x4
-; VI-NEXT:    s_cbranch_execnz .LBB14_3
-; VI-NEXT:  .LBB14_2: ; %if
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB14_3
+; VI-NEXT:  .LBB14_2:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
+; VI-NEXT:    ; implicit-def: $sgpr6
+; VI-NEXT:  .LBB14_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB14_5
+; VI-NEXT:  ; %bb.4: ; %if
 ; VI-NEXT:    s_load_dword s2, s[4:5], 0x34
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    s_bcnt1_i32_b32 s6, s2
-; VI-NEXT:  .LBB14_3: ; %endif
+; VI-NEXT:  .LBB14_5: ; %endif
 ; VI-NEXT:    s_mov_b32 s3, 0xf000
 ; VI-NEXT:    s_mov_b32 s2, -1
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_mov_b32_e32 v0, s6
 ; VI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; VI-NEXT:    s_endpgm
-; VI-NEXT:  .LBB14_4:
-; VI-NEXT:    ; implicit-def: $sgpr6
-; VI-NEXT:    s_branch .LBB14_2
 ;
 ; EG-LABEL: ctpop_i32_in_br:
 ; EG:       ; %bb.0: ; %entry

diff  --git a/llvm/test/CodeGen/AMDGPU/ctpop16.ll b/llvm/test/CodeGen/AMDGPU/ctpop16.ll
index 32cee7d28e7ef..cb37ffff3ea46 100644
--- a/llvm/test/CodeGen/AMDGPU/ctpop16.ll
+++ b/llvm/test/CodeGen/AMDGPU/ctpop16.ll
@@ -2170,28 +2170,34 @@ define amdgpu_kernel void @ctpop_i16_in_br(ptr addrspace(1) %out, ptr addrspace(
 ; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_lshr_b32 s4, s6, 16
-; SI-NEXT:    s_cbranch_scc0 .LBB14_4
+; SI-NEXT:    s_cbranch_scc0 .LBB14_2
 ; SI-NEXT:  ; %bb.1: ; %else
 ; SI-NEXT:    s_mov_b32 s11, 0xf000
 ; SI-NEXT:    s_mov_b32 s10, -1
 ; SI-NEXT:    s_mov_b32 s8, s2
 ; SI-NEXT:    s_mov_b32 s9, s3
 ; SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 offset:2
-; SI-NEXT:    s_cbranch_execnz .LBB14_3
-; SI-NEXT:  .LBB14_2: ; %if
+; SI-NEXT:    s_mov_b64 s[2:3], 0
+; SI-NEXT:    s_branch .LBB14_3
+; SI-NEXT:  .LBB14_2:
+; SI-NEXT:    s_mov_b64 s[2:3], -1
+; SI-NEXT:    ; implicit-def: $vgpr0
+; SI-NEXT:  .LBB14_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB14_5
+; SI-NEXT:  ; %bb.4: ; %if
 ; SI-NEXT:    s_and_b32 s2, s6, 0xffff
 ; SI-NEXT:    s_bcnt1_i32_b32 s2, s2
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v0, s2
-; SI-NEXT:  .LBB14_3: ; %endif
+; SI-NEXT:  .LBB14_5: ; %endif
 ; SI-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
-; SI-NEXT:  .LBB14_4:
-; SI-NEXT:    ; implicit-def: $vgpr0
-; SI-NEXT:    s_branch .LBB14_2
 ;
 ; VI-LABEL: ctpop_i16_in_br:
 ; VI:       ; %bb.0: ; %entry
@@ -2199,28 +2205,34 @@ define amdgpu_kernel void @ctpop_i16_in_br(ptr addrspace(1) %out, ptr addrspace(
 ; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    s_lshr_b32 s4, s6, 16
-; VI-NEXT:    s_cbranch_scc0 .LBB14_4
+; VI-NEXT:    s_cbranch_scc0 .LBB14_2
 ; VI-NEXT:  ; %bb.1: ; %else
 ; VI-NEXT:    s_mov_b32 s11, 0xf000
 ; VI-NEXT:    s_mov_b32 s10, -1
 ; VI-NEXT:    s_mov_b32 s8, s2
 ; VI-NEXT:    s_mov_b32 s9, s3
 ; VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 offset:2
-; VI-NEXT:    s_cbranch_execnz .LBB14_3
-; VI-NEXT:  .LBB14_2: ; %if
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB14_3
+; VI-NEXT:  .LBB14_2:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
+; VI-NEXT:    ; implicit-def: $vgpr0
+; VI-NEXT:  .LBB14_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB14_5
+; VI-NEXT:  ; %bb.4: ; %if
 ; VI-NEXT:    s_and_b32 s2, s6, 0xffff
 ; VI-NEXT:    s_bcnt1_i32_b32 s2, s2
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_mov_b32_e32 v0, s2
-; VI-NEXT:  .LBB14_3: ; %endif
+; VI-NEXT:  .LBB14_5: ; %endif
 ; VI-NEXT:    s_mov_b32 s3, 0xf000
 ; VI-NEXT:    s_mov_b32 s2, -1
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0
 ; VI-NEXT:    s_endpgm
-; VI-NEXT:  .LBB14_4:
-; VI-NEXT:    ; implicit-def: $vgpr0
-; VI-NEXT:    s_branch .LBB14_2
 ;
 ; EG-LABEL: ctpop_i16_in_br:
 ; EG:       ; %bb.0: ; %entry

diff  --git a/llvm/test/CodeGen/AMDGPU/ctpop64.ll b/llvm/test/CodeGen/AMDGPU/ctpop64.ll
index 2320432d67a8b..9a3dd2c796ad9 100644
--- a/llvm/test/CodeGen/AMDGPU/ctpop64.ll
+++ b/llvm/test/CodeGen/AMDGPU/ctpop64.ll
@@ -459,27 +459,31 @@ define amdgpu_kernel void @ctpop_i64_in_br(ptr addrspace(1) %out, ptr addrspace(
 ; SI-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0xd
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s8, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB7_4
+; SI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; SI-NEXT:  ; %bb.1: ; %else
 ; SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x2
 ; SI-NEXT:    s_mov_b64 s[2:3], 0
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; SI-NEXT:    s_branch .LBB7_3
+; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[2:3], -1
+; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %if
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
-; SI-NEXT:    s_mov_b64 vcc, vcc
-; SI-NEXT:    s_cbranch_vccnz .LBB7_3
-; SI-NEXT:  .LBB7_2: ; %if
 ; SI-NEXT:    s_bcnt1_i32_b64 s4, s[6:7]
 ; SI-NEXT:    s_mov_b32 s5, 0
-; SI-NEXT:  .LBB7_3: ; %endif
+; SI-NEXT:  .LBB7_5: ; %endif
+; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
-; SI-NEXT:  .LBB7_4:
-; SI-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; SI-NEXT:    s_branch .LBB7_2
 ;
 ; VI-LABEL: ctpop_i64_in_br:
 ; VI:       ; %bb.0: ; %entry
@@ -488,15 +492,24 @@ define amdgpu_kernel void @ctpop_i64_in_br(ptr addrspace(1) %out, ptr addrspace(
 ; VI-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s8, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB7_4
+; VI-NEXT:    s_cbranch_scc0 .LBB7_2
 ; VI-NEXT:  ; %bb.1: ; %else
 ; VI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x8
-; VI-NEXT:    s_cbranch_execnz .LBB7_3
-; VI-NEXT:  .LBB7_2: ; %if
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB7_3
+; VI-NEXT:  .LBB7_2:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
+; VI-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; VI-NEXT:  .LBB7_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB7_5
+; VI-NEXT:  ; %bb.4: ; %if
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    s_bcnt1_i32_b64 s4, s[6:7]
 ; VI-NEXT:    s_mov_b32 s5, 0
-; VI-NEXT:  .LBB7_3: ; %endif
+; VI-NEXT:  .LBB7_5: ; %endif
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    s_mov_b32 s3, 0xf000
@@ -504,9 +517,6 @@ define amdgpu_kernel void @ctpop_i64_in_br(ptr addrspace(1) %out, ptr addrspace(
 ; VI-NEXT:    v_mov_b32_e32 v1, s5
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
 ; VI-NEXT:    s_endpgm
-; VI-NEXT:  .LBB7_4:
-; VI-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; VI-NEXT:    s_branch .LBB7_2
 ;
 ; GFX12-LABEL: ctpop_i64_in_br:
 ; GFX12:       ; %bb.0: ; %entry

diff  --git a/llvm/test/CodeGen/AMDGPU/dagcombine-fma-crash.ll b/llvm/test/CodeGen/AMDGPU/dagcombine-fma-crash.ll
index 142494a803755..1ec2fb1ac3f67 100644
--- a/llvm/test/CodeGen/AMDGPU/dagcombine-fma-crash.ll
+++ b/llvm/test/CodeGen/AMDGPU/dagcombine-fma-crash.ll
@@ -31,13 +31,13 @@ define void @main(float %arg) {
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT:   [[PHI:%[0-9]+]]:vgpr_32 = PHI [[DEF]], %bb.0, [[V_FMAC_F32_e64_1]], %bb.1
   ; CHECK-NEXT:   [[PHI1:%[0-9]+]]:vgpr_32 = PHI [[DEF]], %bb.0, [[V_ADD_F32_e64_]], %bb.1
-  ; CHECK-NEXT:   [[PHI2:%[0-9]+]]:sreg_32_xm0_xexec = PHI [[S_MOV_B32_1]], %bb.0, [[S_MOV_B32_2]], %bb.1
-  ; CHECK-NEXT:   [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, [[PHI2]], implicit $exec
+  ; CHECK-NEXT:   [[PHI2:%[0-9]+]]:sreg_32 = PHI [[S_MOV_B32_1]], %bb.0, [[S_MOV_B32_2]], %bb.1
+  ; CHECK-NEXT:   $scc = COPY [[PHI2]]
+  ; CHECK-NEXT:   [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 1, 0, implicit $scc
   ; CHECK-NEXT:   [[S_MOV_B32_3:%[0-9]+]]:sreg_32 = S_MOV_B32 1
-  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:sreg_32 = COPY [[V_CNDMASK_B32_e64_]]
-  ; CHECK-NEXT:   S_CMP_LG_U32 killed [[COPY1]], killed [[S_MOV_B32_3]], implicit-def $scc
-  ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
-  ; CHECK-NEXT:   [[S_AND_B32_1:%[0-9]+]]:sreg_32 = S_AND_B32 $exec_lo, killed [[COPY2]], implicit-def dead $scc
+  ; CHECK-NEXT:   S_CMP_LG_U32 killed [[S_CSELECT_B32_]], killed [[S_MOV_B32_3]], implicit-def $scc
+  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:sreg_32 = COPY $scc
+  ; CHECK-NEXT:   [[S_AND_B32_1:%[0-9]+]]:sreg_32 = S_AND_B32 $exec_lo, killed [[COPY1]], implicit-def dead $scc
   ; CHECK-NEXT:   $vcc_lo = COPY [[S_AND_B32_1]]
   ; CHECK-NEXT:   S_CBRANCH_VCCNZ %bb.4, implicit $vcc
   ; CHECK-NEXT:   S_BRANCH %bb.3

diff  --git a/llvm/test/CodeGen/AMDGPU/dagcombine-lshr-and-cmp.ll b/llvm/test/CodeGen/AMDGPU/dagcombine-lshr-and-cmp.ll
index be53e87b3b187..0dd3a223502c6 100644
--- a/llvm/test/CodeGen/AMDGPU/dagcombine-lshr-and-cmp.ll
+++ b/llvm/test/CodeGen/AMDGPU/dagcombine-lshr-and-cmp.ll
@@ -57,7 +57,7 @@ define amdgpu_kernel void @uniform_opt_lshr_and_cmp(ptr addrspace(1) %out, i32 %
   ; GCN-NEXT:   [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 0
   ; GCN-NEXT:   S_CMP_LG_U32 killed [[S_AND_B32_]], killed [[S_MOV_B32_1]], implicit-def $scc
   ; GCN-NEXT:   [[COPY2:%[0-9]+]]:sreg_64 = COPY $scc
-  ; GCN-NEXT:   [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY [[COPY2]]
+  ; GCN-NEXT:   [[COPY3:%[0-9]+]]:sreg_64 = COPY [[COPY2]]
   ; GCN-NEXT:   [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 -1
   ; GCN-NEXT:   [[S_XOR_B64_:%[0-9]+]]:sreg_64 = S_XOR_B64 [[COPY2]], killed [[S_MOV_B64_]], implicit-def dead $scc
   ; GCN-NEXT:   [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 $exec, killed [[S_XOR_B64_]], implicit-def dead $scc
@@ -67,32 +67,32 @@ define amdgpu_kernel void @uniform_opt_lshr_and_cmp(ptr addrspace(1) %out, i32 %
   ; GCN-NEXT: {{  $}}
   ; GCN-NEXT: bb.1.out.true:
   ; GCN-NEXT:   [[S_MOV_B64_1:%[0-9]+]]:sreg_64 = S_MOV_B64 -1
-  ; GCN-NEXT:   [[S_XOR_B64_1:%[0-9]+]]:sreg_64_xexec = S_XOR_B64 [[COPY3]], killed [[S_MOV_B64_1]], implicit-def dead $scc
+  ; GCN-NEXT:   [[S_XOR_B64_1:%[0-9]+]]:sreg_64 = S_XOR_B64 [[COPY3]], killed [[S_MOV_B64_1]], implicit-def dead $scc
   ; GCN-NEXT:   [[COPY4:%[0-9]+]]:sreg_32 = COPY [[COPY1]].sub1
   ; GCN-NEXT:   [[COPY5:%[0-9]+]]:sreg_32 = COPY [[COPY1]].sub0
   ; GCN-NEXT:   [[S_MOV_B32_2:%[0-9]+]]:sreg_32 = S_MOV_B32 61440
   ; GCN-NEXT:   [[S_MOV_B32_3:%[0-9]+]]:sreg_32 = S_MOV_B32 -1
   ; GCN-NEXT:   [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE killed [[COPY5]], %subreg.sub0, killed [[COPY4]], %subreg.sub1, killed [[S_MOV_B32_3]], %subreg.sub2, killed [[S_MOV_B32_2]], %subreg.sub3
-  ; GCN-NEXT:   [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, -1, killed [[S_XOR_B64_1]], implicit $exec
+  ; GCN-NEXT:   $scc = COPY [[S_XOR_B64_1]]
+  ; GCN-NEXT:   [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 -1, 0, implicit $scc
   ; GCN-NEXT:   [[S_MOV_B32_4:%[0-9]+]]:sreg_32 = S_MOV_B32 1
-  ; GCN-NEXT:   [[COPY6:%[0-9]+]]:sreg_32 = COPY [[V_CNDMASK_B32_e64_]]
-  ; GCN-NEXT:   [[S_AND_B32_1:%[0-9]+]]:sreg_32 = S_AND_B32 killed [[COPY6]], killed [[S_MOV_B32_4]], implicit-def dead $scc
-  ; GCN-NEXT:   [[COPY7:%[0-9]+]]:vgpr_32 = COPY [[S_AND_B32_1]]
-  ; GCN-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[COPY7]], killed [[REG_SEQUENCE]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.out.load, addrspace 1)
+  ; GCN-NEXT:   [[S_AND_B32_1:%[0-9]+]]:sreg_32 = S_AND_B32 killed [[S_CSELECT_B32_]], killed [[S_MOV_B32_4]], implicit-def dead $scc
+  ; GCN-NEXT:   [[COPY6:%[0-9]+]]:vgpr_32 = COPY [[S_AND_B32_1]]
+  ; GCN-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[COPY6]], killed [[REG_SEQUENCE]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.out.load, addrspace 1)
   ; GCN-NEXT:   S_ENDPGM 0
   ; GCN-NEXT: {{  $}}
   ; GCN-NEXT: bb.2.out.else:
-  ; GCN-NEXT:   [[COPY8:%[0-9]+]]:sreg_32 = COPY [[COPY1]].sub1
-  ; GCN-NEXT:   [[COPY9:%[0-9]+]]:sreg_32 = COPY [[COPY1]].sub0
+  ; GCN-NEXT:   [[COPY7:%[0-9]+]]:sreg_32 = COPY [[COPY1]].sub1
+  ; GCN-NEXT:   [[COPY8:%[0-9]+]]:sreg_32 = COPY [[COPY1]].sub0
   ; GCN-NEXT:   [[S_MOV_B32_5:%[0-9]+]]:sreg_32 = S_MOV_B32 61440
   ; GCN-NEXT:   [[S_MOV_B32_6:%[0-9]+]]:sreg_32 = S_MOV_B32 -1
-  ; GCN-NEXT:   [[REG_SEQUENCE1:%[0-9]+]]:sgpr_128 = REG_SEQUENCE killed [[COPY9]], %subreg.sub0, killed [[COPY8]], %subreg.sub1, killed [[S_MOV_B32_6]], %subreg.sub2, killed [[S_MOV_B32_5]], %subreg.sub3
-  ; GCN-NEXT:   [[V_CNDMASK_B32_e64_1:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, -1, [[COPY3]], implicit $exec
+  ; GCN-NEXT:   [[REG_SEQUENCE1:%[0-9]+]]:sgpr_128 = REG_SEQUENCE killed [[COPY8]], %subreg.sub0, killed [[COPY7]], %subreg.sub1, killed [[S_MOV_B32_6]], %subreg.sub2, killed [[S_MOV_B32_5]], %subreg.sub3
+  ; GCN-NEXT:   $scc = COPY [[COPY3]]
+  ; GCN-NEXT:   [[S_CSELECT_B32_1:%[0-9]+]]:sreg_32 = S_CSELECT_B32 -1, 0, implicit $scc
   ; GCN-NEXT:   [[S_MOV_B32_7:%[0-9]+]]:sreg_32 = S_MOV_B32 1
-  ; GCN-NEXT:   [[COPY10:%[0-9]+]]:sreg_32 = COPY [[V_CNDMASK_B32_e64_1]]
-  ; GCN-NEXT:   [[S_AND_B32_2:%[0-9]+]]:sreg_32 = S_AND_B32 killed [[COPY10]], killed [[S_MOV_B32_7]], implicit-def dead $scc
-  ; GCN-NEXT:   [[COPY11:%[0-9]+]]:vgpr_32 = COPY [[S_AND_B32_2]]
-  ; GCN-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[COPY11]], killed [[REG_SEQUENCE1]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.out.load, addrspace 1)
+  ; GCN-NEXT:   [[S_AND_B32_2:%[0-9]+]]:sreg_32 = S_AND_B32 killed [[S_CSELECT_B32_1]], killed [[S_MOV_B32_7]], implicit-def dead $scc
+  ; GCN-NEXT:   [[COPY9:%[0-9]+]]:vgpr_32 = COPY [[S_AND_B32_2]]
+  ; GCN-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[COPY9]], killed [[REG_SEQUENCE1]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.out.load, addrspace 1)
   ; GCN-NEXT:   S_ENDPGM 0
 entry:
   %0 = and i32 %x, 2

diff  --git a/llvm/test/CodeGen/AMDGPU/dagcombine-select.ll b/llvm/test/CodeGen/AMDGPU/dagcombine-select.ll
index 29a8ec57e3951..f5f122f86e0a6 100644
--- a/llvm/test/CodeGen/AMDGPU/dagcombine-select.ll
+++ b/llvm/test/CodeGen/AMDGPU/dagcombine-select.ll
@@ -598,11 +598,17 @@ define amdgpu_kernel void @frem_constant_sel_constants(ptr addrspace(1) %p, i1 %
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x40a00000
 ; GFX9-NEXT:    v_cmp_eq_f32_e64 s[0:1], |v1|, s0
 ; GFX9-NEXT:    v_cndmask_b32_e64 v0, v0, 0, s[0:1]
-; GFX9-NEXT:    s_cbranch_execz .LBB26_3
-; GFX9-NEXT:    s_branch .LBB26_7
+; GFX9-NEXT:    s_mov_b64 s[0:1], 0
+; GFX9-NEXT:    s_branch .LBB26_3
 ; GFX9-NEXT:  .LBB26_2:
+; GFX9-NEXT:    s_mov_b64 s[0:1], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr0
-; GFX9-NEXT:  .LBB26_3: ; %frem.compute
+; GFX9-NEXT:  .LBB26_3: ; %Flow13
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB26_8
+; GFX9-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX9-NEXT:    v_frexp_mant_f32_e64 v0, |v1|
 ; GFX9-NEXT:    v_ldexp_f32 v0, v0, 1
 ; GFX9-NEXT:    v_div_scale_f32 v2, s[0:1], v0, v0, 1.0
@@ -620,11 +626,11 @@ define amdgpu_kernel void @frem_constant_sel_constants(ptr addrspace(1) %p, i1 %
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v1
 ; GFX9-NEXT:    v_mov_b32_e32 v4, 0x45200000
 ; GFX9-NEXT:    v_div_fixup_f32 v3, v3, v0, 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB26_6
-; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB26_7
+; GFX9-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v1, 15, v2
 ; GFX9-NEXT:    v_mov_b32_e32 v5, 0x45200000
-; GFX9-NEXT:  .LBB26_5: ; %frem.loop_body
+; GFX9-NEXT:  .LBB26_6: ; %frem.loop_body
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v5
 ; GFX9-NEXT:    v_mul_f32_e32 v5, v4, v3
@@ -636,8 +642,8 @@ define amdgpu_kernel void @frem_constant_sel_constants(ptr addrspace(1) %p, i1 %
 ; GFX9-NEXT:    v_cndmask_b32_e32 v5, v5, v6, vcc
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v1
 ; GFX9-NEXT:    v_ldexp_f32 v5, v5, 12
-; GFX9-NEXT:    s_cbranch_vccnz .LBB26_5
-; GFX9-NEXT:  .LBB26_6: ; %Flow12
+; GFX9-NEXT:    s_cbranch_vccnz .LBB26_6
+; GFX9-NEXT:  .LBB26_7: ; %Flow12
 ; GFX9-NEXT:    v_add_u32_e32 v1, -11, v1
 ; GFX9-NEXT:    v_ldexp_f32 v1, v4, v1
 ; GFX9-NEXT:    v_mul_f32_e32 v3, v1, v3
@@ -649,7 +655,7 @@ define amdgpu_kernel void @frem_constant_sel_constants(ptr addrspace(1) %p, i1 %
 ; GFX9-NEXT:    v_cndmask_b32_e32 v0, v1, v0, vcc
 ; GFX9-NEXT:    v_ldexp_f32 v0, v0, v2
 ; GFX9-NEXT:    v_and_b32_e32 v0, 0x7fffffff, v0
-; GFX9-NEXT:  .LBB26_7: ; %Flow14
+; GFX9-NEXT:  .LBB26_8: ; %Flow14
 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
@@ -673,11 +679,17 @@ define amdgpu_kernel void @frem_constant_sel_constants(ptr addrspace(1) %p, i1 %
 ; GFX942-NEXT:    v_cmp_eq_f32_e64 s[0:1], |v1|, s0
 ; GFX942-NEXT:    s_nop 1
 ; GFX942-NEXT:    v_cndmask_b32_e64 v0, v0, 0, s[0:1]
-; GFX942-NEXT:    s_cbranch_execz .LBB26_3
-; GFX942-NEXT:    s_branch .LBB26_7
+; GFX942-NEXT:    s_mov_b64 s[0:1], 0
+; GFX942-NEXT:    s_branch .LBB26_3
 ; GFX942-NEXT:  .LBB26_2:
+; GFX942-NEXT:    s_mov_b64 s[0:1], -1
 ; GFX942-NEXT:    ; implicit-def: $vgpr0
-; GFX942-NEXT:  .LBB26_3: ; %frem.compute
+; GFX942-NEXT:  .LBB26_3: ; %Flow13
+; GFX942-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX942-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX942-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX942-NEXT:    s_cbranch_scc1 .LBB26_8
+; GFX942-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX942-NEXT:    v_frexp_mant_f32_e64 v0, |v1|
 ; GFX942-NEXT:    v_ldexp_f32 v0, v0, 1
 ; GFX942-NEXT:    v_div_scale_f32 v3, s[0:1], v0, v0, 1.0
@@ -695,11 +707,11 @@ define amdgpu_kernel void @frem_constant_sel_constants(ptr addrspace(1) %p, i1 %
 ; GFX942-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v1
 ; GFX942-NEXT:    v_div_fixup_f32 v3, v3, v0, 1.0
 ; GFX942-NEXT:    v_mov_b32_e32 v4, 0x45200000
-; GFX942-NEXT:    s_cbranch_vccnz .LBB26_6
-; GFX942-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX942-NEXT:    s_cbranch_vccnz .LBB26_7
+; GFX942-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX942-NEXT:    v_sub_u32_e32 v1, 15, v2
 ; GFX942-NEXT:    v_mov_b32_e32 v5, 0x45200000
-; GFX942-NEXT:  .LBB26_5: ; %frem.loop_body
+; GFX942-NEXT:  .LBB26_6: ; %frem.loop_body
 ; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX942-NEXT:    v_mov_b32_e32 v4, v5
 ; GFX942-NEXT:    v_mul_f32_e32 v5, v4, v3
@@ -712,8 +724,8 @@ define amdgpu_kernel void @frem_constant_sel_constants(ptr addrspace(1) %p, i1 %
 ; GFX942-NEXT:    v_cndmask_b32_e32 v5, v5, v6, vcc
 ; GFX942-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v1
 ; GFX942-NEXT:    v_ldexp_f32 v5, v5, 12
-; GFX942-NEXT:    s_cbranch_vccnz .LBB26_5
-; GFX942-NEXT:  .LBB26_6: ; %Flow12
+; GFX942-NEXT:    s_cbranch_vccnz .LBB26_6
+; GFX942-NEXT:  .LBB26_7: ; %Flow12
 ; GFX942-NEXT:    v_add_u32_e32 v1, -11, v1
 ; GFX942-NEXT:    v_ldexp_f32 v1, v4, v1
 ; GFX942-NEXT:    v_mul_f32_e32 v3, v1, v3
@@ -726,7 +738,7 @@ define amdgpu_kernel void @frem_constant_sel_constants(ptr addrspace(1) %p, i1 %
 ; GFX942-NEXT:    v_cndmask_b32_e32 v0, v1, v0, vcc
 ; GFX942-NEXT:    v_ldexp_f32 v0, v0, v2
 ; GFX942-NEXT:    v_and_b32_e32 v0, 0x7fffffff, v0
-; GFX942-NEXT:  .LBB26_7: ; %Flow14
+; GFX942-NEXT:  .LBB26_8: ; %Flow14
 ; GFX942-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24
 ; GFX942-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX942-NEXT:    s_waitcnt lgkmcnt(0)

diff  --git a/llvm/test/CodeGen/AMDGPU/divergence-driven-trunc-to-i1.ll b/llvm/test/CodeGen/AMDGPU/divergence-driven-trunc-to-i1.ll
index f62c694896c78..5e0947b2c95c5 100644
--- a/llvm/test/CodeGen/AMDGPU/divergence-driven-trunc-to-i1.ll
+++ b/llvm/test/CodeGen/AMDGPU/divergence-driven-trunc-to-i1.ll
@@ -24,9 +24,11 @@ define amdgpu_kernel void @uniform_trunc_i16_to_i1(ptr addrspace(1) %out, i16 %x
   ; GCN-NEXT:   [[S_MOV_B32_3:%[0-9]+]]:sreg_32 = S_MOV_B32 0
   ; GCN-NEXT:   S_CMP_LT_I32 killed [[S_LSHL_B32_]], killed [[S_MOV_B32_3]], implicit-def $scc
   ; GCN-NEXT:   [[COPY5:%[0-9]+]]:sreg_64 = COPY $scc
-  ; GCN-NEXT:   [[S_OR_B64_:%[0-9]+]]:sreg_64_xexec = S_OR_B64 killed [[COPY5]], killed [[COPY4]], implicit-def dead $scc
-  ; GCN-NEXT:   [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed [[S_OR_B64_]], implicit $exec
-  ; GCN-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[V_CNDMASK_B32_e64_]], killed [[REG_SEQUENCE]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.out.load, addrspace 1)
+  ; GCN-NEXT:   [[S_OR_B64_:%[0-9]+]]:sreg_64 = S_OR_B64 killed [[COPY5]], killed [[COPY4]], implicit-def dead $scc
+  ; GCN-NEXT:   $scc = COPY [[S_OR_B64_]]
+  ; GCN-NEXT:   [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 1, 0, implicit $scc
+  ; GCN-NEXT:   [[COPY6:%[0-9]+]]:vgpr_32 = COPY [[S_CSELECT_B32_]]
+  ; GCN-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[COPY6]], killed [[REG_SEQUENCE]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.out.load, addrspace 1)
   ; GCN-NEXT:   S_ENDPGM 0
   %setcc = icmp slt i16 %x, 0
   %select = select i1 %setcc, i1 true, i1 %z
@@ -78,9 +80,11 @@ define amdgpu_kernel void @uniform_trunc_i32_to_i1(ptr addrspace(1) %out, i32 %x
   ; GCN-NEXT:   [[S_MOV_B32_2:%[0-9]+]]:sreg_32 = S_MOV_B32 0
   ; GCN-NEXT:   S_CMP_LT_I32 killed [[COPY4]], killed [[S_MOV_B32_2]], implicit-def $scc
   ; GCN-NEXT:   [[COPY7:%[0-9]+]]:sreg_64 = COPY $scc
-  ; GCN-NEXT:   [[S_OR_B64_:%[0-9]+]]:sreg_64_xexec = S_OR_B64 killed [[COPY7]], killed [[COPY6]], implicit-def dead $scc
-  ; GCN-NEXT:   [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed [[S_OR_B64_]], implicit $exec
-  ; GCN-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[V_CNDMASK_B32_e64_]], killed [[REG_SEQUENCE]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.out.load, addrspace 1)
+  ; GCN-NEXT:   [[S_OR_B64_:%[0-9]+]]:sreg_64 = S_OR_B64 killed [[COPY7]], killed [[COPY6]], implicit-def dead $scc
+  ; GCN-NEXT:   $scc = COPY [[S_OR_B64_]]
+  ; GCN-NEXT:   [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 1, 0, implicit $scc
+  ; GCN-NEXT:   [[COPY8:%[0-9]+]]:vgpr_32 = COPY [[S_CSELECT_B32_]]
+  ; GCN-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[COPY8]], killed [[REG_SEQUENCE]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.out.load, addrspace 1)
   ; GCN-NEXT:   S_ENDPGM 0
   %setcc = icmp slt i32 %x, 0
   %select = select i1 %setcc, i1 true, i1 %z
@@ -132,9 +136,11 @@ define amdgpu_kernel void @uniform_trunc_i64_to_i1(ptr addrspace(1) %out, i64 %x
   ; GCN-NEXT:   [[S_MOV_B32_2:%[0-9]+]]:sreg_32 = S_MOV_B32 0
   ; GCN-NEXT:   S_CMP_LT_I32 killed [[COPY5]], killed [[S_MOV_B32_2]], implicit-def $scc
   ; GCN-NEXT:   [[COPY8:%[0-9]+]]:sreg_64 = COPY $scc
-  ; GCN-NEXT:   [[S_OR_B64_:%[0-9]+]]:sreg_64_xexec = S_OR_B64 killed [[COPY8]], killed [[COPY7]], implicit-def dead $scc
-  ; GCN-NEXT:   [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed [[S_OR_B64_]], implicit $exec
-  ; GCN-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[V_CNDMASK_B32_e64_]], killed [[REG_SEQUENCE1]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.2, addrspace 1)
+  ; GCN-NEXT:   [[S_OR_B64_:%[0-9]+]]:sreg_64 = S_OR_B64 killed [[COPY8]], killed [[COPY7]], implicit-def dead $scc
+  ; GCN-NEXT:   $scc = COPY [[S_OR_B64_]]
+  ; GCN-NEXT:   [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 1, 0, implicit $scc
+  ; GCN-NEXT:   [[COPY9:%[0-9]+]]:vgpr_32 = COPY [[S_CSELECT_B32_]]
+  ; GCN-NEXT:   BUFFER_STORE_BYTE_OFFSET killed [[COPY9]], killed [[REG_SEQUENCE1]], 0, 0, 0, 0, implicit $exec :: (store (s8) into %ir.2, addrspace 1)
   ; GCN-NEXT:   S_ENDPGM 0
   %setcc = icmp slt i64 %x, 0
   %select = select i1 %setcc, i1 true, i1 %z

diff  --git a/llvm/test/CodeGen/AMDGPU/dynamic_stackalloc.ll b/llvm/test/CodeGen/AMDGPU/dynamic_stackalloc.ll
index 560ac268a6b10..779fa0886b368 100644
--- a/llvm/test/CodeGen/AMDGPU/dynamic_stackalloc.ll
+++ b/llvm/test/CodeGen/AMDGPU/dynamic_stackalloc.ll
@@ -891,7 +891,7 @@ define amdgpu_kernel void @test_dynamic_stackalloc_kernel_control_flow(i32 %n, i
 ; GFX9-SDAG-NEXT:    s_movk_i32 s32, 0x1000
 ; GFX9-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-SDAG-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-SDAG-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX9-SDAG-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX9-SDAG-NEXT:  ; %bb.1: ; %bb.1
 ; GFX9-SDAG-NEXT:    v_lshl_add_u32 v0, v0, 2, 15
 ; GFX9-SDAG-NEXT:    v_and_b32_e32 v0, 0x1ff0, v0
@@ -918,8 +918,16 @@ define amdgpu_kernel void @test_dynamic_stackalloc_kernel_control_flow(i32 %n, i
 ; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, 1
 ; GFX9-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], s6
 ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0)
-; GFX9-SDAG-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX9-SDAG-NEXT:  .LBB7_2: ; %bb.0
+; GFX9-SDAG-NEXT:    s_mov_b64 s[6:7], 0
+; GFX9-SDAG-NEXT:    s_branch .LBB7_3
+; GFX9-SDAG-NEXT:  .LBB7_2:
+; GFX9-SDAG-NEXT:    s_mov_b64 s[6:7], -1
+; GFX9-SDAG-NEXT:  .LBB7_3: ; %Flow
+; GFX9-SDAG-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GFX9-SDAG-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-SDAG-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-SDAG-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-SDAG-NEXT:  ; %bb.4: ; %bb.0
 ; GFX9-SDAG-NEXT:    s_add_i32 s4, s32, 0xfff
 ; GFX9-SDAG-NEXT:    s_lshl2_add_u32 s5, s5, 15
 ; GFX9-SDAG-NEXT:    s_and_b32 s4, s4, 0xfffff000
@@ -930,10 +938,8 @@ define amdgpu_kernel void @test_dynamic_stackalloc_kernel_control_flow(i32 %n, i
 ; GFX9-SDAG-NEXT:    s_add_i32 s32, s4, s5
 ; GFX9-SDAG-NEXT:    buffer_store_dword v0, v2, s[0:3], 0 offen
 ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0)
-; GFX9-SDAG-NEXT:  .LBB7_3: ; %bb.2
+; GFX9-SDAG-NEXT:  .LBB7_5: ; %bb.2
 ; GFX9-SDAG-NEXT:    s_endpgm
-; GFX9-SDAG-NEXT:  .LBB7_4:
-; GFX9-SDAG-NEXT:    s_branch .LBB7_2
 ;
 ; GFX9-GISEL-LABEL: test_dynamic_stackalloc_kernel_control_flow:
 ; GFX9-GISEL:       ; %bb.0: ; %entry
@@ -998,7 +1004,7 @@ define amdgpu_kernel void @test_dynamic_stackalloc_kernel_control_flow(i32 %n, i
 ; GFX11-SDAG-NEXT:    s_mov_b32 s32, 64
 ; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-SDAG-NEXT:    s_cmp_lg_u32 s0, 0
-; GFX11-SDAG-NEXT:    s_cbranch_scc0 .LBB7_4
+; GFX11-SDAG-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX11-SDAG-NEXT:  ; %bb.1: ; %bb.1
 ; GFX11-SDAG-NEXT:    v_and_b32_e32 v0, 0x3ff, v0
 ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
@@ -1022,11 +1028,20 @@ define amdgpu_kernel void @test_dynamic_stackalloc_kernel_control_flow(i32 %n, i
 ; GFX11-SDAG-NEXT:    s_mov_b32 s3, s32
 ; GFX11-SDAG-NEXT:    v_mov_b32_e32 v3, 1
 ; GFX11-SDAG-NEXT:    v_add_nc_u32_e64 v0, s3, s2
+; GFX11-SDAG-NEXT:    s_mov_b32 s0, 0
 ; GFX11-SDAG-NEXT:    scratch_store_b32 off, v3, s3 dlc
 ; GFX11-SDAG-NEXT:    s_waitcnt_vscnt null, 0x0
 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s32, v0
-; GFX11-SDAG-NEXT:    s_cbranch_execnz .LBB7_3
-; GFX11-SDAG-NEXT:  .LBB7_2: ; %bb.0
+; GFX11-SDAG-NEXT:    s_branch .LBB7_3
+; GFX11-SDAG-NEXT:  .LBB7_2:
+; GFX11-SDAG-NEXT:    s_mov_b32 s0, -1
+; GFX11-SDAG-NEXT:  .LBB7_3: ; %Flow
+; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-SDAG-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-SDAG-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX11-SDAG-NEXT:  ; %bb.4: ; %bb.0
 ; GFX11-SDAG-NEXT:    v_mov_b32_e32 v0, 2
 ; GFX11-SDAG-NEXT:    s_add_i32 s0, s32, 63
 ; GFX11-SDAG-NEXT:    s_lshl2_add_u32 s1, s1, 15
@@ -1035,10 +1050,8 @@ define amdgpu_kernel void @test_dynamic_stackalloc_kernel_control_flow(i32 %n, i
 ; GFX11-SDAG-NEXT:    scratch_store_b32 off, v0, s0 dlc
 ; GFX11-SDAG-NEXT:    s_waitcnt_vscnt null, 0x0
 ; GFX11-SDAG-NEXT:    s_add_i32 s32, s0, s1
-; GFX11-SDAG-NEXT:  .LBB7_3: ; %bb.2
+; GFX11-SDAG-NEXT:  .LBB7_5: ; %bb.2
 ; GFX11-SDAG-NEXT:    s_endpgm
-; GFX11-SDAG-NEXT:  .LBB7_4:
-; GFX11-SDAG-NEXT:    s_branch .LBB7_2
 ;
 ; GFX11-GISEL-LABEL: test_dynamic_stackalloc_kernel_control_flow:
 ; GFX11-GISEL:       ; %bb.0: ; %entry

diff  --git a/llvm/test/CodeGen/AMDGPU/exec-mask-opt-cannot-create-empty-or-backward-segment.ll b/llvm/test/CodeGen/AMDGPU/exec-mask-opt-cannot-create-empty-or-backward-segment.ll
index b61c342f29d78..611b4b18f2119 100644
--- a/llvm/test/CodeGen/AMDGPU/exec-mask-opt-cannot-create-empty-or-backward-segment.ll
+++ b/llvm/test/CodeGen/AMDGPU/exec-mask-opt-cannot-create-empty-or-backward-segment.ll
@@ -9,27 +9,23 @@ define amdgpu_kernel void @cannot_create_empty_or_backwards_segment(i1 %arg, i1
 ; CHECK-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0
 ; CHECK-NEXT:    s_add_u32 s24, s24, s17
 ; CHECK-NEXT:    s_addc_u32 s25, s25, 0
+; CHECK-NEXT:    v_mov_b32_e32 v0, 0
 ; CHECK-NEXT:    s_waitcnt lgkmcnt(0)
 ; CHECK-NEXT:    s_bitcmp1_b32 s0, 0
-; CHECK-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; CHECK-NEXT:    s_cselect_b64 s[4:5], -1, 0
 ; CHECK-NEXT:    s_bitcmp1_b32 s0, 8
-; CHECK-NEXT:    s_cselect_b64 s[10:11], -1, 0
+; CHECK-NEXT:    s_cselect_b64 s[8:9], -1, 0
 ; CHECK-NEXT:    s_bitcmp1_b32 s0, 16
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[2:3]
-; CHECK-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; CHECK-NEXT:    s_cselect_b64 s[10:11], -1, 0
 ; CHECK-NEXT:    s_bitcmp1_b32 s0, 24
-; CHECK-NEXT:    s_cselect_b64 s[8:9], -1, 0
-; CHECK-NEXT:    s_xor_b64 s[4:5], s[8:9], -1
+; CHECK-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; CHECK-NEXT:    s_xor_b64 s[2:3], s[6:7], -1
 ; CHECK-NEXT:    s_bitcmp1_b32 s1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[2:3]
 ; CHECK-NEXT:    s_cselect_b64 s[12:13], -1, 0
 ; CHECK-NEXT:    s_bitcmp1_b32 s1, 8
 ; CHECK-NEXT:    s_cselect_b64 s[14:15], -1, 0
-; CHECK-NEXT:    v_cmp_ne_u32_e64 s[2:3], 1, v1
-; CHECK-NEXT:    s_and_b64 s[4:5], exec, s[4:5]
-; CHECK-NEXT:    s_and_b64 s[6:7], exec, s[10:11]
-; CHECK-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; CHECK-NEXT:    v_mov_b32_e32 v0, 0
+; CHECK-NEXT:    s_and_b64 s[0:1], exec, s[2:3]
+; CHECK-NEXT:    s_and_b64 s[2:3], exec, s[8:9]
 ; CHECK-NEXT:    s_branch .LBB0_3
 ; CHECK-NEXT:  .LBB0_1: ; in Loop: Header=BB0_3 Depth=1
 ; CHECK-NEXT:    s_mov_b64 s[18:19], 0
@@ -39,88 +35,103 @@ define amdgpu_kernel void @cannot_create_empty_or_backwards_segment(i1 %arg, i1
 ; CHECK-NEXT:  .LBB0_2: ; %Flow7
 ; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
 ; CHECK-NEXT:    s_and_b64 vcc, exec, s[22:23]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_12
+; CHECK-NEXT:    s_cbranch_vccnz .LBB0_13
 ; CHECK-NEXT:  .LBB0_3: ; %bb7
 ; CHECK-NEXT:    ; =>This Inner Loop Header: Depth=1
-; CHECK-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_1
+; CHECK-NEXT:    s_and_b64 s[16:17], s[10:11], exec
+; CHECK-NEXT:    s_cselect_b32 s16, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s16, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_1
 ; CHECK-NEXT:  ; %bb.4: ; %bb8
 ; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
-; CHECK-NEXT:    s_mov_b64 vcc, s[4:5]
+; CHECK-NEXT:    s_mov_b64 vcc, s[0:1]
 ; CHECK-NEXT:    s_cbranch_vccz .LBB0_6
 ; CHECK-NEXT:  ; %bb.5: ; %bb9
 ; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
 ; CHECK-NEXT:    s_mov_b64 s[16:17], 0
 ; CHECK-NEXT:    s_mov_b64 s[18:19], -1
-; CHECK-NEXT:    s_mov_b64 s[22:23], s[10:11]
-; CHECK-NEXT:    s_cbranch_execz .LBB0_7
-; CHECK-NEXT:    s_branch .LBB0_8
+; CHECK-NEXT:    s_mov_b64 s[22:23], s[8:9]
+; CHECK-NEXT:    s_branch .LBB0_7
 ; CHECK-NEXT:  .LBB0_6: ; in Loop: Header=BB0_3 Depth=1
 ; CHECK-NEXT:    s_mov_b64 s[16:17], -1
 ; CHECK-NEXT:    s_mov_b64 s[18:19], 0
 ; CHECK-NEXT:    s_mov_b64 s[22:23], 0
-; CHECK-NEXT:  .LBB0_7: ; %bb10
+; CHECK-NEXT:  .LBB0_7: ; %Flow8
+; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; CHECK-NEXT:    s_and_b64 s[20:21], s[16:17], exec
+; CHECK-NEXT:    s_cselect_b32 s20, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s20, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_9
+; CHECK-NEXT:  ; %bb.8: ; %bb10
 ; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
 ; CHECK-NEXT:    s_mov_b64 s[18:19], -1
 ; CHECK-NEXT:    s_mov_b64 s[16:17], 0
 ; CHECK-NEXT:    s_mov_b64 s[22:23], s[14:15]
-; CHECK-NEXT:  .LBB0_8: ; %Flow9
+; CHECK-NEXT:  .LBB0_9: ; %Flow9
 ; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; CHECK-NEXT:    s_and_b64 s[22:23], s[22:23], exec
+; CHECK-NEXT:    s_cselect_b32 s22, 1, 0
 ; CHECK-NEXT:    s_mov_b64 s[20:21], -1
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[22:23]
+; CHECK-NEXT:    s_cmp_lg_u32 s22, 1
 ; CHECK-NEXT:    s_mov_b64 s[22:23], -1
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_2
-; CHECK-NEXT:  ; %bb.9: ; %bb13
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_2
+; CHECK-NEXT:  ; %bb.10: ; %bb13
 ; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
 ; CHECK-NEXT:    s_mov_b64 s[16:17], 0
 ; CHECK-NEXT:    s_mov_b64 s[20:21], 0
-; CHECK-NEXT:    s_mov_b64 vcc, s[6:7]
-; CHECK-NEXT:    s_cbranch_vccz .LBB0_11
-; CHECK-NEXT:  ; %bb.10: ; %bb16
+; CHECK-NEXT:    s_mov_b64 vcc, s[2:3]
+; CHECK-NEXT:    s_cbranch_vccz .LBB0_12
+; CHECK-NEXT:  ; %bb.11: ; %bb16
 ; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
 ; CHECK-NEXT:    s_mov_b64 s[20:21], -1
 ; CHECK-NEXT:    s_mov_b64 s[22:23], s[12:13]
-; CHECK-NEXT:  .LBB0_11: ; %Flow11
+; CHECK-NEXT:  .LBB0_12: ; %Flow11
 ; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
 ; CHECK-NEXT:    s_mov_b64 s[18:19], 0
 ; CHECK-NEXT:    s_branch .LBB0_2
-; CHECK-NEXT:  .LBB0_12: ; %loop.exit.guard6
+; CHECK-NEXT:  .LBB0_13: ; %loop.exit.guard6
 ; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
 ; CHECK-NEXT:    s_xor_b64 s[22:23], s[20:21], -1
 ; CHECK-NEXT:    s_mov_b64 s[20:21], -1
 ; CHECK-NEXT:    s_and_b64 vcc, exec, s[22:23]
-; CHECK-NEXT:    s_cbranch_vccz .LBB0_16
-; CHECK-NEXT:  ; %bb.13: ; %bb14
+; CHECK-NEXT:    s_cbranch_vccz .LBB0_17
+; CHECK-NEXT:  ; %bb.14: ; %bb14
 ; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
-; CHECK-NEXT:    s_and_b64 vcc, exec, s[0:1]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_15
-; CHECK-NEXT:  ; %bb.14: ; %bb15
+; CHECK-NEXT:    s_and_b64 s[20:21], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s20, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s20, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_16
+; CHECK-NEXT:  ; %bb.15: ; %bb15
 ; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
 ; CHECK-NEXT:    buffer_store_dword v0, off, s[24:27], 0 offset:4
 ; CHECK-NEXT:    buffer_store_dword v0, off, s[24:27], 0
-; CHECK-NEXT:  .LBB0_15: ; %Flow
+; CHECK-NEXT:  .LBB0_16: ; %Flow
 ; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
 ; CHECK-NEXT:    s_mov_b64 s[20:21], 0
-; CHECK-NEXT:  .LBB0_16: ; %Flow13
+; CHECK-NEXT:  .LBB0_17: ; %Flow13
 ; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[20:21]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_3
-; CHECK-NEXT:  ; %bb.17: ; %loop.exit.guard
+; CHECK-NEXT:    s_and_b64 s[20:21], s[20:21], exec
+; CHECK-NEXT:    s_cselect_b32 s20, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s20, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_3
+; CHECK-NEXT:  ; %bb.18: ; %loop.exit.guard
 ; CHECK-NEXT:    s_and_b64 vcc, exec, s[16:17]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_22
-; CHECK-NEXT:  ; %bb.18: ; %loop.exit.guard5
-; CHECK-NEXT:    s_and_b64 vcc, exec, s[18:19]
 ; CHECK-NEXT:    s_cbranch_vccnz .LBB0_23
-; CHECK-NEXT:  ; %bb.19: ; %bb17
-; CHECK-NEXT:    s_and_b64 vcc, exec, s[8:9]
-; CHECK-NEXT:    s_cbranch_vccz .LBB0_21
-; CHECK-NEXT:  ; %bb.20: ; %bb19
-; CHECK-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; CHECK-NEXT:  ; %bb.19: ; %loop.exit.guard5
+; CHECK-NEXT:    s_and_b64 vcc, exec, s[18:19]
+; CHECK-NEXT:    s_cbranch_vccnz .LBB0_24
+; CHECK-NEXT:  ; %bb.20: ; %bb17
+; CHECK-NEXT:    s_and_b64 vcc, exec, s[6:7]
 ; CHECK-NEXT:    s_cbranch_vccz .LBB0_22
-; CHECK-NEXT:  .LBB0_21: ; %bb18
+; CHECK-NEXT:  ; %bb.21: ; %bb19
+; CHECK-NEXT:    s_and_b64 s[0:1], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s0, 1
+; CHECK-NEXT:    s_cbranch_scc0 .LBB0_23
+; CHECK-NEXT:  .LBB0_22: ; %bb18
 ; CHECK-NEXT:    s_endpgm
-; CHECK-NEXT:  .LBB0_22: ; %bb20
-; CHECK-NEXT:  .LBB0_23: ; %bb12
+; CHECK-NEXT:  .LBB0_23: ; %bb20
+; CHECK-NEXT:  .LBB0_24: ; %bb12
 bb:
   br label %bb6
 

diff  --git a/llvm/test/CodeGen/AMDGPU/expand-scalar-carry-out-select-user.ll b/llvm/test/CodeGen/AMDGPU/expand-scalar-carry-out-select-user.ll
index b4768bd039668..aa0daf54291d0 100644
--- a/llvm/test/CodeGen/AMDGPU/expand-scalar-carry-out-select-user.ll
+++ b/llvm/test/CodeGen/AMDGPU/expand-scalar-carry-out-select-user.ll
@@ -94,8 +94,10 @@ define amdgpu_kernel void @s_add_co_br_user(i32 %i) {
 ; GFX7-NEXT:    s_add_u32 s1, s0, s0
 ; GFX7-NEXT:    s_addc_u32 s0, s0, 0
 ; GFX7-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX7-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; GFX7-NEXT:    s_cbranch_vccnz .LBB1_2
+; GFX7-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX7-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX7-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX7-NEXT:    s_cbranch_scc1 .LBB1_2
 ; GFX7-NEXT:  ; %bb.1: ; %bb0
 ; GFX7-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX7-NEXT:    v_mov_b32_e32 v1, 0
@@ -117,8 +119,10 @@ define amdgpu_kernel void @s_add_co_br_user(i32 %i) {
 ; GFX9-NEXT:    s_add_u32 s1, s0, s0
 ; GFX9-NEXT:    s_addc_u32 s0, s0, 0
 ; GFX9-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX9-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; GFX9-NEXT:    s_cbranch_vccnz .LBB1_2
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %bb0
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0
@@ -140,8 +144,10 @@ define amdgpu_kernel void @s_add_co_br_user(i32 %i) {
 ; GFX10-NEXT:    s_add_u32 s1, s0, s0
 ; GFX10-NEXT:    s_addc_u32 s0, s0, 0
 ; GFX10-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX10-NEXT:    s_andn2_b32 vcc_lo, exec_lo, s0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB1_2
+; GFX10-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB1_2
 ; GFX10-NEXT:  ; %bb.1: ; %bb0
 ; GFX10-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX10-NEXT:    v_mov_b32_e32 v1, 0
@@ -163,9 +169,11 @@ define amdgpu_kernel void @s_add_co_br_user(i32 %i) {
 ; GFX11-NEXT:    s_add_u32 s1, s0, s0
 ; GFX11-NEXT:    s_addc_u32 s0, s0, 0
 ; GFX11-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB1_2
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB1_2
 ; GFX11-NEXT:  ; %bb.1: ; %bb0
 ; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
 ; GFX11-NEXT:    v_mov_b32_e32 v2, 9

diff  --git a/llvm/test/CodeGen/AMDGPU/extract-subvector-16bit.ll b/llvm/test/CodeGen/AMDGPU/extract-subvector-16bit.ll
index 8d62f86cba88a..f8a3482f211c9 100644
--- a/llvm/test/CodeGen/AMDGPU/extract-subvector-16bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/extract-subvector-16bit.ll
@@ -10,7 +10,7 @@ define <4 x i16> @vec_8xi16_extract_4xi16(ptr addrspace(1) %p0, ptr addrspace(1)
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s16, 0
 ; SI-NEXT:    s_mov_b32 s6, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB0_4
+; SI-NEXT:    s_cbranch_scc0 .LBB0_2
 ; SI-NEXT:  ; %bb.1: ; %F
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-NEXT:    s_mov_b32 s4, s6
@@ -31,12 +31,23 @@ define <4 x i16> @vec_8xi16_extract_4xi16(ptr addrspace(1) %p0, ptr addrspace(1)
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    buffer_load_ushort v2, v[2:3], s[4:7], 0 addr64 offset:14 glc
 ; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v7
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v6, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v5, v7
-; SI-NEXT:    s_cbranch_execnz .LBB0_3
-; SI-NEXT:  .LBB0_2: ; %T
+; SI-NEXT:    s_branch .LBB0_3
+; SI-NEXT:  .LBB0_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr2
+; SI-NEXT:    ; implicit-def: $vgpr4
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:  .LBB0_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB0_5
+; SI-NEXT:  ; %bb.4: ; %T
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-NEXT:    s_mov_b32 s4, s6
 ; SI-NEXT:    s_mov_b32 s5, s6
@@ -60,7 +71,7 @@ define <4 x i16> @vec_8xi16_extract_4xi16(ptr addrspace(1) %p0, ptr addrspace(1)
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v0
-; SI-NEXT:  .LBB0_3: ; %exit
+; SI-NEXT:  .LBB0_5: ; %exit
 ; SI-NEXT:    v_bfe_i32 v0, v3, 0, 16
 ; SI-NEXT:    v_bfe_i32 v1, v2, 0, 16
 ; SI-NEXT:    v_mov_b32_e32 v3, 0xffff8000
@@ -80,25 +91,29 @@ define <4 x i16> @vec_8xi16_extract_4xi16(ptr addrspace(1) %p0, ptr addrspace(1)
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v3
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v4
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB0_4:
-; SI-NEXT:    ; implicit-def: $vgpr2
-; SI-NEXT:    ; implicit-def: $vgpr4
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    s_branch .LBB0_2
 ;
 ; GFX9-LABEL: vec_8xi16_extract_4xi16:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s16, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB0_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB0_2
 ; GFX9-NEXT:  ; %bb.1: ; %F
 ; GFX9-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
-; GFX9-NEXT:    s_cbranch_execnz .LBB0_3
-; GFX9-NEXT:  .LBB0_2: ; %T
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB0_3
+; GFX9-NEXT:  .LBB0_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
+; GFX9-NEXT:  .LBB0_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB0_5
+; GFX9-NEXT:  ; %bb.4: ; %T
 ; GFX9-NEXT:    global_load_dwordx4 v[2:5], v[0:1], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
-; GFX9-NEXT:  .LBB0_3: ; %exit
+; GFX9-NEXT:  .LBB0_5: ; %exit
 ; GFX9-NEXT:    v_pk_ashrrev_i16 v0, 15, v3 op_sel_hi:[0,0]
 ; GFX9-NEXT:    s_movk_i32 s4, 0x8000
 ; GFX9-NEXT:    v_or_b32_e32 v1, 0xffff8000, v0
@@ -110,25 +125,30 @@ define <4 x i16> @vec_8xi16_extract_4xi16(ptr addrspace(1) %p0, ptr addrspace(1)
 ; GFX9-NEXT:    v_perm_b32 v0, v0, v2, s4
 ; GFX9-NEXT:    v_perm_b32 v1, v3, v1, s4
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB0_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
-; GFX9-NEXT:    s_branch .LBB0_2
 ;
 ; GFX11-TRUE16-LABEL: vec_8xi16_extract_4xi16:
 ; GFX11-TRUE16:       ; %bb.0:
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB0_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB0_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %F
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[2:3], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB0_3
-; GFX11-TRUE16-NEXT:  .LBB0_2: ; %T
+; GFX11-TRUE16-NEXT:    s_branch .LBB0_3
+; GFX11-TRUE16-NEXT:  .LBB0_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
+; GFX11-TRUE16-NEXT:  .LBB0_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB0_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[0:1], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:  .LBB0_3: ; %exit
+; GFX11-TRUE16-NEXT:  .LBB0_5: ; %exit
 ; GFX11-TRUE16-NEXT:    v_ashrrev_i16 v0.l, 15, v3.l
 ; GFX11-TRUE16-NEXT:    v_pk_ashrrev_i16 v2, 15, v2 op_sel_hi:[0,1]
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -138,25 +158,30 @@ define <4 x i16> @vec_8xi16_extract_4xi16(ptr addrspace(1) %p0, ptr addrspace(1)
 ; GFX11-TRUE16-NEXT:    v_or_b16 v0.h, 0x8000, v2.h
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v1.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB0_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
-; GFX11-TRUE16-NEXT:    s_branch .LBB0_2
 ;
 ; GFX11-FAKE16-LABEL: vec_8xi16_extract_4xi16:
 ; GFX11-FAKE16:       ; %bb.0:
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB0_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB0_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %F
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[2:3], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB0_3
-; GFX11-FAKE16-NEXT:  .LBB0_2: ; %T
+; GFX11-FAKE16-NEXT:    s_branch .LBB0_3
+; GFX11-FAKE16-NEXT:  .LBB0_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
+; GFX11-FAKE16-NEXT:  .LBB0_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB0_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[0:1], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:  .LBB0_3: ; %exit
+; GFX11-FAKE16-NEXT:  .LBB0_5: ; %exit
 ; GFX11-FAKE16-NEXT:    v_pk_ashrrev_i16 v0, 15, v2 op_sel_hi:[0,1]
 ; GFX11-FAKE16-NEXT:    v_pk_ashrrev_i16 v1, 15, v3 op_sel_hi:[0,0]
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -171,9 +196,6 @@ define <4 x i16> @vec_8xi16_extract_4xi16(ptr addrspace(1) %p0, ptr addrspace(1)
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v2, v0, 0x5040100
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v3, v1, 0x5040100
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB0_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
-; GFX11-FAKE16-NEXT:    s_branch .LBB0_2
   %cond = icmp eq i32 %cond.arg, 0
   br i1 %cond, label %T, label %F
 
@@ -199,7 +221,7 @@ define <4 x i16> @vec_8xi16_extract_4xi16_2(ptr addrspace(1) %p0, ptr addrspace(
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s16, 0
 ; SI-NEXT:    s_mov_b32 s6, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %F
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-NEXT:    s_mov_b32 s4, s6
@@ -220,12 +242,24 @@ define <4 x i16> @vec_8xi16_extract_4xi16_2(ptr addrspace(1) %p0, ptr addrspace(
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    buffer_load_ushort v2, v[2:3], s[4:7], 0 addr64 offset:14 glc
 ; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v4
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v5, v5, v3
 ; SI-NEXT:    v_or_b32_e32 v3, v6, v7
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %T
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:    ; implicit-def: $vgpr4
+; SI-NEXT:    ; implicit-def: $vgpr5
+; SI-NEXT:    ; implicit-def: $vgpr2
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %T
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-NEXT:    s_mov_b32 s4, s6
 ; SI-NEXT:    s_mov_b32 s5, s6
@@ -249,7 +283,7 @@ define <4 x i16> @vec_8xi16_extract_4xi16_2(ptr addrspace(1) %p0, ptr addrspace(
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v2
 ; SI-NEXT:    v_or_b32_e32 v5, v5, v0
-; SI-NEXT:  .LBB1_3: ; %exit
+; SI-NEXT:  .LBB1_5: ; %exit
 ; SI-NEXT:    v_bfe_i32 v0, v5, 0, 16
 ; SI-NEXT:    v_bfe_i32 v1, v2, 0, 16
 ; SI-NEXT:    v_bfe_i32 v2, v3, 0, 16
@@ -269,26 +303,29 @@ define <4 x i16> @vec_8xi16_extract_4xi16_2(ptr addrspace(1) %p0, ptr addrspace(
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
 ; SI-NEXT:    v_or_b32_e32 v1, v6, v1
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    ; implicit-def: $vgpr4
-; SI-NEXT:    ; implicit-def: $vgpr5
-; SI-NEXT:    ; implicit-def: $vgpr2
-; SI-NEXT:    s_branch .LBB1_2
 ;
 ; GFX9-LABEL: vec_8xi16_extract_4xi16_2:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s16, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX9-NEXT:  ; %bb.1: ; %F
 ; GFX9-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
-; GFX9-NEXT:    s_cbranch_execnz .LBB1_3
-; GFX9-NEXT:  .LBB1_2: ; %T
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB1_3
+; GFX9-NEXT:  .LBB1_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
+; GFX9-NEXT:  .LBB1_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX9-NEXT:  ; %bb.4: ; %T
 ; GFX9-NEXT:    global_load_dwordx4 v[2:5], v[0:1], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
-; GFX9-NEXT:  .LBB1_3: ; %exit
+; GFX9-NEXT:  .LBB1_5: ; %exit
 ; GFX9-NEXT:    v_pk_ashrrev_i16 v0, 15, v5 op_sel_hi:[0,1]
 ; GFX9-NEXT:    s_movk_i32 s4, 0x8000
 ; GFX9-NEXT:    v_or_b32_e32 v1, 0xffff8000, v0
@@ -300,25 +337,30 @@ define <4 x i16> @vec_8xi16_extract_4xi16_2(ptr addrspace(1) %p0, ptr addrspace(
 ; GFX9-NEXT:    v_perm_b32 v0, v0, v3, s4
 ; GFX9-NEXT:    v_perm_b32 v1, v2, v1, s4
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB1_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
-; GFX9-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-TRUE16-LABEL: vec_8xi16_extract_4xi16_2:
 ; GFX11-TRUE16:       ; %bb.0:
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %F
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[2:3], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-TRUE16-NEXT:  .LBB1_2: ; %T
+; GFX11-TRUE16-NEXT:    s_branch .LBB1_3
+; GFX11-TRUE16-NEXT:  .LBB1_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
+; GFX11-TRUE16-NEXT:  .LBB1_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[0:1], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:  .LBB1_3: ; %exit
+; GFX11-TRUE16-NEXT:  .LBB1_5: ; %exit
 ; GFX11-TRUE16-NEXT:    v_pk_ashrrev_i16 v1, 15, v5 op_sel_hi:[0,1]
 ; GFX11-TRUE16-NEXT:    v_pk_ashrrev_i16 v0, 15, v4 op_sel_hi:[0,1]
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -328,25 +370,30 @@ define <4 x i16> @vec_8xi16_extract_4xi16_2(ptr addrspace(1) %p0, ptr addrspace(
 ; GFX11-TRUE16-NEXT:    v_or_b16 v0.h, 0x8000, v0.h
 ; GFX11-TRUE16-NEXT:    v_or_b16 v1.h, 0x8000, v1.h
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB1_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
-; GFX11-TRUE16-NEXT:    s_branch .LBB1_2
 ;
 ; GFX11-FAKE16-LABEL: vec_8xi16_extract_4xi16_2:
 ; GFX11-FAKE16:       ; %bb.0:
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB1_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %F
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[2:3], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB1_3
-; GFX11-FAKE16-NEXT:  .LBB1_2: ; %T
+; GFX11-FAKE16-NEXT:    s_branch .LBB1_3
+; GFX11-FAKE16-NEXT:  .LBB1_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
+; GFX11-FAKE16-NEXT:  .LBB1_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[0:1], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:  .LBB1_3: ; %exit
+; GFX11-FAKE16-NEXT:  .LBB1_5: ; %exit
 ; GFX11-FAKE16-NEXT:    v_pk_ashrrev_i16 v0, 15, v4 op_sel_hi:[0,1]
 ; GFX11-FAKE16-NEXT:    v_pk_ashrrev_i16 v1, 15, v5 op_sel_hi:[0,1]
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -361,9 +408,6 @@ define <4 x i16> @vec_8xi16_extract_4xi16_2(ptr addrspace(1) %p0, ptr addrspace(
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v2, v0, 0x5040100
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v3, v1, 0x5040100
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB1_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
-; GFX11-FAKE16-NEXT:    s_branch .LBB1_2
   %cond = icmp eq i32 %cond.arg, 0
   br i1 %cond, label %T, label %F
 
@@ -389,7 +433,7 @@ define <4 x half> @vec_8xf16_extract_4xf16(ptr addrspace(1) %p0, ptr addrspace(1
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s16, 0
 ; SI-NEXT:    s_mov_b32 s6, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB2_4
+; SI-NEXT:    s_cbranch_scc0 .LBB2_2
 ; SI-NEXT:  ; %bb.1: ; %F
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-NEXT:    s_mov_b32 s4, s6
@@ -410,12 +454,23 @@ define <4 x half> @vec_8xf16_extract_4xf16(ptr addrspace(1) %p0, ptr addrspace(1
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    buffer_load_ushort v2, v[2:3], s[4:7], 0 addr64 offset:14 glc
 ; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v7
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v6, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v5, v7
-; SI-NEXT:    s_cbranch_execnz .LBB2_3
-; SI-NEXT:  .LBB2_2: ; %T
+; SI-NEXT:    s_branch .LBB2_3
+; SI-NEXT:  .LBB2_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr2
+; SI-NEXT:    ; implicit-def: $vgpr4
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:  .LBB2_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB2_5
+; SI-NEXT:  ; %bb.4: ; %T
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-NEXT:    s_mov_b32 s4, s6
 ; SI-NEXT:    s_mov_b32 s5, s6
@@ -439,7 +494,7 @@ define <4 x half> @vec_8xf16_extract_4xf16(ptr addrspace(1) %p0, ptr addrspace(1
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v0
-; SI-NEXT:  .LBB2_3: ; %exit
+; SI-NEXT:  .LBB2_5: ; %exit
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v4
@@ -457,25 +512,29 @@ define <4 x half> @vec_8xf16_extract_4xf16(ptr addrspace(1) %p0, ptr addrspace(1
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB2_4:
-; SI-NEXT:    ; implicit-def: $vgpr2
-; SI-NEXT:    ; implicit-def: $vgpr4
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    s_branch .LBB2_2
 ;
 ; GFX9-LABEL: vec_8xf16_extract_4xf16:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s16, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB2_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB2_2
 ; GFX9-NEXT:  ; %bb.1: ; %F
 ; GFX9-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
-; GFX9-NEXT:    s_cbranch_execnz .LBB2_3
-; GFX9-NEXT:  .LBB2_2: ; %T
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB2_3
+; GFX9-NEXT:  .LBB2_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
+; GFX9-NEXT:  .LBB2_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB2_5
+; GFX9-NEXT:  ; %bb.4: ; %T
 ; GFX9-NEXT:    global_load_dwordx4 v[2:5], v[0:1], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
-; GFX9-NEXT:  .LBB2_3: ; %exit
+; GFX9-NEXT:  .LBB2_5: ; %exit
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x3900
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x3d00
 ; GFX9-NEXT:    v_cmp_ge_f16_e32 vcc, 0.5, v2
@@ -490,25 +549,30 @@ define <4 x half> @vec_8xf16_extract_4xf16(ptr addrspace(1) %p0, ptr addrspace(1
 ; GFX9-NEXT:    v_pack_b32_f16 v1, v0, v5
 ; GFX9-NEXT:    v_pack_b32_f16 v0, v4, v2
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB2_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
-; GFX9-NEXT:    s_branch .LBB2_2
 ;
 ; GFX11-TRUE16-LABEL: vec_8xf16_extract_4xf16:
 ; GFX11-TRUE16:       ; %bb.0:
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB2_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB2_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %F
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[2:3], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB2_3
-; GFX11-TRUE16-NEXT:  .LBB2_2: ; %T
+; GFX11-TRUE16-NEXT:    s_branch .LBB2_3
+; GFX11-TRUE16-NEXT:  .LBB2_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
+; GFX11-TRUE16-NEXT:  .LBB2_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB2_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[0:1], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:  .LBB2_3: ; %exit
+; GFX11-TRUE16-NEXT:  .LBB2_5: ; %exit
 ; GFX11-TRUE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, 0.5, v2.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.l, 0x3900
 ; GFX11-TRUE16-NEXT:    v_cmp_ge_f16_e64 s0, 0.5, v2.h
@@ -521,25 +585,30 @@ define <4 x half> @vec_8xf16_extract_4xf16(ptr addrspace(1) %p0, ptr addrspace(1
 ; GFX11-TRUE16-NEXT:    v_cndmask_b16 v1.h, 0x3d00, v1.l, s1
 ; GFX11-TRUE16-NEXT:    v_cndmask_b16 v1.l, v1.l, 0x3d00, s2
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB2_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
-; GFX11-TRUE16-NEXT:    s_branch .LBB2_2
 ;
 ; GFX11-FAKE16-LABEL: vec_8xf16_extract_4xf16:
 ; GFX11-FAKE16:       ; %bb.0:
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB2_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB2_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %F
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[2:3], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB2_3
-; GFX11-FAKE16-NEXT:  .LBB2_2: ; %T
+; GFX11-FAKE16-NEXT:    s_branch .LBB2_3
+; GFX11-FAKE16-NEXT:  .LBB2_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
+; GFX11-FAKE16-NEXT:  .LBB2_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB2_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[0:1], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:  .LBB2_3: ; %exit
+; GFX11-FAKE16-NEXT:  .LBB2_5: ; %exit
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, 0x3d00
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v2
 ; GFX11-FAKE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, 0.5, v2
@@ -555,9 +624,6 @@ define <4 x half> @vec_8xf16_extract_4xf16(ptr addrspace(1) %p0, ptr addrspace(1
 ; GFX11-FAKE16-NEXT:    v_pack_b32_f16 v0, v2, v1
 ; GFX11-FAKE16-NEXT:    v_pack_b32_f16 v1, v3, v4
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB2_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5
-; GFX11-FAKE16-NEXT:    s_branch .LBB2_2
   %cond = icmp eq i32 %cond.arg, 0
   br i1 %cond, label %T, label %F
 
@@ -584,7 +650,7 @@ define <4 x i16> @vec_16xi16_extract_4xi16(ptr addrspace(1) %p0, ptr addrspace(1
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s16, 0
 ; SI-NEXT:    s_mov_b32 s6, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB3_4
+; SI-NEXT:    s_cbranch_scc0 .LBB3_2
 ; SI-NEXT:  ; %bb.1: ; %F
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-NEXT:    s_mov_b32 s4, s6
@@ -621,12 +687,23 @@ define <4 x i16> @vec_16xi16_extract_4xi16(ptr addrspace(1) %p0, ptr addrspace(1
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    buffer_load_ushort v2, v[2:3], s[4:7], 0 addr64 offset:30 glc
 ; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v7
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v6, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v5, v7
-; SI-NEXT:    s_cbranch_execnz .LBB3_3
-; SI-NEXT:  .LBB3_2: ; %T
+; SI-NEXT:    s_branch .LBB3_3
+; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr2
+; SI-NEXT:    ; implicit-def: $vgpr4
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:  .LBB3_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_5
+; SI-NEXT:  ; %bb.4: ; %T
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-NEXT:    s_mov_b32 s4, s6
 ; SI-NEXT:    s_mov_b32 s5, s6
@@ -666,7 +743,7 @@ define <4 x i16> @vec_16xi16_extract_4xi16(ptr addrspace(1) %p0, ptr addrspace(1
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v0
-; SI-NEXT:  .LBB3_3: ; %exit
+; SI-NEXT:  .LBB3_5: ; %exit
 ; SI-NEXT:    v_bfe_i32 v0, v3, 0, 16
 ; SI-NEXT:    v_bfe_i32 v1, v2, 0, 16
 ; SI-NEXT:    v_mov_b32_e32 v3, 0xffff8000
@@ -686,31 +763,35 @@ define <4 x i16> @vec_16xi16_extract_4xi16(ptr addrspace(1) %p0, ptr addrspace(1
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v3
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v4
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB3_4:
-; SI-NEXT:    ; implicit-def: $vgpr2
-; SI-NEXT:    ; implicit-def: $vgpr4
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    s_branch .LBB3_2
 ;
 ; GFX9-LABEL: vec_16xi16_extract_4xi16:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s16, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB3_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX9-NEXT:  ; %bb.1: ; %F
 ; GFX9-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:16 glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    ; kill: killed $vgpr2 killed $vgpr3
-; GFX9-NEXT:    s_cbranch_execnz .LBB3_3
-; GFX9-NEXT:  .LBB3_2: ; %T
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB3_3
+; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11
+; GFX9-NEXT:  .LBB3_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX9-NEXT:  ; %bb.4: ; %T
 ; GFX9-NEXT:    global_load_dwordx4 v[2:5], v[0:1], off offset:16 glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    global_load_dwordx4 v[4:7], v[0:1], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    ; kill: killed $vgpr0 killed $vgpr1
-; GFX9-NEXT:  .LBB3_3: ; %exit
+; GFX9-NEXT:  .LBB3_5: ; %exit
 ; GFX9-NEXT:    v_pk_ashrrev_i16 v0, 15, v5 op_sel_hi:[0,0]
 ; GFX9-NEXT:    s_movk_i32 s4, 0x8000
 ; GFX9-NEXT:    v_or_b32_e32 v1, 0xffff8000, v0
@@ -722,29 +803,34 @@ define <4 x i16> @vec_16xi16_extract_4xi16(ptr addrspace(1) %p0, ptr addrspace(1
 ; GFX9-NEXT:    v_perm_b32 v0, v0, v3, s4
 ; GFX9-NEXT:    v_perm_b32 v1, v2, v1, s4
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB3_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11
-; GFX9-NEXT:    s_branch .LBB3_2
 ;
 ; GFX11-TRUE16-LABEL: vec_16xi16_extract_4xi16:
 ; GFX11-TRUE16:       ; %bb.0:
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB3_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %F
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[4:7], v[2:3], off offset:16 glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[2:3], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB3_3
-; GFX11-TRUE16-NEXT:  .LBB3_2: ; %T
+; GFX11-TRUE16-NEXT:    s_branch .LBB3_3
+; GFX11-TRUE16-NEXT:  .LBB3_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
+; GFX11-TRUE16-NEXT:  .LBB3_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[0:1], off offset:16 glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[0:1], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:  .LBB3_3: ; %exit
+; GFX11-TRUE16-NEXT:  .LBB3_5: ; %exit
 ; GFX11-TRUE16-NEXT:    v_ashrrev_i16 v0.l, 15, v3.l
 ; GFX11-TRUE16-NEXT:    v_pk_ashrrev_i16 v2, 15, v2 op_sel_hi:[0,1]
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -754,29 +840,34 @@ define <4 x i16> @vec_16xi16_extract_4xi16(ptr addrspace(1) %p0, ptr addrspace(1
 ; GFX11-TRUE16-NEXT:    v_or_b16 v0.h, 0x8000, v2.h
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v1.l
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB3_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
-; GFX11-TRUE16-NEXT:    s_branch .LBB3_2
 ;
 ; GFX11-FAKE16-LABEL: vec_16xi16_extract_4xi16:
 ; GFX11-FAKE16:       ; %bb.0:
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB3_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %F
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[4:7], v[2:3], off offset:16 glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[2:3], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB3_3
-; GFX11-FAKE16-NEXT:  .LBB3_2: ; %T
+; GFX11-FAKE16-NEXT:    s_branch .LBB3_3
+; GFX11-FAKE16-NEXT:  .LBB3_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
+; GFX11-FAKE16-NEXT:  .LBB3_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[0:1], off offset:16 glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[0:1], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:  .LBB3_3: ; %exit
+; GFX11-FAKE16-NEXT:  .LBB3_5: ; %exit
 ; GFX11-FAKE16-NEXT:    v_pk_ashrrev_i16 v0, 15, v2 op_sel_hi:[0,1]
 ; GFX11-FAKE16-NEXT:    v_pk_ashrrev_i16 v1, 15, v3 op_sel_hi:[0,0]
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -791,9 +882,6 @@ define <4 x i16> @vec_16xi16_extract_4xi16(ptr addrspace(1) %p0, ptr addrspace(1
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v2, v0, 0x5040100
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v3, v1, 0x5040100
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB3_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
-; GFX11-FAKE16-NEXT:    s_branch .LBB3_2
   %cond = icmp eq i32 %cond.arg, 0
   br i1 %cond, label %T, label %F
 
@@ -820,7 +908,7 @@ define <4 x i16> @vec_16xi16_extract_4xi16_2(ptr addrspace(1) %p0, ptr addrspace
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s16, 0
 ; SI-NEXT:    s_mov_b32 s6, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB4_4
+; SI-NEXT:    s_cbranch_scc0 .LBB4_2
 ; SI-NEXT:  ; %bb.1: ; %F
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-NEXT:    s_mov_b32 s4, s6
@@ -857,12 +945,24 @@ define <4 x i16> @vec_16xi16_extract_4xi16_2(ptr addrspace(1) %p0, ptr addrspace
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    buffer_load_ushort v2, v[2:3], s[4:7], 0 addr64 offset:30 glc
 ; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    v_lshlrev_b32_e32 v8, 16, v4
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v3, v7, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v6, v8
-; SI-NEXT:    s_cbranch_execnz .LBB4_3
-; SI-NEXT:  .LBB4_2: ; %T
+; SI-NEXT:    s_branch .LBB4_3
+; SI-NEXT:  .LBB4_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr2
+; SI-NEXT:    ; implicit-def: $vgpr4
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:    ; implicit-def: $vgpr5
+; SI-NEXT:  .LBB4_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB4_5
+; SI-NEXT:  ; %bb.4: ; %T
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-NEXT:    s_mov_b32 s4, s6
 ; SI-NEXT:    s_mov_b32 s5, s6
@@ -902,7 +1002,7 @@ define <4 x i16> @vec_16xi16_extract_4xi16_2(ptr addrspace(1) %p0, ptr addrspace
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v0
-; SI-NEXT:  .LBB4_3: ; %exit
+; SI-NEXT:  .LBB4_5: ; %exit
 ; SI-NEXT:    v_bfe_i32 v0, v3, 0, 16
 ; SI-NEXT:    v_bfe_i32 v1, v5, 0, 16
 ; SI-NEXT:    v_bfe_i32 v3, v4, 0, 16
@@ -922,32 +1022,35 @@ define <4 x i16> @vec_16xi16_extract_4xi16_2(ptr addrspace(1) %p0, ptr addrspace
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
 ; SI-NEXT:    v_or_b32_e32 v1, v6, v1
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB4_4:
-; SI-NEXT:    ; implicit-def: $vgpr2
-; SI-NEXT:    ; implicit-def: $vgpr4
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    ; implicit-def: $vgpr5
-; SI-NEXT:    s_branch .LBB4_2
 ;
 ; GFX9-LABEL: vec_16xi16_extract_4xi16_2:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s16, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB4_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB4_2
 ; GFX9-NEXT:  ; %bb.1: ; %F
 ; GFX9-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:16 glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    ; kill: killed $vgpr2 killed $vgpr3
-; GFX9-NEXT:    s_cbranch_execnz .LBB4_3
-; GFX9-NEXT:  .LBB4_2: ; %T
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB4_3
+; GFX9-NEXT:  .LBB4_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11
+; GFX9-NEXT:  .LBB4_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB4_5
+; GFX9-NEXT:  ; %bb.4: ; %T
 ; GFX9-NEXT:    global_load_dwordx4 v[2:5], v[0:1], off offset:16 glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    global_load_dwordx4 v[4:7], v[0:1], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    ; kill: killed $vgpr0 killed $vgpr1
-; GFX9-NEXT:  .LBB4_3: ; %exit
+; GFX9-NEXT:  .LBB4_5: ; %exit
 ; GFX9-NEXT:    v_pk_ashrrev_i16 v0, 15, v7 op_sel_hi:[0,1]
 ; GFX9-NEXT:    s_movk_i32 s4, 0x8000
 ; GFX9-NEXT:    v_or_b32_e32 v1, 0xffff8000, v0
@@ -959,29 +1062,34 @@ define <4 x i16> @vec_16xi16_extract_4xi16_2(ptr addrspace(1) %p0, ptr addrspace
 ; GFX9-NEXT:    v_perm_b32 v0, v0, v3, s4
 ; GFX9-NEXT:    v_perm_b32 v1, v2, v1, s4
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB4_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11
-; GFX9-NEXT:    s_branch .LBB4_2
 ;
 ; GFX11-TRUE16-LABEL: vec_16xi16_extract_4xi16_2:
 ; GFX11-TRUE16:       ; %bb.0:
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB4_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB4_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %F
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[4:7], v[2:3], off offset:16 glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[2:3], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB4_3
-; GFX11-TRUE16-NEXT:  .LBB4_2: ; %T
+; GFX11-TRUE16-NEXT:    s_branch .LBB4_3
+; GFX11-TRUE16-NEXT:  .LBB4_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
+; GFX11-TRUE16-NEXT:  .LBB4_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB4_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[0:1], off offset:16 glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[0:1], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:  .LBB4_3: ; %exit
+; GFX11-TRUE16-NEXT:  .LBB4_5: ; %exit
 ; GFX11-TRUE16-NEXT:    v_pk_ashrrev_i16 v1, 15, v5 op_sel_hi:[0,1]
 ; GFX11-TRUE16-NEXT:    v_pk_ashrrev_i16 v0, 15, v4 op_sel_hi:[0,1]
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -991,29 +1099,34 @@ define <4 x i16> @vec_16xi16_extract_4xi16_2(ptr addrspace(1) %p0, ptr addrspace
 ; GFX11-TRUE16-NEXT:    v_or_b16 v0.h, 0x8000, v0.h
 ; GFX11-TRUE16-NEXT:    v_or_b16 v1.h, 0x8000, v1.h
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB4_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
-; GFX11-TRUE16-NEXT:    s_branch .LBB4_2
 ;
 ; GFX11-FAKE16-LABEL: vec_16xi16_extract_4xi16_2:
 ; GFX11-FAKE16:       ; %bb.0:
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB4_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB4_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %F
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[4:7], v[2:3], off offset:16 glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[2:3], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB4_3
-; GFX11-FAKE16-NEXT:  .LBB4_2: ; %T
+; GFX11-FAKE16-NEXT:    s_branch .LBB4_3
+; GFX11-FAKE16-NEXT:  .LBB4_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
+; GFX11-FAKE16-NEXT:  .LBB4_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB4_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[0:1], off offset:16 glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[0:1], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:  .LBB4_3: ; %exit
+; GFX11-FAKE16-NEXT:  .LBB4_5: ; %exit
 ; GFX11-FAKE16-NEXT:    v_pk_ashrrev_i16 v0, 15, v4 op_sel_hi:[0,1]
 ; GFX11-FAKE16-NEXT:    v_pk_ashrrev_i16 v1, 15, v5 op_sel_hi:[0,1]
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -1028,9 +1141,6 @@ define <4 x i16> @vec_16xi16_extract_4xi16_2(ptr addrspace(1) %p0, ptr addrspace
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v2, v0, 0x5040100
 ; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v3, v1, 0x5040100
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB4_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
-; GFX11-FAKE16-NEXT:    s_branch .LBB4_2
   %cond = icmp eq i32 %cond.arg, 0
   br i1 %cond, label %T, label %F
 
@@ -1057,7 +1167,7 @@ define <4 x half> @vec_16xf16_extract_4xf16(ptr addrspace(1) %p0, ptr addrspace(
 ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s16, 0
 ; SI-NEXT:    s_mov_b32 s6, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB5_4
+; SI-NEXT:    s_cbranch_scc0 .LBB5_2
 ; SI-NEXT:  ; %bb.1: ; %F
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-NEXT:    s_mov_b32 s4, s6
@@ -1094,12 +1204,23 @@ define <4 x half> @vec_16xf16_extract_4xf16(ptr addrspace(1) %p0, ptr addrspace(
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    buffer_load_ushort v2, v[2:3], s[4:7], 0 addr64 offset:30 glc
 ; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    s_mov_b64 s[4:5], 0
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v7
 ; SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v3, v6, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v5, v7
-; SI-NEXT:    s_cbranch_execnz .LBB5_3
-; SI-NEXT:  .LBB5_2: ; %T
+; SI-NEXT:    s_branch .LBB5_3
+; SI-NEXT:  .LBB5_2:
+; SI-NEXT:    s_mov_b64 s[4:5], -1
+; SI-NEXT:    ; implicit-def: $vgpr2
+; SI-NEXT:    ; implicit-def: $vgpr4
+; SI-NEXT:    ; implicit-def: $vgpr3
+; SI-NEXT:  .LBB5_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB5_5
+; SI-NEXT:  ; %bb.4: ; %T
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-NEXT:    s_mov_b32 s4, s6
 ; SI-NEXT:    s_mov_b32 s5, s6
@@ -1139,7 +1260,7 @@ define <4 x half> @vec_16xf16_extract_4xf16(ptr addrspace(1) %p0, ptr addrspace(
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v5
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v0
-; SI-NEXT:  .LBB5_3: ; %exit
+; SI-NEXT:  .LBB5_5: ; %exit
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v3
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v4
@@ -1157,31 +1278,35 @@ define <4 x half> @vec_16xf16_extract_4xf16(ptr addrspace(1) %p0, ptr addrspace(
 ; SI-NEXT:    v_or_b32_e32 v0, v2, v0
 ; SI-NEXT:    v_or_b32_e32 v1, v1, v5
 ; SI-NEXT:    s_setpc_b64 s[30:31]
-; SI-NEXT:  .LBB5_4:
-; SI-NEXT:    ; implicit-def: $vgpr2
-; SI-NEXT:    ; implicit-def: $vgpr4
-; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:    s_branch .LBB5_2
 ;
 ; GFX9-LABEL: vec_16xf16_extract_4xf16:
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u32 s16, 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX9-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX9-NEXT:  ; %bb.1: ; %F
 ; GFX9-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:16 glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    ; kill: killed $vgpr2 killed $vgpr3
-; GFX9-NEXT:    s_cbranch_execnz .LBB5_3
-; GFX9-NEXT:  .LBB5_2: ; %T
+; GFX9-NEXT:    s_mov_b64 s[4:5], 0
+; GFX9-NEXT:    s_branch .LBB5_3
+; GFX9-NEXT:  .LBB5_2:
+; GFX9-NEXT:    s_mov_b64 s[4:5], -1
+; GFX9-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11
+; GFX9-NEXT:  .LBB5_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX9-NEXT:  ; %bb.4: ; %T
 ; GFX9-NEXT:    global_load_dwordx4 v[2:5], v[0:1], off offset:16 glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    global_load_dwordx4 v[4:7], v[0:1], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    ; kill: killed $vgpr0 killed $vgpr1
-; GFX9-NEXT:  .LBB5_3: ; %exit
+; GFX9-NEXT:  .LBB5_5: ; %exit
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x3900
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x3d00
 ; GFX9-NEXT:    v_cmp_ge_f16_e32 vcc, 0.5, v4
@@ -1196,29 +1321,34 @@ define <4 x half> @vec_16xf16_extract_4xf16(ptr addrspace(1) %p0, ptr addrspace(
 ; GFX9-NEXT:    v_pack_b32_f16 v1, v0, v4
 ; GFX9-NEXT:    v_pack_b32_f16 v0, v2, v3
 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
-; GFX9-NEXT:  .LBB5_4:
-; GFX9-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11
-; GFX9-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-TRUE16-LABEL: vec_16xf16_extract_4xf16:
 ; GFX11-TRUE16:       ; %bb.0:
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX11-TRUE16-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %F
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[4:7], v[2:3], off offset:16 glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[2:3], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-TRUE16-NEXT:  .LBB5_2: ; %T
+; GFX11-TRUE16-NEXT:    s_branch .LBB5_3
+; GFX11-TRUE16-NEXT:  .LBB5_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
+; GFX11-TRUE16-NEXT:  .LBB5_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[0:1], off offset:16 glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[0:1], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:  .LBB5_3: ; %exit
+; GFX11-TRUE16-NEXT:  .LBB5_5: ; %exit
 ; GFX11-TRUE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, 0.5, v2.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.l, 0x3900
 ; GFX11-TRUE16-NEXT:    v_cmp_ge_f16_e64 s0, 0.5, v2.h
@@ -1231,29 +1361,34 @@ define <4 x half> @vec_16xf16_extract_4xf16(ptr addrspace(1) %p0, ptr addrspace(
 ; GFX11-TRUE16-NEXT:    v_cndmask_b16 v1.h, 0x3d00, v1.l, s1
 ; GFX11-TRUE16-NEXT:    v_cndmask_b16 v1.l, v1.l, 0x3d00, s2
 ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-TRUE16-NEXT:  .LBB5_4:
-; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
-; GFX11-TRUE16-NEXT:    s_branch .LBB5_2
 ;
 ; GFX11-FAKE16-LABEL: vec_16xf16_extract_4xf16:
 ; GFX11-FAKE16:       ; %bb.0:
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0
-; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB5_4
+; GFX11-FAKE16-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %F
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[4:7], v[2:3], off offset:16 glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[2:3], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB5_3
-; GFX11-FAKE16-NEXT:  .LBB5_2: ; %T
+; GFX11-FAKE16-NEXT:    s_branch .LBB5_3
+; GFX11-FAKE16-NEXT:  .LBB5_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
+; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
+; GFX11-FAKE16-NEXT:  .LBB5_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[0:1], off offset:16 glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[0:1], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:  .LBB5_3: ; %exit
+; GFX11-FAKE16-NEXT:  .LBB5_5: ; %exit
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, 0x3d00
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v2
 ; GFX11-FAKE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, 0.5, v2
@@ -1269,9 +1404,6 @@ define <4 x half> @vec_16xf16_extract_4xf16(ptr addrspace(1) %p0, ptr addrspace(
 ; GFX11-FAKE16-NEXT:    v_pack_b32_f16 v0, v2, v1
 ; GFX11-FAKE16-NEXT:    v_pack_b32_f16 v1, v3, v4
 ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]
-; GFX11-FAKE16-NEXT:  .LBB5_4:
-; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
-; GFX11-FAKE16-NEXT:    s_branch .LBB5_2
   %cond = icmp eq i32 %cond.arg, 0
   br i1 %cond, label %T, label %F
 
@@ -1416,6 +1548,7 @@ define amdgpu_gfx <8 x i16> @vec_16xi16_extract_8xi16_0(i1 inreg %cond, ptr addr
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    buffer_load_ushort v2, v[2:3], s[36:39], 0 addr64 offset:30 glc
 ; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    s_mov_b64 s[34:35], 0
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v4
 ; SI-NEXT:    v_lshlrev_b32_e32 v12, 16, v5
 ; SI-NEXT:    v_lshlrev_b32_e32 v3, 16, v6
@@ -1424,9 +1557,9 @@ define amdgpu_gfx <8 x i16> @vec_16xi16_extract_8xi16_0(i1 inreg %cond, ptr addr
 ; SI-NEXT:    v_or_b32_e32 v9, v9, v2
 ; SI-NEXT:    v_or_b32_e32 v3, v11, v12
 ; SI-NEXT:    v_or_b32_e32 v2, v10, v13
-; SI-NEXT:    s_cbranch_execz .LBB7_3
-; SI-NEXT:    s_branch .LBB7_4
+; SI-NEXT:    s_branch .LBB7_3
 ; SI-NEXT:  .LBB7_2:
+; SI-NEXT:    s_mov_b64 s[34:35], -1
 ; SI-NEXT:    ; implicit-def: $vgpr2
 ; SI-NEXT:    ; implicit-def: $vgpr4
 ; SI-NEXT:    ; implicit-def: $vgpr3
@@ -1435,7 +1568,12 @@ define amdgpu_gfx <8 x i16> @vec_16xi16_extract_8xi16_0(i1 inreg %cond, ptr addr
 ; SI-NEXT:    ; implicit-def: $vgpr6
 ; SI-NEXT:    ; implicit-def: $vgpr9
 ; SI-NEXT:    ; implicit-def: $vgpr7
-; SI-NEXT:  .LBB7_3: ; %T
+; SI-NEXT:  .LBB7_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; SI-NEXT:    s_cselect_b32 s34, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s34, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB7_5
+; SI-NEXT:  ; %bb.4: ; %T
 ; SI-NEXT:    s_mov_b32 s39, 0xf000
 ; SI-NEXT:    s_mov_b32 s36, s38
 ; SI-NEXT:    s_mov_b32 s37, s38
@@ -1479,7 +1617,7 @@ define amdgpu_gfx <8 x i16> @vec_16xi16_extract_8xi16_0(i1 inreg %cond, ptr addr
 ; SI-NEXT:    v_or_b32_e32 v8, v8, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v7
 ; SI-NEXT:    v_or_b32_e32 v9, v9, v0
-; SI-NEXT:  .LBB7_4: ; %exit
+; SI-NEXT:  .LBB7_5: ; %exit
 ; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v9
 ; SI-NEXT:    s_movk_i32 s34, 0x3800
 ; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v7
@@ -1530,17 +1668,23 @@ define amdgpu_gfx <8 x i16> @vec_16xi16_extract_8xi16_0(i1 inreg %cond, ptr addr
 ; GFX9-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    ; kill: killed $vgpr2 killed $vgpr3
-; GFX9-NEXT:    s_cbranch_execz .LBB7_3
-; GFX9-NEXT:    s_branch .LBB7_4
+; GFX9-NEXT:    s_mov_b64 s[34:35], 0
+; GFX9-NEXT:    s_branch .LBB7_3
 ; GFX9-NEXT:  .LBB7_2:
+; GFX9-NEXT:    s_mov_b64 s[34:35], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11
-; GFX9-NEXT:  .LBB7_3: ; %T
+; GFX9-NEXT:  .LBB7_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GFX9-NEXT:    s_cselect_b32 s34, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s34, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX9-NEXT:  ; %bb.4: ; %T
 ; GFX9-NEXT:    global_load_dwordx4 v[2:5], v[0:1], off offset:16 glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    global_load_dwordx4 v[4:7], v[0:1], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    ; kill: killed $vgpr0 killed $vgpr1
-; GFX9-NEXT:  .LBB7_4: ; %exit
+; GFX9-NEXT:  .LBB7_5: ; %exit
 ; GFX9-NEXT:    s_movk_i32 s35, 0x3801
 ; GFX9-NEXT:    s_movk_i32 s34, 0x3800
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x3900
@@ -1584,17 +1728,22 @@ define amdgpu_gfx <8 x i16> @vec_16xi16_extract_8xi16_0(i1 inreg %cond, ptr addr
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[4:7], v[2:3], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB7_3
-; GFX11-TRUE16-NEXT:    s_branch .LBB7_4
+; GFX11-TRUE16-NEXT:    s_branch .LBB7_3
 ; GFX11-TRUE16-NEXT:  .LBB7_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11
-; GFX11-TRUE16-NEXT:  .LBB7_3: ; %T
+; GFX11-TRUE16-NEXT:  .LBB7_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[0:1], off offset:16 glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[4:7], v[0:1], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:  .LBB7_4: ; %exit
+; GFX11-TRUE16-NEXT:  .LBB7_5: ; %exit
 ; GFX11-TRUE16-NEXT:    v_cmp_gt_u16_e32 vcc_lo, 0x3801, v7.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 0x3900
 ; GFX11-TRUE16-NEXT:    v_cmp_gt_u16_e64 s0, 0x3801, v6.l
@@ -1630,17 +1779,22 @@ define amdgpu_gfx <8 x i16> @vec_16xi16_extract_8xi16_0(i1 inreg %cond, ptr addr
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[2:3], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB7_3
-; GFX11-FAKE16-NEXT:    s_branch .LBB7_4
+; GFX11-FAKE16-NEXT:    s_branch .LBB7_3
 ; GFX11-FAKE16-NEXT:  .LBB7_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
-; GFX11-FAKE16-NEXT:  .LBB7_3: ; %T
+; GFX11-FAKE16-NEXT:  .LBB7_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[0:1], off offset:16 glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[0:1], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:  .LBB7_4: ; %exit
+; GFX11-FAKE16-NEXT:  .LBB7_5: ; %exit
 ; GFX11-FAKE16-NEXT:    v_cmp_gt_u16_e32 vcc_lo, 0x3801, v5
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v9, 0x3900
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, 0x3d00
@@ -1735,6 +1889,7 @@ define amdgpu_gfx <8 x half> @vec_16xf16_extract_8xf16_0(i1 inreg %cond, ptr add
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    buffer_load_ushort v2, v[2:3], s[36:39], 0 addr64 offset:30 glc
 ; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    s_mov_b64 s[34:35], 0
 ; SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v4
 ; SI-NEXT:    v_or_b32_e32 v9, v9, v13
 ; SI-NEXT:    v_lshlrev_b32_e32 v12, 16, v5
@@ -1743,9 +1898,9 @@ define amdgpu_gfx <8 x half> @vec_16xf16_extract_8xf16_0(i1 inreg %cond, ptr add
 ; SI-NEXT:    v_or_b32_e32 v3, v10, v3
 ; SI-NEXT:    v_lshlrev_b32_e32 v2, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v2, v11, v2
-; SI-NEXT:    s_cbranch_execz .LBB8_3
-; SI-NEXT:    s_branch .LBB8_4
+; SI-NEXT:    s_branch .LBB8_3
 ; SI-NEXT:  .LBB8_2:
+; SI-NEXT:    s_mov_b64 s[34:35], -1
 ; SI-NEXT:    ; implicit-def: $vgpr9
 ; SI-NEXT:    ; implicit-def: $vgpr4
 ; SI-NEXT:    ; implicit-def: $vgpr8
@@ -1754,7 +1909,12 @@ define amdgpu_gfx <8 x half> @vec_16xf16_extract_8xf16_0(i1 inreg %cond, ptr add
 ; SI-NEXT:    ; implicit-def: $vgpr7
 ; SI-NEXT:    ; implicit-def: $vgpr2
 ; SI-NEXT:    ; implicit-def: $vgpr6
-; SI-NEXT:  .LBB8_3: ; %T
+; SI-NEXT:  .LBB8_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; SI-NEXT:    s_cselect_b32 s34, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s34, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB8_5
+; SI-NEXT:  ; %bb.4: ; %T
 ; SI-NEXT:    s_mov_b32 s39, 0xf000
 ; SI-NEXT:    s_mov_b32 s36, s38
 ; SI-NEXT:    s_mov_b32 s37, s38
@@ -1798,7 +1958,7 @@ define amdgpu_gfx <8 x half> @vec_16xf16_extract_8xf16_0(i1 inreg %cond, ptr add
 ; SI-NEXT:    v_or_b32_e32 v3, v3, v1
 ; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v6
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v0
-; SI-NEXT:  .LBB8_4: ; %exit
+; SI-NEXT:  .LBB8_5: ; %exit
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v6, v6
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
@@ -1848,17 +2008,23 @@ define amdgpu_gfx <8 x half> @vec_16xf16_extract_8xf16_0(i1 inreg %cond, ptr add
 ; GFX9-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    ; kill: killed $vgpr2 killed $vgpr3
-; GFX9-NEXT:    s_cbranch_execz .LBB8_3
-; GFX9-NEXT:    s_branch .LBB8_4
+; GFX9-NEXT:    s_mov_b64 s[34:35], 0
+; GFX9-NEXT:    s_branch .LBB8_3
 ; GFX9-NEXT:  .LBB8_2:
+; GFX9-NEXT:    s_mov_b64 s[34:35], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11
-; GFX9-NEXT:  .LBB8_3: ; %T
+; GFX9-NEXT:  .LBB8_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GFX9-NEXT:    s_cselect_b32 s34, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s34, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB8_5
+; GFX9-NEXT:  ; %bb.4: ; %T
 ; GFX9-NEXT:    global_load_dwordx4 v[2:5], v[0:1], off offset:16 glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    global_load_dwordx4 v[4:7], v[0:1], off glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    ; kill: killed $vgpr0 killed $vgpr1
-; GFX9-NEXT:  .LBB8_4: ; %exit
+; GFX9-NEXT:  .LBB8_5: ; %exit
 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x3800
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x3900
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0x3d00
@@ -1900,17 +2066,22 @@ define amdgpu_gfx <8 x half> @vec_16xf16_extract_8xf16_0(i1 inreg %cond, ptr add
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[4:7], v[2:3], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB8_3
-; GFX11-TRUE16-NEXT:    s_branch .LBB8_4
+; GFX11-TRUE16-NEXT:    s_branch .LBB8_3
 ; GFX11-TRUE16-NEXT:  .LBB8_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s0, -1
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11
-; GFX11-TRUE16-NEXT:  .LBB8_3: ; %T
+; GFX11-TRUE16-NEXT:  .LBB8_3: ; %Flow
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB8_5
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[2:5], v[0:1], off offset:16 glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    global_load_b128 v[4:7], v[0:1], off glc dlc
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-TRUE16-NEXT:  .LBB8_4: ; %exit
+; GFX11-TRUE16-NEXT:  .LBB8_5: ; %exit
 ; GFX11-TRUE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, 0.5, v7.l
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 0x3900
 ; GFX11-TRUE16-NEXT:    v_cmp_ge_f16_e64 s0, 0.5, v6.l
@@ -1946,17 +2117,22 @@ define amdgpu_gfx <8 x half> @vec_16xf16_extract_8xf16_0(i1 inreg %cond, ptr add
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[2:3], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB8_3
-; GFX11-FAKE16-NEXT:    s_branch .LBB8_4
+; GFX11-FAKE16-NEXT:    s_branch .LBB8_3
 ; GFX11-FAKE16-NEXT:  .LBB8_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s0, -1
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9
-; GFX11-FAKE16-NEXT:  .LBB8_3: ; %T
+; GFX11-FAKE16-NEXT:  .LBB8_3: ; %Flow
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB8_5
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %T
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[0:1], off offset:16 glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    global_load_b128 v[2:5], v[0:1], off glc dlc
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-FAKE16-NEXT:  .LBB8_4: ; %exit
+; GFX11-FAKE16-NEXT:  .LBB8_5: ; %exit
 ; GFX11-FAKE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, 0.5, v5
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v9, 0x3900
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, 0x3d00

diff  --git a/llvm/test/CodeGen/AMDGPU/extract_vector_dynelt.ll b/llvm/test/CodeGen/AMDGPU/extract_vector_dynelt.ll
index c381b1806acdf..732d112087e49 100644
--- a/llvm/test/CodeGen/AMDGPU/extract_vector_dynelt.ll
+++ b/llvm/test/CodeGen/AMDGPU/extract_vector_dynelt.ll
@@ -2054,25 +2054,24 @@ define amdgpu_kernel void @bit4_extelt(ptr addrspace(1) %out, i32 %sel) {
 ; GCN-O0-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24
 ; GCN-O0-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-O0-NEXT:    s_load_dword s0, s[4:5], 0x2c
+; GCN-O0-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x24
+; GCN-O0-NEXT:    s_load_dword s1, s[4:5], 0x2c
 ; GCN-O0-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-O0-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24
-; GCN-O0-NEXT:    s_load_dword s3, s[4:5], 0x2c
-; GCN-O0-NEXT:    s_mov_b32 s2, 0xffff
+; GCN-O0-NEXT:    s_mov_b32 s0, 0xffff
 ; GCN-O0-NEXT:    s_mov_b32 s4, 0x100
-; GCN-O0-NEXT:    s_and_b32 s2, s2, s4
+; GCN-O0-NEXT:    s_and_b32 s0, s0, s4
 ; GCN-O0-NEXT:    s_mov_b32 s5, 16
 ; GCN-O0-NEXT:    s_lshl_b32 s4, s4, s5
-; GCN-O0-NEXT:    s_or_b32 s2, s2, s4
+; GCN-O0-NEXT:    s_or_b32 s0, s0, s4
 ; GCN-O0-NEXT:    s_mov_b32 s4, 3
-; GCN-O0-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-O0-NEXT:    s_lshl_b32 s3, s3, s4
-; GCN-O0-NEXT:    s_lshr_b32 s2, s2, s3
-; GCN-O0-NEXT:    s_and_b32 s2, 1, s2
-; GCN-O0-NEXT:    s_cmp_eq_u32 s2, 1
-; GCN-O0-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN-O0-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[2:3]
-; GCN-O0-NEXT:    v_mov_b32_e32 v0, s0
-; GCN-O0-NEXT:    v_mov_b32_e32 v1, s1
+; GCN-O0-NEXT:    s_lshl_b32 s1, s1, s4
+; GCN-O0-NEXT:    s_lshr_b32 s0, s0, s1
+; GCN-O0-NEXT:    s_and_b32 s0, 1, s0
+; GCN-O0-NEXT:    s_cmp_eq_u32 s0, 1
+; GCN-O0-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-O0-NEXT:    v_mov_b32_e32 v0, s2
+; GCN-O0-NEXT:    v_mov_b32_e32 v1, s3
+; GCN-O0-NEXT:    v_mov_b32_e32 v2, s0
 ; GCN-O0-NEXT:    flat_store_dword v[0:1], v2
 ; GCN-O0-NEXT:    s_endpgm
 entry:
@@ -2089,10 +2088,8 @@ define amdgpu_kernel void @bit128_extelt(ptr addrspace(1) %out, i32 %sel) {
 ; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_cmp_lg_u32 s2, 1
-; GCN-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; GCN-NEXT:    s_cselect_b32 s3, 1, 0
 ; GCN-NEXT:    s_cmp_lg_u32 s2, 2
-; GCN-NEXT:    v_readfirstlane_b32 s3, v0
 ; GCN-NEXT:    s_cselect_b32 s3, s3, 1
 ; GCN-NEXT:    s_cmp_lg_u32 s2, 3
 ; GCN-NEXT:    s_cselect_b32 s3, s3, 0

diff  --git a/llvm/test/CodeGen/AMDGPU/fcmp.f16.ll b/llvm/test/CodeGen/AMDGPU/fcmp.f16.ll
index e78a0fd342e53..b63c5cf8b38d6 100644
--- a/llvm/test/CodeGen/AMDGPU/fcmp.f16.ll
+++ b/llvm/test/CodeGen/AMDGPU/fcmp.f16.ll
@@ -29,7 +29,9 @@ define amdgpu_kernel void @fcmp_f16_lt(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cmp_lt_f32_e32 vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -53,7 +55,9 @@ define amdgpu_kernel void @fcmp_f16_lt(
 ; VI-NEXT:    s_mov_b32 s4, s0
 ; VI-NEXT:    s_mov_b32 s5, s1
 ; VI-NEXT:    v_cmp_lt_f16_e32 vcc, v0, v1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -78,7 +82,10 @@ define amdgpu_kernel void @fcmp_f16_lt(
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-TRUE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v0.l, v0.h
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
@@ -103,7 +110,10 @@ define amdgpu_kernel void @fcmp_f16_lt(
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-FAKE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v0, v1
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
@@ -191,7 +201,9 @@ define amdgpu_kernel void @fcmp_f16_lt_abs(
 ; SI-NEXT:    v_cvt_f32_f16_e64 v0, |v0|
 ; SI-NEXT:    v_cvt_f32_f16_e64 v1, |v1|
 ; SI-NEXT:    v_cmp_lt_f32_e32 vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -215,7 +227,9 @@ define amdgpu_kernel void @fcmp_f16_lt_abs(
 ; VI-NEXT:    s_mov_b32 s4, s0
 ; VI-NEXT:    s_mov_b32 s5, s1
 ; VI-NEXT:    v_cmp_lt_f16_e64 s[0:1], |v0|, |v1|
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[0:1]
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -240,8 +254,10 @@ define amdgpu_kernel void @fcmp_f16_lt_abs(
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-TRUE16-NEXT:    v_cmp_lt_f16_e64 s2, |v0.l|, |v0.h|
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s2
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
@@ -266,8 +282,10 @@ define amdgpu_kernel void @fcmp_f16_lt_abs(
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-FAKE16-NEXT:    v_cmp_lt_f16_e64 s2, |v0|, |v1|
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s2
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
@@ -363,7 +381,9 @@ define amdgpu_kernel void @fcmp_f16_eq(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -387,7 +407,9 @@ define amdgpu_kernel void @fcmp_f16_eq(
 ; VI-NEXT:    s_mov_b32 s4, s0
 ; VI-NEXT:    s_mov_b32 s5, s1
 ; VI-NEXT:    v_cmp_eq_f16_e32 vcc, v0, v1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -412,7 +434,10 @@ define amdgpu_kernel void @fcmp_f16_eq(
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-TRUE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v0.l, v0.h
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
@@ -437,7 +462,10 @@ define amdgpu_kernel void @fcmp_f16_eq(
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-FAKE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v0, v1
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
@@ -525,7 +553,9 @@ define amdgpu_kernel void @fcmp_f16_le(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cmp_le_f32_e32 vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -549,7 +579,9 @@ define amdgpu_kernel void @fcmp_f16_le(
 ; VI-NEXT:    s_mov_b32 s4, s0
 ; VI-NEXT:    s_mov_b32 s5, s1
 ; VI-NEXT:    v_cmp_le_f16_e32 vcc, v0, v1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -574,7 +606,10 @@ define amdgpu_kernel void @fcmp_f16_le(
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-TRUE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v0.l, v0.h
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
@@ -599,7 +634,10 @@ define amdgpu_kernel void @fcmp_f16_le(
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-FAKE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v0, v1
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
@@ -687,7 +725,9 @@ define amdgpu_kernel void @fcmp_f16_gt(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cmp_gt_f32_e32 vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -711,7 +751,9 @@ define amdgpu_kernel void @fcmp_f16_gt(
 ; VI-NEXT:    s_mov_b32 s4, s0
 ; VI-NEXT:    s_mov_b32 s5, s1
 ; VI-NEXT:    v_cmp_gt_f16_e32 vcc, v0, v1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -736,7 +778,10 @@ define amdgpu_kernel void @fcmp_f16_gt(
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-TRUE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v0.l, v0.h
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
@@ -761,7 +806,10 @@ define amdgpu_kernel void @fcmp_f16_gt(
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-FAKE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v0, v1
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
@@ -849,7 +897,9 @@ define amdgpu_kernel void @fcmp_f16_lg(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cmp_lg_f32_e32 vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -873,7 +923,9 @@ define amdgpu_kernel void @fcmp_f16_lg(
 ; VI-NEXT:    s_mov_b32 s4, s0
 ; VI-NEXT:    s_mov_b32 s5, s1
 ; VI-NEXT:    v_cmp_lg_f16_e32 vcc, v0, v1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -898,7 +950,10 @@ define amdgpu_kernel void @fcmp_f16_lg(
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v0.l, v0.h
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
@@ -923,7 +978,10 @@ define amdgpu_kernel void @fcmp_f16_lg(
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v0, v1
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
@@ -1011,7 +1069,9 @@ define amdgpu_kernel void @fcmp_f16_ge(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cmp_ge_f32_e32 vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -1035,7 +1095,9 @@ define amdgpu_kernel void @fcmp_f16_ge(
 ; VI-NEXT:    s_mov_b32 s4, s0
 ; VI-NEXT:    s_mov_b32 s5, s1
 ; VI-NEXT:    v_cmp_ge_f16_e32 vcc, v0, v1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -1060,7 +1122,10 @@ define amdgpu_kernel void @fcmp_f16_ge(
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-TRUE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v0.l, v0.h
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
@@ -1085,7 +1150,10 @@ define amdgpu_kernel void @fcmp_f16_ge(
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-FAKE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v0, v1
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
@@ -1173,7 +1241,9 @@ define amdgpu_kernel void @fcmp_f16_o(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cmp_o_f32_e32 vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -1197,7 +1267,9 @@ define amdgpu_kernel void @fcmp_f16_o(
 ; VI-NEXT:    s_mov_b32 s4, s0
 ; VI-NEXT:    s_mov_b32 s5, s1
 ; VI-NEXT:    v_cmp_o_f16_e32 vcc, v0, v1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -1222,7 +1294,10 @@ define amdgpu_kernel void @fcmp_f16_o(
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-TRUE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v0.l, v0.h
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
@@ -1247,7 +1322,10 @@ define amdgpu_kernel void @fcmp_f16_o(
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-FAKE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v0, v1
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
@@ -1335,7 +1413,9 @@ define amdgpu_kernel void @fcmp_f16_u(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cmp_u_f32_e32 vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -1359,7 +1439,9 @@ define amdgpu_kernel void @fcmp_f16_u(
 ; VI-NEXT:    s_mov_b32 s4, s0
 ; VI-NEXT:    s_mov_b32 s5, s1
 ; VI-NEXT:    v_cmp_u_f16_e32 vcc, v0, v1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -1384,7 +1466,10 @@ define amdgpu_kernel void @fcmp_f16_u(
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-TRUE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v0.l, v0.h
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
@@ -1409,7 +1494,10 @@ define amdgpu_kernel void @fcmp_f16_u(
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-FAKE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v0, v1
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
@@ -1497,7 +1585,9 @@ define amdgpu_kernel void @fcmp_f16_nge(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cmp_nge_f32_e32 vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -1521,7 +1611,9 @@ define amdgpu_kernel void @fcmp_f16_nge(
 ; VI-NEXT:    s_mov_b32 s4, s0
 ; VI-NEXT:    s_mov_b32 s5, s1
 ; VI-NEXT:    v_cmp_nge_f16_e32 vcc, v0, v1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -1546,7 +1638,10 @@ define amdgpu_kernel void @fcmp_f16_nge(
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-TRUE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v0.l, v0.h
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
@@ -1571,7 +1666,10 @@ define amdgpu_kernel void @fcmp_f16_nge(
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-FAKE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v0, v1
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
@@ -1659,7 +1757,9 @@ define amdgpu_kernel void @fcmp_f16_nlg(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cmp_nlg_f32_e32 vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -1683,7 +1783,9 @@ define amdgpu_kernel void @fcmp_f16_nlg(
 ; VI-NEXT:    s_mov_b32 s4, s0
 ; VI-NEXT:    s_mov_b32 s5, s1
 ; VI-NEXT:    v_cmp_nlg_f16_e32 vcc, v0, v1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -1708,7 +1810,10 @@ define amdgpu_kernel void @fcmp_f16_nlg(
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-TRUE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v0.l, v0.h
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
@@ -1733,7 +1838,10 @@ define amdgpu_kernel void @fcmp_f16_nlg(
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-FAKE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v0, v1
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
@@ -1821,7 +1929,9 @@ define amdgpu_kernel void @fcmp_f16_ngt(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cmp_ngt_f32_e32 vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -1845,7 +1955,9 @@ define amdgpu_kernel void @fcmp_f16_ngt(
 ; VI-NEXT:    s_mov_b32 s4, s0
 ; VI-NEXT:    s_mov_b32 s5, s1
 ; VI-NEXT:    v_cmp_ngt_f16_e32 vcc, v0, v1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -1870,7 +1982,10 @@ define amdgpu_kernel void @fcmp_f16_ngt(
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-TRUE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v0.l, v0.h
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
@@ -1895,7 +2010,10 @@ define amdgpu_kernel void @fcmp_f16_ngt(
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-FAKE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v0, v1
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
@@ -1983,7 +2101,9 @@ define amdgpu_kernel void @fcmp_f16_nle(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cmp_nle_f32_e32 vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -2007,7 +2127,9 @@ define amdgpu_kernel void @fcmp_f16_nle(
 ; VI-NEXT:    s_mov_b32 s4, s0
 ; VI-NEXT:    s_mov_b32 s5, s1
 ; VI-NEXT:    v_cmp_nle_f16_e32 vcc, v0, v1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -2032,7 +2154,10 @@ define amdgpu_kernel void @fcmp_f16_nle(
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v0.l, v0.h
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
@@ -2057,7 +2182,10 @@ define amdgpu_kernel void @fcmp_f16_nle(
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v0, v1
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
@@ -2145,7 +2273,9 @@ define amdgpu_kernel void @fcmp_f16_neq(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cmp_neq_f32_e32 vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -2169,7 +2299,9 @@ define amdgpu_kernel void @fcmp_f16_neq(
 ; VI-NEXT:    s_mov_b32 s4, s0
 ; VI-NEXT:    s_mov_b32 s5, s1
 ; VI-NEXT:    v_cmp_neq_f16_e32 vcc, v0, v1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -2194,7 +2326,10 @@ define amdgpu_kernel void @fcmp_f16_neq(
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-TRUE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v0.l, v0.h
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
@@ -2219,7 +2354,10 @@ define amdgpu_kernel void @fcmp_f16_neq(
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-FAKE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v0, v1
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
@@ -2307,7 +2445,9 @@ define amdgpu_kernel void @fcmp_f16_nlt(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cmp_nlt_f32_e32 vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -2331,7 +2471,9 @@ define amdgpu_kernel void @fcmp_f16_nlt(
 ; VI-NEXT:    s_mov_b32 s4, s0
 ; VI-NEXT:    s_mov_b32 s5, s1
 ; VI-NEXT:    v_cmp_nlt_f16_e32 vcc, v0, v1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -2356,7 +2498,10 @@ define amdgpu_kernel void @fcmp_f16_nlt(
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-TRUE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v0.l, v0.h
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
@@ -2381,7 +2526,10 @@ define amdgpu_kernel void @fcmp_f16_nlt(
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
 ; GFX11-FAKE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v0, v1
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
@@ -2473,9 +2621,13 @@ define amdgpu_kernel void @fcmp_v2f16_lt(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
 ; SI-NEXT:    v_cmp_lt_f32_e32 vcc, v1, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; SI-NEXT:    v_cmp_lt_f32_e32 vcc, v3, v2
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    v_cmp_lt_f32_e64 s[0:1], v3, v2
+; SI-NEXT:    s_cselect_b32 s2, -1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s2
+; SI-NEXT:    v_mov_b32_e32 v1, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -2501,70 +2653,80 @@ define amdgpu_kernel void @fcmp_v2f16_lt(
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; VI-NEXT:    v_cmp_lt_f16_e32 vcc, v1, v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; VI-NEXT:    v_cmp_lt_f16_e32 vcc, v3, v2
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; VI-NEXT:    v_cmp_lt_f16_e64 s[0:1], v3, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, -1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s2
+; VI-NEXT:    v_mov_b32_e32 v1, s0
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX11-TRUE16-LABEL: fcmp_v2f16_lt:
 ; GFX11-TRUE16:       ; %bb.0: ; %entry
 ; GFX11-TRUE16-NEXT:    s_clause 0x1
-; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-TRUE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v1.l, v0.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v3.l, v2.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_cmp_lt_f16_e64 s0, v3.l, v2.l
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
 ; GFX11-FAKE16-LABEL: fcmp_v2f16_lt:
 ; GFX11-FAKE16:       ; %bb.0: ; %entry
 ; GFX11-FAKE16-NEXT:    s_clause 0x1
-; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v1, v0
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-FAKE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v3, v2
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_cmp_lt_f16_e64 s0, v3, v2
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
 ; GFX12-TRUE16-LABEL: fcmp_v2f16_lt:
@@ -2668,9 +2830,13 @@ define amdgpu_kernel void @fcmp_v2f16_eq(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
 ; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v1, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v3, v2
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    v_cmp_eq_f32_e64 s[0:1], v3, v2
+; SI-NEXT:    s_cselect_b32 s2, -1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s2
+; SI-NEXT:    v_mov_b32_e32 v1, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -2696,70 +2862,80 @@ define amdgpu_kernel void @fcmp_v2f16_eq(
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; VI-NEXT:    v_cmp_eq_f16_e32 vcc, v1, v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; VI-NEXT:    v_cmp_eq_f16_e32 vcc, v3, v2
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; VI-NEXT:    v_cmp_eq_f16_e64 s[0:1], v3, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, -1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s2
+; VI-NEXT:    v_mov_b32_e32 v1, s0
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX11-TRUE16-LABEL: fcmp_v2f16_eq:
 ; GFX11-TRUE16:       ; %bb.0: ; %entry
 ; GFX11-TRUE16-NEXT:    s_clause 0x1
-; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-TRUE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v1.l, v0.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v3.l, v2.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_cmp_eq_f16_e64 s0, v3.l, v2.l
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
 ; GFX11-FAKE16-LABEL: fcmp_v2f16_eq:
 ; GFX11-FAKE16:       ; %bb.0: ; %entry
 ; GFX11-FAKE16-NEXT:    s_clause 0x1
-; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v1, v0
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-FAKE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v3, v2
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_cmp_eq_f16_e64 s0, v3, v2
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
 ; GFX12-TRUE16-LABEL: fcmp_v2f16_eq:
@@ -2862,9 +3038,13 @@ define amdgpu_kernel void @fcmp_v2f16_le(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
 ; SI-NEXT:    v_cmp_le_f32_e32 vcc, v1, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; SI-NEXT:    v_cmp_le_f32_e32 vcc, v3, v2
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    v_cmp_le_f32_e64 s[0:1], v3, v2
+; SI-NEXT:    s_cselect_b32 s2, -1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s2
+; SI-NEXT:    v_mov_b32_e32 v1, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -2890,70 +3070,80 @@ define amdgpu_kernel void @fcmp_v2f16_le(
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; VI-NEXT:    v_cmp_le_f16_e32 vcc, v1, v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; VI-NEXT:    v_cmp_le_f16_e32 vcc, v3, v2
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; VI-NEXT:    v_cmp_le_f16_e64 s[0:1], v3, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, -1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s2
+; VI-NEXT:    v_mov_b32_e32 v1, s0
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX11-TRUE16-LABEL: fcmp_v2f16_le:
 ; GFX11-TRUE16:       ; %bb.0: ; %entry
 ; GFX11-TRUE16-NEXT:    s_clause 0x1
-; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-TRUE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v1.l, v0.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v3.l, v2.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_cmp_le_f16_e64 s0, v3.l, v2.l
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
 ; GFX11-FAKE16-LABEL: fcmp_v2f16_le:
 ; GFX11-FAKE16:       ; %bb.0: ; %entry
 ; GFX11-FAKE16-NEXT:    s_clause 0x1
-; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v1, v0
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-FAKE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v3, v2
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_cmp_le_f16_e64 s0, v3, v2
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
 ; GFX12-TRUE16-LABEL: fcmp_v2f16_le:
@@ -3056,9 +3246,13 @@ define amdgpu_kernel void @fcmp_v2f16_gt(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
 ; SI-NEXT:    v_cmp_gt_f32_e32 vcc, v1, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; SI-NEXT:    v_cmp_gt_f32_e32 vcc, v3, v2
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    v_cmp_gt_f32_e64 s[0:1], v3, v2
+; SI-NEXT:    s_cselect_b32 s2, -1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s2
+; SI-NEXT:    v_mov_b32_e32 v1, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -3084,70 +3278,80 @@ define amdgpu_kernel void @fcmp_v2f16_gt(
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; VI-NEXT:    v_cmp_gt_f16_e32 vcc, v1, v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; VI-NEXT:    v_cmp_gt_f16_e32 vcc, v3, v2
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; VI-NEXT:    v_cmp_gt_f16_e64 s[0:1], v3, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, -1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s2
+; VI-NEXT:    v_mov_b32_e32 v1, s0
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX11-TRUE16-LABEL: fcmp_v2f16_gt:
 ; GFX11-TRUE16:       ; %bb.0: ; %entry
 ; GFX11-TRUE16-NEXT:    s_clause 0x1
-; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-TRUE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v1.l, v0.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v3.l, v2.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_cmp_gt_f16_e64 s0, v3.l, v2.l
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
 ; GFX11-FAKE16-LABEL: fcmp_v2f16_gt:
 ; GFX11-FAKE16:       ; %bb.0: ; %entry
 ; GFX11-FAKE16-NEXT:    s_clause 0x1
-; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v1, v0
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-FAKE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v3, v2
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_cmp_gt_f16_e64 s0, v3, v2
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
 ; GFX12-TRUE16-LABEL: fcmp_v2f16_gt:
@@ -3251,9 +3455,13 @@ define amdgpu_kernel void @fcmp_v2f16_lg(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
 ; SI-NEXT:    v_cmp_lg_f32_e32 vcc, v1, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; SI-NEXT:    v_cmp_lg_f32_e32 vcc, v3, v2
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    v_cmp_lg_f32_e64 s[0:1], v3, v2
+; SI-NEXT:    s_cselect_b32 s2, -1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s2
+; SI-NEXT:    v_mov_b32_e32 v1, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -3279,70 +3487,80 @@ define amdgpu_kernel void @fcmp_v2f16_lg(
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; VI-NEXT:    v_cmp_lg_f16_e32 vcc, v1, v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; VI-NEXT:    v_cmp_lg_f16_e32 vcc, v3, v2
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; VI-NEXT:    v_cmp_lg_f16_e64 s[0:1], v3, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, -1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s2
+; VI-NEXT:    v_mov_b32_e32 v1, s0
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX11-TRUE16-LABEL: fcmp_v2f16_lg:
 ; GFX11-TRUE16:       ; %bb.0: ; %entry
 ; GFX11-TRUE16-NEXT:    s_clause 0x1
-; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v1.l, v0.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v3.l, v2.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e64 s0, v3.l, v2.l
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
 ; GFX11-FAKE16-LABEL: fcmp_v2f16_lg:
 ; GFX11-FAKE16:       ; %bb.0: ; %entry
 ; GFX11-FAKE16-NEXT:    s_clause 0x1
-; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v1, v0
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v3, v2
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e64 s0, v3, v2
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
 ; GFX12-TRUE16-LABEL: fcmp_v2f16_lg:
@@ -3446,9 +3664,13 @@ define amdgpu_kernel void @fcmp_v2f16_ge(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
 ; SI-NEXT:    v_cmp_ge_f32_e32 vcc, v1, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; SI-NEXT:    v_cmp_ge_f32_e32 vcc, v3, v2
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    v_cmp_ge_f32_e64 s[0:1], v3, v2
+; SI-NEXT:    s_cselect_b32 s2, -1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s2
+; SI-NEXT:    v_mov_b32_e32 v1, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -3474,70 +3696,80 @@ define amdgpu_kernel void @fcmp_v2f16_ge(
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; VI-NEXT:    v_cmp_ge_f16_e32 vcc, v1, v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; VI-NEXT:    v_cmp_ge_f16_e32 vcc, v3, v2
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; VI-NEXT:    v_cmp_ge_f16_e64 s[0:1], v3, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, -1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s2
+; VI-NEXT:    v_mov_b32_e32 v1, s0
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX11-TRUE16-LABEL: fcmp_v2f16_ge:
 ; GFX11-TRUE16:       ; %bb.0: ; %entry
 ; GFX11-TRUE16-NEXT:    s_clause 0x1
-; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-TRUE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v1.l, v0.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v3.l, v2.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_cmp_ge_f16_e64 s0, v3.l, v2.l
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
 ; GFX11-FAKE16-LABEL: fcmp_v2f16_ge:
 ; GFX11-FAKE16:       ; %bb.0: ; %entry
 ; GFX11-FAKE16-NEXT:    s_clause 0x1
-; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v1, v0
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-FAKE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v3, v2
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_cmp_ge_f16_e64 s0, v3, v2
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
 ; GFX12-TRUE16-LABEL: fcmp_v2f16_ge:
@@ -3641,9 +3873,13 @@ define amdgpu_kernel void @fcmp_v2f16_o(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
 ; SI-NEXT:    v_cmp_o_f32_e32 vcc, v1, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; SI-NEXT:    v_cmp_o_f32_e32 vcc, v3, v2
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    v_cmp_o_f32_e64 s[0:1], v3, v2
+; SI-NEXT:    s_cselect_b32 s2, -1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s2
+; SI-NEXT:    v_mov_b32_e32 v1, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -3669,70 +3905,80 @@ define amdgpu_kernel void @fcmp_v2f16_o(
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; VI-NEXT:    v_cmp_o_f16_e32 vcc, v1, v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; VI-NEXT:    v_cmp_o_f16_e32 vcc, v3, v2
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; VI-NEXT:    v_cmp_o_f16_e64 s[0:1], v3, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, -1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s2
+; VI-NEXT:    v_mov_b32_e32 v1, s0
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX11-TRUE16-LABEL: fcmp_v2f16_o:
 ; GFX11-TRUE16:       ; %bb.0: ; %entry
 ; GFX11-TRUE16-NEXT:    s_clause 0x1
-; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-TRUE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v1.l, v0.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v3.l, v2.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_cmp_o_f16_e64 s0, v3.l, v2.l
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
 ; GFX11-FAKE16-LABEL: fcmp_v2f16_o:
 ; GFX11-FAKE16:       ; %bb.0: ; %entry
 ; GFX11-FAKE16-NEXT:    s_clause 0x1
-; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v1, v0
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-FAKE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v3, v2
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_cmp_o_f16_e64 s0, v3, v2
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
 ; GFX12-TRUE16-LABEL: fcmp_v2f16_o:
@@ -3836,9 +4082,13 @@ define amdgpu_kernel void @fcmp_v2f16_u(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
 ; SI-NEXT:    v_cmp_u_f32_e32 vcc, v1, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; SI-NEXT:    v_cmp_u_f32_e32 vcc, v3, v2
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    v_cmp_u_f32_e64 s[0:1], v3, v2
+; SI-NEXT:    s_cselect_b32 s2, -1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s2
+; SI-NEXT:    v_mov_b32_e32 v1, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -3864,70 +4114,80 @@ define amdgpu_kernel void @fcmp_v2f16_u(
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; VI-NEXT:    v_cmp_u_f16_e32 vcc, v1, v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; VI-NEXT:    v_cmp_u_f16_e32 vcc, v3, v2
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; VI-NEXT:    v_cmp_u_f16_e64 s[0:1], v3, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, -1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s2
+; VI-NEXT:    v_mov_b32_e32 v1, s0
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX11-TRUE16-LABEL: fcmp_v2f16_u:
 ; GFX11-TRUE16:       ; %bb.0: ; %entry
 ; GFX11-TRUE16-NEXT:    s_clause 0x1
-; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-TRUE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v1.l, v0.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v3.l, v2.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_cmp_u_f16_e64 s0, v3.l, v2.l
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
 ; GFX11-FAKE16-LABEL: fcmp_v2f16_u:
 ; GFX11-FAKE16:       ; %bb.0: ; %entry
 ; GFX11-FAKE16-NEXT:    s_clause 0x1
-; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v1, v0
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-FAKE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v3, v2
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_cmp_u_f16_e64 s0, v3, v2
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
 ; GFX12-TRUE16-LABEL: fcmp_v2f16_u:
@@ -4030,9 +4290,13 @@ define amdgpu_kernel void @fcmp_v2f16_nge(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
 ; SI-NEXT:    v_cmp_nge_f32_e32 vcc, v1, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; SI-NEXT:    v_cmp_nge_f32_e32 vcc, v3, v2
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    v_cmp_nge_f32_e64 s[0:1], v3, v2
+; SI-NEXT:    s_cselect_b32 s2, -1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s2
+; SI-NEXT:    v_mov_b32_e32 v1, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -4058,70 +4322,80 @@ define amdgpu_kernel void @fcmp_v2f16_nge(
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; VI-NEXT:    v_cmp_nge_f16_e32 vcc, v1, v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; VI-NEXT:    v_cmp_nge_f16_e32 vcc, v3, v2
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; VI-NEXT:    v_cmp_nge_f16_e64 s[0:1], v3, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, -1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s2
+; VI-NEXT:    v_mov_b32_e32 v1, s0
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX11-TRUE16-LABEL: fcmp_v2f16_nge:
 ; GFX11-TRUE16:       ; %bb.0: ; %entry
 ; GFX11-TRUE16-NEXT:    s_clause 0x1
-; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-TRUE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v1.l, v0.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v3.l, v2.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_cmp_nge_f16_e64 s0, v3.l, v2.l
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
 ; GFX11-FAKE16-LABEL: fcmp_v2f16_nge:
 ; GFX11-FAKE16:       ; %bb.0: ; %entry
 ; GFX11-FAKE16-NEXT:    s_clause 0x1
-; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v1, v0
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-FAKE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v3, v2
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_cmp_nge_f16_e64 s0, v3, v2
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
 ; GFX12-TRUE16-LABEL: fcmp_v2f16_nge:
@@ -4224,9 +4498,13 @@ define amdgpu_kernel void @fcmp_v2f16_nlg(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
 ; SI-NEXT:    v_cmp_nlg_f32_e32 vcc, v1, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; SI-NEXT:    v_cmp_nlg_f32_e32 vcc, v3, v2
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    v_cmp_nlg_f32_e64 s[0:1], v3, v2
+; SI-NEXT:    s_cselect_b32 s2, -1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s2
+; SI-NEXT:    v_mov_b32_e32 v1, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -4252,70 +4530,80 @@ define amdgpu_kernel void @fcmp_v2f16_nlg(
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; VI-NEXT:    v_cmp_nlg_f16_e32 vcc, v1, v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; VI-NEXT:    v_cmp_nlg_f16_e32 vcc, v3, v2
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; VI-NEXT:    v_cmp_nlg_f16_e64 s[0:1], v3, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, -1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s2
+; VI-NEXT:    v_mov_b32_e32 v1, s0
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX11-TRUE16-LABEL: fcmp_v2f16_nlg:
 ; GFX11-TRUE16:       ; %bb.0: ; %entry
 ; GFX11-TRUE16-NEXT:    s_clause 0x1
-; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-TRUE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v1.l, v0.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v3.l, v2.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_cmp_nlg_f16_e64 s0, v3.l, v2.l
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
 ; GFX11-FAKE16-LABEL: fcmp_v2f16_nlg:
 ; GFX11-FAKE16:       ; %bb.0: ; %entry
 ; GFX11-FAKE16-NEXT:    s_clause 0x1
-; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v1, v0
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-FAKE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v3, v2
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_cmp_nlg_f16_e64 s0, v3, v2
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
 ; GFX12-TRUE16-LABEL: fcmp_v2f16_nlg:
@@ -4419,9 +4707,13 @@ define amdgpu_kernel void @fcmp_v2f16_ngt(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
 ; SI-NEXT:    v_cmp_ngt_f32_e32 vcc, v1, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; SI-NEXT:    v_cmp_ngt_f32_e32 vcc, v3, v2
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    v_cmp_ngt_f32_e64 s[0:1], v3, v2
+; SI-NEXT:    s_cselect_b32 s2, -1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s2
+; SI-NEXT:    v_mov_b32_e32 v1, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -4447,70 +4739,80 @@ define amdgpu_kernel void @fcmp_v2f16_ngt(
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; VI-NEXT:    v_cmp_ngt_f16_e32 vcc, v1, v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; VI-NEXT:    v_cmp_ngt_f16_e32 vcc, v3, v2
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; VI-NEXT:    v_cmp_ngt_f16_e64 s[0:1], v3, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, -1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s2
+; VI-NEXT:    v_mov_b32_e32 v1, s0
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX11-TRUE16-LABEL: fcmp_v2f16_ngt:
 ; GFX11-TRUE16:       ; %bb.0: ; %entry
 ; GFX11-TRUE16-NEXT:    s_clause 0x1
-; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-TRUE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v1.l, v0.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v3.l, v2.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_cmp_ngt_f16_e64 s0, v3.l, v2.l
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
 ; GFX11-FAKE16-LABEL: fcmp_v2f16_ngt:
 ; GFX11-FAKE16:       ; %bb.0: ; %entry
 ; GFX11-FAKE16-NEXT:    s_clause 0x1
-; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v1, v0
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-FAKE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v3, v2
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_cmp_ngt_f16_e64 s0, v3, v2
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
 ; GFX12-TRUE16-LABEL: fcmp_v2f16_ngt:
@@ -4613,9 +4915,13 @@ define amdgpu_kernel void @fcmp_v2f16_nle(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
 ; SI-NEXT:    v_cmp_nle_f32_e32 vcc, v1, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; SI-NEXT:    v_cmp_nle_f32_e32 vcc, v3, v2
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    v_cmp_nle_f32_e64 s[0:1], v3, v2
+; SI-NEXT:    s_cselect_b32 s2, -1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s2
+; SI-NEXT:    v_mov_b32_e32 v1, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -4641,70 +4947,80 @@ define amdgpu_kernel void @fcmp_v2f16_nle(
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; VI-NEXT:    v_cmp_nle_f16_e32 vcc, v1, v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; VI-NEXT:    v_cmp_nle_f16_e32 vcc, v3, v2
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; VI-NEXT:    v_cmp_nle_f16_e64 s[0:1], v3, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, -1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s2
+; VI-NEXT:    v_mov_b32_e32 v1, s0
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX11-TRUE16-LABEL: fcmp_v2f16_nle:
 ; GFX11-TRUE16:       ; %bb.0: ; %entry
 ; GFX11-TRUE16-NEXT:    s_clause 0x1
-; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v1.l, v0.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v3.l, v2.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e64 s0, v3.l, v2.l
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
 ; GFX11-FAKE16-LABEL: fcmp_v2f16_nle:
 ; GFX11-FAKE16:       ; %bb.0: ; %entry
 ; GFX11-FAKE16-NEXT:    s_clause 0x1
-; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v1, v0
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v3, v2
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e64 s0, v3, v2
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
 ; GFX12-TRUE16-LABEL: fcmp_v2f16_nle:
@@ -4807,9 +5123,13 @@ define amdgpu_kernel void @fcmp_v2f16_neq(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
 ; SI-NEXT:    v_cmp_neq_f32_e32 vcc, v1, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; SI-NEXT:    v_cmp_neq_f32_e32 vcc, v3, v2
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    v_cmp_neq_f32_e64 s[0:1], v3, v2
+; SI-NEXT:    s_cselect_b32 s2, -1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s2
+; SI-NEXT:    v_mov_b32_e32 v1, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -4835,70 +5155,80 @@ define amdgpu_kernel void @fcmp_v2f16_neq(
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; VI-NEXT:    v_cmp_neq_f16_e32 vcc, v1, v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; VI-NEXT:    v_cmp_neq_f16_e32 vcc, v3, v2
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; VI-NEXT:    v_cmp_neq_f16_e64 s[0:1], v3, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, -1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s2
+; VI-NEXT:    v_mov_b32_e32 v1, s0
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX11-TRUE16-LABEL: fcmp_v2f16_neq:
 ; GFX11-TRUE16:       ; %bb.0: ; %entry
 ; GFX11-TRUE16-NEXT:    s_clause 0x1
-; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-TRUE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v1.l, v0.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v3.l, v2.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_cmp_neq_f16_e64 s0, v3.l, v2.l
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
 ; GFX11-FAKE16-LABEL: fcmp_v2f16_neq:
 ; GFX11-FAKE16:       ; %bb.0: ; %entry
 ; GFX11-FAKE16-NEXT:    s_clause 0x1
-; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v1, v0
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-FAKE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v3, v2
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_cmp_neq_f16_e64 s0, v3, v2
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
 ; GFX12-TRUE16-LABEL: fcmp_v2f16_neq:
@@ -5001,9 +5331,13 @@ define amdgpu_kernel void @fcmp_v2f16_nlt(
 ; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
 ; SI-NEXT:    v_cmp_nlt_f32_e32 vcc, v1, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; SI-NEXT:    v_cmp_nlt_f32_e32 vcc, v3, v2
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    v_cmp_nlt_f32_e64 s[0:1], v3, v2
+; SI-NEXT:    s_cselect_b32 s2, -1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s2
+; SI-NEXT:    v_mov_b32_e32 v1, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -5029,70 +5363,80 @@ define amdgpu_kernel void @fcmp_v2f16_nlt(
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; VI-NEXT:    v_cmp_nlt_f16_e32 vcc, v1, v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
-; VI-NEXT:    v_cmp_nlt_f16_e32 vcc, v3, v2
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc
+; VI-NEXT:    v_cmp_nlt_f16_e64 s[0:1], v3, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, -1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s2
+; VI-NEXT:    v_mov_b32_e32 v1, s0
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX11-TRUE16-LABEL: fcmp_v2f16_nlt:
 ; GFX11-TRUE16:       ; %bb.0: ; %entry
 ; GFX11-TRUE16-NEXT:    s_clause 0x1
-; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-TRUE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v1.l, v0.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-TRUE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v3.l, v2.l
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_cmp_nlt_f16_e64 s0, v3.l, v2.l
+; GFX11-TRUE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-TRUE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-TRUE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
 ;
 ; GFX11-FAKE16-LABEL: fcmp_v2f16_nlt:
 ; GFX11-FAKE16:       ; %bb.0: ; %entry
 ; GFX11-FAKE16-NEXT:    s_clause 0x1
-; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1
-; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000
-; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11
-; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10
-; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11
+; GFX11-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24
+; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
+; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s3, s7
+; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s7
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2
-; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3
-; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
+; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s10
+; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s11
+; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0
-; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1
+; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s8
+; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s9
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
 ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v1, v0
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)
-; GFX11-FAKE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v3, v2
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo
-; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_cmp_nlt_f16_e64 s0, v3, v2
+; GFX11-FAKE16-NEXT:    s_and_b32 s1, vcc_lo, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, -1, 0
+; GFX11-FAKE16-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[4:7], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm
 ;
 ; GFX12-TRUE16-LABEL: fcmp_v2f16_nlt:

diff  --git a/llvm/test/CodeGen/AMDGPU/fcopysign.f16.ll b/llvm/test/CodeGen/AMDGPU/fcopysign.f16.ll
index 3dace636df09b..5d126f7b8b516 100644
--- a/llvm/test/CodeGen/AMDGPU/fcopysign.f16.ll
+++ b/llvm/test/CodeGen/AMDGPU/fcopysign.f16.ll
@@ -1088,14 +1088,12 @@ define amdgpu_ps i16 @s_copysign_out_f16_mag_f64_sign_f16(double inreg %mag, hal
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_and_b32 s3, s1, 0x1ff
 ; SI-NEXT:    s_or_b32 s0, s3, s0
-; SI-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
-; SI-NEXT:    s_lshr_b32 s0, s1, 8
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    s_lshr_b32 s3, s1, 8
 ; SI-NEXT:    s_bfe_u32 s1, s1, 0xb0014
-; SI-NEXT:    s_and_b32 s0, s0, 0xffe
-; SI-NEXT:    v_readfirstlane_b32 s3, v0
+; SI-NEXT:    s_and_b32 s3, s3, 0xffe
 ; SI-NEXT:    s_sub_i32 s4, 0x3f1, s1
-; SI-NEXT:    s_or_b32 s0, s0, s3
+; SI-NEXT:    s_or_b32 s0, s3, s0
 ; SI-NEXT:    v_med3_i32 v0, s4, 0, 13
 ; SI-NEXT:    s_or_b32 s3, s0, 0x1000
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
@@ -1133,14 +1131,12 @@ define amdgpu_ps i16 @s_copysign_out_f16_mag_f64_sign_f16(double inreg %mag, hal
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_and_b32 s3, s1, 0x1ff
 ; VI-NEXT:    s_or_b32 s0, s3, s0
-; VI-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
-; VI-NEXT:    s_lshr_b32 s0, s1, 8
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
+; VI-NEXT:    s_lshr_b32 s3, s1, 8
 ; VI-NEXT:    s_bfe_u32 s1, s1, 0xb0014
-; VI-NEXT:    s_and_b32 s0, s0, 0xffe
-; VI-NEXT:    v_readfirstlane_b32 s3, v0
+; VI-NEXT:    s_and_b32 s3, s3, 0xffe
 ; VI-NEXT:    s_sub_i32 s4, 0x3f1, s1
-; VI-NEXT:    s_or_b32 s0, s0, s3
+; VI-NEXT:    s_or_b32 s0, s3, s0
 ; VI-NEXT:    v_med3_i32 v0, s4, 0, 13
 ; VI-NEXT:    s_or_b32 s3, s0, 0x1000
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
@@ -1180,14 +1176,12 @@ define amdgpu_ps i16 @s_copysign_out_f16_mag_f64_sign_f16(double inreg %mag, hal
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_and_b32 s3, s1, 0x1ff
 ; GFX9-NEXT:    s_or_b32 s0, s3, s0
-; GFX9-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
-; GFX9-NEXT:    s_lshr_b32 s0, s1, 8
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    s_lshr_b32 s3, s1, 8
 ; GFX9-NEXT:    s_bfe_u32 s1, s1, 0xb0014
-; GFX9-NEXT:    s_and_b32 s0, s0, 0xffe
-; GFX9-NEXT:    v_readfirstlane_b32 s3, v0
+; GFX9-NEXT:    s_and_b32 s3, s3, 0xffe
 ; GFX9-NEXT:    s_sub_i32 s4, 0x3f1, s1
-; GFX9-NEXT:    s_or_b32 s0, s0, s3
+; GFX9-NEXT:    s_or_b32 s0, s3, s0
 ; GFX9-NEXT:    v_med3_i32 v0, s4, 0, 13
 ; GFX9-NEXT:    s_or_b32 s3, s0, 0x1000
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
@@ -1226,50 +1220,47 @@ define amdgpu_ps i16 @s_copysign_out_f16_mag_f64_sign_f16(double inreg %mag, hal
 ; GFX11-TRUE16-LABEL: s_copysign_out_f16_mag_f64_sign_f16:
 ; GFX11-TRUE16:       ; %bb.0:
 ; GFX11-TRUE16-NEXT:    s_and_b32 s3, s1, 0x1ff
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.l, s2
 ; GFX11-TRUE16-NEXT:    s_or_b32 s0, s3, s0
-; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; GFX11-TRUE16-NEXT:    s_bfe_u32 s0, s1, 0xb0014
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-TRUE16-NEXT:    s_bfe_u32 s3, s1, 0xb0014
 ; GFX11-TRUE16-NEXT:    s_lshr_b32 s1, s1, 8
-; GFX11-TRUE16-NEXT:    s_sub_i32 s3, 0x3f1, s0
+; GFX11-TRUE16-NEXT:    s_sub_i32 s4, 0x3f1, s3
 ; GFX11-TRUE16-NEXT:    s_and_b32 s1, s1, 0xffe
-; GFX11-TRUE16-NEXT:    v_med3_i32 v1, s3, 0, 13
-; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s3, v0
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)
-; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s4, v1
-; GFX11-TRUE16-NEXT:    s_or_b32 s1, s1, s3
-; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.l, s2
-; GFX11-TRUE16-NEXT:    s_or_b32 s3, s1, 0x1000
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s5, s3, s4
+; GFX11-TRUE16-NEXT:    v_med3_i32 v0, s4, 0, 13
+; GFX11-TRUE16-NEXT:    s_or_b32 s0, s1, s0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-TRUE16-NEXT:    s_or_b32 s1, s0, 0x1000
+; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s5, s1, s4
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    s_lshl_b32 s4, s5, s4
-; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s4, s3
-; GFX11-TRUE16-NEXT:    s_cselect_b32 s3, 1, 0
-; GFX11-TRUE16-NEXT:    s_addk_i32 s0, 0xfc10
-; GFX11-TRUE16-NEXT:    s_or_b32 s3, s5, s3
-; GFX11-TRUE16-NEXT:    s_lshl_b32 s4, s0, 12
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s4, s1
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-TRUE16-NEXT:    s_addk_i32 s3, 0xfc10
+; GFX11-TRUE16-NEXT:    s_or_b32 s1, s5, s1
+; GFX11-TRUE16-NEXT:    s_lshl_b32 s4, s3, 12
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
-; GFX11-TRUE16-NEXT:    s_or_b32 s4, s1, s4
-; GFX11-TRUE16-NEXT:    s_cmp_lt_i32 s0, 1
-; GFX11-TRUE16-NEXT:    s_cselect_b32 s3, s3, s4
-; GFX11-TRUE16-NEXT:    s_and_b32 s4, s3, 7
+; GFX11-TRUE16-NEXT:    s_or_b32 s4, s0, s4
+; GFX11-TRUE16-NEXT:    s_cmp_lt_i32 s3, 1
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, s1, s4
+; GFX11-TRUE16-NEXT:    s_and_b32 s4, s1, 7
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    s_cmp_gt_i32 s4, 5
 ; GFX11-TRUE16-NEXT:    s_cselect_b32 s5, 1, 0
 ; GFX11-TRUE16-NEXT:    s_cmp_eq_u32 s4, 3
 ; GFX11-TRUE16-NEXT:    s_cselect_b32 s4, 1, 0
-; GFX11-TRUE16-NEXT:    s_lshr_b32 s3, s3, 2
+; GFX11-TRUE16-NEXT:    s_lshr_b32 s1, s1, 2
 ; GFX11-TRUE16-NEXT:    s_or_b32 s4, s4, s5
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-TRUE16-NEXT:    s_add_i32 s3, s3, s4
-; GFX11-TRUE16-NEXT:    s_cmp_lt_i32 s0, 31
+; GFX11-TRUE16-NEXT:    s_add_i32 s1, s1, s4
+; GFX11-TRUE16-NEXT:    s_cmp_lt_i32 s3, 31
 ; GFX11-TRUE16-NEXT:    s_movk_i32 s4, 0x7e00
-; GFX11-TRUE16-NEXT:    s_cselect_b32 s3, s3, 0x7c00
-; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s1, 0
-; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, s4, 0x7c00
-; GFX11-TRUE16-NEXT:    s_cmpk_eq_i32 s0, 0x40f
-; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, s1, s3
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s1, s1, 0x7c00
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s0, 0
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, s4, 0x7c00
+; GFX11-TRUE16-NEXT:    s_cmpk_eq_i32 s3, 0x40f
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s0, s0, s1
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, s0
 ; GFX11-TRUE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, v1
@@ -1280,50 +1271,48 @@ define amdgpu_ps i16 @s_copysign_out_f16_mag_f64_sign_f16(double inreg %mag, hal
 ; GFX11-FAKE16-LABEL: s_copysign_out_f16_mag_f64_sign_f16:
 ; GFX11-FAKE16:       ; %bb.0:
 ; GFX11-FAKE16-NEXT:    s_and_b32 s3, s1, 0x1ff
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    s_or_b32 s0, s3, s0
-; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; GFX11-FAKE16-NEXT:    s_bfe_u32 s0, s1, 0xb0014
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-FAKE16-NEXT:    s_bfe_u32 s3, s1, 0xb0014
 ; GFX11-FAKE16-NEXT:    s_lshr_b32 s1, s1, 8
-; GFX11-FAKE16-NEXT:    s_sub_i32 s3, 0x3f1, s0
+; GFX11-FAKE16-NEXT:    s_sub_i32 s4, 0x3f1, s3
 ; GFX11-FAKE16-NEXT:    s_and_b32 s1, s1, 0xffe
-; GFX11-FAKE16-NEXT:    v_med3_i32 v1, s3, 0, 13
-; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s3, v0
+; GFX11-FAKE16-NEXT:    v_med3_i32 v0, s4, 0, 13
+; GFX11-FAKE16-NEXT:    s_or_b32 s0, s1, s0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-FAKE16-NEXT:    s_or_b32 s1, s0, 0x1000
+; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s4, v0
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s4, v1
-; GFX11-FAKE16-NEXT:    s_or_b32 s1, s1, s3
-; GFX11-FAKE16-NEXT:    s_or_b32 s3, s1, 0x1000
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s5, s1, s4
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s5, s3, s4
 ; GFX11-FAKE16-NEXT:    s_lshl_b32 s4, s5, s4
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
-; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s4, s3
-; GFX11-FAKE16-NEXT:    s_cselect_b32 s3, 1, 0
-; GFX11-FAKE16-NEXT:    s_addk_i32 s0, 0xfc10
-; GFX11-FAKE16-NEXT:    s_or_b32 s3, s5, s3
-; GFX11-FAKE16-NEXT:    s_lshl_b32 s4, s0, 12
-; GFX11-FAKE16-NEXT:    s_or_b32 s4, s1, s4
-; GFX11-FAKE16-NEXT:    s_cmp_lt_i32 s0, 1
-; GFX11-FAKE16-NEXT:    s_cselect_b32 s3, s3, s4
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX11-FAKE16-NEXT:    s_and_b32 s4, s3, 7
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s4, s1
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-FAKE16-NEXT:    s_addk_i32 s3, 0xfc10
+; GFX11-FAKE16-NEXT:    s_or_b32 s1, s5, s1
+; GFX11-FAKE16-NEXT:    s_lshl_b32 s4, s3, 12
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_or_b32 s4, s0, s4
+; GFX11-FAKE16-NEXT:    s_cmp_lt_i32 s3, 1
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, s1, s4
+; GFX11-FAKE16-NEXT:    s_and_b32 s4, s1, 7
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    s_cmp_gt_i32 s4, 5
 ; GFX11-FAKE16-NEXT:    s_cselect_b32 s5, 1, 0
 ; GFX11-FAKE16-NEXT:    s_cmp_eq_u32 s4, 3
 ; GFX11-FAKE16-NEXT:    s_cselect_b32 s4, 1, 0
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s3, s3, 2
+; GFX11-FAKE16-NEXT:    s_lshr_b32 s1, s1, 2
 ; GFX11-FAKE16-NEXT:    s_or_b32 s4, s4, s5
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-FAKE16-NEXT:    s_add_i32 s3, s3, s4
-; GFX11-FAKE16-NEXT:    s_cmp_lt_i32 s0, 31
+; GFX11-FAKE16-NEXT:    s_add_i32 s1, s1, s4
+; GFX11-FAKE16-NEXT:    s_cmp_lt_i32 s3, 31
 ; GFX11-FAKE16-NEXT:    s_movk_i32 s4, 0x7e00
-; GFX11-FAKE16-NEXT:    s_cselect_b32 s3, s3, 0x7c00
-; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s1, 0
-; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, s4, 0x7c00
-; GFX11-FAKE16-NEXT:    s_cmpk_eq_i32 s0, 0x40f
-; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, s1, s3
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s1, s1, 0x7c00
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s0, 0
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, s4, 0x7c00
+; GFX11-FAKE16-NEXT:    s_cmpk_eq_i32 s3, 0x40f
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s0, s0, s1
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_bfi_b32 v0, 0x7fff, s0, v0
 ; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s0, v0
@@ -3771,15 +3760,13 @@ define amdgpu_ps i32 @s_copysign_out_v2f16_mag_v2f64_sign_v2f16(<2 x double> inr
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_lshr_b32 s6, s3, 8
 ; SI-NEXT:    s_lshr_b32 s5, s4, 16
-; SI-NEXT:    s_and_b32 s8, s6, 0xffe
-; SI-NEXT:    s_and_b32 s6, s3, 0x1ff
-; SI-NEXT:    s_or_b32 s2, s6, s2
-; SI-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[6:7]
+; SI-NEXT:    s_and_b32 s6, s6, 0xffe
+; SI-NEXT:    s_and_b32 s7, s3, 0x1ff
+; SI-NEXT:    s_or_b32 s2, s7, s2
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
 ; SI-NEXT:    s_bfe_u32 s3, s3, 0xb0014
-; SI-NEXT:    v_readfirstlane_b32 s2, v0
 ; SI-NEXT:    s_sub_i32 s7, 0x3f1, s3
-; SI-NEXT:    s_or_b32 s2, s8, s2
+; SI-NEXT:    s_or_b32 s2, s6, s2
 ; SI-NEXT:    v_med3_i32 v0, s7, 0, 13
 ; SI-NEXT:    s_or_b32 s6, s2, 0x1000
 ; SI-NEXT:    v_readfirstlane_b32 s7, v0
@@ -3804,51 +3791,49 @@ define amdgpu_ps i32 @s_copysign_out_v2f16_mag_v2f64_sign_v2f16(<2 x double> inr
 ; SI-NEXT:    s_cmp_lt_i32 s3, 31
 ; SI-NEXT:    s_cselect_b32 s6, s6, 0x7c00
 ; SI-NEXT:    s_cmp_lg_u32 s2, 0
-; SI-NEXT:    s_movk_i32 s7, 0x7e00
-; SI-NEXT:    s_cselect_b32 s2, s7, 0x7c00
+; SI-NEXT:    s_movk_i32 s2, 0x7e00
+; SI-NEXT:    s_cselect_b32 s7, s2, 0x7c00
 ; SI-NEXT:    s_cmpk_eq_i32 s3, 0x40f
-; SI-NEXT:    s_cselect_b32 s6, s2, s6
-; SI-NEXT:    s_lshr_b32 s2, s1, 8
-; SI-NEXT:    s_and_b32 s8, s2, 0xffe
-; SI-NEXT:    s_and_b32 s2, s1, 0x1ff
-; SI-NEXT:    s_or_b32 s0, s2, s0
-; SI-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[2:3]
+; SI-NEXT:    s_cselect_b32 s3, s7, s6
+; SI-NEXT:    s_lshr_b32 s6, s1, 8
+; SI-NEXT:    s_and_b32 s6, s6, 0xffe
+; SI-NEXT:    s_and_b32 s7, s1, 0x1ff
+; SI-NEXT:    s_or_b32 s0, s7, s0
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
 ; SI-NEXT:    s_bfe_u32 s1, s1, 0xb0014
-; SI-NEXT:    v_readfirstlane_b32 s0, v0
-; SI-NEXT:    s_sub_i32 s3, 0x3f1, s1
-; SI-NEXT:    s_or_b32 s0, s8, s0
-; SI-NEXT:    v_med3_i32 v0, s3, 0, 13
-; SI-NEXT:    s_or_b32 s2, s0, 0x1000
-; SI-NEXT:    v_readfirstlane_b32 s3, v0
-; SI-NEXT:    s_lshr_b32 s8, s2, s3
-; SI-NEXT:    s_lshl_b32 s3, s8, s3
-; SI-NEXT:    s_cmp_lg_u32 s3, s2
-; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    s_sub_i32 s7, 0x3f1, s1
+; SI-NEXT:    s_or_b32 s0, s6, s0
+; SI-NEXT:    v_med3_i32 v0, s7, 0, 13
+; SI-NEXT:    s_or_b32 s6, s0, 0x1000
+; SI-NEXT:    v_readfirstlane_b32 s7, v0
+; SI-NEXT:    s_lshr_b32 s8, s6, s7
+; SI-NEXT:    s_lshl_b32 s7, s8, s7
+; SI-NEXT:    s_cmp_lg_u32 s7, s6
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
 ; SI-NEXT:    s_addk_i32 s1, 0xfc10
-; SI-NEXT:    s_lshl_b32 s3, s1, 12
-; SI-NEXT:    s_or_b32 s2, s8, s2
-; SI-NEXT:    s_or_b32 s3, s0, s3
+; SI-NEXT:    s_lshl_b32 s7, s1, 12
+; SI-NEXT:    s_or_b32 s6, s8, s6
+; SI-NEXT:    s_or_b32 s7, s0, s7
 ; SI-NEXT:    s_cmp_lt_i32 s1, 1
-; SI-NEXT:    s_cselect_b32 s2, s2, s3
-; SI-NEXT:    s_and_b32 s3, s2, 7
-; SI-NEXT:    s_cmp_gt_i32 s3, 5
+; SI-NEXT:    s_cselect_b32 s6, s6, s7
+; SI-NEXT:    s_and_b32 s7, s6, 7
+; SI-NEXT:    s_cmp_gt_i32 s7, 5
 ; SI-NEXT:    s_cselect_b32 s8, 1, 0
-; SI-NEXT:    s_cmp_eq_u32 s3, 3
-; SI-NEXT:    s_cselect_b32 s3, 1, 0
-; SI-NEXT:    s_or_b32 s3, s3, s8
-; SI-NEXT:    s_lshr_b32 s2, s2, 2
-; SI-NEXT:    s_add_i32 s2, s2, s3
+; SI-NEXT:    s_cmp_eq_u32 s7, 3
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_or_b32 s7, s7, s8
+; SI-NEXT:    s_lshr_b32 s6, s6, 2
+; SI-NEXT:    s_add_i32 s6, s6, s7
 ; SI-NEXT:    s_cmp_lt_i32 s1, 31
-; SI-NEXT:    s_cselect_b32 s2, s2, 0x7c00
+; SI-NEXT:    s_cselect_b32 s6, s6, 0x7c00
 ; SI-NEXT:    s_cmp_lg_u32 s0, 0
-; SI-NEXT:    s_cselect_b32 s0, s7, 0x7c00
+; SI-NEXT:    s_cselect_b32 s0, s2, 0x7c00
 ; SI-NEXT:    s_cmpk_eq_i32 s1, 0x40f
-; SI-NEXT:    s_cselect_b32 s0, s0, s2
+; SI-NEXT:    s_cselect_b32 s0, s0, s6
 ; SI-NEXT:    s_and_b32 s0, s0, 0x7fff
 ; SI-NEXT:    s_and_b32 s1, s4, 0x8000
 ; SI-NEXT:    s_or_b32 s0, s0, s1
-; SI-NEXT:    s_and_b32 s1, s6, 0x7fff
+; SI-NEXT:    s_and_b32 s1, s3, 0x7fff
 ; SI-NEXT:    s_and_b32 s2, s5, 0x8000
 ; SI-NEXT:    s_or_b32 s1, s1, s2
 ; SI-NEXT:    s_lshl_b32 s1, s1, 16
@@ -3861,10 +3846,8 @@ define amdgpu_ps i32 @s_copysign_out_v2f16_mag_v2f64_sign_v2f16(<2 x double> inr
 ; VI-NEXT:    s_and_b32 s5, s5, 0xffe
 ; VI-NEXT:    s_and_b32 s6, s3, 0x1ff
 ; VI-NEXT:    s_or_b32 s2, s6, s2
-; VI-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[6:7]
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
 ; VI-NEXT:    s_bfe_u32 s3, s3, 0xb0014
-; VI-NEXT:    v_readfirstlane_b32 s2, v0
 ; VI-NEXT:    s_sub_i32 s6, 0x3f1, s3
 ; VI-NEXT:    s_or_b32 s2, s5, s2
 ; VI-NEXT:    v_med3_i32 v0, s6, 0, 13
@@ -3891,50 +3874,48 @@ define amdgpu_ps i32 @s_copysign_out_v2f16_mag_v2f64_sign_v2f16(<2 x double> inr
 ; VI-NEXT:    s_cmp_lt_i32 s3, 31
 ; VI-NEXT:    s_cselect_b32 s5, s5, 0x7c00
 ; VI-NEXT:    s_cmp_lg_u32 s2, 0
-; VI-NEXT:    s_movk_i32 s6, 0x7e00
-; VI-NEXT:    s_cselect_b32 s2, s6, 0x7c00
+; VI-NEXT:    s_movk_i32 s2, 0x7e00
+; VI-NEXT:    s_cselect_b32 s6, s2, 0x7c00
 ; VI-NEXT:    s_cmpk_eq_i32 s3, 0x40f
-; VI-NEXT:    s_cselect_b32 s2, s2, s5
-; VI-NEXT:    s_lshl_b32 s5, s2, 16
-; VI-NEXT:    s_lshr_b32 s2, s1, 8
-; VI-NEXT:    s_and_b32 s7, s2, 0xffe
-; VI-NEXT:    s_and_b32 s2, s1, 0x1ff
-; VI-NEXT:    s_or_b32 s0, s2, s0
-; VI-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[2:3]
+; VI-NEXT:    s_cselect_b32 s3, s6, s5
+; VI-NEXT:    s_lshr_b32 s5, s1, 8
+; VI-NEXT:    s_lshl_b32 s3, s3, 16
+; VI-NEXT:    s_and_b32 s5, s5, 0xffe
+; VI-NEXT:    s_and_b32 s6, s1, 0x1ff
+; VI-NEXT:    s_or_b32 s0, s6, s0
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    s_bfe_u32 s1, s1, 0xb0014
-; VI-NEXT:    v_readfirstlane_b32 s0, v0
-; VI-NEXT:    s_sub_i32 s3, 0x3f1, s1
-; VI-NEXT:    s_or_b32 s0, s7, s0
-; VI-NEXT:    v_med3_i32 v0, s3, 0, 13
-; VI-NEXT:    s_or_b32 s2, s0, 0x1000
-; VI-NEXT:    v_readfirstlane_b32 s3, v0
-; VI-NEXT:    s_lshr_b32 s7, s2, s3
-; VI-NEXT:    s_lshl_b32 s3, s7, s3
-; VI-NEXT:    s_cmp_lg_u32 s3, s2
-; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_sub_i32 s6, 0x3f1, s1
+; VI-NEXT:    s_or_b32 s0, s5, s0
+; VI-NEXT:    v_med3_i32 v0, s6, 0, 13
+; VI-NEXT:    s_or_b32 s5, s0, 0x1000
+; VI-NEXT:    v_readfirstlane_b32 s6, v0
+; VI-NEXT:    s_lshr_b32 s7, s5, s6
+; VI-NEXT:    s_lshl_b32 s6, s7, s6
+; VI-NEXT:    s_cmp_lg_u32 s6, s5
+; VI-NEXT:    s_cselect_b32 s5, 1, 0
 ; VI-NEXT:    s_addk_i32 s1, 0xfc10
-; VI-NEXT:    s_lshl_b32 s3, s1, 12
-; VI-NEXT:    s_or_b32 s2, s7, s2
-; VI-NEXT:    s_or_b32 s3, s0, s3
+; VI-NEXT:    s_lshl_b32 s6, s1, 12
+; VI-NEXT:    s_or_b32 s5, s7, s5
+; VI-NEXT:    s_or_b32 s6, s0, s6
 ; VI-NEXT:    s_cmp_lt_i32 s1, 1
-; VI-NEXT:    s_cselect_b32 s2, s2, s3
-; VI-NEXT:    s_and_b32 s3, s2, 7
-; VI-NEXT:    s_cmp_gt_i32 s3, 5
+; VI-NEXT:    s_cselect_b32 s5, s5, s6
+; VI-NEXT:    s_and_b32 s6, s5, 7
+; VI-NEXT:    s_cmp_gt_i32 s6, 5
 ; VI-NEXT:    s_cselect_b32 s7, 1, 0
-; VI-NEXT:    s_cmp_eq_u32 s3, 3
-; VI-NEXT:    s_cselect_b32 s3, 1, 0
-; VI-NEXT:    s_or_b32 s3, s3, s7
-; VI-NEXT:    s_lshr_b32 s2, s2, 2
-; VI-NEXT:    s_add_i32 s2, s2, s3
+; VI-NEXT:    s_cmp_eq_u32 s6, 3
+; VI-NEXT:    s_cselect_b32 s6, 1, 0
+; VI-NEXT:    s_or_b32 s6, s6, s7
+; VI-NEXT:    s_lshr_b32 s5, s5, 2
+; VI-NEXT:    s_add_i32 s5, s5, s6
 ; VI-NEXT:    s_cmp_lt_i32 s1, 31
-; VI-NEXT:    s_cselect_b32 s2, s2, 0x7c00
+; VI-NEXT:    s_cselect_b32 s5, s5, 0x7c00
 ; VI-NEXT:    s_cmp_lg_u32 s0, 0
-; VI-NEXT:    s_cselect_b32 s0, s6, 0x7c00
+; VI-NEXT:    s_cselect_b32 s0, s2, 0x7c00
 ; VI-NEXT:    s_cmpk_eq_i32 s1, 0x40f
-; VI-NEXT:    s_cselect_b32 s0, s0, s2
+; VI-NEXT:    s_cselect_b32 s0, s0, s5
 ; VI-NEXT:    s_and_b32 s0, s0, 0x7fff
-; VI-NEXT:    s_or_b32 s0, s0, s5
+; VI-NEXT:    s_or_b32 s0, s0, s3
 ; VI-NEXT:    s_mov_b32 s1, 0x7fff7fff
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
@@ -3948,10 +3929,8 @@ define amdgpu_ps i32 @s_copysign_out_v2f16_mag_v2f64_sign_v2f16(<2 x double> inr
 ; GFX9-NEXT:    s_and_b32 s5, s5, 0xffe
 ; GFX9-NEXT:    s_and_b32 s6, s3, 0x1ff
 ; GFX9-NEXT:    s_or_b32 s2, s6, s2
-; GFX9-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[6:7]
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX9-NEXT:    s_bfe_u32 s6, s3, 0xb0014
-; GFX9-NEXT:    v_readfirstlane_b32 s2, v0
 ; GFX9-NEXT:    s_sub_i32 s7, 0x3f1, s6
 ; GFX9-NEXT:    s_or_b32 s2, s5, s2
 ; GFX9-NEXT:    v_med3_i32 v0, s7, 0, 13
@@ -3978,54 +3957,52 @@ define amdgpu_ps i32 @s_copysign_out_v2f16_mag_v2f64_sign_v2f16(<2 x double> inr
 ; GFX9-NEXT:    s_cmp_lt_i32 s6, 31
 ; GFX9-NEXT:    s_cselect_b32 s5, s5, 0x7c00
 ; GFX9-NEXT:    s_cmp_lg_u32 s2, 0
-; GFX9-NEXT:    s_movk_i32 s7, 0x7e00
-; GFX9-NEXT:    s_cselect_b32 s2, s7, 0x7c00
+; GFX9-NEXT:    s_movk_i32 s2, 0x7e00
+; GFX9-NEXT:    s_cselect_b32 s7, s2, 0x7c00
 ; GFX9-NEXT:    s_cmpk_eq_i32 s6, 0x40f
-; GFX9-NEXT:    s_cselect_b32 s2, s2, s5
+; GFX9-NEXT:    s_cselect_b32 s5, s7, s5
 ; GFX9-NEXT:    s_lshr_b32 s3, s3, 16
 ; GFX9-NEXT:    s_and_b32 s3, s3, 0x8000
-; GFX9-NEXT:    s_or_b32 s5, s3, s2
-; GFX9-NEXT:    s_lshr_b32 s2, s1, 8
-; GFX9-NEXT:    s_and_b32 s6, s2, 0xffe
-; GFX9-NEXT:    s_and_b32 s2, s1, 0x1ff
-; GFX9-NEXT:    s_or_b32 s0, s2, s0
-; GFX9-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[2:3]
-; GFX9-NEXT:    v_readfirstlane_b32 s0, v0
-; GFX9-NEXT:    s_bfe_u32 s3, s1, 0xb0014
+; GFX9-NEXT:    s_or_b32 s3, s3, s5
+; GFX9-NEXT:    s_lshr_b32 s5, s1, 8
+; GFX9-NEXT:    s_and_b32 s5, s5, 0xffe
+; GFX9-NEXT:    s_and_b32 s6, s1, 0x1ff
 ; GFX9-NEXT:    s_or_b32 s0, s6, s0
-; GFX9-NEXT:    s_sub_i32 s6, 0x3f1, s3
-; GFX9-NEXT:    v_med3_i32 v0, s6, 0, 13
-; GFX9-NEXT:    s_or_b32 s2, s0, 0x1000
-; GFX9-NEXT:    v_readfirstlane_b32 s6, v0
-; GFX9-NEXT:    s_lshr_b32 s8, s2, s6
-; GFX9-NEXT:    s_lshl_b32 s6, s8, s6
-; GFX9-NEXT:    s_cmp_lg_u32 s6, s2
-; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
-; GFX9-NEXT:    s_addk_i32 s3, 0xfc10
-; GFX9-NEXT:    s_lshl_b32 s6, s3, 12
-; GFX9-NEXT:    s_or_b32 s2, s8, s2
-; GFX9-NEXT:    s_or_b32 s6, s0, s6
-; GFX9-NEXT:    s_cmp_lt_i32 s3, 1
-; GFX9-NEXT:    s_cselect_b32 s2, s2, s6
-; GFX9-NEXT:    s_and_b32 s6, s2, 7
-; GFX9-NEXT:    s_cmp_gt_i32 s6, 5
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    s_bfe_u32 s6, s1, 0xb0014
+; GFX9-NEXT:    s_sub_i32 s7, 0x3f1, s6
+; GFX9-NEXT:    s_or_b32 s0, s5, s0
+; GFX9-NEXT:    v_med3_i32 v0, s7, 0, 13
+; GFX9-NEXT:    s_or_b32 s5, s0, 0x1000
+; GFX9-NEXT:    v_readfirstlane_b32 s7, v0
+; GFX9-NEXT:    s_lshr_b32 s8, s5, s7
+; GFX9-NEXT:    s_lshl_b32 s7, s8, s7
+; GFX9-NEXT:    s_cmp_lg_u32 s7, s5
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    s_addk_i32 s6, 0xfc10
+; GFX9-NEXT:    s_lshl_b32 s7, s6, 12
+; GFX9-NEXT:    s_or_b32 s5, s8, s5
+; GFX9-NEXT:    s_or_b32 s7, s0, s7
+; GFX9-NEXT:    s_cmp_lt_i32 s6, 1
+; GFX9-NEXT:    s_cselect_b32 s5, s5, s7
+; GFX9-NEXT:    s_and_b32 s7, s5, 7
+; GFX9-NEXT:    s_cmp_gt_i32 s7, 5
 ; GFX9-NEXT:    s_cselect_b32 s8, 1, 0
-; GFX9-NEXT:    s_cmp_eq_u32 s6, 3
-; GFX9-NEXT:    s_cselect_b32 s6, 1, 0
-; GFX9-NEXT:    s_or_b32 s6, s6, s8
-; GFX9-NEXT:    s_lshr_b32 s2, s2, 2
-; GFX9-NEXT:    s_add_i32 s2, s2, s6
-; GFX9-NEXT:    s_cmp_lt_i32 s3, 31
-; GFX9-NEXT:    s_cselect_b32 s2, s2, 0x7c00
+; GFX9-NEXT:    s_cmp_eq_u32 s7, 3
+; GFX9-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX9-NEXT:    s_or_b32 s7, s7, s8
+; GFX9-NEXT:    s_lshr_b32 s5, s5, 2
+; GFX9-NEXT:    s_add_i32 s5, s5, s7
+; GFX9-NEXT:    s_cmp_lt_i32 s6, 31
+; GFX9-NEXT:    s_cselect_b32 s5, s5, 0x7c00
 ; GFX9-NEXT:    s_cmp_lg_u32 s0, 0
-; GFX9-NEXT:    s_cselect_b32 s0, s7, 0x7c00
-; GFX9-NEXT:    s_cmpk_eq_i32 s3, 0x40f
-; GFX9-NEXT:    s_cselect_b32 s0, s0, s2
+; GFX9-NEXT:    s_cselect_b32 s0, s2, 0x7c00
+; GFX9-NEXT:    s_cmpk_eq_i32 s6, 0x40f
+; GFX9-NEXT:    s_cselect_b32 s0, s0, s5
 ; GFX9-NEXT:    s_lshr_b32 s1, s1, 16
 ; GFX9-NEXT:    s_and_b32 s1, s1, 0x8000
 ; GFX9-NEXT:    s_or_b32 s0, s1, s0
-; GFX9-NEXT:    s_pack_ll_b32_b16 s0, s0, s5
+; GFX9-NEXT:    s_pack_ll_b32_b16 s0, s0, s3
 ; GFX9-NEXT:    s_mov_b32 s1, 0x7fff7fff
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s4
@@ -4039,47 +4016,42 @@ define amdgpu_ps i32 @s_copysign_out_v2f16_mag_v2f64_sign_v2f16(<2 x double> inr
 ; GFX11-NEXT:    s_and_b32 s6, s3, 0x1ff
 ; GFX11-NEXT:    s_and_b32 s5, s5, 0xffe
 ; GFX11-NEXT:    s_or_b32 s2, s6, s2
-; GFX11-NEXT:    s_cselect_b32 s2, -1, 0
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s2
-; GFX11-NEXT:    s_bfe_u32 s2, s3, 0xb0014
-; GFX11-NEXT:    s_sub_i32 s6, 0x3f1, s2
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_med3_i32 v1, s6, 0, 13
-; GFX11-NEXT:    v_readfirstlane_b32 s6, v0
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_readfirstlane_b32 s7, v1
-; GFX11-NEXT:    s_or_b32 s5, s5, s6
-; GFX11-NEXT:    s_or_b32 s6, s5, 0x1000
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    s_lshr_b32 s8, s6, s7
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_bfe_u32 s6, s3, 0xb0014
+; GFX11-NEXT:    s_or_b32 s2, s5, s2
+; GFX11-NEXT:    s_sub_i32 s7, 0x3f1, s6
+; GFX11-NEXT:    s_or_b32 s5, s2, 0x1000
+; GFX11-NEXT:    v_med3_i32 v0, s7, 0, 13
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    v_readfirstlane_b32 s7, v0
+; GFX11-NEXT:    s_lshr_b32 s8, s5, s7
 ; GFX11-NEXT:    s_lshl_b32 s7, s8, s7
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    s_cmp_lg_u32 s7, s6
-; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
-; GFX11-NEXT:    s_addk_i32 s2, 0xfc10
-; GFX11-NEXT:    s_or_b32 s6, s8, s6
-; GFX11-NEXT:    s_lshl_b32 s7, s2, 12
-; GFX11-NEXT:    s_or_b32 s7, s5, s7
-; GFX11-NEXT:    s_cmp_lt_i32 s2, 1
-; GFX11-NEXT:    s_cselect_b32 s6, s6, s7
+; GFX11-NEXT:    s_cmp_lg_u32 s7, s5
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_addk_i32 s6, 0xfc10
+; GFX11-NEXT:    s_or_b32 s5, s8, s5
+; GFX11-NEXT:    s_lshl_b32 s7, s6, 12
+; GFX11-NEXT:    s_or_b32 s7, s2, s7
+; GFX11-NEXT:    s_cmp_lt_i32 s6, 1
+; GFX11-NEXT:    s_cselect_b32 s5, s5, s7
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    s_and_b32 s7, s6, 7
+; GFX11-NEXT:    s_and_b32 s7, s5, 7
 ; GFX11-NEXT:    s_cmp_gt_i32 s7, 5
 ; GFX11-NEXT:    s_cselect_b32 s8, 1, 0
 ; GFX11-NEXT:    s_cmp_eq_u32 s7, 3
 ; GFX11-NEXT:    s_cselect_b32 s7, 1, 0
-; GFX11-NEXT:    s_lshr_b32 s6, s6, 2
+; GFX11-NEXT:    s_lshr_b32 s5, s5, 2
 ; GFX11-NEXT:    s_or_b32 s7, s7, s8
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    s_add_i32 s6, s6, s7
-; GFX11-NEXT:    s_cmp_lt_i32 s2, 31
+; GFX11-NEXT:    s_add_i32 s5, s5, s7
+; GFX11-NEXT:    s_cmp_lt_i32 s6, 31
 ; GFX11-NEXT:    s_movk_i32 s7, 0x7e00
-; GFX11-NEXT:    s_cselect_b32 s6, s6, 0x7c00
-; GFX11-NEXT:    s_cmp_lg_u32 s5, 0
-; GFX11-NEXT:    s_cselect_b32 s5, s7, 0x7c00
-; GFX11-NEXT:    s_cmpk_eq_i32 s2, 0x40f
-; GFX11-NEXT:    s_cselect_b32 s2, s5, s6
+; GFX11-NEXT:    s_cselect_b32 s5, s5, 0x7c00
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 0
+; GFX11-NEXT:    s_cselect_b32 s2, s7, 0x7c00
+; GFX11-NEXT:    s_cmpk_eq_i32 s6, 0x40f
+; GFX11-NEXT:    s_cselect_b32 s2, s2, s5
 ; GFX11-NEXT:    s_lshr_b32 s3, s3, 16
 ; GFX11-NEXT:    s_lshr_b32 s5, s1, 8
 ; GFX11-NEXT:    s_and_b32 s3, s3, 0x8000
@@ -4087,30 +4059,25 @@ define amdgpu_ps i32 @s_copysign_out_v2f16_mag_v2f64_sign_v2f16(<2 x double> inr
 ; GFX11-NEXT:    s_and_b32 s5, s5, 0xffe
 ; GFX11-NEXT:    s_or_b32 s2, s3, s2
 ; GFX11-NEXT:    s_or_b32 s0, s6, s0
-; GFX11-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; GFX11-NEXT:    s_bfe_u32 s0, s1, 0xb0014
-; GFX11-NEXT:    s_sub_i32 s3, 0x3f1, s0
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_med3_i32 v1, s3, 0, 13
-; GFX11-NEXT:    v_readfirstlane_b32 s3, v0
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_bfe_u32 s3, s1, 0xb0014
+; GFX11-NEXT:    s_or_b32 s0, s5, s0
+; GFX11-NEXT:    s_sub_i32 s6, 0x3f1, s3
+; GFX11-NEXT:    s_or_b32 s5, s0, 0x1000
+; GFX11-NEXT:    v_med3_i32 v0, s6, 0, 13
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    v_readfirstlane_b32 s6, v0
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s4
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_readfirstlane_b32 s6, v1
-; GFX11-NEXT:    s_or_b32 s3, s5, s3
-; GFX11-NEXT:    s_or_b32 s5, s3, 0x1000
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_lshr_b32 s8, s5, s6
 ; GFX11-NEXT:    s_lshl_b32 s6, s8, s6
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_cmp_lg_u32 s6, s5
 ; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
-; GFX11-NEXT:    s_addk_i32 s0, 0xfc10
+; GFX11-NEXT:    s_addk_i32 s3, 0xfc10
 ; GFX11-NEXT:    s_or_b32 s5, s8, s5
-; GFX11-NEXT:    s_lshl_b32 s6, s0, 12
-; GFX11-NEXT:    s_or_b32 s6, s3, s6
-; GFX11-NEXT:    s_cmp_lt_i32 s0, 1
+; GFX11-NEXT:    s_lshl_b32 s6, s3, 12
+; GFX11-NEXT:    s_or_b32 s6, s0, s6
+; GFX11-NEXT:    s_cmp_lt_i32 s3, 1
 ; GFX11-NEXT:    s_cselect_b32 s5, s5, s6
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_and_b32 s6, s5, 7
@@ -4122,12 +4089,12 @@ define amdgpu_ps i32 @s_copysign_out_v2f16_mag_v2f64_sign_v2f16(<2 x double> inr
 ; GFX11-NEXT:    s_or_b32 s6, s6, s8
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_add_i32 s5, s5, s6
-; GFX11-NEXT:    s_cmp_lt_i32 s0, 31
+; GFX11-NEXT:    s_cmp_lt_i32 s3, 31
 ; GFX11-NEXT:    s_cselect_b32 s5, s5, 0x7c00
-; GFX11-NEXT:    s_cmp_lg_u32 s3, 0
-; GFX11-NEXT:    s_cselect_b32 s3, s7, 0x7c00
-; GFX11-NEXT:    s_cmpk_eq_i32 s0, 0x40f
-; GFX11-NEXT:    s_cselect_b32 s0, s3, s5
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
+; GFX11-NEXT:    s_cselect_b32 s0, s7, 0x7c00
+; GFX11-NEXT:    s_cmpk_eq_i32 s3, 0x40f
+; GFX11-NEXT:    s_cselect_b32 s0, s0, s5
 ; GFX11-NEXT:    s_lshr_b32 s1, s1, 16
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_and_b32 s1, s1, 0x8000
@@ -6770,14 +6737,12 @@ define amdgpu_ps i32 @s_copysign_f16_0_f64(double inreg %sign) {
 ; SI:       ; %bb.0:
 ; SI-NEXT:    s_and_b32 s2, s1, 0x1ff
 ; SI-NEXT:    s_or_b32 s0, s2, s0
-; SI-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[2:3]
-; SI-NEXT:    s_lshr_b32 s0, s1, 8
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    s_lshr_b32 s2, s1, 8
 ; SI-NEXT:    s_bfe_u32 s3, s1, 0xb0014
-; SI-NEXT:    s_and_b32 s0, s0, 0xffe
-; SI-NEXT:    v_readfirstlane_b32 s2, v0
+; SI-NEXT:    s_and_b32 s2, s2, 0xffe
 ; SI-NEXT:    s_sub_i32 s4, 0x3f1, s3
-; SI-NEXT:    s_or_b32 s0, s0, s2
+; SI-NEXT:    s_or_b32 s0, s2, s0
 ; SI-NEXT:    v_med3_i32 v0, s4, 0, 13
 ; SI-NEXT:    s_or_b32 s2, s0, 0x1000
 ; SI-NEXT:    v_readfirstlane_b32 s4, v0
@@ -6815,14 +6780,12 @@ define amdgpu_ps i32 @s_copysign_f16_0_f64(double inreg %sign) {
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_and_b32 s2, s1, 0x1ff
 ; VI-NEXT:    s_or_b32 s0, s2, s0
-; VI-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[2:3]
-; VI-NEXT:    s_lshr_b32 s0, s1, 8
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
+; VI-NEXT:    s_lshr_b32 s2, s1, 8
 ; VI-NEXT:    s_bfe_u32 s3, s1, 0xb0014
-; VI-NEXT:    s_and_b32 s0, s0, 0xffe
-; VI-NEXT:    v_readfirstlane_b32 s2, v0
+; VI-NEXT:    s_and_b32 s2, s2, 0xffe
 ; VI-NEXT:    s_sub_i32 s4, 0x3f1, s3
-; VI-NEXT:    s_or_b32 s0, s0, s2
+; VI-NEXT:    s_or_b32 s0, s2, s0
 ; VI-NEXT:    v_med3_i32 v0, s4, 0, 13
 ; VI-NEXT:    s_or_b32 s2, s0, 0x1000
 ; VI-NEXT:    v_readfirstlane_b32 s4, v0
@@ -6860,14 +6823,12 @@ define amdgpu_ps i32 @s_copysign_f16_0_f64(double inreg %sign) {
 ; GFX9:       ; %bb.0:
 ; GFX9-NEXT:    s_and_b32 s2, s1, 0x1ff
 ; GFX9-NEXT:    s_or_b32 s0, s2, s0
-; GFX9-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[2:3]
-; GFX9-NEXT:    s_lshr_b32 s0, s1, 8
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    s_lshr_b32 s2, s1, 8
 ; GFX9-NEXT:    s_bfe_u32 s3, s1, 0xb0014
-; GFX9-NEXT:    s_and_b32 s0, s0, 0xffe
-; GFX9-NEXT:    v_readfirstlane_b32 s2, v0
+; GFX9-NEXT:    s_and_b32 s2, s2, 0xffe
 ; GFX9-NEXT:    s_sub_i32 s4, 0x3f1, s3
-; GFX9-NEXT:    s_or_b32 s0, s0, s2
+; GFX9-NEXT:    s_or_b32 s0, s2, s0
 ; GFX9-NEXT:    v_med3_i32 v0, s4, 0, 13
 ; GFX9-NEXT:    s_or_b32 s2, s0, 0x1000
 ; GFX9-NEXT:    v_readfirstlane_b32 s4, v0
@@ -6904,51 +6865,49 @@ define amdgpu_ps i32 @s_copysign_f16_0_f64(double inreg %sign) {
 ; GFX11-LABEL: s_copysign_f16_0_f64:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_and_b32 s2, s1, 0x1ff
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_or_b32 s0, s2, s0
-; GFX11-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_bfe_u32 s2, s1, 0xb0014
+; GFX11-NEXT:    s_sub_i32 s3, 0x3f1, s2
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    v_med3_i32 v0, s3, 0, 13
 ; GFX11-NEXT:    s_lshr_b32 s3, s1, 8
-; GFX11-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; GFX11-NEXT:    s_bfe_u32 s0, s1, 0xb0014
 ; GFX11-NEXT:    s_and_b32 s3, s3, 0xffe
-; GFX11-NEXT:    s_sub_i32 s2, 0x3f1, s0
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
-; GFX11-NEXT:    v_med3_i32 v1, s2, 0, 13
-; GFX11-NEXT:    v_readfirstlane_b32 s2, v0
-; GFX11-NEXT:    v_readfirstlane_b32 s4, v1
-; GFX11-NEXT:    s_or_b32 s2, s3, s2
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-NEXT:    s_or_b32 s0, s3, s0
+; GFX11-NEXT:    s_or_b32 s3, s0, 0x1000
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    s_or_b32 s3, s2, 0x1000
 ; GFX11-NEXT:    s_lshr_b32 s5, s3, s4
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_lshl_b32 s4, s5, s4
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_cmp_lg_u32 s4, s3
 ; GFX11-NEXT:    s_cselect_b32 s3, 1, 0
-; GFX11-NEXT:    s_addk_i32 s0, 0xfc10
+; GFX11-NEXT:    s_addk_i32 s2, 0xfc10
 ; GFX11-NEXT:    s_or_b32 s3, s5, s3
-; GFX11-NEXT:    s_lshl_b32 s4, s0, 12
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    s_or_b32 s2, s2, s4
-; GFX11-NEXT:    s_cmp_lt_i32 s0, 1
-; GFX11-NEXT:    s_cselect_b32 s2, s3, s2
-; GFX11-NEXT:    s_and_b32 s3, s2, 7
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    s_lshl_b32 s4, s2, 12
+; GFX11-NEXT:    s_or_b32 s0, s0, s4
+; GFX11-NEXT:    s_cmp_lt_i32 s2, 1
+; GFX11-NEXT:    s_cselect_b32 s0, s3, s0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s3, s0, 7
 ; GFX11-NEXT:    s_cmp_gt_i32 s3, 5
 ; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX11-NEXT:    s_cmp_eq_u32 s3, 3
 ; GFX11-NEXT:    s_cselect_b32 s3, 1, 0
-; GFX11-NEXT:    s_lshr_b32 s2, s2, 2
+; GFX11-NEXT:    s_lshr_b32 s0, s0, 2
 ; GFX11-NEXT:    s_or_b32 s3, s3, s4
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    s_add_i32 s2, s2, s3
-; GFX11-NEXT:    s_cmp_lt_i32 s0, 31
+; GFX11-NEXT:    s_add_i32 s0, s0, s3
+; GFX11-NEXT:    s_cmp_lt_i32 s2, 31
 ; GFX11-NEXT:    s_cselect_b32 s3, -1, 0
-; GFX11-NEXT:    s_cmpk_lg_i32 s0, 0x40f
-; GFX11-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX11-NEXT:    s_and_b32 s0, s0, s3
+; GFX11-NEXT:    s_cmpk_lg_i32 s2, 0x40f
+; GFX11-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-NEXT:    s_and_b32 s2, s2, s3
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
-; GFX11-NEXT:    s_cselect_b32 s0, s2, 0x7c00
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, s0, 0x7c00
 ; GFX11-NEXT:    s_lshr_b32 s1, s1, 16
 ; GFX11-NEXT:    s_or_b32 s0, s1, s0
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)

diff  --git a/llvm/test/CodeGen/AMDGPU/fix-sgpr-copies-phi-regression-issue130646-issue130119.ll b/llvm/test/CodeGen/AMDGPU/fix-sgpr-copies-phi-regression-issue130646-issue130119.ll
index 0c25ffd80dbad..8b11d1a22c25f 100644
--- a/llvm/test/CodeGen/AMDGPU/fix-sgpr-copies-phi-regression-issue130646-issue130119.ll
+++ b/llvm/test/CodeGen/AMDGPU/fix-sgpr-copies-phi-regression-issue130646-issue130119.ll
@@ -12,9 +12,9 @@ define double @issue130646(i64 %arg) {
 ; CHECK-NEXT:    v_mov_b32_e32 v2, 0
 ; CHECK-NEXT:    v_mov_b32_e32 v3, 0
 ; CHECK-NEXT:    s_mov_b64 s[4:5], 0
-; CHECK-NEXT:    s_branch .LBB0_2
+; CHECK-NEXT:    s_branch .LBB0_3
 ; CHECK-NEXT:  .LBB0_1: ; %for.body.5
-; CHECK-NEXT:    ; in Loop: Header=BB0_2 Depth=1
+; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
 ; CHECK-NEXT:    s_lshr_b64 s[6:7], s[4:5], 1
 ; CHECK-NEXT:    v_or_b32_e32 v3, s7, v3
 ; CHECK-NEXT:    v_or_b32_e32 v2, s6, v2
@@ -23,17 +23,25 @@ define double @issue130646(i64 %arg) {
 ; CHECK-NEXT:    v_or3_b32 v3, v3, v1, s7
 ; CHECK-NEXT:    v_or3_b32 v2, v2, v0, s6
 ; CHECK-NEXT:    s_lshr_b64 s[4:5], s[4:5], 8
-; CHECK-NEXT:    s_cbranch_execz .LBB0_4
-; CHECK-NEXT:  .LBB0_2: ; %for.body
+; CHECK-NEXT:    s_mov_b64 s[6:7], 0
+; CHECK-NEXT:  .LBB0_2: ; %Flow
+; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; CHECK-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; CHECK-NEXT:    s_cselect_b32 s6, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s6, 1
+; CHECK-NEXT:    s_cbranch_scc0 .LBB0_5
+; CHECK-NEXT:  .LBB0_3: ; %for.body
 ; CHECK-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CHECK-NEXT:    s_cmp_eq_u64 s[4:5], 0
 ; CHECK-NEXT:    v_readfirstlane_b32 s8, v0
 ; CHECK-NEXT:    v_readfirstlane_b32 s9, v1
 ; CHECK-NEXT:    s_cbranch_scc0 .LBB0_1
-; CHECK-NEXT:  ; %bb.3:
+; CHECK-NEXT:  ; %bb.4: ; in Loop: Header=BB0_3 Depth=1
+; CHECK-NEXT:    s_mov_b64 s[6:7], -1
 ; CHECK-NEXT:    ; implicit-def: $vgpr2_vgpr3
 ; CHECK-NEXT:    s_mov_b64 s[4:5], s[8:9]
-; CHECK-NEXT:  .LBB0_4: ; %for.cond.cleanup
+; CHECK-NEXT:    s_branch .LBB0_2
+; CHECK-NEXT:  .LBB0_5: ; %for.cond.cleanup
 ; CHECK-NEXT:    v_mov_b32_e32 v0, 0
 ; CHECK-NEXT:    v_mov_b32_e32 v1, 0
 ; CHECK-NEXT:    s_setpc_b64 s[30:31]
@@ -71,68 +79,72 @@ define amdgpu_cs void @issue130119(i1 %arg) {
 ; CHECK-LABEL: issue130119:
 ; CHECK:       ; %bb.0: ; %bb
 ; CHECK-NEXT:    v_and_b32_e32 v0, 1, v0
-; CHECK-NEXT:    v_cmp_eq_u32_e64 s[0:1], 1, v0
-; CHECK-NEXT:    s_mov_b32 s16, 0
-; CHECK-NEXT:    s_mov_b64 s[2:3], 0
+; CHECK-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v0
+; CHECK-NEXT:    s_mov_b32 s14, 0
+; CHECK-NEXT:    s_mov_b64 s[0:1], 0
 ; CHECK-NEXT:    s_branch .LBB1_2
 ; CHECK-NEXT:  .LBB1_1: ; %Flow2
 ; CHECK-NEXT:    ; in Loop: Header=BB1_2 Depth=1
-; CHECK-NEXT:    s_or_b64 exec, exec, s[6:7]
-; CHECK-NEXT:    s_and_b64 s[4:5], exec, s[4:5]
-; CHECK-NEXT:    s_or_b64 s[2:3], s[4:5], s[2:3]
-; CHECK-NEXT:    s_andn2_b64 exec, exec, s[2:3]
+; CHECK-NEXT:    s_or_b64 exec, exec, s[2:3]
+; CHECK-NEXT:    s_and_b64 s[2:3], exec, s[4:5]
+; CHECK-NEXT:    s_or_b64 s[0:1], s[2:3], s[0:1]
+; CHECK-NEXT:    s_andn2_b64 exec, exec, s[0:1]
 ; CHECK-NEXT:    s_cbranch_execz .LBB1_10
 ; CHECK-NEXT:  .LBB1_2: ; %bb1
 ; CHECK-NEXT:    ; =>This Loop Header: Depth=1
 ; CHECK-NEXT:    ; Child Loop BB1_4 Depth 2
-; CHECK-NEXT:    s_and_b32 s6, s16, 1
-; CHECK-NEXT:    s_cmp_eq_u32 s6, 0
+; CHECK-NEXT:    s_and_b32 s2, s14, 1
+; CHECK-NEXT:    s_cmp_eq_u32 s2, 0
 ; CHECK-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; CHECK-NEXT:    s_cmp_eq_u32 s6, 1
-; CHECK-NEXT:    s_cselect_b64 s[8:9], -1, 0
-; CHECK-NEXT:    s_mov_b64 s[10:11], 0
-; CHECK-NEXT:    ; implicit-def: $sgpr6_sgpr7
+; CHECK-NEXT:    s_cmp_eq_u32 s2, 1
+; CHECK-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; CHECK-NEXT:    s_mov_b64 s[8:9], 0
+; CHECK-NEXT:    ; implicit-def: $sgpr2_sgpr3
 ; CHECK-NEXT:    s_branch .LBB1_4
 ; CHECK-NEXT:  .LBB1_3: ; %Flow1
 ; CHECK-NEXT:    ; in Loop: Header=BB1_4 Depth=2
-; CHECK-NEXT:    s_xor_b64 s[14:15], s[14:15], -1
-; CHECK-NEXT:    s_and_b64 s[12:13], exec, s[12:13]
-; CHECK-NEXT:    s_or_b64 s[10:11], s[12:13], s[10:11]
-; CHECK-NEXT:    s_andn2_b64 s[6:7], s[6:7], exec
-; CHECK-NEXT:    s_and_b64 s[12:13], s[14:15], exec
-; CHECK-NEXT:    s_or_b64 s[6:7], s[6:7], s[12:13]
-; CHECK-NEXT:    s_andn2_b64 exec, exec, s[10:11]
+; CHECK-NEXT:    s_xor_b64 s[12:13], s[12:13], -1
+; CHECK-NEXT:    s_and_b64 s[10:11], exec, s[10:11]
+; CHECK-NEXT:    s_or_b64 s[8:9], s[10:11], s[8:9]
+; CHECK-NEXT:    s_andn2_b64 s[2:3], s[2:3], exec
+; CHECK-NEXT:    s_and_b64 s[10:11], s[12:13], exec
+; CHECK-NEXT:    s_or_b64 s[2:3], s[2:3], s[10:11]
+; CHECK-NEXT:    s_andn2_b64 exec, exec, s[8:9]
 ; CHECK-NEXT:    s_cbranch_execz .LBB1_8
 ; CHECK-NEXT:  .LBB1_4: ; %bb3
 ; CHECK-NEXT:    ; Parent Loop BB1_2 Depth=1
 ; CHECK-NEXT:    ; => This Inner Loop Header: Depth=2
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
-; CHECK-NEXT:    s_mov_b64 s[14:15], s[4:5]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB1_6
+; CHECK-NEXT:    s_and_b64 s[10:11], s[6:7], exec
+; CHECK-NEXT:    s_cselect_b32 s10, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s10, 1
+; CHECK-NEXT:    s_mov_b64 s[12:13], s[4:5]
+; CHECK-NEXT:    s_cbranch_scc1 .LBB1_6
 ; CHECK-NEXT:  ; %bb.5: ; %bb7
 ; CHECK-NEXT:    ; in Loop: Header=BB1_4 Depth=2
-; CHECK-NEXT:    s_mov_b64 s[14:15], -1
+; CHECK-NEXT:    s_mov_b64 s[12:13], -1
 ; CHECK-NEXT:  .LBB1_6: ; %Flow
 ; CHECK-NEXT:    ; in Loop: Header=BB1_4 Depth=2
+; CHECK-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; CHECK-NEXT:    s_cselect_b32 s12, 1, 0
+; CHECK-NEXT:    s_mov_b64 s[10:11], -1
+; CHECK-NEXT:    s_cmp_lg_u32 s12, 1
 ; CHECK-NEXT:    s_mov_b64 s[12:13], -1
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[14:15]
-; CHECK-NEXT:    s_mov_b64 s[14:15], -1
-; CHECK-NEXT:    s_cbranch_vccnz .LBB1_3
+; CHECK-NEXT:    s_cbranch_scc1 .LBB1_3
 ; CHECK-NEXT:  ; %bb.7: ; %bb8
 ; CHECK-NEXT:    ; in Loop: Header=BB1_4 Depth=2
-; CHECK-NEXT:    s_mov_b64 s[14:15], 0
-; CHECK-NEXT:    s_orn2_b64 s[12:13], s[0:1], exec
+; CHECK-NEXT:    s_mov_b64 s[12:13], 0
+; CHECK-NEXT:    s_orn2_b64 s[10:11], vcc, exec
 ; CHECK-NEXT:    s_branch .LBB1_3
 ; CHECK-NEXT:  .LBB1_8: ; %loop.exit.guard
 ; CHECK-NEXT:    ; in Loop: Header=BB1_2 Depth=1
-; CHECK-NEXT:    s_or_b64 exec, exec, s[10:11]
+; CHECK-NEXT:    s_or_b64 exec, exec, s[8:9]
 ; CHECK-NEXT:    s_mov_b64 s[4:5], -1
-; CHECK-NEXT:    s_and_saveexec_b64 s[8:9], s[6:7]
-; CHECK-NEXT:    s_xor_b64 s[6:7], exec, s[8:9]
+; CHECK-NEXT:    s_and_saveexec_b64 s[6:7], s[2:3]
+; CHECK-NEXT:    s_xor_b64 s[2:3], exec, s[6:7]
 ; CHECK-NEXT:    s_cbranch_execz .LBB1_1
 ; CHECK-NEXT:  ; %bb.9: ; %bb10
 ; CHECK-NEXT:    ; in Loop: Header=BB1_2 Depth=1
-; CHECK-NEXT:    s_or_b32 s16, s16, 1
+; CHECK-NEXT:    s_or_b32 s14, s14, 1
 ; CHECK-NEXT:    s_xor_b64 s[4:5], exec, -1
 ; CHECK-NEXT:    s_branch .LBB1_1
 ; CHECK-NEXT:  .LBB1_10: ; %DummyReturnBlock

diff  --git a/llvm/test/CodeGen/AMDGPU/flat-saddr-atomics.ll b/llvm/test/CodeGen/AMDGPU/flat-saddr-atomics.ll
index 2921dcf067b25..678d4ffc7f094 100644
--- a/llvm/test/CodeGen/AMDGPU/flat-saddr-atomics.ll
+++ b/llvm/test/CodeGen/AMDGPU/flat-saddr-atomics.ll
@@ -11896,29 +11896,37 @@ define double @flat_atomic_fadd_f64_saddr_rtn(ptr inreg %ptr, double %data) {
 ; GFX1250-SDAG-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 0x50
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, -1, 0
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX1250-SDAG-NEXT:    s_cbranch_vccz .LBB110_3
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc0 .LBB110_3
 ; GFX1250-SDAG-NEXT:  ; %bb.1: ; %atomicrmw.check.private
 ; GFX1250-SDAG-NEXT:    s_xor_b32 s2, s1, src_flat_scratch_base_hi
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-NEXT:    s_cmp_lt_u32 s2, 0x4000000
-; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, -1, 0
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX1250-SDAG-NEXT:    s_cbranch_vccz .LBB110_4
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc0 .LBB110_4
 ; GFX1250-SDAG-NEXT:  ; %bb.2: ; %atomicrmw.global
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v2, 0
+; GFX1250-SDAG-NEXT:    s_mov_b32 s2, 0
 ; GFX1250-SDAG-NEXT:    s_wait_storecnt 0x0
 ; GFX1250-SDAG-NEXT:    global_atomic_add_f64 v[2:3], v2, v[0:1], s[0:1] th:TH_ATOMIC_RETURN
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
-; GFX1250-SDAG-NEXT:    s_cbranch_execz .LBB110_5
-; GFX1250-SDAG-NEXT:    s_branch .LBB110_6
+; GFX1250-SDAG-NEXT:    s_branch .LBB110_5
 ; GFX1250-SDAG-NEXT:  .LBB110_3:
+; GFX1250-SDAG-NEXT:    s_mov_b32 s2, -1
 ; GFX1250-SDAG-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX1250-SDAG-NEXT:    s_branch .LBB110_7
+; GFX1250-SDAG-NEXT:    s_branch .LBB110_8
 ; GFX1250-SDAG-NEXT:  .LBB110_4:
+; GFX1250-SDAG-NEXT:    s_mov_b32 s2, -1
 ; GFX1250-SDAG-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX1250-SDAG-NEXT:  .LBB110_5: ; %atomicrmw.private
+; GFX1250-SDAG-NEXT:  .LBB110_5: ; %Flow
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc1 .LBB110_7
+; GFX1250-SDAG-NEXT:  ; %bb.6: ; %atomicrmw.private
 ; GFX1250-SDAG-NEXT:    s_sub_co_i32 s2, s0, src_flat_scratch_base_lo
 ; GFX1250-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, s2, -1
@@ -11926,10 +11934,16 @@ define double @flat_atomic_fadd_f64_saddr_rtn(ptr inreg %ptr, double %data) {
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_add_f64_e32 v[4:5], v[2:3], v[0:1]
 ; GFX1250-SDAG-NEXT:    scratch_store_b64 off, v[4:5], s2
-; GFX1250-SDAG-NEXT:  .LBB110_6: ; %Flow1
+; GFX1250-SDAG-NEXT:  .LBB110_7: ; %Flow1
 ; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
-; GFX1250-SDAG-NEXT:    s_cbranch_execnz .LBB110_8
-; GFX1250-SDAG-NEXT:  .LBB110_7: ; %atomicrmw.shared
+; GFX1250-SDAG-NEXT:    s_mov_b32 s2, 0
+; GFX1250-SDAG-NEXT:  .LBB110_8: ; %Flow2
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc1 .LBB110_10
+; GFX1250-SDAG-NEXT:  ; %bb.9: ; %atomicrmw.shared
 ; GFX1250-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX1250-SDAG-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
@@ -11937,7 +11951,7 @@ define double @flat_atomic_fadd_f64_saddr_rtn(ptr inreg %ptr, double %data) {
 ; GFX1250-SDAG-NEXT:    s_wait_storecnt 0x0
 ; GFX1250-SDAG-NEXT:    ds_add_rtn_f64 v[2:3], v2, v[0:1]
 ; GFX1250-SDAG-NEXT:    s_wait_dscnt 0x0
-; GFX1250-SDAG-NEXT:  .LBB110_8: ; %atomicrmw.end
+; GFX1250-SDAG-NEXT:  .LBB110_10: ; %atomicrmw.end
 ; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v0, v2 :: v_dual_mov_b32 v1, v3
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -12005,42 +12019,54 @@ define double @flat_atomic_fadd_f64_saddr_rtn(ptr inreg %ptr, double %data) {
 ; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], src_shared_base
 ; GFX950-SDAG-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-SDAG-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-SDAG-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GFX950-SDAG-NEXT:    s_cbranch_vccz .LBB110_3
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-SDAG-NEXT:    s_cbranch_scc0 .LBB110_3
 ; GFX950-SDAG-NEXT:  ; %bb.1: ; %atomicrmw.check.private
 ; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-SDAG-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-SDAG-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GFX950-SDAG-NEXT:    s_cbranch_vccz .LBB110_4
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-SDAG-NEXT:    s_cbranch_scc0 .LBB110_4
 ; GFX950-SDAG-NEXT:  ; %bb.2: ; %atomicrmw.global
 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX950-SDAG-NEXT:    global_atomic_add_f64 v[2:3], v2, v[0:1], s[0:1] sc0
-; GFX950-SDAG-NEXT:    s_cbranch_execz .LBB110_5
-; GFX950-SDAG-NEXT:    s_branch .LBB110_6
+; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-SDAG-NEXT:    s_branch .LBB110_5
 ; GFX950-SDAG-NEXT:  .LBB110_3:
+; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-SDAG-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX950-SDAG-NEXT:    s_branch .LBB110_7
+; GFX950-SDAG-NEXT:    s_branch .LBB110_8
 ; GFX950-SDAG-NEXT:  .LBB110_4:
+; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-SDAG-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX950-SDAG-NEXT:  .LBB110_5: ; %atomicrmw.private
+; GFX950-SDAG-NEXT:  .LBB110_5: ; %Flow
+; GFX950-SDAG-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-SDAG-NEXT:    s_cbranch_scc1 .LBB110_7
+; GFX950-SDAG-NEXT:  ; %bb.6: ; %atomicrmw.private
 ; GFX950-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-SDAG-NEXT:    s_cselect_b32 s2, s0, -1
 ; GFX950-SDAG-NEXT:    scratch_load_dwordx2 v[2:3], off, s2
 ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-SDAG-NEXT:    v_add_f64 v[4:5], v[2:3], v[0:1]
 ; GFX950-SDAG-NEXT:    scratch_store_dwordx2 off, v[4:5], s2
-; GFX950-SDAG-NEXT:  .LBB110_6: ; %Flow1
-; GFX950-SDAG-NEXT:    s_cbranch_execnz .LBB110_8
-; GFX950-SDAG-NEXT:  .LBB110_7: ; %atomicrmw.shared
+; GFX950-SDAG-NEXT:  .LBB110_7: ; %Flow1
+; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-SDAG-NEXT:  .LBB110_8: ; %Flow2
+; GFX950-SDAG-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-SDAG-NEXT:    s_cbranch_scc1 .LBB110_10
+; GFX950-SDAG-NEXT:  ; %bb.9: ; %atomicrmw.shared
 ; GFX950-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-SDAG-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX950-SDAG-NEXT:    ds_add_rtn_f64 v[2:3], v2, v[0:1]
 ; GFX950-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-SDAG-NEXT:  .LBB110_8: ; %atomicrmw.end
+; GFX950-SDAG-NEXT:  .LBB110_10: ; %atomicrmw.end
 ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, v2
 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, v3
@@ -12109,33 +12135,31 @@ define void @flat_atomic_fadd_f64_saddr_nortn(ptr inreg %ptr, double %data) {
 ; GFX1250-SDAG-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 0x50
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, -1, 0
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX1250-SDAG-NEXT:    s_mov_b32 s2, -1
-; GFX1250-SDAG-NEXT:    s_cbranch_vccnz .LBB111_3
-; GFX1250-SDAG-NEXT:  ; %bb.1: ; %Flow2
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX1250-SDAG-NEXT:    s_cbranch_vccz .LBB111_8
-; GFX1250-SDAG-NEXT:  .LBB111_2: ; %atomicrmw.phi
-; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
-; GFX1250-SDAG-NEXT:  .LBB111_3: ; %atomicrmw.check.private
+; GFX1250-SDAG-NEXT:    s_cbranch_scc0 .LBB111_6
+; GFX1250-SDAG-NEXT:  ; %bb.1: ; %atomicrmw.check.private
 ; GFX1250-SDAG-NEXT:    s_xor_b32 s2, s1, src_flat_scratch_base_hi
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-NEXT:    s_cmp_lt_u32 s2, 0x4000000
-; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, -1, 0
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX1250-SDAG-NEXT:    s_mov_b32 s2, -1
-; GFX1250-SDAG-NEXT:    s_cbranch_vccz .LBB111_5
-; GFX1250-SDAG-NEXT:  ; %bb.4: ; %atomicrmw.global
+; GFX1250-SDAG-NEXT:    s_cbranch_scc0 .LBB111_3
+; GFX1250-SDAG-NEXT:  ; %bb.2: ; %atomicrmw.global
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX1250-SDAG-NEXT:    s_mov_b32 s2, 0
 ; GFX1250-SDAG-NEXT:    s_wait_storecnt 0x0
 ; GFX1250-SDAG-NEXT:    global_atomic_add_f64 v2, v[0:1], s[0:1]
 ; GFX1250-SDAG-NEXT:    s_wait_storecnt 0x0
-; GFX1250-SDAG-NEXT:  .LBB111_5: ; %Flow
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX1250-SDAG-NEXT:    s_cbranch_vccnz .LBB111_7
-; GFX1250-SDAG-NEXT:  ; %bb.6: ; %atomicrmw.private
+; GFX1250-SDAG-NEXT:  .LBB111_3: ; %Flow
+; GFX1250-SDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc1 .LBB111_5
+; GFX1250-SDAG-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX1250-SDAG-NEXT:    s_sub_co_i32 s2, s0, src_flat_scratch_base_lo
 ; GFX1250-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, s2, -1
@@ -12143,10 +12167,16 @@ define void @flat_atomic_fadd_f64_saddr_nortn(ptr inreg %ptr, double %data) {
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_add_f64_e32 v[2:3], v[2:3], v[0:1]
 ; GFX1250-SDAG-NEXT:    scratch_store_b64 off, v[2:3], s2
-; GFX1250-SDAG-NEXT:  .LBB111_7: ; %Flow1
+; GFX1250-SDAG-NEXT:  .LBB111_5: ; %Flow1
 ; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
-; GFX1250-SDAG-NEXT:    s_cbranch_execnz .LBB111_2
-; GFX1250-SDAG-NEXT:  .LBB111_8: ; %atomicrmw.shared
+; GFX1250-SDAG-NEXT:    s_mov_b32 s2, 0
+; GFX1250-SDAG-NEXT:  .LBB111_6: ; %Flow2
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc1 .LBB111_8
+; GFX1250-SDAG-NEXT:  ; %bb.7: ; %atomicrmw.shared
 ; GFX1250-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX1250-SDAG-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
@@ -12154,6 +12184,7 @@ define void @flat_atomic_fadd_f64_saddr_nortn(ptr inreg %ptr, double %data) {
 ; GFX1250-SDAG-NEXT:    s_wait_storecnt 0x0
 ; GFX1250-SDAG-NEXT:    ds_add_f64 v2, v[0:1]
 ; GFX1250-SDAG-NEXT:    s_wait_dscnt 0x0
+; GFX1250-SDAG-NEXT:  .LBB111_8: ; %atomicrmw.phi
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX1250-GISEL-LABEL: flat_atomic_fadd_f64_saddr_nortn:
@@ -12217,45 +12248,48 @@ define void @flat_atomic_fadd_f64_saddr_nortn(ptr inreg %ptr, double %data) {
 ; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], src_shared_base
 ; GFX950-SDAG-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-SDAG-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-SDAG-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], -1
-; GFX950-SDAG-NEXT:    s_cbranch_vccnz .LBB111_3
-; GFX950-SDAG-NEXT:  ; %bb.1: ; %Flow2
-; GFX950-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GFX950-SDAG-NEXT:    s_cbranch_vccz .LBB111_8
-; GFX950-SDAG-NEXT:  .LBB111_2: ; %atomicrmw.phi
-; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
-; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
-; GFX950-SDAG-NEXT:  .LBB111_3: ; %atomicrmw.check.private
+; GFX950-SDAG-NEXT:    s_cbranch_scc0 .LBB111_6
+; GFX950-SDAG-NEXT:  ; %bb.1: ; %atomicrmw.check.private
 ; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-SDAG-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-SDAG-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], -1
-; GFX950-SDAG-NEXT:    s_cbranch_vccz .LBB111_5
-; GFX950-SDAG-NEXT:  ; %bb.4: ; %atomicrmw.global
+; GFX950-SDAG-NEXT:    s_cbranch_scc0 .LBB111_3
+; GFX950-SDAG-NEXT:  ; %bb.2: ; %atomicrmw.global
 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX950-SDAG-NEXT:    global_atomic_add_f64 v2, v[0:1], s[0:1]
 ; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], 0
-; GFX950-SDAG-NEXT:  .LBB111_5: ; %Flow
-; GFX950-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GFX950-SDAG-NEXT:    s_cbranch_vccnz .LBB111_7
-; GFX950-SDAG-NEXT:  ; %bb.6: ; %atomicrmw.private
+; GFX950-SDAG-NEXT:  .LBB111_3: ; %Flow
+; GFX950-SDAG-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-SDAG-NEXT:    s_cbranch_scc1 .LBB111_5
+; GFX950-SDAG-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-SDAG-NEXT:    s_cselect_b32 s2, s0, -1
 ; GFX950-SDAG-NEXT:    scratch_load_dwordx2 v[2:3], off, s2
 ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-SDAG-NEXT:    v_add_f64 v[2:3], v[2:3], v[0:1]
 ; GFX950-SDAG-NEXT:    scratch_store_dwordx2 off, v[2:3], s2
-; GFX950-SDAG-NEXT:  .LBB111_7: ; %Flow1
-; GFX950-SDAG-NEXT:    s_cbranch_execnz .LBB111_2
-; GFX950-SDAG-NEXT:  .LBB111_8: ; %atomicrmw.shared
+; GFX950-SDAG-NEXT:  .LBB111_5: ; %Flow1
+; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-SDAG-NEXT:  .LBB111_6: ; %Flow2
+; GFX950-SDAG-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-SDAG-NEXT:    s_cbranch_scc1 .LBB111_8
+; GFX950-SDAG-NEXT:  ; %bb.7: ; %atomicrmw.shared
 ; GFX950-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-SDAG-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX950-SDAG-NEXT:    ds_add_f64 v2, v[0:1]
-; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-SDAG-NEXT:  .LBB111_8: ; %atomicrmw.phi
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX950-GISEL-LABEL: flat_atomic_fadd_f64_saddr_nortn:
@@ -12316,20 +12350,27 @@ define double @flat_atomic_fmax_f64_saddr_rtn(ptr inreg %ptr, double %data) {
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-NEXT:    s_xor_b32 s2, s1, src_flat_scratch_base_hi
 ; GFX1250-SDAG-NEXT:    s_cmp_lt_u32 s2, 0x4000000
-; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX1250-SDAG-NEXT:    s_cbranch_vccz .LBB112_2
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc0 .LBB112_2
 ; GFX1250-SDAG-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v2, 0
+; GFX1250-SDAG-NEXT:    s_mov_b32 s2, 0
 ; GFX1250-SDAG-NEXT:    s_wait_storecnt 0x0
 ; GFX1250-SDAG-NEXT:    flat_atomic_max_num_f64 v[2:3], v2, v[0:1], s[0:1] th:TH_ATOMIC_RETURN
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
-; GFX1250-SDAG-NEXT:    s_cbranch_execz .LBB112_3
-; GFX1250-SDAG-NEXT:    s_branch .LBB112_4
+; GFX1250-SDAG-NEXT:    s_branch .LBB112_3
 ; GFX1250-SDAG-NEXT:  .LBB112_2:
+; GFX1250-SDAG-NEXT:    s_mov_b32 s2, -1
 ; GFX1250-SDAG-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX1250-SDAG-NEXT:  .LBB112_3: ; %atomicrmw.private
+; GFX1250-SDAG-NEXT:  .LBB112_3: ; %Flow
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc1 .LBB112_5
+; GFX1250-SDAG-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX1250-SDAG-NEXT:    s_sub_co_i32 s2, s0, src_flat_scratch_base_lo
 ; GFX1250-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX1250-SDAG-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]
@@ -12340,7 +12381,7 @@ define double @flat_atomic_fmax_f64_saddr_rtn(ptr inreg %ptr, double %data) {
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_max_num_f64_e32 v[0:1], v[4:5], v[0:1]
 ; GFX1250-SDAG-NEXT:    scratch_store_b64 off, v[0:1], s0
-; GFX1250-SDAG-NEXT:  .LBB112_4: ; %atomicrmw.end
+; GFX1250-SDAG-NEXT:  .LBB112_5: ; %atomicrmw.end
 ; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v0, v2 :: v_dual_mov_b32 v1, v3
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
@@ -12391,18 +12432,24 @@ define double @flat_atomic_fmax_f64_saddr_rtn(ptr inreg %ptr, double %data) {
 ; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-SDAG-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-SDAG-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-SDAG-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GFX950-SDAG-NEXT:    s_cbranch_vccz .LBB112_2
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-SDAG-NEXT:    s_cbranch_scc0 .LBB112_2
 ; GFX950-SDAG-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-SDAG-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-SDAG-NEXT:    flat_atomic_max_f64 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-SDAG-NEXT:    s_cbranch_execz .LBB112_3
-; GFX950-SDAG-NEXT:    s_branch .LBB112_4
+; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-SDAG-NEXT:    s_branch .LBB112_3
 ; GFX950-SDAG-NEXT:  .LBB112_2:
+; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-SDAG-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX950-SDAG-NEXT:  .LBB112_3: ; %atomicrmw.private
+; GFX950-SDAG-NEXT:  .LBB112_3: ; %Flow
+; GFX950-SDAG-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-SDAG-NEXT:    s_cbranch_scc1 .LBB112_5
+; GFX950-SDAG-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-SDAG-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-SDAG-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -12411,7 +12458,7 @@ define double @flat_atomic_fmax_f64_saddr_rtn(ptr inreg %ptr, double %data) {
 ; GFX950-SDAG-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]
 ; GFX950-SDAG-NEXT:    v_max_f64 v[0:1], v[4:5], v[0:1]
 ; GFX950-SDAG-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-SDAG-NEXT:  .LBB112_4: ; %atomicrmw.end
+; GFX950-SDAG-NEXT:  .LBB112_5: ; %atomicrmw.end
 ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, v2
 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, v3
@@ -12464,23 +12511,24 @@ define void @flat_atomic_fmax_f64_saddr_nortn(ptr inreg %ptr, double %data) {
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-NEXT:    s_xor_b32 s2, s1, src_flat_scratch_base_hi
 ; GFX1250-SDAG-NEXT:    s_cmp_lt_u32 s2, 0x4000000
-; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX1250-SDAG-NEXT:    s_mov_b32 s2, -1
-; GFX1250-SDAG-NEXT:    s_cbranch_vccnz .LBB113_3
-; GFX1250-SDAG-NEXT:  ; %bb.1: ; %Flow
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX1250-SDAG-NEXT:    s_cbranch_vccz .LBB113_4
-; GFX1250-SDAG-NEXT:  .LBB113_2: ; %atomicrmw.phi
-; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
-; GFX1250-SDAG-NEXT:  .LBB113_3: ; %atomicrmw.global
+; GFX1250-SDAG-NEXT:    s_cbranch_scc0 .LBB113_2
+; GFX1250-SDAG-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v2, 0
+; GFX1250-SDAG-NEXT:    s_mov_b32 s2, 0
 ; GFX1250-SDAG-NEXT:    s_wait_storecnt 0x0
 ; GFX1250-SDAG-NEXT:    flat_atomic_max_num_f64 v2, v[0:1], s[0:1]
 ; GFX1250-SDAG-NEXT:    s_wait_storecnt_dscnt 0x0
-; GFX1250-SDAG-NEXT:    s_cbranch_execnz .LBB113_2
-; GFX1250-SDAG-NEXT:  .LBB113_4: ; %atomicrmw.private
+; GFX1250-SDAG-NEXT:  .LBB113_2: ; %Flow
+; GFX1250-SDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc1 .LBB113_4
+; GFX1250-SDAG-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX1250-SDAG-NEXT:    s_sub_co_i32 s2, s0, src_flat_scratch_base_lo
 ; GFX1250-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX1250-SDAG-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]
@@ -12491,6 +12539,7 @@ define void @flat_atomic_fmax_f64_saddr_nortn(ptr inreg %ptr, double %data) {
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_max_num_f64_e32 v[0:1], v[2:3], v[0:1]
 ; GFX1250-SDAG-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX1250-SDAG-NEXT:  .LBB113_4: ; %atomicrmw.phi
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX1250-GISEL-LABEL: flat_atomic_fmax_f64_saddr_nortn:
@@ -12537,22 +12586,21 @@ define void @flat_atomic_fmax_f64_saddr_nortn(ptr inreg %ptr, double %data) {
 ; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-SDAG-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-SDAG-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-SDAG-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], -1
-; GFX950-SDAG-NEXT:    s_cbranch_vccnz .LBB113_3
-; GFX950-SDAG-NEXT:  ; %bb.1: ; %Flow
-; GFX950-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GFX950-SDAG-NEXT:    s_cbranch_vccz .LBB113_4
-; GFX950-SDAG-NEXT:  .LBB113_2: ; %atomicrmw.phi
-; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
-; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
-; GFX950-SDAG-NEXT:  .LBB113_3: ; %atomicrmw.global
+; GFX950-SDAG-NEXT:    s_cbranch_scc0 .LBB113_2
+; GFX950-SDAG-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-SDAG-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-SDAG-NEXT:    flat_atomic_max_f64 v[2:3], v[0:1]
 ; GFX950-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-SDAG-NEXT:    s_cbranch_execnz .LBB113_2
-; GFX950-SDAG-NEXT:  .LBB113_4: ; %atomicrmw.private
+; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-SDAG-NEXT:  .LBB113_2: ; %Flow
+; GFX950-SDAG-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-SDAG-NEXT:    s_cbranch_scc1 .LBB113_4
+; GFX950-SDAG-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX950-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-SDAG-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-SDAG-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -12561,6 +12609,7 @@ define void @flat_atomic_fmax_f64_saddr_nortn(ptr inreg %ptr, double %data) {
 ; GFX950-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
 ; GFX950-SDAG-NEXT:    v_max_f64 v[0:1], v[2:3], v[0:1]
 ; GFX950-SDAG-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
+; GFX950-SDAG-NEXT:  .LBB113_4: ; %atomicrmw.phi
 ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -12608,20 +12657,27 @@ define double @flat_atomic_fmin_f64_saddr_rtn(ptr inreg %ptr, double %data) {
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-NEXT:    s_xor_b32 s2, s1, src_flat_scratch_base_hi
 ; GFX1250-SDAG-NEXT:    s_cmp_lt_u32 s2, 0x4000000
-; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX1250-SDAG-NEXT:    s_cbranch_vccz .LBB114_2
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc0 .LBB114_2
 ; GFX1250-SDAG-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v2, 0
+; GFX1250-SDAG-NEXT:    s_mov_b32 s2, 0
 ; GFX1250-SDAG-NEXT:    s_wait_storecnt 0x0
 ; GFX1250-SDAG-NEXT:    flat_atomic_min_num_f64 v[2:3], v2, v[0:1], s[0:1] th:TH_ATOMIC_RETURN
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
-; GFX1250-SDAG-NEXT:    s_cbranch_execz .LBB114_3
-; GFX1250-SDAG-NEXT:    s_branch .LBB114_4
+; GFX1250-SDAG-NEXT:    s_branch .LBB114_3
 ; GFX1250-SDAG-NEXT:  .LBB114_2:
+; GFX1250-SDAG-NEXT:    s_mov_b32 s2, -1
 ; GFX1250-SDAG-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX1250-SDAG-NEXT:  .LBB114_3: ; %atomicrmw.private
+; GFX1250-SDAG-NEXT:  .LBB114_3: ; %Flow
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc1 .LBB114_5
+; GFX1250-SDAG-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX1250-SDAG-NEXT:    s_sub_co_i32 s2, s0, src_flat_scratch_base_lo
 ; GFX1250-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX1250-SDAG-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]
@@ -12632,7 +12688,7 @@ define double @flat_atomic_fmin_f64_saddr_rtn(ptr inreg %ptr, double %data) {
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_min_num_f64_e32 v[0:1], v[4:5], v[0:1]
 ; GFX1250-SDAG-NEXT:    scratch_store_b64 off, v[0:1], s0
-; GFX1250-SDAG-NEXT:  .LBB114_4: ; %atomicrmw.end
+; GFX1250-SDAG-NEXT:  .LBB114_5: ; %atomicrmw.end
 ; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v0, v2 :: v_dual_mov_b32 v1, v3
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
@@ -12683,18 +12739,24 @@ define double @flat_atomic_fmin_f64_saddr_rtn(ptr inreg %ptr, double %data) {
 ; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-SDAG-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-SDAG-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-SDAG-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GFX950-SDAG-NEXT:    s_cbranch_vccz .LBB114_2
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-SDAG-NEXT:    s_cbranch_scc0 .LBB114_2
 ; GFX950-SDAG-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-SDAG-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-SDAG-NEXT:    flat_atomic_min_f64 v[2:3], v[2:3], v[0:1] sc0
 ; GFX950-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-SDAG-NEXT:    s_cbranch_execz .LBB114_3
-; GFX950-SDAG-NEXT:    s_branch .LBB114_4
+; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-SDAG-NEXT:    s_branch .LBB114_3
 ; GFX950-SDAG-NEXT:  .LBB114_2:
+; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX950-SDAG-NEXT:    ; implicit-def: $vgpr2_vgpr3
-; GFX950-SDAG-NEXT:  .LBB114_3: ; %atomicrmw.private
+; GFX950-SDAG-NEXT:  .LBB114_3: ; %Flow
+; GFX950-SDAG-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-SDAG-NEXT:    s_cbranch_scc1 .LBB114_5
+; GFX950-SDAG-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX950-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-SDAG-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-SDAG-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -12703,7 +12765,7 @@ define double @flat_atomic_fmin_f64_saddr_rtn(ptr inreg %ptr, double %data) {
 ; GFX950-SDAG-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]
 ; GFX950-SDAG-NEXT:    v_min_f64 v[0:1], v[4:5], v[0:1]
 ; GFX950-SDAG-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
-; GFX950-SDAG-NEXT:  .LBB114_4: ; %atomicrmw.end
+; GFX950-SDAG-NEXT:  .LBB114_5: ; %atomicrmw.end
 ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, v2
 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, v3
@@ -12756,23 +12818,24 @@ define void @flat_atomic_fmin_f64_saddr_nortn(ptr inreg %ptr, double %data) {
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-NEXT:    s_xor_b32 s2, s1, src_flat_scratch_base_hi
 ; GFX1250-SDAG-NEXT:    s_cmp_lt_u32 s2, 0x4000000
-; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX1250-SDAG-NEXT:    s_mov_b32 s2, -1
-; GFX1250-SDAG-NEXT:    s_cbranch_vccnz .LBB115_3
-; GFX1250-SDAG-NEXT:  ; %bb.1: ; %Flow
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s2
-; GFX1250-SDAG-NEXT:    s_cbranch_vccz .LBB115_4
-; GFX1250-SDAG-NEXT:  .LBB115_2: ; %atomicrmw.phi
-; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
-; GFX1250-SDAG-NEXT:  .LBB115_3: ; %atomicrmw.global
+; GFX1250-SDAG-NEXT:    s_cbranch_scc0 .LBB115_2
+; GFX1250-SDAG-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v2, 0
+; GFX1250-SDAG-NEXT:    s_mov_b32 s2, 0
 ; GFX1250-SDAG-NEXT:    s_wait_storecnt 0x0
 ; GFX1250-SDAG-NEXT:    flat_atomic_min_num_f64 v2, v[0:1], s[0:1]
 ; GFX1250-SDAG-NEXT:    s_wait_storecnt_dscnt 0x0
-; GFX1250-SDAG-NEXT:    s_cbranch_execnz .LBB115_2
-; GFX1250-SDAG-NEXT:  .LBB115_4: ; %atomicrmw.private
+; GFX1250-SDAG-NEXT:  .LBB115_2: ; %Flow
+; GFX1250-SDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc1 .LBB115_4
+; GFX1250-SDAG-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX1250-SDAG-NEXT:    s_sub_co_i32 s2, s0, src_flat_scratch_base_lo
 ; GFX1250-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX1250-SDAG-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]
@@ -12783,6 +12846,7 @@ define void @flat_atomic_fmin_f64_saddr_nortn(ptr inreg %ptr, double %data) {
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_min_num_f64_e32 v[0:1], v[2:3], v[0:1]
 ; GFX1250-SDAG-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX1250-SDAG-NEXT:  .LBB115_4: ; %atomicrmw.phi
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX1250-GISEL-LABEL: flat_atomic_fmin_f64_saddr_nortn:
@@ -12829,22 +12893,21 @@ define void @flat_atomic_fmin_f64_saddr_nortn(ptr inreg %ptr, double %data) {
 ; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], src_private_base
 ; GFX950-SDAG-NEXT:    s_addc_u32 s1, s1, 0
 ; GFX950-SDAG-NEXT:    s_cmp_eq_u32 s1, s3
-; GFX950-SDAG-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX950-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
 ; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], -1
-; GFX950-SDAG-NEXT:    s_cbranch_vccnz .LBB115_3
-; GFX950-SDAG-NEXT:  ; %bb.1: ; %Flow
-; GFX950-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GFX950-SDAG-NEXT:    s_cbranch_vccz .LBB115_4
-; GFX950-SDAG-NEXT:  .LBB115_2: ; %atomicrmw.phi
-; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
-; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
-; GFX950-SDAG-NEXT:  .LBB115_3: ; %atomicrmw.global
+; GFX950-SDAG-NEXT:    s_cbranch_scc0 .LBB115_2
+; GFX950-SDAG-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX950-SDAG-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
 ; GFX950-SDAG-NEXT:    flat_atomic_min_f64 v[2:3], v[0:1]
 ; GFX950-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX950-SDAG-NEXT:    s_cbranch_execnz .LBB115_2
-; GFX950-SDAG-NEXT:  .LBB115_4: ; %atomicrmw.private
+; GFX950-SDAG-NEXT:    s_mov_b64 s[2:3], 0
+; GFX950-SDAG-NEXT:  .LBB115_2: ; %Flow
+; GFX950-SDAG-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX950-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX950-SDAG-NEXT:    s_cbranch_scc1 .LBB115_4
+; GFX950-SDAG-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX950-SDAG-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX950-SDAG-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX950-SDAG-NEXT:    scratch_load_dwordx2 v[2:3], off, s0
@@ -12853,6 +12916,7 @@ define void @flat_atomic_fmin_f64_saddr_nortn(ptr inreg %ptr, double %data) {
 ; GFX950-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
 ; GFX950-SDAG-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1]
 ; GFX950-SDAG-NEXT:    scratch_store_dwordx2 off, v[0:1], s0
+; GFX950-SDAG-NEXT:  .LBB115_4: ; %atomicrmw.phi
 ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;

diff  --git a/llvm/test/CodeGen/AMDGPU/flat_atomics_i64.ll b/llvm/test/CodeGen/AMDGPU/flat_atomics_i64.ll
index 644b1ce6ebd47..735e754a05882 100644
--- a/llvm/test/CodeGen/AMDGPU/flat_atomics_i64.ll
+++ b/llvm/test/CodeGen/AMDGPU/flat_atomics_i64.ll
@@ -18,16 +18,11 @@ define amdgpu_kernel void @atomic_add_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB0_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB0_4
-; GCN1-NEXT:  .LBB0_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB0_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB0_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -35,8 +30,13 @@ define amdgpu_kernel void @atomic_add_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_add_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB0_2
-; GCN1-NEXT:  .LBB0_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB0_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB0_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s3
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -52,6 +52,7 @@ define amdgpu_kernel void @atomic_add_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_addc_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v1, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v2, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB0_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_add_i64_offset:
@@ -68,16 +69,11 @@ define amdgpu_kernel void @atomic_add_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB0_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB0_4
-; GCN2-NEXT:  .LBB0_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB0_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB0_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -85,8 +81,13 @@ define amdgpu_kernel void @atomic_add_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_add_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB0_2
-; GCN2-NEXT:  .LBB0_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB0_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB0_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -101,6 +102,7 @@ define amdgpu_kernel void @atomic_add_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_addc_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v1, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v2, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB0_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_add_i64_offset:
@@ -111,23 +113,24 @@ define amdgpu_kernel void @atomic_add_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB0_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB0_4
-; GFX12-NEXT:  .LBB0_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB0_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB0_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_add_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB0_2
-; GFX12-NEXT:  .LBB0_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB0_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB0_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -136,6 +139,7 @@ define amdgpu_kernel void @atomic_add_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_add_co_ci_u32_e64 v1, null, s3, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB0_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds i64, ptr %out, i64 4
@@ -159,9 +163,9 @@ define amdgpu_kernel void @atomic_add_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB1_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -170,11 +174,17 @@ define amdgpu_kernel void @atomic_add_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    flat_atomic_add_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB1_3
-; GCN1-NEXT:    s_branch .LBB1_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB1_3
 ; GCN1-NEXT:  .LBB1_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB1_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB1_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB1_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s5
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -190,7 +200,7 @@ define amdgpu_kernel void @atomic_add_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_addc_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB1_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB1_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -211,9 +221,9 @@ define amdgpu_kernel void @atomic_add_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB1_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -222,11 +232,17 @@ define amdgpu_kernel void @atomic_add_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    flat_atomic_add_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB1_3
-; GCN2-NEXT:    s_branch .LBB1_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB1_3
 ; GCN2-NEXT:  .LBB1_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB1_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB1_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB1_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -241,7 +257,7 @@ define amdgpu_kernel void @atomic_add_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_addc_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB1_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB1_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -257,20 +273,27 @@ define amdgpu_kernel void @atomic_add_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB1_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB1_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_add_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB1_3
-; GFX12-NEXT:    s_branch .LBB1_4
+; GFX12-NEXT:    s_branch .LBB1_3
 ; GFX12-NEXT:  .LBB1_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB1_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB1_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB1_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -279,7 +302,7 @@ define amdgpu_kernel void @atomic_add_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_add_co_ci_u32_e64 v3, null, s5, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB1_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB1_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -309,16 +332,11 @@ define amdgpu_kernel void @atomic_add_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB2_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB2_4
-; GCN1-NEXT:  .LBB2_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB2_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB2_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -326,8 +344,13 @@ define amdgpu_kernel void @atomic_add_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    flat_atomic_add_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB2_2
-; GCN1-NEXT:  .LBB2_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB2_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB2_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s3
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -343,36 +366,33 @@ define amdgpu_kernel void @atomic_add_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    v_addc_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v1, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v2, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB2_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_add_i64_addr64_offset:
 ; GCN2:       ; %bb.0: ; %entry
 ; GCN2-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
 ; GCN2-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
-; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GCN2-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s8, s[4:5], 0xfc
+; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
-; GCN2-NEXT:    s_add_u32 s0, s0, s4
-; GCN2-NEXT:    s_addc_u32 s1, s1, s5
+; GCN2-NEXT:    s_lshl_b64 s[6:7], s[6:7], 3
+; GCN2-NEXT:    s_load_dword s4, s[4:5], 0xfc
+; GCN2-NEXT:    s_add_u32 s0, s0, s6
+; GCN2-NEXT:    s_addc_u32 s1, s1, s7
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
-; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB2_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB2_4
-; GCN2-NEXT:  .LBB2_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB2_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB2_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -380,8 +400,13 @@ define amdgpu_kernel void @atomic_add_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2-NEXT:    flat_atomic_add_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB2_2
-; GCN2-NEXT:  .LBB2_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB2_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB2_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -396,6 +421,7 @@ define amdgpu_kernel void @atomic_add_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2-NEXT:    v_addc_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v1, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v2, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB2_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_add_i64_addr64_offset:
@@ -411,23 +437,24 @@ define amdgpu_kernel void @atomic_add_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB2_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB2_4
-; GFX12-NEXT:  .LBB2_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB2_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB2_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_add_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB2_2
-; GFX12-NEXT:  .LBB2_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB2_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB2_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -436,6 +463,7 @@ define amdgpu_kernel void @atomic_add_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_add_co_ci_u32_e64 v1, null, s3, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB2_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -462,9 +490,9 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB3_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -473,11 +501,17 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    flat_atomic_add_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB3_3
-; GCN1-NEXT:    s_branch .LBB3_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB3_3
 ; GCN1-NEXT:  .LBB3_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB3_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB3_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB3_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s13
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -493,7 +527,7 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    v_addc_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB3_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB3_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -507,8 +541,8 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -516,9 +550,9 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB3_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -527,11 +561,17 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    flat_atomic_add_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB3_3
-; GCN2-NEXT:    s_branch .LBB3_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB3_3
 ; GCN2-NEXT:  .LBB3_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB3_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB3_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB3_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -546,7 +586,7 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    v_addc_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB3_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB3_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -563,20 +603,27 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB3_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB3_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_add_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB3_3
-; GFX12-NEXT:    s_branch .LBB3_4
+; GFX12-NEXT:    s_branch .LBB3_3
 ; GFX12-NEXT:  .LBB3_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB3_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB3_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB3_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -585,7 +632,7 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_add_co_ci_u32_e64 v3, null, s5, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB3_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB3_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -610,16 +657,11 @@ define amdgpu_kernel void @atomic_add_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB4_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB4_4
-; GCN1-NEXT:  .LBB4_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB4_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB4_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -627,8 +669,13 @@ define amdgpu_kernel void @atomic_add_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_add_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB4_2
-; GCN1-NEXT:  .LBB4_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB4_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB4_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s3
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -644,6 +691,7 @@ define amdgpu_kernel void @atomic_add_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_addc_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v1, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v2, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB4_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_add_i64:
@@ -658,16 +706,11 @@ define amdgpu_kernel void @atomic_add_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB4_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB4_4
-; GCN2-NEXT:  .LBB4_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB4_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB4_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -675,8 +718,13 @@ define amdgpu_kernel void @atomic_add_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_add_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB4_2
-; GCN2-NEXT:  .LBB4_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB4_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB4_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -691,6 +739,7 @@ define amdgpu_kernel void @atomic_add_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_addc_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v1, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v2, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB4_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_add_i64:
@@ -699,24 +748,25 @@ define amdgpu_kernel void @atomic_add_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB4_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB4_4
-; GFX12-NEXT:  .LBB4_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB4_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB4_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_add_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB4_2
-; GFX12-NEXT:  .LBB4_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB4_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB4_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -725,6 +775,7 @@ define amdgpu_kernel void @atomic_add_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_add_co_ci_u32_e64 v1, null, s3, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB4_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %tmp0 = atomicrmw volatile add ptr %out, i64 %in syncscope("agent") seq_cst
@@ -745,9 +796,9 @@ define amdgpu_kernel void @atomic_add_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB5_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -756,11 +807,17 @@ define amdgpu_kernel void @atomic_add_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_add_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB5_3
-; GCN1-NEXT:    s_branch .LBB5_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB5_3
 ; GCN1-NEXT:  .LBB5_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB5_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB5_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB5_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s5
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -776,7 +833,7 @@ define amdgpu_kernel void @atomic_add_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    v_addc_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB5_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB5_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -795,9 +852,9 @@ define amdgpu_kernel void @atomic_add_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB5_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -806,11 +863,17 @@ define amdgpu_kernel void @atomic_add_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_add_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB5_3
-; GCN2-NEXT:    s_branch .LBB5_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB5_3
 ; GCN2-NEXT:  .LBB5_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB5_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB5_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB5_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -825,7 +888,7 @@ define amdgpu_kernel void @atomic_add_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    v_addc_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB5_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB5_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -839,21 +902,28 @@ define amdgpu_kernel void @atomic_add_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB5_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB5_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_add_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB5_3
-; GFX12-NEXT:    s_branch .LBB5_4
+; GFX12-NEXT:    s_branch .LBB5_3
 ; GFX12-NEXT:  .LBB5_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB5_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB5_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB5_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -862,7 +932,7 @@ define amdgpu_kernel void @atomic_add_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_add_co_ci_u32_e64 v3, null, s5, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB5_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB5_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -889,16 +959,11 @@ define amdgpu_kernel void @atomic_add_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    s_add_u32 s0, s0, s4
 ; GCN1-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB6_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB6_4
-; GCN1-NEXT:  .LBB6_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB6_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB6_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -906,8 +971,13 @@ define amdgpu_kernel void @atomic_add_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    flat_atomic_add_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB6_2
-; GCN1-NEXT:  .LBB6_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB6_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB6_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s3
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -923,6 +993,7 @@ define amdgpu_kernel void @atomic_add_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    v_addc_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v1, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v2, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB6_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_add_i64_addr64:
@@ -941,16 +1012,11 @@ define amdgpu_kernel void @atomic_add_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    s_add_u32 s0, s0, s4
 ; GCN2-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB6_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB6_4
-; GCN2-NEXT:  .LBB6_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB6_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB6_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -958,8 +1024,13 @@ define amdgpu_kernel void @atomic_add_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    flat_atomic_add_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB6_2
-; GCN2-NEXT:  .LBB6_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB6_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB6_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -974,6 +1045,7 @@ define amdgpu_kernel void @atomic_add_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    v_addc_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v1, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v2, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB6_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_add_i64_addr64:
@@ -987,24 +1059,25 @@ define amdgpu_kernel void @atomic_add_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[4:5]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB6_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB6_4
-; GFX12-NEXT:  .LBB6_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB6_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB6_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_add_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB6_2
-; GFX12-NEXT:  .LBB6_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB6_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB6_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -1013,6 +1086,7 @@ define amdgpu_kernel void @atomic_add_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_add_co_ci_u32_e64 v1, null, s3, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB6_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -1036,9 +1110,9 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB7_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -1047,11 +1121,17 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    flat_atomic_add_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB7_3
-; GCN1-NEXT:    s_branch .LBB7_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB7_3
 ; GCN1-NEXT:  .LBB7_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB7_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB7_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB7_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s13
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -1067,7 +1147,7 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_addc_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB7_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB7_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -1088,9 +1168,9 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB7_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -1099,11 +1179,17 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    flat_atomic_add_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB7_3
-; GCN2-NEXT:    s_branch .LBB7_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB7_3
 ; GCN2-NEXT:  .LBB7_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB7_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB7_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB7_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -1118,7 +1204,7 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_addc_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB7_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB7_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -1133,21 +1219,28 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[6:7]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB7_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_add_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB7_3
-; GFX12-NEXT:    s_branch .LBB7_4
+; GFX12-NEXT:    s_branch .LBB7_3
 ; GFX12-NEXT:  .LBB7_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB7_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB7_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB7_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -1156,7 +1249,7 @@ define amdgpu_kernel void @atomic_add_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_add_co_ci_u32_e64 v3, null, s5, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB7_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB7_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -1182,16 +1275,11 @@ define amdgpu_kernel void @atomic_and_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB8_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB8_4
-; GCN1-NEXT:  .LBB8_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB8_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB8_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -1199,8 +1287,13 @@ define amdgpu_kernel void @atomic_and_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_and_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB8_2
-; GCN1-NEXT:  .LBB8_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB8_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB8_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -1215,6 +1308,7 @@ define amdgpu_kernel void @atomic_and_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_and_b32_e32 v3, s3, v3
 ; GCN1-NEXT:    buffer_store_dword v2, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB8_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_and_i64_offset:
@@ -1231,16 +1325,11 @@ define amdgpu_kernel void @atomic_and_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB8_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB8_4
-; GCN2-NEXT:  .LBB8_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB8_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB8_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -1248,8 +1337,13 @@ define amdgpu_kernel void @atomic_and_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_and_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB8_2
-; GCN2-NEXT:  .LBB8_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB8_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB8_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -1263,6 +1357,7 @@ define amdgpu_kernel void @atomic_and_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_and_b32_e32 v3, s3, v3
 ; GCN2-NEXT:    buffer_store_dword v2, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB8_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_and_i64_offset:
@@ -1273,23 +1368,24 @@ define amdgpu_kernel void @atomic_and_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB8_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB8_4
-; GFX12-NEXT:  .LBB8_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB8_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB8_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_and_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB8_2
-; GFX12-NEXT:  .LBB8_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB8_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB8_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -1297,6 +1393,7 @@ define amdgpu_kernel void @atomic_and_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_and_b32_e32 v1, s3, v1
 ; GFX12-NEXT:    v_and_b32_e32 v0, s2, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB8_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds i64, ptr %out, i64 4
@@ -1320,9 +1417,9 @@ define amdgpu_kernel void @atomic_and_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB9_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -1331,11 +1428,17 @@ define amdgpu_kernel void @atomic_and_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    flat_atomic_and_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB9_3
-; GCN1-NEXT:    s_branch .LBB9_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB9_3
 ; GCN1-NEXT:  .LBB9_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB9_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB9_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB9_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -1350,7 +1453,7 @@ define amdgpu_kernel void @atomic_and_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_and_b32_e32 v5, s5, v1
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB9_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB9_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -1371,9 +1474,9 @@ define amdgpu_kernel void @atomic_and_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB9_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -1382,11 +1485,17 @@ define amdgpu_kernel void @atomic_and_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    flat_atomic_and_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB9_3
-; GCN2-NEXT:    s_branch .LBB9_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB9_3
 ; GCN2-NEXT:  .LBB9_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB9_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB9_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB9_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -1400,7 +1509,7 @@ define amdgpu_kernel void @atomic_and_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_and_b32_e32 v5, s5, v1
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB9_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB9_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -1416,20 +1525,27 @@ define amdgpu_kernel void @atomic_and_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB9_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB9_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_and_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB9_3
-; GFX12-NEXT:    s_branch .LBB9_4
+; GFX12-NEXT:    s_branch .LBB9_3
 ; GFX12-NEXT:  .LBB9_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB9_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB9_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB9_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -1437,7 +1553,7 @@ define amdgpu_kernel void @atomic_and_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    v_and_b32_e32 v3, s5, v1
 ; GFX12-NEXT:    v_and_b32_e32 v2, s4, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB9_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB9_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -1467,16 +1583,11 @@ define amdgpu_kernel void @atomic_and_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB10_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB10_4
-; GCN1-NEXT:  .LBB10_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB10_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB10_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -1484,8 +1595,13 @@ define amdgpu_kernel void @atomic_and_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    flat_atomic_and_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB10_2
-; GCN1-NEXT:  .LBB10_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB10_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB10_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -1500,36 +1616,33 @@ define amdgpu_kernel void @atomic_and_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    v_and_b32_e32 v3, s3, v3
 ; GCN1-NEXT:    buffer_store_dword v2, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB10_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_and_i64_addr64_offset:
 ; GCN2:       ; %bb.0: ; %entry
 ; GCN2-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
 ; GCN2-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
-; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GCN2-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s8, s[4:5], 0xfc
+; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
-; GCN2-NEXT:    s_add_u32 s0, s0, s4
-; GCN2-NEXT:    s_addc_u32 s1, s1, s5
+; GCN2-NEXT:    s_lshl_b64 s[6:7], s[6:7], 3
+; GCN2-NEXT:    s_load_dword s4, s[4:5], 0xfc
+; GCN2-NEXT:    s_add_u32 s0, s0, s6
+; GCN2-NEXT:    s_addc_u32 s1, s1, s7
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
-; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB10_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB10_4
-; GCN2-NEXT:  .LBB10_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB10_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB10_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -1537,8 +1650,13 @@ define amdgpu_kernel void @atomic_and_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2-NEXT:    flat_atomic_and_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB10_2
-; GCN2-NEXT:  .LBB10_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB10_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB10_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -1552,6 +1670,7 @@ define amdgpu_kernel void @atomic_and_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2-NEXT:    v_and_b32_e32 v3, s3, v3
 ; GCN2-NEXT:    buffer_store_dword v2, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB10_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_and_i64_addr64_offset:
@@ -1567,23 +1686,24 @@ define amdgpu_kernel void @atomic_and_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB10_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB10_4
-; GFX12-NEXT:  .LBB10_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB10_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB10_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_and_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB10_2
-; GFX12-NEXT:  .LBB10_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB10_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB10_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -1591,6 +1711,7 @@ define amdgpu_kernel void @atomic_and_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    v_and_b32_e32 v1, s3, v1
 ; GFX12-NEXT:    v_and_b32_e32 v0, s2, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB10_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -1617,9 +1738,9 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB11_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -1628,11 +1749,17 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    flat_atomic_and_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB11_3
-; GCN1-NEXT:    s_branch .LBB11_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB11_3
 ; GCN1-NEXT:  .LBB11_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB11_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB11_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB11_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -1647,7 +1774,7 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    v_and_b32_e32 v5, s13, v1
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB11_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB11_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -1661,8 +1788,8 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -1670,9 +1797,9 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB11_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -1681,11 +1808,17 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    flat_atomic_and_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB11_3
-; GCN2-NEXT:    s_branch .LBB11_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB11_3
 ; GCN2-NEXT:  .LBB11_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB11_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB11_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB11_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -1699,7 +1832,7 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    v_and_b32_e32 v5, s13, v1
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB11_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB11_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -1716,20 +1849,27 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB11_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_and_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB11_3
-; GFX12-NEXT:    s_branch .LBB11_4
+; GFX12-NEXT:    s_branch .LBB11_3
 ; GFX12-NEXT:  .LBB11_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB11_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB11_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB11_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -1737,7 +1877,7 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    v_and_b32_e32 v3, s5, v1
 ; GFX12-NEXT:    v_and_b32_e32 v2, s4, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB11_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB11_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -1762,16 +1902,11 @@ define amdgpu_kernel void @atomic_and_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB12_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB12_4
-; GCN1-NEXT:  .LBB12_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB12_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB12_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -1779,8 +1914,13 @@ define amdgpu_kernel void @atomic_and_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_and_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB12_2
-; GCN1-NEXT:  .LBB12_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB12_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB12_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -1795,6 +1935,7 @@ define amdgpu_kernel void @atomic_and_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_and_b32_e32 v3, s3, v3
 ; GCN1-NEXT:    buffer_store_dword v2, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB12_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_and_i64:
@@ -1809,16 +1950,11 @@ define amdgpu_kernel void @atomic_and_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB12_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB12_4
-; GCN2-NEXT:  .LBB12_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB12_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB12_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -1826,8 +1962,13 @@ define amdgpu_kernel void @atomic_and_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_and_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB12_2
-; GCN2-NEXT:  .LBB12_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB12_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB12_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -1841,6 +1982,7 @@ define amdgpu_kernel void @atomic_and_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_and_b32_e32 v3, s3, v3
 ; GCN2-NEXT:    buffer_store_dword v2, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB12_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_and_i64:
@@ -1849,24 +1991,25 @@ define amdgpu_kernel void @atomic_and_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB12_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB12_4
-; GFX12-NEXT:  .LBB12_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB12_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB12_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_and_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB12_2
-; GFX12-NEXT:  .LBB12_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB12_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB12_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -1874,6 +2017,7 @@ define amdgpu_kernel void @atomic_and_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_and_b32_e32 v1, s3, v1
 ; GFX12-NEXT:    v_and_b32_e32 v0, s2, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB12_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %tmp0 = atomicrmw volatile and ptr %out, i64 %in syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0
@@ -1894,9 +2038,9 @@ define amdgpu_kernel void @atomic_and_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB13_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -1905,11 +2049,17 @@ define amdgpu_kernel void @atomic_and_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_and_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB13_3
-; GCN1-NEXT:    s_branch .LBB13_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB13_3
 ; GCN1-NEXT:  .LBB13_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB13_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB13_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB13_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -1924,7 +2074,7 @@ define amdgpu_kernel void @atomic_and_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    v_and_b32_e32 v5, s5, v1
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB13_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB13_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -1943,9 +2093,9 @@ define amdgpu_kernel void @atomic_and_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB13_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -1954,11 +2104,17 @@ define amdgpu_kernel void @atomic_and_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_and_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB13_3
-; GCN2-NEXT:    s_branch .LBB13_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB13_3
 ; GCN2-NEXT:  .LBB13_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB13_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB13_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB13_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -1972,7 +2128,7 @@ define amdgpu_kernel void @atomic_and_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    v_and_b32_e32 v5, s5, v1
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB13_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB13_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -1986,21 +2142,28 @@ define amdgpu_kernel void @atomic_and_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB13_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB13_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_and_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB13_3
-; GFX12-NEXT:    s_branch .LBB13_4
+; GFX12-NEXT:    s_branch .LBB13_3
 ; GFX12-NEXT:  .LBB13_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB13_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB13_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB13_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -2008,7 +2171,7 @@ define amdgpu_kernel void @atomic_and_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    v_and_b32_e32 v3, s5, v1
 ; GFX12-NEXT:    v_and_b32_e32 v2, s4, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB13_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB13_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -2035,16 +2198,11 @@ define amdgpu_kernel void @atomic_and_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    s_add_u32 s0, s0, s4
 ; GCN1-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB14_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB14_4
-; GCN1-NEXT:  .LBB14_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB14_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB14_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -2052,8 +2210,13 @@ define amdgpu_kernel void @atomic_and_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    flat_atomic_and_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB14_2
-; GCN1-NEXT:  .LBB14_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB14_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB14_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -2068,6 +2231,7 @@ define amdgpu_kernel void @atomic_and_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    v_and_b32_e32 v3, s3, v3
 ; GCN1-NEXT:    buffer_store_dword v2, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB14_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_and_i64_addr64:
@@ -2086,16 +2250,11 @@ define amdgpu_kernel void @atomic_and_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    s_add_u32 s0, s0, s4
 ; GCN2-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB14_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB14_4
-; GCN2-NEXT:  .LBB14_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB14_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB14_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -2103,8 +2262,13 @@ define amdgpu_kernel void @atomic_and_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    flat_atomic_and_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB14_2
-; GCN2-NEXT:  .LBB14_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB14_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB14_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -2118,6 +2282,7 @@ define amdgpu_kernel void @atomic_and_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    v_and_b32_e32 v3, s3, v3
 ; GCN2-NEXT:    buffer_store_dword v2, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB14_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_and_i64_addr64:
@@ -2131,24 +2296,25 @@ define amdgpu_kernel void @atomic_and_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[4:5]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB14_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB14_4
-; GFX12-NEXT:  .LBB14_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB14_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB14_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_and_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB14_2
-; GFX12-NEXT:  .LBB14_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB14_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB14_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -2156,6 +2322,7 @@ define amdgpu_kernel void @atomic_and_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    v_and_b32_e32 v1, s3, v1
 ; GFX12-NEXT:    v_and_b32_e32 v0, s2, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB14_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -2179,9 +2346,9 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB15_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -2190,11 +2357,17 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    flat_atomic_and_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB15_3
-; GCN1-NEXT:    s_branch .LBB15_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB15_3
 ; GCN1-NEXT:  .LBB15_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB15_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB15_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB15_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -2209,7 +2382,7 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_and_b32_e32 v5, s13, v1
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB15_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB15_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -2230,9 +2403,9 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB15_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -2241,11 +2414,17 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    flat_atomic_and_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB15_3
-; GCN2-NEXT:    s_branch .LBB15_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB15_3
 ; GCN2-NEXT:  .LBB15_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB15_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB15_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB15_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -2259,7 +2438,7 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_and_b32_e32 v5, s13, v1
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB15_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB15_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -2274,21 +2453,28 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[6:7]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB15_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_and_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB15_3
-; GFX12-NEXT:    s_branch .LBB15_4
+; GFX12-NEXT:    s_branch .LBB15_3
 ; GFX12-NEXT:  .LBB15_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB15_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB15_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -2296,7 +2482,7 @@ define amdgpu_kernel void @atomic_and_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    v_and_b32_e32 v3, s5, v1
 ; GFX12-NEXT:    v_and_b32_e32 v2, s4, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB15_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB15_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -2322,16 +2508,11 @@ define amdgpu_kernel void @atomic_sub_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB16_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB16_4
-; GCN1-NEXT:  .LBB16_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB16_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB16_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -2339,8 +2520,13 @@ define amdgpu_kernel void @atomic_sub_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_sub_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB16_2
-; GCN1-NEXT:  .LBB16_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB16_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB16_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s3
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -2356,6 +2542,7 @@ define amdgpu_kernel void @atomic_sub_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_subb_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v1, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v2, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB16_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_sub_i64_offset:
@@ -2372,16 +2559,11 @@ define amdgpu_kernel void @atomic_sub_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB16_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB16_4
-; GCN2-NEXT:  .LBB16_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB16_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB16_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -2389,8 +2571,13 @@ define amdgpu_kernel void @atomic_sub_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_sub_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB16_2
-; GCN2-NEXT:  .LBB16_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB16_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB16_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -2405,6 +2592,7 @@ define amdgpu_kernel void @atomic_sub_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_subb_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v1, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v2, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB16_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_sub_i64_offset:
@@ -2415,23 +2603,24 @@ define amdgpu_kernel void @atomic_sub_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB16_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB16_4
-; GFX12-NEXT:  .LBB16_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB16_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB16_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_sub_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB16_2
-; GFX12-NEXT:  .LBB16_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB16_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB16_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -2440,6 +2629,7 @@ define amdgpu_kernel void @atomic_sub_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_subrev_co_ci_u32_e64 v1, null, s3, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB16_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds i64, ptr %out, i64 4
@@ -2463,9 +2653,9 @@ define amdgpu_kernel void @atomic_sub_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB17_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -2474,11 +2664,17 @@ define amdgpu_kernel void @atomic_sub_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    flat_atomic_sub_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB17_3
-; GCN1-NEXT:    s_branch .LBB17_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB17_3
 ; GCN1-NEXT:  .LBB17_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB17_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB17_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB17_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s5
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -2494,7 +2690,7 @@ define amdgpu_kernel void @atomic_sub_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_subb_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB17_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB17_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -2515,9 +2711,9 @@ define amdgpu_kernel void @atomic_sub_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB17_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -2526,11 +2722,17 @@ define amdgpu_kernel void @atomic_sub_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    flat_atomic_sub_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB17_3
-; GCN2-NEXT:    s_branch .LBB17_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB17_3
 ; GCN2-NEXT:  .LBB17_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB17_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB17_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB17_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -2545,7 +2747,7 @@ define amdgpu_kernel void @atomic_sub_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_subb_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB17_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB17_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -2561,20 +2763,27 @@ define amdgpu_kernel void @atomic_sub_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB17_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_sub_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB17_3
-; GFX12-NEXT:    s_branch .LBB17_4
+; GFX12-NEXT:    s_branch .LBB17_3
 ; GFX12-NEXT:  .LBB17_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB17_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB17_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB17_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -2583,7 +2792,7 @@ define amdgpu_kernel void @atomic_sub_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_subrev_co_ci_u32_e64 v3, null, s5, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB17_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB17_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -2613,16 +2822,11 @@ define amdgpu_kernel void @atomic_sub_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB18_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB18_4
-; GCN1-NEXT:  .LBB18_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB18_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB18_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -2630,8 +2834,13 @@ define amdgpu_kernel void @atomic_sub_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    flat_atomic_sub_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB18_2
-; GCN1-NEXT:  .LBB18_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB18_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB18_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s3
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -2647,36 +2856,33 @@ define amdgpu_kernel void @atomic_sub_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    v_subb_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v1, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v2, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB18_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_sub_i64_addr64_offset:
 ; GCN2:       ; %bb.0: ; %entry
 ; GCN2-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
 ; GCN2-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
-; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GCN2-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s8, s[4:5], 0xfc
+; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
-; GCN2-NEXT:    s_add_u32 s0, s0, s4
-; GCN2-NEXT:    s_addc_u32 s1, s1, s5
+; GCN2-NEXT:    s_lshl_b64 s[6:7], s[6:7], 3
+; GCN2-NEXT:    s_load_dword s4, s[4:5], 0xfc
+; GCN2-NEXT:    s_add_u32 s0, s0, s6
+; GCN2-NEXT:    s_addc_u32 s1, s1, s7
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
-; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB18_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB18_4
-; GCN2-NEXT:  .LBB18_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB18_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB18_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -2684,8 +2890,13 @@ define amdgpu_kernel void @atomic_sub_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2-NEXT:    flat_atomic_sub_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB18_2
-; GCN2-NEXT:  .LBB18_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB18_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB18_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -2700,6 +2911,7 @@ define amdgpu_kernel void @atomic_sub_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2-NEXT:    v_subb_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v1, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v2, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB18_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_sub_i64_addr64_offset:
@@ -2715,23 +2927,24 @@ define amdgpu_kernel void @atomic_sub_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB18_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB18_4
-; GFX12-NEXT:  .LBB18_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB18_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB18_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_sub_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB18_2
-; GFX12-NEXT:  .LBB18_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB18_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB18_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -2740,6 +2953,7 @@ define amdgpu_kernel void @atomic_sub_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_subrev_co_ci_u32_e64 v1, null, s3, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB18_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -2766,9 +2980,9 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB19_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -2777,11 +2991,17 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    flat_atomic_sub_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB19_3
-; GCN1-NEXT:    s_branch .LBB19_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB19_3
 ; GCN1-NEXT:  .LBB19_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB19_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB19_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB19_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s13
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -2797,7 +3017,7 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    v_subb_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB19_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB19_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -2811,8 +3031,8 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -2820,9 +3040,9 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB19_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -2831,11 +3051,17 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    flat_atomic_sub_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB19_3
-; GCN2-NEXT:    s_branch .LBB19_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB19_3
 ; GCN2-NEXT:  .LBB19_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB19_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB19_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB19_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -2850,7 +3076,7 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    v_subb_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB19_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB19_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -2867,20 +3093,27 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB19_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_sub_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB19_3
-; GFX12-NEXT:    s_branch .LBB19_4
+; GFX12-NEXT:    s_branch .LBB19_3
 ; GFX12-NEXT:  .LBB19_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB19_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB19_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -2889,7 +3122,7 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_subrev_co_ci_u32_e64 v3, null, s5, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB19_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB19_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -2914,16 +3147,11 @@ define amdgpu_kernel void @atomic_sub_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB20_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB20_4
-; GCN1-NEXT:  .LBB20_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB20_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB20_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -2931,8 +3159,13 @@ define amdgpu_kernel void @atomic_sub_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_sub_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB20_2
-; GCN1-NEXT:  .LBB20_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB20_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB20_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s3
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -2948,6 +3181,7 @@ define amdgpu_kernel void @atomic_sub_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_subb_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v1, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v2, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB20_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_sub_i64:
@@ -2962,16 +3196,11 @@ define amdgpu_kernel void @atomic_sub_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB20_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB20_4
-; GCN2-NEXT:  .LBB20_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB20_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB20_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -2979,8 +3208,13 @@ define amdgpu_kernel void @atomic_sub_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_sub_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB20_2
-; GCN2-NEXT:  .LBB20_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB20_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB20_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -2995,6 +3229,7 @@ define amdgpu_kernel void @atomic_sub_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_subb_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v1, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v2, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB20_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_sub_i64:
@@ -3003,24 +3238,25 @@ define amdgpu_kernel void @atomic_sub_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB20_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB20_4
-; GFX12-NEXT:  .LBB20_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB20_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB20_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_sub_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB20_2
-; GFX12-NEXT:  .LBB20_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB20_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB20_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -3029,6 +3265,7 @@ define amdgpu_kernel void @atomic_sub_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_subrev_co_ci_u32_e64 v1, null, s3, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB20_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %tmp0 = atomicrmw volatile sub ptr %out, i64 %in syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0
@@ -3049,9 +3286,9 @@ define amdgpu_kernel void @atomic_sub_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB21_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -3060,11 +3297,17 @@ define amdgpu_kernel void @atomic_sub_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_sub_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB21_3
-; GCN1-NEXT:    s_branch .LBB21_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB21_3
 ; GCN1-NEXT:  .LBB21_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB21_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB21_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB21_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s5
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -3080,7 +3323,7 @@ define amdgpu_kernel void @atomic_sub_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    v_subb_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB21_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB21_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -3099,9 +3342,9 @@ define amdgpu_kernel void @atomic_sub_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB21_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -3110,11 +3353,17 @@ define amdgpu_kernel void @atomic_sub_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_sub_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB21_3
-; GCN2-NEXT:    s_branch .LBB21_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB21_3
 ; GCN2-NEXT:  .LBB21_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB21_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB21_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB21_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -3129,7 +3378,7 @@ define amdgpu_kernel void @atomic_sub_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    v_subb_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB21_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB21_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -3143,21 +3392,28 @@ define amdgpu_kernel void @atomic_sub_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB21_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB21_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_sub_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB21_3
-; GFX12-NEXT:    s_branch .LBB21_4
+; GFX12-NEXT:    s_branch .LBB21_3
 ; GFX12-NEXT:  .LBB21_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB21_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB21_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB21_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -3166,7 +3422,7 @@ define amdgpu_kernel void @atomic_sub_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_subrev_co_ci_u32_e64 v3, null, s5, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB21_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB21_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -3193,16 +3449,11 @@ define amdgpu_kernel void @atomic_sub_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    s_add_u32 s0, s0, s4
 ; GCN1-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB22_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB22_4
-; GCN1-NEXT:  .LBB22_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB22_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB22_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -3210,8 +3461,13 @@ define amdgpu_kernel void @atomic_sub_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    flat_atomic_sub_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB22_2
-; GCN1-NEXT:  .LBB22_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB22_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB22_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s3
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -3227,6 +3483,7 @@ define amdgpu_kernel void @atomic_sub_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    v_subb_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v1, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v2, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB22_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_sub_i64_addr64:
@@ -3245,16 +3502,11 @@ define amdgpu_kernel void @atomic_sub_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    s_add_u32 s0, s0, s4
 ; GCN2-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB22_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB22_4
-; GCN2-NEXT:  .LBB22_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB22_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB22_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -3262,8 +3514,13 @@ define amdgpu_kernel void @atomic_sub_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    flat_atomic_sub_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB22_2
-; GCN2-NEXT:  .LBB22_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB22_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB22_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -3278,6 +3535,7 @@ define amdgpu_kernel void @atomic_sub_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    v_subb_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v1, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v2, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB22_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_sub_i64_addr64:
@@ -3291,24 +3549,25 @@ define amdgpu_kernel void @atomic_sub_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[4:5]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB22_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB22_4
-; GFX12-NEXT:  .LBB22_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB22_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB22_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_sub_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB22_2
-; GFX12-NEXT:  .LBB22_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB22_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB22_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -3317,6 +3576,7 @@ define amdgpu_kernel void @atomic_sub_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_subrev_co_ci_u32_e64 v1, null, s3, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB22_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -3340,9 +3600,9 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB23_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -3351,11 +3611,17 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    flat_atomic_sub_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB23_3
-; GCN1-NEXT:    s_branch .LBB23_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB23_3
 ; GCN1-NEXT:  .LBB23_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB23_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB23_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB23_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s13
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -3371,7 +3637,7 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_subb_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB23_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB23_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -3392,9 +3658,9 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB23_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -3403,11 +3669,17 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    flat_atomic_sub_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB23_3
-; GCN2-NEXT:    s_branch .LBB23_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB23_3
 ; GCN2-NEXT:  .LBB23_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB23_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB23_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB23_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -3422,7 +3694,7 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_subb_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB23_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB23_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -3437,21 +3709,28 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[6:7]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB23_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB23_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_sub_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB23_3
-; GFX12-NEXT:    s_branch .LBB23_4
+; GFX12-NEXT:    s_branch .LBB23_3
 ; GFX12-NEXT:  .LBB23_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB23_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB23_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB23_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -3460,7 +3739,7 @@ define amdgpu_kernel void @atomic_sub_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX12-NEXT:    v_subrev_co_ci_u32_e64 v3, null, s5, v1, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB23_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB23_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -3486,24 +3765,24 @@ define amdgpu_kernel void @atomic_max_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB24_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB24_4
-; GCN1-NEXT:  .LBB24_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB24_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB24_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_smax_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB24_2
-; GCN1-NEXT:  .LBB24_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB24_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB24_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -3520,6 +3799,7 @@ define amdgpu_kernel void @atomic_max_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB24_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_max_i64_offset:
@@ -3536,24 +3816,24 @@ define amdgpu_kernel void @atomic_max_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB24_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB24_4
-; GCN2-NEXT:  .LBB24_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB24_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB24_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_smax_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB24_2
-; GCN2-NEXT:  .LBB24_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB24_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB24_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -3569,6 +3849,7 @@ define amdgpu_kernel void @atomic_max_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB24_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_max_i64_offset:
@@ -3579,23 +3860,24 @@ define amdgpu_kernel void @atomic_max_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB24_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB24_4
-; GFX12-NEXT:  .LBB24_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB24_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB24_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_max_i64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB24_2
-; GFX12-NEXT:  .LBB24_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB24_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB24_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -3604,6 +3886,7 @@ define amdgpu_kernel void @atomic_max_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB24_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds i64, ptr %out, i64 4
@@ -3627,9 +3910,9 @@ define amdgpu_kernel void @atomic_max_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB25_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -3637,11 +3920,17 @@ define amdgpu_kernel void @atomic_max_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN1-NEXT:    flat_atomic_smax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB25_3
-; GCN1-NEXT:    s_branch .LBB25_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB25_3
 ; GCN1-NEXT:  .LBB25_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB25_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB25_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB25_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s4
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -3658,7 +3947,7 @@ define amdgpu_kernel void @atomic_max_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB25_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB25_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -3680,9 +3969,9 @@ define amdgpu_kernel void @atomic_max_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB25_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -3690,11 +3979,17 @@ define amdgpu_kernel void @atomic_max_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN2-NEXT:    flat_atomic_smax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB25_3
-; GCN2-NEXT:    s_branch .LBB25_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB25_3
 ; GCN2-NEXT:  .LBB25_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB25_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB25_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB25_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -3710,7 +4005,7 @@ define amdgpu_kernel void @atomic_max_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB25_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB25_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -3727,20 +4022,27 @@ define amdgpu_kernel void @atomic_max_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB25_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB25_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_max_i64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB25_3
-; GFX12-NEXT:    s_branch .LBB25_4
+; GFX12-NEXT:    s_branch .LBB25_3
 ; GFX12-NEXT:  .LBB25_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB25_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB25_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB25_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -3749,7 +4051,7 @@ define amdgpu_kernel void @atomic_max_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB25_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB25_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -3779,24 +4081,24 @@ define amdgpu_kernel void @atomic_max_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB26_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB26_4
-; GCN1-NEXT:  .LBB26_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB26_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB26_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_smax_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB26_2
-; GCN1-NEXT:  .LBB26_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB26_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB26_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -3813,44 +4115,46 @@ define amdgpu_kernel void @atomic_max_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB26_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_max_i64_addr64_offset:
 ; GCN2:       ; %bb.0: ; %entry
 ; GCN2-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
 ; GCN2-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
-; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GCN2-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s8, s[4:5], 0xfc
+; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
-; GCN2-NEXT:    s_add_u32 s0, s0, s4
-; GCN2-NEXT:    s_addc_u32 s1, s1, s5
+; GCN2-NEXT:    s_lshl_b64 s[6:7], s[6:7], 3
+; GCN2-NEXT:    s_load_dword s4, s[4:5], 0xfc
+; GCN2-NEXT:    s_add_u32 s0, s0, s6
+; GCN2-NEXT:    s_addc_u32 s1, s1, s7
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
-; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB26_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB26_4
-; GCN2-NEXT:  .LBB26_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB26_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB26_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_smax_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB26_2
-; GCN2-NEXT:  .LBB26_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB26_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB26_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -3866,6 +4170,7 @@ define amdgpu_kernel void @atomic_max_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB26_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_max_i64_addr64_offset:
@@ -3881,23 +4186,24 @@ define amdgpu_kernel void @atomic_max_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB26_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB26_4
-; GFX12-NEXT:  .LBB26_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB26_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB26_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_max_i64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB26_2
-; GFX12-NEXT:  .LBB26_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB26_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB26_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -3906,6 +4212,7 @@ define amdgpu_kernel void @atomic_max_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB26_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -3932,9 +4239,9 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB27_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -3942,11 +4249,17 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN1-NEXT:    flat_atomic_smax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB27_3
-; GCN1-NEXT:    s_branch .LBB27_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB27_3
 ; GCN1-NEXT:  .LBB27_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB27_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB27_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB27_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s12
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -3963,7 +4276,7 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB27_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB27_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -3978,8 +4291,8 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -3987,9 +4300,9 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB27_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -3997,11 +4310,17 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN2-NEXT:    flat_atomic_smax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB27_3
-; GCN2-NEXT:    s_branch .LBB27_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB27_3
 ; GCN2-NEXT:  .LBB27_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB27_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB27_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB27_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -4017,7 +4336,7 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB27_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB27_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -4035,20 +4354,27 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB27_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_max_i64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB27_3
-; GFX12-NEXT:    s_branch .LBB27_4
+; GFX12-NEXT:    s_branch .LBB27_3
 ; GFX12-NEXT:  .LBB27_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB27_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB27_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB27_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -4057,7 +4383,7 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB27_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB27_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -4082,24 +4408,24 @@ define amdgpu_kernel void @atomic_max_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB28_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB28_4
-; GCN1-NEXT:  .LBB28_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB28_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB28_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_smax_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB28_2
-; GCN1-NEXT:  .LBB28_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB28_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB28_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -4116,6 +4442,7 @@ define amdgpu_kernel void @atomic_max_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB28_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_max_i64:
@@ -4130,24 +4457,24 @@ define amdgpu_kernel void @atomic_max_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB28_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB28_4
-; GCN2-NEXT:  .LBB28_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB28_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB28_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_smax_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB28_2
-; GCN2-NEXT:  .LBB28_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB28_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB28_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -4163,6 +4490,7 @@ define amdgpu_kernel void @atomic_max_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB28_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_max_i64:
@@ -4171,24 +4499,25 @@ define amdgpu_kernel void @atomic_max_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB28_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB28_4
-; GFX12-NEXT:  .LBB28_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB28_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB28_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_max_i64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB28_2
-; GFX12-NEXT:  .LBB28_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB28_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB28_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -4197,6 +4526,7 @@ define amdgpu_kernel void @atomic_max_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB28_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %tmp0 = atomicrmw volatile max ptr %out, i64 %in syncscope("workgroup") seq_cst, !amdgpu.no.fine.grained.memory !0
@@ -4217,9 +4547,9 @@ define amdgpu_kernel void @atomic_max_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB29_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -4227,11 +4557,17 @@ define amdgpu_kernel void @atomic_max_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN1-NEXT:    flat_atomic_smax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB29_3
-; GCN1-NEXT:    s_branch .LBB29_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB29_3
 ; GCN1-NEXT:  .LBB29_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB29_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB29_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB29_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s4
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -4248,7 +4584,7 @@ define amdgpu_kernel void @atomic_max_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB29_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB29_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -4268,9 +4604,9 @@ define amdgpu_kernel void @atomic_max_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB29_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -4278,11 +4614,17 @@ define amdgpu_kernel void @atomic_max_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN2-NEXT:    flat_atomic_smax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB29_3
-; GCN2-NEXT:    s_branch .LBB29_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB29_3
 ; GCN2-NEXT:  .LBB29_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB29_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB29_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB29_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -4298,7 +4640,7 @@ define amdgpu_kernel void @atomic_max_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB29_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB29_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -4313,21 +4655,28 @@ define amdgpu_kernel void @atomic_max_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB29_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB29_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_max_i64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB29_3
-; GFX12-NEXT:    s_branch .LBB29_4
+; GFX12-NEXT:    s_branch .LBB29_3
 ; GFX12-NEXT:  .LBB29_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB29_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB29_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB29_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -4336,7 +4685,7 @@ define amdgpu_kernel void @atomic_max_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB29_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB29_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -4363,24 +4712,24 @@ define amdgpu_kernel void @atomic_max_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    s_add_u32 s0, s0, s4
 ; GCN1-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB30_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB30_4
-; GCN1-NEXT:  .LBB30_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB30_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB30_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_smax_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB30_2
-; GCN1-NEXT:  .LBB30_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB30_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB30_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -4397,6 +4746,7 @@ define amdgpu_kernel void @atomic_max_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB30_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_max_i64_addr64:
@@ -4415,24 +4765,24 @@ define amdgpu_kernel void @atomic_max_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    s_add_u32 s0, s0, s4
 ; GCN2-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB30_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB30_4
-; GCN2-NEXT:  .LBB30_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB30_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB30_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_smax_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB30_2
-; GCN2-NEXT:  .LBB30_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB30_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB30_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -4448,6 +4798,7 @@ define amdgpu_kernel void @atomic_max_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB30_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_max_i64_addr64:
@@ -4461,24 +4812,25 @@ define amdgpu_kernel void @atomic_max_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[4:5]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB30_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB30_4
-; GFX12-NEXT:  .LBB30_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB30_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB30_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_max_i64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB30_2
-; GFX12-NEXT:  .LBB30_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB30_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB30_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -4487,6 +4839,7 @@ define amdgpu_kernel void @atomic_max_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB30_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -4510,9 +4863,9 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB31_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -4520,11 +4873,17 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN1-NEXT:    flat_atomic_smax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB31_3
-; GCN1-NEXT:    s_branch .LBB31_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB31_3
 ; GCN1-NEXT:  .LBB31_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB31_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB31_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB31_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s12
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -4541,7 +4900,7 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB31_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB31_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -4563,9 +4922,9 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB31_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -4573,11 +4932,17 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN2-NEXT:    flat_atomic_smax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB31_3
-; GCN2-NEXT:    s_branch .LBB31_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB31_3
 ; GCN2-NEXT:  .LBB31_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB31_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB31_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB31_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -4593,7 +4958,7 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB31_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB31_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -4609,21 +4974,28 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[6:7]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB31_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB31_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_max_i64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB31_3
-; GFX12-NEXT:    s_branch .LBB31_4
+; GFX12-NEXT:    s_branch .LBB31_3
 ; GFX12-NEXT:  .LBB31_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB31_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB31_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB31_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -4632,7 +5004,7 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB31_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB31_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -4658,24 +5030,24 @@ define amdgpu_kernel void @atomic_umax_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB32_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB32_4
-; GCN1-NEXT:  .LBB32_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB32_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB32_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_umax_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB32_2
-; GCN1-NEXT:  .LBB32_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB32_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB32_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -4692,6 +5064,7 @@ define amdgpu_kernel void @atomic_umax_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB32_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_umax_i64_offset:
@@ -4708,24 +5081,24 @@ define amdgpu_kernel void @atomic_umax_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB32_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB32_4
-; GCN2-NEXT:  .LBB32_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB32_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB32_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_umax_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB32_2
-; GCN2-NEXT:  .LBB32_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB32_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB32_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -4741,6 +5114,7 @@ define amdgpu_kernel void @atomic_umax_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB32_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_umax_i64_offset:
@@ -4751,23 +5125,24 @@ define amdgpu_kernel void @atomic_umax_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB32_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB32_4
-; GFX12-NEXT:  .LBB32_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB32_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB32_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_max_u64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB32_2
-; GFX12-NEXT:  .LBB32_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB32_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB32_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -4776,6 +5151,7 @@ define amdgpu_kernel void @atomic_umax_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB32_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds i64, ptr %out, i64 4
@@ -4799,9 +5175,9 @@ define amdgpu_kernel void @atomic_umax_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB33_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -4809,11 +5185,17 @@ define amdgpu_kernel void @atomic_umax_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN1-NEXT:    flat_atomic_umax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB33_3
-; GCN1-NEXT:    s_branch .LBB33_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB33_3
 ; GCN1-NEXT:  .LBB33_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB33_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB33_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB33_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s4
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -4830,7 +5212,7 @@ define amdgpu_kernel void @atomic_umax_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB33_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB33_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -4852,9 +5234,9 @@ define amdgpu_kernel void @atomic_umax_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB33_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -4862,11 +5244,17 @@ define amdgpu_kernel void @atomic_umax_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN2-NEXT:    flat_atomic_umax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB33_3
-; GCN2-NEXT:    s_branch .LBB33_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB33_3
 ; GCN2-NEXT:  .LBB33_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB33_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB33_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB33_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -4882,7 +5270,7 @@ define amdgpu_kernel void @atomic_umax_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB33_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB33_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -4899,20 +5287,27 @@ define amdgpu_kernel void @atomic_umax_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB33_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB33_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_max_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB33_3
-; GFX12-NEXT:    s_branch .LBB33_4
+; GFX12-NEXT:    s_branch .LBB33_3
 ; GFX12-NEXT:  .LBB33_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB33_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB33_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB33_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -4921,7 +5316,7 @@ define amdgpu_kernel void @atomic_umax_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB33_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB33_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -4951,24 +5346,24 @@ define amdgpu_kernel void @atomic_umax_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB34_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB34_4
-; GCN1-NEXT:  .LBB34_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB34_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB34_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_umax_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB34_2
-; GCN1-NEXT:  .LBB34_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB34_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB34_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -4985,44 +5380,46 @@ define amdgpu_kernel void @atomic_umax_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB34_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_umax_i64_addr64_offset:
 ; GCN2:       ; %bb.0: ; %entry
 ; GCN2-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
 ; GCN2-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
-; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GCN2-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s8, s[4:5], 0xfc
+; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
-; GCN2-NEXT:    s_add_u32 s0, s0, s4
-; GCN2-NEXT:    s_addc_u32 s1, s1, s5
+; GCN2-NEXT:    s_lshl_b64 s[6:7], s[6:7], 3
+; GCN2-NEXT:    s_load_dword s4, s[4:5], 0xfc
+; GCN2-NEXT:    s_add_u32 s0, s0, s6
+; GCN2-NEXT:    s_addc_u32 s1, s1, s7
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
-; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB34_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB34_4
-; GCN2-NEXT:  .LBB34_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB34_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB34_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_umax_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB34_2
-; GCN2-NEXT:  .LBB34_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB34_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB34_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -5038,6 +5435,7 @@ define amdgpu_kernel void @atomic_umax_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB34_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_umax_i64_addr64_offset:
@@ -5053,23 +5451,24 @@ define amdgpu_kernel void @atomic_umax_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB34_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB34_4
-; GFX12-NEXT:  .LBB34_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB34_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB34_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_max_u64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB34_2
-; GFX12-NEXT:  .LBB34_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB34_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB34_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -5078,6 +5477,7 @@ define amdgpu_kernel void @atomic_umax_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB34_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -5104,9 +5504,9 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB35_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -5114,11 +5514,17 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN1-NEXT:    flat_atomic_umax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB35_3
-; GCN1-NEXT:    s_branch .LBB35_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB35_3
 ; GCN1-NEXT:  .LBB35_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB35_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB35_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB35_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s12
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -5135,7 +5541,7 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB35_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB35_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -5150,8 +5556,8 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -5159,9 +5565,9 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB35_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -5169,11 +5575,17 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN2-NEXT:    flat_atomic_umax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB35_3
-; GCN2-NEXT:    s_branch .LBB35_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB35_3
 ; GCN2-NEXT:  .LBB35_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB35_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB35_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB35_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -5189,7 +5601,7 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB35_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB35_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -5207,20 +5619,27 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB35_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB35_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_max_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB35_3
-; GFX12-NEXT:    s_branch .LBB35_4
+; GFX12-NEXT:    s_branch .LBB35_3
 ; GFX12-NEXT:  .LBB35_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB35_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB35_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB35_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -5229,7 +5648,7 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB35_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB35_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -5254,24 +5673,24 @@ define amdgpu_kernel void @atomic_umax_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB36_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB36_4
-; GCN1-NEXT:  .LBB36_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB36_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB36_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_umax_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB36_2
-; GCN1-NEXT:  .LBB36_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB36_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB36_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -5288,6 +5707,7 @@ define amdgpu_kernel void @atomic_umax_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB36_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_umax_i64:
@@ -5302,24 +5722,24 @@ define amdgpu_kernel void @atomic_umax_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB36_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB36_4
-; GCN2-NEXT:  .LBB36_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB36_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB36_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_umax_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB36_2
-; GCN2-NEXT:  .LBB36_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB36_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB36_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -5335,6 +5755,7 @@ define amdgpu_kernel void @atomic_umax_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB36_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_umax_i64:
@@ -5343,24 +5764,25 @@ define amdgpu_kernel void @atomic_umax_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB36_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB36_4
-; GFX12-NEXT:  .LBB36_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB36_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB36_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_max_u64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB36_2
-; GFX12-NEXT:  .LBB36_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB36_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB36_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -5369,6 +5791,7 @@ define amdgpu_kernel void @atomic_umax_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB36_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %tmp0 = atomicrmw volatile umax ptr %out, i64 %in syncscope("workgroup") seq_cst, !amdgpu.no.fine.grained.memory !0
@@ -5389,9 +5812,9 @@ define amdgpu_kernel void @atomic_umax_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB37_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -5399,11 +5822,17 @@ define amdgpu_kernel void @atomic_umax_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN1-NEXT:    flat_atomic_umax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB37_3
-; GCN1-NEXT:    s_branch .LBB37_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB37_3
 ; GCN1-NEXT:  .LBB37_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB37_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB37_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB37_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s4
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -5420,7 +5849,7 @@ define amdgpu_kernel void @atomic_umax_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB37_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB37_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -5440,9 +5869,9 @@ define amdgpu_kernel void @atomic_umax_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB37_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -5450,11 +5879,17 @@ define amdgpu_kernel void @atomic_umax_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN2-NEXT:    flat_atomic_umax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB37_3
-; GCN2-NEXT:    s_branch .LBB37_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB37_3
 ; GCN2-NEXT:  .LBB37_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB37_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB37_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB37_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -5470,7 +5905,7 @@ define amdgpu_kernel void @atomic_umax_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB37_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB37_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -5485,21 +5920,28 @@ define amdgpu_kernel void @atomic_umax_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB37_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB37_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_max_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB37_3
-; GFX12-NEXT:    s_branch .LBB37_4
+; GFX12-NEXT:    s_branch .LBB37_3
 ; GFX12-NEXT:  .LBB37_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB37_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB37_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB37_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -5508,7 +5950,7 @@ define amdgpu_kernel void @atomic_umax_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB37_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB37_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -5535,24 +5977,24 @@ define amdgpu_kernel void @atomic_umax_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    s_add_u32 s0, s0, s4
 ; GCN1-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB38_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB38_4
-; GCN1-NEXT:  .LBB38_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB38_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB38_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_umax_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB38_2
-; GCN1-NEXT:  .LBB38_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB38_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB38_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -5569,6 +6011,7 @@ define amdgpu_kernel void @atomic_umax_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB38_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_umax_i64_addr64:
@@ -5587,24 +6030,24 @@ define amdgpu_kernel void @atomic_umax_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    s_add_u32 s0, s0, s4
 ; GCN2-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB38_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB38_4
-; GCN2-NEXT:  .LBB38_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB38_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB38_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_umax_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB38_2
-; GCN2-NEXT:  .LBB38_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB38_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB38_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -5620,6 +6063,7 @@ define amdgpu_kernel void @atomic_umax_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB38_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_umax_i64_addr64:
@@ -5633,24 +6077,25 @@ define amdgpu_kernel void @atomic_umax_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[4:5]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB38_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB38_4
-; GFX12-NEXT:  .LBB38_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB38_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB38_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_max_u64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB38_2
-; GFX12-NEXT:  .LBB38_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB38_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB38_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -5659,6 +6104,7 @@ define amdgpu_kernel void @atomic_umax_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB38_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -5682,9 +6128,9 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB39_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -5692,11 +6138,17 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN1-NEXT:    flat_atomic_umax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB39_3
-; GCN1-NEXT:    s_branch .LBB39_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB39_3
 ; GCN1-NEXT:  .LBB39_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB39_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB39_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB39_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s12
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -5713,7 +6165,7 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB39_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB39_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -5735,9 +6187,9 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB39_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -5745,11 +6197,17 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN2-NEXT:    flat_atomic_umax_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB39_3
-; GCN2-NEXT:    s_branch .LBB39_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB39_3
 ; GCN2-NEXT:  .LBB39_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB39_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB39_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB39_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -5765,7 +6223,7 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB39_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB39_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -5781,21 +6239,28 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[6:7]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB39_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB39_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_max_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB39_3
-; GFX12-NEXT:    s_branch .LBB39_4
+; GFX12-NEXT:    s_branch .LBB39_3
 ; GFX12-NEXT:  .LBB39_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB39_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB39_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -5804,7 +6269,7 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB39_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB39_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -5830,24 +6295,24 @@ define amdgpu_kernel void @atomic_min_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB40_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB40_4
-; GCN1-NEXT:  .LBB40_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB40_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB40_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_smin_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB40_2
-; GCN1-NEXT:  .LBB40_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB40_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB40_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -5864,6 +6329,7 @@ define amdgpu_kernel void @atomic_min_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB40_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_min_i64_offset:
@@ -5880,24 +6346,24 @@ define amdgpu_kernel void @atomic_min_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB40_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB40_4
-; GCN2-NEXT:  .LBB40_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB40_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB40_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_smin_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB40_2
-; GCN2-NEXT:  .LBB40_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB40_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB40_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -5913,6 +6379,7 @@ define amdgpu_kernel void @atomic_min_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB40_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_min_i64_offset:
@@ -5923,23 +6390,24 @@ define amdgpu_kernel void @atomic_min_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB40_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB40_4
-; GFX12-NEXT:  .LBB40_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB40_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB40_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_min_i64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB40_2
-; GFX12-NEXT:  .LBB40_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB40_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB40_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -5948,6 +6416,7 @@ define amdgpu_kernel void @atomic_min_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB40_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds i64, ptr %out, i64 4
@@ -5971,9 +6440,9 @@ define amdgpu_kernel void @atomic_min_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB41_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -5981,11 +6450,17 @@ define amdgpu_kernel void @atomic_min_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN1-NEXT:    flat_atomic_smin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB41_3
-; GCN1-NEXT:    s_branch .LBB41_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB41_3
 ; GCN1-NEXT:  .LBB41_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB41_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB41_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB41_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s4
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -6002,7 +6477,7 @@ define amdgpu_kernel void @atomic_min_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB41_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB41_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -6024,9 +6499,9 @@ define amdgpu_kernel void @atomic_min_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB41_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -6034,11 +6509,17 @@ define amdgpu_kernel void @atomic_min_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN2-NEXT:    flat_atomic_smin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB41_3
-; GCN2-NEXT:    s_branch .LBB41_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB41_3
 ; GCN2-NEXT:  .LBB41_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB41_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB41_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB41_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -6054,7 +6535,7 @@ define amdgpu_kernel void @atomic_min_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB41_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB41_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -6071,20 +6552,27 @@ define amdgpu_kernel void @atomic_min_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB41_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB41_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_min_i64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB41_3
-; GFX12-NEXT:    s_branch .LBB41_4
+; GFX12-NEXT:    s_branch .LBB41_3
 ; GFX12-NEXT:  .LBB41_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB41_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB41_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB41_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -6093,7 +6581,7 @@ define amdgpu_kernel void @atomic_min_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB41_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB41_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -6123,24 +6611,24 @@ define amdgpu_kernel void @atomic_min_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB42_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB42_4
-; GCN1-NEXT:  .LBB42_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB42_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB42_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_smin_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB42_2
-; GCN1-NEXT:  .LBB42_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB42_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB42_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -6157,44 +6645,46 @@ define amdgpu_kernel void @atomic_min_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB42_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_min_i64_addr64_offset:
 ; GCN2:       ; %bb.0: ; %entry
 ; GCN2-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
 ; GCN2-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
-; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GCN2-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s8, s[4:5], 0xfc
+; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
-; GCN2-NEXT:    s_add_u32 s0, s0, s4
-; GCN2-NEXT:    s_addc_u32 s1, s1, s5
+; GCN2-NEXT:    s_lshl_b64 s[6:7], s[6:7], 3
+; GCN2-NEXT:    s_load_dword s4, s[4:5], 0xfc
+; GCN2-NEXT:    s_add_u32 s0, s0, s6
+; GCN2-NEXT:    s_addc_u32 s1, s1, s7
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
-; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB42_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB42_4
-; GCN2-NEXT:  .LBB42_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB42_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB42_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_smin_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB42_2
-; GCN2-NEXT:  .LBB42_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB42_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB42_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -6210,6 +6700,7 @@ define amdgpu_kernel void @atomic_min_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB42_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_min_i64_addr64_offset:
@@ -6225,23 +6716,24 @@ define amdgpu_kernel void @atomic_min_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB42_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB42_4
-; GFX12-NEXT:  .LBB42_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB42_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB42_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_min_i64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB42_2
-; GFX12-NEXT:  .LBB42_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB42_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB42_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -6250,6 +6742,7 @@ define amdgpu_kernel void @atomic_min_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB42_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -6276,9 +6769,9 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB43_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -6286,11 +6779,17 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN1-NEXT:    flat_atomic_smin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB43_3
-; GCN1-NEXT:    s_branch .LBB43_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB43_3
 ; GCN1-NEXT:  .LBB43_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB43_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB43_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB43_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s12
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -6307,7 +6806,7 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB43_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB43_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -6322,8 +6821,8 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -6331,9 +6830,9 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB43_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -6341,11 +6840,17 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN2-NEXT:    flat_atomic_smin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB43_3
-; GCN2-NEXT:    s_branch .LBB43_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB43_3
 ; GCN2-NEXT:  .LBB43_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB43_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB43_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB43_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -6361,7 +6866,7 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB43_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB43_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -6379,20 +6884,27 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB43_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB43_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_min_i64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB43_3
-; GFX12-NEXT:    s_branch .LBB43_4
+; GFX12-NEXT:    s_branch .LBB43_3
 ; GFX12-NEXT:  .LBB43_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB43_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB43_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB43_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -6401,7 +6913,7 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB43_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB43_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -6426,24 +6938,24 @@ define amdgpu_kernel void @atomic_min_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB44_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB44_4
-; GCN1-NEXT:  .LBB44_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB44_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB44_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_smin_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB44_2
-; GCN1-NEXT:  .LBB44_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB44_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB44_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -6460,6 +6972,7 @@ define amdgpu_kernel void @atomic_min_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB44_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_min_i64:
@@ -6474,24 +6987,24 @@ define amdgpu_kernel void @atomic_min_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB44_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB44_4
-; GCN2-NEXT:  .LBB44_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB44_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB44_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_smin_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB44_2
-; GCN2-NEXT:  .LBB44_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB44_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB44_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -6507,6 +7020,7 @@ define amdgpu_kernel void @atomic_min_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB44_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_min_i64:
@@ -6515,24 +7029,25 @@ define amdgpu_kernel void @atomic_min_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB44_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB44_4
-; GFX12-NEXT:  .LBB44_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB44_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB44_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_min_i64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB44_2
-; GFX12-NEXT:  .LBB44_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB44_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB44_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -6541,6 +7056,7 @@ define amdgpu_kernel void @atomic_min_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB44_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %tmp0 = atomicrmw volatile min ptr %out, i64 %in syncscope("workgroup") seq_cst, !amdgpu.no.fine.grained.memory !0
@@ -6561,9 +7077,9 @@ define amdgpu_kernel void @atomic_min_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB45_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -6571,11 +7087,17 @@ define amdgpu_kernel void @atomic_min_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN1-NEXT:    flat_atomic_smin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB45_3
-; GCN1-NEXT:    s_branch .LBB45_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB45_3
 ; GCN1-NEXT:  .LBB45_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB45_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB45_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB45_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s4
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -6592,7 +7114,7 @@ define amdgpu_kernel void @atomic_min_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB45_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB45_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -6612,9 +7134,9 @@ define amdgpu_kernel void @atomic_min_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB45_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -6622,11 +7144,17 @@ define amdgpu_kernel void @atomic_min_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN2-NEXT:    flat_atomic_smin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB45_3
-; GCN2-NEXT:    s_branch .LBB45_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB45_3
 ; GCN2-NEXT:  .LBB45_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB45_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB45_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB45_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -6642,7 +7170,7 @@ define amdgpu_kernel void @atomic_min_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB45_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB45_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -6657,21 +7185,28 @@ define amdgpu_kernel void @atomic_min_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB45_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB45_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_min_i64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB45_3
-; GFX12-NEXT:    s_branch .LBB45_4
+; GFX12-NEXT:    s_branch .LBB45_3
 ; GFX12-NEXT:  .LBB45_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB45_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB45_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB45_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -6680,7 +7215,7 @@ define amdgpu_kernel void @atomic_min_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB45_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB45_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -6707,24 +7242,24 @@ define amdgpu_kernel void @atomic_min_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    s_add_u32 s0, s0, s4
 ; GCN1-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB46_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB46_4
-; GCN1-NEXT:  .LBB46_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB46_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB46_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_smin_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB46_2
-; GCN1-NEXT:  .LBB46_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB46_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB46_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -6741,6 +7276,7 @@ define amdgpu_kernel void @atomic_min_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB46_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_min_i64_addr64:
@@ -6759,24 +7295,24 @@ define amdgpu_kernel void @atomic_min_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    s_add_u32 s0, s0, s4
 ; GCN2-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB46_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB46_4
-; GCN2-NEXT:  .LBB46_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB46_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB46_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_smin_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB46_2
-; GCN2-NEXT:  .LBB46_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB46_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB46_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -6792,6 +7328,7 @@ define amdgpu_kernel void @atomic_min_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB46_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_min_i64_addr64:
@@ -6805,24 +7342,25 @@ define amdgpu_kernel void @atomic_min_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[4:5]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB46_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB46_4
-; GFX12-NEXT:  .LBB46_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB46_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB46_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_min_i64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB46_2
-; GFX12-NEXT:  .LBB46_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB46_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB46_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -6831,6 +7369,7 @@ define amdgpu_kernel void @atomic_min_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB46_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -6854,9 +7393,9 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB47_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -6864,11 +7403,17 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN1-NEXT:    flat_atomic_smin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB47_3
-; GCN1-NEXT:    s_branch .LBB47_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB47_3
 ; GCN1-NEXT:  .LBB47_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB47_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB47_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB47_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s12
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -6885,7 +7430,7 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB47_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB47_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -6907,9 +7452,9 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB47_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -6917,11 +7462,17 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN2-NEXT:    flat_atomic_smin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB47_3
-; GCN2-NEXT:    s_branch .LBB47_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB47_3
 ; GCN2-NEXT:  .LBB47_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB47_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB47_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB47_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -6937,7 +7488,7 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB47_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB47_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -6953,21 +7504,28 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[6:7]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB47_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB47_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_min_i64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB47_3
-; GFX12-NEXT:    s_branch .LBB47_4
+; GFX12-NEXT:    s_branch .LBB47_3
 ; GFX12-NEXT:  .LBB47_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB47_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB47_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB47_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -6976,7 +7534,7 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB47_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB47_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -7002,24 +7560,24 @@ define amdgpu_kernel void @atomic_umin_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB48_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB48_4
-; GCN1-NEXT:  .LBB48_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB48_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB48_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_umin_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB48_2
-; GCN1-NEXT:  .LBB48_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB48_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB48_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -7036,6 +7594,7 @@ define amdgpu_kernel void @atomic_umin_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB48_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_umin_i64_offset:
@@ -7052,24 +7611,24 @@ define amdgpu_kernel void @atomic_umin_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB48_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB48_4
-; GCN2-NEXT:  .LBB48_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB48_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB48_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_umin_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB48_2
-; GCN2-NEXT:  .LBB48_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB48_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB48_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -7085,6 +7644,7 @@ define amdgpu_kernel void @atomic_umin_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB48_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_umin_i64_offset:
@@ -7095,23 +7655,24 @@ define amdgpu_kernel void @atomic_umin_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB48_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB48_4
-; GFX12-NEXT:  .LBB48_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB48_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB48_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_min_u64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB48_2
-; GFX12-NEXT:  .LBB48_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB48_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB48_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -7120,6 +7681,7 @@ define amdgpu_kernel void @atomic_umin_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB48_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds i64, ptr %out, i64 4
@@ -7143,9 +7705,9 @@ define amdgpu_kernel void @atomic_umin_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB49_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -7153,11 +7715,17 @@ define amdgpu_kernel void @atomic_umin_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN1-NEXT:    flat_atomic_umin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB49_3
-; GCN1-NEXT:    s_branch .LBB49_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB49_3
 ; GCN1-NEXT:  .LBB49_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB49_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB49_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB49_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s4
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -7174,7 +7742,7 @@ define amdgpu_kernel void @atomic_umin_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB49_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB49_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -7196,9 +7764,9 @@ define amdgpu_kernel void @atomic_umin_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB49_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -7206,11 +7774,17 @@ define amdgpu_kernel void @atomic_umin_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN2-NEXT:    flat_atomic_umin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB49_3
-; GCN2-NEXT:    s_branch .LBB49_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB49_3
 ; GCN2-NEXT:  .LBB49_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB49_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB49_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB49_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -7226,7 +7800,7 @@ define amdgpu_kernel void @atomic_umin_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB49_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB49_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -7243,20 +7817,27 @@ define amdgpu_kernel void @atomic_umin_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB49_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB49_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_min_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB49_3
-; GFX12-NEXT:    s_branch .LBB49_4
+; GFX12-NEXT:    s_branch .LBB49_3
 ; GFX12-NEXT:  .LBB49_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB49_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB49_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB49_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -7265,7 +7846,7 @@ define amdgpu_kernel void @atomic_umin_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB49_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB49_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -7295,24 +7876,24 @@ define amdgpu_kernel void @atomic_umin_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB50_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB50_4
-; GCN1-NEXT:  .LBB50_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB50_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB50_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_umin_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB50_2
-; GCN1-NEXT:  .LBB50_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB50_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB50_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -7329,44 +7910,46 @@ define amdgpu_kernel void @atomic_umin_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB50_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_umin_i64_addr64_offset:
 ; GCN2:       ; %bb.0: ; %entry
 ; GCN2-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
 ; GCN2-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
-; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GCN2-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s8, s[4:5], 0xfc
+; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
-; GCN2-NEXT:    s_add_u32 s0, s0, s4
-; GCN2-NEXT:    s_addc_u32 s1, s1, s5
+; GCN2-NEXT:    s_lshl_b64 s[6:7], s[6:7], 3
+; GCN2-NEXT:    s_load_dword s4, s[4:5], 0xfc
+; GCN2-NEXT:    s_add_u32 s0, s0, s6
+; GCN2-NEXT:    s_addc_u32 s1, s1, s7
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
-; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB50_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB50_4
-; GCN2-NEXT:  .LBB50_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB50_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB50_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_umin_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB50_2
-; GCN2-NEXT:  .LBB50_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB50_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB50_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -7382,6 +7965,7 @@ define amdgpu_kernel void @atomic_umin_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB50_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_umin_i64_addr64_offset:
@@ -7397,23 +7981,24 @@ define amdgpu_kernel void @atomic_umin_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB50_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB50_4
-; GFX12-NEXT:  .LBB50_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB50_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB50_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_min_u64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB50_2
-; GFX12-NEXT:  .LBB50_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB50_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB50_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -7422,6 +8007,7 @@ define amdgpu_kernel void @atomic_umin_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB50_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -7448,9 +8034,9 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB51_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -7458,11 +8044,17 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN1-NEXT:    flat_atomic_umin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB51_3
-; GCN1-NEXT:    s_branch .LBB51_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB51_3
 ; GCN1-NEXT:  .LBB51_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB51_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB51_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB51_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s12
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -7479,7 +8071,7 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB51_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB51_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -7494,8 +8086,8 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -7503,9 +8095,9 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB51_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -7513,11 +8105,17 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN2-NEXT:    flat_atomic_umin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB51_3
-; GCN2-NEXT:    s_branch .LBB51_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB51_3
 ; GCN2-NEXT:  .LBB51_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB51_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB51_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB51_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -7533,7 +8131,7 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB51_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB51_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -7551,20 +8149,27 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB51_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB51_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_min_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB51_3
-; GFX12-NEXT:    s_branch .LBB51_4
+; GFX12-NEXT:    s_branch .LBB51_3
 ; GFX12-NEXT:  .LBB51_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB51_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB51_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB51_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -7573,7 +8178,7 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB51_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB51_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -7598,24 +8203,24 @@ define amdgpu_kernel void @atomic_umin_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB52_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB52_4
-; GCN1-NEXT:  .LBB52_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB52_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB52_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_umin_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB52_2
-; GCN1-NEXT:  .LBB52_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB52_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB52_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -7632,6 +8237,7 @@ define amdgpu_kernel void @atomic_umin_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB52_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_umin_i64:
@@ -7646,24 +8252,24 @@ define amdgpu_kernel void @atomic_umin_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB52_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB52_4
-; GCN2-NEXT:  .LBB52_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB52_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB52_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_umin_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB52_2
-; GCN2-NEXT:  .LBB52_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB52_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB52_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -7679,6 +8285,7 @@ define amdgpu_kernel void @atomic_umin_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB52_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_umin_i64:
@@ -7687,24 +8294,25 @@ define amdgpu_kernel void @atomic_umin_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB52_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB52_4
-; GFX12-NEXT:  .LBB52_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB52_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB52_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_min_u64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB52_2
-; GFX12-NEXT:  .LBB52_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB52_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB52_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -7713,6 +8321,7 @@ define amdgpu_kernel void @atomic_umin_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB52_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %tmp0 = atomicrmw volatile umin ptr %out, i64 %in syncscope("workgroup") seq_cst, !amdgpu.no.fine.grained.memory !0
@@ -7733,9 +8342,9 @@ define amdgpu_kernel void @atomic_umin_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB53_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -7743,11 +8352,17 @@ define amdgpu_kernel void @atomic_umin_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN1-NEXT:    flat_atomic_umin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB53_3
-; GCN1-NEXT:    s_branch .LBB53_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB53_3
 ; GCN1-NEXT:  .LBB53_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB53_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB53_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB53_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s4
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -7764,7 +8379,7 @@ define amdgpu_kernel void @atomic_umin_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB53_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB53_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -7784,9 +8399,9 @@ define amdgpu_kernel void @atomic_umin_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB53_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -7794,11 +8409,17 @@ define amdgpu_kernel void @atomic_umin_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s5
 ; GCN2-NEXT:    flat_atomic_umin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB53_3
-; GCN2-NEXT:    s_branch .LBB53_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB53_3
 ; GCN2-NEXT:  .LBB53_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB53_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB53_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB53_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -7814,7 +8435,7 @@ define amdgpu_kernel void @atomic_umin_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB53_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB53_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -7829,21 +8450,28 @@ define amdgpu_kernel void @atomic_umin_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB53_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB53_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_min_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB53_3
-; GFX12-NEXT:    s_branch .LBB53_4
+; GFX12-NEXT:    s_branch .LBB53_3
 ; GFX12-NEXT:  .LBB53_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB53_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB53_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB53_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -7852,7 +8480,7 @@ define amdgpu_kernel void @atomic_umin_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB53_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB53_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -7879,24 +8507,24 @@ define amdgpu_kernel void @atomic_umin_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    s_add_u32 s0, s0, s4
 ; GCN1-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB54_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB54_4
-; GCN1-NEXT:  .LBB54_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB54_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB54_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_atomic_umin_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execnz .LBB54_2
-; GCN1-NEXT:  .LBB54_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB54_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB54_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -7913,6 +8541,7 @@ define amdgpu_kernel void @atomic_umin_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB54_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_umin_i64_addr64:
@@ -7931,24 +8560,24 @@ define amdgpu_kernel void @atomic_umin_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    s_add_u32 s0, s0, s4
 ; GCN2-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB54_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB54_4
-; GCN2-NEXT:  .LBB54_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB54_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB54_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_atomic_umin_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execnz .LBB54_2
-; GCN2-NEXT:  .LBB54_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB54_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB54_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -7964,6 +8593,7 @@ define amdgpu_kernel void @atomic_umin_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB54_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_umin_i64_addr64:
@@ -7977,24 +8607,25 @@ define amdgpu_kernel void @atomic_umin_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[4:5]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB54_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB54_4
-; GFX12-NEXT:  .LBB54_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB54_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB54_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_min_u64 v[0:1], v[2:3] scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execnz .LBB54_2
-; GFX12-NEXT:  .LBB54_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB54_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB54_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -8003,6 +8634,7 @@ define amdgpu_kernel void @atomic_umin_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    v_cndmask_b32_e32 v1, s3, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v0, s2, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB54_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -8026,9 +8658,9 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB55_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -8036,11 +8668,17 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN1-NEXT:    flat_atomic_umin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN1-NEXT:    s_cbranch_execz .LBB55_3
-; GCN1-NEXT:    s_branch .LBB55_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB55_3
 ; GCN1-NEXT:  .LBB55_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB55_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB55_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB55_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s12
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -8057,7 +8695,7 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB55_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB55_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
@@ -8079,9 +8717,9 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB55_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -8089,11 +8727,17 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s13
 ; GCN2-NEXT:    flat_atomic_umin_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_cbranch_execz .LBB55_3
-; GCN2-NEXT:    s_branch .LBB55_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB55_3
 ; GCN2-NEXT:  .LBB55_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB55_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB55_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB55_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -8109,7 +8753,7 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v4, v1, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB55_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB55_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
@@ -8125,21 +8769,28 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[6:7]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB55_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB55_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_min_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SE
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_SE
-; GFX12-NEXT:    s_cbranch_execz .LBB55_3
-; GFX12-NEXT:    s_branch .LBB55_4
+; GFX12-NEXT:    s_branch .LBB55_3
 ; GFX12-NEXT:  .LBB55_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB55_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB55_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB55_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -8148,7 +8799,7 @@ define amdgpu_kernel void @atomic_umin_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GFX12-NEXT:    v_cndmask_b32_e32 v3, s5, v1, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e32 v2, s4, v0, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB55_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB55_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -8174,16 +8825,11 @@ define amdgpu_kernel void @atomic_or_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB56_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB56_4
-; GCN1-NEXT:  .LBB56_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB56_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB56_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -8191,8 +8837,13 @@ define amdgpu_kernel void @atomic_or_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_or_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB56_2
-; GCN1-NEXT:  .LBB56_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB56_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB56_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -8207,6 +8858,7 @@ define amdgpu_kernel void @atomic_or_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_or_b32_e32 v3, s3, v3
 ; GCN1-NEXT:    buffer_store_dword v2, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB56_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_or_i64_offset:
@@ -8223,16 +8875,11 @@ define amdgpu_kernel void @atomic_or_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB56_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB56_4
-; GCN2-NEXT:  .LBB56_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB56_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB56_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -8240,8 +8887,13 @@ define amdgpu_kernel void @atomic_or_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_or_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB56_2
-; GCN2-NEXT:  .LBB56_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB56_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB56_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -8255,6 +8907,7 @@ define amdgpu_kernel void @atomic_or_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_or_b32_e32 v3, s3, v3
 ; GCN2-NEXT:    buffer_store_dword v2, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB56_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_or_i64_offset:
@@ -8265,23 +8918,24 @@ define amdgpu_kernel void @atomic_or_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB56_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB56_4
-; GFX12-NEXT:  .LBB56_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB56_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB56_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_or_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB56_2
-; GFX12-NEXT:  .LBB56_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB56_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB56_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -8289,6 +8943,7 @@ define amdgpu_kernel void @atomic_or_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_or_b32_e32 v1, s3, v1
 ; GFX12-NEXT:    v_or_b32_e32 v0, s2, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB56_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds i64, ptr %out, i64 4
@@ -8312,9 +8967,9 @@ define amdgpu_kernel void @atomic_or_i64_ret_offset(ptr %out, ptr %out2, i64 %in
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB57_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -8323,11 +8978,17 @@ define amdgpu_kernel void @atomic_or_i64_ret_offset(ptr %out, ptr %out2, i64 %in
 ; GCN1-NEXT:    flat_atomic_or_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB57_3
-; GCN1-NEXT:    s_branch .LBB57_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB57_3
 ; GCN1-NEXT:  .LBB57_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB57_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB57_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB57_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -8342,7 +9003,7 @@ define amdgpu_kernel void @atomic_or_i64_ret_offset(ptr %out, ptr %out2, i64 %in
 ; GCN1-NEXT:    v_or_b32_e32 v5, s5, v1
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB57_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB57_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -8363,9 +9024,9 @@ define amdgpu_kernel void @atomic_or_i64_ret_offset(ptr %out, ptr %out2, i64 %in
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB57_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -8374,11 +9035,17 @@ define amdgpu_kernel void @atomic_or_i64_ret_offset(ptr %out, ptr %out2, i64 %in
 ; GCN2-NEXT:    flat_atomic_or_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB57_3
-; GCN2-NEXT:    s_branch .LBB57_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB57_3
 ; GCN2-NEXT:  .LBB57_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB57_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB57_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB57_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -8392,7 +9059,7 @@ define amdgpu_kernel void @atomic_or_i64_ret_offset(ptr %out, ptr %out2, i64 %in
 ; GCN2-NEXT:    v_or_b32_e32 v5, s5, v1
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB57_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB57_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -8408,20 +9075,27 @@ define amdgpu_kernel void @atomic_or_i64_ret_offset(ptr %out, ptr %out2, i64 %in
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB57_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB57_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_or_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB57_3
-; GFX12-NEXT:    s_branch .LBB57_4
+; GFX12-NEXT:    s_branch .LBB57_3
 ; GFX12-NEXT:  .LBB57_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB57_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB57_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB57_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -8429,7 +9103,7 @@ define amdgpu_kernel void @atomic_or_i64_ret_offset(ptr %out, ptr %out2, i64 %in
 ; GFX12-NEXT:    v_or_b32_e32 v3, s5, v1
 ; GFX12-NEXT:    v_or_b32_e32 v2, s4, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB57_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB57_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -8459,16 +9133,11 @@ define amdgpu_kernel void @atomic_or_i64_addr64_offset(ptr %out, i64 %in, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB58_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB58_4
-; GCN1-NEXT:  .LBB58_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB58_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB58_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -8476,8 +9145,13 @@ define amdgpu_kernel void @atomic_or_i64_addr64_offset(ptr %out, i64 %in, i64 %i
 ; GCN1-NEXT:    flat_atomic_or_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB58_2
-; GCN1-NEXT:  .LBB58_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB58_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB58_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -8492,36 +9166,33 @@ define amdgpu_kernel void @atomic_or_i64_addr64_offset(ptr %out, i64 %in, i64 %i
 ; GCN1-NEXT:    v_or_b32_e32 v3, s3, v3
 ; GCN1-NEXT:    buffer_store_dword v2, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB58_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_or_i64_addr64_offset:
 ; GCN2:       ; %bb.0: ; %entry
 ; GCN2-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
 ; GCN2-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
-; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GCN2-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s8, s[4:5], 0xfc
+; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
-; GCN2-NEXT:    s_add_u32 s0, s0, s4
-; GCN2-NEXT:    s_addc_u32 s1, s1, s5
+; GCN2-NEXT:    s_lshl_b64 s[6:7], s[6:7], 3
+; GCN2-NEXT:    s_load_dword s4, s[4:5], 0xfc
+; GCN2-NEXT:    s_add_u32 s0, s0, s6
+; GCN2-NEXT:    s_addc_u32 s1, s1, s7
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
-; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB58_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB58_4
-; GCN2-NEXT:  .LBB58_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB58_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB58_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -8529,8 +9200,13 @@ define amdgpu_kernel void @atomic_or_i64_addr64_offset(ptr %out, i64 %in, i64 %i
 ; GCN2-NEXT:    flat_atomic_or_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB58_2
-; GCN2-NEXT:  .LBB58_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB58_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB58_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -8544,6 +9220,7 @@ define amdgpu_kernel void @atomic_or_i64_addr64_offset(ptr %out, i64 %in, i64 %i
 ; GCN2-NEXT:    v_or_b32_e32 v3, s3, v3
 ; GCN2-NEXT:    buffer_store_dword v2, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB58_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_or_i64_addr64_offset:
@@ -8559,23 +9236,24 @@ define amdgpu_kernel void @atomic_or_i64_addr64_offset(ptr %out, i64 %in, i64 %i
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB58_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB58_4
-; GFX12-NEXT:  .LBB58_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB58_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB58_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_or_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB58_2
-; GFX12-NEXT:  .LBB58_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB58_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB58_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -8583,6 +9261,7 @@ define amdgpu_kernel void @atomic_or_i64_addr64_offset(ptr %out, i64 %in, i64 %i
 ; GFX12-NEXT:    v_or_b32_e32 v1, s3, v1
 ; GFX12-NEXT:    v_or_b32_e32 v0, s2, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB58_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -8609,9 +9288,9 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB59_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -8620,11 +9299,17 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    flat_atomic_or_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB59_3
-; GCN1-NEXT:    s_branch .LBB59_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB59_3
 ; GCN1-NEXT:  .LBB59_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB59_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB59_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB59_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -8639,7 +9324,7 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    v_or_b32_e32 v5, s13, v1
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB59_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB59_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -8653,8 +9338,8 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -8662,9 +9347,9 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB59_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -8673,11 +9358,17 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    flat_atomic_or_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB59_3
-; GCN2-NEXT:    s_branch .LBB59_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB59_3
 ; GCN2-NEXT:  .LBB59_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB59_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB59_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB59_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -8691,7 +9382,7 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    v_or_b32_e32 v5, s13, v1
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB59_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB59_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -8708,20 +9399,27 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB59_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB59_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_or_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB59_3
-; GFX12-NEXT:    s_branch .LBB59_4
+; GFX12-NEXT:    s_branch .LBB59_3
 ; GFX12-NEXT:  .LBB59_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB59_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB59_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB59_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -8729,7 +9427,7 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    v_or_b32_e32 v3, s5, v1
 ; GFX12-NEXT:    v_or_b32_e32 v2, s4, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB59_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB59_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -8754,16 +9452,11 @@ define amdgpu_kernel void @atomic_or_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB60_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB60_4
-; GCN1-NEXT:  .LBB60_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB60_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB60_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -8771,8 +9464,13 @@ define amdgpu_kernel void @atomic_or_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_or_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB60_2
-; GCN1-NEXT:  .LBB60_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB60_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB60_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -8787,6 +9485,7 @@ define amdgpu_kernel void @atomic_or_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_or_b32_e32 v3, s3, v3
 ; GCN1-NEXT:    buffer_store_dword v2, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB60_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_or_i64:
@@ -8801,16 +9500,11 @@ define amdgpu_kernel void @atomic_or_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB60_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB60_4
-; GCN2-NEXT:  .LBB60_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB60_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB60_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -8818,8 +9512,13 @@ define amdgpu_kernel void @atomic_or_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_or_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB60_2
-; GCN2-NEXT:  .LBB60_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB60_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB60_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -8833,6 +9532,7 @@ define amdgpu_kernel void @atomic_or_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_or_b32_e32 v3, s3, v3
 ; GCN2-NEXT:    buffer_store_dword v2, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB60_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_or_i64:
@@ -8841,24 +9541,25 @@ define amdgpu_kernel void @atomic_or_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB60_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB60_4
-; GFX12-NEXT:  .LBB60_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB60_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB60_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_or_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB60_2
-; GFX12-NEXT:  .LBB60_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB60_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB60_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -8866,6 +9567,7 @@ define amdgpu_kernel void @atomic_or_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_or_b32_e32 v1, s3, v1
 ; GFX12-NEXT:    v_or_b32_e32 v0, s2, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB60_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %tmp0 = atomicrmw volatile or ptr %out, i64 %in syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0
@@ -8886,9 +9588,9 @@ define amdgpu_kernel void @atomic_or_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB61_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB61_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -8897,11 +9599,17 @@ define amdgpu_kernel void @atomic_or_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_or_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB61_3
-; GCN1-NEXT:    s_branch .LBB61_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB61_3
 ; GCN1-NEXT:  .LBB61_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB61_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB61_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB61_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -8916,7 +9624,7 @@ define amdgpu_kernel void @atomic_or_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    v_or_b32_e32 v5, s5, v1
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB61_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB61_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -8935,9 +9643,9 @@ define amdgpu_kernel void @atomic_or_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB61_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB61_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -8946,11 +9654,17 @@ define amdgpu_kernel void @atomic_or_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_or_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB61_3
-; GCN2-NEXT:    s_branch .LBB61_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB61_3
 ; GCN2-NEXT:  .LBB61_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB61_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB61_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB61_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -8964,7 +9678,7 @@ define amdgpu_kernel void @atomic_or_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    v_or_b32_e32 v5, s5, v1
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB61_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB61_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -8978,21 +9692,28 @@ define amdgpu_kernel void @atomic_or_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB61_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB61_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_or_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB61_3
-; GFX12-NEXT:    s_branch .LBB61_4
+; GFX12-NEXT:    s_branch .LBB61_3
 ; GFX12-NEXT:  .LBB61_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB61_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB61_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB61_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -9000,7 +9721,7 @@ define amdgpu_kernel void @atomic_or_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    v_or_b32_e32 v3, s5, v1
 ; GFX12-NEXT:    v_or_b32_e32 v2, s4, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB61_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB61_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -9027,16 +9748,11 @@ define amdgpu_kernel void @atomic_or_i64_addr64(ptr %out, i64 %in, i64 %index) {
 ; GCN1-NEXT:    s_add_u32 s0, s0, s4
 ; GCN1-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB62_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB62_4
-; GCN1-NEXT:  .LBB62_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB62_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB62_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -9044,8 +9760,13 @@ define amdgpu_kernel void @atomic_or_i64_addr64(ptr %out, i64 %in, i64 %index) {
 ; GCN1-NEXT:    flat_atomic_or_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB62_2
-; GCN1-NEXT:  .LBB62_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB62_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB62_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -9060,6 +9781,7 @@ define amdgpu_kernel void @atomic_or_i64_addr64(ptr %out, i64 %in, i64 %index) {
 ; GCN1-NEXT:    v_or_b32_e32 v3, s3, v3
 ; GCN1-NEXT:    buffer_store_dword v2, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB62_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_or_i64_addr64:
@@ -9078,16 +9800,11 @@ define amdgpu_kernel void @atomic_or_i64_addr64(ptr %out, i64 %in, i64 %index) {
 ; GCN2-NEXT:    s_add_u32 s0, s0, s4
 ; GCN2-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB62_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB62_4
-; GCN2-NEXT:  .LBB62_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB62_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB62_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -9095,8 +9812,13 @@ define amdgpu_kernel void @atomic_or_i64_addr64(ptr %out, i64 %in, i64 %index) {
 ; GCN2-NEXT:    flat_atomic_or_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB62_2
-; GCN2-NEXT:  .LBB62_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB62_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB62_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -9110,6 +9832,7 @@ define amdgpu_kernel void @atomic_or_i64_addr64(ptr %out, i64 %in, i64 %index) {
 ; GCN2-NEXT:    v_or_b32_e32 v3, s3, v3
 ; GCN2-NEXT:    buffer_store_dword v2, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB62_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_or_i64_addr64:
@@ -9123,24 +9846,25 @@ define amdgpu_kernel void @atomic_or_i64_addr64(ptr %out, i64 %in, i64 %index) {
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[4:5]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB62_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB62_4
-; GFX12-NEXT:  .LBB62_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB62_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB62_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_or_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB62_2
-; GFX12-NEXT:  .LBB62_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB62_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB62_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -9148,6 +9872,7 @@ define amdgpu_kernel void @atomic_or_i64_addr64(ptr %out, i64 %in, i64 %index) {
 ; GFX12-NEXT:    v_or_b32_e32 v1, s3, v1
 ; GFX12-NEXT:    v_or_b32_e32 v0, s2, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB62_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -9171,9 +9896,9 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64(ptr %out, ptr %out2, i64 %in
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB63_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB63_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -9182,11 +9907,17 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64(ptr %out, ptr %out2, i64 %in
 ; GCN1-NEXT:    flat_atomic_or_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB63_3
-; GCN1-NEXT:    s_branch .LBB63_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB63_3
 ; GCN1-NEXT:  .LBB63_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB63_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB63_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB63_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -9201,7 +9932,7 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64(ptr %out, ptr %out2, i64 %in
 ; GCN1-NEXT:    v_or_b32_e32 v5, s13, v1
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB63_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB63_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -9222,9 +9953,9 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64(ptr %out, ptr %out2, i64 %in
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB63_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB63_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -9233,11 +9964,17 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64(ptr %out, ptr %out2, i64 %in
 ; GCN2-NEXT:    flat_atomic_or_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB63_3
-; GCN2-NEXT:    s_branch .LBB63_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB63_3
 ; GCN2-NEXT:  .LBB63_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB63_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB63_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB63_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -9251,7 +9988,7 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64(ptr %out, ptr %out2, i64 %in
 ; GCN2-NEXT:    v_or_b32_e32 v5, s13, v1
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB63_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB63_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -9266,21 +10003,28 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64(ptr %out, ptr %out2, i64 %in
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[6:7]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB63_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB63_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_or_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB63_3
-; GFX12-NEXT:    s_branch .LBB63_4
+; GFX12-NEXT:    s_branch .LBB63_3
 ; GFX12-NEXT:  .LBB63_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB63_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB63_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB63_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -9288,7 +10032,7 @@ define amdgpu_kernel void @atomic_or_i64_ret_addr64(ptr %out, ptr %out2, i64 %in
 ; GFX12-NEXT:    v_or_b32_e32 v3, s5, v1
 ; GFX12-NEXT:    v_or_b32_e32 v2, s4, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB63_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB63_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -9314,16 +10058,11 @@ define amdgpu_kernel void @atomic_xchg_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB64_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB64_4
-; GCN1-NEXT:  .LBB64_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB64_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB64_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -9331,8 +10070,13 @@ define amdgpu_kernel void @atomic_xchg_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB64_2
-; GCN1-NEXT:  .LBB64_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB64_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB64_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -9343,6 +10087,7 @@ define amdgpu_kernel void @atomic_xchg_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s3
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s0
 ; GCN1-NEXT:    buffer_store_dword v0, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB64_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_xchg_i64_offset:
@@ -9359,16 +10104,11 @@ define amdgpu_kernel void @atomic_xchg_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB64_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB64_4
-; GCN2-NEXT:  .LBB64_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB64_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB64_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -9376,8 +10116,13 @@ define amdgpu_kernel void @atomic_xchg_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB64_2
-; GCN2-NEXT:  .LBB64_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB64_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB64_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s2
@@ -9387,6 +10132,7 @@ define amdgpu_kernel void @atomic_xchg_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s3
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s0
 ; GCN2-NEXT:    buffer_store_dword v0, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB64_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_xchg_i64_offset:
@@ -9397,27 +10143,29 @@ define amdgpu_kernel void @atomic_xchg_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB64_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB64_4
-; GFX12-NEXT:  .LBB64_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB64_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB64_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_swap_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB64_2
-; GFX12-NEXT:  .LBB64_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB64_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB64_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB64_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds i64, ptr %out, i64 4
@@ -9440,16 +10188,11 @@ define amdgpu_kernel void @atomic_xchg_f64_offset(ptr %out, double %in) {
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB65_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB65_4
-; GCN1-NEXT:  .LBB65_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB65_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB65_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -9457,8 +10200,13 @@ define amdgpu_kernel void @atomic_xchg_f64_offset(ptr %out, double %in) {
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB65_2
-; GCN1-NEXT:  .LBB65_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB65_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB65_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -9469,6 +10217,7 @@ define amdgpu_kernel void @atomic_xchg_f64_offset(ptr %out, double %in) {
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s3
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s0
 ; GCN1-NEXT:    buffer_store_dword v0, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB65_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_xchg_f64_offset:
@@ -9485,16 +10234,11 @@ define amdgpu_kernel void @atomic_xchg_f64_offset(ptr %out, double %in) {
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB65_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB65_4
-; GCN2-NEXT:  .LBB65_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB65_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB65_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -9502,8 +10246,13 @@ define amdgpu_kernel void @atomic_xchg_f64_offset(ptr %out, double %in) {
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB65_2
-; GCN2-NEXT:  .LBB65_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB65_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB65_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s2
@@ -9513,6 +10262,7 @@ define amdgpu_kernel void @atomic_xchg_f64_offset(ptr %out, double %in) {
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s3
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s0
 ; GCN2-NEXT:    buffer_store_dword v0, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB65_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_xchg_f64_offset:
@@ -9523,27 +10273,29 @@ define amdgpu_kernel void @atomic_xchg_f64_offset(ptr %out, double %in) {
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB65_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB65_4
-; GFX12-NEXT:  .LBB65_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB65_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB65_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_swap_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB65_2
-; GFX12-NEXT:  .LBB65_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB65_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB65_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB65_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds double, ptr %out, i64 4
@@ -9566,16 +10318,11 @@ define amdgpu_kernel void @atomic_xchg_pointer_offset(ptr %out, ptr %in) {
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB66_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB66_4
-; GCN1-NEXT:  .LBB66_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB66_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB66_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -9583,8 +10330,13 @@ define amdgpu_kernel void @atomic_xchg_pointer_offset(ptr %out, ptr %in) {
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB66_2
-; GCN1-NEXT:  .LBB66_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB66_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB66_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -9595,6 +10347,7 @@ define amdgpu_kernel void @atomic_xchg_pointer_offset(ptr %out, ptr %in) {
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s3
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s0
 ; GCN1-NEXT:    buffer_store_dword v0, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB66_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_xchg_pointer_offset:
@@ -9611,16 +10364,11 @@ define amdgpu_kernel void @atomic_xchg_pointer_offset(ptr %out, ptr %in) {
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB66_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB66_4
-; GCN2-NEXT:  .LBB66_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB66_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB66_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -9628,8 +10376,13 @@ define amdgpu_kernel void @atomic_xchg_pointer_offset(ptr %out, ptr %in) {
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB66_2
-; GCN2-NEXT:  .LBB66_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB66_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB66_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s2
@@ -9639,6 +10392,7 @@ define amdgpu_kernel void @atomic_xchg_pointer_offset(ptr %out, ptr %in) {
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s3
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s0
 ; GCN2-NEXT:    buffer_store_dword v0, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB66_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_xchg_pointer_offset:
@@ -9649,27 +10403,29 @@ define amdgpu_kernel void @atomic_xchg_pointer_offset(ptr %out, ptr %in) {
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB66_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB66_4
-; GFX12-NEXT:  .LBB66_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB66_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB66_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_swap_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB66_2
-; GFX12-NEXT:  .LBB66_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB66_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB66_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB66_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds ptr, ptr %out, i32 4
@@ -9693,9 +10449,9 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB67_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB67_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -9704,11 +10460,17 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB67_3
-; GCN1-NEXT:    s_branch .LBB67_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB67_3
 ; GCN1-NEXT:  .LBB67_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB67_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB67_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB67_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s4
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -9721,7 +10483,7 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s5
 ; GCN1-NEXT:    buffer_store_dword v2, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB67_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB67_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    s_waitcnt vmcnt(2)
@@ -9743,9 +10505,9 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB67_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB67_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -9754,11 +10516,17 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB67_3
-; GCN2-NEXT:    s_branch .LBB67_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB67_3
 ; GCN2-NEXT:  .LBB67_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB67_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB67_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB67_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -9770,7 +10538,7 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s5
 ; GCN2-NEXT:    buffer_store_dword v2, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB67_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB67_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    s_waitcnt vmcnt(2)
@@ -9787,26 +10555,33 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_offset(ptr %out, ptr %out2, i64 %
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB67_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB67_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_swap_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB67_3
-; GFX12-NEXT:    s_branch .LBB67_4
+; GFX12-NEXT:    s_branch .LBB67_3
 ; GFX12-NEXT:  .LBB67_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB67_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB67_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB67_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB67_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB67_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
@@ -9837,16 +10612,11 @@ define amdgpu_kernel void @atomic_xchg_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB68_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB68_4
-; GCN1-NEXT:  .LBB68_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB68_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB68_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -9854,8 +10624,13 @@ define amdgpu_kernel void @atomic_xchg_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB68_2
-; GCN1-NEXT:  .LBB68_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB68_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB68_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -9866,36 +10641,33 @@ define amdgpu_kernel void @atomic_xchg_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s3
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s0
 ; GCN1-NEXT:    buffer_store_dword v0, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB68_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_xchg_i64_addr64_offset:
 ; GCN2:       ; %bb.0: ; %entry
 ; GCN2-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
 ; GCN2-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
-; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GCN2-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s8, s[4:5], 0xfc
+; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
-; GCN2-NEXT:    s_add_u32 s0, s0, s4
-; GCN2-NEXT:    s_addc_u32 s1, s1, s5
+; GCN2-NEXT:    s_lshl_b64 s[6:7], s[6:7], 3
+; GCN2-NEXT:    s_load_dword s4, s[4:5], 0xfc
+; GCN2-NEXT:    s_add_u32 s0, s0, s6
+; GCN2-NEXT:    s_addc_u32 s1, s1, s7
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
-; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB68_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB68_4
-; GCN2-NEXT:  .LBB68_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB68_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB68_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -9903,8 +10675,13 @@ define amdgpu_kernel void @atomic_xchg_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB68_2
-; GCN2-NEXT:  .LBB68_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB68_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB68_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s2
@@ -9914,6 +10691,7 @@ define amdgpu_kernel void @atomic_xchg_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s3
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s0
 ; GCN2-NEXT:    buffer_store_dword v0, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB68_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_xchg_i64_addr64_offset:
@@ -9929,27 +10707,29 @@ define amdgpu_kernel void @atomic_xchg_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB68_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB68_4
-; GFX12-NEXT:  .LBB68_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB68_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB68_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_swap_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB68_2
-; GFX12-NEXT:  .LBB68_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB68_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB68_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB68_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -9976,9 +10756,9 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB69_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB69_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -9987,11 +10767,17 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB69_3
-; GCN1-NEXT:    s_branch .LBB69_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB69_3
 ; GCN1-NEXT:  .LBB69_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB69_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB69_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB69_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s12
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -10004,7 +10790,7 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s13
 ; GCN1-NEXT:    buffer_store_dword v2, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB69_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB69_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    s_waitcnt vmcnt(2)
@@ -10019,8 +10805,8 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -10028,9 +10814,9 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB69_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB69_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -10039,11 +10825,17 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB69_3
-; GCN2-NEXT:    s_branch .LBB69_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB69_3
 ; GCN2-NEXT:  .LBB69_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB69_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB69_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB69_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -10055,7 +10847,7 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s13
 ; GCN2-NEXT:    buffer_store_dword v2, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB69_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB69_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    s_waitcnt vmcnt(2)
@@ -10073,26 +10865,33 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB69_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB69_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_swap_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB69_3
-; GFX12-NEXT:    s_branch .LBB69_4
+; GFX12-NEXT:    s_branch .LBB69_3
 ; GFX12-NEXT:  .LBB69_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB69_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB69_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB69_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB69_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB69_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
@@ -10118,16 +10917,11 @@ define amdgpu_kernel void @atomic_xchg_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB70_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB70_4
-; GCN1-NEXT:  .LBB70_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB70_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB70_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -10135,8 +10929,13 @@ define amdgpu_kernel void @atomic_xchg_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB70_2
-; GCN1-NEXT:  .LBB70_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB70_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB70_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -10147,6 +10946,7 @@ define amdgpu_kernel void @atomic_xchg_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s3
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s0
 ; GCN1-NEXT:    buffer_store_dword v0, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB70_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_xchg_i64:
@@ -10161,16 +10961,11 @@ define amdgpu_kernel void @atomic_xchg_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB70_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB70_4
-; GCN2-NEXT:  .LBB70_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB70_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB70_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -10178,8 +10973,13 @@ define amdgpu_kernel void @atomic_xchg_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB70_2
-; GCN2-NEXT:  .LBB70_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB70_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB70_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s2
@@ -10189,6 +10989,7 @@ define amdgpu_kernel void @atomic_xchg_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s3
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s0
 ; GCN2-NEXT:    buffer_store_dword v0, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB70_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_xchg_i64:
@@ -10197,28 +10998,30 @@ define amdgpu_kernel void @atomic_xchg_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB70_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB70_4
-; GFX12-NEXT:  .LBB70_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB70_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB70_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_swap_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB70_2
-; GFX12-NEXT:  .LBB70_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB70_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB70_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB70_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %tmp0 = atomicrmw volatile xchg ptr %out, i64 %in syncscope("agent") seq_cst
@@ -10239,9 +11042,9 @@ define amdgpu_kernel void @atomic_xchg_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB71_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -10250,11 +11053,17 @@ define amdgpu_kernel void @atomic_xchg_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB71_3
-; GCN1-NEXT:    s_branch .LBB71_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB71_3
 ; GCN1-NEXT:  .LBB71_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB71_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB71_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB71_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s4
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -10267,7 +11076,7 @@ define amdgpu_kernel void @atomic_xchg_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s5
 ; GCN1-NEXT:    buffer_store_dword v2, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB71_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB71_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    s_waitcnt vmcnt(2)
@@ -10287,9 +11096,9 @@ define amdgpu_kernel void @atomic_xchg_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB71_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -10298,11 +11107,17 @@ define amdgpu_kernel void @atomic_xchg_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB71_3
-; GCN2-NEXT:    s_branch .LBB71_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB71_3
 ; GCN2-NEXT:  .LBB71_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB71_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB71_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB71_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -10314,7 +11129,7 @@ define amdgpu_kernel void @atomic_xchg_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s5
 ; GCN2-NEXT:    buffer_store_dword v2, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB71_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB71_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    s_waitcnt vmcnt(2)
@@ -10329,27 +11144,34 @@ define amdgpu_kernel void @atomic_xchg_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB71_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB71_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_swap_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB71_3
-; GFX12-NEXT:    s_branch .LBB71_4
+; GFX12-NEXT:    s_branch .LBB71_3
 ; GFX12-NEXT:  .LBB71_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB71_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB71_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB71_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB71_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB71_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
@@ -10377,16 +11199,11 @@ define amdgpu_kernel void @atomic_xchg_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    s_add_u32 s0, s0, s4
 ; GCN1-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB72_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB72_4
-; GCN1-NEXT:  .LBB72_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB72_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB72_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -10394,8 +11211,13 @@ define amdgpu_kernel void @atomic_xchg_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB72_2
-; GCN1-NEXT:  .LBB72_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB72_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB72_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -10406,6 +11228,7 @@ define amdgpu_kernel void @atomic_xchg_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s3
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s0
 ; GCN1-NEXT:    buffer_store_dword v0, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB72_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_xchg_i64_addr64:
@@ -10424,16 +11247,11 @@ define amdgpu_kernel void @atomic_xchg_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    s_add_u32 s0, s0, s4
 ; GCN2-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB72_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB72_4
-; GCN2-NEXT:  .LBB72_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB72_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB72_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -10441,8 +11259,13 @@ define amdgpu_kernel void @atomic_xchg_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB72_2
-; GCN2-NEXT:  .LBB72_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB72_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB72_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s2
@@ -10452,6 +11275,7 @@ define amdgpu_kernel void @atomic_xchg_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s3
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s0
 ; GCN2-NEXT:    buffer_store_dword v0, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB72_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_xchg_i64_addr64:
@@ -10465,28 +11289,30 @@ define amdgpu_kernel void @atomic_xchg_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[4:5]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB72_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB72_4
-; GFX12-NEXT:  .LBB72_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB72_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB72_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_swap_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB72_2
-; GFX12-NEXT:  .LBB72_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB72_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB72_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB72_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -10510,9 +11336,9 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB73_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB73_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -10521,11 +11347,17 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB73_3
-; GCN1-NEXT:    s_branch .LBB73_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB73_3
 ; GCN1-NEXT:  .LBB73_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB73_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB73_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB73_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s12
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -10538,7 +11370,7 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s13
 ; GCN1-NEXT:    buffer_store_dword v2, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB73_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB73_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    s_waitcnt vmcnt(2)
@@ -10560,9 +11392,9 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB73_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB73_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -10571,11 +11403,17 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB73_3
-; GCN2-NEXT:    s_branch .LBB73_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB73_3
 ; GCN2-NEXT:  .LBB73_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB73_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB73_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB73_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -10587,7 +11425,7 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s13
 ; GCN2-NEXT:    buffer_store_dword v2, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB73_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB73_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    s_waitcnt vmcnt(2)
@@ -10603,27 +11441,34 @@ define amdgpu_kernel void @atomic_xchg_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[6:7]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB73_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB73_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_swap_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB73_3
-; GFX12-NEXT:    s_branch .LBB73_4
+; GFX12-NEXT:    s_branch .LBB73_3
 ; GFX12-NEXT:  .LBB73_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB73_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB73_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB73_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB73_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB73_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
@@ -10650,16 +11495,11 @@ define amdgpu_kernel void @atomic_xor_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB74_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB74_4
-; GCN1-NEXT:  .LBB74_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB74_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB74_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -10667,8 +11507,13 @@ define amdgpu_kernel void @atomic_xor_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_xor_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB74_2
-; GCN1-NEXT:  .LBB74_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB74_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB74_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -10683,6 +11528,7 @@ define amdgpu_kernel void @atomic_xor_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_xor_b32_e32 v3, s3, v3
 ; GCN1-NEXT:    buffer_store_dword v2, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB74_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_xor_i64_offset:
@@ -10699,16 +11545,11 @@ define amdgpu_kernel void @atomic_xor_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB74_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB74_4
-; GCN2-NEXT:  .LBB74_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB74_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB74_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -10716,8 +11557,13 @@ define amdgpu_kernel void @atomic_xor_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_xor_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB74_2
-; GCN2-NEXT:  .LBB74_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB74_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB74_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -10731,6 +11577,7 @@ define amdgpu_kernel void @atomic_xor_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_xor_b32_e32 v3, s3, v3
 ; GCN2-NEXT:    buffer_store_dword v2, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB74_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_xor_i64_offset:
@@ -10741,23 +11588,24 @@ define amdgpu_kernel void @atomic_xor_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB74_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB74_4
-; GFX12-NEXT:  .LBB74_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB74_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB74_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_xor_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB74_2
-; GFX12-NEXT:  .LBB74_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB74_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB74_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -10765,6 +11613,7 @@ define amdgpu_kernel void @atomic_xor_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_xor_b32_e32 v1, s3, v1
 ; GFX12-NEXT:    v_xor_b32_e32 v0, s2, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB74_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds i64, ptr %out, i64 4
@@ -10788,9 +11637,9 @@ define amdgpu_kernel void @atomic_xor_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB75_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB75_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -10799,11 +11648,17 @@ define amdgpu_kernel void @atomic_xor_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    flat_atomic_xor_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB75_3
-; GCN1-NEXT:    s_branch .LBB75_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB75_3
 ; GCN1-NEXT:  .LBB75_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB75_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB75_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB75_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -10818,7 +11673,7 @@ define amdgpu_kernel void @atomic_xor_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_xor_b32_e32 v5, s5, v1
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB75_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB75_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -10839,9 +11694,9 @@ define amdgpu_kernel void @atomic_xor_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB75_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB75_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -10850,11 +11705,17 @@ define amdgpu_kernel void @atomic_xor_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    flat_atomic_xor_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB75_3
-; GCN2-NEXT:    s_branch .LBB75_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB75_3
 ; GCN2-NEXT:  .LBB75_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB75_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB75_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB75_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -10868,7 +11729,7 @@ define amdgpu_kernel void @atomic_xor_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_xor_b32_e32 v5, s5, v1
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB75_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB75_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -10884,20 +11745,27 @@ define amdgpu_kernel void @atomic_xor_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB75_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB75_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_xor_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB75_3
-; GFX12-NEXT:    s_branch .LBB75_4
+; GFX12-NEXT:    s_branch .LBB75_3
 ; GFX12-NEXT:  .LBB75_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB75_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB75_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB75_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -10905,7 +11773,7 @@ define amdgpu_kernel void @atomic_xor_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    v_xor_b32_e32 v3, s5, v1
 ; GFX12-NEXT:    v_xor_b32_e32 v2, s4, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB75_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB75_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -10935,16 +11803,11 @@ define amdgpu_kernel void @atomic_xor_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB76_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB76_4
-; GCN1-NEXT:  .LBB76_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB76_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB76_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -10952,8 +11815,13 @@ define amdgpu_kernel void @atomic_xor_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    flat_atomic_xor_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB76_2
-; GCN1-NEXT:  .LBB76_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB76_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB76_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -10968,36 +11836,33 @@ define amdgpu_kernel void @atomic_xor_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    v_xor_b32_e32 v3, s3, v3
 ; GCN1-NEXT:    buffer_store_dword v2, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB76_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_xor_i64_addr64_offset:
 ; GCN2:       ; %bb.0: ; %entry
 ; GCN2-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
 ; GCN2-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
-; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GCN2-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s8, s[4:5], 0xfc
+; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
-; GCN2-NEXT:    s_add_u32 s0, s0, s4
-; GCN2-NEXT:    s_addc_u32 s1, s1, s5
+; GCN2-NEXT:    s_lshl_b64 s[6:7], s[6:7], 3
+; GCN2-NEXT:    s_load_dword s4, s[4:5], 0xfc
+; GCN2-NEXT:    s_add_u32 s0, s0, s6
+; GCN2-NEXT:    s_addc_u32 s1, s1, s7
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
-; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB76_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB76_4
-; GCN2-NEXT:  .LBB76_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB76_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB76_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -11005,8 +11870,13 @@ define amdgpu_kernel void @atomic_xor_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2-NEXT:    flat_atomic_xor_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB76_2
-; GCN2-NEXT:  .LBB76_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB76_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB76_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -11020,6 +11890,7 @@ define amdgpu_kernel void @atomic_xor_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2-NEXT:    v_xor_b32_e32 v3, s3, v3
 ; GCN2-NEXT:    buffer_store_dword v2, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB76_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_xor_i64_addr64_offset:
@@ -11035,23 +11906,24 @@ define amdgpu_kernel void @atomic_xor_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB76_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB76_4
-; GFX12-NEXT:  .LBB76_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB76_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB76_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_xor_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB76_2
-; GFX12-NEXT:  .LBB76_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB76_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB76_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -11059,6 +11931,7 @@ define amdgpu_kernel void @atomic_xor_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    v_xor_b32_e32 v1, s3, v1
 ; GFX12-NEXT:    v_xor_b32_e32 v0, s2, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB76_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -11085,9 +11958,9 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB77_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB77_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -11096,11 +11969,17 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    flat_atomic_xor_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB77_3
-; GCN1-NEXT:    s_branch .LBB77_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB77_3
 ; GCN1-NEXT:  .LBB77_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB77_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB77_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB77_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -11115,7 +11994,7 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    v_xor_b32_e32 v5, s13, v1
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB77_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB77_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -11129,8 +12008,8 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -11138,9 +12017,9 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB77_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB77_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -11149,11 +12028,17 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    flat_atomic_xor_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB77_3
-; GCN2-NEXT:    s_branch .LBB77_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB77_3
 ; GCN2-NEXT:  .LBB77_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB77_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB77_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB77_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -11167,7 +12052,7 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    v_xor_b32_e32 v5, s13, v1
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB77_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB77_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -11184,20 +12069,27 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB77_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB77_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_xor_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB77_3
-; GFX12-NEXT:    s_branch .LBB77_4
+; GFX12-NEXT:    s_branch .LBB77_3
 ; GFX12-NEXT:  .LBB77_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB77_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB77_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB77_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -11205,7 +12097,7 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    v_xor_b32_e32 v3, s5, v1
 ; GFX12-NEXT:    v_xor_b32_e32 v2, s4, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB77_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB77_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -11230,16 +12122,11 @@ define amdgpu_kernel void @atomic_xor_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB78_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB78_4
-; GCN1-NEXT:  .LBB78_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB78_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB78_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -11247,8 +12134,13 @@ define amdgpu_kernel void @atomic_xor_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_xor_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB78_2
-; GCN1-NEXT:  .LBB78_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB78_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB78_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -11263,6 +12155,7 @@ define amdgpu_kernel void @atomic_xor_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_xor_b32_e32 v3, s3, v3
 ; GCN1-NEXT:    buffer_store_dword v2, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB78_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_xor_i64:
@@ -11277,16 +12170,11 @@ define amdgpu_kernel void @atomic_xor_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB78_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB78_4
-; GCN2-NEXT:  .LBB78_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB78_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB78_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -11294,8 +12182,13 @@ define amdgpu_kernel void @atomic_xor_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_xor_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB78_2
-; GCN2-NEXT:  .LBB78_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB78_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB78_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -11309,6 +12202,7 @@ define amdgpu_kernel void @atomic_xor_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_xor_b32_e32 v3, s3, v3
 ; GCN2-NEXT:    buffer_store_dword v2, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB78_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_xor_i64:
@@ -11317,24 +12211,25 @@ define amdgpu_kernel void @atomic_xor_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB78_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB78_4
-; GFX12-NEXT:  .LBB78_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB78_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB78_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_xor_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB78_2
-; GFX12-NEXT:  .LBB78_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB78_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB78_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -11342,6 +12237,7 @@ define amdgpu_kernel void @atomic_xor_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_xor_b32_e32 v1, s3, v1
 ; GFX12-NEXT:    v_xor_b32_e32 v0, s2, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB78_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %tmp0 = atomicrmw volatile xor ptr %out, i64 %in syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0
@@ -11362,9 +12258,9 @@ define amdgpu_kernel void @atomic_xor_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB79_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB79_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -11373,11 +12269,17 @@ define amdgpu_kernel void @atomic_xor_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_xor_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB79_3
-; GCN1-NEXT:    s_branch .LBB79_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB79_3
 ; GCN1-NEXT:  .LBB79_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB79_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB79_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB79_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -11392,7 +12294,7 @@ define amdgpu_kernel void @atomic_xor_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    v_xor_b32_e32 v5, s5, v1
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB79_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB79_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -11411,9 +12313,9 @@ define amdgpu_kernel void @atomic_xor_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB79_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB79_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -11422,11 +12324,17 @@ define amdgpu_kernel void @atomic_xor_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_xor_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB79_3
-; GCN2-NEXT:    s_branch .LBB79_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB79_3
 ; GCN2-NEXT:  .LBB79_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB79_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB79_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB79_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -11440,7 +12348,7 @@ define amdgpu_kernel void @atomic_xor_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    v_xor_b32_e32 v5, s5, v1
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB79_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB79_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -11454,21 +12362,28 @@ define amdgpu_kernel void @atomic_xor_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB79_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB79_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_xor_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB79_3
-; GFX12-NEXT:    s_branch .LBB79_4
+; GFX12-NEXT:    s_branch .LBB79_3
 ; GFX12-NEXT:  .LBB79_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB79_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB79_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB79_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -11476,7 +12391,7 @@ define amdgpu_kernel void @atomic_xor_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    v_xor_b32_e32 v3, s5, v1
 ; GFX12-NEXT:    v_xor_b32_e32 v2, s4, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB79_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB79_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -11503,16 +12418,11 @@ define amdgpu_kernel void @atomic_xor_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    s_add_u32 s0, s0, s4
 ; GCN1-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB80_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB80_4
-; GCN1-NEXT:  .LBB80_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB80_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB80_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -11520,8 +12430,13 @@ define amdgpu_kernel void @atomic_xor_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    flat_atomic_xor_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB80_2
-; GCN1-NEXT:  .LBB80_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB80_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB80_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -11536,6 +12451,7 @@ define amdgpu_kernel void @atomic_xor_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    v_xor_b32_e32 v3, s3, v3
 ; GCN1-NEXT:    buffer_store_dword v2, v0, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v1, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB80_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_xor_i64_addr64:
@@ -11554,16 +12470,11 @@ define amdgpu_kernel void @atomic_xor_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    s_add_u32 s0, s0, s4
 ; GCN2-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB80_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB80_4
-; GCN2-NEXT:  .LBB80_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB80_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB80_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -11571,8 +12482,13 @@ define amdgpu_kernel void @atomic_xor_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    flat_atomic_xor_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB80_2
-; GCN2-NEXT:  .LBB80_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB80_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB80_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
@@ -11586,6 +12502,7 @@ define amdgpu_kernel void @atomic_xor_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    v_xor_b32_e32 v3, s3, v3
 ; GCN2-NEXT:    buffer_store_dword v2, v0, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v1, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB80_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_xor_i64_addr64:
@@ -11599,24 +12516,25 @@ define amdgpu_kernel void @atomic_xor_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[4:5]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB80_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB80_4
-; GFX12-NEXT:  .LBB80_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB80_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB80_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_xor_b64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB80_2
-; GFX12-NEXT:  .LBB80_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB80_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB80_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -11624,6 +12542,7 @@ define amdgpu_kernel void @atomic_xor_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    v_xor_b32_e32 v1, s3, v1
 ; GFX12-NEXT:    v_xor_b32_e32 v0, s2, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB80_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -11647,9 +12566,9 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB81_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB81_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -11658,11 +12577,17 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    flat_atomic_xor_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB81_3
-; GCN1-NEXT:    s_branch .LBB81_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB81_3
 ; GCN1-NEXT:  .LBB81_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB81_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB81_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB81_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -11677,7 +12602,7 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_xor_b32_e32 v5, s13, v1
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB81_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB81_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -11698,9 +12623,9 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB81_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB81_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -11709,11 +12634,17 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    flat_atomic_xor_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB81_3
-; GCN2-NEXT:    s_branch .LBB81_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB81_3
 ; GCN2-NEXT:  .LBB81_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB81_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB81_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB81_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -11727,7 +12658,7 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_xor_b32_e32 v5, s13, v1
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB81_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB81_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -11742,21 +12673,28 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[6:7]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB81_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB81_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_xor_b64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB81_3
-; GFX12-NEXT:    s_branch .LBB81_4
+; GFX12-NEXT:    s_branch .LBB81_3
 ; GFX12-NEXT:  .LBB81_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB81_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB81_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB81_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -11764,7 +12702,7 @@ define amdgpu_kernel void @atomic_xor_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    v_xor_b32_e32 v3, s5, v1
 ; GFX12-NEXT:    v_xor_b32_e32 v2, s4, v0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB81_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB81_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -12203,16 +13141,11 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_offset(ptr %out, i64 %in, i64 %old
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
 ; GCN1-NEXT:    s_mov_b64 s[6:7], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB90_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB90_4
-; GCN1-NEXT:  .LBB90_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB90_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB90_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s3
@@ -12222,8 +13155,13 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_offset(ptr %out, i64 %in, i64 %old
 ; GCN1-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB90_2
-; GCN1-NEXT:  .LBB90_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:  .LBB90_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB90_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -12240,6 +13178,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_offset(ptr %out, i64 %in, i64 %old
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB90_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_cmpxchg_i64_offset:
@@ -12257,16 +13196,11 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_offset(ptr %out, i64 %in, i64 %old
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
 ; GCN2-NEXT:    s_mov_b64 s[6:7], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB90_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB90_4
-; GCN2-NEXT:  .LBB90_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB90_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB90_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v5, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s3
@@ -12276,8 +13210,13 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_offset(ptr %out, i64 %in, i64 %old
 ; GCN2-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB90_2
-; GCN2-NEXT:  .LBB90_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:  .LBB90_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB90_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -12293,6 +13232,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_offset(ptr %out, i64 %in, i64 %old
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB90_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_cmpxchg_i64_offset:
@@ -12305,24 +13245,25 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_offset(ptr %out, i64 %in, i64 %old
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX12-NEXT:    s_mov_b32 s6, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB90_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB90_4
-; GFX12-NEXT:  .LBB90_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB90_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB90_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
 ; GFX12-NEXT:    v_dual_mov_b32 v5, s1 :: v_dual_mov_b32 v4, s0
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[4:5], v[0:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB90_2
-; GFX12-NEXT:  .LBB90_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB90_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB90_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -12331,6 +13272,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_offset(ptr %out, i64 %in, i64 %old
 ; GFX12-NEXT:    v_cndmask_b32_e64 v1, v1, s3, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e64 v0, v0, s2, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB90_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds i64, ptr %out, i64 4
@@ -12354,16 +13296,11 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_soffset(ptr %out, i64 %in, i64 %ol
 ; GCN1-NEXT:    s_add_u32 s0, s0, 0x11940
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
 ; GCN1-NEXT:    s_mov_b64 s[6:7], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB91_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB91_4
-; GCN1-NEXT:  .LBB91_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB91_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB91_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s3
@@ -12373,8 +13310,13 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_soffset(ptr %out, i64 %in, i64 %ol
 ; GCN1-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB91_2
-; GCN1-NEXT:  .LBB91_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:  .LBB91_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB91_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -12391,6 +13333,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_soffset(ptr %out, i64 %in, i64 %ol
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB91_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_cmpxchg_i64_soffset:
@@ -12408,16 +13351,11 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_soffset(ptr %out, i64 %in, i64 %ol
 ; GCN2-NEXT:    s_add_u32 s0, s0, 0x11940
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
 ; GCN2-NEXT:    s_mov_b64 s[6:7], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB91_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB91_4
-; GCN2-NEXT:  .LBB91_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB91_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB91_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v5, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s3
@@ -12427,8 +13365,13 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_soffset(ptr %out, i64 %in, i64 %ol
 ; GCN2-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB91_2
-; GCN2-NEXT:  .LBB91_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:  .LBB91_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB91_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -12444,6 +13387,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_soffset(ptr %out, i64 %in, i64 %ol
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB91_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_cmpxchg_i64_soffset:
@@ -12456,24 +13400,25 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_soffset(ptr %out, i64 %in, i64 %ol
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 0x11940
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX12-NEXT:    s_mov_b32 s6, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB91_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB91_4
-; GFX12-NEXT:  .LBB91_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB91_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB91_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
 ; GFX12-NEXT:    v_dual_mov_b32 v5, s1 :: v_dual_mov_b32 v4, s0
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[4:5], v[0:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB91_2
-; GFX12-NEXT:  .LBB91_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB91_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB91_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -12482,6 +13427,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_soffset(ptr %out, i64 %in, i64 %ol
 ; GFX12-NEXT:    v_cndmask_b32_e64 v1, v1, s3, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e64 v0, v0, s2, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB91_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds i64, ptr %out, i64 9000
@@ -12504,9 +13450,9 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_offset(ptr %out, ptr %out2, i6
 ; GCN1-NEXT:    s_add_u32 s0, s8, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s9, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB92_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB92_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s12
@@ -12517,11 +13463,17 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_offset(ptr %out, ptr %out2, i6
 ; GCN1-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[0:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB92_3
-; GCN1-NEXT:    s_branch .LBB92_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB92_3
 ; GCN1-NEXT:  .LBB92_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB92_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB92_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB92_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s12
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -12538,7 +13490,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_offset(ptr %out, ptr %out2, i6
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB92_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB92_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -12558,9 +13510,9 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_offset(ptr %out, ptr %out2, i6
 ; GCN2-NEXT:    s_add_u32 s0, s8, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s9, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB92_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB92_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v5, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s12
@@ -12571,11 +13523,17 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_offset(ptr %out, ptr %out2, i6
 ; GCN2-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[0:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB92_3
-; GCN2-NEXT:    s_branch .LBB92_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB92_3
 ; GCN2-NEXT:  .LBB92_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB92_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB92_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB92_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -12591,7 +13549,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_offset(ptr %out, ptr %out2, i6
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB92_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB92_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -12605,21 +13563,28 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_offset(ptr %out, ptr %out2, i6
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s8, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX12-NEXT:    s_cbranch_vccz .LBB92_2
+; GFX12-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB92_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7
 ; GFX12-NEXT:    v_dual_mov_b32 v5, s1 :: v_dual_mov_b32 v4, s0
+; GFX12-NEXT:    s_mov_b32 s8, 0
 ; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[4:5], v[0:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB92_3
-; GFX12-NEXT:    s_branch .LBB92_4
+; GFX12-NEXT:    s_branch .LBB92_3
 ; GFX12-NEXT:  .LBB92_2:
+; GFX12-NEXT:    s_mov_b32 s8, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB92_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB92_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB92_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -12628,7 +13593,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_offset(ptr %out, ptr %out2, i6
 ; GFX12-NEXT:    v_cndmask_b32_e64 v3, v1, s5, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e64 v2, v0, s4, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB92_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB92_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -12658,16 +13623,11 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64_offset(ptr %out, i64 %in, i
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN1-NEXT:    s_mov_b64 s[2:3], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB93_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB93_4
-; GCN1-NEXT:  .LBB93_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB93_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB93_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s11
@@ -12677,8 +13637,13 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64_offset(ptr %out, i64 %in, i
 ; GCN1-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB93_2
-; GCN1-NEXT:  .LBB93_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:  .LBB93_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB93_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s10
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -12695,6 +13660,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64_offset(ptr %out, i64 %in, i
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[16:19], 0 offen
+; GCN1-NEXT:  .LBB93_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_cmpxchg_i64_addr64_offset:
@@ -12705,8 +13671,8 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64_offset(ptr %out, i64 %in, i
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[12:13], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -12714,16 +13680,11 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64_offset(ptr %out, i64 %in, i
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN2-NEXT:    s_mov_b64 s[2:3], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB93_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB93_4
-; GCN2-NEXT:  .LBB93_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB93_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB93_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v5, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s11
@@ -12733,8 +13694,13 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64_offset(ptr %out, i64 %in, i
 ; GCN2-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB93_2
-; GCN2-NEXT:  .LBB93_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:  .LBB93_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB93_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -12750,6 +13716,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64_offset(ptr %out, i64 %in, i
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB93_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_cmpxchg_i64_addr64_offset:
@@ -12763,24 +13730,25 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64_offset(ptr %out, i64 %in, i
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB93_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB93_4
-; GFX12-NEXT:  .LBB93_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB93_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB93_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7
 ; GFX12-NEXT:    v_dual_mov_b32 v5, s1 :: v_dual_mov_b32 v4, s0
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[4:5], v[0:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB93_2
-; GFX12-NEXT:  .LBB93_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB93_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB93_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -12789,6 +13757,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64_offset(ptr %out, i64 %in, i
 ; GFX12-NEXT:    v_cndmask_b32_e64 v1, v1, s3, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e64 v0, v0, s2, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB93_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -12816,9 +13785,9 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64_offset(ptr %out, ptr %o
 ; GCN1-NEXT:    s_add_u32 s2, s2, 32
 ; GCN1-NEXT:    s_addc_u32 s3, s3, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s3, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB94_2
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB94_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s3
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s12
@@ -12829,11 +13798,17 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64_offset(ptr %out, ptr %o
 ; GCN1-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[0:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB94_3
-; GCN1-NEXT:    s_branch .LBB94_4
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:    s_branch .LBB94_3
 ; GCN1-NEXT:  .LBB94_2:
+; GCN1-NEXT:    s_mov_b64 s[4:5], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB94_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB94_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB94_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[2:3], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s12
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -12850,7 +13825,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64_offset(ptr %out, ptr %o
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB94_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB94_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -12864,9 +13839,9 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64_offset(ptr %out, ptr %o
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
+; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x44
 ; GCN2-NEXT:    s_load_dword s4, s[4:5], 0x10c
-; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[2:3], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s2, s8, s2
@@ -12874,9 +13849,9 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64_offset(ptr %out, ptr %o
 ; GCN2-NEXT:    s_add_u32 s2, s2, 32
 ; GCN2-NEXT:    s_addc_u32 s3, s3, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s3, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB94_2
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB94_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v5, s3
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s12
@@ -12887,11 +13862,17 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64_offset(ptr %out, ptr %o
 ; GCN2-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[0:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB94_3
-; GCN2-NEXT:    s_branch .LBB94_4
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:    s_branch .LBB94_3
 ; GCN2-NEXT:  .LBB94_2:
+; GCN2-NEXT:    s_mov_b64 s[4:5], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB94_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB94_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB94_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[2:3], 0
 ; GCN2-NEXT:    s_cselect_b32 s2, s2, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
@@ -12907,7 +13888,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64_offset(ptr %out, ptr %o
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB94_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB94_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -12926,21 +13907,28 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64_offset(ptr %out, ptr %o
 ; GFX12-NEXT:    s_add_nc_u64 s[2:3], s[2:3], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s3, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB94_2
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB94_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v3, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v5, s3 :: v_dual_mov_b32 v4, s2
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[4:5], v[0:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB94_3
-; GFX12-NEXT:    s_branch .LBB94_4
+; GFX12-NEXT:    s_branch .LBB94_3
 ; GFX12-NEXT:  .LBB94_2:
+; GFX12-NEXT:    s_mov_b32 s4, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB94_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB94_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB94_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[2:3], 0
 ; GFX12-NEXT:    s_cselect_b32 s2, s2, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s2
@@ -12949,7 +13937,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64_offset(ptr %out, ptr %o
 ; GFX12-NEXT:    v_cndmask_b32_e64 v3, v1, s13, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e64 v2, v0, s12, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s2
-; GFX12-NEXT:  .LBB94_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB94_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s10 :: v_dual_mov_b32 v3, s11
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -12976,16 +13964,11 @@ define amdgpu_kernel void @atomic_cmpxchg_i64(ptr %out, i64 %in, i64 %old) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
 ; GCN1-NEXT:    s_mov_b64 s[6:7], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB95_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB95_4
-; GCN1-NEXT:  .LBB95_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB95_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB95_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s3
@@ -12995,8 +13978,13 @@ define amdgpu_kernel void @atomic_cmpxchg_i64(ptr %out, i64 %in, i64 %old) {
 ; GCN1-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB95_2
-; GCN1-NEXT:  .LBB95_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:  .LBB95_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB95_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -13013,6 +14001,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64(ptr %out, i64 %in, i64 %old) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB95_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_cmpxchg_i64:
@@ -13028,16 +14017,11 @@ define amdgpu_kernel void @atomic_cmpxchg_i64(ptr %out, i64 %in, i64 %old) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
 ; GCN2-NEXT:    s_mov_b64 s[6:7], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB95_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB95_4
-; GCN2-NEXT:  .LBB95_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB95_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB95_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v5, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s3
@@ -13047,8 +14031,13 @@ define amdgpu_kernel void @atomic_cmpxchg_i64(ptr %out, i64 %in, i64 %old) {
 ; GCN2-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB95_2
-; GCN2-NEXT:  .LBB95_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:  .LBB95_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB95_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -13064,6 +14053,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64(ptr %out, i64 %in, i64 %old) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB95_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_cmpxchg_i64:
@@ -13074,25 +14064,26 @@ define amdgpu_kernel void @atomic_cmpxchg_i64(ptr %out, i64 %in, i64 %old) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
 ; GFX12-NEXT:    s_mov_b32 s6, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB95_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB95_4
-; GFX12-NEXT:  .LBB95_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB95_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB95_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
 ; GFX12-NEXT:    v_dual_mov_b32 v5, s1 :: v_dual_mov_b32 v4, s0
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[4:5], v[0:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB95_2
-; GFX12-NEXT:  .LBB95_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB95_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB95_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -13101,6 +14092,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64(ptr %out, i64 %in, i64 %old) {
 ; GFX12-NEXT:    v_cndmask_b32_e64 v1, v1, s3, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e64 v0, v0, s2, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB95_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %val = cmpxchg volatile ptr %out, i64 %old, i64 %in syncscope("agent") seq_cst seq_cst
@@ -13120,9 +14112,9 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret(ptr %out, ptr %out2, i64 %in,
 ; GCN1-NEXT:    s_addc_u32 s17, s17, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s9, s0
-; GCN1-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; GCN1-NEXT:    s_cbranch_vccz .LBB96_2
+; GCN1-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s0, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB96_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s8
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s12
@@ -13133,11 +14125,17 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret(ptr %out, ptr %out2, i64 %in,
 ; GCN1-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[0:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB96_3
-; GCN1-NEXT:    s_branch .LBB96_4
+; GCN1-NEXT:    s_mov_b64 s[0:1], 0
+; GCN1-NEXT:    s_branch .LBB96_3
 ; GCN1-NEXT:  .LBB96_2:
+; GCN1-NEXT:    s_mov_b64 s[0:1], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB96_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB96_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GCN1-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s0, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB96_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[0:1], s[8:9], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s12
 ; GCN1-NEXT:    s_and_b64 s[0:1], s[0:1], exec
@@ -13154,7 +14152,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret(ptr %out, ptr %out2, i64 %in,
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB96_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB96_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -13172,9 +14170,9 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret(ptr %out, ptr %out2, i64 %in,
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s9, s0
-; GCN2-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; GCN2-NEXT:    s_cbranch_vccz .LBB96_2
+; GCN2-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s0, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB96_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v4, s8
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s12
@@ -13185,11 +14183,17 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret(ptr %out, ptr %out2, i64 %in,
 ; GCN2-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[0:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB96_3
-; GCN2-NEXT:    s_branch .LBB96_4
+; GCN2-NEXT:    s_mov_b64 s[0:1], 0
+; GCN2-NEXT:    s_branch .LBB96_3
 ; GCN2-NEXT:  .LBB96_2:
+; GCN2-NEXT:    s_mov_b64 s[0:1], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB96_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB96_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GCN2-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s0, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB96_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[8:9], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s8, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -13205,7 +14209,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret(ptr %out, ptr %out2, i64 %in,
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB96_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB96_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -13217,22 +14221,29 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret(ptr %out, ptr %out2, i64 %in,
 ; GFX12-NEXT:    s_mov_b64 s[8:9], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s8, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s8, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s8
-; GFX12-NEXT:    s_cbranch_vccz .LBB96_2
+; GFX12-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB96_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7
 ; GFX12-NEXT:    v_dual_mov_b32 v5, s1 :: v_dual_mov_b32 v4, s0
+; GFX12-NEXT:    s_mov_b32 s8, 0
 ; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[4:5], v[0:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB96_3
-; GFX12-NEXT:    s_branch .LBB96_4
+; GFX12-NEXT:    s_branch .LBB96_3
 ; GFX12-NEXT:  .LBB96_2:
+; GFX12-NEXT:    s_mov_b32 s8, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB96_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB96_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB96_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -13241,7 +14252,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret(ptr %out, ptr %out2, i64 %in,
 ; GFX12-NEXT:    v_cndmask_b32_e64 v3, v1, s5, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e64 v2, v0, s4, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB96_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB96_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -13268,16 +14279,11 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64(ptr %out, i64 %in, i64 %ind
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN1-NEXT:    s_mov_b64 s[2:3], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB97_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB97_4
-; GCN1-NEXT:  .LBB97_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB97_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB97_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s11
@@ -13287,8 +14293,13 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64(ptr %out, i64 %in, i64 %ind
 ; GCN1-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB97_2
-; GCN1-NEXT:  .LBB97_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:  .LBB97_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB97_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s10
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -13305,6 +14316,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64(ptr %out, i64 %in, i64 %ind
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[16:19], 0 offen
+; GCN1-NEXT:  .LBB97_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_cmpxchg_i64_addr64:
@@ -13322,16 +14334,11 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64(ptr %out, i64 %in, i64 %ind
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN2-NEXT:    s_mov_b64 s[2:3], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB97_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB97_4
-; GCN2-NEXT:  .LBB97_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB97_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB97_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v5, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s11
@@ -13341,8 +14348,13 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64(ptr %out, i64 %in, i64 %ind
 ; GCN2-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB97_2
-; GCN2-NEXT:  .LBB97_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:  .LBB97_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB97_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -13358,6 +14370,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64(ptr %out, i64 %in, i64 %ind
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB97_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_cmpxchg_i64_addr64:
@@ -13369,25 +14382,26 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64(ptr %out, i64 %in, i64 %ind
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[4:5]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB97_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB97_4
-; GFX12-NEXT:  .LBB97_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB97_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB97_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7
 ; GFX12-NEXT:    v_dual_mov_b32 v5, s1 :: v_dual_mov_b32 v4, s0
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[4:5], v[0:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB97_2
-; GFX12-NEXT:  .LBB97_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB97_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB97_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -13396,6 +14410,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_addr64(ptr %out, i64 %in, i64 %ind
 ; GFX12-NEXT:    v_cndmask_b32_e64 v1, v1, s3, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e64 v0, v0, s2, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB97_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -13420,9 +14435,9 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64(ptr %out, ptr %out2, i6
 ; GCN1-NEXT:    s_add_u32 s2, s8, s2
 ; GCN1-NEXT:    s_addc_u32 s3, s9, s3
 ; GCN1-NEXT:    s_cmp_eq_u32 s3, s6
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB98_2
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB98_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s3
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s12
@@ -13433,11 +14448,17 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64(ptr %out, ptr %out2, i6
 ; GCN1-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[0:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB98_3
-; GCN1-NEXT:    s_branch .LBB98_4
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:    s_branch .LBB98_3
 ; GCN1-NEXT:  .LBB98_2:
+; GCN1-NEXT:    s_mov_b64 s[4:5], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB98_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB98_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB98_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[2:3], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s12
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -13454,7 +14475,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64(ptr %out, ptr %out2, i6
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB98_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB98_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -13476,9 +14497,9 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64(ptr %out, ptr %out2, i6
 ; GCN2-NEXT:    s_add_u32 s2, s8, s2
 ; GCN2-NEXT:    s_addc_u32 s3, s9, s3
 ; GCN2-NEXT:    s_cmp_eq_u32 s3, s6
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB98_2
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB98_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v5, s3
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s12
@@ -13489,11 +14510,17 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64(ptr %out, ptr %out2, i6
 ; GCN2-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[0:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB98_3
-; GCN2-NEXT:    s_branch .LBB98_4
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:    s_branch .LBB98_3
 ; GCN2-NEXT:  .LBB98_2:
+; GCN2-NEXT:    s_mov_b64 s[4:5], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB98_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB98_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB98_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[2:3], 0
 ; GCN2-NEXT:    s_cselect_b32 s2, s2, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
@@ -13509,7 +14536,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64(ptr %out, ptr %out2, i6
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB98_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB98_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -13526,22 +14553,29 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64(ptr %out, ptr %out2, i6
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[2:3], s[8:9], s[2:3]
 ; GFX12-NEXT:    s_cmp_eq_u32 s3, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB98_2
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB98_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v1, s13
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s0 :: v_dual_mov_b32 v3, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v5, s3 :: v_dual_mov_b32 v4, s2
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[4:5], v[0:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB98_3
-; GFX12-NEXT:    s_branch .LBB98_4
+; GFX12-NEXT:    s_branch .LBB98_3
 ; GFX12-NEXT:  .LBB98_2:
+; GFX12-NEXT:    s_mov_b32 s4, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB98_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB98_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB98_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[2:3], 0
 ; GFX12-NEXT:    s_cselect_b32 s2, s2, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s2
@@ -13550,7 +14584,7 @@ define amdgpu_kernel void @atomic_cmpxchg_i64_ret_addr64(ptr %out, ptr %out2, i6
 ; GFX12-NEXT:    v_cndmask_b32_e64 v3, v1, s13, vcc_lo
 ; GFX12-NEXT:    v_cndmask_b32_e64 v2, v0, s12, vcc_lo
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s2
-; GFX12-NEXT:  .LBB98_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB98_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s10 :: v_dual_mov_b32 v3, s11
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -13989,16 +15023,11 @@ define amdgpu_kernel void @atomic_inc_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB107_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB107_4
-; GCN1-NEXT:  .LBB107_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB107_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB107_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -14006,8 +15035,13 @@ define amdgpu_kernel void @atomic_inc_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_inc_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB107_2
-; GCN1-NEXT:  .LBB107_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB107_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB107_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -14025,6 +15059,7 @@ define amdgpu_kernel void @atomic_inc_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v0, 0, v5, vcc
 ; GCN1-NEXT:    buffer_store_dword v1, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v0, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB107_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_inc_i64_offset:
@@ -14041,16 +15076,11 @@ define amdgpu_kernel void @atomic_inc_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB107_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB107_4
-; GCN2-NEXT:  .LBB107_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB107_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB107_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -14058,8 +15088,13 @@ define amdgpu_kernel void @atomic_inc_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_inc_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB107_2
-; GCN2-NEXT:  .LBB107_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB107_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB107_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -14076,6 +15111,7 @@ define amdgpu_kernel void @atomic_inc_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v0, 0, v5, vcc
 ; GCN2-NEXT:    buffer_store_dword v1, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v0, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB107_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_inc_i64_offset:
@@ -14086,23 +15122,24 @@ define amdgpu_kernel void @atomic_inc_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB107_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB107_4
-; GFX12-NEXT:  .LBB107_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB107_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB107_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_inc_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB107_2
-; GFX12-NEXT:  .LBB107_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB107_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB107_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -14114,6 +15151,7 @@ define amdgpu_kernel void @atomic_inc_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-NEXT:    v_dual_cndmask_b32 v1, 0, v3 :: v_dual_cndmask_b32 v0, 0, v2
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB107_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds i64, ptr %out, i64 4
@@ -14137,9 +15175,9 @@ define amdgpu_kernel void @atomic_inc_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB108_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB108_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -14148,11 +15186,17 @@ define amdgpu_kernel void @atomic_inc_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    flat_atomic_inc_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB108_3
-; GCN1-NEXT:    s_branch .LBB108_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB108_3
 ; GCN1-NEXT:  .LBB108_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB108_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB108_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB108_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -14170,7 +15214,7 @@ define amdgpu_kernel void @atomic_inc_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_cndmask_b32_e32 v5, 0, v5, vcc
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB108_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB108_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -14191,9 +15235,9 @@ define amdgpu_kernel void @atomic_inc_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB108_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB108_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -14202,11 +15246,17 @@ define amdgpu_kernel void @atomic_inc_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    flat_atomic_inc_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB108_3
-; GCN2-NEXT:    s_branch .LBB108_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB108_3
 ; GCN2-NEXT:  .LBB108_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB108_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB108_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB108_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -14223,7 +15273,7 @@ define amdgpu_kernel void @atomic_inc_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_cndmask_b32_e32 v5, 0, v5, vcc
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB108_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB108_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -14239,20 +15289,27 @@ define amdgpu_kernel void @atomic_inc_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB108_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB108_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_inc_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB108_3
-; GFX12-NEXT:    s_branch .LBB108_4
+; GFX12-NEXT:    s_branch .LBB108_3
 ; GFX12-NEXT:  .LBB108_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB108_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB108_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB108_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -14264,7 +15321,7 @@ define amdgpu_kernel void @atomic_inc_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-NEXT:    v_dual_cndmask_b32 v3, 0, v3 :: v_dual_cndmask_b32 v2, 0, v2
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB108_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB108_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -14294,16 +15351,11 @@ define amdgpu_kernel void @atomic_inc_i64_incr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB109_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB109_4
-; GCN1-NEXT:  .LBB109_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB109_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB109_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -14311,8 +15363,13 @@ define amdgpu_kernel void @atomic_inc_i64_incr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    flat_atomic_inc_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB109_2
-; GCN1-NEXT:  .LBB109_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB109_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB109_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -14330,36 +15387,33 @@ define amdgpu_kernel void @atomic_inc_i64_incr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    v_cndmask_b32_e32 v0, 0, v5, vcc
 ; GCN1-NEXT:    buffer_store_dword v1, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v0, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB109_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_inc_i64_incr64_offset:
 ; GCN2:       ; %bb.0: ; %entry
 ; GCN2-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
 ; GCN2-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
-; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GCN2-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s8, s[4:5], 0xfc
+; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
-; GCN2-NEXT:    s_add_u32 s0, s0, s4
-; GCN2-NEXT:    s_addc_u32 s1, s1, s5
+; GCN2-NEXT:    s_lshl_b64 s[6:7], s[6:7], 3
+; GCN2-NEXT:    s_load_dword s4, s[4:5], 0xfc
+; GCN2-NEXT:    s_add_u32 s0, s0, s6
+; GCN2-NEXT:    s_addc_u32 s1, s1, s7
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
-; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB109_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB109_4
-; GCN2-NEXT:  .LBB109_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB109_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB109_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -14367,8 +15421,13 @@ define amdgpu_kernel void @atomic_inc_i64_incr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2-NEXT:    flat_atomic_inc_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB109_2
-; GCN2-NEXT:  .LBB109_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB109_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB109_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -14385,6 +15444,7 @@ define amdgpu_kernel void @atomic_inc_i64_incr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2-NEXT:    v_cndmask_b32_e32 v0, 0, v5, vcc
 ; GCN2-NEXT:    buffer_store_dword v1, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v0, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB109_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_inc_i64_incr64_offset:
@@ -14400,23 +15460,24 @@ define amdgpu_kernel void @atomic_inc_i64_incr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB109_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB109_4
-; GFX12-NEXT:  .LBB109_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB109_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB109_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_inc_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB109_2
-; GFX12-NEXT:  .LBB109_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB109_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB109_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -14428,6 +15489,7 @@ define amdgpu_kernel void @atomic_inc_i64_incr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-NEXT:    v_dual_cndmask_b32 v1, 0, v3 :: v_dual_cndmask_b32 v0, 0, v2
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB109_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -14454,9 +15516,9 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB110_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB110_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -14465,11 +15527,17 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    flat_atomic_inc_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB110_3
-; GCN1-NEXT:    s_branch .LBB110_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB110_3
 ; GCN1-NEXT:  .LBB110_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB110_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB110_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB110_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -14487,7 +15555,7 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    v_cndmask_b32_e32 v5, 0, v5, vcc
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB110_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB110_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -14501,8 +15569,8 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -14510,9 +15578,9 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB110_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB110_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -14521,11 +15589,17 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    flat_atomic_inc_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB110_3
-; GCN2-NEXT:    s_branch .LBB110_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB110_3
 ; GCN2-NEXT:  .LBB110_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB110_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB110_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB110_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -14542,7 +15616,7 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    v_cndmask_b32_e32 v5, 0, v5, vcc
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB110_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB110_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -14559,20 +15633,27 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB110_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB110_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_inc_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB110_3
-; GFX12-NEXT:    s_branch .LBB110_4
+; GFX12-NEXT:    s_branch .LBB110_3
 ; GFX12-NEXT:  .LBB110_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB110_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB110_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB110_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -14584,7 +15665,7 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-NEXT:    v_dual_cndmask_b32 v3, 0, v3 :: v_dual_cndmask_b32 v2, 0, v2
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB110_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB110_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -14609,16 +15690,11 @@ define amdgpu_kernel void @atomic_inc_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB111_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB111_4
-; GCN1-NEXT:  .LBB111_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB111_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB111_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -14626,8 +15702,13 @@ define amdgpu_kernel void @atomic_inc_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_inc_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB111_2
-; GCN1-NEXT:  .LBB111_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB111_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB111_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -14645,6 +15726,7 @@ define amdgpu_kernel void @atomic_inc_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v0, 0, v5, vcc
 ; GCN1-NEXT:    buffer_store_dword v1, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v0, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB111_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_inc_i64:
@@ -14659,16 +15741,11 @@ define amdgpu_kernel void @atomic_inc_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB111_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB111_4
-; GCN2-NEXT:  .LBB111_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB111_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB111_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -14676,8 +15753,13 @@ define amdgpu_kernel void @atomic_inc_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_inc_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB111_2
-; GCN2-NEXT:  .LBB111_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB111_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB111_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -14694,6 +15776,7 @@ define amdgpu_kernel void @atomic_inc_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v0, 0, v5, vcc
 ; GCN2-NEXT:    buffer_store_dword v1, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v0, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB111_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_inc_i64:
@@ -14702,24 +15785,25 @@ define amdgpu_kernel void @atomic_inc_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB111_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB111_4
-; GFX12-NEXT:  .LBB111_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB111_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB111_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_inc_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB111_2
-; GFX12-NEXT:  .LBB111_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB111_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB111_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -14731,6 +15815,7 @@ define amdgpu_kernel void @atomic_inc_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-NEXT:    v_dual_cndmask_b32 v1, 0, v3 :: v_dual_cndmask_b32 v0, 0, v2
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB111_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %tmp0 = atomicrmw volatile uinc_wrap ptr %out, i64 %in syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0
@@ -14751,9 +15836,9 @@ define amdgpu_kernel void @atomic_inc_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB112_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB112_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -14762,11 +15847,17 @@ define amdgpu_kernel void @atomic_inc_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_inc_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB112_3
-; GCN1-NEXT:    s_branch .LBB112_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB112_3
 ; GCN1-NEXT:  .LBB112_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB112_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB112_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB112_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -14784,7 +15875,7 @@ define amdgpu_kernel void @atomic_inc_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v5, 0, v5, vcc
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB112_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB112_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -14803,9 +15894,9 @@ define amdgpu_kernel void @atomic_inc_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB112_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB112_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -14814,11 +15905,17 @@ define amdgpu_kernel void @atomic_inc_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_inc_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB112_3
-; GCN2-NEXT:    s_branch .LBB112_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB112_3
 ; GCN2-NEXT:  .LBB112_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB112_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB112_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB112_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -14835,7 +15932,7 @@ define amdgpu_kernel void @atomic_inc_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v5, 0, v5, vcc
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB112_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB112_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -14849,21 +15946,28 @@ define amdgpu_kernel void @atomic_inc_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB112_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB112_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_inc_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB112_3
-; GFX12-NEXT:    s_branch .LBB112_4
+; GFX12-NEXT:    s_branch .LBB112_3
 ; GFX12-NEXT:  .LBB112_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB112_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB112_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB112_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -14875,7 +15979,7 @@ define amdgpu_kernel void @atomic_inc_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-NEXT:    v_dual_cndmask_b32 v3, 0, v3 :: v_dual_cndmask_b32 v2, 0, v2
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB112_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB112_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -14902,16 +16006,11 @@ define amdgpu_kernel void @atomic_inc_i64_incr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    s_add_u32 s0, s0, s4
 ; GCN1-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB113_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB113_4
-; GCN1-NEXT:  .LBB113_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB113_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB113_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -14919,8 +16018,13 @@ define amdgpu_kernel void @atomic_inc_i64_incr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    flat_atomic_inc_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB113_2
-; GCN1-NEXT:  .LBB113_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB113_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB113_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -14938,6 +16042,7 @@ define amdgpu_kernel void @atomic_inc_i64_incr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    v_cndmask_b32_e32 v0, 0, v5, vcc
 ; GCN1-NEXT:    buffer_store_dword v1, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v0, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB113_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_inc_i64_incr64:
@@ -14956,16 +16061,11 @@ define amdgpu_kernel void @atomic_inc_i64_incr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    s_add_u32 s0, s0, s4
 ; GCN2-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB113_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB113_4
-; GCN2-NEXT:  .LBB113_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB113_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB113_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -14973,8 +16073,13 @@ define amdgpu_kernel void @atomic_inc_i64_incr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    flat_atomic_inc_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB113_2
-; GCN2-NEXT:  .LBB113_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB113_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB113_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -14991,6 +16096,7 @@ define amdgpu_kernel void @atomic_inc_i64_incr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    v_cndmask_b32_e32 v0, 0, v5, vcc
 ; GCN2-NEXT:    buffer_store_dword v1, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v0, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB113_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_inc_i64_incr64:
@@ -15004,24 +16110,25 @@ define amdgpu_kernel void @atomic_inc_i64_incr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[4:5]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB113_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB113_4
-; GFX12-NEXT:  .LBB113_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB113_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB113_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_inc_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB113_2
-; GFX12-NEXT:  .LBB113_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB113_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB113_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -15033,6 +16140,7 @@ define amdgpu_kernel void @atomic_inc_i64_incr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-NEXT:    v_dual_cndmask_b32 v1, 0, v3 :: v_dual_cndmask_b32 v0, 0, v2
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s0
+; GFX12-NEXT:  .LBB113_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -15056,9 +16164,9 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB114_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB114_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -15067,11 +16175,17 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    flat_atomic_inc_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB114_3
-; GCN1-NEXT:    s_branch .LBB114_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB114_3
 ; GCN1-NEXT:  .LBB114_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB114_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB114_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB114_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
 ; GCN1-NEXT:    s_cselect_b32 s0, s0, -1
@@ -15089,7 +16203,7 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_cndmask_b32_e32 v5, 0, v5, vcc
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v5, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB114_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB114_5: ; %atomicrmw.end
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -15110,9 +16224,9 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB114_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB114_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -15121,11 +16235,17 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    flat_atomic_inc_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB114_3
-; GCN2-NEXT:    s_branch .LBB114_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB114_3
 ; GCN2-NEXT:  .LBB114_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB114_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB114_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB114_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -15142,7 +16262,7 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_cndmask_b32_e32 v5, 0, v5, vcc
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v5, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB114_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB114_5: ; %atomicrmw.end
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -15157,21 +16277,28 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[6:7]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB114_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB114_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_inc_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB114_3
-; GFX12-NEXT:    s_branch .LBB114_4
+; GFX12-NEXT:    s_branch .LBB114_3
 ; GFX12-NEXT:  .LBB114_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB114_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB114_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB114_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s0, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s0
@@ -15183,7 +16310,7 @@ define amdgpu_kernel void @atomic_inc_i64_ret_incr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-NEXT:    v_dual_cndmask_b32 v3, 0, v3 :: v_dual_cndmask_b32 v2, 0, v2
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s0
-; GFX12-NEXT:  .LBB114_4: ; %atomicrmw.end
+; GFX12-NEXT:  .LBB114_5: ; %atomicrmw.end
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -15209,16 +16336,11 @@ define amdgpu_kernel void @atomic_dec_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB115_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB115_4
-; GCN1-NEXT:  .LBB115_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB115_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB115_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -15226,8 +16348,13 @@ define amdgpu_kernel void @atomic_dec_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_dec_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB115_2
-; GCN1-NEXT:  .LBB115_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB115_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB115_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -15247,6 +16374,7 @@ define amdgpu_kernel void @atomic_dec_i64_offset(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB115_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_dec_i64_offset:
@@ -15263,16 +16391,11 @@ define amdgpu_kernel void @atomic_dec_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB115_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB115_4
-; GCN2-NEXT:  .LBB115_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB115_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB115_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -15280,8 +16403,13 @@ define amdgpu_kernel void @atomic_dec_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_dec_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB115_2
-; GCN2-NEXT:  .LBB115_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB115_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB115_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -15300,6 +16428,7 @@ define amdgpu_kernel void @atomic_dec_i64_offset(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB115_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_dec_i64_offset:
@@ -15310,23 +16439,24 @@ define amdgpu_kernel void @atomic_dec_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB115_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB115_4
-; GFX12-NEXT:  .LBB115_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB115_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB115_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_dec_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB115_2
-; GFX12-NEXT:  .LBB115_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB115_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB115_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s1, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s1
@@ -15340,6 +16470,7 @@ define amdgpu_kernel void @atomic_dec_i64_offset(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_cndmask_b32_e64 v1, v1, s3, s0
 ; GFX12-NEXT:    v_cndmask_b32_e64 v0, v0, s2, s0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s1
+; GFX12-NEXT:  .LBB115_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %gep = getelementptr inbounds i64, ptr %out, i64 4
@@ -15363,9 +16494,9 @@ define amdgpu_kernel void @atomic_dec_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB116_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB116_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -15374,11 +16505,17 @@ define amdgpu_kernel void @atomic_dec_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    flat_atomic_dec_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB116_3
-; GCN1-NEXT:    s_branch .LBB116_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB116_3
 ; GCN1-NEXT:  .LBB116_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB116_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB116_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB116_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s4
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -15399,7 +16536,7 @@ define amdgpu_kernel void @atomic_dec_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v7, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB116_4: ; %atomicrmw.phi
+; GCN1-NEXT:  .LBB116_5: ; %atomicrmw.phi
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -15420,9 +16557,9 @@ define amdgpu_kernel void @atomic_dec_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB116_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB116_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -15431,11 +16568,17 @@ define amdgpu_kernel void @atomic_dec_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    flat_atomic_dec_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB116_3
-; GCN2-NEXT:    s_branch .LBB116_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB116_3
 ; GCN2-NEXT:  .LBB116_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB116_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB116_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB116_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -15455,7 +16598,7 @@ define amdgpu_kernel void @atomic_dec_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v7, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB116_4: ; %atomicrmw.phi
+; GCN2-NEXT:  .LBB116_5: ; %atomicrmw.phi
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -15471,20 +16614,27 @@ define amdgpu_kernel void @atomic_dec_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB116_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB116_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_dec_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB116_3
-; GFX12-NEXT:    s_branch .LBB116_4
+; GFX12-NEXT:    s_branch .LBB116_3
 ; GFX12-NEXT:  .LBB116_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB116_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB116_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB116_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s1, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s1
@@ -15498,7 +16648,7 @@ define amdgpu_kernel void @atomic_dec_i64_ret_offset(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    v_cndmask_b32_e64 v3, v3, s5, s0
 ; GFX12-NEXT:    v_cndmask_b32_e64 v2, v2, s4, s0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s1
-; GFX12-NEXT:  .LBB116_4: ; %atomicrmw.phi
+; GFX12-NEXT:  .LBB116_5: ; %atomicrmw.phi
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -15528,16 +16678,11 @@ define amdgpu_kernel void @atomic_dec_i64_decr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB117_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB117_4
-; GCN1-NEXT:  .LBB117_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB117_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB117_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -15545,8 +16690,13 @@ define amdgpu_kernel void @atomic_dec_i64_decr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    flat_atomic_dec_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB117_2
-; GCN1-NEXT:  .LBB117_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB117_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB117_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -15566,36 +16716,33 @@ define amdgpu_kernel void @atomic_dec_i64_decr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB117_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_dec_i64_decr64_offset:
 ; GCN2:       ; %bb.0: ; %entry
 ; GCN2-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
 ; GCN2-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
-; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GCN2-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s8, s[4:5], 0xfc
+; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
-; GCN2-NEXT:    s_add_u32 s0, s0, s4
-; GCN2-NEXT:    s_addc_u32 s1, s1, s5
+; GCN2-NEXT:    s_lshl_b64 s[6:7], s[6:7], 3
+; GCN2-NEXT:    s_load_dword s4, s[4:5], 0xfc
+; GCN2-NEXT:    s_add_u32 s0, s0, s6
+; GCN2-NEXT:    s_addc_u32 s1, s1, s7
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
-; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB117_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB117_4
-; GCN2-NEXT:  .LBB117_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB117_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB117_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -15603,8 +16750,13 @@ define amdgpu_kernel void @atomic_dec_i64_decr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2-NEXT:    flat_atomic_dec_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB117_2
-; GCN2-NEXT:  .LBB117_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB117_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB117_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -15623,6 +16775,7 @@ define amdgpu_kernel void @atomic_dec_i64_decr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB117_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_dec_i64_decr64_offset:
@@ -15638,23 +16791,24 @@ define amdgpu_kernel void @atomic_dec_i64_decr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB117_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB117_4
-; GFX12-NEXT:  .LBB117_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB117_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB117_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_dec_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB117_2
-; GFX12-NEXT:  .LBB117_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB117_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB117_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s1, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s1
@@ -15668,6 +16822,7 @@ define amdgpu_kernel void @atomic_dec_i64_decr64_offset(ptr %out, i64 %in, i64 %
 ; GFX12-NEXT:    v_cndmask_b32_e64 v1, v1, s3, s0
 ; GFX12-NEXT:    v_cndmask_b32_e64 v0, v0, s2, s0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s1
+; GFX12-NEXT:  .LBB117_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -15694,9 +16849,9 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB118_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB118_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -15705,11 +16860,17 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    flat_atomic_dec_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB118_3
-; GCN1-NEXT:    s_branch .LBB118_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB118_3
 ; GCN1-NEXT:  .LBB118_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB118_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB118_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB118_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s12
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -15730,7 +16891,7 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v7, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB118_4: ; %atomicrmw.phi
+; GCN1-NEXT:  .LBB118_5: ; %atomicrmw.phi
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -15744,8 +16905,8 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -15753,9 +16914,9 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB118_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB118_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -15764,11 +16925,17 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    flat_atomic_dec_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB118_3
-; GCN2-NEXT:    s_branch .LBB118_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB118_3
 ; GCN2-NEXT:  .LBB118_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB118_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB118_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB118_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -15788,7 +16955,7 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v7, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB118_4: ; %atomicrmw.phi
+; GCN2-NEXT:  .LBB118_5: ; %atomicrmw.phi
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -15805,20 +16972,27 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], 32
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB118_2
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB118_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_dec_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB118_3
-; GFX12-NEXT:    s_branch .LBB118_4
+; GFX12-NEXT:    s_branch .LBB118_3
 ; GFX12-NEXT:  .LBB118_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB118_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB118_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB118_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s1, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s1
@@ -15832,7 +17006,7 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64_offset(ptr %out, ptr %out2,
 ; GFX12-NEXT:    v_cndmask_b32_e64 v3, v3, s5, s0
 ; GFX12-NEXT:    v_cndmask_b32_e64 v2, v2, s4, s0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s1
-; GFX12-NEXT:  .LBB118_4: ; %atomicrmw.phi
+; GFX12-NEXT:  .LBB118_5: ; %atomicrmw.phi
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -15857,16 +17031,11 @@ define amdgpu_kernel void @atomic_dec_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB119_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB119_4
-; GCN1-NEXT:  .LBB119_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB119_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB119_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -15874,8 +17043,13 @@ define amdgpu_kernel void @atomic_dec_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_dec_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB119_2
-; GCN1-NEXT:  .LBB119_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB119_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB119_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -15895,6 +17069,7 @@ define amdgpu_kernel void @atomic_dec_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB119_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_dec_i64:
@@ -15909,16 +17084,11 @@ define amdgpu_kernel void @atomic_dec_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB119_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB119_4
-; GCN2-NEXT:  .LBB119_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB119_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB119_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -15926,8 +17096,13 @@ define amdgpu_kernel void @atomic_dec_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_dec_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB119_2
-; GCN2-NEXT:  .LBB119_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB119_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB119_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -15946,6 +17121,7 @@ define amdgpu_kernel void @atomic_dec_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB119_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_dec_i64:
@@ -15954,24 +17130,25 @@ define amdgpu_kernel void @atomic_dec_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB119_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB119_4
-; GFX12-NEXT:  .LBB119_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB119_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB119_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_dec_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB119_2
-; GFX12-NEXT:  .LBB119_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB119_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB119_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s1, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s1
@@ -15985,6 +17162,7 @@ define amdgpu_kernel void @atomic_dec_i64(ptr %out, i64 %in) {
 ; GFX12-NEXT:    v_cndmask_b32_e64 v1, v1, s3, s0
 ; GFX12-NEXT:    v_cndmask_b32_e64 v0, v0, s2, s0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s1
+; GFX12-NEXT:  .LBB119_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %tmp0 = atomicrmw volatile udec_wrap ptr %out, i64 %in syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0
@@ -16005,9 +17183,9 @@ define amdgpu_kernel void @atomic_dec_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN1-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN1-NEXT:    s_cbranch_vccz .LBB120_2
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB120_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s4
@@ -16016,11 +17194,17 @@ define amdgpu_kernel void @atomic_dec_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    flat_atomic_dec_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB120_3
-; GCN1-NEXT:    s_branch .LBB120_4
+; GCN1-NEXT:    s_mov_b64 s[6:7], 0
+; GCN1-NEXT:    s_branch .LBB120_3
 ; GCN1-NEXT:  .LBB120_2:
+; GCN1-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB120_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB120_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN1-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB120_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[6:7], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s4
 ; GCN1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
@@ -16041,7 +17225,7 @@ define amdgpu_kernel void @atomic_dec_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v7, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[12:15], 0 offen
-; GCN1-NEXT:  .LBB120_4: ; %atomicrmw.phi
+; GCN1-NEXT:  .LBB120_5: ; %atomicrmw.phi
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -16060,9 +17244,9 @@ define amdgpu_kernel void @atomic_dec_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s6
-; GCN2-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN2-NEXT:    s_cbranch_vccz .LBB120_2
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB120_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s4
@@ -16071,11 +17255,17 @@ define amdgpu_kernel void @atomic_dec_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    flat_atomic_dec_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB120_3
-; GCN2-NEXT:    s_branch .LBB120_4
+; GCN2-NEXT:    s_mov_b64 s[6:7], 0
+; GCN2-NEXT:    s_branch .LBB120_3
 ; GCN2-NEXT:  .LBB120_2:
+; GCN2-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB120_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB120_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN2-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB120_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -16095,7 +17285,7 @@ define amdgpu_kernel void @atomic_dec_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v7, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB120_4: ; %atomicrmw.phi
+; GCN2-NEXT:  .LBB120_5: ; %atomicrmw.phi
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s3
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -16109,21 +17299,28 @@ define amdgpu_kernel void @atomic_dec_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB120_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB120_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_dec_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB120_3
-; GFX12-NEXT:    s_branch .LBB120_4
+; GFX12-NEXT:    s_branch .LBB120_3
 ; GFX12-NEXT:  .LBB120_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB120_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB120_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB120_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s1, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s1
@@ -16137,7 +17334,7 @@ define amdgpu_kernel void @atomic_dec_i64_ret(ptr %out, ptr %out2, i64 %in) {
 ; GFX12-NEXT:    v_cndmask_b32_e64 v3, v3, s5, s0
 ; GFX12-NEXT:    v_cndmask_b32_e64 v2, v2, s4, s0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s1
-; GFX12-NEXT:  .LBB120_4: ; %atomicrmw.phi
+; GFX12-NEXT:  .LBB120_5: ; %atomicrmw.phi
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm
@@ -16164,16 +17361,11 @@ define amdgpu_kernel void @atomic_dec_i64_decr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    s_add_u32 s0, s0, s4
 ; GCN1-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB121_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN1-NEXT:    s_cbranch_vccz .LBB121_4
-; GCN1-NEXT:  .LBB121_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_endpgm
-; GCN1-NEXT:  .LBB121_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB121_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s1
@@ -16181,8 +17373,13 @@ define amdgpu_kernel void @atomic_dec_i64_decr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    flat_atomic_dec_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB121_2
-; GCN1-NEXT:  .LBB121_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[4:5], 0
+; GCN1-NEXT:  .LBB121_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB121_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[4:5], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s2
 ; GCN1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
@@ -16202,6 +17399,7 @@ define amdgpu_kernel void @atomic_dec_i64_decr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v1, v3, s[12:15], 0 offen
+; GCN1-NEXT:  .LBB121_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_endpgm
 ;
 ; GCN2-LABEL: atomic_dec_i64_decr64:
@@ -16220,16 +17418,11 @@ define amdgpu_kernel void @atomic_dec_i64_decr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    s_add_u32 s0, s0, s4
 ; GCN2-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB121_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GCN2-NEXT:    s_cbranch_vccz .LBB121_4
-; GCN2-NEXT:  .LBB121_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_endpgm
-; GCN2-NEXT:  .LBB121_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB121_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s2
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s1
@@ -16237,8 +17430,13 @@ define amdgpu_kernel void @atomic_dec_i64_decr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    flat_atomic_dec_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB121_2
-; GCN2-NEXT:  .LBB121_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[4:5], 0
+; GCN2-NEXT:  .LBB121_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB121_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -16257,6 +17455,7 @@ define amdgpu_kernel void @atomic_dec_i64_decr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v0, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v1, v3, s[88:91], 0 offen
+; GCN2-NEXT:  .LBB121_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_endpgm
 ;
 ; GFX12-LABEL: atomic_dec_i64_decr64:
@@ -16270,24 +17469,25 @@ define amdgpu_kernel void @atomic_dec_i64_decr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[4:5]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s7
-; GFX12-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
 ; GFX12-NEXT:    s_mov_b32 s4, -1
-; GFX12-NEXT:    s_cbranch_vccnz .LBB121_3
-; GFX12-NEXT:  ; %bb.1: ; %Flow
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s4
-; GFX12-NEXT:    s_cbranch_vccz .LBB121_4
-; GFX12-NEXT:  .LBB121_2: ; %atomicrmw.phi
-; GFX12-NEXT:    s_endpgm
-; GFX12-NEXT:  .LBB121_3: ; %atomicrmw.global
+; GFX12-NEXT:    s_cbranch_scc0 .LBB121_2
+; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-NEXT:    s_mov_b32 s4, 0
 ; GFX12-NEXT:    flat_atomic_dec_u64 v[0:1], v[2:3] scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execnz .LBB121_2
-; GFX12-NEXT:  .LBB121_4: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB121_2: ; %Flow
+; GFX12-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB121_4
+; GFX12-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s1, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s1
@@ -16301,6 +17501,7 @@ define amdgpu_kernel void @atomic_dec_i64_decr64(ptr %out, i64 %in, i64 %index)
 ; GFX12-NEXT:    v_cndmask_b32_e64 v1, v1, s3, s0
 ; GFX12-NEXT:    v_cndmask_b32_e64 v0, v0, s2, s0
 ; GFX12-NEXT:    scratch_store_b64 off, v[0:1], s1
+; GFX12-NEXT:  .LBB121_4: ; %atomicrmw.phi
 ; GFX12-NEXT:    s_endpgm
 entry:
   %ptr = getelementptr inbounds i64, ptr %out, i64 %index
@@ -16324,9 +17525,9 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB122_2
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB122_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s12
@@ -16335,11 +17536,17 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    flat_atomic_dec_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB122_3
-; GCN1-NEXT:    s_branch .LBB122_4
+; GCN1-NEXT:    s_mov_b64 s[2:3], 0
+; GCN1-NEXT:    s_branch .LBB122_3
 ; GCN1-NEXT:  .LBB122_2:
+; GCN1-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB122_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB122_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB122_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[0:1], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v5, s12
 ; GCN1-NEXT:    s_and_b64 s[2:3], s[2:3], exec
@@ -16360,7 +17567,7 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    v_cndmask_b32_e32 v4, v7, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[16:19], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[16:19], 0 offen
-; GCN1-NEXT:  .LBB122_4: ; %atomicrmw.phi
+; GCN1-NEXT:  .LBB122_5: ; %atomicrmw.phi
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN1-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -16381,9 +17588,9 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB122_2
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB122_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s0
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s12
@@ -16392,11 +17599,17 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    flat_atomic_dec_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB122_3
-; GCN2-NEXT:    s_branch .LBB122_4
+; GCN2-NEXT:    s_mov_b64 s[2:3], 0
+; GCN2-NEXT:    s_branch .LBB122_3
 ; GCN2-NEXT:  .LBB122_2:
+; GCN2-NEXT:    s_mov_b64 s[2:3], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB122_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB122_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB122_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GCN2-NEXT:    s_cselect_b32 s0, s0, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -16416,7 +17629,7 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    v_cndmask_b32_e32 v4, v7, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[88:91], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[88:91], 0 offen
-; GCN2-NEXT:  .LBB122_4: ; %atomicrmw.phi
+; GCN2-NEXT:  .LBB122_5: ; %atomicrmw.phi
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s11
 ; GCN2-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -16431,21 +17644,28 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[6:7]
 ; GFX12-NEXT:    s_cmp_eq_u32 s1, s9
-; GFX12-NEXT:    s_cselect_b32 s6, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccz .LBB122_2
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc0 .LBB122_2
 ; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5
+; GFX12-NEXT:    s_mov_b32 s6, 0
 ; GFX12-NEXT:    flat_atomic_dec_u64 v[0:1], v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV
 ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX12-NEXT:    global_inv scope:SCOPE_DEV
-; GFX12-NEXT:    s_cbranch_execz .LBB122_3
-; GFX12-NEXT:    s_branch .LBB122_4
+; GFX12-NEXT:    s_branch .LBB122_3
 ; GFX12-NEXT:  .LBB122_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GFX12-NEXT:  .LBB122_3: ; %atomicrmw.private
+; GFX12-NEXT:  .LBB122_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB122_5
+; GFX12-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GFX12-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; GFX12-NEXT:    s_cselect_b32 s1, s0, -1
 ; GFX12-NEXT:    scratch_load_b64 v[0:1], off, s1
@@ -16459,7 +17679,7 @@ define amdgpu_kernel void @atomic_dec_i64_ret_decr64(ptr %out, ptr %out2, i64 %i
 ; GFX12-NEXT:    v_cndmask_b32_e64 v3, v3, s5, s0
 ; GFX12-NEXT:    v_cndmask_b32_e64 v2, v2, s4, s0
 ; GFX12-NEXT:    scratch_store_b64 off, v[2:3], s1
-; GFX12-NEXT:  .LBB122_4: ; %atomicrmw.phi
+; GFX12-NEXT:  .LBB122_5: ; %atomicrmw.phi
 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]
 ; GFX12-NEXT:    s_endpgm

diff  --git a/llvm/test/CodeGen/AMDGPU/flat_atomics_i64_system.ll b/llvm/test/CodeGen/AMDGPU/flat_atomics_i64_system.ll
index cec9b0d289046..1630609012d6a 100644
--- a/llvm/test/CodeGen/AMDGPU/flat_atomics_i64_system.ll
+++ b/llvm/test/CodeGen/AMDGPU/flat_atomics_i64_system.ll
@@ -467,16 +467,11 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN1-NEXT:    s_mov_b64 s[34:35], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB4_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB4_4
-; GCN1-NEXT:  .LBB4_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_setpc_b64 s[30:31]
-; GCN1-NEXT:  .LBB4_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB4_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s5
@@ -484,8 +479,13 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB4_2
-; GCN1-NEXT:  .LBB4_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[34:35], 0
+; GCN1-NEXT:  .LBB4_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB4_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[34:35], s[4:5], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s6
 ; GCN1-NEXT:    s_and_b64 s[34:35], s[34:35], exec
@@ -496,6 +496,7 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s7
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s34
 ; GCN1-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen
+; GCN1-NEXT:  .LBB4_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
 ; GCN1-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -506,16 +507,11 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN2-NEXT:    s_mov_b64 s[34:35], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB4_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB4_4
-; GCN2-NEXT:  .LBB4_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_setpc_b64 s[30:31]
-; GCN2-NEXT:  .LBB4_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB4_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s5
@@ -523,8 +519,13 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB4_2
-; GCN2-NEXT:  .LBB4_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[34:35], 0
+; GCN2-NEXT:  .LBB4_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB4_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GCN2-NEXT:    s_cselect_b32 s34, s4, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s6
@@ -534,6 +535,7 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s7
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s34
 ; GCN2-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen
+; GCN2-NEXT:  .LBB4_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
 ; GCN2-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -542,16 +544,11 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN3-NEXT:    s_mov_b64 s[34:35], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB4_3
-; GCN3-NEXT:  ; %bb.1: ; %Flow
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB4_4
-; GCN3-NEXT:  .LBB4_2: ; %atomicrmw.phi
-; GCN3-NEXT:    s_setpc_b64 s[30:31]
-; GCN3-NEXT:  .LBB4_3: ; %atomicrmw.global
+; GCN3-NEXT:    s_cbranch_scc0 .LBB4_2
+; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN3-NEXT:    v_mov_b32_e32 v1, s5
@@ -559,8 +556,13 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN3-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    buffer_wbinvl1_vol
-; GCN3-NEXT:    s_cbranch_execnz .LBB4_2
-; GCN3-NEXT:  .LBB4_4: ; %atomicrmw.private
+; GCN3-NEXT:    s_mov_b64 s[34:35], 0
+; GCN3-NEXT:  .LBB4_2: ; %Flow
+; GCN3-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc1 .LBB4_4
+; GCN3-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN3-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GCN3-NEXT:    s_cselect_b32 s34, s4, -1
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s7
@@ -568,6 +570,7 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN3-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen offset:4
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s6
 ; GCN3-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen
+; GCN3-NEXT:  .LBB4_4: ; %atomicrmw.phi
 ; GCN3-NEXT:    s_waitcnt vmcnt(0)
 ; GCN3-NEXT:    s_setpc_b64 s[30:31]
   %tmp0 = atomicrmw xchg ptr %ptr, i64 %in seq_cst
@@ -584,16 +587,11 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN1-NEXT:    s_mov_b64 s[36:37], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB5_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB5_4
-; GCN1-NEXT:  .LBB5_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_setpc_b64 s[30:31]
-; GCN1-NEXT:  .LBB5_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB5_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s35
@@ -601,8 +599,13 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB5_2
-; GCN1-NEXT:  .LBB5_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[36:37], 0
+; GCN1-NEXT:  .LBB5_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB5_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[36:37], s[34:35], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s6
 ; GCN1-NEXT:    s_and_b64 s[36:37], s[36:37], exec
@@ -613,6 +616,7 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s7
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s34
 ; GCN1-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen
+; GCN1-NEXT:  .LBB5_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
 ; GCN1-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -625,16 +629,11 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN2-NEXT:    s_mov_b64 s[36:37], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB5_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB5_4
-; GCN2-NEXT:  .LBB5_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_setpc_b64 s[30:31]
-; GCN2-NEXT:  .LBB5_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB5_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s35
@@ -642,8 +641,13 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB5_2
-; GCN2-NEXT:  .LBB5_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[36:37], 0
+; GCN2-NEXT:  .LBB5_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB5_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[34:35], 0
 ; GCN2-NEXT:    s_cselect_b32 s34, s34, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s6
@@ -653,6 +657,7 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s7
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s34
 ; GCN2-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen
+; GCN2-NEXT:  .LBB5_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
 ; GCN2-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -663,16 +668,11 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN3-NEXT:    s_mov_b64 s[36:37], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB5_3
-; GCN3-NEXT:  ; %bb.1: ; %Flow
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB5_4
-; GCN3-NEXT:  .LBB5_2: ; %atomicrmw.phi
-; GCN3-NEXT:    s_setpc_b64 s[30:31]
-; GCN3-NEXT:  .LBB5_3: ; %atomicrmw.global
+; GCN3-NEXT:    s_cbranch_scc0 .LBB5_2
+; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN3-NEXT:    v_mov_b32_e32 v1, s35
@@ -680,8 +680,13 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    buffer_wbinvl1_vol
-; GCN3-NEXT:    s_cbranch_execnz .LBB5_2
-; GCN3-NEXT:  .LBB5_4: ; %atomicrmw.private
+; GCN3-NEXT:    s_mov_b64 s[36:37], 0
+; GCN3-NEXT:  .LBB5_2: ; %Flow
+; GCN3-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc1 .LBB5_4
+; GCN3-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN3-NEXT:    s_cmp_lg_u64 s[34:35], 0
 ; GCN3-NEXT:    s_cselect_b32 s34, s34, -1
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s7
@@ -689,6 +694,7 @@ define amdgpu_gfx void @flat_atomic_xchg_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen offset:4
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s6
 ; GCN3-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen
+; GCN3-NEXT:  .LBB5_4: ; %atomicrmw.phi
 ; GCN3-NEXT:    s_waitcnt vmcnt(0)
 ; GCN3-NEXT:    s_setpc_b64 s[30:31]
   %gep = getelementptr i64, ptr %out, i64 4
@@ -704,9 +710,9 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB6_2
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB6_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s6
@@ -715,11 +721,17 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB6_3
-; GCN1-NEXT:    s_branch .LBB6_4
+; GCN1-NEXT:    s_mov_b64 s[34:35], 0
+; GCN1-NEXT:    s_branch .LBB6_3
 ; GCN1-NEXT:  .LBB6_2:
+; GCN1-NEXT:    s_mov_b64 s[34:35], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB6_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB6_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB6_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[34:35], s[4:5], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s6
 ; GCN1-NEXT:    s_and_b64 s[34:35], s[34:35], exec
@@ -732,7 +744,7 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[0:3], 0 offen
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s7
 ; GCN1-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; GCN1-NEXT:  .LBB6_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB6_5: ; %atomicrmw.end
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
 ; GCN1-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -743,9 +755,9 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB6_2
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB6_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s6
@@ -754,11 +766,17 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB6_3
-; GCN2-NEXT:    s_branch .LBB6_4
+; GCN2-NEXT:    s_mov_b64 s[34:35], 0
+; GCN2-NEXT:    s_branch .LBB6_3
 ; GCN2-NEXT:  .LBB6_2:
+; GCN2-NEXT:    s_mov_b64 s[34:35], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB6_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB6_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB6_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GCN2-NEXT:    s_cselect_b32 s34, s4, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s34
@@ -770,7 +788,7 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[0:3], 0 offen
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s7
 ; GCN2-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; GCN2-NEXT:  .LBB6_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB6_5: ; %atomicrmw.end
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
 ; GCN2-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -779,9 +797,9 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB6_2
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB6_2
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s6
@@ -790,11 +808,17 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN3-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    buffer_wbinvl1_vol
-; GCN3-NEXT:    s_cbranch_execz .LBB6_3
-; GCN3-NEXT:    s_branch .LBB6_4
+; GCN3-NEXT:    s_mov_b64 s[34:35], 0
+; GCN3-NEXT:    s_branch .LBB6_3
 ; GCN3-NEXT:  .LBB6_2:
+; GCN3-NEXT:    s_mov_b64 s[34:35], -1
 ; GCN3-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN3-NEXT:  .LBB6_3: ; %atomicrmw.private
+; GCN3-NEXT:  .LBB6_3: ; %Flow
+; GCN3-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc1 .LBB6_5
+; GCN3-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN3-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GCN3-NEXT:    s_cselect_b32 s34, s4, -1
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
@@ -804,7 +828,7 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN3-NEXT:    buffer_store_dword v3, v2, s[0:3], 0 offen
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s7
 ; GCN3-NEXT:    buffer_store_dword v3, v2, s[0:3], 0 offen offset:4
-; GCN3-NEXT:  .LBB6_4: ; %atomicrmw.end
+; GCN3-NEXT:  .LBB6_5: ; %atomicrmw.end
 ; GCN3-NEXT:    s_waitcnt vmcnt(0)
 ; GCN3-NEXT:    s_setpc_b64 s[30:31]
   %result = atomicrmw xchg ptr %ptr, i64 %in seq_cst
@@ -821,9 +845,9 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB7_2
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s6
@@ -832,11 +856,17 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB7_3
-; GCN1-NEXT:    s_branch .LBB7_4
+; GCN1-NEXT:    s_mov_b64 s[36:37], 0
+; GCN1-NEXT:    s_branch .LBB7_3
 ; GCN1-NEXT:  .LBB7_2:
+; GCN1-NEXT:    s_mov_b64 s[36:37], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB7_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB7_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB7_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[36:37], s[34:35], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s6
 ; GCN1-NEXT:    s_and_b64 s[36:37], s[36:37], exec
@@ -849,7 +879,7 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[0:3], 0 offen
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s7
 ; GCN1-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; GCN1-NEXT:  .LBB7_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB7_5: ; %atomicrmw.end
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
 ; GCN1-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -862,9 +892,9 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB7_2
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s6
@@ -873,11 +903,17 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB7_3
-; GCN2-NEXT:    s_branch .LBB7_4
+; GCN2-NEXT:    s_mov_b64 s[36:37], 0
+; GCN2-NEXT:    s_branch .LBB7_3
 ; GCN2-NEXT:  .LBB7_2:
+; GCN2-NEXT:    s_mov_b64 s[36:37], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB7_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB7_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB7_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[34:35], 0
 ; GCN2-NEXT:    s_cselect_b32 s34, s34, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s34
@@ -889,7 +925,7 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[0:3], 0 offen
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s7
 ; GCN2-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; GCN2-NEXT:  .LBB7_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB7_5: ; %atomicrmw.end
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
 ; GCN2-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -900,9 +936,9 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB7_2
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB7_2
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s6
@@ -911,11 +947,17 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN3-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    buffer_wbinvl1_vol
-; GCN3-NEXT:    s_cbranch_execz .LBB7_3
-; GCN3-NEXT:    s_branch .LBB7_4
+; GCN3-NEXT:    s_mov_b64 s[36:37], 0
+; GCN3-NEXT:    s_branch .LBB7_3
 ; GCN3-NEXT:  .LBB7_2:
+; GCN3-NEXT:    s_mov_b64 s[36:37], -1
 ; GCN3-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN3-NEXT:  .LBB7_3: ; %atomicrmw.private
+; GCN3-NEXT:  .LBB7_3: ; %Flow
+; GCN3-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc1 .LBB7_5
+; GCN3-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN3-NEXT:    s_cmp_lg_u64 s[34:35], 0
 ; GCN3-NEXT:    s_cselect_b32 s34, s34, -1
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
@@ -925,7 +967,7 @@ define amdgpu_gfx i64 @flat_atomic_xchg_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN3-NEXT:    buffer_store_dword v3, v2, s[0:3], 0 offen
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s7
 ; GCN3-NEXT:    buffer_store_dword v3, v2, s[0:3], 0 offen offset:4
-; GCN3-NEXT:  .LBB7_4: ; %atomicrmw.end
+; GCN3-NEXT:  .LBB7_5: ; %atomicrmw.end
 ; GCN3-NEXT:    s_waitcnt vmcnt(0)
 ; GCN3-NEXT:    s_setpc_b64 s[30:31]
   %gep = getelementptr i64, ptr %out, i64 4
@@ -1627,16 +1669,11 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_scalar(ptr inreg %ptr, double
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN1-NEXT:    s_mov_b64 s[34:35], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB14_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB14_4
-; GCN1-NEXT:  .LBB14_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_setpc_b64 s[30:31]
-; GCN1-NEXT:  .LBB14_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB14_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s5
@@ -1644,8 +1681,13 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_scalar(ptr inreg %ptr, double
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB14_2
-; GCN1-NEXT:  .LBB14_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[34:35], 0
+; GCN1-NEXT:  .LBB14_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB14_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[34:35], s[4:5], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s6
 ; GCN1-NEXT:    s_and_b64 s[34:35], s[34:35], exec
@@ -1656,6 +1698,7 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_scalar(ptr inreg %ptr, double
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s7
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s34
 ; GCN1-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen
+; GCN1-NEXT:  .LBB14_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
 ; GCN1-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1666,16 +1709,11 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_scalar(ptr inreg %ptr, double
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN2-NEXT:    s_mov_b64 s[34:35], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB14_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB14_4
-; GCN2-NEXT:  .LBB14_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_setpc_b64 s[30:31]
-; GCN2-NEXT:  .LBB14_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB14_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s5
@@ -1683,8 +1721,13 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_scalar(ptr inreg %ptr, double
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB14_2
-; GCN2-NEXT:  .LBB14_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[34:35], 0
+; GCN2-NEXT:  .LBB14_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB14_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GCN2-NEXT:    s_cselect_b32 s34, s4, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s6
@@ -1694,6 +1737,7 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_scalar(ptr inreg %ptr, double
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s7
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s34
 ; GCN2-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen
+; GCN2-NEXT:  .LBB14_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
 ; GCN2-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1702,16 +1746,11 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_scalar(ptr inreg %ptr, double
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN3-NEXT:    s_mov_b64 s[34:35], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB14_3
-; GCN3-NEXT:  ; %bb.1: ; %Flow
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB14_4
-; GCN3-NEXT:  .LBB14_2: ; %atomicrmw.phi
-; GCN3-NEXT:    s_setpc_b64 s[30:31]
-; GCN3-NEXT:  .LBB14_3: ; %atomicrmw.global
+; GCN3-NEXT:    s_cbranch_scc0 .LBB14_2
+; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN3-NEXT:    v_mov_b32_e32 v1, s5
@@ -1719,8 +1758,13 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_scalar(ptr inreg %ptr, double
 ; GCN3-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    buffer_wbinvl1_vol
-; GCN3-NEXT:    s_cbranch_execnz .LBB14_2
-; GCN3-NEXT:  .LBB14_4: ; %atomicrmw.private
+; GCN3-NEXT:    s_mov_b64 s[34:35], 0
+; GCN3-NEXT:  .LBB14_2: ; %Flow
+; GCN3-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc1 .LBB14_4
+; GCN3-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN3-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GCN3-NEXT:    s_cselect_b32 s34, s4, -1
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s7
@@ -1728,6 +1772,7 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_scalar(ptr inreg %ptr, double
 ; GCN3-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen offset:4
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s6
 ; GCN3-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen
+; GCN3-NEXT:  .LBB14_4: ; %atomicrmw.phi
 ; GCN3-NEXT:    s_waitcnt vmcnt(0)
 ; GCN3-NEXT:    s_setpc_b64 s[30:31]
   %tmp0 = atomicrmw xchg ptr %ptr, double %in seq_cst
@@ -1744,16 +1789,11 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN1-NEXT:    s_mov_b64 s[36:37], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB15_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB15_4
-; GCN1-NEXT:  .LBB15_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_setpc_b64 s[30:31]
-; GCN1-NEXT:  .LBB15_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB15_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s35
@@ -1761,8 +1801,13 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB15_2
-; GCN1-NEXT:  .LBB15_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[36:37], 0
+; GCN1-NEXT:  .LBB15_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB15_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[36:37], s[34:35], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s6
 ; GCN1-NEXT:    s_and_b64 s[36:37], s[36:37], exec
@@ -1773,6 +1818,7 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s7
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s34
 ; GCN1-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen
+; GCN1-NEXT:  .LBB15_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
 ; GCN1-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1785,16 +1831,11 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN2-NEXT:    s_mov_b64 s[36:37], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB15_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB15_4
-; GCN2-NEXT:  .LBB15_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_setpc_b64 s[30:31]
-; GCN2-NEXT:  .LBB15_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB15_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s35
@@ -1802,8 +1843,13 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB15_2
-; GCN2-NEXT:  .LBB15_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[36:37], 0
+; GCN2-NEXT:  .LBB15_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB15_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[34:35], 0
 ; GCN2-NEXT:    s_cselect_b32 s34, s34, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s6
@@ -1813,6 +1859,7 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s7
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s34
 ; GCN2-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen
+; GCN2-NEXT:  .LBB15_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
 ; GCN2-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1823,16 +1870,11 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN3-NEXT:    s_mov_b64 s[36:37], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB15_3
-; GCN3-NEXT:  ; %bb.1: ; %Flow
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB15_4
-; GCN3-NEXT:  .LBB15_2: ; %atomicrmw.phi
-; GCN3-NEXT:    s_setpc_b64 s[30:31]
-; GCN3-NEXT:  .LBB15_3: ; %atomicrmw.global
+; GCN3-NEXT:    s_cbranch_scc0 .LBB15_2
+; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN3-NEXT:    v_mov_b32_e32 v1, s35
@@ -1840,8 +1882,13 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    flat_atomic_swap_x2 v[0:1], v[2:3]
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    buffer_wbinvl1_vol
-; GCN3-NEXT:    s_cbranch_execnz .LBB15_2
-; GCN3-NEXT:  .LBB15_4: ; %atomicrmw.private
+; GCN3-NEXT:    s_mov_b64 s[36:37], 0
+; GCN3-NEXT:  .LBB15_2: ; %Flow
+; GCN3-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc1 .LBB15_4
+; GCN3-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN3-NEXT:    s_cmp_lg_u64 s[34:35], 0
 ; GCN3-NEXT:    s_cselect_b32 s34, s34, -1
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s7
@@ -1849,6 +1896,7 @@ define amdgpu_gfx void @flat_atomic_xchg_f64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen offset:4
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s6
 ; GCN3-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen
+; GCN3-NEXT:  .LBB15_4: ; %atomicrmw.phi
 ; GCN3-NEXT:    s_waitcnt vmcnt(0)
 ; GCN3-NEXT:    s_setpc_b64 s[30:31]
   %gep = getelementptr double, ptr %out, i32 4
@@ -1864,9 +1912,9 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_scalar(ptr inreg %ptr, double
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB16_2
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s6
@@ -1875,11 +1923,17 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_scalar(ptr inreg %ptr, double
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB16_3
-; GCN1-NEXT:    s_branch .LBB16_4
+; GCN1-NEXT:    s_mov_b64 s[34:35], 0
+; GCN1-NEXT:    s_branch .LBB16_3
 ; GCN1-NEXT:  .LBB16_2:
+; GCN1-NEXT:    s_mov_b64 s[34:35], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB16_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB16_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB16_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[34:35], s[4:5], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s6
 ; GCN1-NEXT:    s_and_b64 s[34:35], s[34:35], exec
@@ -1892,7 +1946,7 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_scalar(ptr inreg %ptr, double
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[0:3], 0 offen
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s7
 ; GCN1-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; GCN1-NEXT:  .LBB16_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB16_5: ; %atomicrmw.end
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
 ; GCN1-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1903,9 +1957,9 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_scalar(ptr inreg %ptr, double
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB16_2
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s6
@@ -1914,11 +1968,17 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_scalar(ptr inreg %ptr, double
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB16_3
-; GCN2-NEXT:    s_branch .LBB16_4
+; GCN2-NEXT:    s_mov_b64 s[34:35], 0
+; GCN2-NEXT:    s_branch .LBB16_3
 ; GCN2-NEXT:  .LBB16_2:
+; GCN2-NEXT:    s_mov_b64 s[34:35], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB16_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB16_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB16_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GCN2-NEXT:    s_cselect_b32 s34, s4, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s34
@@ -1930,7 +1990,7 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_scalar(ptr inreg %ptr, double
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[0:3], 0 offen
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s7
 ; GCN2-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; GCN2-NEXT:  .LBB16_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB16_5: ; %atomicrmw.end
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
 ; GCN2-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1939,9 +1999,9 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_scalar(ptr inreg %ptr, double
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB16_2
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s6
@@ -1950,11 +2010,17 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_scalar(ptr inreg %ptr, double
 ; GCN3-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    buffer_wbinvl1_vol
-; GCN3-NEXT:    s_cbranch_execz .LBB16_3
-; GCN3-NEXT:    s_branch .LBB16_4
+; GCN3-NEXT:    s_mov_b64 s[34:35], 0
+; GCN3-NEXT:    s_branch .LBB16_3
 ; GCN3-NEXT:  .LBB16_2:
+; GCN3-NEXT:    s_mov_b64 s[34:35], -1
 ; GCN3-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN3-NEXT:  .LBB16_3: ; %atomicrmw.private
+; GCN3-NEXT:  .LBB16_3: ; %Flow
+; GCN3-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc1 .LBB16_5
+; GCN3-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN3-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GCN3-NEXT:    s_cselect_b32 s34, s4, -1
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
@@ -1964,7 +2030,7 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_scalar(ptr inreg %ptr, double
 ; GCN3-NEXT:    buffer_store_dword v3, v2, s[0:3], 0 offen
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s7
 ; GCN3-NEXT:    buffer_store_dword v3, v2, s[0:3], 0 offen offset:4
-; GCN3-NEXT:  .LBB16_4: ; %atomicrmw.end
+; GCN3-NEXT:  .LBB16_5: ; %atomicrmw.end
 ; GCN3-NEXT:    s_waitcnt vmcnt(0)
 ; GCN3-NEXT:    s_setpc_b64 s[30:31]
   %result = atomicrmw xchg ptr %ptr, double %in seq_cst
@@ -1981,9 +2047,9 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB17_2
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s6
@@ -1992,11 +2058,17 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB17_3
-; GCN1-NEXT:    s_branch .LBB17_4
+; GCN1-NEXT:    s_mov_b64 s[36:37], 0
+; GCN1-NEXT:    s_branch .LBB17_3
 ; GCN1-NEXT:  .LBB17_2:
+; GCN1-NEXT:    s_mov_b64 s[36:37], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB17_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB17_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB17_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[36:37], s[34:35], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s6
 ; GCN1-NEXT:    s_and_b64 s[36:37], s[36:37], exec
@@ -2009,7 +2081,7 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    buffer_store_dword v4, v2, s[0:3], 0 offen
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s7
 ; GCN1-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; GCN1-NEXT:  .LBB17_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB17_5: ; %atomicrmw.end
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
 ; GCN1-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2022,9 +2094,9 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB17_2
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s6
@@ -2033,11 +2105,17 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB17_3
-; GCN2-NEXT:    s_branch .LBB17_4
+; GCN2-NEXT:    s_mov_b64 s[36:37], 0
+; GCN2-NEXT:    s_branch .LBB17_3
 ; GCN2-NEXT:  .LBB17_2:
+; GCN2-NEXT:    s_mov_b64 s[36:37], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB17_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB17_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB17_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[34:35], 0
 ; GCN2-NEXT:    s_cselect_b32 s34, s34, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s34
@@ -2049,7 +2127,7 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    buffer_store_dword v4, v2, s[0:3], 0 offen
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s7
 ; GCN2-NEXT:    buffer_store_dword v2, v3, s[0:3], 0 offen
-; GCN2-NEXT:  .LBB17_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB17_5: ; %atomicrmw.end
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
 ; GCN2-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2060,9 +2138,9 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB17_2
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB17_2
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s6
@@ -2071,11 +2149,17 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    flat_atomic_swap_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    buffer_wbinvl1_vol
-; GCN3-NEXT:    s_cbranch_execz .LBB17_3
-; GCN3-NEXT:    s_branch .LBB17_4
+; GCN3-NEXT:    s_mov_b64 s[36:37], 0
+; GCN3-NEXT:    s_branch .LBB17_3
 ; GCN3-NEXT:  .LBB17_2:
+; GCN3-NEXT:    s_mov_b64 s[36:37], -1
 ; GCN3-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN3-NEXT:  .LBB17_3: ; %atomicrmw.private
+; GCN3-NEXT:  .LBB17_3: ; %Flow
+; GCN3-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc1 .LBB17_5
+; GCN3-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN3-NEXT:    s_cmp_lg_u64 s[34:35], 0
 ; GCN3-NEXT:    s_cselect_b32 s34, s34, -1
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
@@ -2085,7 +2169,7 @@ define amdgpu_gfx double @flat_atomic_xchg_f64_ret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    buffer_store_dword v3, v2, s[0:3], 0 offen
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s7
 ; GCN3-NEXT:    buffer_store_dword v3, v2, s[0:3], 0 offen offset:4
-; GCN3-NEXT:  .LBB17_4: ; %atomicrmw.end
+; GCN3-NEXT:  .LBB17_5: ; %atomicrmw.end
 ; GCN3-NEXT:    s_waitcnt vmcnt(0)
 ; GCN3-NEXT:    s_setpc_b64 s[30:31]
   %gep = getelementptr double, ptr %out, i32 4
@@ -2845,16 +2929,11 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN1-NEXT:    s_mov_b64 s[34:35], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB24_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB24_4
-; GCN1-NEXT:  .LBB24_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_setpc_b64 s[30:31]
-; GCN1-NEXT:  .LBB24_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB24_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s5
@@ -2862,8 +2941,13 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN1-NEXT:    flat_atomic_add_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB24_2
-; GCN1-NEXT:  .LBB24_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[34:35], 0
+; GCN1-NEXT:  .LBB24_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB24_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[34:35], s[4:5], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s7
 ; GCN1-NEXT:    s_and_b64 s[34:35], s[34:35], exec
@@ -2879,6 +2963,7 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN1-NEXT:    v_addc_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v2, s[0:3], 0 offen
+; GCN1-NEXT:  .LBB24_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
 ; GCN1-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2889,16 +2974,11 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN2-NEXT:    s_mov_b64 s[34:35], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB24_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB24_4
-; GCN2-NEXT:  .LBB24_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_setpc_b64 s[30:31]
-; GCN2-NEXT:  .LBB24_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB24_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s5
@@ -2906,8 +2986,13 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN2-NEXT:    flat_atomic_add_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB24_2
-; GCN2-NEXT:  .LBB24_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[34:35], 0
+; GCN2-NEXT:  .LBB24_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB24_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GCN2-NEXT:    s_cselect_b32 s34, s4, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s34
@@ -2922,6 +3007,7 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN2-NEXT:    v_addc_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v2, s[0:3], 0 offen
+; GCN2-NEXT:  .LBB24_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
 ; GCN2-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2930,16 +3016,11 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN3-NEXT:    s_mov_b64 s[34:35], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB24_3
-; GCN3-NEXT:  ; %bb.1: ; %Flow
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB24_4
-; GCN3-NEXT:  .LBB24_2: ; %atomicrmw.phi
-; GCN3-NEXT:    s_setpc_b64 s[30:31]
-; GCN3-NEXT:  .LBB24_3: ; %atomicrmw.global
+; GCN3-NEXT:    s_cbranch_scc0 .LBB24_2
+; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN3-NEXT:    v_mov_b32_e32 v1, s5
@@ -2947,8 +3028,13 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN3-NEXT:    flat_atomic_add_x2 v[0:1], v[2:3]
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    buffer_wbinvl1_vol
-; GCN3-NEXT:    s_cbranch_execnz .LBB24_2
-; GCN3-NEXT:  .LBB24_4: ; %atomicrmw.private
+; GCN3-NEXT:    s_mov_b64 s[34:35], 0
+; GCN3-NEXT:  .LBB24_2: ; %Flow
+; GCN3-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc1 .LBB24_4
+; GCN3-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN3-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GCN3-NEXT:    s_cselect_b32 s34, s4, -1
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s34
@@ -2961,6 +3047,7 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN3-NEXT:    v_addc_co_u32_e32 v2, vcc, v2, v3, vcc
 ; GCN3-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; GCN3-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:4
+; GCN3-NEXT:  .LBB24_4: ; %atomicrmw.phi
 ; GCN3-NEXT:    s_waitcnt vmcnt(0)
 ; GCN3-NEXT:    s_setpc_b64 s[30:31]
   %tmp0 = atomicrmw add ptr %ptr, i64 %in seq_cst
@@ -2977,16 +3064,11 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN1-NEXT:    s_mov_b64 s[36:37], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB25_3
-; GCN1-NEXT:  ; %bb.1: ; %Flow
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB25_4
-; GCN1-NEXT:  .LBB25_2: ; %atomicrmw.phi
-; GCN1-NEXT:    s_setpc_b64 s[30:31]
-; GCN1-NEXT:  .LBB25_3: ; %atomicrmw.global
+; GCN1-NEXT:    s_cbranch_scc0 .LBB25_2
+; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN1-NEXT:    v_mov_b32_e32 v1, s35
@@ -2994,8 +3076,13 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    flat_atomic_add_x2 v[0:1], v[2:3]
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execnz .LBB25_2
-; GCN1-NEXT:  .LBB25_4: ; %atomicrmw.private
+; GCN1-NEXT:    s_mov_b64 s[36:37], 0
+; GCN1-NEXT:  .LBB25_2: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB25_4
+; GCN1-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[36:37], s[34:35], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s7
 ; GCN1-NEXT:    s_and_b64 s[36:37], s[36:37], exec
@@ -3011,6 +3098,7 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    v_addc_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v3, v2, s[0:3], 0 offen
+; GCN1-NEXT:  .LBB25_4: ; %atomicrmw.phi
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
 ; GCN1-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3023,16 +3111,11 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN2-NEXT:    s_mov_b64 s[36:37], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB25_3
-; GCN2-NEXT:  ; %bb.1: ; %Flow
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB25_4
-; GCN2-NEXT:  .LBB25_2: ; %atomicrmw.phi
-; GCN2-NEXT:    s_setpc_b64 s[30:31]
-; GCN2-NEXT:  .LBB25_3: ; %atomicrmw.global
+; GCN2-NEXT:    s_cbranch_scc0 .LBB25_2
+; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN2-NEXT:    v_mov_b32_e32 v1, s35
@@ -3040,8 +3123,13 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    flat_atomic_add_x2 v[0:1], v[2:3]
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execnz .LBB25_2
-; GCN2-NEXT:  .LBB25_4: ; %atomicrmw.private
+; GCN2-NEXT:    s_mov_b64 s[36:37], 0
+; GCN2-NEXT:  .LBB25_2: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB25_4
+; GCN2-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[34:35], 0
 ; GCN2-NEXT:    s_cselect_b32 s34, s34, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s34
@@ -3056,6 +3144,7 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    v_addc_u32_e32 v3, vcc, v3, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v3, v2, s[0:3], 0 offen
+; GCN2-NEXT:  .LBB25_4: ; %atomicrmw.phi
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
 ; GCN2-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3066,16 +3155,11 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN3-NEXT:    s_mov_b64 s[36:37], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB25_3
-; GCN3-NEXT:  ; %bb.1: ; %Flow
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB25_4
-; GCN3-NEXT:  .LBB25_2: ; %atomicrmw.phi
-; GCN3-NEXT:    s_setpc_b64 s[30:31]
-; GCN3-NEXT:  .LBB25_3: ; %atomicrmw.global
+; GCN3-NEXT:    s_cbranch_scc0 .LBB25_2
+; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN3-NEXT:    v_mov_b32_e32 v1, s35
@@ -3083,8 +3167,13 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    flat_atomic_add_x2 v[0:1], v[2:3]
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    buffer_wbinvl1_vol
-; GCN3-NEXT:    s_cbranch_execnz .LBB25_2
-; GCN3-NEXT:  .LBB25_4: ; %atomicrmw.private
+; GCN3-NEXT:    s_mov_b64 s[36:37], 0
+; GCN3-NEXT:  .LBB25_2: ; %Flow
+; GCN3-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc1 .LBB25_4
+; GCN3-NEXT:  ; %bb.3: ; %atomicrmw.private
 ; GCN3-NEXT:    s_cmp_lg_u64 s[34:35], 0
 ; GCN3-NEXT:    s_cselect_b32 s34, s34, -1
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s34
@@ -3097,6 +3186,7 @@ define amdgpu_gfx void @flat_atomic_add_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    v_addc_co_u32_e32 v2, vcc, v2, v3, vcc
 ; GCN3-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen
 ; GCN3-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:4
+; GCN3-NEXT:  .LBB25_4: ; %atomicrmw.phi
 ; GCN3-NEXT:    s_waitcnt vmcnt(0)
 ; GCN3-NEXT:    s_setpc_b64 s[30:31]
   %gep = getelementptr i64, ptr %out, i64 4
@@ -3112,9 +3202,9 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB26_2
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB26_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s6
@@ -3123,11 +3213,17 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN1-NEXT:    flat_atomic_add_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB26_3
-; GCN1-NEXT:    s_branch .LBB26_4
+; GCN1-NEXT:    s_mov_b64 s[34:35], 0
+; GCN1-NEXT:    s_branch .LBB26_3
 ; GCN1-NEXT:  .LBB26_2:
+; GCN1-NEXT:    s_mov_b64 s[34:35], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB26_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB26_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB26_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[34:35], s[4:5], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s7
 ; GCN1-NEXT:    s_and_b64 s[34:35], s[34:35], exec
@@ -3143,7 +3239,7 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN1-NEXT:    v_addc_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[0:3], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[0:3], 0 offen
-; GCN1-NEXT:  .LBB26_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB26_5: ; %atomicrmw.end
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
 ; GCN1-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3154,9 +3250,9 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB26_2
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB26_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s6
@@ -3165,11 +3261,17 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN2-NEXT:    flat_atomic_add_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB26_3
-; GCN2-NEXT:    s_branch .LBB26_4
+; GCN2-NEXT:    s_mov_b64 s[34:35], 0
+; GCN2-NEXT:    s_branch .LBB26_3
 ; GCN2-NEXT:  .LBB26_2:
+; GCN2-NEXT:    s_mov_b64 s[34:35], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB26_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB26_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB26_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GCN2-NEXT:    s_cselect_b32 s34, s4, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s34
@@ -3184,7 +3286,7 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN2-NEXT:    v_addc_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[0:3], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[0:3], 0 offen
-; GCN2-NEXT:  .LBB26_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB26_5: ; %atomicrmw.end
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
 ; GCN2-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3193,9 +3295,9 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB26_2
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB26_2
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s6
@@ -3204,11 +3306,17 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN3-NEXT:    flat_atomic_add_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    buffer_wbinvl1_vol
-; GCN3-NEXT:    s_cbranch_execz .LBB26_3
-; GCN3-NEXT:    s_branch .LBB26_4
+; GCN3-NEXT:    s_mov_b64 s[34:35], 0
+; GCN3-NEXT:    s_branch .LBB26_3
 ; GCN3-NEXT:  .LBB26_2:
+; GCN3-NEXT:    s_mov_b64 s[34:35], -1
 ; GCN3-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN3-NEXT:  .LBB26_3: ; %atomicrmw.private
+; GCN3-NEXT:  .LBB26_3: ; %Flow
+; GCN3-NEXT:    s_and_b64 s[34:35], s[34:35], exec
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc1 .LBB26_5
+; GCN3-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN3-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GCN3-NEXT:    s_cselect_b32 s34, s4, -1
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
@@ -3221,7 +3329,7 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN3-NEXT:    v_addc_co_u32_e32 v3, vcc, v1, v3, vcc
 ; GCN3-NEXT:    buffer_store_dword v4, v2, s[0:3], 0 offen
 ; GCN3-NEXT:    buffer_store_dword v3, v2, s[0:3], 0 offen offset:4
-; GCN3-NEXT:  .LBB26_4: ; %atomicrmw.end
+; GCN3-NEXT:  .LBB26_5: ; %atomicrmw.end
 ; GCN3-NEXT:    s_waitcnt vmcnt(0)
 ; GCN3-NEXT:    s_setpc_b64 s[30:31]
   %result = atomicrmw add ptr %ptr, i64 %in seq_cst
@@ -3238,9 +3346,9 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB27_2
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s6
@@ -3249,11 +3357,17 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN1-NEXT:    flat_atomic_add_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN1-NEXT:    buffer_wbinvl1_vol
-; GCN1-NEXT:    s_cbranch_execz .LBB27_3
-; GCN1-NEXT:    s_branch .LBB27_4
+; GCN1-NEXT:    s_mov_b64 s[36:37], 0
+; GCN1-NEXT:    s_branch .LBB27_3
 ; GCN1-NEXT:  .LBB27_2:
+; GCN1-NEXT:    s_mov_b64 s[36:37], -1
 ; GCN1-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN1-NEXT:  .LBB27_3: ; %atomicrmw.private
+; GCN1-NEXT:  .LBB27_3: ; %Flow
+; GCN1-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc1 .LBB27_5
+; GCN1-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN1-NEXT:    v_cmp_ne_u64_e64 s[36:37], s[34:35], 0
 ; GCN1-NEXT:    v_mov_b32_e32 v4, s7
 ; GCN1-NEXT:    s_and_b64 s[36:37], s[36:37], exec
@@ -3269,7 +3383,7 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN1-NEXT:    v_addc_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN1-NEXT:    buffer_store_dword v5, v2, s[0:3], 0 offen
 ; GCN1-NEXT:    buffer_store_dword v4, v3, s[0:3], 0 offen
-; GCN1-NEXT:  .LBB27_4: ; %atomicrmw.end
+; GCN1-NEXT:  .LBB27_5: ; %atomicrmw.end
 ; GCN1-NEXT:    s_waitcnt vmcnt(0)
 ; GCN1-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3282,9 +3396,9 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB27_2
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s6
@@ -3293,11 +3407,17 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN2-NEXT:    flat_atomic_add_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN2-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN2-NEXT:    buffer_wbinvl1_vol
-; GCN2-NEXT:    s_cbranch_execz .LBB27_3
-; GCN2-NEXT:    s_branch .LBB27_4
+; GCN2-NEXT:    s_mov_b64 s[36:37], 0
+; GCN2-NEXT:    s_branch .LBB27_3
 ; GCN2-NEXT:  .LBB27_2:
+; GCN2-NEXT:    s_mov_b64 s[36:37], -1
 ; GCN2-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN2-NEXT:  .LBB27_3: ; %atomicrmw.private
+; GCN2-NEXT:  .LBB27_3: ; %Flow
+; GCN2-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc1 .LBB27_5
+; GCN2-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN2-NEXT:    s_cmp_lg_u64 s[34:35], 0
 ; GCN2-NEXT:    s_cselect_b32 s34, s34, -1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s34
@@ -3312,7 +3432,7 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN2-NEXT:    v_addc_u32_e32 v4, vcc, v1, v4, vcc
 ; GCN2-NEXT:    buffer_store_dword v5, v2, s[0:3], 0 offen
 ; GCN2-NEXT:    buffer_store_dword v4, v3, s[0:3], 0 offen
-; GCN2-NEXT:  .LBB27_4: ; %atomicrmw.end
+; GCN2-NEXT:  .LBB27_5: ; %atomicrmw.end
 ; GCN2-NEXT:    s_waitcnt vmcnt(0)
 ; GCN2-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3323,9 +3443,9 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB27_2
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB27_2
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v0, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s6
@@ -3334,11 +3454,17 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN3-NEXT:    flat_atomic_add_x2 v[0:1], v[0:1], v[2:3] glc
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    buffer_wbinvl1_vol
-; GCN3-NEXT:    s_cbranch_execz .LBB27_3
-; GCN3-NEXT:    s_branch .LBB27_4
+; GCN3-NEXT:    s_mov_b64 s[36:37], 0
+; GCN3-NEXT:    s_branch .LBB27_3
 ; GCN3-NEXT:  .LBB27_2:
+; GCN3-NEXT:    s_mov_b64 s[36:37], -1
 ; GCN3-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; GCN3-NEXT:  .LBB27_3: ; %atomicrmw.private
+; GCN3-NEXT:  .LBB27_3: ; %Flow
+; GCN3-NEXT:    s_and_b64 s[36:37], s[36:37], exec
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc1 .LBB27_5
+; GCN3-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; GCN3-NEXT:    s_cmp_lg_u64 s[34:35], 0
 ; GCN3-NEXT:    s_cselect_b32 s34, s34, -1
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
@@ -3351,7 +3477,7 @@ define amdgpu_gfx i64 @flat_atomic_add_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN3-NEXT:    v_addc_co_u32_e32 v3, vcc, v1, v3, vcc
 ; GCN3-NEXT:    buffer_store_dword v4, v2, s[0:3], 0 offen
 ; GCN3-NEXT:    buffer_store_dword v3, v2, s[0:3], 0 offen offset:4
-; GCN3-NEXT:  .LBB27_4: ; %atomicrmw.end
+; GCN3-NEXT:  .LBB27_5: ; %atomicrmw.end
 ; GCN3-NEXT:    s_waitcnt vmcnt(0)
 ; GCN3-NEXT:    s_setpc_b64 s[30:31]
   %gep = getelementptr i64, ptr %out, i64 4
@@ -4348,10 +4474,10 @@ define amdgpu_gfx void @flat_atomic_sub_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN1-NEXT:    s_mov_b64 s[34:35], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB34_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB34_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB34_6
@@ -4411,10 +4537,10 @@ define amdgpu_gfx void @flat_atomic_sub_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN2-NEXT:    s_mov_b64 s[34:35], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB34_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB34_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB34_6
@@ -4471,10 +4597,10 @@ define amdgpu_gfx void @flat_atomic_sub_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN3-NEXT:    s_mov_b64 s[34:35], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB34_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB34_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB34_6
@@ -4532,10 +4658,10 @@ define amdgpu_gfx void @flat_atomic_sub_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN1-NEXT:    s_mov_b64 s[36:37], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB35_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB35_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB35_6
@@ -4597,10 +4723,10 @@ define amdgpu_gfx void @flat_atomic_sub_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN2-NEXT:    s_mov_b64 s[36:37], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB35_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB35_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB35_6
@@ -4659,10 +4785,10 @@ define amdgpu_gfx void @flat_atomic_sub_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN3-NEXT:    s_mov_b64 s[36:37], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB35_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB35_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB35_6
@@ -4719,9 +4845,9 @@ define amdgpu_gfx i64 @flat_atomic_sub_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB36_4
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB36_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s34, s4, 4
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
@@ -4780,9 +4906,9 @@ define amdgpu_gfx i64 @flat_atomic_sub_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB36_4
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB36_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s34, s4, 4
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
@@ -4838,9 +4964,9 @@ define amdgpu_gfx i64 @flat_atomic_sub_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB36_4
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB36_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s5
@@ -4897,9 +5023,9 @@ define amdgpu_gfx i64 @flat_atomic_sub_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB37_4
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB37_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s36, s34, 4
 ; GCN1-NEXT:    s_addc_u32 s37, s35, 0
@@ -4960,9 +5086,9 @@ define amdgpu_gfx i64 @flat_atomic_sub_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB37_4
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB37_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s36, s34, 4
 ; GCN2-NEXT:    s_addc_u32 s37, s35, 0
@@ -5020,9 +5146,9 @@ define amdgpu_gfx i64 @flat_atomic_sub_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB37_4
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB37_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s35
@@ -6059,10 +6185,10 @@ define amdgpu_gfx void @flat_atomic_and_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN1-NEXT:    s_mov_b64 s[34:35], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB44_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB44_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB44_6
@@ -6120,10 +6246,10 @@ define amdgpu_gfx void @flat_atomic_and_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN2-NEXT:    s_mov_b64 s[34:35], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB44_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB44_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB44_6
@@ -6178,10 +6304,10 @@ define amdgpu_gfx void @flat_atomic_and_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN3-NEXT:    s_mov_b64 s[34:35], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB44_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB44_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB44_6
@@ -6237,10 +6363,10 @@ define amdgpu_gfx void @flat_atomic_and_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN1-NEXT:    s_mov_b64 s[36:37], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB45_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB45_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB45_6
@@ -6300,10 +6426,10 @@ define amdgpu_gfx void @flat_atomic_and_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN2-NEXT:    s_mov_b64 s[36:37], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB45_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB45_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB45_6
@@ -6360,10 +6486,10 @@ define amdgpu_gfx void @flat_atomic_and_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN3-NEXT:    s_mov_b64 s[36:37], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB45_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB45_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB45_6
@@ -6418,9 +6544,9 @@ define amdgpu_gfx i64 @flat_atomic_and_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB46_4
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB46_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s34, s4, 4
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
@@ -6477,9 +6603,9 @@ define amdgpu_gfx i64 @flat_atomic_and_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB46_4
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB46_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s34, s4, 4
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
@@ -6533,9 +6659,9 @@ define amdgpu_gfx i64 @flat_atomic_and_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB46_4
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB46_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s5
@@ -6590,9 +6716,9 @@ define amdgpu_gfx i64 @flat_atomic_and_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB47_4
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB47_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s36, s34, 4
 ; GCN1-NEXT:    s_addc_u32 s37, s35, 0
@@ -6651,9 +6777,9 @@ define amdgpu_gfx i64 @flat_atomic_and_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB47_4
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB47_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s36, s34, 4
 ; GCN2-NEXT:    s_addc_u32 s37, s35, 0
@@ -6709,9 +6835,9 @@ define amdgpu_gfx i64 @flat_atomic_and_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB47_4
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB47_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s35
@@ -7794,10 +7920,10 @@ define amdgpu_gfx void @flat_atomic_nand_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN1-NEXT:    s_mov_b64 s[34:35], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB54_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB54_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB54_6
@@ -7859,10 +7985,10 @@ define amdgpu_gfx void @flat_atomic_nand_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN2-NEXT:    s_mov_b64 s[34:35], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB54_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB54_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB54_6
@@ -7921,10 +8047,10 @@ define amdgpu_gfx void @flat_atomic_nand_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN3-NEXT:    s_mov_b64 s[34:35], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB54_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB54_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB54_6
@@ -7984,10 +8110,10 @@ define amdgpu_gfx void @flat_atomic_nand_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN1-NEXT:    s_mov_b64 s[36:37], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB55_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB55_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB55_6
@@ -8051,10 +8177,10 @@ define amdgpu_gfx void @flat_atomic_nand_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN2-NEXT:    s_mov_b64 s[36:37], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB55_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB55_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB55_6
@@ -8115,10 +8241,10 @@ define amdgpu_gfx void @flat_atomic_nand_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN3-NEXT:    s_mov_b64 s[36:37], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB55_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB55_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB55_6
@@ -8177,9 +8303,9 @@ define amdgpu_gfx i64 @flat_atomic_nand_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB56_4
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB56_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s34, s4, 4
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
@@ -8240,9 +8366,9 @@ define amdgpu_gfx i64 @flat_atomic_nand_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB56_4
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB56_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s34, s4, 4
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
@@ -8300,9 +8426,9 @@ define amdgpu_gfx i64 @flat_atomic_nand_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB56_4
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB56_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s5
@@ -8361,9 +8487,9 @@ define amdgpu_gfx i64 @flat_atomic_nand_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB57_4
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB57_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s36, s34, 4
 ; GCN1-NEXT:    s_addc_u32 s37, s35, 0
@@ -8426,9 +8552,9 @@ define amdgpu_gfx i64 @flat_atomic_nand_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB57_4
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB57_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s36, s34, 4
 ; GCN2-NEXT:    s_addc_u32 s37, s35, 0
@@ -8488,9 +8614,9 @@ define amdgpu_gfx i64 @flat_atomic_nand_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB57_4
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB57_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s35
@@ -9661,10 +9787,10 @@ define amdgpu_gfx void @flat_atomic_or_i64_noret_scalar(ptr inreg %ptr, i64 inre
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN1-NEXT:    s_mov_b64 s[34:35], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB64_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB64_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB64_6
@@ -9722,10 +9848,10 @@ define amdgpu_gfx void @flat_atomic_or_i64_noret_scalar(ptr inreg %ptr, i64 inre
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN2-NEXT:    s_mov_b64 s[34:35], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB64_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB64_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB64_6
@@ -9780,10 +9906,10 @@ define amdgpu_gfx void @flat_atomic_or_i64_noret_scalar(ptr inreg %ptr, i64 inre
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN3-NEXT:    s_mov_b64 s[34:35], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB64_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB64_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB64_6
@@ -9839,10 +9965,10 @@ define amdgpu_gfx void @flat_atomic_or_i64_noret_offset_scalar(ptr inreg %out, i
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN1-NEXT:    s_mov_b64 s[36:37], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB65_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB65_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB65_6
@@ -9902,10 +10028,10 @@ define amdgpu_gfx void @flat_atomic_or_i64_noret_offset_scalar(ptr inreg %out, i
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN2-NEXT:    s_mov_b64 s[36:37], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB65_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB65_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB65_6
@@ -9962,10 +10088,10 @@ define amdgpu_gfx void @flat_atomic_or_i64_noret_offset_scalar(ptr inreg %out, i
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN3-NEXT:    s_mov_b64 s[36:37], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB65_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB65_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB65_6
@@ -10020,9 +10146,9 @@ define amdgpu_gfx i64 @flat_atomic_or_i64_ret_scalar(ptr inreg %ptr, i64 inreg %
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB66_4
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB66_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s34, s4, 4
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
@@ -10079,9 +10205,9 @@ define amdgpu_gfx i64 @flat_atomic_or_i64_ret_scalar(ptr inreg %ptr, i64 inreg %
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB66_4
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB66_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s34, s4, 4
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
@@ -10135,9 +10261,9 @@ define amdgpu_gfx i64 @flat_atomic_or_i64_ret_scalar(ptr inreg %ptr, i64 inreg %
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB66_4
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB66_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s5
@@ -10192,9 +10318,9 @@ define amdgpu_gfx i64 @flat_atomic_or_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB67_4
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB67_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s36, s34, 4
 ; GCN1-NEXT:    s_addc_u32 s37, s35, 0
@@ -10253,9 +10379,9 @@ define amdgpu_gfx i64 @flat_atomic_or_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB67_4
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB67_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s36, s34, 4
 ; GCN2-NEXT:    s_addc_u32 s37, s35, 0
@@ -10311,9 +10437,9 @@ define amdgpu_gfx i64 @flat_atomic_or_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB67_4
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB67_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s35
@@ -11348,10 +11474,10 @@ define amdgpu_gfx void @flat_atomic_xor_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN1-NEXT:    s_mov_b64 s[34:35], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB74_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB74_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB74_6
@@ -11409,10 +11535,10 @@ define amdgpu_gfx void @flat_atomic_xor_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN2-NEXT:    s_mov_b64 s[34:35], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB74_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB74_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB74_6
@@ -11467,10 +11593,10 @@ define amdgpu_gfx void @flat_atomic_xor_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN3-NEXT:    s_mov_b64 s[34:35], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB74_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB74_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB74_6
@@ -11526,10 +11652,10 @@ define amdgpu_gfx void @flat_atomic_xor_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN1-NEXT:    s_mov_b64 s[36:37], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB75_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB75_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB75_6
@@ -11589,10 +11715,10 @@ define amdgpu_gfx void @flat_atomic_xor_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN2-NEXT:    s_mov_b64 s[36:37], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB75_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB75_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB75_6
@@ -11649,10 +11775,10 @@ define amdgpu_gfx void @flat_atomic_xor_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN3-NEXT:    s_mov_b64 s[36:37], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB75_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB75_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB75_6
@@ -11707,9 +11833,9 @@ define amdgpu_gfx i64 @flat_atomic_xor_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB76_4
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB76_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s34, s4, 4
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
@@ -11766,9 +11892,9 @@ define amdgpu_gfx i64 @flat_atomic_xor_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB76_4
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB76_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s34, s4, 4
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
@@ -11822,9 +11948,9 @@ define amdgpu_gfx i64 @flat_atomic_xor_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB76_4
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB76_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s5
@@ -11879,9 +12005,9 @@ define amdgpu_gfx i64 @flat_atomic_xor_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB77_4
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB77_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s36, s34, 4
 ; GCN1-NEXT:    s_addc_u32 s37, s35, 0
@@ -11940,9 +12066,9 @@ define amdgpu_gfx i64 @flat_atomic_xor_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB77_4
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB77_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s36, s34, 4
 ; GCN2-NEXT:    s_addc_u32 s37, s35, 0
@@ -11998,9 +12124,9 @@ define amdgpu_gfx i64 @flat_atomic_xor_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB77_4
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB77_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s35
@@ -13035,10 +13161,10 @@ define amdgpu_gfx void @flat_atomic_max_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN1-NEXT:    s_mov_b64 s[34:35], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB84_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB84_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB84_6
@@ -13101,10 +13227,10 @@ define amdgpu_gfx void @flat_atomic_max_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN2-NEXT:    s_mov_b64 s[34:35], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB84_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB84_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB84_6
@@ -13164,10 +13290,10 @@ define amdgpu_gfx void @flat_atomic_max_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN3-NEXT:    s_mov_b64 s[34:35], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB84_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB84_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB84_6
@@ -13228,10 +13354,10 @@ define amdgpu_gfx void @flat_atomic_max_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN1-NEXT:    s_mov_b64 s[36:37], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB85_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB85_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB85_6
@@ -13296,10 +13422,10 @@ define amdgpu_gfx void @flat_atomic_max_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN2-NEXT:    s_mov_b64 s[36:37], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB85_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB85_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB85_6
@@ -13361,10 +13487,10 @@ define amdgpu_gfx void @flat_atomic_max_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN3-NEXT:    s_mov_b64 s[36:37], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB85_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB85_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB85_6
@@ -13424,9 +13550,9 @@ define amdgpu_gfx i64 @flat_atomic_max_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB86_4
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB86_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s34, s4, 4
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
@@ -13488,9 +13614,9 @@ define amdgpu_gfx i64 @flat_atomic_max_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB86_4
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB86_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s34, s4, 4
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
@@ -13549,9 +13675,9 @@ define amdgpu_gfx i64 @flat_atomic_max_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB86_4
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB86_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s5
@@ -13611,9 +13737,9 @@ define amdgpu_gfx i64 @flat_atomic_max_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB87_4
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB87_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s36, s34, 4
 ; GCN1-NEXT:    s_addc_u32 s37, s35, 0
@@ -13677,9 +13803,9 @@ define amdgpu_gfx i64 @flat_atomic_max_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB87_4
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB87_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s36, s34, 4
 ; GCN2-NEXT:    s_addc_u32 s37, s35, 0
@@ -13740,9 +13866,9 @@ define amdgpu_gfx i64 @flat_atomic_max_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB87_4
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB87_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s35
@@ -13812,10 +13938,10 @@ define amdgpu_kernel void @atomic_max_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB88_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB88_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow6
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB88_6
@@ -13869,24 +13995,25 @@ define amdgpu_kernel void @atomic_max_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2:       ; %bb.0: ; %entry
 ; GCN2-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
 ; GCN2-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
-; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GCN2-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s8, s[4:5], 0xfc
+; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
-; GCN2-NEXT:    s_add_u32 s0, s0, s4
-; GCN2-NEXT:    s_addc_u32 s1, s1, s5
+; GCN2-NEXT:    s_lshl_b64 s[6:7], s[6:7], 3
+; GCN2-NEXT:    s_load_dword s4, s[4:5], 0xfc
+; GCN2-NEXT:    s_add_u32 s0, s0, s6
+; GCN2-NEXT:    s_addc_u32 s1, s1, s7
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
-; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB88_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB88_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow6
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB88_6
@@ -13953,10 +14080,10 @@ define amdgpu_kernel void @atomic_max_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN3-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s1, s7
-; GCN3-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN3-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN3-NEXT:    s_mov_b64 s[4:5], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB88_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB88_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow6
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB88_6
@@ -14027,9 +14154,9 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB89_4
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB89_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s0
@@ -14089,8 +14216,8 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -14098,9 +14225,9 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB89_4
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB89_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -14168,9 +14295,9 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN3-NEXT:    s_add_u32 s0, s0, 32
 ; GCN3-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s1, s3
-; GCN3-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN3-NEXT:    s_cbranch_vccz .LBB89_4
+; GCN3-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB89_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s0
@@ -14243,10 +14370,10 @@ define amdgpu_kernel void @atomic_max_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN1-NEXT:    s_add_u32 s0, s0, s4
 ; GCN1-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB90_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB90_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow6
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB90_6
@@ -14312,10 +14439,10 @@ define amdgpu_kernel void @atomic_max_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN2-NEXT:    s_add_u32 s0, s0, s4
 ; GCN2-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB90_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB90_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow6
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB90_6
@@ -14380,10 +14507,10 @@ define amdgpu_kernel void @atomic_max_i64_addr64(ptr %out, i64 %in, i64 %index)
 ; GCN3-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s1, s1, s5
 ; GCN3-NEXT:    s_cmp_eq_u32 s1, s7
-; GCN3-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN3-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN3-NEXT:    s_mov_b64 s[4:5], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB90_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB90_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow6
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB90_6
@@ -14451,9 +14578,9 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB91_4
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB91_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s0
@@ -14520,9 +14647,9 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB91_4
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB91_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -14588,9 +14715,9 @@ define amdgpu_kernel void @atomic_max_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN3-NEXT:    s_add_u32 s0, s8, s0
 ; GCN3-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN3-NEXT:    s_cmp_eq_u32 s1, s3
-; GCN3-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN3-NEXT:    s_cbranch_vccz .LBB91_4
+; GCN3-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB91_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s0
@@ -15634,10 +15761,10 @@ define amdgpu_gfx void @flat_atomic_umax_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN1-NEXT:    s_mov_b64 s[34:35], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB98_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB98_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB98_6
@@ -15700,10 +15827,10 @@ define amdgpu_gfx void @flat_atomic_umax_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN2-NEXT:    s_mov_b64 s[34:35], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB98_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB98_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB98_6
@@ -15763,10 +15890,10 @@ define amdgpu_gfx void @flat_atomic_umax_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN3-NEXT:    s_mov_b64 s[34:35], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB98_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB98_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB98_6
@@ -15827,10 +15954,10 @@ define amdgpu_gfx void @flat_atomic_umax_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN1-NEXT:    s_mov_b64 s[36:37], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB99_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB99_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB99_6
@@ -15895,10 +16022,10 @@ define amdgpu_gfx void @flat_atomic_umax_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN2-NEXT:    s_mov_b64 s[36:37], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB99_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB99_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB99_6
@@ -15960,10 +16087,10 @@ define amdgpu_gfx void @flat_atomic_umax_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN3-NEXT:    s_mov_b64 s[36:37], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB99_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB99_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB99_6
@@ -16023,9 +16150,9 @@ define amdgpu_gfx i64 @flat_atomic_umax_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB100_4
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB100_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s34, s4, 4
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
@@ -16087,9 +16214,9 @@ define amdgpu_gfx i64 @flat_atomic_umax_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB100_4
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB100_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s34, s4, 4
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
@@ -16148,9 +16275,9 @@ define amdgpu_gfx i64 @flat_atomic_umax_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB100_4
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB100_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s5
@@ -16210,9 +16337,9 @@ define amdgpu_gfx i64 @flat_atomic_umax_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB101_4
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB101_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s36, s34, 4
 ; GCN1-NEXT:    s_addc_u32 s37, s35, 0
@@ -16276,9 +16403,9 @@ define amdgpu_gfx i64 @flat_atomic_umax_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB101_4
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB101_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s36, s34, 4
 ; GCN2-NEXT:    s_addc_u32 s37, s35, 0
@@ -16339,9 +16466,9 @@ define amdgpu_gfx i64 @flat_atomic_umax_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB101_4
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB101_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s35
@@ -16411,10 +16538,10 @@ define amdgpu_kernel void @atomic_umax_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB102_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB102_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow6
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB102_6
@@ -16468,24 +16595,25 @@ define amdgpu_kernel void @atomic_umax_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GCN2:       ; %bb.0: ; %entry
 ; GCN2-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
 ; GCN2-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
-; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GCN2-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s8, s[4:5], 0xfc
+; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
-; GCN2-NEXT:    s_add_u32 s0, s0, s4
-; GCN2-NEXT:    s_addc_u32 s1, s1, s5
+; GCN2-NEXT:    s_lshl_b64 s[6:7], s[6:7], 3
+; GCN2-NEXT:    s_load_dword s4, s[4:5], 0xfc
+; GCN2-NEXT:    s_add_u32 s0, s0, s6
+; GCN2-NEXT:    s_addc_u32 s1, s1, s7
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
-; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB102_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB102_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow6
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB102_6
@@ -16552,10 +16680,10 @@ define amdgpu_kernel void @atomic_umax_i64_addr64_offset(ptr %out, i64 %in, i64
 ; GCN3-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s1, s7
-; GCN3-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN3-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN3-NEXT:    s_mov_b64 s[4:5], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB102_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB102_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow6
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB102_6
@@ -16626,9 +16754,9 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB103_4
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB103_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s0
@@ -16688,8 +16816,8 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -16697,9 +16825,9 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB103_4
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB103_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -16767,9 +16895,9 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64_offset(ptr %out, ptr %out2
 ; GCN3-NEXT:    s_add_u32 s0, s0, 32
 ; GCN3-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s1, s3
-; GCN3-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN3-NEXT:    s_cbranch_vccz .LBB103_4
+; GCN3-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB103_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s0
@@ -16841,9 +16969,9 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB104_4
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB104_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s0
@@ -16910,9 +17038,9 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB104_4
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB104_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -16978,9 +17106,9 @@ define amdgpu_kernel void @atomic_umax_i64_ret_addr64(ptr %out, ptr %out2, i64 %
 ; GCN3-NEXT:    s_add_u32 s0, s8, s0
 ; GCN3-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN3-NEXT:    s_cmp_eq_u32 s1, s3
-; GCN3-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN3-NEXT:    s_cbranch_vccz .LBB104_4
+; GCN3-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB104_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s0
@@ -18024,10 +18152,10 @@ define amdgpu_gfx void @flat_atomic_umin_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN1-NEXT:    s_mov_b64 s[34:35], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB111_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB111_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB111_6
@@ -18090,10 +18218,10 @@ define amdgpu_gfx void @flat_atomic_umin_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN2-NEXT:    s_mov_b64 s[34:35], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB111_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB111_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB111_6
@@ -18153,10 +18281,10 @@ define amdgpu_gfx void @flat_atomic_umin_i64_noret_scalar(ptr inreg %ptr, i64 in
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN3-NEXT:    s_mov_b64 s[34:35], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB111_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB111_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB111_6
@@ -18217,10 +18345,10 @@ define amdgpu_gfx void @flat_atomic_umin_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN1-NEXT:    s_mov_b64 s[36:37], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB112_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB112_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB112_6
@@ -18285,10 +18413,10 @@ define amdgpu_gfx void @flat_atomic_umin_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN2-NEXT:    s_mov_b64 s[36:37], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB112_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB112_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB112_6
@@ -18350,10 +18478,10 @@ define amdgpu_gfx void @flat_atomic_umin_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN3-NEXT:    s_mov_b64 s[36:37], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB112_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB112_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB112_6
@@ -18413,9 +18541,9 @@ define amdgpu_gfx i64 @flat_atomic_umin_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB113_4
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB113_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s34, s4, 4
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
@@ -18477,9 +18605,9 @@ define amdgpu_gfx i64 @flat_atomic_umin_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB113_4
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB113_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s34, s4, 4
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
@@ -18538,9 +18666,9 @@ define amdgpu_gfx i64 @flat_atomic_umin_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB113_4
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB113_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s5
@@ -18600,9 +18728,9 @@ define amdgpu_gfx i64 @flat_atomic_umin_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB114_4
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB114_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s36, s34, 4
 ; GCN1-NEXT:    s_addc_u32 s37, s35, 0
@@ -18666,9 +18794,9 @@ define amdgpu_gfx i64 @flat_atomic_umin_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB114_4
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB114_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s36, s34, 4
 ; GCN2-NEXT:    s_addc_u32 s37, s35, 0
@@ -18729,9 +18857,9 @@ define amdgpu_gfx i64 @flat_atomic_umin_i64_ret_offset_scalar(ptr inreg %out, i6
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB114_4
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB114_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s35
@@ -19771,10 +19899,10 @@ define amdgpu_gfx void @flat_atomic_min_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN1-NEXT:    s_mov_b64 s[34:35], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB121_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB121_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB121_6
@@ -19837,10 +19965,10 @@ define amdgpu_gfx void @flat_atomic_min_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN2-NEXT:    s_mov_b64 s[34:35], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB121_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB121_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB121_6
@@ -19900,10 +20028,10 @@ define amdgpu_gfx void @flat_atomic_min_i64_noret_scalar(ptr inreg %ptr, i64 inr
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN3-NEXT:    s_mov_b64 s[34:35], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB121_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB121_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB121_6
@@ -19964,10 +20092,10 @@ define amdgpu_gfx void @flat_atomic_min_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN1-NEXT:    s_mov_b64 s[36:37], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB122_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB122_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB122_6
@@ -20032,10 +20160,10 @@ define amdgpu_gfx void @flat_atomic_min_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN2-NEXT:    s_mov_b64 s[36:37], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB122_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB122_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB122_6
@@ -20097,10 +20225,10 @@ define amdgpu_gfx void @flat_atomic_min_i64_noret_offset_scalar(ptr inreg %out,
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN3-NEXT:    s_mov_b64 s[36:37], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB122_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB122_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB122_6
@@ -20160,9 +20288,9 @@ define amdgpu_gfx i64 @flat_atomic_min_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB123_4
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB123_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s34, s4, 4
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
@@ -20224,9 +20352,9 @@ define amdgpu_gfx i64 @flat_atomic_min_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB123_4
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB123_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s34, s4, 4
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
@@ -20285,9 +20413,9 @@ define amdgpu_gfx i64 @flat_atomic_min_i64_ret_scalar(ptr inreg %ptr, i64 inreg
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB123_4
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB123_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s5
@@ -20347,9 +20475,9 @@ define amdgpu_gfx i64 @flat_atomic_min_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB124_4
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB124_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s36, s34, 4
 ; GCN1-NEXT:    s_addc_u32 s37, s35, 0
@@ -20413,9 +20541,9 @@ define amdgpu_gfx i64 @flat_atomic_min_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB124_4
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB124_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s36, s34, 4
 ; GCN2-NEXT:    s_addc_u32 s37, s35, 0
@@ -20476,9 +20604,9 @@ define amdgpu_gfx i64 @flat_atomic_min_i64_ret_offset_scalar(ptr inreg %out, i64
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB124_4
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB124_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s35
@@ -20548,10 +20676,10 @@ define amdgpu_kernel void @atomic_min_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB125_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB125_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow6
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB125_6
@@ -20605,24 +20733,25 @@ define amdgpu_kernel void @atomic_min_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN2:       ; %bb.0: ; %entry
 ; GCN2-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
 ; GCN2-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
-; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GCN2-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s8, s[4:5], 0xfc
+; GCN2-NEXT:    s_mov_b32 s90, -1
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN2-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
-; GCN2-NEXT:    s_add_u32 s0, s0, s4
-; GCN2-NEXT:    s_addc_u32 s1, s1, s5
+; GCN2-NEXT:    s_lshl_b64 s[6:7], s[6:7], 3
+; GCN2-NEXT:    s_load_dword s4, s[4:5], 0xfc
+; GCN2-NEXT:    s_add_u32 s0, s0, s6
+; GCN2-NEXT:    s_addc_u32 s1, s1, s7
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
-; GCN2-NEXT:    s_cmp_eq_u32 s1, s8
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB125_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB125_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow6
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB125_6
@@ -20689,10 +20818,10 @@ define amdgpu_kernel void @atomic_min_i64_addr64_offset(ptr %out, i64 %in, i64 %
 ; GCN3-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s1, s7
-; GCN3-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN3-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN3-NEXT:    s_mov_b64 s[4:5], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB125_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB125_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow6
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB125_6
@@ -20763,9 +20892,9 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN1-NEXT:    s_add_u32 s0, s0, 32
 ; GCN1-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB126_4
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB126_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s0
@@ -20825,8 +20954,8 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_mov_b32 s91, 0xe80000
 ; GCN2-NEXT:    s_add_u32 s88, s88, s11
 ; GCN2-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
-; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
+; GCN2-NEXT:    s_load_dword s2, s[4:5], 0x104
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_lshl_b64 s[0:1], s[14:15], 3
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
@@ -20834,9 +20963,9 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN2-NEXT:    s_add_u32 s0, s0, 32
 ; GCN2-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB126_4
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB126_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -20904,9 +21033,9 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64_offset(ptr %out, ptr %out2,
 ; GCN3-NEXT:    s_add_u32 s0, s0, 32
 ; GCN3-NEXT:    s_addc_u32 s1, s1, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s1, s3
-; GCN3-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN3-NEXT:    s_cbranch_vccz .LBB126_4
+; GCN3-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB126_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s0
@@ -20975,10 +21104,10 @@ define amdgpu_kernel void @atomic_min_i64(ptr %out, i64 %in) {
 ; GCN1-NEXT:    s_addc_u32 s13, s13, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN1-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN1-NEXT:    s_mov_b64 s[4:5], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB127_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB127_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow5
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB127_6
@@ -21040,10 +21169,10 @@ define amdgpu_kernel void @atomic_min_i64(ptr %out, i64 %in) {
 ; GCN2-NEXT:    s_addc_u32 s89, s89, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s4
-; GCN2-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN2-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN2-NEXT:    s_mov_b64 s[4:5], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB127_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB127_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow5
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB127_6
@@ -21104,10 +21233,10 @@ define amdgpu_kernel void @atomic_min_i64(ptr %out, i64 %in) {
 ; GCN3-NEXT:    s_mov_b64 s[6:7], src_private_base
 ; GCN3-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN3-NEXT:    s_cmp_eq_u32 s1, s7
-; GCN3-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN3-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN3-NEXT:    s_mov_b64 s[4:5], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB127_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB127_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow5
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB127_6
@@ -21174,9 +21303,9 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN1-NEXT:    s_add_u32 s0, s8, s0
 ; GCN1-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN1-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN1-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN1-NEXT:    s_cbranch_vccz .LBB128_4
+; GCN1-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB128_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN1-NEXT:    v_mov_b32_e32 v2, s0
@@ -21243,9 +21372,9 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN2-NEXT:    s_add_u32 s0, s8, s0
 ; GCN2-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN2-NEXT:    s_cmp_eq_u32 s1, s2
-; GCN2-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN2-NEXT:    s_cbranch_vccz .LBB128_4
+; GCN2-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB128_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN2-NEXT:    v_mov_b32_e32 v2, s0
@@ -21311,9 +21440,9 @@ define amdgpu_kernel void @atomic_min_i64_ret_addr64(ptr %out, ptr %out2, i64 %i
 ; GCN3-NEXT:    s_add_u32 s0, s8, s0
 ; GCN3-NEXT:    s_addc_u32 s1, s9, s1
 ; GCN3-NEXT:    s_cmp_eq_u32 s1, s3
-; GCN3-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN3-NEXT:    s_cbranch_vccz .LBB128_4
+; GCN3-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB128_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s1
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s0
@@ -22417,10 +22546,10 @@ define amdgpu_gfx void @flat_atomic_uinc_wrap_i64_noret_scalar(ptr inreg %ptr, i
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN1-NEXT:    s_mov_b64 s[34:35], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB135_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB135_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB135_6
@@ -22484,10 +22613,10 @@ define amdgpu_gfx void @flat_atomic_uinc_wrap_i64_noret_scalar(ptr inreg %ptr, i
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN2-NEXT:    s_mov_b64 s[34:35], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB135_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB135_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB135_6
@@ -22548,10 +22677,10 @@ define amdgpu_gfx void @flat_atomic_uinc_wrap_i64_noret_scalar(ptr inreg %ptr, i
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN3-NEXT:    s_mov_b64 s[34:35], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB135_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB135_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB135_6
@@ -22613,10 +22742,10 @@ define amdgpu_gfx void @flat_atomic_uinc_wrap_i64_noret_offset_scalar(ptr inreg
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN1-NEXT:    s_mov_b64 s[36:37], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB136_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB136_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow3
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB136_6
@@ -22682,10 +22811,10 @@ define amdgpu_gfx void @flat_atomic_uinc_wrap_i64_noret_offset_scalar(ptr inreg
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN2-NEXT:    s_mov_b64 s[36:37], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB136_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB136_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow3
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB136_6
@@ -22748,10 +22877,10 @@ define amdgpu_gfx void @flat_atomic_uinc_wrap_i64_noret_offset_scalar(ptr inreg
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
 ; GCN3-NEXT:    s_mov_b64 s[36:37], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB136_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB136_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow3
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[36:37]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB136_6
@@ -22812,9 +22941,9 @@ define amdgpu_gfx i64 @flat_atomic_uinc_wrap_i64_ret_scalar(ptr inreg %ptr, i64
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB137_4
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB137_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s34, s4, 4
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
@@ -22877,9 +23006,9 @@ define amdgpu_gfx i64 @flat_atomic_uinc_wrap_i64_ret_scalar(ptr inreg %ptr, i64
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB137_4
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB137_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s34, s4, 4
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
@@ -22939,9 +23068,9 @@ define amdgpu_gfx i64 @flat_atomic_uinc_wrap_i64_ret_scalar(ptr inreg %ptr, i64
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB137_4
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB137_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s5
@@ -23002,9 +23131,9 @@ define amdgpu_gfx i64 @flat_atomic_uinc_wrap_i64_ret_offset_scalar(ptr inreg %ou
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN1-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN1-NEXT:    s_cbranch_vccz .LBB138_4
+; GCN1-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB138_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s36, s34, 4
 ; GCN1-NEXT:    s_addc_u32 s37, s35, 0
@@ -23069,9 +23198,9 @@ define amdgpu_gfx i64 @flat_atomic_uinc_wrap_i64_ret_offset_scalar(ptr inreg %ou
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s35, s36
-; GCN2-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN2-NEXT:    s_cbranch_vccz .LBB138_4
+; GCN2-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB138_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s36, s34, 4
 ; GCN2-NEXT:    s_addc_u32 s37, s35, 0
@@ -23133,9 +23262,9 @@ define amdgpu_gfx i64 @flat_atomic_uinc_wrap_i64_ret_offset_scalar(ptr inreg %ou
 ; GCN3-NEXT:    s_mov_b64 s[36:37], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s35, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s35, s37
-; GCN3-NEXT:    s_cselect_b64 s[36:37], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[36:37]
-; GCN3-NEXT:    s_cbranch_vccz .LBB138_4
+; GCN3-NEXT:    s_cselect_b32 s36, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s36, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB138_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s34
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s35
@@ -24272,10 +24401,10 @@ define amdgpu_gfx void @flat_atomic_udec_wrap_i64_noret_scalar(ptr inreg %ptr, i
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN1-NEXT:    s_mov_b64 s[34:35], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB145_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB145_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow5
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB145_6
@@ -24344,10 +24473,10 @@ define amdgpu_gfx void @flat_atomic_udec_wrap_i64_noret_scalar(ptr inreg %ptr, i
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN2-NEXT:    s_mov_b64 s[34:35], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB145_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB145_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow5
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB145_6
@@ -24413,10 +24542,10 @@ define amdgpu_gfx void @flat_atomic_udec_wrap_i64_noret_scalar(ptr inreg %ptr, i
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN3-NEXT:    s_mov_b64 s[34:35], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB145_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB145_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow5
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB145_6
@@ -24483,10 +24612,10 @@ define amdgpu_gfx void @flat_atomic_udec_wrap_i64_noret_offset_scalar(ptr inreg
 ; GCN1-NEXT:    s_addc_u32 s37, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s37, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN1-NEXT:    s_mov_b64 s[34:35], -1
-; GCN1-NEXT:    s_cbranch_vccnz .LBB146_3
+; GCN1-NEXT:    s_cbranch_scc1 .LBB146_3
 ; GCN1-NEXT:  ; %bb.1: ; %Flow5
 ; GCN1-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN1-NEXT:    s_cbranch_vccnz .LBB146_6
@@ -24557,10 +24686,10 @@ define amdgpu_gfx void @flat_atomic_udec_wrap_i64_noret_offset_scalar(ptr inreg
 ; GCN2-NEXT:    s_addc_u32 s37, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s37, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN2-NEXT:    s_mov_b64 s[34:35], -1
-; GCN2-NEXT:    s_cbranch_vccnz .LBB146_3
+; GCN2-NEXT:    s_cbranch_scc1 .LBB146_3
 ; GCN2-NEXT:  ; %bb.1: ; %Flow5
 ; GCN2-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN2-NEXT:    s_cbranch_vccnz .LBB146_6
@@ -24628,10 +24757,10 @@ define amdgpu_gfx void @flat_atomic_udec_wrap_i64_noret_offset_scalar(ptr inreg
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s37, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s37, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
 ; GCN3-NEXT:    s_mov_b64 s[34:35], -1
-; GCN3-NEXT:    s_cbranch_vccnz .LBB146_3
+; GCN3-NEXT:    s_cbranch_scc1 .LBB146_3
 ; GCN3-NEXT:  ; %bb.1: ; %Flow5
 ; GCN3-NEXT:    s_and_b64 vcc, exec, s[34:35]
 ; GCN3-NEXT:    s_cbranch_vccnz .LBB146_6
@@ -24697,9 +24826,9 @@ define amdgpu_gfx i64 @flat_atomic_udec_wrap_i64_ret_scalar(ptr inreg %ptr, i64
 ; GCN1-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB147_4
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB147_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s34, s4, 4
 ; GCN1-NEXT:    s_addc_u32 s35, s5, 0
@@ -24768,9 +24897,9 @@ define amdgpu_gfx i64 @flat_atomic_udec_wrap_i64_ret_scalar(ptr inreg %ptr, i64
 ; GCN2-NEXT:    s_load_dword s34, s[34:35], 0x0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s5, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB147_4
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB147_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s34, s4, 4
 ; GCN2-NEXT:    s_addc_u32 s35, s5, 0
@@ -24836,9 +24965,9 @@ define amdgpu_gfx i64 @flat_atomic_udec_wrap_i64_ret_scalar(ptr inreg %ptr, i64
 ; GCN3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_cmp_eq_u32 s5, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB147_4
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB147_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s4
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s5
@@ -24905,9 +25034,9 @@ define amdgpu_gfx i64 @flat_atomic_udec_wrap_i64_ret_offset_scalar(ptr inreg %ou
 ; GCN1-NEXT:    s_addc_u32 s37, s5, 0
 ; GCN1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN1-NEXT:    s_cmp_eq_u32 s37, s34
-; GCN1-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN1-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN1-NEXT:    s_cbranch_vccz .LBB148_4
+; GCN1-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN1-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN1-NEXT:    s_cbranch_scc0 .LBB148_4
 ; GCN1-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN1-NEXT:    s_add_u32 s34, s36, 4
 ; GCN1-NEXT:    s_addc_u32 s35, s37, 0
@@ -24978,9 +25107,9 @@ define amdgpu_gfx i64 @flat_atomic_udec_wrap_i64_ret_offset_scalar(ptr inreg %ou
 ; GCN2-NEXT:    s_addc_u32 s37, s5, 0
 ; GCN2-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN2-NEXT:    s_cmp_eq_u32 s37, s34
-; GCN2-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN2-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN2-NEXT:    s_cbranch_vccz .LBB148_4
+; GCN2-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN2-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN2-NEXT:    s_cbranch_scc0 .LBB148_4
 ; GCN2-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN2-NEXT:    s_add_u32 s34, s36, 4
 ; GCN2-NEXT:    s_addc_u32 s35, s37, 0
@@ -25048,9 +25177,9 @@ define amdgpu_gfx i64 @flat_atomic_udec_wrap_i64_ret_offset_scalar(ptr inreg %ou
 ; GCN3-NEXT:    s_mov_b64 s[34:35], src_private_base
 ; GCN3-NEXT:    s_addc_u32 s37, s5, 0
 ; GCN3-NEXT:    s_cmp_eq_u32 s37, s35
-; GCN3-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GCN3-NEXT:    s_andn2_b64 vcc, exec, s[34:35]
-; GCN3-NEXT:    s_cbranch_vccz .LBB148_4
+; GCN3-NEXT:    s_cselect_b32 s34, 1, 0
+; GCN3-NEXT:    s_cmp_lg_u32 s34, 1
+; GCN3-NEXT:    s_cbranch_scc0 .LBB148_4
 ; GCN3-NEXT:  ; %bb.1: ; %atomicrmw.global
 ; GCN3-NEXT:    v_mov_b32_e32 v2, s36
 ; GCN3-NEXT:    v_mov_b32_e32 v3, s37

diff  --git a/llvm/test/CodeGen/AMDGPU/float-sopc-vopc.ll b/llvm/test/CodeGen/AMDGPU/float-sopc-vopc.ll
index 0f21ade5b0482..00b29819df8fd 100644
--- a/llvm/test/CodeGen/AMDGPU/float-sopc-vopc.ll
+++ b/llvm/test/CodeGen/AMDGPU/float-sopc-vopc.ll
@@ -8,10 +8,9 @@ define amdgpu_vs void @f32_olt(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1150-LABEL: f32_olt:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_lt_f32 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -28,10 +27,9 @@ define amdgpu_vs void @f32_olt(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1200-LABEL: f32_olt:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_lt_f32 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -55,10 +53,9 @@ define amdgpu_vs void @f32_oeq(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1150-LABEL: f32_oeq:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_eq_f32 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -75,10 +72,9 @@ define amdgpu_vs void @f32_oeq(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1200-LABEL: f32_oeq:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_eq_f32 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -102,10 +98,9 @@ define amdgpu_vs void @f32_ole(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1150-LABEL: f32_ole:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_le_f32 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -122,10 +117,9 @@ define amdgpu_vs void @f32_ole(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1200-LABEL: f32_ole:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_le_f32 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -149,10 +143,9 @@ define amdgpu_vs void @f32_ogt(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1150-LABEL: f32_ogt:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_gt_f32 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -169,10 +162,9 @@ define amdgpu_vs void @f32_ogt(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1200-LABEL: f32_ogt:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_gt_f32 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -196,10 +188,9 @@ define amdgpu_vs void @f32_one(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1150-LABEL: f32_one:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_lg_f32 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -216,10 +207,9 @@ define amdgpu_vs void @f32_one(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1200-LABEL: f32_one:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_lg_f32 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -243,10 +233,9 @@ define amdgpu_vs void @f32_oge(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1150-LABEL: f32_oge:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_ge_f32 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -263,10 +252,9 @@ define amdgpu_vs void @f32_oge(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1200-LABEL: f32_oge:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_ge_f32 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -290,10 +278,9 @@ define amdgpu_vs void @f32_ord(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1150-LABEL: f32_ord:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_o_f32 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -310,10 +297,9 @@ define amdgpu_vs void @f32_ord(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1200-LABEL: f32_ord:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_o_f32 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -337,10 +323,9 @@ define amdgpu_vs void @f32_uno(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1150-LABEL: f32_uno:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_u_f32 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -357,10 +342,9 @@ define amdgpu_vs void @f32_uno(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1200-LABEL: f32_uno:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_u_f32 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -384,10 +368,9 @@ define amdgpu_vs void @f32_ult(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1150-LABEL: f32_ult:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_nge_f32 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -404,10 +387,9 @@ define amdgpu_vs void @f32_ult(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1200-LABEL: f32_ult:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_nge_f32 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -431,10 +413,9 @@ define amdgpu_vs void @f32_ueq(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1150-LABEL: f32_ueq:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_nlg_f32 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -451,10 +432,9 @@ define amdgpu_vs void @f32_ueq(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1200-LABEL: f32_ueq:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_nlg_f32 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -478,10 +458,9 @@ define amdgpu_vs void @f32_ule(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1150-LABEL: f32_ule:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_ngt_f32 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -498,10 +477,9 @@ define amdgpu_vs void @f32_ule(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1200-LABEL: f32_ule:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_ngt_f32 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -525,10 +503,9 @@ define amdgpu_vs void @f32_ugt(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1150-LABEL: f32_ugt:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_nle_f32 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -545,10 +522,9 @@ define amdgpu_vs void @f32_ugt(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1200-LABEL: f32_ugt:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_nle_f32 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -572,10 +548,9 @@ define amdgpu_vs void @f32_une(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1150-LABEL: f32_une:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_neq_f32 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -592,10 +567,9 @@ define amdgpu_vs void @f32_une(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1200-LABEL: f32_une:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_neq_f32 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -619,10 +593,9 @@ define amdgpu_vs void @f32_uge(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1150-LABEL: f32_uge:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_nlt_f32 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -639,10 +612,9 @@ define amdgpu_vs void @f32_uge(ptr addrspace(1) inreg %out, float inreg %a, floa
 ; SDAG-GFX1200-LABEL: f32_uge:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_nlt_f32 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -666,10 +638,9 @@ define amdgpu_vs void @f16_olt(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1150-LABEL: f16_olt:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_lt_f16 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -686,10 +657,9 @@ define amdgpu_vs void @f16_olt(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1200-LABEL: f16_olt:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_lt_f16 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -713,10 +683,9 @@ define amdgpu_vs void @f16_oeq(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1150-LABEL: f16_oeq:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_eq_f16 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -733,10 +702,9 @@ define amdgpu_vs void @f16_oeq(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1200-LABEL: f16_oeq:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_eq_f16 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -760,10 +728,9 @@ define amdgpu_vs void @f16_ole(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1150-LABEL: f16_ole:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_le_f16 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -780,10 +747,9 @@ define amdgpu_vs void @f16_ole(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1200-LABEL: f16_ole:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_le_f16 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -807,10 +773,9 @@ define amdgpu_vs void @f16_ogt(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1150-LABEL: f16_ogt:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_gt_f16 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -827,10 +792,9 @@ define amdgpu_vs void @f16_ogt(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1200-LABEL: f16_ogt:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_gt_f16 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -854,10 +818,9 @@ define amdgpu_vs void @f16_one(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1150-LABEL: f16_one:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_lg_f16 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -874,10 +837,9 @@ define amdgpu_vs void @f16_one(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1200-LABEL: f16_one:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_lg_f16 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -901,10 +863,9 @@ define amdgpu_vs void @f16_oge(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1150-LABEL: f16_oge:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_ge_f16 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -921,10 +882,9 @@ define amdgpu_vs void @f16_oge(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1200-LABEL: f16_oge:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_ge_f16 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -948,10 +908,9 @@ define amdgpu_vs void @f16_ord(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1150-LABEL: f16_ord:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_o_f16 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -968,10 +927,9 @@ define amdgpu_vs void @f16_ord(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1200-LABEL: f16_ord:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_o_f16 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -995,10 +953,9 @@ define amdgpu_vs void @f16_uno(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1150-LABEL: f16_uno:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_u_f16 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -1015,10 +972,9 @@ define amdgpu_vs void @f16_uno(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1200-LABEL: f16_uno:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_u_f16 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -1042,10 +998,9 @@ define amdgpu_vs void @f16_ult(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1150-LABEL: f16_ult:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_nge_f16 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -1062,10 +1017,9 @@ define amdgpu_vs void @f16_ult(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1200-LABEL: f16_ult:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_nge_f16 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -1089,10 +1043,9 @@ define amdgpu_vs void @f16_ueq(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1150-LABEL: f16_ueq:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_nlg_f16 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -1109,10 +1062,9 @@ define amdgpu_vs void @f16_ueq(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1200-LABEL: f16_ueq:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_nlg_f16 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -1136,10 +1088,9 @@ define amdgpu_vs void @f16_ule(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1150-LABEL: f16_ule:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_ngt_f16 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -1156,10 +1107,9 @@ define amdgpu_vs void @f16_ule(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1200-LABEL: f16_ule:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_ngt_f16 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -1183,10 +1133,9 @@ define amdgpu_vs void @f16_ugt(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1150-LABEL: f16_ugt:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_nle_f16 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -1203,10 +1152,9 @@ define amdgpu_vs void @f16_ugt(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1200-LABEL: f16_ugt:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_nle_f16 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -1230,10 +1178,9 @@ define amdgpu_vs void @f16_une(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1150-LABEL: f16_une:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_neq_f16 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -1250,10 +1197,9 @@ define amdgpu_vs void @f16_une(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1200-LABEL: f16_une:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_neq_f16 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -1277,10 +1223,9 @@ define amdgpu_vs void @f16_uge(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1150-LABEL: f16_uge:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_cmp_nlt_f16 s2, s3
-; SDAG-GFX1150-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1150-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1150-NEXT:    s_endpgm
 ;
@@ -1297,10 +1242,9 @@ define amdgpu_vs void @f16_uge(ptr addrspace(1) inreg %out, half inreg %a, half
 ; SDAG-GFX1200-LABEL: f16_uge:
 ; SDAG-GFX1200:       ; %bb.0: ; %entry
 ; SDAG-GFX1200-NEXT:    s_cmp_nlt_f16 s2, s3
-; SDAG-GFX1200-NEXT:    v_mov_b32_e32 v0, 0
 ; SDAG-GFX1200-NEXT:    s_cselect_b32 s2, -1, 0
 ; SDAG-GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; SDAG-GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; SDAG-GFX1200-NEXT:    s_endpgm
 ;
@@ -1330,19 +1274,19 @@ define <8 x i1> @vector_f32_ole() {
 ; SDAG-GFX1150-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; SDAG-GFX1150-NEXT:    global_load_b128 v[4:7], v[4:5], off
 ; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(1)
-; SDAG-GFX1150-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v0
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v1
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v2
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v3
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(0)
 ; SDAG-GFX1150-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v4
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v2
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v5
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v1
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v0
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v6
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v7
@@ -1403,15 +1347,6 @@ define <8 x i1> @vector_f32_ole() {
 ; SDAG-GFX1200-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; SDAG-GFX1200-NEXT:    global_load_b128 v[4:7], v[4:5], off
 ; SDAG-GFX1200-NEXT:    s_wait_loadcnt 0x1
-; SDAG-GFX1200-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v0
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v1
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v2
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v3
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc_lo
@@ -1419,9 +1354,18 @@ define <8 x i1> @vector_f32_ole() {
 ; SDAG-GFX1200-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v4
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v2
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v5
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v1
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v0
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_ge_f32_e32 vcc_lo, 0, v6
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc_lo
@@ -1490,10 +1434,10 @@ define <4 x i1> @vector_f32_ogt() {
 ; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
 ; SDAG-GFX1150-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(0)
-; SDAG-GFX1150-NEXT:    v_cmp_lt_f32_e32 vcc_lo, 0, v0
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_lt_f32_e32 vcc_lo, 0, v1
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_lt_f32_e32 vcc_lo, 0, v0
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_lt_f32_e32 vcc_lo, 0, v2
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_lt_f32_e32 vcc_lo, 0, v3
@@ -1533,12 +1477,12 @@ define <4 x i1> @vector_f32_ogt() {
 ; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
 ; SDAG-GFX1200-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; SDAG-GFX1200-NEXT:    s_wait_loadcnt 0x0
-; SDAG-GFX1200-NEXT:    v_cmp_lt_f32_e32 vcc_lo, 0, v0
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_lt_f32_e32 vcc_lo, 0, v1
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_lt_f32_e32 vcc_lo, 0, v0
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_lt_f32_e32 vcc_lo, 0, v2
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
@@ -1584,95 +1528,97 @@ define <32 x i1> @vector_f32_ueq() {
 ; SDAG-GFX1150-LABEL: vector_f32_ueq:
 ; SDAG-GFX1150:       ; %bb.0: ; %entry
 ; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
-; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v4, 16 :: v_dual_mov_b32 v5, 0
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 48 :: v_dual_mov_b32 v1, 0
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v4, 64 :: v_dual_mov_b32 v5, 0
 ; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v8, 32 :: v_dual_mov_b32 v9, 0
-; SDAG-GFX1150-NEXT:    global_load_b128 v[0:3], v[0:1], off
-; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v12, 48 :: v_dual_mov_b32 v13, 0
 ; SDAG-GFX1150-NEXT:    s_clause 0x1
+; SDAG-GFX1150-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; SDAG-GFX1150-NEXT:    global_load_b128 v[4:7], v[4:5], off
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v12, 0x50 :: v_dual_mov_b32 v13, 0
+; SDAG-GFX1150-NEXT:    s_clause 0x1
 ; SDAG-GFX1150-NEXT:    global_load_b128 v[8:11], v[8:9], off
-; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v16, 64 :: v_dual_mov_b32 v17, 0
-; SDAG-GFX1150-NEXT:    global_load_b128 v[12:15], v[12:13], off
-; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v20, 0x50 :: v_dual_mov_b32 v21, 0
-; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v24, 0x60 :: v_dual_mov_b32 v25, 0
-; SDAG-GFX1150-NEXT:    global_load_b128 v[16:19], v[16:17], off
-; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v28, 0x70 :: v_dual_mov_b32 v29, 0
-; SDAG-GFX1150-NEXT:    s_clause 0x2
-; SDAG-GFX1150-NEXT:    global_load_b128 v[20:23], v[20:21], off
-; SDAG-GFX1150-NEXT:    global_load_b128 v[24:27], v[24:25], off
-; SDAG-GFX1150-NEXT:    global_load_b128 v[28:31], v[28:29], off
+; SDAG-GFX1150-NEXT:    global_load_b128 v[20:23], v[12:13], off
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v12, 16 :: v_dual_mov_b32 v13, 0
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v14, 0x60 :: v_dual_mov_b32 v15, 0
+; SDAG-GFX1150-NEXT:    s_clause 0x1
+; SDAG-GFX1150-NEXT:    global_load_b128 v[27:30], v[12:13], off
+; SDAG-GFX1150-NEXT:    global_load_b128 v[31:34], v[14:15], off
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v12, 0 :: v_dual_mov_b32 v13, 0
+; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v14, 0x70 :: v_dual_mov_b32 v15, 0
+; SDAG-GFX1150-NEXT:    s_clause 0x1
+; SDAG-GFX1150-NEXT:    global_load_b128 v[35:38], v[12:13], off
+; SDAG-GFX1150-NEXT:    global_load_b128 v[48:51], v[14:15], off
 ; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(7)
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v0
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v1
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v2
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v3
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(6)
 ; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v4
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v16, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v2
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v5
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v17, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v1
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v6
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v18, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v0
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v7
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v19, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(5)
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v8
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v9
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v10
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v11
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(4)
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v12
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v13
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v14
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v15
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(3)
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v16
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v16, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v17
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v17, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v18
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v18, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v19
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v19, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(2)
 ; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v20
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v20, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v10
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v21
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v21, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v9
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v22
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v22, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v8
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v23
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v23, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(1)
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v24
+; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(3)
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v30
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(2)
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v31
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v24, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v25
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v29
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v32
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v25, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v26
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v28
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v33
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v26, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v27
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v34
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v27, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(1)
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v38
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(0)
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v28
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v48
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v28, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v29
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v37
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v49
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v29, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v30
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v36
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v35
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v50
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v30, 0, 1, vcc_lo
-; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v31
+; SDAG-GFX1150-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v51
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v31, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1827,126 +1773,128 @@ define <32 x i1> @vector_f32_ueq() {
 ; SDAG-GFX1200-NEXT:    s_wait_samplecnt 0x0
 ; SDAG-GFX1200-NEXT:    s_wait_bvhcnt 0x0
 ; SDAG-GFX1200-NEXT:    s_wait_kmcnt 0x0
-; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
-; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v4, 16 :: v_dual_mov_b32 v5, 0
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 48 :: v_dual_mov_b32 v1, 0
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v4, 64 :: v_dual_mov_b32 v5, 0
 ; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v8, 32 :: v_dual_mov_b32 v9, 0
-; SDAG-GFX1200-NEXT:    global_load_b128 v[0:3], v[0:1], off
-; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v12, 48 :: v_dual_mov_b32 v13, 0
 ; SDAG-GFX1200-NEXT:    s_clause 0x1
+; SDAG-GFX1200-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; SDAG-GFX1200-NEXT:    global_load_b128 v[4:7], v[4:5], off
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v12, 0x50 :: v_dual_mov_b32 v13, 0
+; SDAG-GFX1200-NEXT:    s_clause 0x1
 ; SDAG-GFX1200-NEXT:    global_load_b128 v[8:11], v[8:9], off
-; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v16, 64 :: v_dual_mov_b32 v17, 0
-; SDAG-GFX1200-NEXT:    global_load_b128 v[12:15], v[12:13], off
-; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v20, 0x50 :: v_dual_mov_b32 v21, 0
-; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v24, 0x60 :: v_dual_mov_b32 v25, 0
-; SDAG-GFX1200-NEXT:    global_load_b128 v[16:19], v[16:17], off
-; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v28, 0x70 :: v_dual_mov_b32 v29, 0
-; SDAG-GFX1200-NEXT:    s_clause 0x2
-; SDAG-GFX1200-NEXT:    global_load_b128 v[20:23], v[20:21], off
-; SDAG-GFX1200-NEXT:    global_load_b128 v[24:27], v[24:25], off
-; SDAG-GFX1200-NEXT:    global_load_b128 v[28:31], v[28:29], off
+; SDAG-GFX1200-NEXT:    global_load_b128 v[20:23], v[12:13], off
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v12, 16 :: v_dual_mov_b32 v13, 0
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v14, 0x60 :: v_dual_mov_b32 v15, 0
+; SDAG-GFX1200-NEXT:    s_clause 0x1
+; SDAG-GFX1200-NEXT:    global_load_b128 v[27:30], v[12:13], off
+; SDAG-GFX1200-NEXT:    global_load_b128 v[31:34], v[14:15], off
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v12, 0 :: v_dual_mov_b32 v13, 0
+; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v14, 0x70 :: v_dual_mov_b32 v15, 0
+; SDAG-GFX1200-NEXT:    s_clause 0x1
+; SDAG-GFX1200-NEXT:    global_load_b128 v[35:38], v[12:13], off
+; SDAG-GFX1200-NEXT:    global_load_b128 v[48:51], v[14:15], off
 ; SDAG-GFX1200-NEXT:    s_wait_loadcnt 0x7
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v0
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v1
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v2
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v3
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    s_wait_loadcnt 0x6
 ; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v4
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v16, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v2
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v5
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v17, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v1
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v6
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v18, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v0
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v7
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v19, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    s_wait_loadcnt 0x5
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v8
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v9
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v10
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v11
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    s_wait_loadcnt 0x4
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v12
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v13
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v14
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v15
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    s_wait_loadcnt 0x3
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v16
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v16, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v17
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v17, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v18
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v18, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v19
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v19, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    s_wait_loadcnt 0x2
 ; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v20
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v20, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v10
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v21
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v21, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v9
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v22
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v22, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v8
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v23
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v23, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    s_wait_loadcnt 0x1
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v24
+; SDAG-GFX1200-NEXT:    s_wait_loadcnt 0x3
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v30
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    s_wait_loadcnt 0x2
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v31
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v24, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v25
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v29
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v32
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v25, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v26
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v28
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v33
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v26, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v27
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v34
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v27, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    s_wait_loadcnt 0x1
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v38
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    s_wait_loadcnt 0x0
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v28
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v48
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v28, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v29
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v37
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v49
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v29, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v30
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v36
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v35
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v50
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v30, 0, 1, vcc_lo
-; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v31
+; SDAG-GFX1200-NEXT:    v_cmp_nlg_f32_e32 vcc_lo, 0, v51
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v31, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    s_setpc_b64 s[30:31]
@@ -2123,10 +2071,10 @@ define <4 x i1> @vector_f32_ugt() {
 ; SDAG-GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
 ; SDAG-GFX1150-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; SDAG-GFX1150-NEXT:    s_waitcnt vmcnt(0)
-; SDAG-GFX1150-NEXT:    v_cmp_nge_f32_e32 vcc_lo, 0, v0
-; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_nge_f32_e32 vcc_lo, 0, v1
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc_lo
+; SDAG-GFX1150-NEXT:    v_cmp_nge_f32_e32 vcc_lo, 0, v0
+; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_nge_f32_e32 vcc_lo, 0, v2
 ; SDAG-GFX1150-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
 ; SDAG-GFX1150-NEXT:    v_cmp_nge_f32_e32 vcc_lo, 0, v3
@@ -2166,12 +2114,12 @@ define <4 x i1> @vector_f32_ugt() {
 ; SDAG-GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
 ; SDAG-GFX1200-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; SDAG-GFX1200-NEXT:    s_wait_loadcnt 0x0
-; SDAG-GFX1200-NEXT:    v_cmp_nge_f32_e32 vcc_lo, 0, v0
-; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_nge_f32_e32 vcc_lo, 0, v1
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc_lo
+; SDAG-GFX1200-NEXT:    v_cmp_nge_f32_e32 vcc_lo, 0, v0
+; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
+; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
 ; SDAG-GFX1200-NEXT:    v_cmp_nge_f32_e32 vcc_lo, 0, v2
 ; SDAG-GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; SDAG-GFX1200-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo

diff  --git a/llvm/test/CodeGen/AMDGPU/fneg-modifier-casting.ll b/llvm/test/CodeGen/AMDGPU/fneg-modifier-casting.ll
index 64431cb31ea6e..68e66ba0ed1fb 100644
--- a/llvm/test/CodeGen/AMDGPU/fneg-modifier-casting.ll
+++ b/llvm/test/CodeGen/AMDGPU/fneg-modifier-casting.ll
@@ -1679,10 +1679,13 @@ define amdgpu_kernel void @fnge_select_f32_multi_use_regression(float %.i2369) {
 ; GCN-NEXT:    s_load_dword s0, s[8:9], 0x0
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    v_cmp_nlt_f32_e64 s[0:1], s0, 0
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_cmp_lt_f32_e32 vcc, 0, v0
-; GCN-NEXT:    v_cndmask_b32_e32 v1, 0, v0, vcc
-; GCN-NEXT:    v_mul_f32_e64 v0, -v0, v1
+; GCN-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    v_cmp_gt_f32_e64 s[0:1], s2, 0
+; GCN-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s0, s2, 0
+; GCN-NEXT:    v_mov_b32_e32 v0, s0
+; GCN-NEXT:    v_mul_f32_e64 v0, -s2, v0
 ; GCN-NEXT:    v_cmp_le_f32_e32 vcc, 0, v0
 ; GCN-NEXT:    s_and_b64 vcc, exec, vcc
 ; GCN-NEXT:    s_endpgm
@@ -1692,12 +1695,14 @@ define amdgpu_kernel void @fnge_select_f32_multi_use_regression(float %.i2369) {
 ; GFX11-NEXT:    s_load_b32 s0, s[4:5], 0x0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_nlt_f32_e64 s0, s0, 0
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; GFX11-NEXT:    v_cmp_lt_f32_e32 vcc_lo, 0, v0
-; GFX11-NEXT:    v_cndmask_b32_e32 v1, 0, v0, vcc_lo
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX11-NEXT:    v_mul_f32_e64 v0, -v0, v1
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    v_cmp_gt_f32_e64 s1, s0, 0
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, s0, 0
+; GFX11-NEXT:    v_mul_f32_e64 v0, -s0, s1
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_cmp_le_f32_e32 vcc_lo, 0, v0
 ; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, vcc_lo
 ; GFX11-NEXT:    s_endpgm

diff  --git a/llvm/test/CodeGen/AMDGPU/fp-classify.ll b/llvm/test/CodeGen/AMDGPU/fp-classify.ll
index 21234808b0ab6..8240949e948eb 100644
--- a/llvm/test/CodeGen/AMDGPU/fp-classify.ll
+++ b/llvm/test/CodeGen/AMDGPU/fp-classify.ll
@@ -17,7 +17,9 @@ define amdgpu_kernel void @test_isinf_pattern(ptr addrspace(1) nocapture %out, f
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_cmp_class_f32_e32 vcc, s6, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -28,9 +30,11 @@ define amdgpu_kernel void @test_isinf_pattern(ptr addrspace(1) nocapture %out, f
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x204
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_class_f32_e32 vcc, s2, v0
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    flat_store_dword v[0:1], v2
 ; VI-NEXT:    s_endpgm
 ;
@@ -39,11 +43,12 @@ define amdgpu_kernel void @test_isinf_pattern(ptr addrspace(1) nocapture %out, f
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_class_f32_e64 s2, s2, 0x204
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %fabs = tail call float @llvm.fabs.f32(float %x) #1
@@ -63,7 +68,9 @@ define amdgpu_kernel void @test_not_isinf_pattern_0(ptr addrspace(1) nocapture %
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_cmp_nlg_f32_e64 s[4:5], |s6|, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -74,9 +81,11 @@ define amdgpu_kernel void @test_not_isinf_pattern_0(ptr addrspace(1) nocapture %
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x7f800000
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_nlg_f32_e64 s[2:3], |s2|, v0
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[2:3]
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    flat_store_dword v[0:1], v2
 ; VI-NEXT:    s_endpgm
 ;
@@ -85,11 +94,12 @@ define amdgpu_kernel void @test_not_isinf_pattern_0(ptr addrspace(1) nocapture %
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_nlg_f32_e64 s2, 0x7f800000, |s2|
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %fabs = tail call float @llvm.fabs.f32(float %x) #1
@@ -144,7 +154,9 @@ define amdgpu_kernel void @test_isfinite_pattern_0(ptr addrspace(1) nocapture %o
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_cmp_class_f32_e32 vcc, s6, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -155,9 +167,11 @@ define amdgpu_kernel void @test_isfinite_pattern_0(ptr addrspace(1) nocapture %o
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x1f8
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_class_f32_e32 vcc, s2, v0
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    flat_store_dword v[0:1], v2
 ; VI-NEXT:    s_endpgm
 ;
@@ -166,11 +180,12 @@ define amdgpu_kernel void @test_isfinite_pattern_0(ptr addrspace(1) nocapture %o
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_class_f32_e64 s2, s2, 0x1f8
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %ord = fcmp ord float %x, 0.000000e+00
@@ -192,7 +207,9 @@ define amdgpu_kernel void @test_isfinite_pattern_1(ptr addrspace(1) nocapture %o
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_cmp_class_f32_e32 vcc, s6, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -203,9 +220,11 @@ define amdgpu_kernel void @test_isfinite_pattern_1(ptr addrspace(1) nocapture %o
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x1f8
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_class_f32_e32 vcc, s2, v0
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    flat_store_dword v[0:1], v2
 ; VI-NEXT:    s_endpgm
 ;
@@ -214,11 +233,12 @@ define amdgpu_kernel void @test_isfinite_pattern_1(ptr addrspace(1) nocapture %o
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_class_f32_e64 s2, s2, 0x1f8
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %x.fabs = tail call float @llvm.fabs.f32(float %x) #3
@@ -238,7 +258,9 @@ define amdgpu_kernel void @test_isfinite_not_pattern_0(ptr addrspace(1) nocaptur
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_cmp_o_f32_e64 s[4:5], s6, s6
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -248,9 +270,11 @@ define amdgpu_kernel void @test_isfinite_not_pattern_0(ptr addrspace(1) nocaptur
 ; VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_o_f32_e64 s[2:3], s2, s2
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[2:3]
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    flat_store_dword v[0:1], v2
 ; VI-NEXT:    s_endpgm
 ;
@@ -259,11 +283,12 @@ define amdgpu_kernel void @test_isfinite_not_pattern_0(ptr addrspace(1) nocaptur
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_o_f32_e64 s2, s2, s2
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %ord = fcmp ord float %x, 0.000000e+00
@@ -288,7 +313,9 @@ define amdgpu_kernel void @test_isfinite_not_pattern_1(ptr addrspace(1) nocaptur
 ; SI-NEXT:    v_cmp_o_f32_e64 s[4:5], s6, s6
 ; SI-NEXT:    v_cmp_neq_f32_e32 vcc, s6, v0
 ; SI-NEXT:    s_and_b64 s[4:5], s[4:5], vcc
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -301,9 +328,11 @@ define amdgpu_kernel void @test_isfinite_not_pattern_1(ptr addrspace(1) nocaptur
 ; VI-NEXT:    v_cmp_o_f32_e64 s[2:3], s6, s6
 ; VI-NEXT:    v_cmp_neq_f32_e32 vcc, s6, v0
 ; VI-NEXT:    s_and_b64 s[2:3], s[2:3], vcc
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[2:3]
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    flat_store_dword v[0:1], v2
 ; VI-NEXT:    s_endpgm
 ;
@@ -312,13 +341,14 @@ define amdgpu_kernel void @test_isfinite_not_pattern_1(ptr addrspace(1) nocaptur
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_o_f32_e64 s3, s2, s2
 ; GFX11-NEXT:    v_cmp_neq_f32_e64 s2, 0x7f800000, s2
 ; GFX11-NEXT:    s_and_b32 s2, s3, s2
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %ord = fcmp ord float %x, 0.000000e+00
@@ -343,7 +373,9 @@ define amdgpu_kernel void @test_isfinite_not_pattern_2(ptr addrspace(1) nocaptur
 ; SI-NEXT:    v_cmp_o_f32_e64 s[0:1], s2, s2
 ; SI-NEXT:    v_cmp_neq_f32_e64 s[2:3], |s3|, v0
 ; SI-NEXT:    s_and_b64 s[0:1], s[0:1], s[2:3]
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -355,22 +387,25 @@ define amdgpu_kernel void @test_isfinite_not_pattern_2(ptr addrspace(1) nocaptur
 ; VI-NEXT:    v_cmp_o_f32_e64 s[4:5], s2, s2
 ; VI-NEXT:    v_cmp_neq_f32_e64 s[2:3], |s3|, v0
 ; VI-NEXT:    s_and_b64 s[2:3], s[4:5], s[2:3]
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[2:3]
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    flat_store_dword v[0:1], v2
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX11-LABEL: test_isfinite_not_pattern_2:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_o_f32_e64 s2, s2, s2
 ; GFX11-NEXT:    v_cmp_neq_f32_e64 s3, 0x7f800000, |s3|
 ; GFX11-NEXT:    s_and_b32 s2, s2, s3
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %ord = fcmp ord float %x, 0.000000e+00
@@ -395,7 +430,9 @@ define amdgpu_kernel void @test_isfinite_not_pattern_3(ptr addrspace(1) nocaptur
 ; SI-NEXT:    v_cmp_u_f32_e64 s[4:5], s6, s6
 ; SI-NEXT:    v_cmp_neq_f32_e64 s[6:7], |s6|, v0
 ; SI-NEXT:    s_and_b64 s[4:5], s[4:5], s[6:7]
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -408,9 +445,11 @@ define amdgpu_kernel void @test_isfinite_not_pattern_3(ptr addrspace(1) nocaptur
 ; VI-NEXT:    v_cmp_u_f32_e64 s[2:3], s6, s6
 ; VI-NEXT:    v_cmp_neq_f32_e64 s[4:5], |s6|, v0
 ; VI-NEXT:    s_and_b64 s[2:3], s[2:3], s[4:5]
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[2:3]
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    flat_store_dword v[0:1], v2
 ; VI-NEXT:    s_endpgm
 ;
@@ -419,13 +458,14 @@ define amdgpu_kernel void @test_isfinite_not_pattern_3(ptr addrspace(1) nocaptur
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_u_f32_e64 s3, s2, s2
 ; GFX11-NEXT:    v_cmp_neq_f32_e64 s2, 0x7f800000, |s2|
 ; GFX11-NEXT:    s_and_b32 s2, s3, s2
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %ord = fcmp uno float %x, 0.000000e+00
@@ -447,7 +487,9 @@ define amdgpu_kernel void @test_isfinite_pattern_4(ptr addrspace(1) nocapture %o
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_cmp_class_f32_e32 vcc, s6, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -458,9 +500,11 @@ define amdgpu_kernel void @test_isfinite_pattern_4(ptr addrspace(1) nocapture %o
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x1f8
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_class_f32_e32 vcc, s2, v0
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    flat_store_dword v[0:1], v2
 ; VI-NEXT:    s_endpgm
 ;
@@ -469,11 +513,12 @@ define amdgpu_kernel void @test_isfinite_pattern_4(ptr addrspace(1) nocapture %o
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_class_f32_e64 s2, s2, 0x1f8
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %ord = fcmp ord float %x, 0.000000e+00
@@ -495,7 +540,9 @@ define amdgpu_kernel void @test_isfinite_pattern_4_commute_and(ptr addrspace(1)
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_cmp_class_f32_e32 vcc, s6, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -506,9 +553,11 @@ define amdgpu_kernel void @test_isfinite_pattern_4_commute_and(ptr addrspace(1)
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x1f8
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_class_f32_e32 vcc, s2, v0
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    flat_store_dword v[0:1], v2
 ; VI-NEXT:    s_endpgm
 ;
@@ -517,11 +566,12 @@ define amdgpu_kernel void @test_isfinite_pattern_4_commute_and(ptr addrspace(1)
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_class_f32_e64 s2, s2, 0x1f8
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %ord = fcmp ord float %x, 0.000000e+00
@@ -547,7 +597,9 @@ define amdgpu_kernel void @test_not_isfinite_pattern_4_wrong_ord_test(ptr addrsp
 ; SI-NEXT:    v_mov_b32_e32 v0, 0x1f8
 ; SI-NEXT:    v_cmp_class_f32_e64 s[0:1], s1, v0
 ; SI-NEXT:    s_and_b64 s[0:1], vcc, s[0:1]
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -562,9 +614,11 @@ define amdgpu_kernel void @test_not_isfinite_pattern_4_wrong_ord_test(ptr addrsp
 ; VI-NEXT:    v_cmp_class_f32_e32 vcc, s1, v0
 ; VI-NEXT:    v_cmp_o_f32_e64 s[0:1], s1, v1
 ; VI-NEXT:    s_and_b64 s[0:1], s[0:1], vcc
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s2
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[0:1]
 ; VI-NEXT:    v_mov_b32_e32 v1, s3
+; VI-NEXT:    v_mov_b32_e32 v2, s0
 ; VI-NEXT:    flat_store_dword v[0:1], v2
 ; VI-NEXT:    s_endpgm
 ;
@@ -574,13 +628,14 @@ define amdgpu_kernel void @test_not_isfinite_pattern_4_wrong_ord_test(ptr addrsp
 ; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-NEXT:    s_load_b32 s3, s[4:5], 0x50
 ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_o_f32_e64 s3, s2, s3
 ; GFX11-NEXT:    v_cmp_class_f32_e64 s2, s2, 0x1f8
 ; GFX11-NEXT:    s_and_b32 s2, s3, s2
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %ord = fcmp ord float %x, %y
@@ -603,7 +658,9 @@ define amdgpu_kernel void @test_isinf_pattern_f16(ptr addrspace(1) nocapture %ou
 ; SI-NEXT:    v_cvt_f32_f16_e64 v0, |s2|
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    v_cmp_eq_f32_e32 vcc, s4, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -614,9 +671,11 @@ define amdgpu_kernel void @test_isinf_pattern_f16(ptr addrspace(1) nocapture %ou
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x204
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_class_f16_e32 vcc, s2, v0
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    flat_store_dword v[0:1], v2
 ; VI-NEXT:    s_endpgm
 ;
@@ -625,11 +684,12 @@ define amdgpu_kernel void @test_isinf_pattern_f16(ptr addrspace(1) nocapture %ou
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_class_f16_e64 s2, s2, 0x204
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %fabs = tail call half @llvm.fabs.f16(half %x) #1
@@ -653,7 +713,9 @@ define amdgpu_kernel void @test_isfinite_pattern_0_f16(ptr addrspace(1) nocaptur
 ; SI-NEXT:    v_cmp_o_f32_e32 vcc, v0, v0
 ; SI-NEXT:    v_cmp_neq_f32_e64 s[0:1], s0, v1
 ; SI-NEXT:    s_and_b64 s[0:1], vcc, s[0:1]
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -664,9 +726,11 @@ define amdgpu_kernel void @test_isfinite_pattern_0_f16(ptr addrspace(1) nocaptur
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x1f8
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_class_f16_e32 vcc, s2, v0
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    flat_store_dword v[0:1], v2
 ; VI-NEXT:    s_endpgm
 ;
@@ -675,11 +739,12 @@ define amdgpu_kernel void @test_isfinite_pattern_0_f16(ptr addrspace(1) nocaptur
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_class_f16_e64 s2, s2, 0x1f8
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %ord = fcmp ord half %x, 0.0
@@ -702,7 +767,9 @@ define amdgpu_kernel void @test_isfinite_pattern_4_f16(ptr addrspace(1) nocaptur
 ; SI-NEXT:    v_cvt_f32_f16_e64 v0, |s2|
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    v_cmp_lg_f32_e32 vcc, s4, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -713,9 +780,11 @@ define amdgpu_kernel void @test_isfinite_pattern_4_f16(ptr addrspace(1) nocaptur
 ; VI-NEXT:    v_mov_b32_e32 v0, 0x1f8
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_class_f16_e32 vcc, s2, v0
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    flat_store_dword v[0:1], v2
 ; VI-NEXT:    s_endpgm
 ;
@@ -724,11 +793,12 @@ define amdgpu_kernel void @test_isfinite_pattern_4_f16(ptr addrspace(1) nocaptur
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_class_f16_e64 s2, s2, 0x1f8
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %ord = fcmp ord half %x, 0.0

diff  --git a/llvm/test/CodeGen/AMDGPU/fp_to_sint.ll b/llvm/test/CodeGen/AMDGPU/fp_to_sint.ll
index 6dfe312de4138..1afc36f8b89f4 100644
--- a/llvm/test/CodeGen/AMDGPU/fp_to_sint.ll
+++ b/llvm/test/CodeGen/AMDGPU/fp_to_sint.ll
@@ -1096,7 +1096,9 @@ define amdgpu_kernel void @fp_to_uint_f32_to_i1(ptr addrspace(1) %out, float %in
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_cmp_eq_f32_e64 s[4:5], -1.0, s6
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -1108,7 +1110,9 @@ define amdgpu_kernel void @fp_to_uint_f32_to_i1(ptr addrspace(1) %out, float %in
 ; VI-NEXT:    s_mov_b32 s2, -1
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_eq_f32_e64 s[4:5], -1.0, s6
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -1117,11 +1121,12 @@ define amdgpu_kernel void @fp_to_uint_f32_to_i1(ptr addrspace(1) %out, float %in
 ; GFX11-SDAG-NEXT:    s_clause 0x1
 ; GFX11-SDAG-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-SDAG-NEXT:    v_cmp_eq_f32_e64 s2, -1.0, s2
-; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-SDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-SDAG-NEXT:    global_store_b8 v0, v1, s[0:1]
 ; GFX11-SDAG-NEXT:    s_endpgm
 ;
@@ -1174,7 +1179,9 @@ define amdgpu_kernel void @fp_to_uint_fabs_f32_to_i1(ptr addrspace(1) %out, floa
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_cmp_eq_f32_e64 s[4:5], -1.0, |s6|
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -1186,7 +1193,9 @@ define amdgpu_kernel void @fp_to_uint_fabs_f32_to_i1(ptr addrspace(1) %out, floa
 ; VI-NEXT:    s_mov_b32 s2, -1
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_eq_f32_e64 s[4:5], -1.0, |s6|
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -1195,11 +1204,12 @@ define amdgpu_kernel void @fp_to_uint_fabs_f32_to_i1(ptr addrspace(1) %out, floa
 ; GFX11-SDAG-NEXT:    s_clause 0x1
 ; GFX11-SDAG-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-SDAG-NEXT:    v_cmp_eq_f32_e64 s2, -1.0, |s2|
-; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-SDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-SDAG-NEXT:    global_store_b8 v0, v1, s[0:1]
 ; GFX11-SDAG-NEXT:    s_endpgm
 ;

diff  --git a/llvm/test/CodeGen/AMDGPU/fp_to_uint.ll b/llvm/test/CodeGen/AMDGPU/fp_to_uint.ll
index 7943d3380e8a6..1d6b1d58945e7 100644
--- a/llvm/test/CodeGen/AMDGPU/fp_to_uint.ll
+++ b/llvm/test/CodeGen/AMDGPU/fp_to_uint.ll
@@ -865,7 +865,9 @@ define amdgpu_kernel void @fp_to_uint_f32_to_i1(ptr addrspace(1) %out, float %in
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_cmp_eq_f32_e64 s[4:5], 1.0, s6
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -877,7 +879,9 @@ define amdgpu_kernel void @fp_to_uint_f32_to_i1(ptr addrspace(1) %out, float %in
 ; VI-NEXT:    s_mov_b32 s2, -1
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_eq_f32_e64 s[4:5], 1.0, s6
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -886,11 +890,12 @@ define amdgpu_kernel void @fp_to_uint_f32_to_i1(ptr addrspace(1) %out, float %in
 ; GFX11-SDAG-NEXT:    s_clause 0x1
 ; GFX11-SDAG-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-SDAG-NEXT:    v_cmp_eq_f32_e64 s2, 1.0, s2
-; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-SDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-SDAG-NEXT:    global_store_b8 v0, v1, s[0:1]
 ; GFX11-SDAG-NEXT:    s_endpgm
 ;
@@ -943,7 +948,9 @@ define amdgpu_kernel void @fp_to_uint_fabs_f32_to_i1(ptr addrspace(1) %out, floa
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_cmp_eq_f32_e64 s[4:5], 1.0, |s6|
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -955,7 +962,9 @@ define amdgpu_kernel void @fp_to_uint_fabs_f32_to_i1(ptr addrspace(1) %out, floa
 ; VI-NEXT:    s_mov_b32 s2, -1
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_eq_f32_e64 s[4:5], 1.0, |s6|
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -964,11 +973,12 @@ define amdgpu_kernel void @fp_to_uint_fabs_f32_to_i1(ptr addrspace(1) %out, floa
 ; GFX11-SDAG-NEXT:    s_clause 0x1
 ; GFX11-SDAG-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-SDAG-NEXT:    v_cmp_eq_f32_e64 s2, 1.0, |s2|
-; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-SDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11-SDAG-NEXT:    global_store_b8 v0, v1, s[0:1]
 ; GFX11-SDAG-NEXT:    s_endpgm
 ;

diff  --git a/llvm/test/CodeGen/AMDGPU/fptosi.f16.ll b/llvm/test/CodeGen/AMDGPU/fptosi.f16.ll
index 429732ad6c089..75b32efaabf5e 100644
--- a/llvm/test/CodeGen/AMDGPU/fptosi.f16.ll
+++ b/llvm/test/CodeGen/AMDGPU/fptosi.f16.ll
@@ -590,7 +590,9 @@ define amdgpu_kernel void @fptosi_f16_to_i1(ptr addrspace(1) %out, half %in) {
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0
 ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9
 ; SI-NEXT:    v_cmp_eq_f32_e32 vcc, -1.0, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
@@ -603,7 +605,9 @@ define amdgpu_kernel void @fptosi_f16_to_i1(ptr addrspace(1) %out, half %in) {
 ; VI-NEXT:    s_mov_b32 s2, -1
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_eq_f16_e64 s[4:5], -1.0, s6
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -615,8 +619,10 @@ define amdgpu_kernel void @fptosi_f16_to_i1(ptr addrspace(1) %out, half %in) {
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_cmp_eq_f16_e64 s2, -1.0, s2
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s2
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-TRUE16-NEXT:    buffer_store_b8 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
@@ -629,8 +635,10 @@ define amdgpu_kernel void @fptosi_f16_to_i1(ptr addrspace(1) %out, half %in) {
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_cmp_eq_f16_e64 s2, -1.0, s2
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s2
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-FAKE16-NEXT:    buffer_store_b8 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm

diff  --git a/llvm/test/CodeGen/AMDGPU/fptoui.f16.ll b/llvm/test/CodeGen/AMDGPU/fptoui.f16.ll
index 5b231eabad706..adeefb356d946 100644
--- a/llvm/test/CodeGen/AMDGPU/fptoui.f16.ll
+++ b/llvm/test/CodeGen/AMDGPU/fptoui.f16.ll
@@ -587,7 +587,9 @@ define amdgpu_kernel void @fptoui_f16_to_i1(ptr addrspace(1) %out, half %in) {
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0
 ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9
 ; SI-NEXT:    v_cmp_eq_f32_e32 vcc, 1.0, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
@@ -600,7 +602,9 @@ define amdgpu_kernel void @fptoui_f16_to_i1(ptr addrspace(1) %out, half %in) {
 ; VI-NEXT:    s_mov_b32 s2, -1
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_cmp_eq_f16_e64 s[4:5], 1.0, s6
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; VI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; VI-NEXT:    s_endpgm
 ;
@@ -612,8 +616,10 @@ define amdgpu_kernel void @fptoui_f16_to_i1(ptr addrspace(1) %out, half %in) {
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000
 ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-TRUE16-NEXT:    v_cmp_eq_f16_e64 s2, 1.0, s2
-; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s2
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-TRUE16-NEXT:    buffer_store_b8 v0, off, s[0:3], 0
 ; GFX11-TRUE16-NEXT:    s_endpgm
@@ -626,8 +632,10 @@ define amdgpu_kernel void @fptoui_f16_to_i1(ptr addrspace(1) %out, half %in) {
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000
 ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-FAKE16-NEXT:    v_cmp_eq_f16_e64 s2, 1.0, s2
-; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s2
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-FAKE16-NEXT:    buffer_store_b8 v0, off, s[0:3], 0
 ; GFX11-FAKE16-NEXT:    s_endpgm

diff  --git a/llvm/test/CodeGen/AMDGPU/fptrunc.f16.ll b/llvm/test/CodeGen/AMDGPU/fptrunc.f16.ll
index 604c5ff07a540..f57fa36b98bbe 100644
--- a/llvm/test/CodeGen/AMDGPU/fptrunc.f16.ll
+++ b/llvm/test/CodeGen/AMDGPU/fptrunc.f16.ll
@@ -558,19 +558,18 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(
 ; SI-SDAG-NEXT:    s_movk_i32 s6, 0x7e00
 ; SI-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; SI-SDAG-NEXT:    v_readfirstlane_b32 s4, v1
-; SI-SDAG-NEXT:    s_and_b32 s5, s4, 0x1ff
-; SI-SDAG-NEXT:    v_or_b32_e32 v0, s5, v0
+; SI-SDAG-NEXT:    v_readfirstlane_b32 s5, v0
+; SI-SDAG-NEXT:    s_and_b32 s7, s4, 0x1ff
+; SI-SDAG-NEXT:    s_or_b32 s5, s7, s5
+; SI-SDAG-NEXT:    s_cselect_b32 s5, 1, 0
 ; SI-SDAG-NEXT:    s_lshr_b32 s7, s4, 8
 ; SI-SDAG-NEXT:    s_bfe_u32 s8, s4, 0xb0014
-; SI-SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-SDAG-NEXT:    s_and_b32 s5, s7, 0xffe
-; SI-SDAG-NEXT:    s_sub_i32 s7, 0x3f1, s8
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-SDAG-NEXT:    v_med3_i32 v1, s7, 0, 13
-; SI-SDAG-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-SDAG-NEXT:    s_or_b32 s5, s5, s7
-; SI-SDAG-NEXT:    v_readfirstlane_b32 s9, v1
+; SI-SDAG-NEXT:    s_and_b32 s7, s7, 0xffe
+; SI-SDAG-NEXT:    s_sub_i32 s9, 0x3f1, s8
+; SI-SDAG-NEXT:    s_or_b32 s5, s7, s5
+; SI-SDAG-NEXT:    v_med3_i32 v0, s9, 0, 13
 ; SI-SDAG-NEXT:    s_or_b32 s7, s5, 0x1000
+; SI-SDAG-NEXT:    v_readfirstlane_b32 s9, v0
 ; SI-SDAG-NEXT:    s_lshr_b32 s10, s7, s9
 ; SI-SDAG-NEXT:    s_lshl_b32 s9, s10, s9
 ; SI-SDAG-NEXT:    s_cmp_lg_u32 s9, s7
@@ -671,19 +670,18 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(
 ; VI-SDAG-NEXT:    s_movk_i32 s6, 0x7e00
 ; VI-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; VI-SDAG-NEXT:    v_readfirstlane_b32 s4, v1
-; VI-SDAG-NEXT:    s_and_b32 s5, s4, 0x1ff
-; VI-SDAG-NEXT:    v_or_b32_e32 v0, s5, v0
+; VI-SDAG-NEXT:    v_readfirstlane_b32 s5, v0
+; VI-SDAG-NEXT:    s_and_b32 s7, s4, 0x1ff
+; VI-SDAG-NEXT:    s_or_b32 s5, s7, s5
+; VI-SDAG-NEXT:    s_cselect_b32 s5, 1, 0
 ; VI-SDAG-NEXT:    s_lshr_b32 s7, s4, 8
 ; VI-SDAG-NEXT:    s_bfe_u32 s8, s4, 0xb0014
-; VI-SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; VI-SDAG-NEXT:    s_and_b32 s5, s7, 0xffe
-; VI-SDAG-NEXT:    s_sub_i32 s7, 0x3f1, s8
-; VI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; VI-SDAG-NEXT:    v_med3_i32 v1, s7, 0, 13
-; VI-SDAG-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-SDAG-NEXT:    s_or_b32 s5, s5, s7
-; VI-SDAG-NEXT:    v_readfirstlane_b32 s9, v1
+; VI-SDAG-NEXT:    s_and_b32 s7, s7, 0xffe
+; VI-SDAG-NEXT:    s_sub_i32 s9, 0x3f1, s8
+; VI-SDAG-NEXT:    s_or_b32 s5, s7, s5
+; VI-SDAG-NEXT:    v_med3_i32 v0, s9, 0, 13
 ; VI-SDAG-NEXT:    s_or_b32 s7, s5, 0x1000
+; VI-SDAG-NEXT:    v_readfirstlane_b32 s9, v0
 ; VI-SDAG-NEXT:    s_lshr_b32 s10, s7, s9
 ; VI-SDAG-NEXT:    s_lshl_b32 s9, s10, s9
 ; VI-SDAG-NEXT:    s_cmp_lg_u32 s9, s7
@@ -784,19 +782,18 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(
 ; GFX9-SDAG-NEXT:    s_movk_i32 s4, 0x7e00
 ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s5, v1
-; GFX9-SDAG-NEXT:    s_and_b32 s6, s5, 0x1ff
-; GFX9-SDAG-NEXT:    v_or_b32_e32 v0, s6, v0
+; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s6, v0
+; GFX9-SDAG-NEXT:    s_and_b32 s7, s5, 0x1ff
+; GFX9-SDAG-NEXT:    s_or_b32 s6, s7, s6
+; GFX9-SDAG-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX9-SDAG-NEXT:    s_lshr_b32 s7, s5, 8
 ; GFX9-SDAG-NEXT:    s_bfe_u32 s8, s5, 0xb0014
-; GFX9-SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; GFX9-SDAG-NEXT:    s_and_b32 s6, s7, 0xffe
-; GFX9-SDAG-NEXT:    s_sub_i32 s7, 0x3f1, s8
-; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; GFX9-SDAG-NEXT:    v_med3_i32 v1, s7, 0, 13
-; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-SDAG-NEXT:    s_or_b32 s6, s6, s7
-; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s9, v1
+; GFX9-SDAG-NEXT:    s_and_b32 s7, s7, 0xffe
+; GFX9-SDAG-NEXT:    s_sub_i32 s9, 0x3f1, s8
+; GFX9-SDAG-NEXT:    s_or_b32 s6, s7, s6
+; GFX9-SDAG-NEXT:    v_med3_i32 v0, s9, 0, 13
 ; GFX9-SDAG-NEXT:    s_or_b32 s7, s6, 0x1000
+; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX9-SDAG-NEXT:    s_lshr_b32 s10, s7, s9
 ; GFX9-SDAG-NEXT:    s_lshl_b32 s9, s10, s9
 ; GFX9-SDAG-NEXT:    s_cmp_lg_u32 s9, s7
@@ -897,19 +894,18 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(
 ; GFX950-SDAG-NEXT:    s_movk_i32 s4, 0x7e00
 ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s5, v1
-; GFX950-SDAG-NEXT:    s_and_b32 s6, s5, 0x1ff
-; GFX950-SDAG-NEXT:    v_or_b32_e32 v0, s6, v0
+; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s6, v0
+; GFX950-SDAG-NEXT:    s_and_b32 s7, s5, 0x1ff
+; GFX950-SDAG-NEXT:    s_or_b32 s6, s7, s6
+; GFX950-SDAG-NEXT:    s_cselect_b32 s6, 1, 0
 ; GFX950-SDAG-NEXT:    s_lshr_b32 s7, s5, 8
 ; GFX950-SDAG-NEXT:    s_bfe_u32 s8, s5, 0xb0014
-; GFX950-SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; GFX950-SDAG-NEXT:    s_and_b32 s6, s7, 0xffe
-; GFX950-SDAG-NEXT:    s_sub_i32 s7, 0x3f1, s8
-; GFX950-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; GFX950-SDAG-NEXT:    v_med3_i32 v1, s7, 0, 13
-; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX950-SDAG-NEXT:    s_or_b32 s6, s6, s7
-; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s9, v1
+; GFX950-SDAG-NEXT:    s_and_b32 s7, s7, 0xffe
+; GFX950-SDAG-NEXT:    s_sub_i32 s9, 0x3f1, s8
+; GFX950-SDAG-NEXT:    s_or_b32 s6, s7, s6
+; GFX950-SDAG-NEXT:    v_med3_i32 v0, s9, 0, 13
 ; GFX950-SDAG-NEXT:    s_or_b32 s7, s6, 0x1000
+; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s9, v0
 ; GFX950-SDAG-NEXT:    s_lshr_b32 s10, s7, s9
 ; GFX950-SDAG-NEXT:    s_lshl_b32 s9, s10, s9
 ; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s9, s7
@@ -1007,32 +1003,32 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(
 ; GFX11-SDAG-TRUE16-NEXT:    buffer_load_b64 v[0:1], off, s[8:11], 0
 ; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s2, v1
-; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s3, s2, 0x1ff
+; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s3, v0
+; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s4, s2, 0x1ff
+; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s3, s4, s3
+; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-SDAG-TRUE16-NEXT:    s_bfe_u32 s4, s2, 0xb0014
+; GFX11-SDAG-TRUE16-NEXT:    s_sub_i32 s5, 0x3f1, s4
+; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v0, s5, 0, 13
 ; GFX11-SDAG-TRUE16-NEXT:    s_lshr_b32 s5, s2, 8
-; GFX11-SDAG-TRUE16-NEXT:    v_or_b32_e32 v0, s3, v0
-; GFX11-SDAG-TRUE16-NEXT:    s_bfe_u32 s3, s2, 0xb0014
 ; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s5, s5, 0xffe
-; GFX11-SDAG-TRUE16-NEXT:    s_sub_i32 s4, 0x3f1, s3
-; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
-; GFX11-SDAG-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v0
-; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v1, s4, 0, 13
-; GFX11-SDAG-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s8, v1
-; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s4, s5, s4
-; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s5, s4, 0x1000
+; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s8, v0
+; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s3, s5, s3
+; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s5, s3, 0x1000
 ; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-SDAG-TRUE16-NEXT:    s_lshr_b32 s9, s5, s8
 ; GFX11-SDAG-TRUE16-NEXT:    s_lshl_b32 s8, s9, s8
 ; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
 ; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s8, s5
 ; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s5, 1, 0
-; GFX11-SDAG-TRUE16-NEXT:    s_addk_i32 s3, 0xfc10
+; GFX11-SDAG-TRUE16-NEXT:    s_addk_i32 s4, 0xfc10
 ; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s5, s9, s5
-; GFX11-SDAG-TRUE16-NEXT:    s_lshl_b32 s8, s3, 12
-; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s8, s4, s8
-; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s3, 1
+; GFX11-SDAG-TRUE16-NEXT:    s_lshl_b32 s8, s4, 12
+; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s8, s3, s8
+; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s4, 1
 ; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s5, s5, s8
 ; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s8, s5, 7
@@ -1044,19 +1040,19 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(
 ; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s8, s8, s9
 ; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-SDAG-TRUE16-NEXT:    s_add_i32 s5, s5, s8
-; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s3, 31
+; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s4, 31
 ; GFX11-SDAG-TRUE16-NEXT:    s_movk_i32 s8, 0x7e00
 ; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s5, s5, 0x7c00
-; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s4, s8, 0x7c00
-; GFX11-SDAG-TRUE16-NEXT:    s_cmpk_eq_i32 s3, 0x40f
-; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, s4, s5
-; GFX11-SDAG-TRUE16-NEXT:    s_lshr_b32 s2, s2, 16
+; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s3, 0
+; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, s8, 0x7c00
+; GFX11-SDAG-TRUE16-NEXT:    s_cmpk_eq_i32 s4, 0x40f
 ; GFX11-SDAG-TRUE16-NEXT:    s_mov_b32 s4, s0
-; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s2, s2, 0x8000
+; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, s3, s5
+; GFX11-SDAG-TRUE16-NEXT:    s_lshr_b32 s2, s2, 16
 ; GFX11-SDAG-TRUE16-NEXT:    s_mov_b32 s5, s1
+; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s2, s2, 0x8000
+; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s2, s2, s3
-; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-SDAG-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-SDAG-TRUE16-NEXT:    buffer_store_b16 v0, off, s[4:7], 0
 ; GFX11-SDAG-TRUE16-NEXT:    s_endpgm
@@ -1074,32 +1070,32 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(
 ; GFX11-SDAG-FAKE16-NEXT:    buffer_load_b64 v[0:1], off, s[8:11], 0
 ; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s2, v1
-; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s3, s2, 0x1ff
+; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s3, v0
+; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s4, s2, 0x1ff
+; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s3, s4, s3
+; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-SDAG-FAKE16-NEXT:    s_bfe_u32 s4, s2, 0xb0014
+; GFX11-SDAG-FAKE16-NEXT:    s_sub_i32 s5, 0x3f1, s4
+; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v0, s5, 0, 13
 ; GFX11-SDAG-FAKE16-NEXT:    s_lshr_b32 s5, s2, 8
-; GFX11-SDAG-FAKE16-NEXT:    v_or_b32_e32 v0, s3, v0
-; GFX11-SDAG-FAKE16-NEXT:    s_bfe_u32 s3, s2, 0xb0014
 ; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s5, s5, 0xffe
-; GFX11-SDAG-FAKE16-NEXT:    s_sub_i32 s4, 0x3f1, s3
-; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
-; GFX11-SDAG-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v0
-; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v1, s4, 0, 13
-; GFX11-SDAG-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s8, v1
-; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s4, s5, s4
-; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s5, s4, 0x1000
+; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s8, v0
+; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s3, s5, s3
+; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s5, s3, 0x1000
 ; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-SDAG-FAKE16-NEXT:    s_lshr_b32 s9, s5, s8
 ; GFX11-SDAG-FAKE16-NEXT:    s_lshl_b32 s8, s9, s8
 ; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
 ; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s8, s5
 ; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s5, 1, 0
-; GFX11-SDAG-FAKE16-NEXT:    s_addk_i32 s3, 0xfc10
+; GFX11-SDAG-FAKE16-NEXT:    s_addk_i32 s4, 0xfc10
 ; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s5, s9, s5
-; GFX11-SDAG-FAKE16-NEXT:    s_lshl_b32 s8, s3, 12
-; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s8, s4, s8
-; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s3, 1
+; GFX11-SDAG-FAKE16-NEXT:    s_lshl_b32 s8, s4, 12
+; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s8, s3, s8
+; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s4, 1
 ; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s5, s5, s8
 ; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s8, s5, 7
@@ -1111,19 +1107,19 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(
 ; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s8, s8, s9
 ; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-SDAG-FAKE16-NEXT:    s_add_i32 s5, s5, s8
-; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s3, 31
+; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s4, 31
 ; GFX11-SDAG-FAKE16-NEXT:    s_movk_i32 s8, 0x7e00
 ; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s5, s5, 0x7c00
-; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s4, s8, 0x7c00
-; GFX11-SDAG-FAKE16-NEXT:    s_cmpk_eq_i32 s3, 0x40f
-; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, s4, s5
-; GFX11-SDAG-FAKE16-NEXT:    s_lshr_b32 s2, s2, 16
+; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s3, 0
+; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, s8, 0x7c00
+; GFX11-SDAG-FAKE16-NEXT:    s_cmpk_eq_i32 s4, 0x40f
 ; GFX11-SDAG-FAKE16-NEXT:    s_mov_b32 s4, s0
-; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s2, s2, 0x8000
+; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, s3, s5
+; GFX11-SDAG-FAKE16-NEXT:    s_lshr_b32 s2, s2, 16
 ; GFX11-SDAG-FAKE16-NEXT:    s_mov_b32 s5, s1
+; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s2, s2, 0x8000
+; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s2, s2, s3
-; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-SDAG-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX11-SDAG-FAKE16-NEXT:    buffer_store_b16 v0, off, s[4:7], 0
 ; GFX11-SDAG-FAKE16-NEXT:    s_endpgm
@@ -1258,32 +1254,32 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(
 ; GFX1250-SDAG-TRUE16-NEXT:    buffer_load_b64 v[0:1], off, s[8:11], null
 ; GFX1250-SDAG-TRUE16-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s2, v1
-; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s3, s2, 0x1ff
+; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s3, v0
+; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s4, s2, 0x1ff
+; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s3, s4, s3
+; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX1250-SDAG-TRUE16-NEXT:    s_bfe_u32 s4, s2, 0xb0014
+; GFX1250-SDAG-TRUE16-NEXT:    s_sub_co_i32 s5, 0x3f1, s4
+; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT:    v_med3_i32 v0, s5, 0, 13
 ; GFX1250-SDAG-TRUE16-NEXT:    s_lshr_b32 s5, s2, 8
-; GFX1250-SDAG-TRUE16-NEXT:    v_or_b32_e32 v0, s3, v0
-; GFX1250-SDAG-TRUE16-NEXT:    s_bfe_u32 s3, s2, 0xb0014
 ; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s5, s5, 0xffe
-; GFX1250-SDAG-TRUE16-NEXT:    s_sub_co_i32 s4, 0x3f1, s3
-; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
-; GFX1250-SDAG-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v0
-; GFX1250-SDAG-TRUE16-NEXT:    v_med3_i32 v1, s4, 0, 13
-; GFX1250-SDAG-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s8, v1
-; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s4, s5, s4
-; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s5, s4, 0x1000
+; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s8, v0
+; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s3, s5, s3
+; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s5, s3, 0x1000
 ; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-TRUE16-NEXT:    s_lshr_b32 s9, s5, s8
 ; GFX1250-SDAG-TRUE16-NEXT:    s_lshl_b32 s8, s9, s8
 ; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s8, s5
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s5, 1, 0
-; GFX1250-SDAG-TRUE16-NEXT:    s_addk_co_i32 s3, 0xfc10
+; GFX1250-SDAG-TRUE16-NEXT:    s_addk_co_i32 s4, 0xfc10
 ; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s5, s9, s5
-; GFX1250-SDAG-TRUE16-NEXT:    s_lshl_b32 s8, s3, 12
-; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s8, s4, s8
-; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s3, 1
+; GFX1250-SDAG-TRUE16-NEXT:    s_lshl_b32 s8, s4, 12
+; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s8, s3, s8
+; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s4, 1
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s5, s5, s8
 ; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s8, s5, 7
@@ -1295,19 +1291,19 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(
 ; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s8, s8, s9
 ; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-SDAG-TRUE16-NEXT:    s_add_co_i32 s5, s5, s8
-; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s3, 31
+; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s4, 31
 ; GFX1250-SDAG-TRUE16-NEXT:    s_movk_i32 s8, 0x7e00
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s5, s5, 0x7c00
-; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s4, s8, 0x7c00
-; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_eq_u32 s3, 0x40f
-; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, s4, s5
-; GFX1250-SDAG-TRUE16-NEXT:    s_lshr_b32 s2, s2, 16
+; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s3, 0
+; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, s8, 0x7c00
+; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_eq_u32 s4, 0x40f
 ; GFX1250-SDAG-TRUE16-NEXT:    s_mov_b32 s4, s0
-; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s2, s2, 0x8000
+; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, s3, s5
+; GFX1250-SDAG-TRUE16-NEXT:    s_lshr_b32 s2, s2, 16
 ; GFX1250-SDAG-TRUE16-NEXT:    s_mov_b32 s5, s1
+; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s2, s2, 0x8000
+; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s2, s2, s3
-; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-SDAG-TRUE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX1250-SDAG-TRUE16-NEXT:    buffer_store_b16 v0, off, s[4:7], null
 ; GFX1250-SDAG-TRUE16-NEXT:    s_endpgm
@@ -1326,32 +1322,32 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(
 ; GFX1250-SDAG-FAKE16-NEXT:    buffer_load_b64 v[0:1], off, s[8:11], null
 ; GFX1250-SDAG-FAKE16-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s2, v1
-; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s3, s2, 0x1ff
+; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s3, v0
+; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s4, s2, 0x1ff
+; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s3, s4, s3
+; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX1250-SDAG-FAKE16-NEXT:    s_bfe_u32 s4, s2, 0xb0014
+; GFX1250-SDAG-FAKE16-NEXT:    s_sub_co_i32 s5, 0x3f1, s4
+; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-FAKE16-NEXT:    v_med3_i32 v0, s5, 0, 13
 ; GFX1250-SDAG-FAKE16-NEXT:    s_lshr_b32 s5, s2, 8
-; GFX1250-SDAG-FAKE16-NEXT:    v_or_b32_e32 v0, s3, v0
-; GFX1250-SDAG-FAKE16-NEXT:    s_bfe_u32 s3, s2, 0xb0014
 ; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s5, s5, 0xffe
-; GFX1250-SDAG-FAKE16-NEXT:    s_sub_co_i32 s4, 0x3f1, s3
-; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
-; GFX1250-SDAG-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v0
-; GFX1250-SDAG-FAKE16-NEXT:    v_med3_i32 v1, s4, 0, 13
-; GFX1250-SDAG-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s8, v1
-; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s4, v0
-; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s4, s5, s4
-; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s5, s4, 0x1000
+; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s8, v0
+; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s3, s5, s3
+; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s5, s3, 0x1000
 ; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-FAKE16-NEXT:    s_lshr_b32 s9, s5, s8
 ; GFX1250-SDAG-FAKE16-NEXT:    s_lshl_b32 s8, s9, s8
 ; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s8, s5
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s5, 1, 0
-; GFX1250-SDAG-FAKE16-NEXT:    s_addk_co_i32 s3, 0xfc10
+; GFX1250-SDAG-FAKE16-NEXT:    s_addk_co_i32 s4, 0xfc10
 ; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s5, s9, s5
-; GFX1250-SDAG-FAKE16-NEXT:    s_lshl_b32 s8, s3, 12
-; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s8, s4, s8
-; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s3, 1
+; GFX1250-SDAG-FAKE16-NEXT:    s_lshl_b32 s8, s4, 12
+; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s8, s3, s8
+; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s4, 1
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s5, s5, s8
 ; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s8, s5, 7
@@ -1363,19 +1359,19 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(
 ; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s8, s8, s9
 ; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-SDAG-FAKE16-NEXT:    s_add_co_i32 s5, s5, s8
-; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s3, 31
+; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s4, 31
 ; GFX1250-SDAG-FAKE16-NEXT:    s_movk_i32 s8, 0x7e00
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s5, s5, 0x7c00
-; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s4, s8, 0x7c00
-; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_eq_u32 s3, 0x40f
-; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, s4, s5
-; GFX1250-SDAG-FAKE16-NEXT:    s_lshr_b32 s2, s2, 16
+; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s3, 0
+; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, s8, 0x7c00
+; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_eq_u32 s4, 0x40f
 ; GFX1250-SDAG-FAKE16-NEXT:    s_mov_b32 s4, s0
-; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s2, s2, 0x8000
+; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, s3, s5
+; GFX1250-SDAG-FAKE16-NEXT:    s_lshr_b32 s2, s2, 16
 ; GFX1250-SDAG-FAKE16-NEXT:    s_mov_b32 s5, s1
+; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s2, s2, 0x8000
+; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s2, s2, s3
-; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-SDAG-FAKE16-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX1250-SDAG-FAKE16-NEXT:    buffer_store_b16 v0, off, s[4:7], null
 ; GFX1250-SDAG-FAKE16-NEXT:    s_endpgm
@@ -2111,20 +2107,59 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; SI-SDAG-NEXT:    s_movk_i32 s6, 0x7e00
 ; SI-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; SI-SDAG-NEXT:    v_readfirstlane_b32 s4, v3
-; SI-SDAG-NEXT:    s_and_b32 s7, s4, 0x1ff
-; SI-SDAG-NEXT:    v_readfirstlane_b32 s5, v1
-; SI-SDAG-NEXT:    v_or_b32_e32 v1, s7, v2
-; SI-SDAG-NEXT:    s_lshr_b32 s8, s4, 8
-; SI-SDAG-NEXT:    s_bfe_u32 s9, s4, 0xb0014
-; SI-SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v1
-; SI-SDAG-NEXT:    s_and_b32 s7, s8, 0xffe
-; SI-SDAG-NEXT:    s_sub_i32 s8, 0x3f1, s9
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
-; SI-SDAG-NEXT:    v_med3_i32 v2, s8, 0, 13
-; SI-SDAG-NEXT:    v_readfirstlane_b32 s8, v1
-; SI-SDAG-NEXT:    s_or_b32 s7, s7, s8
-; SI-SDAG-NEXT:    v_readfirstlane_b32 s10, v2
-; SI-SDAG-NEXT:    s_or_b32 s8, s7, 0x1000
+; SI-SDAG-NEXT:    v_readfirstlane_b32 s5, v2
+; SI-SDAG-NEXT:    s_and_b32 s9, s4, 0x1ff
+; SI-SDAG-NEXT:    s_or_b32 s5, s9, s5
+; SI-SDAG-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-SDAG-NEXT:    s_lshr_b32 s9, s4, 8
+; SI-SDAG-NEXT:    s_bfe_u32 s10, s4, 0xb0014
+; SI-SDAG-NEXT:    s_and_b32 s9, s9, 0xffe
+; SI-SDAG-NEXT:    s_sub_i32 s11, 0x3f1, s10
+; SI-SDAG-NEXT:    v_readfirstlane_b32 s8, v0
+; SI-SDAG-NEXT:    s_or_b32 s5, s9, s5
+; SI-SDAG-NEXT:    v_med3_i32 v0, s11, 0, 13
+; SI-SDAG-NEXT:    s_or_b32 s9, s5, 0x1000
+; SI-SDAG-NEXT:    v_readfirstlane_b32 s11, v0
+; SI-SDAG-NEXT:    s_lshr_b32 s12, s9, s11
+; SI-SDAG-NEXT:    s_lshl_b32 s11, s12, s11
+; SI-SDAG-NEXT:    s_cmp_lg_u32 s11, s9
+; SI-SDAG-NEXT:    s_cselect_b32 s9, 1, 0
+; SI-SDAG-NEXT:    s_addk_i32 s10, 0xfc10
+; SI-SDAG-NEXT:    s_lshl_b32 s11, s10, 12
+; SI-SDAG-NEXT:    s_or_b32 s9, s12, s9
+; SI-SDAG-NEXT:    s_or_b32 s11, s5, s11
+; SI-SDAG-NEXT:    s_cmp_lt_i32 s10, 1
+; SI-SDAG-NEXT:    s_cselect_b32 s9, s9, s11
+; SI-SDAG-NEXT:    s_and_b32 s11, s9, 7
+; SI-SDAG-NEXT:    s_cmp_gt_i32 s11, 5
+; SI-SDAG-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-SDAG-NEXT:    s_cmp_eq_u32 s11, 3
+; SI-SDAG-NEXT:    s_cselect_b32 s11, 1, 0
+; SI-SDAG-NEXT:    s_lshr_b32 s9, s9, 2
+; SI-SDAG-NEXT:    s_or_b32 s11, s11, s12
+; SI-SDAG-NEXT:    s_add_i32 s9, s9, s11
+; SI-SDAG-NEXT:    s_cmp_lt_i32 s10, 31
+; SI-SDAG-NEXT:    s_cselect_b32 s9, s9, 0x7c00
+; SI-SDAG-NEXT:    s_cmp_lg_u32 s5, 0
+; SI-SDAG-NEXT:    s_cselect_b32 s5, s6, 0x7c00
+; SI-SDAG-NEXT:    s_cmpk_eq_i32 s10, 0x40f
+; SI-SDAG-NEXT:    s_cselect_b32 s5, s5, s9
+; SI-SDAG-NEXT:    s_lshr_b32 s4, s4, 16
+; SI-SDAG-NEXT:    s_and_b32 s4, s4, 0x8000
+; SI-SDAG-NEXT:    v_readfirstlane_b32 s7, v1
+; SI-SDAG-NEXT:    s_or_b32 s4, s4, s5
+; SI-SDAG-NEXT:    s_and_b32 s9, s7, 0x1ff
+; SI-SDAG-NEXT:    s_lshl_b32 s4, s4, 16
+; SI-SDAG-NEXT:    s_or_b32 s5, s9, s8
+; SI-SDAG-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-SDAG-NEXT:    s_lshr_b32 s8, s7, 8
+; SI-SDAG-NEXT:    s_bfe_u32 s9, s7, 0xb0014
+; SI-SDAG-NEXT:    s_and_b32 s8, s8, 0xffe
+; SI-SDAG-NEXT:    s_sub_i32 s10, 0x3f1, s9
+; SI-SDAG-NEXT:    s_or_b32 s5, s8, s5
+; SI-SDAG-NEXT:    v_med3_i32 v0, s10, 0, 13
+; SI-SDAG-NEXT:    s_or_b32 s8, s5, 0x1000
+; SI-SDAG-NEXT:    v_readfirstlane_b32 s10, v0
 ; SI-SDAG-NEXT:    s_lshr_b32 s11, s8, s10
 ; SI-SDAG-NEXT:    s_lshl_b32 s10, s11, s10
 ; SI-SDAG-NEXT:    s_cmp_lg_u32 s10, s8
@@ -2132,7 +2167,7 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; SI-SDAG-NEXT:    s_addk_i32 s9, 0xfc10
 ; SI-SDAG-NEXT:    s_lshl_b32 s10, s9, 12
 ; SI-SDAG-NEXT:    s_or_b32 s8, s11, s8
-; SI-SDAG-NEXT:    s_or_b32 s10, s7, s10
+; SI-SDAG-NEXT:    s_or_b32 s10, s5, s10
 ; SI-SDAG-NEXT:    s_cmp_lt_i32 s9, 1
 ; SI-SDAG-NEXT:    s_cselect_b32 s8, s8, s10
 ; SI-SDAG-NEXT:    s_and_b32 s10, s8, 7
@@ -2145,54 +2180,13 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; SI-SDAG-NEXT:    s_add_i32 s8, s8, s10
 ; SI-SDAG-NEXT:    s_cmp_lt_i32 s9, 31
 ; SI-SDAG-NEXT:    s_cselect_b32 s8, s8, 0x7c00
-; SI-SDAG-NEXT:    s_cmp_lg_u32 s7, 0
-; SI-SDAG-NEXT:    s_cselect_b32 s7, s6, 0x7c00
+; SI-SDAG-NEXT:    s_cmp_lg_u32 s5, 0
+; SI-SDAG-NEXT:    s_cselect_b32 s5, s6, 0x7c00
 ; SI-SDAG-NEXT:    s_cmpk_eq_i32 s9, 0x40f
-; SI-SDAG-NEXT:    s_cselect_b32 s7, s7, s8
-; SI-SDAG-NEXT:    s_and_b32 s8, s5, 0x1ff
-; SI-SDAG-NEXT:    v_or_b32_e32 v0, s8, v0
-; SI-SDAG-NEXT:    s_lshr_b32 s4, s4, 16
-; SI-SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-SDAG-NEXT:    s_lshr_b32 s9, s5, 8
-; SI-SDAG-NEXT:    s_bfe_u32 s10, s5, 0xb0014
-; SI-SDAG-NEXT:    s_and_b32 s4, s4, 0x8000
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-SDAG-NEXT:    s_and_b32 s8, s9, 0xffe
-; SI-SDAG-NEXT:    s_sub_i32 s9, 0x3f1, s10
-; SI-SDAG-NEXT:    s_or_b32 s4, s4, s7
-; SI-SDAG-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-SDAG-NEXT:    v_med3_i32 v1, s9, 0, 13
-; SI-SDAG-NEXT:    s_or_b32 s7, s8, s7
-; SI-SDAG-NEXT:    v_readfirstlane_b32 s9, v1
-; SI-SDAG-NEXT:    s_or_b32 s8, s7, 0x1000
-; SI-SDAG-NEXT:    s_lshr_b32 s11, s8, s9
-; SI-SDAG-NEXT:    s_lshl_b32 s4, s4, 16
-; SI-SDAG-NEXT:    s_lshl_b32 s9, s11, s9
-; SI-SDAG-NEXT:    s_cmp_lg_u32 s9, s8
-; SI-SDAG-NEXT:    s_cselect_b32 s8, 1, 0
-; SI-SDAG-NEXT:    s_addk_i32 s10, 0xfc10
-; SI-SDAG-NEXT:    s_lshl_b32 s9, s10, 12
-; SI-SDAG-NEXT:    s_or_b32 s8, s11, s8
-; SI-SDAG-NEXT:    s_or_b32 s9, s7, s9
-; SI-SDAG-NEXT:    s_cmp_lt_i32 s10, 1
-; SI-SDAG-NEXT:    s_cselect_b32 s8, s8, s9
-; SI-SDAG-NEXT:    s_and_b32 s9, s8, 7
-; SI-SDAG-NEXT:    s_cmp_gt_i32 s9, 5
-; SI-SDAG-NEXT:    s_cselect_b32 s11, 1, 0
-; SI-SDAG-NEXT:    s_cmp_eq_u32 s9, 3
-; SI-SDAG-NEXT:    s_cselect_b32 s9, 1, 0
-; SI-SDAG-NEXT:    s_lshr_b32 s8, s8, 2
-; SI-SDAG-NEXT:    s_or_b32 s9, s9, s11
-; SI-SDAG-NEXT:    s_add_i32 s8, s8, s9
-; SI-SDAG-NEXT:    s_cmp_lt_i32 s10, 31
-; SI-SDAG-NEXT:    s_cselect_b32 s8, s8, 0x7c00
-; SI-SDAG-NEXT:    s_cmp_lg_u32 s7, 0
-; SI-SDAG-NEXT:    s_cselect_b32 s6, s6, 0x7c00
-; SI-SDAG-NEXT:    s_cmpk_eq_i32 s10, 0x40f
-; SI-SDAG-NEXT:    s_cselect_b32 s6, s6, s8
-; SI-SDAG-NEXT:    s_lshr_b32 s5, s5, 16
-; SI-SDAG-NEXT:    s_and_b32 s5, s5, 0x8000
-; SI-SDAG-NEXT:    s_or_b32 s5, s5, s6
+; SI-SDAG-NEXT:    s_cselect_b32 s5, s5, s8
+; SI-SDAG-NEXT:    s_lshr_b32 s6, s7, 16
+; SI-SDAG-NEXT:    s_and_b32 s6, s6, 0x8000
+; SI-SDAG-NEXT:    s_or_b32 s5, s6, s5
 ; SI-SDAG-NEXT:    s_and_b32 s5, s5, 0xffff
 ; SI-SDAG-NEXT:    s_or_b32 s4, s5, s4
 ; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
@@ -2313,20 +2307,59 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; VI-SDAG-NEXT:    s_movk_i32 s6, 0x7e00
 ; VI-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; VI-SDAG-NEXT:    v_readfirstlane_b32 s4, v3
-; VI-SDAG-NEXT:    s_and_b32 s7, s4, 0x1ff
-; VI-SDAG-NEXT:    v_readfirstlane_b32 s5, v1
-; VI-SDAG-NEXT:    v_or_b32_e32 v1, s7, v2
-; VI-SDAG-NEXT:    s_lshr_b32 s8, s4, 8
-; VI-SDAG-NEXT:    s_bfe_u32 s9, s4, 0xb0014
-; VI-SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v1
-; VI-SDAG-NEXT:    s_and_b32 s7, s8, 0xffe
-; VI-SDAG-NEXT:    s_sub_i32 s8, 0x3f1, s9
-; VI-SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
-; VI-SDAG-NEXT:    v_med3_i32 v2, s8, 0, 13
-; VI-SDAG-NEXT:    v_readfirstlane_b32 s8, v1
-; VI-SDAG-NEXT:    s_or_b32 s7, s7, s8
-; VI-SDAG-NEXT:    v_readfirstlane_b32 s10, v2
-; VI-SDAG-NEXT:    s_or_b32 s8, s7, 0x1000
+; VI-SDAG-NEXT:    v_readfirstlane_b32 s5, v2
+; VI-SDAG-NEXT:    s_and_b32 s9, s4, 0x1ff
+; VI-SDAG-NEXT:    s_or_b32 s5, s9, s5
+; VI-SDAG-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-SDAG-NEXT:    s_lshr_b32 s9, s4, 8
+; VI-SDAG-NEXT:    s_bfe_u32 s10, s4, 0xb0014
+; VI-SDAG-NEXT:    s_and_b32 s9, s9, 0xffe
+; VI-SDAG-NEXT:    s_sub_i32 s11, 0x3f1, s10
+; VI-SDAG-NEXT:    v_readfirstlane_b32 s8, v0
+; VI-SDAG-NEXT:    s_or_b32 s5, s9, s5
+; VI-SDAG-NEXT:    v_med3_i32 v0, s11, 0, 13
+; VI-SDAG-NEXT:    s_or_b32 s9, s5, 0x1000
+; VI-SDAG-NEXT:    v_readfirstlane_b32 s11, v0
+; VI-SDAG-NEXT:    s_lshr_b32 s12, s9, s11
+; VI-SDAG-NEXT:    s_lshl_b32 s11, s12, s11
+; VI-SDAG-NEXT:    s_cmp_lg_u32 s11, s9
+; VI-SDAG-NEXT:    s_cselect_b32 s9, 1, 0
+; VI-SDAG-NEXT:    s_addk_i32 s10, 0xfc10
+; VI-SDAG-NEXT:    s_lshl_b32 s11, s10, 12
+; VI-SDAG-NEXT:    s_or_b32 s9, s12, s9
+; VI-SDAG-NEXT:    s_or_b32 s11, s5, s11
+; VI-SDAG-NEXT:    s_cmp_lt_i32 s10, 1
+; VI-SDAG-NEXT:    s_cselect_b32 s9, s9, s11
+; VI-SDAG-NEXT:    s_and_b32 s11, s9, 7
+; VI-SDAG-NEXT:    s_cmp_gt_i32 s11, 5
+; VI-SDAG-NEXT:    s_cselect_b32 s12, 1, 0
+; VI-SDAG-NEXT:    s_cmp_eq_u32 s11, 3
+; VI-SDAG-NEXT:    s_cselect_b32 s11, 1, 0
+; VI-SDAG-NEXT:    s_lshr_b32 s9, s9, 2
+; VI-SDAG-NEXT:    s_or_b32 s11, s11, s12
+; VI-SDAG-NEXT:    s_add_i32 s9, s9, s11
+; VI-SDAG-NEXT:    s_cmp_lt_i32 s10, 31
+; VI-SDAG-NEXT:    s_cselect_b32 s9, s9, 0x7c00
+; VI-SDAG-NEXT:    s_cmp_lg_u32 s5, 0
+; VI-SDAG-NEXT:    s_cselect_b32 s5, s6, 0x7c00
+; VI-SDAG-NEXT:    s_cmpk_eq_i32 s10, 0x40f
+; VI-SDAG-NEXT:    s_cselect_b32 s5, s5, s9
+; VI-SDAG-NEXT:    s_lshr_b32 s4, s4, 16
+; VI-SDAG-NEXT:    s_and_b32 s4, s4, 0x8000
+; VI-SDAG-NEXT:    v_readfirstlane_b32 s7, v1
+; VI-SDAG-NEXT:    s_or_b32 s4, s4, s5
+; VI-SDAG-NEXT:    s_and_b32 s9, s7, 0x1ff
+; VI-SDAG-NEXT:    s_lshl_b32 s4, s4, 16
+; VI-SDAG-NEXT:    s_or_b32 s5, s9, s8
+; VI-SDAG-NEXT:    s_cselect_b32 s5, 1, 0
+; VI-SDAG-NEXT:    s_lshr_b32 s8, s7, 8
+; VI-SDAG-NEXT:    s_bfe_u32 s9, s7, 0xb0014
+; VI-SDAG-NEXT:    s_and_b32 s8, s8, 0xffe
+; VI-SDAG-NEXT:    s_sub_i32 s10, 0x3f1, s9
+; VI-SDAG-NEXT:    s_or_b32 s5, s8, s5
+; VI-SDAG-NEXT:    v_med3_i32 v0, s10, 0, 13
+; VI-SDAG-NEXT:    s_or_b32 s8, s5, 0x1000
+; VI-SDAG-NEXT:    v_readfirstlane_b32 s10, v0
 ; VI-SDAG-NEXT:    s_lshr_b32 s11, s8, s10
 ; VI-SDAG-NEXT:    s_lshl_b32 s10, s11, s10
 ; VI-SDAG-NEXT:    s_cmp_lg_u32 s10, s8
@@ -2334,7 +2367,7 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; VI-SDAG-NEXT:    s_addk_i32 s9, 0xfc10
 ; VI-SDAG-NEXT:    s_lshl_b32 s10, s9, 12
 ; VI-SDAG-NEXT:    s_or_b32 s8, s11, s8
-; VI-SDAG-NEXT:    s_or_b32 s10, s7, s10
+; VI-SDAG-NEXT:    s_or_b32 s10, s5, s10
 ; VI-SDAG-NEXT:    s_cmp_lt_i32 s9, 1
 ; VI-SDAG-NEXT:    s_cselect_b32 s8, s8, s10
 ; VI-SDAG-NEXT:    s_and_b32 s10, s8, 7
@@ -2347,54 +2380,13 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; VI-SDAG-NEXT:    s_add_i32 s8, s8, s10
 ; VI-SDAG-NEXT:    s_cmp_lt_i32 s9, 31
 ; VI-SDAG-NEXT:    s_cselect_b32 s8, s8, 0x7c00
-; VI-SDAG-NEXT:    s_cmp_lg_u32 s7, 0
-; VI-SDAG-NEXT:    s_cselect_b32 s7, s6, 0x7c00
+; VI-SDAG-NEXT:    s_cmp_lg_u32 s5, 0
+; VI-SDAG-NEXT:    s_cselect_b32 s5, s6, 0x7c00
 ; VI-SDAG-NEXT:    s_cmpk_eq_i32 s9, 0x40f
-; VI-SDAG-NEXT:    s_cselect_b32 s7, s7, s8
-; VI-SDAG-NEXT:    s_and_b32 s8, s5, 0x1ff
-; VI-SDAG-NEXT:    v_or_b32_e32 v0, s8, v0
-; VI-SDAG-NEXT:    s_lshr_b32 s4, s4, 16
-; VI-SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; VI-SDAG-NEXT:    s_lshr_b32 s9, s5, 8
-; VI-SDAG-NEXT:    s_bfe_u32 s10, s5, 0xb0014
-; VI-SDAG-NEXT:    s_and_b32 s4, s4, 0x8000
-; VI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; VI-SDAG-NEXT:    s_and_b32 s8, s9, 0xffe
-; VI-SDAG-NEXT:    s_sub_i32 s9, 0x3f1, s10
-; VI-SDAG-NEXT:    s_or_b32 s4, s4, s7
-; VI-SDAG-NEXT:    v_readfirstlane_b32 s7, v0
-; VI-SDAG-NEXT:    v_med3_i32 v1, s9, 0, 13
-; VI-SDAG-NEXT:    s_or_b32 s7, s8, s7
-; VI-SDAG-NEXT:    v_readfirstlane_b32 s9, v1
-; VI-SDAG-NEXT:    s_or_b32 s8, s7, 0x1000
-; VI-SDAG-NEXT:    s_lshr_b32 s11, s8, s9
-; VI-SDAG-NEXT:    s_lshl_b32 s4, s4, 16
-; VI-SDAG-NEXT:    s_lshl_b32 s9, s11, s9
-; VI-SDAG-NEXT:    s_cmp_lg_u32 s9, s8
-; VI-SDAG-NEXT:    s_cselect_b32 s8, 1, 0
-; VI-SDAG-NEXT:    s_addk_i32 s10, 0xfc10
-; VI-SDAG-NEXT:    s_lshl_b32 s9, s10, 12
-; VI-SDAG-NEXT:    s_or_b32 s8, s11, s8
-; VI-SDAG-NEXT:    s_or_b32 s9, s7, s9
-; VI-SDAG-NEXT:    s_cmp_lt_i32 s10, 1
-; VI-SDAG-NEXT:    s_cselect_b32 s8, s8, s9
-; VI-SDAG-NEXT:    s_and_b32 s9, s8, 7
-; VI-SDAG-NEXT:    s_cmp_gt_i32 s9, 5
-; VI-SDAG-NEXT:    s_cselect_b32 s11, 1, 0
-; VI-SDAG-NEXT:    s_cmp_eq_u32 s9, 3
-; VI-SDAG-NEXT:    s_cselect_b32 s9, 1, 0
-; VI-SDAG-NEXT:    s_lshr_b32 s8, s8, 2
-; VI-SDAG-NEXT:    s_or_b32 s9, s9, s11
-; VI-SDAG-NEXT:    s_add_i32 s8, s8, s9
-; VI-SDAG-NEXT:    s_cmp_lt_i32 s10, 31
-; VI-SDAG-NEXT:    s_cselect_b32 s8, s8, 0x7c00
-; VI-SDAG-NEXT:    s_cmp_lg_u32 s7, 0
-; VI-SDAG-NEXT:    s_cselect_b32 s6, s6, 0x7c00
-; VI-SDAG-NEXT:    s_cmpk_eq_i32 s10, 0x40f
-; VI-SDAG-NEXT:    s_cselect_b32 s6, s6, s8
-; VI-SDAG-NEXT:    s_lshr_b32 s5, s5, 16
-; VI-SDAG-NEXT:    s_and_b32 s5, s5, 0x8000
-; VI-SDAG-NEXT:    s_or_b32 s5, s5, s6
+; VI-SDAG-NEXT:    s_cselect_b32 s5, s5, s8
+; VI-SDAG-NEXT:    s_lshr_b32 s6, s7, 16
+; VI-SDAG-NEXT:    s_and_b32 s6, s6, 0x8000
+; VI-SDAG-NEXT:    s_or_b32 s5, s6, s5
 ; VI-SDAG-NEXT:    s_and_b32 s5, s5, 0xffff
 ; VI-SDAG-NEXT:    s_or_b32 s4, s5, s4
 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
@@ -2510,25 +2502,63 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; GFX9-SDAG-NEXT:    s_mov_b32 s4, s10
 ; GFX9-SDAG-NEXT:    s_mov_b32 s5, s11
 ; GFX9-SDAG-NEXT:    buffer_load_dwordx4 v[0:3], off, s[4:7], 0
-; GFX9-SDAG-NEXT:    s_mov_b32 s0, s8
 ; GFX9-SDAG-NEXT:    s_mov_b32 s1, s9
+; GFX9-SDAG-NEXT:    s_mov_b32 s0, s8
 ; GFX9-SDAG-NEXT:    s_movk_i32 s4, 0x7e00
 ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s5, v3
-; GFX9-SDAG-NEXT:    s_and_b32 s7, s5, 0x1ff
-; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s6, v1
-; GFX9-SDAG-NEXT:    v_or_b32_e32 v1, s7, v2
-; GFX9-SDAG-NEXT:    s_lshr_b32 s8, s5, 8
-; GFX9-SDAG-NEXT:    s_bfe_u32 s9, s5, 0xb0014
-; GFX9-SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v1
-; GFX9-SDAG-NEXT:    s_and_b32 s7, s8, 0xffe
-; GFX9-SDAG-NEXT:    s_sub_i32 s8, 0x3f1, s9
-; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
-; GFX9-SDAG-NEXT:    v_med3_i32 v2, s8, 0, 13
-; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s8, v1
-; GFX9-SDAG-NEXT:    s_or_b32 s7, s7, s8
-; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s10, v2
-; GFX9-SDAG-NEXT:    s_or_b32 s8, s7, 0x1000
+; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s6, v2
+; GFX9-SDAG-NEXT:    s_and_b32 s9, s5, 0x1ff
+; GFX9-SDAG-NEXT:    s_or_b32 s6, s9, s6
+; GFX9-SDAG-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX9-SDAG-NEXT:    s_lshr_b32 s9, s5, 8
+; GFX9-SDAG-NEXT:    s_bfe_u32 s10, s5, 0xb0014
+; GFX9-SDAG-NEXT:    s_and_b32 s9, s9, 0xffe
+; GFX9-SDAG-NEXT:    s_sub_i32 s11, 0x3f1, s10
+; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s8, v0
+; GFX9-SDAG-NEXT:    s_or_b32 s6, s9, s6
+; GFX9-SDAG-NEXT:    v_med3_i32 v0, s11, 0, 13
+; GFX9-SDAG-NEXT:    s_or_b32 s9, s6, 0x1000
+; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s11, v0
+; GFX9-SDAG-NEXT:    s_lshr_b32 s12, s9, s11
+; GFX9-SDAG-NEXT:    s_lshl_b32 s11, s12, s11
+; GFX9-SDAG-NEXT:    s_cmp_lg_u32 s11, s9
+; GFX9-SDAG-NEXT:    s_cselect_b32 s9, 1, 0
+; GFX9-SDAG-NEXT:    s_addk_i32 s10, 0xfc10
+; GFX9-SDAG-NEXT:    s_lshl_b32 s11, s10, 12
+; GFX9-SDAG-NEXT:    s_or_b32 s9, s12, s9
+; GFX9-SDAG-NEXT:    s_or_b32 s11, s6, s11
+; GFX9-SDAG-NEXT:    s_cmp_lt_i32 s10, 1
+; GFX9-SDAG-NEXT:    s_cselect_b32 s9, s9, s11
+; GFX9-SDAG-NEXT:    s_and_b32 s11, s9, 7
+; GFX9-SDAG-NEXT:    s_cmp_gt_i32 s11, 5
+; GFX9-SDAG-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX9-SDAG-NEXT:    s_cmp_eq_u32 s11, 3
+; GFX9-SDAG-NEXT:    s_cselect_b32 s11, 1, 0
+; GFX9-SDAG-NEXT:    s_lshr_b32 s9, s9, 2
+; GFX9-SDAG-NEXT:    s_or_b32 s11, s11, s12
+; GFX9-SDAG-NEXT:    s_add_i32 s9, s9, s11
+; GFX9-SDAG-NEXT:    s_cmp_lt_i32 s10, 31
+; GFX9-SDAG-NEXT:    s_cselect_b32 s9, s9, 0x7c00
+; GFX9-SDAG-NEXT:    s_cmp_lg_u32 s6, 0
+; GFX9-SDAG-NEXT:    s_cselect_b32 s6, s4, 0x7c00
+; GFX9-SDAG-NEXT:    s_cmpk_eq_i32 s10, 0x40f
+; GFX9-SDAG-NEXT:    s_cselect_b32 s6, s6, s9
+; GFX9-SDAG-NEXT:    s_lshr_b32 s5, s5, 16
+; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s7, v1
+; GFX9-SDAG-NEXT:    s_and_b32 s5, s5, 0x8000
+; GFX9-SDAG-NEXT:    s_and_b32 s9, s7, 0x1ff
+; GFX9-SDAG-NEXT:    s_or_b32 s5, s5, s6
+; GFX9-SDAG-NEXT:    s_or_b32 s6, s9, s8
+; GFX9-SDAG-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX9-SDAG-NEXT:    s_lshr_b32 s8, s7, 8
+; GFX9-SDAG-NEXT:    s_bfe_u32 s9, s7, 0xb0014
+; GFX9-SDAG-NEXT:    s_and_b32 s8, s8, 0xffe
+; GFX9-SDAG-NEXT:    s_sub_i32 s10, 0x3f1, s9
+; GFX9-SDAG-NEXT:    s_or_b32 s6, s8, s6
+; GFX9-SDAG-NEXT:    v_med3_i32 v0, s10, 0, 13
+; GFX9-SDAG-NEXT:    s_or_b32 s8, s6, 0x1000
+; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s10, v0
 ; GFX9-SDAG-NEXT:    s_lshr_b32 s11, s8, s10
 ; GFX9-SDAG-NEXT:    s_lshl_b32 s10, s11, s10
 ; GFX9-SDAG-NEXT:    s_cmp_lg_u32 s10, s8
@@ -2536,7 +2566,7 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; GFX9-SDAG-NEXT:    s_addk_i32 s9, 0xfc10
 ; GFX9-SDAG-NEXT:    s_lshl_b32 s10, s9, 12
 ; GFX9-SDAG-NEXT:    s_or_b32 s8, s11, s8
-; GFX9-SDAG-NEXT:    s_or_b32 s10, s7, s10
+; GFX9-SDAG-NEXT:    s_or_b32 s10, s6, s10
 ; GFX9-SDAG-NEXT:    s_cmp_lt_i32 s9, 1
 ; GFX9-SDAG-NEXT:    s_cselect_b32 s8, s8, s10
 ; GFX9-SDAG-NEXT:    s_and_b32 s10, s8, 7
@@ -2549,51 +2579,11 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; GFX9-SDAG-NEXT:    s_add_i32 s8, s8, s10
 ; GFX9-SDAG-NEXT:    s_cmp_lt_i32 s9, 31
 ; GFX9-SDAG-NEXT:    s_cselect_b32 s8, s8, 0x7c00
-; GFX9-SDAG-NEXT:    s_cmp_lg_u32 s7, 0
-; GFX9-SDAG-NEXT:    s_cselect_b32 s7, s4, 0x7c00
-; GFX9-SDAG-NEXT:    s_cmpk_eq_i32 s9, 0x40f
-; GFX9-SDAG-NEXT:    s_cselect_b32 s7, s7, s8
-; GFX9-SDAG-NEXT:    s_and_b32 s8, s6, 0x1ff
-; GFX9-SDAG-NEXT:    v_or_b32_e32 v0, s8, v0
-; GFX9-SDAG-NEXT:    s_lshr_b32 s5, s5, 16
-; GFX9-SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; GFX9-SDAG-NEXT:    s_lshr_b32 s9, s6, 8
-; GFX9-SDAG-NEXT:    s_bfe_u32 s10, s6, 0xb0014
-; GFX9-SDAG-NEXT:    s_and_b32 s5, s5, 0x8000
-; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; GFX9-SDAG-NEXT:    s_and_b32 s8, s9, 0xffe
-; GFX9-SDAG-NEXT:    s_sub_i32 s9, 0x3f1, s10
-; GFX9-SDAG-NEXT:    s_or_b32 s5, s5, s7
-; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX9-SDAG-NEXT:    v_med3_i32 v1, s9, 0, 13
-; GFX9-SDAG-NEXT:    s_or_b32 s7, s8, s7
-; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s9, v1
-; GFX9-SDAG-NEXT:    s_or_b32 s8, s7, 0x1000
-; GFX9-SDAG-NEXT:    s_lshr_b32 s11, s8, s9
-; GFX9-SDAG-NEXT:    s_lshl_b32 s9, s11, s9
-; GFX9-SDAG-NEXT:    s_cmp_lg_u32 s9, s8
-; GFX9-SDAG-NEXT:    s_cselect_b32 s8, 1, 0
-; GFX9-SDAG-NEXT:    s_addk_i32 s10, 0xfc10
-; GFX9-SDAG-NEXT:    s_lshl_b32 s9, s10, 12
-; GFX9-SDAG-NEXT:    s_or_b32 s8, s11, s8
-; GFX9-SDAG-NEXT:    s_or_b32 s9, s7, s9
-; GFX9-SDAG-NEXT:    s_cmp_lt_i32 s10, 1
-; GFX9-SDAG-NEXT:    s_cselect_b32 s8, s8, s9
-; GFX9-SDAG-NEXT:    s_and_b32 s9, s8, 7
-; GFX9-SDAG-NEXT:    s_cmp_gt_i32 s9, 5
-; GFX9-SDAG-NEXT:    s_cselect_b32 s11, 1, 0
-; GFX9-SDAG-NEXT:    s_cmp_eq_u32 s9, 3
-; GFX9-SDAG-NEXT:    s_cselect_b32 s9, 1, 0
-; GFX9-SDAG-NEXT:    s_lshr_b32 s8, s8, 2
-; GFX9-SDAG-NEXT:    s_or_b32 s9, s9, s11
-; GFX9-SDAG-NEXT:    s_add_i32 s8, s8, s9
-; GFX9-SDAG-NEXT:    s_cmp_lt_i32 s10, 31
-; GFX9-SDAG-NEXT:    s_cselect_b32 s8, s8, 0x7c00
-; GFX9-SDAG-NEXT:    s_cmp_lg_u32 s7, 0
+; GFX9-SDAG-NEXT:    s_cmp_lg_u32 s6, 0
 ; GFX9-SDAG-NEXT:    s_cselect_b32 s4, s4, 0x7c00
-; GFX9-SDAG-NEXT:    s_cmpk_eq_i32 s10, 0x40f
+; GFX9-SDAG-NEXT:    s_cmpk_eq_i32 s9, 0x40f
 ; GFX9-SDAG-NEXT:    s_cselect_b32 s4, s4, s8
-; GFX9-SDAG-NEXT:    s_lshr_b32 s6, s6, 16
+; GFX9-SDAG-NEXT:    s_lshr_b32 s6, s7, 16
 ; GFX9-SDAG-NEXT:    s_and_b32 s6, s6, 0x8000
 ; GFX9-SDAG-NEXT:    s_or_b32 s4, s6, s4
 ; GFX9-SDAG-NEXT:    s_pack_ll_b32_b16 s4, s4, s5
@@ -2707,25 +2697,63 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; GFX950-SDAG-NEXT:    s_mov_b32 s4, s10
 ; GFX950-SDAG-NEXT:    s_mov_b32 s5, s11
 ; GFX950-SDAG-NEXT:    buffer_load_dwordx4 v[0:3], off, s[4:7], 0
-; GFX950-SDAG-NEXT:    s_mov_b32 s0, s8
 ; GFX950-SDAG-NEXT:    s_mov_b32 s1, s9
+; GFX950-SDAG-NEXT:    s_mov_b32 s0, s8
 ; GFX950-SDAG-NEXT:    s_movk_i32 s4, 0x7e00
 ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s5, v3
-; GFX950-SDAG-NEXT:    s_and_b32 s7, s5, 0x1ff
-; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s6, v1
-; GFX950-SDAG-NEXT:    v_or_b32_e32 v1, s7, v2
-; GFX950-SDAG-NEXT:    s_lshr_b32 s8, s5, 8
-; GFX950-SDAG-NEXT:    s_bfe_u32 s9, s5, 0xb0014
-; GFX950-SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v1
-; GFX950-SDAG-NEXT:    s_and_b32 s7, s8, 0xffe
-; GFX950-SDAG-NEXT:    s_sub_i32 s8, 0x3f1, s9
-; GFX950-SDAG-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
-; GFX950-SDAG-NEXT:    v_med3_i32 v2, s8, 0, 13
-; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s8, v1
-; GFX950-SDAG-NEXT:    s_or_b32 s7, s7, s8
-; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s10, v2
-; GFX950-SDAG-NEXT:    s_or_b32 s8, s7, 0x1000
+; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s6, v2
+; GFX950-SDAG-NEXT:    s_and_b32 s9, s5, 0x1ff
+; GFX950-SDAG-NEXT:    s_or_b32 s6, s9, s6
+; GFX950-SDAG-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX950-SDAG-NEXT:    s_lshr_b32 s9, s5, 8
+; GFX950-SDAG-NEXT:    s_bfe_u32 s10, s5, 0xb0014
+; GFX950-SDAG-NEXT:    s_and_b32 s9, s9, 0xffe
+; GFX950-SDAG-NEXT:    s_sub_i32 s11, 0x3f1, s10
+; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s8, v0
+; GFX950-SDAG-NEXT:    s_or_b32 s6, s9, s6
+; GFX950-SDAG-NEXT:    v_med3_i32 v0, s11, 0, 13
+; GFX950-SDAG-NEXT:    s_or_b32 s9, s6, 0x1000
+; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s11, v0
+; GFX950-SDAG-NEXT:    s_lshr_b32 s12, s9, s11
+; GFX950-SDAG-NEXT:    s_lshl_b32 s11, s12, s11
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s11, s9
+; GFX950-SDAG-NEXT:    s_cselect_b32 s9, 1, 0
+; GFX950-SDAG-NEXT:    s_addk_i32 s10, 0xfc10
+; GFX950-SDAG-NEXT:    s_lshl_b32 s11, s10, 12
+; GFX950-SDAG-NEXT:    s_or_b32 s9, s12, s9
+; GFX950-SDAG-NEXT:    s_or_b32 s11, s6, s11
+; GFX950-SDAG-NEXT:    s_cmp_lt_i32 s10, 1
+; GFX950-SDAG-NEXT:    s_cselect_b32 s9, s9, s11
+; GFX950-SDAG-NEXT:    s_and_b32 s11, s9, 7
+; GFX950-SDAG-NEXT:    s_cmp_gt_i32 s11, 5
+; GFX950-SDAG-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX950-SDAG-NEXT:    s_cmp_eq_u32 s11, 3
+; GFX950-SDAG-NEXT:    s_cselect_b32 s11, 1, 0
+; GFX950-SDAG-NEXT:    s_lshr_b32 s9, s9, 2
+; GFX950-SDAG-NEXT:    s_or_b32 s11, s11, s12
+; GFX950-SDAG-NEXT:    s_add_i32 s9, s9, s11
+; GFX950-SDAG-NEXT:    s_cmp_lt_i32 s10, 31
+; GFX950-SDAG-NEXT:    s_cselect_b32 s9, s9, 0x7c00
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s6, 0
+; GFX950-SDAG-NEXT:    s_cselect_b32 s6, s4, 0x7c00
+; GFX950-SDAG-NEXT:    s_cmpk_eq_i32 s10, 0x40f
+; GFX950-SDAG-NEXT:    s_cselect_b32 s6, s6, s9
+; GFX950-SDAG-NEXT:    s_lshr_b32 s5, s5, 16
+; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s7, v1
+; GFX950-SDAG-NEXT:    s_and_b32 s5, s5, 0x8000
+; GFX950-SDAG-NEXT:    s_and_b32 s9, s7, 0x1ff
+; GFX950-SDAG-NEXT:    s_or_b32 s5, s5, s6
+; GFX950-SDAG-NEXT:    s_or_b32 s6, s9, s8
+; GFX950-SDAG-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX950-SDAG-NEXT:    s_lshr_b32 s8, s7, 8
+; GFX950-SDAG-NEXT:    s_bfe_u32 s9, s7, 0xb0014
+; GFX950-SDAG-NEXT:    s_and_b32 s8, s8, 0xffe
+; GFX950-SDAG-NEXT:    s_sub_i32 s10, 0x3f1, s9
+; GFX950-SDAG-NEXT:    s_or_b32 s6, s8, s6
+; GFX950-SDAG-NEXT:    v_med3_i32 v0, s10, 0, 13
+; GFX950-SDAG-NEXT:    s_or_b32 s8, s6, 0x1000
+; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s10, v0
 ; GFX950-SDAG-NEXT:    s_lshr_b32 s11, s8, s10
 ; GFX950-SDAG-NEXT:    s_lshl_b32 s10, s11, s10
 ; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s10, s8
@@ -2733,7 +2761,7 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; GFX950-SDAG-NEXT:    s_addk_i32 s9, 0xfc10
 ; GFX950-SDAG-NEXT:    s_lshl_b32 s10, s9, 12
 ; GFX950-SDAG-NEXT:    s_or_b32 s8, s11, s8
-; GFX950-SDAG-NEXT:    s_or_b32 s10, s7, s10
+; GFX950-SDAG-NEXT:    s_or_b32 s10, s6, s10
 ; GFX950-SDAG-NEXT:    s_cmp_lt_i32 s9, 1
 ; GFX950-SDAG-NEXT:    s_cselect_b32 s8, s8, s10
 ; GFX950-SDAG-NEXT:    s_and_b32 s10, s8, 7
@@ -2746,51 +2774,11 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; GFX950-SDAG-NEXT:    s_add_i32 s8, s8, s10
 ; GFX950-SDAG-NEXT:    s_cmp_lt_i32 s9, 31
 ; GFX950-SDAG-NEXT:    s_cselect_b32 s8, s8, 0x7c00
-; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s7, 0
-; GFX950-SDAG-NEXT:    s_cselect_b32 s7, s4, 0x7c00
-; GFX950-SDAG-NEXT:    s_cmpk_eq_i32 s9, 0x40f
-; GFX950-SDAG-NEXT:    s_cselect_b32 s7, s7, s8
-; GFX950-SDAG-NEXT:    s_and_b32 s8, s6, 0x1ff
-; GFX950-SDAG-NEXT:    v_or_b32_e32 v0, s8, v0
-; GFX950-SDAG-NEXT:    s_lshr_b32 s5, s5, 16
-; GFX950-SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; GFX950-SDAG-NEXT:    s_lshr_b32 s9, s6, 8
-; GFX950-SDAG-NEXT:    s_bfe_u32 s10, s6, 0xb0014
-; GFX950-SDAG-NEXT:    s_and_b32 s5, s5, 0x8000
-; GFX950-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; GFX950-SDAG-NEXT:    s_and_b32 s8, s9, 0xffe
-; GFX950-SDAG-NEXT:    s_sub_i32 s9, 0x3f1, s10
-; GFX950-SDAG-NEXT:    s_or_b32 s5, s5, s7
-; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s7, v0
-; GFX950-SDAG-NEXT:    v_med3_i32 v1, s9, 0, 13
-; GFX950-SDAG-NEXT:    s_or_b32 s7, s8, s7
-; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s9, v1
-; GFX950-SDAG-NEXT:    s_or_b32 s8, s7, 0x1000
-; GFX950-SDAG-NEXT:    s_lshr_b32 s11, s8, s9
-; GFX950-SDAG-NEXT:    s_lshl_b32 s9, s11, s9
-; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s9, s8
-; GFX950-SDAG-NEXT:    s_cselect_b32 s8, 1, 0
-; GFX950-SDAG-NEXT:    s_addk_i32 s10, 0xfc10
-; GFX950-SDAG-NEXT:    s_lshl_b32 s9, s10, 12
-; GFX950-SDAG-NEXT:    s_or_b32 s8, s11, s8
-; GFX950-SDAG-NEXT:    s_or_b32 s9, s7, s9
-; GFX950-SDAG-NEXT:    s_cmp_lt_i32 s10, 1
-; GFX950-SDAG-NEXT:    s_cselect_b32 s8, s8, s9
-; GFX950-SDAG-NEXT:    s_and_b32 s9, s8, 7
-; GFX950-SDAG-NEXT:    s_cmp_gt_i32 s9, 5
-; GFX950-SDAG-NEXT:    s_cselect_b32 s11, 1, 0
-; GFX950-SDAG-NEXT:    s_cmp_eq_u32 s9, 3
-; GFX950-SDAG-NEXT:    s_cselect_b32 s9, 1, 0
-; GFX950-SDAG-NEXT:    s_lshr_b32 s8, s8, 2
-; GFX950-SDAG-NEXT:    s_or_b32 s9, s9, s11
-; GFX950-SDAG-NEXT:    s_add_i32 s8, s8, s9
-; GFX950-SDAG-NEXT:    s_cmp_lt_i32 s10, 31
-; GFX950-SDAG-NEXT:    s_cselect_b32 s8, s8, 0x7c00
-; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s7, 0
+; GFX950-SDAG-NEXT:    s_cmp_lg_u32 s6, 0
 ; GFX950-SDAG-NEXT:    s_cselect_b32 s4, s4, 0x7c00
-; GFX950-SDAG-NEXT:    s_cmpk_eq_i32 s10, 0x40f
+; GFX950-SDAG-NEXT:    s_cmpk_eq_i32 s9, 0x40f
 ; GFX950-SDAG-NEXT:    s_cselect_b32 s4, s4, s8
-; GFX950-SDAG-NEXT:    s_lshr_b32 s6, s6, 16
+; GFX950-SDAG-NEXT:    s_lshr_b32 s6, s7, 16
 ; GFX950-SDAG-NEXT:    s_and_b32 s6, s6, 0x8000
 ; GFX950-SDAG-NEXT:    s_or_b32 s4, s6, s4
 ; GFX950-SDAG-NEXT:    s_pack_ll_b32_b16 s4, s4, s5
@@ -2906,32 +2894,32 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; GFX11-SDAG-TRUE16-NEXT:    buffer_load_b128 v[0:3], off, s[8:11], 0
 ; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s2, v3
-; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s3, s2, 0x1ff
+; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s3, v2
+; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s4, s2, 0x1ff
+; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s3, s4, s3
+; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-SDAG-TRUE16-NEXT:    s_bfe_u32 s4, s2, 0xb0014
+; GFX11-SDAG-TRUE16-NEXT:    s_sub_i32 s5, 0x3f1, s4
+; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v2, s5, 0, 13
 ; GFX11-SDAG-TRUE16-NEXT:    s_lshr_b32 s5, s2, 8
-; GFX11-SDAG-TRUE16-NEXT:    v_or_b32_e32 v2, s3, v2
-; GFX11-SDAG-TRUE16-NEXT:    s_bfe_u32 s3, s2, 0xb0014
 ; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s5, s5, 0xffe
-; GFX11-SDAG-TRUE16-NEXT:    s_sub_i32 s4, 0x3f1, s3
-; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
-; GFX11-SDAG-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v2
-; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v3, s4, 0, 13
-; GFX11-SDAG-TRUE16-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
-; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s8, v3
-; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s4, v2
-; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s4, s5, s4
-; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s5, s4, 0x1000
+; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s8, v2
+; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s3, s5, s3
+; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s5, s3, 0x1000
 ; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-SDAG-TRUE16-NEXT:    s_lshr_b32 s9, s5, s8
 ; GFX11-SDAG-TRUE16-NEXT:    s_lshl_b32 s8, s9, s8
 ; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
 ; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s8, s5
 ; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s5, 1, 0
-; GFX11-SDAG-TRUE16-NEXT:    s_addk_i32 s3, 0xfc10
+; GFX11-SDAG-TRUE16-NEXT:    s_addk_i32 s4, 0xfc10
 ; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s5, s9, s5
-; GFX11-SDAG-TRUE16-NEXT:    s_lshl_b32 s8, s3, 12
-; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s8, s4, s8
-; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s3, 1
+; GFX11-SDAG-TRUE16-NEXT:    s_lshl_b32 s8, s4, 12
+; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s8, s3, s8
+; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s4, 1
 ; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s5, s5, s8
 ; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s8, s5, 7
@@ -2943,65 +2931,65 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s8, s8, s9
 ; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-SDAG-TRUE16-NEXT:    s_add_i32 s5, s5, s8
-; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s3, 31
+; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s4, 31
 ; GFX11-SDAG-TRUE16-NEXT:    s_movk_i32 s8, 0x7e00
 ; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s5, s5, 0x7c00
-; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s4, v1
+; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s3, 0
+; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s3, v1
 ; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s9, s8, 0x7c00
-; GFX11-SDAG-TRUE16-NEXT:    s_cmpk_eq_i32 s3, 0x40f
-; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, s9, s5
-; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s5, s4, 0x1ff
-; GFX11-SDAG-TRUE16-NEXT:    s_lshr_b32 s10, s4, 8
-; GFX11-SDAG-TRUE16-NEXT:    v_or_b32_e32 v0, s5, v0
-; GFX11-SDAG-TRUE16-NEXT:    s_bfe_u32 s5, s4, 0xb0014
-; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s10, s10, 0xffe
-; GFX11-SDAG-TRUE16-NEXT:    s_sub_i32 s9, 0x3f1, s5
+; GFX11-SDAG-TRUE16-NEXT:    s_cmpk_eq_i32 s4, 0x40f
+; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s5, s9, s5
 ; GFX11-SDAG-TRUE16-NEXT:    s_lshr_b32 s2, s2, 16
-; GFX11-SDAG-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v0
-; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v1, s9, 0, 13
+; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s9, s3, 0x1ff
 ; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s2, s2, 0x8000
-; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
-; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s2, s2, s3
-; GFX11-SDAG-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s11, v1
-; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s9, s10, s9
-; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s10, s9, 0x1000
+; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s2, s2, s5
+; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s4, s9, s4
+; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-SDAG-TRUE16-NEXT:    s_bfe_u32 s5, s3, 0xb0014
+; GFX11-SDAG-TRUE16-NEXT:    s_sub_i32 s9, 0x3f1, s5
+; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v0, s9, 0, 13
+; GFX11-SDAG-TRUE16-NEXT:    s_lshr_b32 s9, s3, 8
+; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s9, s9, 0xffe
+; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s10, v0
+; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s4, s9, s4
+; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s9, s4, 0x1000
 ; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-TRUE16-NEXT:    s_lshr_b32 s12, s10, s11
-; GFX11-SDAG-TRUE16-NEXT:    s_lshl_b32 s11, s12, s11
+; GFX11-SDAG-TRUE16-NEXT:    s_lshr_b32 s11, s9, s10
+; GFX11-SDAG-TRUE16-NEXT:    s_lshl_b32 s10, s11, s10
 ; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s11, s10
-; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s10, s9
+; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s9, 1, 0
 ; GFX11-SDAG-TRUE16-NEXT:    s_addk_i32 s5, 0xfc10
-; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s3, s12, s3
+; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s9, s11, s9
 ; GFX11-SDAG-TRUE16-NEXT:    s_lshl_b32 s10, s5, 12
-; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s10, s9, s10
+; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s10, s4, s10
 ; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s5, 1
-; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, s3, s10
+; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s9, s9, s10
 ; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s10, s3, 7
+; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s10, s9, 7
 ; GFX11-SDAG-TRUE16-NEXT:    s_cmp_gt_i32 s10, 5
 ; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s11, 1, 0
 ; GFX11-SDAG-TRUE16-NEXT:    s_cmp_eq_u32 s10, 3
 ; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s10, 1, 0
-; GFX11-SDAG-TRUE16-NEXT:    s_lshr_b32 s3, s3, 2
+; GFX11-SDAG-TRUE16-NEXT:    s_lshr_b32 s9, s9, 2
 ; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s10, s10, s11
 ; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-SDAG-TRUE16-NEXT:    s_add_i32 s3, s3, s10
+; GFX11-SDAG-TRUE16-NEXT:    s_add_i32 s9, s9, s10
 ; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s5, 31
-; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, s3, 0x7c00
-; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s9, 0
-; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s8, s8, 0x7c00
+; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s9, s9, 0x7c00
+; GFX11-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s4, 0
+; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s4, s8, 0x7c00
 ; GFX11-SDAG-TRUE16-NEXT:    s_cmpk_eq_i32 s5, 0x40f
 ; GFX11-SDAG-TRUE16-NEXT:    s_mov_b32 s5, s1
-; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, s8, s3
-; GFX11-SDAG-TRUE16-NEXT:    s_lshr_b32 s4, s4, 16
+; GFX11-SDAG-TRUE16-NEXT:    s_cselect_b32 s4, s4, s9
+; GFX11-SDAG-TRUE16-NEXT:    s_lshr_b32 s3, s3, 16
 ; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s4, s4, 0x8000
-; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s3, s4, s3
+; GFX11-SDAG-TRUE16-NEXT:    s_and_b32 s3, s3, 0x8000
+; GFX11-SDAG-TRUE16-NEXT:    s_or_b32 s3, s3, s4
 ; GFX11-SDAG-TRUE16-NEXT:    s_mov_b32 s4, s0
 ; GFX11-SDAG-TRUE16-NEXT:    s_pack_ll_b32_b16 s2, s3, s2
 ; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
@@ -3022,32 +3010,32 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; GFX11-SDAG-FAKE16-NEXT:    buffer_load_b128 v[0:3], off, s[8:11], 0
 ; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s2, v3
-; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s3, s2, 0x1ff
+; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s3, v2
+; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s4, s2, 0x1ff
+; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s3, s4, s3
+; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-SDAG-FAKE16-NEXT:    s_bfe_u32 s4, s2, 0xb0014
+; GFX11-SDAG-FAKE16-NEXT:    s_sub_i32 s5, 0x3f1, s4
+; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v2, s5, 0, 13
 ; GFX11-SDAG-FAKE16-NEXT:    s_lshr_b32 s5, s2, 8
-; GFX11-SDAG-FAKE16-NEXT:    v_or_b32_e32 v2, s3, v2
-; GFX11-SDAG-FAKE16-NEXT:    s_bfe_u32 s3, s2, 0xb0014
 ; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s5, s5, 0xffe
-; GFX11-SDAG-FAKE16-NEXT:    s_sub_i32 s4, 0x3f1, s3
-; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
-; GFX11-SDAG-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v2
-; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v3, s4, 0, 13
-; GFX11-SDAG-FAKE16-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
-; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s8, v3
-; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s4, v2
-; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s4, s5, s4
-; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s5, s4, 0x1000
+; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s8, v2
+; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s3, s5, s3
+; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s5, s3, 0x1000
 ; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-SDAG-FAKE16-NEXT:    s_lshr_b32 s9, s5, s8
 ; GFX11-SDAG-FAKE16-NEXT:    s_lshl_b32 s8, s9, s8
 ; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
 ; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s8, s5
 ; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s5, 1, 0
-; GFX11-SDAG-FAKE16-NEXT:    s_addk_i32 s3, 0xfc10
+; GFX11-SDAG-FAKE16-NEXT:    s_addk_i32 s4, 0xfc10
 ; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s5, s9, s5
-; GFX11-SDAG-FAKE16-NEXT:    s_lshl_b32 s8, s3, 12
-; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s8, s4, s8
-; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s3, 1
+; GFX11-SDAG-FAKE16-NEXT:    s_lshl_b32 s8, s4, 12
+; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s8, s3, s8
+; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s4, 1
 ; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s5, s5, s8
 ; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s8, s5, 7
@@ -3059,65 +3047,65 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s8, s8, s9
 ; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-SDAG-FAKE16-NEXT:    s_add_i32 s5, s5, s8
-; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s3, 31
+; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s4, 31
 ; GFX11-SDAG-FAKE16-NEXT:    s_movk_i32 s8, 0x7e00
 ; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s5, s5, 0x7c00
-; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s4, v1
+; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s3, 0
+; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s3, v1
 ; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s9, s8, 0x7c00
-; GFX11-SDAG-FAKE16-NEXT:    s_cmpk_eq_i32 s3, 0x40f
-; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, s9, s5
-; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s5, s4, 0x1ff
-; GFX11-SDAG-FAKE16-NEXT:    s_lshr_b32 s10, s4, 8
-; GFX11-SDAG-FAKE16-NEXT:    v_or_b32_e32 v0, s5, v0
-; GFX11-SDAG-FAKE16-NEXT:    s_bfe_u32 s5, s4, 0xb0014
-; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s10, s10, 0xffe
-; GFX11-SDAG-FAKE16-NEXT:    s_sub_i32 s9, 0x3f1, s5
+; GFX11-SDAG-FAKE16-NEXT:    s_cmpk_eq_i32 s4, 0x40f
+; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s5, s9, s5
 ; GFX11-SDAG-FAKE16-NEXT:    s_lshr_b32 s2, s2, 16
-; GFX11-SDAG-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v0
-; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v1, s9, 0, 13
+; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s9, s3, 0x1ff
 ; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s2, s2, 0x8000
-; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
-; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s2, s2, s3
-; GFX11-SDAG-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s11, v1
-; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s9, s10, s9
-; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s10, s9, 0x1000
+; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s2, s2, s5
+; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s4, s9, s4
+; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-SDAG-FAKE16-NEXT:    s_bfe_u32 s5, s3, 0xb0014
+; GFX11-SDAG-FAKE16-NEXT:    s_sub_i32 s9, 0x3f1, s5
+; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v0, s9, 0, 13
+; GFX11-SDAG-FAKE16-NEXT:    s_lshr_b32 s9, s3, 8
+; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s9, s9, 0xffe
+; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s10, v0
+; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s4, s9, s4
+; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s9, s4, 0x1000
 ; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-FAKE16-NEXT:    s_lshr_b32 s12, s10, s11
-; GFX11-SDAG-FAKE16-NEXT:    s_lshl_b32 s11, s12, s11
+; GFX11-SDAG-FAKE16-NEXT:    s_lshr_b32 s11, s9, s10
+; GFX11-SDAG-FAKE16-NEXT:    s_lshl_b32 s10, s11, s10
 ; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s11, s10
-; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s10, s9
+; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s9, 1, 0
 ; GFX11-SDAG-FAKE16-NEXT:    s_addk_i32 s5, 0xfc10
-; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s3, s12, s3
+; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s9, s11, s9
 ; GFX11-SDAG-FAKE16-NEXT:    s_lshl_b32 s10, s5, 12
-; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s10, s9, s10
+; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s10, s4, s10
 ; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s5, 1
-; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, s3, s10
+; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s9, s9, s10
 ; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s10, s3, 7
+; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s10, s9, 7
 ; GFX11-SDAG-FAKE16-NEXT:    s_cmp_gt_i32 s10, 5
 ; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s11, 1, 0
 ; GFX11-SDAG-FAKE16-NEXT:    s_cmp_eq_u32 s10, 3
 ; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s10, 1, 0
-; GFX11-SDAG-FAKE16-NEXT:    s_lshr_b32 s3, s3, 2
+; GFX11-SDAG-FAKE16-NEXT:    s_lshr_b32 s9, s9, 2
 ; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s10, s10, s11
 ; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-SDAG-FAKE16-NEXT:    s_add_i32 s3, s3, s10
+; GFX11-SDAG-FAKE16-NEXT:    s_add_i32 s9, s9, s10
 ; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s5, 31
-; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, s3, 0x7c00
-; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s9, 0
-; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s8, s8, 0x7c00
+; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s9, s9, 0x7c00
+; GFX11-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s4, 0
+; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s4, s8, 0x7c00
 ; GFX11-SDAG-FAKE16-NEXT:    s_cmpk_eq_i32 s5, 0x40f
 ; GFX11-SDAG-FAKE16-NEXT:    s_mov_b32 s5, s1
-; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, s8, s3
-; GFX11-SDAG-FAKE16-NEXT:    s_lshr_b32 s4, s4, 16
+; GFX11-SDAG-FAKE16-NEXT:    s_cselect_b32 s4, s4, s9
+; GFX11-SDAG-FAKE16-NEXT:    s_lshr_b32 s3, s3, 16
 ; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s4, s4, 0x8000
-; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s3, s4, s3
+; GFX11-SDAG-FAKE16-NEXT:    s_and_b32 s3, s3, 0x8000
+; GFX11-SDAG-FAKE16-NEXT:    s_or_b32 s3, s3, s4
 ; GFX11-SDAG-FAKE16-NEXT:    s_mov_b32 s4, s0
 ; GFX11-SDAG-FAKE16-NEXT:    s_pack_ll_b32_b16 s2, s3, s2
 ; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
@@ -3349,32 +3337,32 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; GFX1250-SDAG-TRUE16-NEXT:    buffer_load_b128 v[0:3], off, s[8:11], null
 ; GFX1250-SDAG-TRUE16-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s2, v3
-; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s3, s2, 0x1ff
+; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s3, v2
+; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s4, s2, 0x1ff
+; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s3, s4, s3
+; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX1250-SDAG-TRUE16-NEXT:    s_bfe_u32 s4, s2, 0xb0014
+; GFX1250-SDAG-TRUE16-NEXT:    s_sub_co_i32 s5, 0x3f1, s4
+; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT:    v_med3_i32 v2, s5, 0, 13
 ; GFX1250-SDAG-TRUE16-NEXT:    s_lshr_b32 s5, s2, 8
-; GFX1250-SDAG-TRUE16-NEXT:    v_or_b32_e32 v2, s3, v2
-; GFX1250-SDAG-TRUE16-NEXT:    s_bfe_u32 s3, s2, 0xb0014
 ; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s5, s5, 0xffe
-; GFX1250-SDAG-TRUE16-NEXT:    s_sub_co_i32 s4, 0x3f1, s3
-; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
-; GFX1250-SDAG-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v2
-; GFX1250-SDAG-TRUE16-NEXT:    v_med3_i32 v3, s4, 0, 13
-; GFX1250-SDAG-TRUE16-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
-; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s8, v3
-; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s4, v2
-; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s4, s5, s4
-; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s5, s4, 0x1000
+; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s8, v2
+; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s3, s5, s3
+; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s5, s3, 0x1000
 ; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-TRUE16-NEXT:    s_lshr_b32 s9, s5, s8
 ; GFX1250-SDAG-TRUE16-NEXT:    s_lshl_b32 s8, s9, s8
 ; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s8, s5
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s5, 1, 0
-; GFX1250-SDAG-TRUE16-NEXT:    s_addk_co_i32 s3, 0xfc10
+; GFX1250-SDAG-TRUE16-NEXT:    s_addk_co_i32 s4, 0xfc10
 ; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s5, s9, s5
-; GFX1250-SDAG-TRUE16-NEXT:    s_lshl_b32 s8, s3, 12
-; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s8, s4, s8
-; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s3, 1
+; GFX1250-SDAG-TRUE16-NEXT:    s_lshl_b32 s8, s4, 12
+; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s8, s3, s8
+; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s4, 1
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s5, s5, s8
 ; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s8, s5, 7
@@ -3386,65 +3374,65 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s8, s8, s9
 ; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-SDAG-TRUE16-NEXT:    s_add_co_i32 s5, s5, s8
-; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s3, 31
+; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s4, 31
 ; GFX1250-SDAG-TRUE16-NEXT:    s_movk_i32 s8, 0x7e00
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s5, s5, 0x7c00
-; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s4, v1
+; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s3, 0
+; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s3, v1
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s9, s8, 0x7c00
-; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_eq_u32 s3, 0x40f
-; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, s9, s5
-; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s5, s4, 0x1ff
-; GFX1250-SDAG-TRUE16-NEXT:    s_lshr_b32 s10, s4, 8
-; GFX1250-SDAG-TRUE16-NEXT:    v_or_b32_e32 v0, s5, v0
-; GFX1250-SDAG-TRUE16-NEXT:    s_bfe_u32 s5, s4, 0xb0014
-; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s10, s10, 0xffe
-; GFX1250-SDAG-TRUE16-NEXT:    s_sub_co_i32 s9, 0x3f1, s5
+; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_eq_u32 s4, 0x40f
+; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s5, s9, s5
 ; GFX1250-SDAG-TRUE16-NEXT:    s_lshr_b32 s2, s2, 16
-; GFX1250-SDAG-TRUE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v0
-; GFX1250-SDAG-TRUE16-NEXT:    v_med3_i32 v1, s9, 0, 13
+; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s9, s3, 0x1ff
 ; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s2, s2, 0x8000
-; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
-; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s2, s2, s3
-; GFX1250-SDAG-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s11, v1
-; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s9, s10, s9
-; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s10, s9, 0x1000
+; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s2, s2, s5
+; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s4, s9, s4
+; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1250-SDAG-TRUE16-NEXT:    s_bfe_u32 s5, s3, 0xb0014
+; GFX1250-SDAG-TRUE16-NEXT:    s_sub_co_i32 s9, 0x3f1, s5
+; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT:    v_med3_i32 v0, s9, 0, 13
+; GFX1250-SDAG-TRUE16-NEXT:    s_lshr_b32 s9, s3, 8
+; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s9, s9, 0xffe
+; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT:    v_readfirstlane_b32 s10, v0
+; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s4, s9, s4
+; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s9, s4, 0x1000
 ; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX1250-SDAG-TRUE16-NEXT:    s_lshr_b32 s12, s10, s11
-; GFX1250-SDAG-TRUE16-NEXT:    s_lshl_b32 s11, s12, s11
+; GFX1250-SDAG-TRUE16-NEXT:    s_lshr_b32 s11, s9, s10
+; GFX1250-SDAG-TRUE16-NEXT:    s_lshl_b32 s10, s11, s10
 ; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
-; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s11, s10
-; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s10, s9
+; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s9, 1, 0
 ; GFX1250-SDAG-TRUE16-NEXT:    s_addk_co_i32 s5, 0xfc10
-; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s3, s12, s3
+; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s9, s11, s9
 ; GFX1250-SDAG-TRUE16-NEXT:    s_lshl_b32 s10, s5, 12
-; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s10, s9, s10
+; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s10, s4, s10
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s5, 1
-; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, s3, s10
+; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s9, s9, s10
 ; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s10, s3, 7
+; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s10, s9, 7
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_gt_i32 s10, 5
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s11, 1, 0
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_eq_u32 s10, 3
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s10, 1, 0
-; GFX1250-SDAG-TRUE16-NEXT:    s_lshr_b32 s3, s3, 2
+; GFX1250-SDAG-TRUE16-NEXT:    s_lshr_b32 s9, s9, 2
 ; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s10, s10, s11
 ; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX1250-SDAG-TRUE16-NEXT:    s_add_co_i32 s3, s3, s10
+; GFX1250-SDAG-TRUE16-NEXT:    s_add_co_i32 s9, s9, s10
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lt_i32 s5, 31
-; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, s3, 0x7c00
-; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s9, 0
-; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s8, s8, 0x7c00
+; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s9, s9, 0x7c00
+; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_lg_u32 s4, 0
+; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s4, s8, 0x7c00
 ; GFX1250-SDAG-TRUE16-NEXT:    s_cmp_eq_u32 s5, 0x40f
 ; GFX1250-SDAG-TRUE16-NEXT:    s_mov_b32 s5, s1
-; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s3, s8, s3
-; GFX1250-SDAG-TRUE16-NEXT:    s_lshr_b32 s4, s4, 16
+; GFX1250-SDAG-TRUE16-NEXT:    s_cselect_b32 s4, s4, s9
+; GFX1250-SDAG-TRUE16-NEXT:    s_lshr_b32 s3, s3, 16
 ; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s4, s4, 0x8000
-; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s3, s4, s3
+; GFX1250-SDAG-TRUE16-NEXT:    s_and_b32 s3, s3, 0x8000
+; GFX1250-SDAG-TRUE16-NEXT:    s_or_b32 s3, s3, s4
 ; GFX1250-SDAG-TRUE16-NEXT:    s_mov_b32 s4, s0
 ; GFX1250-SDAG-TRUE16-NEXT:    s_pack_ll_b32_b16 s2, s3, s2
 ; GFX1250-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
@@ -3466,32 +3454,32 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; GFX1250-SDAG-FAKE16-NEXT:    buffer_load_b128 v[0:3], off, s[8:11], null
 ; GFX1250-SDAG-FAKE16-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s2, v3
-; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s3, s2, 0x1ff
+; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s3, v2
+; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s4, s2, 0x1ff
+; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s3, s4, s3
+; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX1250-SDAG-FAKE16-NEXT:    s_bfe_u32 s4, s2, 0xb0014
+; GFX1250-SDAG-FAKE16-NEXT:    s_sub_co_i32 s5, 0x3f1, s4
+; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-FAKE16-NEXT:    v_med3_i32 v2, s5, 0, 13
 ; GFX1250-SDAG-FAKE16-NEXT:    s_lshr_b32 s5, s2, 8
-; GFX1250-SDAG-FAKE16-NEXT:    v_or_b32_e32 v2, s3, v2
-; GFX1250-SDAG-FAKE16-NEXT:    s_bfe_u32 s3, s2, 0xb0014
 ; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s5, s5, 0xffe
-; GFX1250-SDAG-FAKE16-NEXT:    s_sub_co_i32 s4, 0x3f1, s3
-; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
-; GFX1250-SDAG-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v2
-; GFX1250-SDAG-FAKE16-NEXT:    v_med3_i32 v3, s4, 0, 13
-; GFX1250-SDAG-FAKE16-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
-; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s8, v3
-; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s4, v2
-; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s4, s5, s4
-; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s5, s4, 0x1000
+; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s8, v2
+; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s3, s5, s3
+; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s5, s3, 0x1000
 ; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-FAKE16-NEXT:    s_lshr_b32 s9, s5, s8
 ; GFX1250-SDAG-FAKE16-NEXT:    s_lshl_b32 s8, s9, s8
 ; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s8, s5
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s5, 1, 0
-; GFX1250-SDAG-FAKE16-NEXT:    s_addk_co_i32 s3, 0xfc10
+; GFX1250-SDAG-FAKE16-NEXT:    s_addk_co_i32 s4, 0xfc10
 ; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s5, s9, s5
-; GFX1250-SDAG-FAKE16-NEXT:    s_lshl_b32 s8, s3, 12
-; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s8, s4, s8
-; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s3, 1
+; GFX1250-SDAG-FAKE16-NEXT:    s_lshl_b32 s8, s4, 12
+; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s8, s3, s8
+; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s4, 1
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s5, s5, s8
 ; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s8, s5, 7
@@ -3503,65 +3491,65 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
 ; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s8, s8, s9
 ; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-SDAG-FAKE16-NEXT:    s_add_co_i32 s5, s5, s8
-; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s3, 31
+; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s4, 31
 ; GFX1250-SDAG-FAKE16-NEXT:    s_movk_i32 s8, 0x7e00
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s5, s5, 0x7c00
-; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s4, v1
+; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s3, 0
+; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s3, v1
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s9, s8, 0x7c00
-; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_eq_u32 s3, 0x40f
-; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, s9, s5
-; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s5, s4, 0x1ff
-; GFX1250-SDAG-FAKE16-NEXT:    s_lshr_b32 s10, s4, 8
-; GFX1250-SDAG-FAKE16-NEXT:    v_or_b32_e32 v0, s5, v0
-; GFX1250-SDAG-FAKE16-NEXT:    s_bfe_u32 s5, s4, 0xb0014
-; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s10, s10, 0xffe
-; GFX1250-SDAG-FAKE16-NEXT:    s_sub_co_i32 s9, 0x3f1, s5
+; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_eq_u32 s4, 0x40f
+; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s4, v0
+; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s5, s9, s5
 ; GFX1250-SDAG-FAKE16-NEXT:    s_lshr_b32 s2, s2, 16
-; GFX1250-SDAG-FAKE16-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v0
-; GFX1250-SDAG-FAKE16-NEXT:    v_med3_i32 v1, s9, 0, 13
+; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s9, s3, 0x1ff
 ; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s2, s2, 0x8000
-; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
-; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s2, s2, s3
-; GFX1250-SDAG-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s11, v1
-; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s9, v0
-; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s9, s10, s9
-; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s10, s9, 0x1000
+; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s2, s2, s5
+; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s4, s9, s4
+; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1250-SDAG-FAKE16-NEXT:    s_bfe_u32 s5, s3, 0xb0014
+; GFX1250-SDAG-FAKE16-NEXT:    s_sub_co_i32 s9, 0x3f1, s5
+; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-FAKE16-NEXT:    v_med3_i32 v0, s9, 0, 13
+; GFX1250-SDAG-FAKE16-NEXT:    s_lshr_b32 s9, s3, 8
+; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s9, s9, 0xffe
+; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-FAKE16-NEXT:    v_readfirstlane_b32 s10, v0
+; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s4, s9, s4
+; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s9, s4, 0x1000
 ; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX1250-SDAG-FAKE16-NEXT:    s_lshr_b32 s12, s10, s11
-; GFX1250-SDAG-FAKE16-NEXT:    s_lshl_b32 s11, s12, s11
+; GFX1250-SDAG-FAKE16-NEXT:    s_lshr_b32 s11, s9, s10
+; GFX1250-SDAG-FAKE16-NEXT:    s_lshl_b32 s10, s11, s10
 ; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
-; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s11, s10
-; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, 1, 0
+; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s10, s9
+; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s9, 1, 0
 ; GFX1250-SDAG-FAKE16-NEXT:    s_addk_co_i32 s5, 0xfc10
-; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s3, s12, s3
+; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s9, s11, s9
 ; GFX1250-SDAG-FAKE16-NEXT:    s_lshl_b32 s10, s5, 12
-; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s10, s9, s10
+; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s10, s4, s10
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s5, 1
-; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, s3, s10
+; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s9, s9, s10
 ; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s10, s3, 7
+; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s10, s9, 7
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_gt_i32 s10, 5
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s11, 1, 0
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_eq_u32 s10, 3
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s10, 1, 0
-; GFX1250-SDAG-FAKE16-NEXT:    s_lshr_b32 s3, s3, 2
+; GFX1250-SDAG-FAKE16-NEXT:    s_lshr_b32 s9, s9, 2
 ; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s10, s10, s11
 ; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX1250-SDAG-FAKE16-NEXT:    s_add_co_i32 s3, s3, s10
+; GFX1250-SDAG-FAKE16-NEXT:    s_add_co_i32 s9, s9, s10
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lt_i32 s5, 31
-; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, s3, 0x7c00
-; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s9, 0
-; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s8, s8, 0x7c00
+; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s9, s9, 0x7c00
+; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_lg_u32 s4, 0
+; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s4, s8, 0x7c00
 ; GFX1250-SDAG-FAKE16-NEXT:    s_cmp_eq_u32 s5, 0x40f
 ; GFX1250-SDAG-FAKE16-NEXT:    s_mov_b32 s5, s1
-; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s3, s8, s3
-; GFX1250-SDAG-FAKE16-NEXT:    s_lshr_b32 s4, s4, 16
+; GFX1250-SDAG-FAKE16-NEXT:    s_cselect_b32 s4, s4, s9
+; GFX1250-SDAG-FAKE16-NEXT:    s_lshr_b32 s3, s3, 16
 ; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s4, s4, 0x8000
-; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s3, s4, s3
+; GFX1250-SDAG-FAKE16-NEXT:    s_and_b32 s3, s3, 0x8000
+; GFX1250-SDAG-FAKE16-NEXT:    s_or_b32 s3, s3, s4
 ; GFX1250-SDAG-FAKE16-NEXT:    s_mov_b32 s4, s0
 ; GFX1250-SDAG-FAKE16-NEXT:    s_pack_ll_b32_b16 s2, s3, s2
 ; GFX1250-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)

diff  --git a/llvm/test/CodeGen/AMDGPU/fptrunc.ll b/llvm/test/CodeGen/AMDGPU/fptrunc.ll
index d67f5016dbd31..f54f1b9ab1258 100644
--- a/llvm/test/CodeGen/AMDGPU/fptrunc.ll
+++ b/llvm/test/CodeGen/AMDGPU/fptrunc.ll
@@ -174,55 +174,53 @@ define amdgpu_kernel void @fptrunc_f64_to_f32_afn(ptr addrspace(1) %out, double
 define amdgpu_kernel void @fptrunc_f64_to_f16(ptr addrspace(1) %out, double %in) {
 ; SI-LABEL: fptrunc_f64_to_f16:
 ; SI:       ; %bb.0:
-; SI-NEXT:    s_load_dwordx4 s[4:7], s[4:5], 0x9
-; SI-NEXT:    s_mov_b32 s3, 0xf000
-; SI-NEXT:    s_mov_b32 s2, -1
+; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9
+; SI-NEXT:    s_mov_b32 s7, 0xf000
+; SI-NEXT:    s_mov_b32 s6, -1
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
-; SI-NEXT:    s_mov_b32 s0, s4
-; SI-NEXT:    s_lshr_b32 s4, s7, 8
-; SI-NEXT:    s_and_b32 s8, s4, 0xffe
-; SI-NEXT:    s_and_b32 s4, s7, 0x1ff
-; SI-NEXT:    s_or_b32 s4, s4, s6
-; SI-NEXT:    s_mov_b32 s1, s5
-; SI-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
-; SI-NEXT:    v_readfirstlane_b32 s4, v0
-; SI-NEXT:    s_bfe_u32 s6, s7, 0xb0014
-; SI-NEXT:    s_or_b32 s4, s8, s4
-; SI-NEXT:    s_sub_i32 s8, 0x3f1, s6
+; SI-NEXT:    s_mov_b32 s4, s0
+; SI-NEXT:    s_lshr_b32 s0, s3, 8
+; SI-NEXT:    s_mov_b32 s5, s1
+; SI-NEXT:    s_and_b32 s0, s0, 0xffe
+; SI-NEXT:    s_and_b32 s1, s3, 0x1ff
+; SI-NEXT:    s_or_b32 s1, s1, s2
+; SI-NEXT:    s_cselect_b32 s1, 1, 0
+; SI-NEXT:    s_bfe_u32 s2, s3, 0xb0014
+; SI-NEXT:    s_sub_i32 s8, 0x3f1, s2
+; SI-NEXT:    s_or_b32 s0, s0, s1
 ; SI-NEXT:    v_med3_i32 v0, s8, 0, 13
-; SI-NEXT:    s_or_b32 s5, s4, 0x1000
+; SI-NEXT:    s_or_b32 s1, s0, 0x1000
 ; SI-NEXT:    v_readfirstlane_b32 s8, v0
-; SI-NEXT:    s_lshr_b32 s9, s5, s8
+; SI-NEXT:    s_lshr_b32 s9, s1, s8
 ; SI-NEXT:    s_lshl_b32 s8, s9, s8
-; SI-NEXT:    s_cmp_lg_u32 s8, s5
-; SI-NEXT:    s_cselect_b32 s5, 1, 0
-; SI-NEXT:    s_addk_i32 s6, 0xfc10
-; SI-NEXT:    s_lshl_b32 s8, s6, 12
-; SI-NEXT:    s_or_b32 s5, s9, s5
-; SI-NEXT:    s_or_b32 s8, s4, s8
-; SI-NEXT:    s_cmp_lt_i32 s6, 1
-; SI-NEXT:    s_cselect_b32 s5, s5, s8
-; SI-NEXT:    s_and_b32 s8, s5, 7
+; SI-NEXT:    s_cmp_lg_u32 s8, s1
+; SI-NEXT:    s_cselect_b32 s1, 1, 0
+; SI-NEXT:    s_addk_i32 s2, 0xfc10
+; SI-NEXT:    s_lshl_b32 s8, s2, 12
+; SI-NEXT:    s_or_b32 s1, s9, s1
+; SI-NEXT:    s_or_b32 s8, s0, s8
+; SI-NEXT:    s_cmp_lt_i32 s2, 1
+; SI-NEXT:    s_cselect_b32 s1, s1, s8
+; SI-NEXT:    s_and_b32 s8, s1, 7
 ; SI-NEXT:    s_cmp_gt_i32 s8, 5
 ; SI-NEXT:    s_cselect_b32 s9, 1, 0
 ; SI-NEXT:    s_cmp_eq_u32 s8, 3
 ; SI-NEXT:    s_cselect_b32 s8, 1, 0
 ; SI-NEXT:    s_or_b32 s8, s8, s9
-; SI-NEXT:    s_lshr_b32 s5, s5, 2
-; SI-NEXT:    s_add_i32 s5, s5, s8
-; SI-NEXT:    s_cmp_lt_i32 s6, 31
-; SI-NEXT:    s_cselect_b32 s5, s5, 0x7c00
-; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_movk_i32 s4, 0x7e00
-; SI-NEXT:    s_cselect_b32 s4, s4, 0x7c00
-; SI-NEXT:    s_cmpk_eq_i32 s6, 0x40f
-; SI-NEXT:    s_cselect_b32 s4, s4, s5
-; SI-NEXT:    s_lshr_b32 s5, s7, 16
-; SI-NEXT:    s_and_b32 s5, s5, 0x8000
-; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    v_mov_b32_e32 v0, s4
-; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0
+; SI-NEXT:    s_lshr_b32 s1, s1, 2
+; SI-NEXT:    s_add_i32 s1, s1, s8
+; SI-NEXT:    s_cmp_lt_i32 s2, 31
+; SI-NEXT:    s_cselect_b32 s1, s1, 0x7c00
+; SI-NEXT:    s_cmp_lg_u32 s0, 0
+; SI-NEXT:    s_movk_i32 s0, 0x7e00
+; SI-NEXT:    s_cselect_b32 s0, s0, 0x7c00
+; SI-NEXT:    s_cmpk_eq_i32 s2, 0x40f
+; SI-NEXT:    s_cselect_b32 s0, s0, s1
+; SI-NEXT:    s_lshr_b32 s1, s3, 16
+; SI-NEXT:    s_and_b32 s1, s1, 0x8000
+; SI-NEXT:    s_or_b32 s0, s1, s0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
+; SI-NEXT:    buffer_store_short v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
 ; VI-SDAG-LABEL: fptrunc_f64_to_f16:
@@ -233,16 +231,14 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(ptr addrspace(1) %out, double %in)
 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-SDAG-NEXT:    s_mov_b32 s0, s4
 ; VI-SDAG-NEXT:    s_lshr_b32 s4, s7, 8
-; VI-SDAG-NEXT:    s_and_b32 s8, s4, 0xffe
-; VI-SDAG-NEXT:    s_and_b32 s4, s7, 0x1ff
-; VI-SDAG-NEXT:    s_or_b32 s4, s4, s6
 ; VI-SDAG-NEXT:    s_mov_b32 s1, s5
-; VI-SDAG-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; VI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
-; VI-SDAG-NEXT:    v_readfirstlane_b32 s4, v0
+; VI-SDAG-NEXT:    s_and_b32 s4, s4, 0xffe
+; VI-SDAG-NEXT:    s_and_b32 s5, s7, 0x1ff
+; VI-SDAG-NEXT:    s_or_b32 s5, s5, s6
+; VI-SDAG-NEXT:    s_cselect_b32 s5, 1, 0
 ; VI-SDAG-NEXT:    s_bfe_u32 s6, s7, 0xb0014
-; VI-SDAG-NEXT:    s_or_b32 s4, s8, s4
 ; VI-SDAG-NEXT:    s_sub_i32 s8, 0x3f1, s6
+; VI-SDAG-NEXT:    s_or_b32 s4, s4, s5
 ; VI-SDAG-NEXT:    v_med3_i32 v0, s8, 0, 13
 ; VI-SDAG-NEXT:    s_or_b32 s5, s4, 0x1000
 ; VI-SDAG-NEXT:    v_readfirstlane_b32 s8, v0
@@ -337,40 +333,38 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(ptr addrspace(1) %out, double %in)
 ; GFX10-SDAG-NEXT:    s_and_b32 s5, s3, 0x1ff
 ; GFX10-SDAG-NEXT:    s_and_b32 s4, s4, 0xffe
 ; GFX10-SDAG-NEXT:    s_or_b32 s2, s5, s2
-; GFX10-SDAG-NEXT:    s_cselect_b32 s2, -1, 0
-; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s2
-; GFX10-SDAG-NEXT:    s_bfe_u32 s2, s3, 0xb0014
-; GFX10-SDAG-NEXT:    s_sub_i32 s5, 0x3f1, s2
-; GFX10-SDAG-NEXT:    v_med3_i32 v1, s5, 0, 13
-; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v0
-; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s6, v1
-; GFX10-SDAG-NEXT:    s_or_b32 s4, s4, s5
-; GFX10-SDAG-NEXT:    s_or_b32 s5, s4, 0x1000
-; GFX10-SDAG-NEXT:    s_lshr_b32 s7, s5, s6
+; GFX10-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-SDAG-NEXT:    s_bfe_u32 s5, s3, 0xb0014
+; GFX10-SDAG-NEXT:    s_or_b32 s2, s4, s2
+; GFX10-SDAG-NEXT:    s_sub_i32 s6, 0x3f1, s5
+; GFX10-SDAG-NEXT:    s_or_b32 s4, s2, 0x1000
+; GFX10-SDAG-NEXT:    v_med3_i32 v0, s6, 0, 13
+; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s6, v0
+; GFX10-SDAG-NEXT:    s_lshr_b32 s7, s4, s6
 ; GFX10-SDAG-NEXT:    s_lshl_b32 s6, s7, s6
-; GFX10-SDAG-NEXT:    s_cmp_lg_u32 s6, s5
-; GFX10-SDAG-NEXT:    s_cselect_b32 s5, 1, 0
-; GFX10-SDAG-NEXT:    s_addk_i32 s2, 0xfc10
-; GFX10-SDAG-NEXT:    s_or_b32 s5, s7, s5
-; GFX10-SDAG-NEXT:    s_lshl_b32 s6, s2, 12
-; GFX10-SDAG-NEXT:    s_or_b32 s6, s4, s6
-; GFX10-SDAG-NEXT:    s_cmp_lt_i32 s2, 1
-; GFX10-SDAG-NEXT:    s_cselect_b32 s5, s5, s6
-; GFX10-SDAG-NEXT:    s_and_b32 s6, s5, 7
+; GFX10-SDAG-NEXT:    s_cmp_lg_u32 s6, s4
+; GFX10-SDAG-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX10-SDAG-NEXT:    s_addk_i32 s5, 0xfc10
+; GFX10-SDAG-NEXT:    s_or_b32 s4, s7, s4
+; GFX10-SDAG-NEXT:    s_lshl_b32 s6, s5, 12
+; GFX10-SDAG-NEXT:    s_or_b32 s6, s2, s6
+; GFX10-SDAG-NEXT:    s_cmp_lt_i32 s5, 1
+; GFX10-SDAG-NEXT:    s_cselect_b32 s4, s4, s6
+; GFX10-SDAG-NEXT:    s_and_b32 s6, s4, 7
 ; GFX10-SDAG-NEXT:    s_cmp_gt_i32 s6, 5
 ; GFX10-SDAG-NEXT:    s_cselect_b32 s7, 1, 0
 ; GFX10-SDAG-NEXT:    s_cmp_eq_u32 s6, 3
 ; GFX10-SDAG-NEXT:    s_cselect_b32 s6, 1, 0
-; GFX10-SDAG-NEXT:    s_lshr_b32 s5, s5, 2
+; GFX10-SDAG-NEXT:    s_lshr_b32 s4, s4, 2
 ; GFX10-SDAG-NEXT:    s_or_b32 s6, s6, s7
-; GFX10-SDAG-NEXT:    s_add_i32 s5, s5, s6
-; GFX10-SDAG-NEXT:    s_cmp_lt_i32 s2, 31
+; GFX10-SDAG-NEXT:    s_add_i32 s4, s4, s6
+; GFX10-SDAG-NEXT:    s_cmp_lt_i32 s5, 31
 ; GFX10-SDAG-NEXT:    s_movk_i32 s6, 0x7e00
-; GFX10-SDAG-NEXT:    s_cselect_b32 s5, s5, 0x7c00
-; GFX10-SDAG-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX10-SDAG-NEXT:    s_cselect_b32 s4, s6, 0x7c00
-; GFX10-SDAG-NEXT:    s_cmpk_eq_i32 s2, 0x40f
-; GFX10-SDAG-NEXT:    s_cselect_b32 s2, s4, s5
+; GFX10-SDAG-NEXT:    s_cselect_b32 s4, s4, 0x7c00
+; GFX10-SDAG-NEXT:    s_cmp_lg_u32 s2, 0
+; GFX10-SDAG-NEXT:    s_cselect_b32 s2, s6, 0x7c00
+; GFX10-SDAG-NEXT:    s_cmpk_eq_i32 s5, 0x40f
+; GFX10-SDAG-NEXT:    s_cselect_b32 s2, s2, s4
 ; GFX10-SDAG-NEXT:    s_lshr_b32 s3, s3, 16
 ; GFX10-SDAG-NEXT:    s_and_b32 s3, s3, 0x8000
 ; GFX10-SDAG-NEXT:    s_or_b32 s2, s3, s2
@@ -439,47 +433,42 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(ptr addrspace(1) %out, double %in)
 ; GFX11-SDAG-NEXT:    s_and_b32 s5, s3, 0x1ff
 ; GFX11-SDAG-NEXT:    s_and_b32 s4, s4, 0xffe
 ; GFX11-SDAG-NEXT:    s_or_b32 s2, s5, s2
-; GFX11-SDAG-NEXT:    s_cselect_b32 s2, -1, 0
-; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s2
-; GFX11-SDAG-NEXT:    s_bfe_u32 s2, s3, 0xb0014
-; GFX11-SDAG-NEXT:    s_sub_i32 s5, 0x3f1, s2
-; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX11-SDAG-NEXT:    v_med3_i32 v1, s5, 0, 13
-; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s5, v0
-; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s6, v1
-; GFX11-SDAG-NEXT:    s_or_b32 s4, s4, s5
-; GFX11-SDAG-NEXT:    s_or_b32 s5, s4, 0x1000
-; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-NEXT:    s_lshr_b32 s7, s5, s6
+; GFX11-SDAG-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-SDAG-NEXT:    s_bfe_u32 s5, s3, 0xb0014
+; GFX11-SDAG-NEXT:    s_or_b32 s2, s4, s2
+; GFX11-SDAG-NEXT:    s_sub_i32 s6, 0x3f1, s5
+; GFX11-SDAG-NEXT:    s_or_b32 s4, s2, 0x1000
+; GFX11-SDAG-NEXT:    v_med3_i32 v0, s6, 0, 13
+; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s6, v0
+; GFX11-SDAG-NEXT:    s_lshr_b32 s7, s4, s6
 ; GFX11-SDAG-NEXT:    s_lshl_b32 s6, s7, s6
 ; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-NEXT:    s_cmp_lg_u32 s6, s5
-; GFX11-SDAG-NEXT:    s_cselect_b32 s5, 1, 0
-; GFX11-SDAG-NEXT:    s_addk_i32 s2, 0xfc10
-; GFX11-SDAG-NEXT:    s_or_b32 s5, s7, s5
-; GFX11-SDAG-NEXT:    s_lshl_b32 s6, s2, 12
-; GFX11-SDAG-NEXT:    s_or_b32 s6, s4, s6
-; GFX11-SDAG-NEXT:    s_cmp_lt_i32 s2, 1
-; GFX11-SDAG-NEXT:    s_cselect_b32 s5, s5, s6
+; GFX11-SDAG-NEXT:    s_cmp_lg_u32 s6, s4
+; GFX11-SDAG-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-SDAG-NEXT:    s_addk_i32 s5, 0xfc10
+; GFX11-SDAG-NEXT:    s_or_b32 s4, s7, s4
+; GFX11-SDAG-NEXT:    s_lshl_b32 s6, s5, 12
+; GFX11-SDAG-NEXT:    s_or_b32 s6, s2, s6
+; GFX11-SDAG-NEXT:    s_cmp_lt_i32 s5, 1
+; GFX11-SDAG-NEXT:    s_cselect_b32 s4, s4, s6
 ; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX11-SDAG-NEXT:    s_and_b32 s6, s5, 7
+; GFX11-SDAG-NEXT:    s_and_b32 s6, s4, 7
 ; GFX11-SDAG-NEXT:    s_cmp_gt_i32 s6, 5
 ; GFX11-SDAG-NEXT:    s_cselect_b32 s7, 1, 0
 ; GFX11-SDAG-NEXT:    s_cmp_eq_u32 s6, 3
 ; GFX11-SDAG-NEXT:    s_cselect_b32 s6, 1, 0
-; GFX11-SDAG-NEXT:    s_lshr_b32 s5, s5, 2
+; GFX11-SDAG-NEXT:    s_lshr_b32 s4, s4, 2
 ; GFX11-SDAG-NEXT:    s_or_b32 s6, s6, s7
 ; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-SDAG-NEXT:    s_add_i32 s5, s5, s6
-; GFX11-SDAG-NEXT:    s_cmp_lt_i32 s2, 31
+; GFX11-SDAG-NEXT:    s_add_i32 s4, s4, s6
+; GFX11-SDAG-NEXT:    s_cmp_lt_i32 s5, 31
 ; GFX11-SDAG-NEXT:    s_movk_i32 s6, 0x7e00
-; GFX11-SDAG-NEXT:    s_cselect_b32 s5, s5, 0x7c00
-; GFX11-SDAG-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-SDAG-NEXT:    s_cselect_b32 s4, s6, 0x7c00
-; GFX11-SDAG-NEXT:    s_cmpk_eq_i32 s2, 0x40f
-; GFX11-SDAG-NEXT:    s_cselect_b32 s2, s4, s5
+; GFX11-SDAG-NEXT:    s_cselect_b32 s4, s4, 0x7c00
+; GFX11-SDAG-NEXT:    s_cmp_lg_u32 s2, 0
+; GFX11-SDAG-NEXT:    s_cselect_b32 s2, s6, 0x7c00
+; GFX11-SDAG-NEXT:    s_cmpk_eq_i32 s5, 0x40f
+; GFX11-SDAG-NEXT:    s_cselect_b32 s2, s2, s4
 ; GFX11-SDAG-NEXT:    s_lshr_b32 s3, s3, 16
 ; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-SDAG-NEXT:    s_and_b32 s3, s3, 0x8000

diff  --git a/llvm/test/CodeGen/AMDGPU/freeze.ll b/llvm/test/CodeGen/AMDGPU/freeze.ll
index 795ace141e019..7e04a8c6cbd34 100644
--- a/llvm/test/CodeGen/AMDGPU/freeze.ll
+++ b/llvm/test/CodeGen/AMDGPU/freeze.ll
@@ -15792,11 +15792,11 @@ define void @freeze_i1_scc(i32 inreg %a, i32 inreg %b, ptr addrspace(1) %ptrb) {
 ; GFX6-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX6-SDAG-NEXT:    s_cmp_eq_u32 s16, s17
 ; GFX6-SDAG-NEXT:    s_mov_b32 s6, 0
-; GFX6-SDAG-NEXT:    s_cselect_b64 s[8:9], -1, 0
+; GFX6-SDAG-NEXT:    s_cselect_b32 s8, 1, 0
 ; GFX6-SDAG-NEXT:    s_mov_b32 s7, 0xf000
 ; GFX6-SDAG-NEXT:    s_mov_b32 s4, s6
 ; GFX6-SDAG-NEXT:    s_mov_b32 s5, s6
-; GFX6-SDAG-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[8:9]
+; GFX6-SDAG-NEXT:    v_mov_b32_e32 v2, s8
 ; GFX6-SDAG-NEXT:    buffer_store_byte v2, v[0:1], s[4:7], 0 addr64
 ; GFX6-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0)
 ; GFX6-SDAG-NEXT:    s_setpc_b64 s[30:31]
@@ -15822,11 +15822,11 @@ define void @freeze_i1_scc(i32 inreg %a, i32 inreg %b, ptr addrspace(1) %ptrb) {
 ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX7-SDAG-NEXT:    s_cmp_eq_u32 s16, s17
 ; GFX7-SDAG-NEXT:    s_mov_b32 s6, 0
-; GFX7-SDAG-NEXT:    s_cselect_b64 s[8:9], -1, 0
+; GFX7-SDAG-NEXT:    s_cselect_b32 s8, 1, 0
 ; GFX7-SDAG-NEXT:    s_mov_b32 s7, 0xf000
 ; GFX7-SDAG-NEXT:    s_mov_b32 s4, s6
 ; GFX7-SDAG-NEXT:    s_mov_b32 s5, s6
-; GFX7-SDAG-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[8:9]
+; GFX7-SDAG-NEXT:    v_mov_b32_e32 v2, s8
 ; GFX7-SDAG-NEXT:    buffer_store_byte v2, v[0:1], s[4:7], 0 addr64
 ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]
@@ -15851,8 +15851,8 @@ define void @freeze_i1_scc(i32 inreg %a, i32 inreg %b, ptr addrspace(1) %ptrb) {
 ; GFX8-GFX803-SDAG:       ; %bb.0:
 ; GFX8-GFX803-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX8-GFX803-SDAG-NEXT:    s_cmp_eq_u32 s16, s17
-; GFX8-GFX803-SDAG-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GFX8-GFX803-SDAG-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]
+; GFX8-GFX803-SDAG-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX8-GFX803-SDAG-NEXT:    v_mov_b32_e32 v2, s4
 ; GFX8-GFX803-SDAG-NEXT:    flat_store_byte v[0:1], v2
 ; GFX8-GFX803-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX8-GFX803-SDAG-NEXT:    s_setpc_b64 s[30:31]
@@ -15874,8 +15874,8 @@ define void @freeze_i1_scc(i32 inreg %a, i32 inreg %b, ptr addrspace(1) %ptrb) {
 ; GFX8-GFX900-SDAG:       ; %bb.0:
 ; GFX8-GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX8-GFX900-SDAG-NEXT:    s_cmp_eq_u32 s16, s17
-; GFX8-GFX900-SDAG-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GFX8-GFX900-SDAG-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]
+; GFX8-GFX900-SDAG-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX8-GFX900-SDAG-NEXT:    v_mov_b32_e32 v2, s4
 ; GFX8-GFX900-SDAG-NEXT:    global_store_byte v[0:1], v2, off
 ; GFX8-GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX8-GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31]
@@ -15897,8 +15897,8 @@ define void @freeze_i1_scc(i32 inreg %a, i32 inreg %b, ptr addrspace(1) %ptrb) {
 ; GFX10-SDAG:       ; %bb.0:
 ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX10-SDAG-NEXT:    s_cmp_eq_u32 s16, s17
-; GFX10-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX10-SDAG-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX10-SDAG-NEXT:    v_mov_b32_e32 v2, s4
 ; GFX10-SDAG-NEXT:    global_store_byte v[0:1], v2, off
 ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -15918,8 +15918,8 @@ define void @freeze_i1_scc(i32 inreg %a, i32 inreg %b, ptr addrspace(1) %ptrb) {
 ; GFX11-SDAG:       ; %bb.0:
 ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-SDAG-NEXT:    s_cmp_eq_u32 s0, s1
-; GFX11-SDAG-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GFX11-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-SDAG-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX11-SDAG-NEXT:    global_store_b8 v[0:1], v2, off
 ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;

diff  --git a/llvm/test/CodeGen/AMDGPU/frem.ll b/llvm/test/CodeGen/AMDGPU/frem.ll
index 6d8fdbbe03b77..9b6156ee44b94 100644
--- a/llvm/test/CodeGen/AMDGPU/frem.ll
+++ b/llvm/test/CodeGen/AMDGPU/frem.ll
@@ -35,11 +35,17 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; SI-NEXT:    v_and_b32_e32 v3, 0x8000, v0
 ; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v4, v2
 ; SI-NEXT:    v_cndmask_b32_e32 v3, v0, v3, vcc
-; SI-NEXT:    s_cbranch_execz .LBB0_3
-; SI-NEXT:    s_branch .LBB0_8
+; SI-NEXT:    s_mov_b64 s[0:1], 0
+; SI-NEXT:    s_branch .LBB0_3
 ; SI-NEXT:  .LBB0_2:
+; SI-NEXT:    s_mov_b64 s[0:1], -1
 ; SI-NEXT:    ; implicit-def: $vgpr3
-; SI-NEXT:  .LBB0_3: ; %frem.compute
+; SI-NEXT:  .LBB0_3: ; %Flow18
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s0, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB0_9
+; SI-NEXT:  ; %bb.4: ; %frem.compute
 ; SI-NEXT:    s_mov_b32 s3, 0x7f800000
 ; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v4|, s3
 ; SI-NEXT:    v_frexp_exp_i32_f32_e32 v3, v4
@@ -74,11 +80,11 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; SI-NEXT:    v_div_fmas_f32 v4, v4, v6, v7
 ; SI-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.0
 ; SI-NEXT:    s_cmp_lt_i32 s1, 12
-; SI-NEXT:    s_cbranch_scc1 .LBB0_7
-; SI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; SI-NEXT:    s_cbranch_scc1 .LBB0_8
+; SI-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; SI-NEXT:    s_sub_i32 s1, s2, s3
 ; SI-NEXT:    s_add_i32 s1, s1, 11
-; SI-NEXT:  .LBB0_5: ; %frem.loop_body
+; SI-NEXT:  .LBB0_6: ; %frem.loop_body
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; SI-NEXT:    v_mov_b32_e32 v5, v3
 ; SI-NEXT:    v_mul_f32_e32 v3, v5, v4
@@ -90,10 +96,10 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; SI-NEXT:    s_add_i32 s1, s1, -11
 ; SI-NEXT:    v_ldexp_f32_e64 v3, v3, 11
 ; SI-NEXT:    s_cmp_gt_i32 s1, 11
-; SI-NEXT:    s_cbranch_scc1 .LBB0_5
-; SI-NEXT:  ; %bb.6: ; %Flow
+; SI-NEXT:    s_cbranch_scc1 .LBB0_6
+; SI-NEXT:  ; %bb.7: ; %Flow
 ; SI-NEXT:    v_mov_b32_e32 v3, v5
-; SI-NEXT:  .LBB0_7: ; %frem.loop_exit
+; SI-NEXT:  .LBB0_8: ; %frem.loop_exit
 ; SI-NEXT:    s_add_i32 s1, s1, -10
 ; SI-NEXT:    v_ldexp_f32_e64 v3, v3, s1
 ; SI-NEXT:    v_mul_f32_e32 v4, v3, v4
@@ -107,7 +113,7 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; SI-NEXT:    v_and_b32_e32 v3, 0x8000, v0
 ; SI-NEXT:    v_and_b32_e32 v2, 0x7fff, v2
 ; SI-NEXT:    v_or_b32_e32 v3, v2, v3
-; SI-NEXT:  .LBB0_8: ; %Flow19
+; SI-NEXT:  .LBB0_9: ; %Flow19
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cvt_f32_f16_e64 v0, |v0|
 ; SI-NEXT:    s_mov_b32 s0, 0x7f800000
@@ -144,11 +150,17 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; CI-NEXT:    v_and_b32_e32 v2, 0x8000, v0
 ; CI-NEXT:    v_cmp_eq_f32_e32 vcc, v4, v3
 ; CI-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc
-; CI-NEXT:    s_cbranch_execz .LBB0_3
-; CI-NEXT:    s_branch .LBB0_8
+; CI-NEXT:    s_mov_b64 s[0:1], 0
+; CI-NEXT:    s_branch .LBB0_3
 ; CI-NEXT:  .LBB0_2:
+; CI-NEXT:    s_mov_b64 s[0:1], -1
 ; CI-NEXT:    ; implicit-def: $vgpr2
-; CI-NEXT:  .LBB0_3: ; %frem.compute
+; CI-NEXT:  .LBB0_3: ; %Flow18
+; CI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CI-NEXT:    s_cselect_b32 s0, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s0, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB0_9
+; CI-NEXT:  ; %bb.4: ; %frem.compute
 ; CI-NEXT:    v_frexp_exp_i32_f32_e32 v7, v4
 ; CI-NEXT:    v_frexp_mant_f32_e32 v2, v4
 ; CI-NEXT:    v_frexp_mant_f32_e32 v4, v3
@@ -172,11 +184,11 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; CI-NEXT:    v_div_fmas_f32 v6, v6, v10, v11
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v4
 ; CI-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB0_7
-; CI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB0_8
+; CI-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; CI-NEXT:    v_sub_i32_e32 v4, vcc, v7, v8
 ; CI-NEXT:    v_add_i32_e32 v4, vcc, 11, v4
-; CI-NEXT:  .LBB0_5: ; %frem.loop_body
+; CI-NEXT:  .LBB0_6: ; %frem.loop_body
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v7, v5
 ; CI-NEXT:    v_mul_f32_e32 v5, v7, v6
@@ -188,10 +200,10 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; CI-NEXT:    v_add_i32_e32 v4, vcc, -11, v4
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v4
 ; CI-NEXT:    v_ldexp_f32_e64 v5, v5, 11
-; CI-NEXT:    s_cbranch_vccnz .LBB0_5
-; CI-NEXT:  ; %bb.6: ; %Flow
+; CI-NEXT:    s_cbranch_vccnz .LBB0_6
+; CI-NEXT:  ; %bb.7: ; %Flow
 ; CI-NEXT:    v_mov_b32_e32 v5, v7
-; CI-NEXT:  .LBB0_7: ; %frem.loop_exit
+; CI-NEXT:  .LBB0_8: ; %frem.loop_exit
 ; CI-NEXT:    v_add_i32_e32 v4, vcc, -10, v4
 ; CI-NEXT:    v_ldexp_f32_e32 v4, v5, v4
 ; CI-NEXT:    v_mul_f32_e32 v5, v4, v6
@@ -205,7 +217,7 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; CI-NEXT:    v_and_b32_e32 v3, 0x8000, v0
 ; CI-NEXT:    v_and_b32_e32 v2, 0x7fff, v2
 ; CI-NEXT:    v_or_b32_e32 v2, v2, v3
-; CI-NEXT:  .LBB0_8: ; %Flow19
+; CI-NEXT:  .LBB0_9: ; %Flow19
 ; CI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; CI-NEXT:    v_cvt_f32_f16_e64 v0, |v0|
 ; CI-NEXT:    s_mov_b32 s0, 0x7f800000
@@ -242,11 +254,17 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; VI-NEXT:    v_and_b32_e32 v2, 0x8000, v0
 ; VI-NEXT:    v_cmp_eq_f32_e32 vcc, v4, v3
 ; VI-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc
-; VI-NEXT:    s_cbranch_execz .LBB0_3
-; VI-NEXT:    s_branch .LBB0_8
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB0_3
 ; VI-NEXT:  .LBB0_2:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr2
-; VI-NEXT:  .LBB0_3: ; %frem.compute
+; VI-NEXT:  .LBB0_3: ; %Flow18
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB0_9
+; VI-NEXT:  ; %bb.4: ; %frem.compute
 ; VI-NEXT:    v_frexp_exp_i32_f32_e32 v7, v4
 ; VI-NEXT:    v_frexp_mant_f32_e32 v2, v4
 ; VI-NEXT:    v_frexp_mant_f32_e32 v4, v3
@@ -270,11 +288,11 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; VI-NEXT:    v_div_fmas_f32 v6, v6, v10, v11
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v4
 ; VI-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB0_7
-; VI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB0_8
+; VI-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; VI-NEXT:    v_sub_u32_e32 v4, vcc, v7, v8
 ; VI-NEXT:    v_add_u32_e32 v4, vcc, 11, v4
-; VI-NEXT:  .LBB0_5: ; %frem.loop_body
+; VI-NEXT:  .LBB0_6: ; %frem.loop_body
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v7, v5
 ; VI-NEXT:    v_mul_f32_e32 v5, v7, v6
@@ -286,10 +304,10 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; VI-NEXT:    v_add_u32_e32 v4, vcc, -11, v4
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v4
 ; VI-NEXT:    v_ldexp_f32 v5, v5, 11
-; VI-NEXT:    s_cbranch_vccnz .LBB0_5
-; VI-NEXT:  ; %bb.6: ; %Flow
+; VI-NEXT:    s_cbranch_vccnz .LBB0_6
+; VI-NEXT:  ; %bb.7: ; %Flow
 ; VI-NEXT:    v_mov_b32_e32 v5, v7
-; VI-NEXT:  .LBB0_7: ; %frem.loop_exit
+; VI-NEXT:  .LBB0_8: ; %frem.loop_exit
 ; VI-NEXT:    v_add_u32_e32 v4, vcc, -10, v4
 ; VI-NEXT:    v_ldexp_f32 v4, v5, v4
 ; VI-NEXT:    v_mul_f32_e32 v5, v4, v6
@@ -302,7 +320,7 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; VI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; VI-NEXT:    s_movk_i32 s2, 0x7fff
 ; VI-NEXT:    v_bfi_b32 v2, s2, v2, v0
-; VI-NEXT:  .LBB0_8: ; %Flow19
+; VI-NEXT:  .LBB0_9: ; %Flow19
 ; VI-NEXT:    v_mov_b32_e32 v3, s0
 ; VI-NEXT:    s_movk_i32 s0, 0x7c00
 ; VI-NEXT:    v_mov_b32_e32 v4, s1
@@ -332,11 +350,17 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX9-NEXT:    v_and_b32_e32 v3, 0x8000, v0
 ; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, v4, v2
 ; GFX9-NEXT:    v_cndmask_b32_e32 v3, v0, v3, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB0_3
-; GFX9-NEXT:    s_branch .LBB0_8
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-NEXT:    s_branch .LBB0_3
 ; GFX9-NEXT:  .LBB0_2:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr3
-; GFX9-NEXT:  .LBB0_3: ; %frem.compute
+; GFX9-NEXT:  .LBB0_3: ; %Flow18
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB0_9
+; GFX9-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX9-NEXT:    v_frexp_mant_f32_e32 v3, v4
 ; GFX9-NEXT:    v_ldexp_f32 v5, v3, 11
 ; GFX9-NEXT:    v_frexp_mant_f32_e32 v3, v2
@@ -360,11 +384,11 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX9-NEXT:    v_div_fmas_f32 v6, v6, v10, v11
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v4
 ; GFX9-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB0_7
-; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB0_8
+; GFX9-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v4, v7, v8
 ; GFX9-NEXT:    v_add_u32_e32 v4, 11, v4
-; GFX9-NEXT:  .LBB0_5: ; %frem.loop_body
+; GFX9-NEXT:  .LBB0_6: ; %frem.loop_body
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v7, v5
 ; GFX9-NEXT:    v_mul_f32_e32 v5, v7, v6
@@ -376,10 +400,10 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX9-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v4
 ; GFX9-NEXT:    v_ldexp_f32 v5, v5, 11
-; GFX9-NEXT:    s_cbranch_vccnz .LBB0_5
-; GFX9-NEXT:  ; %bb.6: ; %Flow
+; GFX9-NEXT:    s_cbranch_vccnz .LBB0_6
+; GFX9-NEXT:  ; %bb.7: ; %Flow
 ; GFX9-NEXT:    v_mov_b32_e32 v5, v7
-; GFX9-NEXT:  .LBB0_7: ; %frem.loop_exit
+; GFX9-NEXT:  .LBB0_8: ; %frem.loop_exit
 ; GFX9-NEXT:    v_add_u32_e32 v4, -10, v4
 ; GFX9-NEXT:    v_ldexp_f32 v4, v5, v4
 ; GFX9-NEXT:    v_mul_f32_e32 v5, v4, v6
@@ -392,7 +416,7 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX9-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; GFX9-NEXT:    s_movk_i32 s2, 0x7fff
 ; GFX9-NEXT:    v_bfi_b32 v3, s2, v2, v0
-; GFX9-NEXT:  .LBB0_8: ; %Flow19
+; GFX9-NEXT:  .LBB0_9: ; %Flow19
 ; GFX9-NEXT:    s_movk_i32 s2, 0x7c00
 ; GFX9-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v1
 ; GFX9-NEXT:    v_cmp_nge_f16_e64 s[2:3], |v0|, s2
@@ -422,12 +446,18 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX10-NEXT:  ; %bb.1: ; %frem.else
 ; GFX10-NEXT:    v_and_b32_e32 v4, 0x8000, v0
 ; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v3, v2
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB0_3
-; GFX10-NEXT:    s_branch .LBB0_8
+; GFX10-NEXT:    s_branch .LBB0_3
 ; GFX10-NEXT:  .LBB0_2:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr4
-; GFX10-NEXT:  .LBB0_3: ; %frem.compute
+; GFX10-NEXT:  .LBB0_3: ; %Flow18
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB0_9
+; GFX10-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v5, v3
 ; GFX10-NEXT:    v_frexp_mant_f32_e32 v3, v3
 ; GFX10-NEXT:    v_readfirstlane_b32 s2, v5
@@ -453,11 +483,11 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX10-NEXT:    v_div_fmas_f32 v5, v5, v8, v9
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6
 ; GFX10-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB0_7
-; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB0_8
+; GFX10-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 11
-; GFX10-NEXT:  .LBB0_5: ; %frem.loop_body
+; GFX10-NEXT:  .LBB0_6: ; %frem.loop_body
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v7, v4
 ; GFX10-NEXT:    s_add_i32 s2, s2, -11
@@ -469,11 +499,11 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX10-NEXT:    v_add_f32_e32 v6, v4, v3
 ; GFX10-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v4, v4, 11
-; GFX10-NEXT:    s_cbranch_scc1 .LBB0_5
-; GFX10-NEXT:  ; %bb.6: ; %Flow
+; GFX10-NEXT:    s_cbranch_scc1 .LBB0_6
+; GFX10-NEXT:  ; %bb.7: ; %Flow
 ; GFX10-NEXT:    v_mov_b32_e32 v6, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v4, v7
-; GFX10-NEXT:  .LBB0_7: ; %frem.loop_exit
+; GFX10-NEXT:  .LBB0_8: ; %frem.loop_exit
 ; GFX10-NEXT:    v_add_nc_u32_e32 v6, -10, v6
 ; GFX10-NEXT:    v_ldexp_f32 v4, v4, v6
 ; GFX10-NEXT:    v_mul_f32_e32 v5, v4, v5
@@ -485,7 +515,7 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX10-NEXT:    v_ldexp_f32 v2, v3, v2
 ; GFX10-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; GFX10-NEXT:    v_bfi_b32 v4, 0x7fff, v2, v0
-; GFX10-NEXT:  .LBB0_8: ; %Flow19
+; GFX10-NEXT:  .LBB0_9: ; %Flow19
 ; GFX10-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v1
 ; GFX10-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v0|
 ; GFX10-NEXT:    v_mov_b32_e32 v2, 0
@@ -514,13 +544,20 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %frem.else
 ; GFX11-TRUE16-NEXT:    v_and_b16 v0.h, 0x8000, v1.l
 ; GFX11-TRUE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v4, v2
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_cndmask_b16 v3.l, v1.l, v0.h, vcc_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_execz .LBB0_3
-; GFX11-TRUE16-NEXT:    s_branch .LBB0_8
+; GFX11-TRUE16-NEXT:    s_branch .LBB0_3
 ; GFX11-TRUE16-NEXT:  .LBB0_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr3
-; GFX11-TRUE16-NEXT:  .LBB0_3: ; %frem.compute
+; GFX11-TRUE16-NEXT:  .LBB0_3: ; %Flow18
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB0_9
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v3, v4
 ; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, v4
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_4)
@@ -555,12 +592,12 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB0_7
-; GFX11-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB0_8
+; GFX11-TRUE16-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX11-TRUE16-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 11
-; GFX11-TRUE16-NEXT:  .LBB0_5: ; %frem.loop_body
+; GFX11-TRUE16-NEXT:  .LBB0_6: ; %frem.loop_body
 ; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v7, v4
@@ -576,11 +613,11 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX11-TRUE16-NEXT:    v_ldexp_f32 v4, v4, 11
-; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB0_5
-; GFX11-TRUE16-NEXT:  ; %bb.6: ; %Flow
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB0_6
+; GFX11-TRUE16-NEXT:  ; %bb.7: ; %Flow
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, s2
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v7
-; GFX11-TRUE16-NEXT:  .LBB0_7: ; %frem.loop_exit
+; GFX11-TRUE16-NEXT:  .LBB0_8: ; %frem.loop_exit
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6
 ; GFX11-TRUE16-NEXT:    v_ldexp_f32 v4, v4, v6
@@ -598,7 +635,7 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v2.l, v2
 ; GFX11-TRUE16-NEXT:    v_bfi_b32 v3, 0x7fff, v2, v3
-; GFX11-TRUE16-NEXT:  .LBB0_8: ; %Flow19
+; GFX11-TRUE16-NEXT:  .LBB0_9: ; %Flow19
 ; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v0.l
 ; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v1.l|
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, 0
@@ -628,13 +665,20 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %frem.else
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0x8000, v0
 ; GFX11-FAKE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v3, v2
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_execz .LBB0_3
-; GFX11-FAKE16-NEXT:    s_branch .LBB0_8
+; GFX11-FAKE16-NEXT:    s_branch .LBB0_3
 ; GFX11-FAKE16-NEXT:  .LBB0_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr4
-; GFX11-FAKE16-NEXT:  .LBB0_3: ; %frem.compute
+; GFX11-FAKE16-NEXT:  .LBB0_3: ; %Flow18
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB0_9
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, v3
 ; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v3, v3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -669,12 +713,12 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB0_7
-; GFX11-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB0_8
+; GFX11-FAKE16-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX11-FAKE16-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 11
-; GFX11-FAKE16-NEXT:  .LBB0_5: ; %frem.loop_body
+; GFX11-FAKE16-NEXT:  .LBB0_6: ; %frem.loop_body
 ; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v7, v4
@@ -690,11 +734,11 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX11-FAKE16-NEXT:    v_ldexp_f32 v4, v4, 11
-; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB0_5
-; GFX11-FAKE16-NEXT:  ; %bb.6: ; %Flow
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB0_6
+; GFX11-FAKE16-NEXT:  ; %bb.7: ; %Flow
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, s2
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v7
-; GFX11-FAKE16-NEXT:  .LBB0_7: ; %frem.loop_exit
+; GFX11-FAKE16-NEXT:  .LBB0_8: ; %frem.loop_exit
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6
 ; GFX11-FAKE16-NEXT:    v_ldexp_f32 v4, v4, v6
@@ -711,7 +755,7 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; GFX11-FAKE16-NEXT:    v_bfi_b32 v4, 0x7fff, v2, v0
-; GFX11-FAKE16-NEXT:  .LBB0_8: ; %Flow19
+; GFX11-FAKE16-NEXT:  .LBB0_9: ; %Flow19
 ; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v0|
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, 0
@@ -747,11 +791,18 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v2.l, v0.l, v0.h, s2
-; GFX1150-TRUE16-NEXT:    s_cbranch_execz .LBB0_3
-; GFX1150-TRUE16-NEXT:    s_branch .LBB0_8
+; GFX1150-TRUE16-NEXT:    s_mov_b32 s2, 0
+; GFX1150-TRUE16-NEXT:    s_branch .LBB0_3
 ; GFX1150-TRUE16-NEXT:  .LBB0_2:
+; GFX1150-TRUE16-NEXT:    s_mov_b32 s2, -1
 ; GFX1150-TRUE16-NEXT:    ; implicit-def: $vgpr2
-; GFX1150-TRUE16-NEXT:  .LBB0_3: ; %frem.compute
+; GFX1150-TRUE16-NEXT:  .LBB0_3: ; %Flow18
+; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1150-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1150-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB0_9
+; GFX1150-TRUE16-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v3, s0
 ; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s1
 ; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s1
@@ -785,12 +836,12 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-TRUE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v9
 ; GFX1150-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6
 ; GFX1150-TRUE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB0_7
-; GFX1150-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB0_8
+; GFX1150-TRUE16-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX1150-TRUE16-NEXT:    s_sub_i32 s0, s1, s0
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    s_add_i32 s0, s0, 11
-; GFX1150-TRUE16-NEXT:  .LBB0_5: ; %frem.loop_body
+; GFX1150-TRUE16-NEXT:  .LBB0_6: ; %frem.loop_body
 ; GFX1150-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v7, v4
@@ -808,11 +859,11 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v4, v4, 11
-; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB0_5
-; GFX1150-TRUE16-NEXT:  ; %bb.6: ; %Flow
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB0_6
+; GFX1150-TRUE16-NEXT:  ; %bb.7: ; %Flow
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v6, s0
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v4, v7
-; GFX1150-TRUE16-NEXT:  .LBB0_7: ; %frem.loop_exit
+; GFX1150-TRUE16-NEXT:  .LBB0_8: ; %frem.loop_exit
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6
 ; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v4, v4, v6
@@ -832,7 +883,7 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v2.l, v2
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v3
-; GFX1150-TRUE16-NEXT:  .LBB0_8: ; %Flow19
+; GFX1150-TRUE16-NEXT:  .LBB0_9: ; %Flow19
 ; GFX1150-TRUE16-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_and_b32 v0, 0x7fff, v0
 ; GFX1150-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v1.l
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
@@ -866,14 +917,21 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-FAKE16-NEXT:  ; %bb.1: ; %frem.else
 ; GFX1150-FAKE16-NEXT:    s_cmp_eq_f32 s1, s0
 ; GFX1150-FAKE16-NEXT:    v_and_b32_e32 v2, 0x8000, v0
+; GFX1150-FAKE16-NEXT:    s_mov_b32 s2, 0
 ; GFX1150-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc_lo
-; GFX1150-FAKE16-NEXT:    s_cbranch_execz .LBB0_3
-; GFX1150-FAKE16-NEXT:    s_branch .LBB0_8
+; GFX1150-FAKE16-NEXT:    s_branch .LBB0_3
 ; GFX1150-FAKE16-NEXT:  .LBB0_2:
+; GFX1150-FAKE16-NEXT:    s_mov_b32 s2, -1
 ; GFX1150-FAKE16-NEXT:    ; implicit-def: $vgpr2
-; GFX1150-FAKE16-NEXT:  .LBB0_3: ; %frem.compute
+; GFX1150-FAKE16-NEXT:  .LBB0_3: ; %Flow18
+; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1150-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1150-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB0_9
+; GFX1150-FAKE16-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v3, s0
 ; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s1
 ; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s1
@@ -907,12 +965,12 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-FAKE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v9
 ; GFX1150-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6
 ; GFX1150-FAKE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB0_7
-; GFX1150-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB0_8
+; GFX1150-FAKE16-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX1150-FAKE16-NEXT:    s_sub_i32 s0, s1, s0
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-FAKE16-NEXT:    s_add_i32 s0, s0, 11
-; GFX1150-FAKE16-NEXT:  .LBB0_5: ; %frem.loop_body
+; GFX1150-FAKE16-NEXT:  .LBB0_6: ; %frem.loop_body
 ; GFX1150-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v7, v4
@@ -930,11 +988,11 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v4, v4, 11
-; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB0_5
-; GFX1150-FAKE16-NEXT:  ; %bb.6: ; %Flow
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB0_6
+; GFX1150-FAKE16-NEXT:  ; %bb.7: ; %Flow
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v6, s0
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v4, v7
-; GFX1150-FAKE16-NEXT:  .LBB0_7: ; %frem.loop_exit
+; GFX1150-FAKE16-NEXT:  .LBB0_8: ; %frem.loop_exit
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6
 ; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v4, v4, v6
@@ -953,7 +1011,7 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v0
-; GFX1150-FAKE16-NEXT:  .LBB0_8: ; %Flow19
+; GFX1150-FAKE16-NEXT:  .LBB0_9: ; %Flow19
 ; GFX1150-FAKE16-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_and_b32 v0, 0x7fff, v0
 ; GFX1150-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v1
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
@@ -990,11 +1048,19 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
 ; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v2.l, v0.l, v0.h, s2
-; GFX1200-TRUE16-NEXT:    s_cbranch_execz .LBB0_3
-; GFX1200-TRUE16-NEXT:    s_branch .LBB0_8
+; GFX1200-TRUE16-NEXT:    s_mov_b32 s2, 0
+; GFX1200-TRUE16-NEXT:    s_branch .LBB0_3
 ; GFX1200-TRUE16-NEXT:  .LBB0_2:
+; GFX1200-TRUE16-NEXT:    s_mov_b32 s2, -1
 ; GFX1200-TRUE16-NEXT:    ; implicit-def: $vgpr2
-; GFX1200-TRUE16-NEXT:  .LBB0_3: ; %frem.compute
+; GFX1200-TRUE16-NEXT:  .LBB0_3: ; %Flow18
+; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1200-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB0_9
+; GFX1200-TRUE16-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v3, s0
 ; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s1
 ; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s1
@@ -1028,12 +1094,12 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-TRUE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v9
 ; GFX1200-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6
 ; GFX1200-TRUE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB0_7
-; GFX1200-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB0_8
+; GFX1200-TRUE16-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX1200-TRUE16-NEXT:    s_sub_co_i32 s0, s1, s0
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-TRUE16-NEXT:    s_add_co_i32 s0, s0, 11
-; GFX1200-TRUE16-NEXT:  .LBB0_5: ; %frem.loop_body
+; GFX1200-TRUE16-NEXT:  .LBB0_6: ; %frem.loop_body
 ; GFX1200-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v7, v4
@@ -1053,11 +1119,11 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v4, v4, 11
-; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB0_5
-; GFX1200-TRUE16-NEXT:  ; %bb.6: ; %Flow
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB0_6
+; GFX1200-TRUE16-NEXT:  ; %bb.7: ; %Flow
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v6, s0
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v4, v7
-; GFX1200-TRUE16-NEXT:  .LBB0_7: ; %frem.loop_exit
+; GFX1200-TRUE16-NEXT:  .LBB0_8: ; %frem.loop_exit
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6
 ; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v4, v4, v6
@@ -1078,7 +1144,7 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v2.l, v2
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v3
-; GFX1200-TRUE16-NEXT:  .LBB0_8: ; %Flow19
+; GFX1200-TRUE16-NEXT:  .LBB0_9: ; %Flow19
 ; GFX1200-TRUE16-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_and_b32 v0, 0x7fff, v0
 ; GFX1200-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v1.l
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
@@ -1113,14 +1179,21 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-FAKE16-NEXT:  ; %bb.1: ; %frem.else
 ; GFX1200-FAKE16-NEXT:    s_cmp_eq_f32 s1, s0
 ; GFX1200-FAKE16-NEXT:    v_and_b32_e32 v2, 0x8000, v0
+; GFX1200-FAKE16-NEXT:    s_mov_b32 s2, 0
 ; GFX1200-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc_lo
-; GFX1200-FAKE16-NEXT:    s_cbranch_execz .LBB0_3
-; GFX1200-FAKE16-NEXT:    s_branch .LBB0_8
+; GFX1200-FAKE16-NEXT:    s_branch .LBB0_3
 ; GFX1200-FAKE16-NEXT:  .LBB0_2:
+; GFX1200-FAKE16-NEXT:    s_mov_b32 s2, -1
 ; GFX1200-FAKE16-NEXT:    ; implicit-def: $vgpr2
-; GFX1200-FAKE16-NEXT:  .LBB0_3: ; %frem.compute
+; GFX1200-FAKE16-NEXT:  .LBB0_3: ; %Flow18
+; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1200-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1200-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1200-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB0_9
+; GFX1200-FAKE16-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v3, s0
 ; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s1
 ; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s1
@@ -1155,12 +1228,12 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-FAKE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v9
 ; GFX1200-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6
 ; GFX1200-FAKE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB0_7
-; GFX1200-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB0_8
+; GFX1200-FAKE16-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX1200-FAKE16-NEXT:    s_sub_co_i32 s0, s1, s0
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    s_add_co_i32 s0, s0, 11
-; GFX1200-FAKE16-NEXT:  .LBB0_5: ; %frem.loop_body
+; GFX1200-FAKE16-NEXT:  .LBB0_6: ; %frem.loop_body
 ; GFX1200-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v7, v4
@@ -1180,11 +1253,11 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v4, v4, 11
-; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB0_5
-; GFX1200-FAKE16-NEXT:  ; %bb.6: ; %Flow
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB0_6
+; GFX1200-FAKE16-NEXT:  ; %bb.7: ; %Flow
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v6, s0
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v4, v7
-; GFX1200-FAKE16-NEXT:  .LBB0_7: ; %frem.loop_exit
+; GFX1200-FAKE16-NEXT:  .LBB0_8: ; %frem.loop_exit
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6
 ; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v4, v4, v6
@@ -1204,7 +1277,7 @@ define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v0
-; GFX1200-FAKE16-NEXT:  .LBB0_8: ; %Flow19
+; GFX1200-FAKE16-NEXT:  .LBB0_9: ; %Flow19
 ; GFX1200-FAKE16-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_and_b32 v0, 0x7fff, v0
 ; GFX1200-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v1
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
@@ -1270,15 +1343,14 @@ define amdgpu_kernel void @fast_frem_f16(ptr addrspace(1) %out, ptr addrspace(1)
 ; SI-NEXT:    v_fma_f64 v[0:1], v[0:1], v[4:5], v[2:3]
 ; SI-NEXT:    v_readfirstlane_b32 s4, v1
 ; SI-NEXT:    s_and_b32 s5, s4, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v0, s5, v0
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-NEXT:    s_lshr_b32 s5, s4, 8
-; SI-NEXT:    s_bfe_u32 s7, s4, 0xb0014
-; SI-NEXT:    s_and_b32 s5, s5, 0xffe
 ; SI-NEXT:    v_readfirstlane_b32 s6, v0
-; SI-NEXT:    s_sub_i32 s8, 0x3f1, s7
 ; SI-NEXT:    s_or_b32 s5, s5, s6
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_lshr_b32 s6, s4, 8
+; SI-NEXT:    s_bfe_u32 s7, s4, 0xb0014
+; SI-NEXT:    s_and_b32 s6, s6, 0xffe
+; SI-NEXT:    s_sub_i32 s8, 0x3f1, s7
+; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    v_med3_i32 v0, s8, 0, 13
 ; SI-NEXT:    s_or_b32 s6, s5, 0x1000
 ; SI-NEXT:    v_readfirstlane_b32 s8, v0
@@ -1360,15 +1432,14 @@ define amdgpu_kernel void @fast_frem_f16(ptr addrspace(1) %out, ptr addrspace(1)
 ; CI-NEXT:    v_fma_f64 v[0:1], v[0:1], v[4:5], v[2:3]
 ; CI-NEXT:    v_readfirstlane_b32 s4, v1
 ; CI-NEXT:    s_and_b32 s5, s4, 0x1ff
-; CI-NEXT:    v_or_b32_e32 v0, s5, v0
-; CI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; CI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; CI-NEXT:    s_lshr_b32 s5, s4, 8
-; CI-NEXT:    s_bfe_u32 s7, s4, 0xb0014
-; CI-NEXT:    s_and_b32 s5, s5, 0xffe
 ; CI-NEXT:    v_readfirstlane_b32 s6, v0
-; CI-NEXT:    s_sub_i32 s8, 0x3f1, s7
 ; CI-NEXT:    s_or_b32 s5, s5, s6
+; CI-NEXT:    s_cselect_b32 s5, 1, 0
+; CI-NEXT:    s_lshr_b32 s6, s4, 8
+; CI-NEXT:    s_bfe_u32 s7, s4, 0xb0014
+; CI-NEXT:    s_and_b32 s6, s6, 0xffe
+; CI-NEXT:    s_sub_i32 s8, 0x3f1, s7
+; CI-NEXT:    s_or_b32 s5, s6, s5
 ; CI-NEXT:    v_med3_i32 v0, s8, 0, 13
 ; CI-NEXT:    s_or_b32 s6, s5, 0x1000
 ; CI-NEXT:    v_readfirstlane_b32 s8, v0
@@ -1755,15 +1826,14 @@ define amdgpu_kernel void @unsafe_frem_f16(ptr addrspace(1) %out, ptr addrspace(
 ; SI-NEXT:    v_fma_f64 v[0:1], v[0:1], v[4:5], v[2:3]
 ; SI-NEXT:    v_readfirstlane_b32 s4, v1
 ; SI-NEXT:    s_and_b32 s5, s4, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v0, s5, v0
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-NEXT:    s_lshr_b32 s5, s4, 8
-; SI-NEXT:    s_bfe_u32 s7, s4, 0xb0014
-; SI-NEXT:    s_and_b32 s5, s5, 0xffe
 ; SI-NEXT:    v_readfirstlane_b32 s6, v0
-; SI-NEXT:    s_sub_i32 s8, 0x3f1, s7
 ; SI-NEXT:    s_or_b32 s5, s5, s6
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_lshr_b32 s6, s4, 8
+; SI-NEXT:    s_bfe_u32 s7, s4, 0xb0014
+; SI-NEXT:    s_and_b32 s6, s6, 0xffe
+; SI-NEXT:    s_sub_i32 s8, 0x3f1, s7
+; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    v_med3_i32 v0, s8, 0, 13
 ; SI-NEXT:    s_or_b32 s6, s5, 0x1000
 ; SI-NEXT:    v_readfirstlane_b32 s8, v0
@@ -1845,15 +1915,14 @@ define amdgpu_kernel void @unsafe_frem_f16(ptr addrspace(1) %out, ptr addrspace(
 ; CI-NEXT:    v_fma_f64 v[0:1], v[0:1], v[4:5], v[2:3]
 ; CI-NEXT:    v_readfirstlane_b32 s4, v1
 ; CI-NEXT:    s_and_b32 s5, s4, 0x1ff
-; CI-NEXT:    v_or_b32_e32 v0, s5, v0
-; CI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; CI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; CI-NEXT:    s_lshr_b32 s5, s4, 8
-; CI-NEXT:    s_bfe_u32 s7, s4, 0xb0014
-; CI-NEXT:    s_and_b32 s5, s5, 0xffe
 ; CI-NEXT:    v_readfirstlane_b32 s6, v0
-; CI-NEXT:    s_sub_i32 s8, 0x3f1, s7
 ; CI-NEXT:    s_or_b32 s5, s5, s6
+; CI-NEXT:    s_cselect_b32 s5, 1, 0
+; CI-NEXT:    s_lshr_b32 s6, s4, 8
+; CI-NEXT:    s_bfe_u32 s7, s4, 0xb0014
+; CI-NEXT:    s_and_b32 s6, s6, 0xffe
+; CI-NEXT:    s_sub_i32 s8, 0x3f1, s7
+; CI-NEXT:    s_or_b32 s5, s6, s5
 ; CI-NEXT:    v_med3_i32 v0, s8, 0, 13
 ; CI-NEXT:    s_or_b32 s6, s5, 0x1000
 ; CI-NEXT:    v_readfirstlane_b32 s8, v0
@@ -2215,11 +2284,17 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; SI-NEXT:    v_and_b32_e32 v2, 0x80000000, v0
 ; SI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v1|
 ; SI-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc
-; SI-NEXT:    s_cbranch_execz .LBB3_3
-; SI-NEXT:    s_branch .LBB3_8
+; SI-NEXT:    s_mov_b64 s[2:3], 0
+; SI-NEXT:    s_branch .LBB3_3
 ; SI-NEXT:  .LBB3_2:
+; SI-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-NEXT:    ; implicit-def: $vgpr2
-; SI-NEXT:  .LBB3_3: ; %frem.compute
+; SI-NEXT:  .LBB3_3: ; %Flow16
+; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB3_9
+; SI-NEXT:  ; %bb.4: ; %frem.compute
 ; SI-NEXT:    s_mov_b32 s6, 0x7f800000
 ; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v0|, s6
 ; SI-NEXT:    v_frexp_exp_i32_f32_e32 v2, v0
@@ -2254,11 +2329,11 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; SI-NEXT:    v_div_fmas_f32 v4, v4, v6, v7
 ; SI-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.0
 ; SI-NEXT:    s_cmp_lt_i32 s3, 13
-; SI-NEXT:    s_cbranch_scc1 .LBB3_7
-; SI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; SI-NEXT:    s_cbranch_scc1 .LBB3_8
+; SI-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; SI-NEXT:    s_sub_i32 s3, s4, s5
 ; SI-NEXT:    s_add_i32 s3, s3, 12
-; SI-NEXT:  .LBB3_5: ; %frem.loop_body
+; SI-NEXT:  .LBB3_6: ; %frem.loop_body
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; SI-NEXT:    v_mov_b32_e32 v5, v3
 ; SI-NEXT:    v_mul_f32_e32 v3, v5, v4
@@ -2270,10 +2345,10 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; SI-NEXT:    s_add_i32 s3, s3, -12
 ; SI-NEXT:    v_ldexp_f32_e64 v3, v3, 12
 ; SI-NEXT:    s_cmp_gt_i32 s3, 12
-; SI-NEXT:    s_cbranch_scc1 .LBB3_5
-; SI-NEXT:  ; %bb.6: ; %Flow
+; SI-NEXT:    s_cbranch_scc1 .LBB3_6
+; SI-NEXT:  ; %bb.7: ; %Flow
 ; SI-NEXT:    v_mov_b32_e32 v3, v5
-; SI-NEXT:  .LBB3_7: ; %frem.loop_exit
+; SI-NEXT:  .LBB3_8: ; %frem.loop_exit
 ; SI-NEXT:    s_add_i32 s3, s3, -11
 ; SI-NEXT:    v_ldexp_f32_e64 v3, v3, s3
 ; SI-NEXT:    v_mul_f32_e32 v4, v3, v4
@@ -2285,7 +2360,7 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; SI-NEXT:    v_ldexp_f32_e64 v2, v2, s2
 ; SI-NEXT:    s_brev_b32 s2, -2
 ; SI-NEXT:    v_bfi_b32 v2, s2, v2, v0
-; SI-NEXT:  .LBB3_8: ; %Flow17
+; SI-NEXT:  .LBB3_9: ; %Flow17
 ; SI-NEXT:    s_mov_b32 s4, 0x7f800000
 ; SI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v1
 ; SI-NEXT:    v_cmp_nge_f32_e64 s[4:5], |v0|, s4
@@ -2318,11 +2393,17 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; CI-NEXT:    v_and_b32_e32 v2, 0x80000000, v0
 ; CI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v1|
 ; CI-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc
-; CI-NEXT:    s_cbranch_execz .LBB3_3
-; CI-NEXT:    s_branch .LBB3_8
+; CI-NEXT:    s_mov_b64 s[2:3], 0
+; CI-NEXT:    s_branch .LBB3_3
 ; CI-NEXT:  .LBB3_2:
+; CI-NEXT:    s_mov_b64 s[2:3], -1
 ; CI-NEXT:    ; implicit-def: $vgpr2
-; CI-NEXT:  .LBB3_3: ; %frem.compute
+; CI-NEXT:  .LBB3_3: ; %Flow16
+; CI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; CI-NEXT:    s_cselect_b32 s2, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s2, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB3_9
+; CI-NEXT:  ; %bb.4: ; %frem.compute
 ; CI-NEXT:    v_frexp_mant_f32_e64 v3, |v1|
 ; CI-NEXT:    v_ldexp_f32_e64 v3, v3, 1
 ; CI-NEXT:    v_div_scale_f32 v9, s[2:3], v3, v3, 1.0
@@ -2346,11 +2427,11 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; CI-NEXT:    v_div_fmas_f32 v6, v6, v10, v11
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v4
 ; CI-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB3_7
-; CI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB3_8
+; CI-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; CI-NEXT:    v_sub_i32_e32 v4, vcc, v7, v8
 ; CI-NEXT:    v_add_i32_e32 v4, vcc, 12, v4
-; CI-NEXT:  .LBB3_5: ; %frem.loop_body
+; CI-NEXT:  .LBB3_6: ; %frem.loop_body
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v7, v5
 ; CI-NEXT:    v_mul_f32_e32 v5, v7, v6
@@ -2362,10 +2443,10 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; CI-NEXT:    v_add_i32_e32 v4, vcc, -12, v4
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v4
 ; CI-NEXT:    v_ldexp_f32_e64 v5, v5, 12
-; CI-NEXT:    s_cbranch_vccnz .LBB3_5
-; CI-NEXT:  ; %bb.6: ; %Flow
+; CI-NEXT:    s_cbranch_vccnz .LBB3_6
+; CI-NEXT:  ; %bb.7: ; %Flow
 ; CI-NEXT:    v_mov_b32_e32 v5, v7
-; CI-NEXT:  .LBB3_7: ; %frem.loop_exit
+; CI-NEXT:  .LBB3_8: ; %frem.loop_exit
 ; CI-NEXT:    v_add_i32_e32 v4, vcc, -11, v4
 ; CI-NEXT:    v_ldexp_f32_e32 v4, v5, v4
 ; CI-NEXT:    v_mul_f32_e32 v5, v4, v6
@@ -2377,7 +2458,7 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; CI-NEXT:    v_ldexp_f32_e32 v2, v3, v2
 ; CI-NEXT:    s_brev_b32 s2, -2
 ; CI-NEXT:    v_bfi_b32 v2, s2, v2, v0
-; CI-NEXT:  .LBB3_8: ; %Flow17
+; CI-NEXT:  .LBB3_9: ; %Flow17
 ; CI-NEXT:    s_mov_b32 s4, 0x7f800000
 ; CI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v1
 ; CI-NEXT:    v_cmp_nge_f32_e64 s[4:5], |v0|, s4
@@ -2410,11 +2491,17 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; VI-NEXT:    v_and_b32_e32 v2, 0x80000000, v0
 ; VI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v1|
 ; VI-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc
-; VI-NEXT:    s_cbranch_execz .LBB3_3
-; VI-NEXT:    s_branch .LBB3_8
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB3_3
 ; VI-NEXT:  .LBB3_2:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr2
-; VI-NEXT:  .LBB3_3: ; %frem.compute
+; VI-NEXT:  .LBB3_3: ; %Flow16
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB3_9
+; VI-NEXT:  ; %bb.4: ; %frem.compute
 ; VI-NEXT:    v_frexp_mant_f32_e64 v3, |v1|
 ; VI-NEXT:    v_ldexp_f32 v3, v3, 1
 ; VI-NEXT:    v_div_scale_f32 v9, s[2:3], v3, v3, 1.0
@@ -2438,11 +2525,11 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; VI-NEXT:    v_div_fmas_f32 v6, v6, v10, v11
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v4
 ; VI-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB3_7
-; VI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB3_8
+; VI-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; VI-NEXT:    v_sub_u32_e32 v4, vcc, v7, v8
 ; VI-NEXT:    v_add_u32_e32 v4, vcc, 12, v4
-; VI-NEXT:  .LBB3_5: ; %frem.loop_body
+; VI-NEXT:  .LBB3_6: ; %frem.loop_body
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v7, v5
 ; VI-NEXT:    v_mul_f32_e32 v5, v7, v6
@@ -2454,10 +2541,10 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; VI-NEXT:    v_add_u32_e32 v4, vcc, -12, v4
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v4
 ; VI-NEXT:    v_ldexp_f32 v5, v5, 12
-; VI-NEXT:    s_cbranch_vccnz .LBB3_5
-; VI-NEXT:  ; %bb.6: ; %Flow
+; VI-NEXT:    s_cbranch_vccnz .LBB3_6
+; VI-NEXT:  ; %bb.7: ; %Flow
 ; VI-NEXT:    v_mov_b32_e32 v5, v7
-; VI-NEXT:  .LBB3_7: ; %frem.loop_exit
+; VI-NEXT:  .LBB3_8: ; %frem.loop_exit
 ; VI-NEXT:    v_add_u32_e32 v4, vcc, -11, v4
 ; VI-NEXT:    v_ldexp_f32 v4, v5, v4
 ; VI-NEXT:    v_mul_f32_e32 v5, v4, v6
@@ -2469,7 +2556,7 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; VI-NEXT:    v_ldexp_f32 v2, v3, v2
 ; VI-NEXT:    s_brev_b32 s2, -2
 ; VI-NEXT:    v_bfi_b32 v2, s2, v2, v0
-; VI-NEXT:  .LBB3_8: ; %Flow17
+; VI-NEXT:  .LBB3_9: ; %Flow17
 ; VI-NEXT:    v_mov_b32_e32 v3, s0
 ; VI-NEXT:    s_mov_b32 s0, 0x7f800000
 ; VI-NEXT:    v_mov_b32_e32 v4, s1
@@ -2497,11 +2584,17 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0x80000000, v0
 ; GFX9-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v1|
 ; GFX9-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB3_3
-; GFX9-NEXT:    s_branch .LBB3_8
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-NEXT:    s_branch .LBB3_3
 ; GFX9-NEXT:  .LBB3_2:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr2
-; GFX9-NEXT:  .LBB3_3: ; %frem.compute
+; GFX9-NEXT:  .LBB3_3: ; %Flow16
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB3_9
+; GFX9-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX9-NEXT:    v_frexp_mant_f32_e64 v3, |v1|
 ; GFX9-NEXT:    v_ldexp_f32 v3, v3, 1
 ; GFX9-NEXT:    v_div_scale_f32 v9, s[2:3], v3, v3, 1.0
@@ -2525,11 +2618,11 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX9-NEXT:    v_div_fmas_f32 v6, v6, v10, v11
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v4
 ; GFX9-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB3_7
-; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB3_8
+; GFX9-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v4, v7, v8
 ; GFX9-NEXT:    v_add_u32_e32 v4, 12, v4
-; GFX9-NEXT:  .LBB3_5: ; %frem.loop_body
+; GFX9-NEXT:  .LBB3_6: ; %frem.loop_body
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v7, v5
 ; GFX9-NEXT:    v_mul_f32_e32 v5, v7, v6
@@ -2541,10 +2634,10 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX9-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v4
 ; GFX9-NEXT:    v_ldexp_f32 v5, v5, 12
-; GFX9-NEXT:    s_cbranch_vccnz .LBB3_5
-; GFX9-NEXT:  ; %bb.6: ; %Flow
+; GFX9-NEXT:    s_cbranch_vccnz .LBB3_6
+; GFX9-NEXT:  ; %bb.7: ; %Flow
 ; GFX9-NEXT:    v_mov_b32_e32 v5, v7
-; GFX9-NEXT:  .LBB3_7: ; %frem.loop_exit
+; GFX9-NEXT:  .LBB3_8: ; %frem.loop_exit
 ; GFX9-NEXT:    v_add_u32_e32 v4, -11, v4
 ; GFX9-NEXT:    v_ldexp_f32 v4, v5, v4
 ; GFX9-NEXT:    v_mul_f32_e32 v5, v4, v6
@@ -2556,7 +2649,7 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX9-NEXT:    v_ldexp_f32 v2, v3, v2
 ; GFX9-NEXT:    s_brev_b32 s2, -2
 ; GFX9-NEXT:    v_bfi_b32 v2, s2, v2, v0
-; GFX9-NEXT:  .LBB3_8: ; %Flow17
+; GFX9-NEXT:  .LBB3_9: ; %Flow17
 ; GFX9-NEXT:    s_mov_b32 s2, 0x7f800000
 ; GFX9-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v1
 ; GFX9-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s2
@@ -2584,12 +2677,18 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX10-NEXT:  ; %bb.1: ; %frem.else
 ; GFX10-NEXT:    v_and_b32_e32 v2, 0x80000000, v0
 ; GFX10-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v0|, |v1|
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB3_3
-; GFX10-NEXT:    s_branch .LBB3_8
+; GFX10-NEXT:    s_branch .LBB3_3
 ; GFX10-NEXT:  .LBB3_2:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr2
-; GFX10-NEXT:  .LBB3_3: ; %frem.compute
+; GFX10-NEXT:  .LBB3_3: ; %Flow16
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB3_9
+; GFX10-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX10-NEXT:    v_frexp_mant_f32_e64 v3, |v1|
 ; GFX10-NEXT:    v_frexp_mant_f32_e64 v2, |v0|
 ; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v5, v0
@@ -2615,11 +2714,11 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX10-NEXT:    v_div_fmas_f32 v5, v5, v8, v9
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v6
 ; GFX10-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB3_7
-; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB3_8
+; GFX10-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 12
-; GFX10-NEXT:  .LBB3_5: ; %frem.loop_body
+; GFX10-NEXT:  .LBB3_6: ; %frem.loop_body
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v7, v4
 ; GFX10-NEXT:    s_add_i32 s2, s2, -12
@@ -2631,11 +2730,11 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX10-NEXT:    v_add_f32_e32 v6, v4, v3
 ; GFX10-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v4, v4, 12
-; GFX10-NEXT:    s_cbranch_scc1 .LBB3_5
-; GFX10-NEXT:  ; %bb.6: ; %Flow
+; GFX10-NEXT:    s_cbranch_scc1 .LBB3_6
+; GFX10-NEXT:  ; %bb.7: ; %Flow
 ; GFX10-NEXT:    v_mov_b32_e32 v6, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v4, v7
-; GFX10-NEXT:  .LBB3_7: ; %frem.loop_exit
+; GFX10-NEXT:  .LBB3_8: ; %frem.loop_exit
 ; GFX10-NEXT:    v_add_nc_u32_e32 v6, -11, v6
 ; GFX10-NEXT:    v_ldexp_f32 v4, v4, v6
 ; GFX10-NEXT:    v_mul_f32_e32 v5, v4, v5
@@ -2646,7 +2745,7 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX10-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v2, v3, v2
 ; GFX10-NEXT:    v_bfi_b32 v2, 0x7fffffff, v2, v0
-; GFX10-NEXT:  .LBB3_8: ; %Flow17
+; GFX10-NEXT:  .LBB3_9: ; %Flow17
 ; GFX10-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v1
 ; GFX10-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v0|
 ; GFX10-NEXT:    v_mov_b32_e32 v3, 0
@@ -2672,13 +2771,19 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-NEXT:  ; %bb.1: ; %frem.else
 ; GFX11-NEXT:    v_and_b32_e32 v2, 0x80000000, v0
 ; GFX11-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v0|, |v1|
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX11-NEXT:    s_mov_b32 s2, 0
 ; GFX11-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc_lo
-; GFX11-NEXT:    s_cbranch_execz .LBB3_3
-; GFX11-NEXT:    s_branch .LBB3_8
+; GFX11-NEXT:    s_branch .LBB3_3
 ; GFX11-NEXT:  .LBB3_2:
+; GFX11-NEXT:    s_mov_b32 s2, -1
 ; GFX11-NEXT:    ; implicit-def: $vgpr2
-; GFX11-NEXT:  .LBB3_3: ; %frem.compute
+; GFX11-NEXT:  .LBB3_3: ; %Flow16
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_9
+; GFX11-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX11-NEXT:    v_frexp_mant_f32_e64 v3, |v1|
 ; GFX11-NEXT:    v_frexp_mant_f32_e64 v2, |v0|
 ; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v5, v0
@@ -2713,12 +2818,12 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v6
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB3_7
-; GFX11-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX11-NEXT:    s_cbranch_vccnz .LBB3_8
+; GFX11-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX11-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_add_i32 s2, s2, 12
-; GFX11-NEXT:  .LBB3_5: ; %frem.loop_body
+; GFX11-NEXT:  .LBB3_6: ; %frem.loop_body
 ; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v7, v4
@@ -2734,11 +2839,11 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX11-NEXT:    v_ldexp_f32 v4, v4, 12
-; GFX11-NEXT:    s_cbranch_scc1 .LBB3_5
-; GFX11-NEXT:  ; %bb.6: ; %Flow
+; GFX11-NEXT:    s_cbranch_scc1 .LBB3_6
+; GFX11-NEXT:  ; %bb.7: ; %Flow
 ; GFX11-NEXT:    v_mov_b32_e32 v6, s2
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v7
-; GFX11-NEXT:  .LBB3_7: ; %frem.loop_exit
+; GFX11-NEXT:  .LBB3_8: ; %frem.loop_exit
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_add_nc_u32_e32 v6, -11, v6
 ; GFX11-NEXT:    v_ldexp_f32 v4, v4, v6
@@ -2754,7 +2859,7 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-NEXT:    v_ldexp_f32 v2, v3, v2
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_bfi_b32 v2, 0x7fffffff, v2, v0
-; GFX11-NEXT:  .LBB3_8: ; %Flow17
+; GFX11-NEXT:  .LBB3_9: ; %Flow17
 ; GFX11-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v1
 ; GFX11-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v0|
 ; GFX11-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo
@@ -2782,13 +2887,20 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-NEXT:  ; %bb.1: ; %frem.else
 ; GFX1150-NEXT:    v_and_b32_e32 v4, 0x80000000, v2
 ; GFX1150-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v1, v3
+; GFX1150-NEXT:    s_mov_b32 s0, 0
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v3, v2, v4, vcc_lo
-; GFX1150-NEXT:    s_cbranch_execz .LBB3_3
-; GFX1150-NEXT:    s_branch .LBB3_8
+; GFX1150-NEXT:    s_branch .LBB3_3
 ; GFX1150-NEXT:  .LBB3_2:
+; GFX1150-NEXT:    s_mov_b32 s0, -1
 ; GFX1150-NEXT:    ; implicit-def: $vgpr3
-; GFX1150-NEXT:  .LBB3_3: ; %frem.compute
+; GFX1150-NEXT:  .LBB3_3: ; %Flow16
+; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX1150-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX1150-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB3_9
+; GFX1150-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX1150-NEXT:    v_frexp_mant_f32_e64 v4, |v0|
 ; GFX1150-NEXT:    v_frexp_mant_f32_e64 v3, |v2|
 ; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v6, v2
@@ -2822,12 +2934,12 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-NEXT:    v_div_fmas_f32 v6, v6, v9, v10
 ; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v7
 ; GFX1150-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.0
-; GFX1150-NEXT:    s_cbranch_vccnz .LBB3_7
-; GFX1150-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX1150-NEXT:    s_cbranch_vccnz .LBB3_8
+; GFX1150-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX1150-NEXT:    s_sub_i32 s0, s0, s1
 ; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-NEXT:    s_add_i32 s0, s0, 12
-; GFX1150-NEXT:  .LBB3_5: ; %frem.loop_body
+; GFX1150-NEXT:  .LBB3_6: ; %frem.loop_body
 ; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-NEXT:    v_mov_b32_e32 v8, v5
@@ -2845,11 +2957,11 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f32 v5, v5, 12
-; GFX1150-NEXT:    s_cbranch_scc1 .LBB3_5
-; GFX1150-NEXT:  ; %bb.6: ; %Flow
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB3_6
+; GFX1150-NEXT:  ; %bb.7: ; %Flow
 ; GFX1150-NEXT:    v_mov_b32_e32 v7, s0
 ; GFX1150-NEXT:    v_mov_b32_e32 v5, v8
-; GFX1150-NEXT:  .LBB3_7: ; %frem.loop_exit
+; GFX1150-NEXT:  .LBB3_8: ; %frem.loop_exit
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_add_nc_u32_e32 v7, -11, v7
 ; GFX1150-NEXT:    v_ldexp_f32 v5, v5, v7
@@ -2866,7 +2978,7 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f32 v3, v4, v3
 ; GFX1150-NEXT:    v_bfi_b32 v3, 0x7fffffff, v3, v2
-; GFX1150-NEXT:  .LBB3_8: ; %Flow17
+; GFX1150-NEXT:  .LBB3_9: ; %Flow17
 ; GFX1150-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v0
 ; GFX1150-NEXT:    v_cmp_nle_f32_e64 s0, 0x7f800000, v1
 ; GFX1150-NEXT:    v_mov_b32_e32 v2, 0
@@ -2895,13 +3007,20 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-NEXT:  ; %bb.1: ; %frem.else
 ; GFX1200-NEXT:    v_and_b32_e32 v4, 0x80000000, v2
 ; GFX1200-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v1, v3
+; GFX1200-NEXT:    s_mov_b32 s0, 0
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX1200-NEXT:    v_cndmask_b32_e32 v3, v2, v4, vcc_lo
-; GFX1200-NEXT:    s_cbranch_execz .LBB3_3
-; GFX1200-NEXT:    s_branch .LBB3_8
+; GFX1200-NEXT:    s_branch .LBB3_3
 ; GFX1200-NEXT:  .LBB3_2:
+; GFX1200-NEXT:    s_mov_b32 s0, -1
 ; GFX1200-NEXT:    ; implicit-def: $vgpr3
-; GFX1200-NEXT:  .LBB3_3: ; %frem.compute
+; GFX1200-NEXT:  .LBB3_3: ; %Flow16
+; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1200-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX1200-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX1200-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB3_9
+; GFX1200-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX1200-NEXT:    v_frexp_mant_f32_e64 v4, |v0|
 ; GFX1200-NEXT:    v_frexp_mant_f32_e64 v3, |v2|
 ; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v6, v2
@@ -2936,12 +3055,12 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-NEXT:    v_div_fmas_f32 v6, v6, v9, v10
 ; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v7
 ; GFX1200-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.0
-; GFX1200-NEXT:    s_cbranch_vccnz .LBB3_7
-; GFX1200-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX1200-NEXT:    s_cbranch_vccnz .LBB3_8
+; GFX1200-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX1200-NEXT:    s_sub_co_i32 s0, s0, s1
 ; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1200-NEXT:    s_add_co_i32 s0, s0, 12
-; GFX1200-NEXT:  .LBB3_5: ; %frem.loop_body
+; GFX1200-NEXT:  .LBB3_6: ; %frem.loop_body
 ; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1200-NEXT:    v_mov_b32_e32 v8, v5
@@ -2960,11 +3079,11 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_ldexp_f32 v5, v5, 12
-; GFX1200-NEXT:    s_cbranch_scc1 .LBB3_5
-; GFX1200-NEXT:  ; %bb.6: ; %Flow
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB3_6
+; GFX1200-NEXT:  ; %bb.7: ; %Flow
 ; GFX1200-NEXT:    v_mov_b32_e32 v7, s0
 ; GFX1200-NEXT:    v_mov_b32_e32 v5, v8
-; GFX1200-NEXT:  .LBB3_7: ; %frem.loop_exit
+; GFX1200-NEXT:  .LBB3_8: ; %frem.loop_exit
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_add_nc_u32_e32 v7, -11, v7
 ; GFX1200-NEXT:    v_ldexp_f32 v5, v5, v7
@@ -2982,7 +3101,7 @@ define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_ldexp_f32 v3, v4, v3
 ; GFX1200-NEXT:    v_bfi_b32 v3, 0x7fffffff, v3, v2
-; GFX1200-NEXT:  .LBB3_8: ; %Flow17
+; GFX1200-NEXT:  .LBB3_9: ; %Flow17
 ; GFX1200-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v0
 ; GFX1200-NEXT:    v_cmp_nle_f32_e64 s0, 0x7f800000, v1
 ; GFX1200-NEXT:    v_mov_b32_e32 v2, 0
@@ -3578,7 +3697,7 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; SI-NEXT:    v_readfirstlane_b32 s4, v2
 ; SI-NEXT:    v_readfirstlane_b32 s5, v3
 ; SI-NEXT:    s_and_b64 vcc, exec, s[0:1]
-; SI-NEXT:    s_cbranch_vccz .LBB6_3
+; SI-NEXT:    s_cbranch_vccz .LBB6_2
 ; SI-NEXT:  ; %bb.1: ; %frem.else
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
@@ -3587,14 +3706,17 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
 ; SI-NEXT:    s_cselect_b32 s1, s6, s3
 ; SI-NEXT:    s_cselect_b32 s0, 0, s2
-; SI-NEXT:    s_cbranch_execz .LBB6_4
-; SI-NEXT:  ; %bb.2:
-; SI-NEXT:    v_mov_b32_e32 v0, s0
-; SI-NEXT:    v_mov_b32_e32 v1, s1
-; SI-NEXT:    s_branch .LBB6_9
-; SI-NEXT:  .LBB6_3:
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB6_3
+; SI-NEXT:  .LBB6_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
 ; SI-NEXT:    ; implicit-def: $sgpr0_sgpr1
-; SI-NEXT:  .LBB6_4: ; %frem.compute
+; SI-NEXT:  .LBB6_3: ; %Flow16
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB6_9
+; SI-NEXT:  ; %bb.4: ; %frem.compute
 ; SI-NEXT:    s_and_b32 s0, s3, 0x7fffffff
 ; SI-NEXT:    v_frexp_mant_f64_e64 v[0:1], |s[2:3]|
 ; SI-NEXT:    s_cmp_lt_i32 s0, 0x7ff00000
@@ -3693,7 +3815,11 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; SI-NEXT:    v_ldexp_f64 v[0:1], v[0:1], s10
 ; SI-NEXT:    v_mov_b32_e32 v2, s3
 ; SI-NEXT:    v_bfi_b32 v1, s0, v1, v2
-; SI-NEXT:  .LBB6_9: ; %Flow17
+; SI-NEXT:    s_branch .LBB6_10
+; SI-NEXT:  .LBB6_9:
+; SI-NEXT:    v_mov_b32_e32 v0, s0
+; SI-NEXT:    v_mov_b32_e32 v1, s1
+; SI-NEXT:  .LBB6_10: ; %Flow17
 ; SI-NEXT:    v_mov_b32_e32 v2, 0
 ; SI-NEXT:    v_mov_b32_e32 v3, 0x7ff00000
 ; SI-NEXT:    v_cmp_lg_f64_e64 s[0:1], s[4:5], 0
@@ -3727,13 +3853,19 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; CI-NEXT:  ; %bb.1: ; %frem.else
 ; CI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, |v[2:3]|
 ; CI-NEXT:    v_and_b32_e32 v4, 0x80000000, v1
+; CI-NEXT:    s_mov_b64 s[2:3], 0
 ; CI-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc
 ; CI-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc
-; CI-NEXT:    s_cbranch_execz .LBB6_3
-; CI-NEXT:    s_branch .LBB6_8
+; CI-NEXT:    s_branch .LBB6_3
 ; CI-NEXT:  .LBB6_2:
+; CI-NEXT:    s_mov_b64 s[2:3], -1
 ; CI-NEXT:    ; implicit-def: $vgpr4_vgpr5
-; CI-NEXT:  .LBB6_3: ; %frem.compute
+; CI-NEXT:  .LBB6_3: ; %Flow16
+; CI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; CI-NEXT:    s_cselect_b32 s2, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s2, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB6_9
+; CI-NEXT:  ; %bb.4: ; %frem.compute
 ; CI-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|
 ; CI-NEXT:    v_frexp_exp_i32_f64_e32 v11, v[2:3]
 ; CI-NEXT:    v_frexp_exp_i32_f64_e32 v10, v[0:1]
@@ -3756,11 +3888,11 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; CI-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[14:15], v[18:19]
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v13
 ; CI-NEXT:    v_div_fixup_f64 v[8:9], v[8:9], v[4:5], 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB6_7
-; CI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB6_8
+; CI-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; CI-NEXT:    v_sub_i32_e32 v10, vcc, v10, v11
 ; CI-NEXT:    v_add_i32_e32 v13, vcc, 26, v10
-; CI-NEXT:  .LBB6_5: ; %frem.loop_body
+; CI-NEXT:  .LBB6_6: ; %frem.loop_body
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v11, v7
 ; CI-NEXT:    v_mov_b32_e32 v10, v6
@@ -3774,11 +3906,11 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; CI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
 ; CI-NEXT:    v_subrev_i32_e32 v13, vcc, 26, v13
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v13
-; CI-NEXT:    s_cbranch_vccnz .LBB6_5
-; CI-NEXT:  ; %bb.6: ; %Flow
+; CI-NEXT:    s_cbranch_vccnz .LBB6_6
+; CI-NEXT:  ; %bb.7: ; %Flow
 ; CI-NEXT:    v_mov_b32_e32 v6, v10
 ; CI-NEXT:    v_mov_b32_e32 v7, v11
-; CI-NEXT:  .LBB6_7: ; %frem.loop_exit
+; CI-NEXT:  .LBB6_8: ; %frem.loop_exit
 ; CI-NEXT:    v_subrev_i32_e32 v10, vcc, 25, v13
 ; CI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v10
 ; CI-NEXT:    s_brev_b32 s2, -2
@@ -3791,7 +3923,7 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; CI-NEXT:    v_cndmask_b32_e32 v4, v6, v4, vcc
 ; CI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v12
 ; CI-NEXT:    v_bfi_b32 v5, s2, v5, v1
-; CI-NEXT:  .LBB6_8: ; %Flow17
+; CI-NEXT:  .LBB6_9: ; %Flow17
 ; CI-NEXT:    s_mov_b32 s4, 0
 ; CI-NEXT:    s_mov_b32 s5, 0x7ff00000
 ; CI-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[2:3]
@@ -3823,13 +3955,19 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; VI-NEXT:  ; %bb.1: ; %frem.else
 ; VI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, |v[2:3]|
 ; VI-NEXT:    v_and_b32_e32 v4, 0x80000000, v1
+; VI-NEXT:    s_mov_b64 s[2:3], 0
 ; VI-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc
 ; VI-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc
-; VI-NEXT:    s_cbranch_execz .LBB6_3
-; VI-NEXT:    s_branch .LBB6_8
+; VI-NEXT:    s_branch .LBB6_3
 ; VI-NEXT:  .LBB6_2:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr4_vgpr5
-; VI-NEXT:  .LBB6_3: ; %frem.compute
+; VI-NEXT:  .LBB6_3: ; %Flow16
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB6_9
+; VI-NEXT:  ; %bb.4: ; %frem.compute
 ; VI-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|
 ; VI-NEXT:    v_frexp_exp_i32_f64_e32 v11, v[2:3]
 ; VI-NEXT:    v_frexp_exp_i32_f64_e32 v10, v[0:1]
@@ -3852,11 +3990,11 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; VI-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[14:15], v[18:19]
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v13
 ; VI-NEXT:    v_div_fixup_f64 v[8:9], v[8:9], v[4:5], 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB6_7
-; VI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB6_8
+; VI-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; VI-NEXT:    v_sub_u32_e32 v10, vcc, v10, v11
 ; VI-NEXT:    v_add_u32_e32 v13, vcc, 26, v10
-; VI-NEXT:  .LBB6_5: ; %frem.loop_body
+; VI-NEXT:  .LBB6_6: ; %frem.loop_body
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v11, v7
 ; VI-NEXT:    v_mov_b32_e32 v10, v6
@@ -3870,11 +4008,11 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; VI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
 ; VI-NEXT:    v_subrev_u32_e32 v13, vcc, 26, v13
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v13
-; VI-NEXT:    s_cbranch_vccnz .LBB6_5
-; VI-NEXT:  ; %bb.6: ; %Flow
+; VI-NEXT:    s_cbranch_vccnz .LBB6_6
+; VI-NEXT:  ; %bb.7: ; %Flow
 ; VI-NEXT:    v_mov_b32_e32 v6, v10
 ; VI-NEXT:    v_mov_b32_e32 v7, v11
-; VI-NEXT:  .LBB6_7: ; %frem.loop_exit
+; VI-NEXT:  .LBB6_8: ; %frem.loop_exit
 ; VI-NEXT:    v_subrev_u32_e32 v10, vcc, 25, v13
 ; VI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v10
 ; VI-NEXT:    s_brev_b32 s2, -2
@@ -3887,7 +4025,7 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; VI-NEXT:    v_cndmask_b32_e32 v4, v6, v4, vcc
 ; VI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v12
 ; VI-NEXT:    v_bfi_b32 v5, s2, v5, v1
-; VI-NEXT:  .LBB6_8: ; %Flow17
+; VI-NEXT:  .LBB6_9: ; %Flow17
 ; VI-NEXT:    v_mov_b32_e32 v6, s0
 ; VI-NEXT:    v_mov_b32_e32 v7, s1
 ; VI-NEXT:    s_mov_b32 s0, 0
@@ -3916,13 +4054,19 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX9-NEXT:  ; %bb.1: ; %frem.else
 ; GFX9-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, |v[2:3]|
 ; GFX9-NEXT:    v_and_b32_e32 v4, 0x80000000, v1
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX9-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc
 ; GFX9-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB6_3
-; GFX9-NEXT:    s_branch .LBB6_8
+; GFX9-NEXT:    s_branch .LBB6_3
 ; GFX9-NEXT:  .LBB6_2:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr4_vgpr5
-; GFX9-NEXT:  .LBB6_3: ; %frem.compute
+; GFX9-NEXT:  .LBB6_3: ; %Flow16
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB6_9
+; GFX9-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX9-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|
 ; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v11, v[2:3]
 ; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v10, v[0:1]
@@ -3945,11 +4089,11 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX9-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[14:15], v[18:19]
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v13
 ; GFX9-NEXT:    v_div_fixup_f64 v[8:9], v[8:9], v[4:5], 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB6_7
-; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB6_8
+; GFX9-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v10, v10, v11
 ; GFX9-NEXT:    v_add_u32_e32 v13, 26, v10
-; GFX9-NEXT:  .LBB6_5: ; %frem.loop_body
+; GFX9-NEXT:  .LBB6_6: ; %frem.loop_body
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v11, v7
 ; GFX9-NEXT:    v_mov_b32_e32 v10, v6
@@ -3963,11 +4107,11 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX9-NEXT:    v_cndmask_b32_e32 v6, v6, v14, vcc
 ; GFX9-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v13
-; GFX9-NEXT:    s_cbranch_vccnz .LBB6_5
-; GFX9-NEXT:  ; %bb.6: ; %Flow
+; GFX9-NEXT:    s_cbranch_vccnz .LBB6_6
+; GFX9-NEXT:  ; %bb.7: ; %Flow
 ; GFX9-NEXT:    v_mov_b32_e32 v6, v10
 ; GFX9-NEXT:    v_mov_b32_e32 v7, v11
-; GFX9-NEXT:  .LBB6_7: ; %frem.loop_exit
+; GFX9-NEXT:  .LBB6_8: ; %frem.loop_exit
 ; GFX9-NEXT:    v_subrev_u32_e32 v10, 25, v13
 ; GFX9-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v10
 ; GFX9-NEXT:    s_brev_b32 s2, -2
@@ -3980,7 +4124,7 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX9-NEXT:    v_cndmask_b32_e32 v4, v6, v4, vcc
 ; GFX9-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v12
 ; GFX9-NEXT:    v_bfi_b32 v5, s2, v5, v1
-; GFX9-NEXT:  .LBB6_8: ; %Flow17
+; GFX9-NEXT:  .LBB6_9: ; %Flow17
 ; GFX9-NEXT:    s_mov_b32 s2, 0
 ; GFX9-NEXT:    s_mov_b32 s3, 0x7ff00000
 ; GFX9-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[2:3]
@@ -4010,13 +4154,19 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX10-NEXT:  ; %bb.1: ; %frem.else
 ; GFX10-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[2:3]|
 ; GFX10-NEXT:    v_and_b32_e32 v4, 0x80000000, v1
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo
 ; GFX10-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB6_3
-; GFX10-NEXT:    s_branch .LBB6_8
+; GFX10-NEXT:    s_branch .LBB6_3
 ; GFX10-NEXT:  .LBB6_2:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr4_vgpr5
-; GFX10-NEXT:  .LBB6_3: ; %frem.compute
+; GFX10-NEXT:  .LBB6_3: ; %Flow16
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB6_9
+; GFX10-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX10-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|
 ; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v9, v[2:3]
 ; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[0:1]
@@ -4040,11 +4190,11 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX10-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[10:11], v[16:17]
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v13
 ; GFX10-NEXT:    v_div_fixup_f64 v[8:9], v[8:9], v[4:5], 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB6_7
-; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB6_8
+; GFX10-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 26
-; GFX10-NEXT:  .LBB6_5: ; %frem.loop_body
+; GFX10-NEXT:  .LBB6_6: ; %frem.loop_body
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v11, v7
 ; GFX10-NEXT:    v_mov_b32_e32 v10, v6
@@ -4058,12 +4208,12 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX10-NEXT:    v_cndmask_b32_e32 v7, v7, v14, vcc_lo
 ; GFX10-NEXT:    v_cndmask_b32_e32 v6, v6, v13, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
-; GFX10-NEXT:    s_cbranch_scc1 .LBB6_5
-; GFX10-NEXT:  ; %bb.6: ; %Flow
+; GFX10-NEXT:    s_cbranch_scc1 .LBB6_6
+; GFX10-NEXT:  ; %bb.7: ; %Flow
 ; GFX10-NEXT:    v_mov_b32_e32 v6, v10
 ; GFX10-NEXT:    v_mov_b32_e32 v13, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v7, v11
-; GFX10-NEXT:  .LBB6_7: ; %frem.loop_exit
+; GFX10-NEXT:  .LBB6_8: ; %frem.loop_exit
 ; GFX10-NEXT:    v_subrev_nc_u32_e32 v10, 25, v13
 ; GFX10-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v10
 ; GFX10-NEXT:    v_mul_f64 v[8:9], v[6:7], v[8:9]
@@ -4075,7 +4225,7 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX10-NEXT:    v_cndmask_b32_e32 v4, v6, v4, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v12
 ; GFX10-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v1
-; GFX10-NEXT:  .LBB6_8: ; %Flow17
+; GFX10-NEXT:  .LBB6_9: ; %Flow17
 ; GFX10-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[2:3]
 ; GFX10-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|
 ; GFX10-NEXT:    v_mov_b32_e32 v6, 0
@@ -4102,14 +4252,21 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-NEXT:  ; %bb.1: ; %frem.else
 ; GFX11-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[2:3]|
 ; GFX11-NEXT:    v_and_b32_e32 v4, 0x80000000, v1
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX11-NEXT:    s_mov_b32 s2, 0
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo
 ; GFX11-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo
-; GFX11-NEXT:    s_cbranch_execz .LBB6_3
-; GFX11-NEXT:    s_branch .LBB6_8
+; GFX11-NEXT:    s_branch .LBB6_3
 ; GFX11-NEXT:  .LBB6_2:
+; GFX11-NEXT:    s_mov_b32 s2, -1
 ; GFX11-NEXT:    ; implicit-def: $vgpr4_vgpr5
-; GFX11-NEXT:  .LBB6_3: ; %frem.compute
+; GFX11-NEXT:  .LBB6_3: ; %Flow16
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB6_9
+; GFX11-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX11-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|
 ; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v9, v[2:3]
 ; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[0:1]
@@ -4141,13 +4298,13 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v13
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_div_fixup_f64 v[8:9], v[8:9], v[4:5], 1.0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB6_7
-; GFX11-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX11-NEXT:    s_cbranch_vccnz .LBB6_8
+; GFX11-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX11-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_add_i32 s2, s2, 26
 ; GFX11-NEXT:    .p2align 6
-; GFX11-NEXT:  .LBB6_5: ; %frem.loop_body
+; GFX11-NEXT:  .LBB6_6: ; %frem.loop_body
 ; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v11, v7 :: v_dual_mov_b32 v10, v6
@@ -4163,11 +4320,11 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_dual_cndmask_b32 v7, v7, v14 :: v_dual_cndmask_b32 v6, v6, v13
 ; GFX11-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
-; GFX11-NEXT:    s_cbranch_scc1 .LBB6_5
-; GFX11-NEXT:  ; %bb.6: ; %Flow
+; GFX11-NEXT:    s_cbranch_scc1 .LBB6_6
+; GFX11-NEXT:  ; %bb.7: ; %Flow
 ; GFX11-NEXT:    v_dual_mov_b32 v13, s2 :: v_dual_mov_b32 v6, v10
 ; GFX11-NEXT:    v_mov_b32_e32 v7, v11
-; GFX11-NEXT:  .LBB6_7: ; %frem.loop_exit
+; GFX11-NEXT:  .LBB6_8: ; %frem.loop_exit
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_subrev_nc_u32_e32 v10, 25, v13
 ; GFX11-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v10
@@ -4183,7 +4340,7 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX11-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v12
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v1
-; GFX11-NEXT:  .LBB6_8: ; %Flow17
+; GFX11-NEXT:  .LBB6_9: ; %Flow17
 ; GFX11-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[2:3]
 ; GFX11-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|
 ; GFX11-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo
@@ -4209,14 +4366,21 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-NEXT:  ; %bb.1: ; %frem.else
 ; GFX1150-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[2:3]|
 ; GFX1150-NEXT:    v_and_b32_e32 v4, 0x80000000, v1
-; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1150-NEXT:    s_mov_b32 s2, 0
+; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo
 ; GFX1150-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo
-; GFX1150-NEXT:    s_cbranch_execz .LBB6_3
-; GFX1150-NEXT:    s_branch .LBB6_8
+; GFX1150-NEXT:    s_branch .LBB6_3
 ; GFX1150-NEXT:  .LBB6_2:
+; GFX1150-NEXT:    s_mov_b32 s2, -1
 ; GFX1150-NEXT:    ; implicit-def: $vgpr4_vgpr5
-; GFX1150-NEXT:  .LBB6_3: ; %frem.compute
+; GFX1150-NEXT:  .LBB6_3: ; %Flow16
+; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1150-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1150-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB6_9
+; GFX1150-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX1150-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|
 ; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v9, v[2:3]
 ; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[0:1]
@@ -4247,13 +4411,13 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[10:11], v[16:17]
 ; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v13
 ; GFX1150-NEXT:    v_div_fixup_f64 v[8:9], v[8:9], v[4:5], 1.0
-; GFX1150-NEXT:    s_cbranch_vccnz .LBB6_7
-; GFX1150-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX1150-NEXT:    s_cbranch_vccnz .LBB6_8
+; GFX1150-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX1150-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-NEXT:    s_add_i32 s2, s2, 26
 ; GFX1150-NEXT:    .p2align 6
-; GFX1150-NEXT:  .LBB6_5: ; %frem.loop_body
+; GFX1150-NEXT:  .LBB6_6: ; %frem.loop_body
 ; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-NEXT:    v_dual_mov_b32 v11, v7 :: v_dual_mov_b32 v10, v6
@@ -4269,11 +4433,11 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_dual_cndmask_b32 v7, v7, v14 :: v_dual_cndmask_b32 v6, v6, v13
 ; GFX1150-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
-; GFX1150-NEXT:    s_cbranch_scc1 .LBB6_5
-; GFX1150-NEXT:  ; %bb.6: ; %Flow
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB6_6
+; GFX1150-NEXT:  ; %bb.7: ; %Flow
 ; GFX1150-NEXT:    v_dual_mov_b32 v13, s2 :: v_dual_mov_b32 v6, v10
 ; GFX1150-NEXT:    v_mov_b32_e32 v7, v11
-; GFX1150-NEXT:  .LBB6_7: ; %frem.loop_exit
+; GFX1150-NEXT:  .LBB6_8: ; %frem.loop_exit
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_subrev_nc_u32_e32 v10, 25, v13
 ; GFX1150-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v10
@@ -4289,7 +4453,7 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1150-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v12
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v1
-; GFX1150-NEXT:  .LBB6_8: ; %Flow17
+; GFX1150-NEXT:  .LBB6_9: ; %Flow17
 ; GFX1150-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[2:3]
 ; GFX1150-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|
 ; GFX1150-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo
@@ -4315,14 +4479,21 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-NEXT:  ; %bb.1: ; %frem.else
 ; GFX1200-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[2:3]|
 ; GFX1200-NEXT:    v_and_b32_e32 v4, 0x80000000, v1
-; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1200-NEXT:    s_mov_b32 s2, 0
+; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo
 ; GFX1200-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo
-; GFX1200-NEXT:    s_cbranch_execz .LBB6_3
-; GFX1200-NEXT:    s_branch .LBB6_8
+; GFX1200-NEXT:    s_branch .LBB6_3
 ; GFX1200-NEXT:  .LBB6_2:
+; GFX1200-NEXT:    s_mov_b32 s2, -1
 ; GFX1200-NEXT:    ; implicit-def: $vgpr4_vgpr5
-; GFX1200-NEXT:  .LBB6_3: ; %frem.compute
+; GFX1200-NEXT:  .LBB6_3: ; %Flow16
+; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1200-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1200-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1200-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB6_9
+; GFX1200-NEXT:  ; %bb.4: ; %frem.compute
 ; GFX1200-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|
 ; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v9, v[2:3]
 ; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[0:1]
@@ -4354,12 +4525,12 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[10:11], v[16:17]
 ; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v13
 ; GFX1200-NEXT:    v_div_fixup_f64 v[8:9], v[8:9], v[4:5], 1.0
-; GFX1200-NEXT:    s_cbranch_vccnz .LBB6_7
-; GFX1200-NEXT:  ; %bb.4: ; %frem.loop_body.preheader
+; GFX1200-NEXT:    s_cbranch_vccnz .LBB6_8
+; GFX1200-NEXT:  ; %bb.5: ; %frem.loop_body.preheader
 ; GFX1200-NEXT:    s_sub_co_i32 s2, s2, s3
 ; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1200-NEXT:    s_add_co_i32 s2, s2, 26
-; GFX1200-NEXT:  .LBB6_5: ; %frem.loop_body
+; GFX1200-NEXT:  .LBB6_6: ; %frem.loop_body
 ; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1200-NEXT:    v_dual_mov_b32 v11, v7 :: v_dual_mov_b32 v10, v6
@@ -4376,11 +4547,11 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_dual_cndmask_b32 v7, v7, v14 :: v_dual_cndmask_b32 v6, v6, v13
 ; GFX1200-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
-; GFX1200-NEXT:    s_cbranch_scc1 .LBB6_5
-; GFX1200-NEXT:  ; %bb.6: ; %Flow
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB6_6
+; GFX1200-NEXT:  ; %bb.7: ; %Flow
 ; GFX1200-NEXT:    v_dual_mov_b32 v13, s2 :: v_dual_mov_b32 v6, v10
 ; GFX1200-NEXT:    v_mov_b32_e32 v7, v11
-; GFX1200-NEXT:  .LBB6_7: ; %frem.loop_exit
+; GFX1200-NEXT:  .LBB6_8: ; %frem.loop_exit
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_subrev_nc_u32_e32 v10, 25, v13
 ; GFX1200-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v10
@@ -4397,7 +4568,7 @@ define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1
 ; GFX1200-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v12
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v1
-; GFX1200-NEXT:  .LBB6_8: ; %Flow17
+; GFX1200-NEXT:  .LBB6_9: ; %Flow17
 ; GFX1200-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[2:3]
 ; GFX1200-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|
 ; GFX1200-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo
@@ -4992,11 +5163,17 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_and_b32_e32 v2, 0xffff8000, v0
 ; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v3, v4
 ; SI-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc
-; SI-NEXT:    s_cbranch_execz .LBB9_3
-; SI-NEXT:    s_branch .LBB9_8
+; SI-NEXT:    s_mov_b64 s[0:1], 0
+; SI-NEXT:    s_branch .LBB9_3
 ; SI-NEXT:  .LBB9_2:
+; SI-NEXT:    s_mov_b64 s[0:1], -1
 ; SI-NEXT:    ; implicit-def: $vgpr2
-; SI-NEXT:  .LBB9_3: ; %frem.compute19
+; SI-NEXT:  .LBB9_3: ; %Flow57
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s0, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_9
+; SI-NEXT:  ; %bb.4: ; %frem.compute19
 ; SI-NEXT:    s_mov_b32 s3, 0x7f800000
 ; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v3|, s3
 ; SI-NEXT:    v_frexp_exp_i32_f32_e32 v2, v3
@@ -5031,11 +5208,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_div_fmas_f32 v4, v4, v6, v7
 ; SI-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.0
 ; SI-NEXT:    s_cmp_lt_i32 s1, 12
-; SI-NEXT:    s_cbranch_scc1 .LBB9_7
-; SI-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader
+; SI-NEXT:    s_cbranch_scc1 .LBB9_8
+; SI-NEXT:  ; %bb.5: ; %frem.loop_body27.preheader
 ; SI-NEXT:    s_sub_i32 s1, s2, s3
 ; SI-NEXT:    s_add_i32 s1, s1, 11
-; SI-NEXT:  .LBB9_5: ; %frem.loop_body27
+; SI-NEXT:  .LBB9_6: ; %frem.loop_body27
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; SI-NEXT:    v_mov_b32_e32 v5, v3
 ; SI-NEXT:    v_mul_f32_e32 v3, v5, v4
@@ -5047,10 +5224,10 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_add_i32 s1, s1, -11
 ; SI-NEXT:    v_ldexp_f32_e64 v3, v3, 11
 ; SI-NEXT:    s_cmp_gt_i32 s1, 11
-; SI-NEXT:    s_cbranch_scc1 .LBB9_5
-; SI-NEXT:  ; %bb.6: ; %Flow55
+; SI-NEXT:    s_cbranch_scc1 .LBB9_6
+; SI-NEXT:  ; %bb.7: ; %Flow55
 ; SI-NEXT:    v_mov_b32_e32 v3, v5
-; SI-NEXT:  .LBB9_7: ; %frem.loop_exit28
+; SI-NEXT:  .LBB9_8: ; %frem.loop_exit28
 ; SI-NEXT:    s_add_i32 s1, s1, -10
 ; SI-NEXT:    v_ldexp_f32_e64 v3, v3, s1
 ; SI-NEXT:    v_mul_f32_e32 v4, v3, v4
@@ -5064,22 +5241,28 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_and_b32_e32 v3, 0xffff8000, v0
 ; SI-NEXT:    v_and_b32_e32 v2, 0x7fff, v2
 ; SI-NEXT:    v_or_b32_e32 v2, v2, v3
-; SI-NEXT:  .LBB9_8: ; %Flow58
+; SI-NEXT:  .LBB9_9: ; %Flow58
 ; SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v0
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v1
 ; SI-NEXT:    v_cvt_f32_f16_e64 v6, |v3|
 ; SI-NEXT:    v_cvt_f32_f16_e64 v7, |v4|
 ; SI-NEXT:    v_cmp_ngt_f32_e32 vcc, v6, v7
-; SI-NEXT:    s_cbranch_vccz .LBB9_10
-; SI-NEXT:  ; %bb.9: ; %frem.else
+; SI-NEXT:    s_cbranch_vccz .LBB9_11
+; SI-NEXT:  ; %bb.10: ; %frem.else
 ; SI-NEXT:    v_and_b32_e32 v5, 0x8000, v3
 ; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v6, v7
 ; SI-NEXT:    v_cndmask_b32_e32 v5, v3, v5, vcc
-; SI-NEXT:    s_cbranch_execz .LBB9_11
-; SI-NEXT:    s_branch .LBB9_16
-; SI-NEXT:  .LBB9_10:
+; SI-NEXT:    s_mov_b64 s[0:1], 0
+; SI-NEXT:    s_branch .LBB9_12
+; SI-NEXT:  .LBB9_11:
+; SI-NEXT:    s_mov_b64 s[0:1], -1
 ; SI-NEXT:    ; implicit-def: $vgpr5
-; SI-NEXT:  .LBB9_11: ; %frem.compute
+; SI-NEXT:  .LBB9_12: ; %Flow53
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s0, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB9_18
+; SI-NEXT:  ; %bb.13: ; %frem.compute
 ; SI-NEXT:    s_mov_b32 s3, 0x7f800000
 ; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v6|, s3
 ; SI-NEXT:    v_frexp_exp_i32_f32_e32 v5, v6
@@ -5114,11 +5297,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_div_fmas_f32 v7, v7, v9, v10
 ; SI-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.0
 ; SI-NEXT:    s_cmp_lt_i32 s1, 12
-; SI-NEXT:    s_cbranch_scc1 .LBB9_15
-; SI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; SI-NEXT:    s_cbranch_scc1 .LBB9_17
+; SI-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; SI-NEXT:    s_sub_i32 s1, s2, s3
 ; SI-NEXT:    s_add_i32 s1, s1, 11
-; SI-NEXT:  .LBB9_13: ; %frem.loop_body
+; SI-NEXT:  .LBB9_15: ; %frem.loop_body
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; SI-NEXT:    v_mov_b32_e32 v8, v6
 ; SI-NEXT:    v_mul_f32_e32 v6, v8, v7
@@ -5130,10 +5313,10 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_add_i32 s1, s1, -11
 ; SI-NEXT:    v_ldexp_f32_e64 v6, v6, 11
 ; SI-NEXT:    s_cmp_gt_i32 s1, 11
-; SI-NEXT:    s_cbranch_scc1 .LBB9_13
-; SI-NEXT:  ; %bb.14: ; %Flow
+; SI-NEXT:    s_cbranch_scc1 .LBB9_15
+; SI-NEXT:  ; %bb.16: ; %Flow
 ; SI-NEXT:    v_mov_b32_e32 v6, v8
-; SI-NEXT:  .LBB9_15: ; %frem.loop_exit
+; SI-NEXT:  .LBB9_17: ; %frem.loop_exit
 ; SI-NEXT:    s_add_i32 s1, s1, -10
 ; SI-NEXT:    v_ldexp_f32_e64 v6, v6, s1
 ; SI-NEXT:    v_mul_f32_e32 v7, v6, v7
@@ -5147,7 +5330,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_and_b32_e32 v6, 0x8000, v3
 ; SI-NEXT:    v_and_b32_e32 v5, 0x7fff, v5
 ; SI-NEXT:    v_or_b32_e32 v5, v5, v6
-; SI-NEXT:  .LBB9_16: ; %Flow54
+; SI-NEXT:  .LBB9_18: ; %Flow54
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; SI-NEXT:    v_cvt_f32_f16_e64 v0, |v0|
 ; SI-NEXT:    s_mov_b32 s2, 0x7f800000
@@ -5193,11 +5376,17 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_and_b32_e32 v2, 0xffff8000, v0
 ; CI-NEXT:    v_cmp_eq_f32_e32 vcc, v4, v3
 ; CI-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc
-; CI-NEXT:    s_cbranch_execz .LBB9_3
-; CI-NEXT:    s_branch .LBB9_8
+; CI-NEXT:    s_mov_b64 s[0:1], 0
+; CI-NEXT:    s_branch .LBB9_3
 ; CI-NEXT:  .LBB9_2:
+; CI-NEXT:    s_mov_b64 s[0:1], -1
 ; CI-NEXT:    ; implicit-def: $vgpr2
-; CI-NEXT:  .LBB9_3: ; %frem.compute19
+; CI-NEXT:  .LBB9_3: ; %Flow57
+; CI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CI-NEXT:    s_cselect_b32 s0, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s0, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB9_9
+; CI-NEXT:  ; %bb.4: ; %frem.compute19
 ; CI-NEXT:    v_frexp_exp_i32_f32_e32 v7, v4
 ; CI-NEXT:    v_frexp_mant_f32_e32 v2, v4
 ; CI-NEXT:    v_frexp_mant_f32_e32 v4, v3
@@ -5221,11 +5410,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_div_fmas_f32 v6, v6, v10, v11
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v4
 ; CI-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB9_7
-; CI-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB9_8
+; CI-NEXT:  ; %bb.5: ; %frem.loop_body27.preheader
 ; CI-NEXT:    v_sub_i32_e32 v4, vcc, v7, v8
 ; CI-NEXT:    v_add_i32_e32 v4, vcc, 11, v4
-; CI-NEXT:  .LBB9_5: ; %frem.loop_body27
+; CI-NEXT:  .LBB9_6: ; %frem.loop_body27
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v7, v5
 ; CI-NEXT:    v_mul_f32_e32 v5, v7, v6
@@ -5237,10 +5426,10 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_add_i32_e32 v4, vcc, -11, v4
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v4
 ; CI-NEXT:    v_ldexp_f32_e64 v5, v5, 11
-; CI-NEXT:    s_cbranch_vccnz .LBB9_5
-; CI-NEXT:  ; %bb.6: ; %Flow55
+; CI-NEXT:    s_cbranch_vccnz .LBB9_6
+; CI-NEXT:  ; %bb.7: ; %Flow55
 ; CI-NEXT:    v_mov_b32_e32 v5, v7
-; CI-NEXT:  .LBB9_7: ; %frem.loop_exit28
+; CI-NEXT:  .LBB9_8: ; %frem.loop_exit28
 ; CI-NEXT:    v_add_i32_e32 v4, vcc, -10, v4
 ; CI-NEXT:    v_ldexp_f32_e32 v4, v5, v4
 ; CI-NEXT:    v_mul_f32_e32 v5, v4, v6
@@ -5254,22 +5443,28 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_and_b32_e32 v3, 0xffff8000, v0
 ; CI-NEXT:    v_and_b32_e32 v2, 0x7fff, v2
 ; CI-NEXT:    v_or_b32_e32 v2, v2, v3
-; CI-NEXT:  .LBB9_8: ; %Flow58
+; CI-NEXT:  .LBB9_9: ; %Flow58
 ; CI-NEXT:    v_lshrrev_b32_e32 v3, 16, v0
 ; CI-NEXT:    v_lshrrev_b32_e32 v4, 16, v1
 ; CI-NEXT:    v_cvt_f32_f16_e64 v7, |v3|
 ; CI-NEXT:    v_cvt_f32_f16_e64 v6, |v4|
 ; CI-NEXT:    v_cmp_ngt_f32_e32 vcc, v7, v6
-; CI-NEXT:    s_cbranch_vccz .LBB9_10
-; CI-NEXT:  ; %bb.9: ; %frem.else
+; CI-NEXT:    s_cbranch_vccz .LBB9_11
+; CI-NEXT:  ; %bb.10: ; %frem.else
 ; CI-NEXT:    v_and_b32_e32 v5, 0x8000, v3
 ; CI-NEXT:    v_cmp_eq_f32_e32 vcc, v7, v6
 ; CI-NEXT:    v_cndmask_b32_e32 v5, v3, v5, vcc
-; CI-NEXT:    s_cbranch_execz .LBB9_11
-; CI-NEXT:    s_branch .LBB9_16
-; CI-NEXT:  .LBB9_10:
+; CI-NEXT:    s_mov_b64 s[0:1], 0
+; CI-NEXT:    s_branch .LBB9_12
+; CI-NEXT:  .LBB9_11:
+; CI-NEXT:    s_mov_b64 s[0:1], -1
 ; CI-NEXT:    ; implicit-def: $vgpr5
-; CI-NEXT:  .LBB9_11: ; %frem.compute
+; CI-NEXT:  .LBB9_12: ; %Flow53
+; CI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CI-NEXT:    s_cselect_b32 s0, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s0, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB9_18
+; CI-NEXT:  ; %bb.13: ; %frem.compute
 ; CI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v7
 ; CI-NEXT:    v_frexp_mant_f32_e32 v5, v7
 ; CI-NEXT:    v_frexp_mant_f32_e32 v7, v6
@@ -5293,11 +5488,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_div_fmas_f32 v9, v9, v13, v14
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v7
 ; CI-NEXT:    v_div_fixup_f32 v9, v9, v6, 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB9_15
-; CI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB9_17
+; CI-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; CI-NEXT:    v_sub_i32_e32 v7, vcc, v10, v11
 ; CI-NEXT:    v_add_i32_e32 v7, vcc, 11, v7
-; CI-NEXT:  .LBB9_13: ; %frem.loop_body
+; CI-NEXT:  .LBB9_15: ; %frem.loop_body
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v10, v8
 ; CI-NEXT:    v_mul_f32_e32 v8, v10, v9
@@ -5309,10 +5504,10 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_add_i32_e32 v7, vcc, -11, v7
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v7
 ; CI-NEXT:    v_ldexp_f32_e64 v8, v8, 11
-; CI-NEXT:    s_cbranch_vccnz .LBB9_13
-; CI-NEXT:  ; %bb.14: ; %Flow
+; CI-NEXT:    s_cbranch_vccnz .LBB9_15
+; CI-NEXT:  ; %bb.16: ; %Flow
 ; CI-NEXT:    v_mov_b32_e32 v8, v10
-; CI-NEXT:  .LBB9_15: ; %frem.loop_exit
+; CI-NEXT:  .LBB9_17: ; %frem.loop_exit
 ; CI-NEXT:    v_add_i32_e32 v7, vcc, -10, v7
 ; CI-NEXT:    v_ldexp_f32_e32 v7, v8, v7
 ; CI-NEXT:    v_mul_f32_e32 v8, v7, v9
@@ -5326,7 +5521,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_and_b32_e32 v6, 0x8000, v3
 ; CI-NEXT:    v_and_b32_e32 v5, 0x7fff, v5
 ; CI-NEXT:    v_or_b32_e32 v5, v5, v6
-; CI-NEXT:  .LBB9_16: ; %Flow54
+; CI-NEXT:  .LBB9_18: ; %Flow54
 ; CI-NEXT:    v_cvt_f32_f16_e32 v1, v1
 ; CI-NEXT:    v_cvt_f32_f16_e64 v0, |v0|
 ; CI-NEXT:    s_mov_b32 s2, 0x7f800000
@@ -5372,11 +5567,17 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_and_b32_e32 v2, 0x8000, v0
 ; VI-NEXT:    v_cmp_eq_f32_e32 vcc, v4, v3
 ; VI-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc
-; VI-NEXT:    s_cbranch_execz .LBB9_3
-; VI-NEXT:    s_branch .LBB9_8
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB9_3
 ; VI-NEXT:  .LBB9_2:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr2
-; VI-NEXT:  .LBB9_3: ; %frem.compute19
+; VI-NEXT:  .LBB9_3: ; %Flow57
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_9
+; VI-NEXT:  ; %bb.4: ; %frem.compute19
 ; VI-NEXT:    v_frexp_exp_i32_f32_e32 v7, v4
 ; VI-NEXT:    v_frexp_mant_f32_e32 v2, v4
 ; VI-NEXT:    v_frexp_mant_f32_e32 v4, v3
@@ -5400,11 +5601,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_div_fmas_f32 v6, v6, v10, v11
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v4
 ; VI-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB9_7
-; VI-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB9_8
+; VI-NEXT:  ; %bb.5: ; %frem.loop_body27.preheader
 ; VI-NEXT:    v_sub_u32_e32 v4, vcc, v7, v8
 ; VI-NEXT:    v_add_u32_e32 v4, vcc, 11, v4
-; VI-NEXT:  .LBB9_5: ; %frem.loop_body27
+; VI-NEXT:  .LBB9_6: ; %frem.loop_body27
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v7, v5
 ; VI-NEXT:    v_mul_f32_e32 v5, v7, v6
@@ -5416,10 +5617,10 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_add_u32_e32 v4, vcc, -11, v4
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v4
 ; VI-NEXT:    v_ldexp_f32 v5, v5, 11
-; VI-NEXT:    s_cbranch_vccnz .LBB9_5
-; VI-NEXT:  ; %bb.6: ; %Flow55
+; VI-NEXT:    s_cbranch_vccnz .LBB9_6
+; VI-NEXT:  ; %bb.7: ; %Flow55
 ; VI-NEXT:    v_mov_b32_e32 v5, v7
-; VI-NEXT:  .LBB9_7: ; %frem.loop_exit28
+; VI-NEXT:  .LBB9_8: ; %frem.loop_exit28
 ; VI-NEXT:    v_add_u32_e32 v4, vcc, -10, v4
 ; VI-NEXT:    v_ldexp_f32 v4, v5, v4
 ; VI-NEXT:    v_mul_f32_e32 v5, v4, v6
@@ -5432,22 +5633,28 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; VI-NEXT:    s_movk_i32 s2, 0x7fff
 ; VI-NEXT:    v_bfi_b32 v2, s2, v2, v0
-; VI-NEXT:  .LBB9_8:
+; VI-NEXT:  .LBB9_9:
 ; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v0
 ; VI-NEXT:    v_lshrrev_b32_e32 v4, 16, v1
 ; VI-NEXT:    v_cvt_f32_f16_e64 v7, |v3|
 ; VI-NEXT:    v_cvt_f32_f16_e64 v6, |v4|
 ; VI-NEXT:    v_cmp_ngt_f32_e32 vcc, v7, v6
-; VI-NEXT:    s_cbranch_vccz .LBB9_10
-; VI-NEXT:  ; %bb.9: ; %frem.else
+; VI-NEXT:    s_cbranch_vccz .LBB9_11
+; VI-NEXT:  ; %bb.10: ; %frem.else
 ; VI-NEXT:    v_and_b32_e32 v5, 0x8000, v3
 ; VI-NEXT:    v_cmp_eq_f32_e32 vcc, v7, v6
 ; VI-NEXT:    v_cndmask_b32_e32 v5, v3, v5, vcc
-; VI-NEXT:    s_cbranch_execz .LBB9_11
-; VI-NEXT:    s_branch .LBB9_16
-; VI-NEXT:  .LBB9_10:
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB9_12
+; VI-NEXT:  .LBB9_11:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr5
-; VI-NEXT:  .LBB9_11: ; %frem.compute
+; VI-NEXT:  .LBB9_12: ; %Flow53
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB9_18
+; VI-NEXT:  ; %bb.13: ; %frem.compute
 ; VI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v7
 ; VI-NEXT:    v_frexp_mant_f32_e32 v5, v7
 ; VI-NEXT:    v_frexp_mant_f32_e32 v7, v6
@@ -5471,11 +5678,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_div_fmas_f32 v9, v9, v13, v14
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v7
 ; VI-NEXT:    v_div_fixup_f32 v9, v9, v6, 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB9_15
-; VI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB9_17
+; VI-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; VI-NEXT:    v_sub_u32_e32 v7, vcc, v10, v11
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, 11, v7
-; VI-NEXT:  .LBB9_13: ; %frem.loop_body
+; VI-NEXT:  .LBB9_15: ; %frem.loop_body
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v10, v8
 ; VI-NEXT:    v_mul_f32_e32 v8, v10, v9
@@ -5487,10 +5694,10 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, -11, v7
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v7
 ; VI-NEXT:    v_ldexp_f32 v8, v8, 11
-; VI-NEXT:    s_cbranch_vccnz .LBB9_13
-; VI-NEXT:  ; %bb.14: ; %Flow
+; VI-NEXT:    s_cbranch_vccnz .LBB9_15
+; VI-NEXT:  ; %bb.16: ; %Flow
 ; VI-NEXT:    v_mov_b32_e32 v8, v10
-; VI-NEXT:  .LBB9_15: ; %frem.loop_exit
+; VI-NEXT:  .LBB9_17: ; %frem.loop_exit
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, -10, v7
 ; VI-NEXT:    v_ldexp_f32 v7, v8, v7
 ; VI-NEXT:    v_mul_f32_e32 v8, v7, v9
@@ -5503,7 +5710,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; VI-NEXT:    s_movk_i32 s2, 0x7fff
 ; VI-NEXT:    v_bfi_b32 v5, s2, v5, v3
-; VI-NEXT:  .LBB9_16: ; %Flow54
+; VI-NEXT:  .LBB9_18: ; %Flow54
 ; VI-NEXT:    s_movk_i32 s4, 0x7c00
 ; VI-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v1
 ; VI-NEXT:    v_cmp_nge_f16_e64 s[2:3], |v0|, s4
@@ -5538,11 +5745,17 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_and_b32_e32 v2, 0x8000, v1
 ; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, v4, v3
 ; GFX9-NEXT:    v_cndmask_b32_e32 v2, v1, v2, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB9_3
-; GFX9-NEXT:    s_branch .LBB9_8
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-NEXT:    s_branch .LBB9_3
 ; GFX9-NEXT:  .LBB9_2:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr2
-; GFX9-NEXT:  .LBB9_3: ; %frem.compute19
+; GFX9-NEXT:  .LBB9_3: ; %Flow57
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_9
+; GFX9-NEXT:  ; %bb.4: ; %frem.compute19
 ; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v7, v4
 ; GFX9-NEXT:    v_frexp_mant_f32_e32 v2, v4
 ; GFX9-NEXT:    v_frexp_mant_f32_e32 v4, v3
@@ -5566,11 +5779,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_div_fmas_f32 v6, v6, v10, v11
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v4
 ; GFX9-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB9_7
-; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB9_8
+; GFX9-NEXT:  ; %bb.5: ; %frem.loop_body27.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v4, v7, v8
 ; GFX9-NEXT:    v_add_u32_e32 v4, 11, v4
-; GFX9-NEXT:  .LBB9_5: ; %frem.loop_body27
+; GFX9-NEXT:  .LBB9_6: ; %frem.loop_body27
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v7, v5
 ; GFX9-NEXT:    v_mul_f32_e32 v5, v7, v6
@@ -5582,10 +5795,10 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v4
 ; GFX9-NEXT:    v_ldexp_f32 v5, v5, 11
-; GFX9-NEXT:    s_cbranch_vccnz .LBB9_5
-; GFX9-NEXT:  ; %bb.6: ; %Flow55
+; GFX9-NEXT:    s_cbranch_vccnz .LBB9_6
+; GFX9-NEXT:  ; %bb.7: ; %Flow55
 ; GFX9-NEXT:    v_mov_b32_e32 v5, v7
-; GFX9-NEXT:  .LBB9_7: ; %frem.loop_exit28
+; GFX9-NEXT:  .LBB9_8: ; %frem.loop_exit28
 ; GFX9-NEXT:    v_add_u32_e32 v4, -10, v4
 ; GFX9-NEXT:    v_ldexp_f32 v4, v5, v4
 ; GFX9-NEXT:    v_mul_f32_e32 v5, v4, v6
@@ -5598,21 +5811,27 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; GFX9-NEXT:    s_movk_i32 s2, 0x7fff
 ; GFX9-NEXT:    v_bfi_b32 v2, s2, v2, v1
-; GFX9-NEXT:  .LBB9_8:
+; GFX9-NEXT:  .LBB9_9:
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX9-NEXT:    v_cvt_f32_f16_e64 v6, |v3|
 ; GFX9-NEXT:    v_cvt_f32_f16_sdwa v5, |v0| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1
 ; GFX9-NEXT:    v_cmp_ngt_f32_e32 vcc, v6, v5
-; GFX9-NEXT:    s_cbranch_vccz .LBB9_10
-; GFX9-NEXT:  ; %bb.9: ; %frem.else
+; GFX9-NEXT:    s_cbranch_vccz .LBB9_11
+; GFX9-NEXT:  ; %bb.10: ; %frem.else
 ; GFX9-NEXT:    v_and_b32_e32 v4, 0x8000, v3
 ; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, v6, v5
 ; GFX9-NEXT:    v_cndmask_b32_e32 v4, v3, v4, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB9_11
-; GFX9-NEXT:    s_branch .LBB9_16
-; GFX9-NEXT:  .LBB9_10:
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-NEXT:    s_branch .LBB9_12
+; GFX9-NEXT:  .LBB9_11:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr4
-; GFX9-NEXT:  .LBB9_11: ; %frem.compute
+; GFX9-NEXT:  .LBB9_12: ; %Flow53
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB9_18
+; GFX9-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v9, v6
 ; GFX9-NEXT:    v_frexp_mant_f32_e32 v4, v6
 ; GFX9-NEXT:    v_frexp_mant_f32_e32 v6, v5
@@ -5636,11 +5855,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_div_fmas_f32 v8, v8, v12, v13
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v6
 ; GFX9-NEXT:    v_div_fixup_f32 v8, v8, v5, 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB9_15
-; GFX9-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB9_17
+; GFX9-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v6, v9, v10
 ; GFX9-NEXT:    v_add_u32_e32 v6, 11, v6
-; GFX9-NEXT:  .LBB9_13: ; %frem.loop_body
+; GFX9-NEXT:  .LBB9_15: ; %frem.loop_body
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v9, v7
 ; GFX9-NEXT:    v_mul_f32_e32 v7, v9, v8
@@ -5652,10 +5871,10 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v7, v7, v10, vcc
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v6
 ; GFX9-NEXT:    v_ldexp_f32 v7, v7, 11
-; GFX9-NEXT:    s_cbranch_vccnz .LBB9_13
-; GFX9-NEXT:  ; %bb.14: ; %Flow
+; GFX9-NEXT:    s_cbranch_vccnz .LBB9_15
+; GFX9-NEXT:  ; %bb.16: ; %Flow
 ; GFX9-NEXT:    v_mov_b32_e32 v7, v9
-; GFX9-NEXT:  .LBB9_15: ; %frem.loop_exit
+; GFX9-NEXT:  .LBB9_17: ; %frem.loop_exit
 ; GFX9-NEXT:    v_add_u32_e32 v6, -10, v6
 ; GFX9-NEXT:    v_ldexp_f32 v6, v7, v6
 ; GFX9-NEXT:    v_mul_f32_e32 v7, v6, v8
@@ -5668,7 +5887,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; GFX9-NEXT:    s_movk_i32 s2, 0x7fff
 ; GFX9-NEXT:    v_bfi_b32 v4, s2, v4, v3
-; GFX9-NEXT:  .LBB9_16: ; %Flow54
+; GFX9-NEXT:  .LBB9_18: ; %Flow54
 ; GFX9-NEXT:    s_movk_i32 s4, 0x7c00
 ; GFX9-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v0
 ; GFX9-NEXT:    v_cmp_nge_f16_e64 s[2:3], |v1|, s4
@@ -5704,12 +5923,18 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:  ; %bb.1: ; %frem.else20
 ; GFX10-NEXT:    v_and_b32_e32 v2, 0x8000, v1
 ; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v4, v3
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v2, v1, v2, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB9_3
-; GFX10-NEXT:    s_branch .LBB9_8
+; GFX10-NEXT:    s_branch .LBB9_3
 ; GFX10-NEXT:  .LBB9_2:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr2
-; GFX10-NEXT:  .LBB9_3: ; %frem.compute19
+; GFX10-NEXT:  .LBB9_3: ; %Flow57
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB9_9
+; GFX10-NEXT:  ; %bb.4: ; %frem.compute19
 ; GFX10-NEXT:    v_frexp_mant_f32_e32 v2, v4
 ; GFX10-NEXT:    v_frexp_mant_f32_e32 v6, v3
 ; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v5, v4
@@ -5735,11 +5960,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_div_fmas_f32 v5, v5, v8, v9
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6
 ; GFX10-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB9_7
-; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB9_8
+; GFX10-NEXT:  ; %bb.5: ; %frem.loop_body27.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 11
-; GFX10-NEXT:  .LBB9_5: ; %frem.loop_body27
+; GFX10-NEXT:  .LBB9_6: ; %frem.loop_body27
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v7, v4
 ; GFX10-NEXT:    s_add_i32 s2, s2, -11
@@ -5751,11 +5976,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_add_f32_e32 v6, v4, v3
 ; GFX10-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v4, v4, 11
-; GFX10-NEXT:    s_cbranch_scc1 .LBB9_5
-; GFX10-NEXT:  ; %bb.6: ; %Flow55
+; GFX10-NEXT:    s_cbranch_scc1 .LBB9_6
+; GFX10-NEXT:  ; %bb.7: ; %Flow55
 ; GFX10-NEXT:    v_mov_b32_e32 v6, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v4, v7
-; GFX10-NEXT:  .LBB9_7: ; %frem.loop_exit28
+; GFX10-NEXT:  .LBB9_8: ; %frem.loop_exit28
 ; GFX10-NEXT:    v_add_nc_u32_e32 v6, -10, v6
 ; GFX10-NEXT:    v_ldexp_f32 v4, v4, v6
 ; GFX10-NEXT:    v_mul_f32_e32 v5, v4, v5
@@ -5767,21 +5992,27 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_ldexp_f32 v2, v3, v2
 ; GFX10-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; GFX10-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v1
-; GFX10-NEXT:  .LBB9_8:
+; GFX10-NEXT:  .LBB9_9:
 ; GFX10-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
 ; GFX10-NEXT:    v_cvt_f32_f16_sdwa v5, |v0| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1
 ; GFX10-NEXT:    v_cvt_f32_f16_e64 v6, |v3|
 ; GFX10-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v6, v5
-; GFX10-NEXT:    s_cbranch_vccz .LBB9_10
-; GFX10-NEXT:  ; %bb.9: ; %frem.else
+; GFX10-NEXT:    s_cbranch_vccz .LBB9_11
+; GFX10-NEXT:  ; %bb.10: ; %frem.else
 ; GFX10-NEXT:    v_and_b32_e32 v4, 0x8000, v3
 ; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v6, v5
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v4, v3, v4, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB9_11
-; GFX10-NEXT:    s_branch .LBB9_16
-; GFX10-NEXT:  .LBB9_10:
+; GFX10-NEXT:    s_branch .LBB9_12
+; GFX10-NEXT:  .LBB9_11:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr4
-; GFX10-NEXT:  .LBB9_11: ; %frem.compute
+; GFX10-NEXT:  .LBB9_12: ; %Flow53
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB9_18
+; GFX10-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX10-NEXT:    v_frexp_mant_f32_e32 v4, v6
 ; GFX10-NEXT:    v_frexp_mant_f32_e32 v8, v5
 ; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v7, v6
@@ -5807,11 +6038,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_div_fmas_f32 v7, v7, v10, v11
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v8
 ; GFX10-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB9_15
-; GFX10-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB9_17
+; GFX10-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 11
-; GFX10-NEXT:  .LBB9_13: ; %frem.loop_body
+; GFX10-NEXT:  .LBB9_15: ; %frem.loop_body
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v9, v6
 ; GFX10-NEXT:    s_add_i32 s2, s2, -11
@@ -5823,11 +6054,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_add_f32_e32 v8, v6, v5
 ; GFX10-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v6, v6, 11
-; GFX10-NEXT:    s_cbranch_scc1 .LBB9_13
-; GFX10-NEXT:  ; %bb.14: ; %Flow
+; GFX10-NEXT:    s_cbranch_scc1 .LBB9_15
+; GFX10-NEXT:  ; %bb.16: ; %Flow
 ; GFX10-NEXT:    v_mov_b32_e32 v8, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v6, v9
-; GFX10-NEXT:  .LBB9_15: ; %frem.loop_exit
+; GFX10-NEXT:  .LBB9_17: ; %frem.loop_exit
 ; GFX10-NEXT:    v_add_nc_u32_e32 v8, -10, v8
 ; GFX10-NEXT:    v_ldexp_f32 v6, v6, v8
 ; GFX10-NEXT:    v_mul_f32_e32 v7, v6, v7
@@ -5839,7 +6070,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_ldexp_f32 v4, v5, v4
 ; GFX10-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; GFX10-NEXT:    v_bfi_b32 v4, 0x7fff, v4, v3
-; GFX10-NEXT:  .LBB9_16: ; %Flow54
+; GFX10-NEXT:  .LBB9_18: ; %Flow54
 ; GFX10-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v0
 ; GFX10-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v1|
 ; GFX10-NEXT:    v_cmp_nle_f16_e64 s3, 0x7c00, |v3|
@@ -5874,13 +6105,20 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %frem.else20
 ; GFX11-TRUE16-NEXT:    v_and_b16 v2.l, 0x8000, v0.l
 ; GFX11-TRUE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v4, v3
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_cndmask_b16 v2.l, v0.l, v2.l, vcc_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_execz .LBB9_3
-; GFX11-TRUE16-NEXT:    s_branch .LBB9_8
+; GFX11-TRUE16-NEXT:    s_branch .LBB9_3
 ; GFX11-TRUE16-NEXT:  .LBB9_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr2
-; GFX11-TRUE16-NEXT:  .LBB9_3: ; %frem.compute19
+; GFX11-TRUE16-NEXT:  .LBB9_3: ; %Flow57
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_9
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %frem.compute19
 ; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, v4
 ; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v6, v3
 ; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, v4
@@ -5915,12 +6153,12 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_7
-; GFX11-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader
+; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_8
+; GFX11-TRUE16-NEXT:  ; %bb.5: ; %frem.loop_body27.preheader
 ; GFX11-TRUE16-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 11
-; GFX11-TRUE16-NEXT:  .LBB9_5: ; %frem.loop_body27
+; GFX11-TRUE16-NEXT:  .LBB9_6: ; %frem.loop_body27
 ; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v7, v4
@@ -5936,11 +6174,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX11-TRUE16-NEXT:    v_ldexp_f32 v4, v4, 11
-; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_5
-; GFX11-TRUE16-NEXT:  ; %bb.6: ; %Flow55
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_6
+; GFX11-TRUE16-NEXT:  ; %bb.7: ; %Flow55
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, s2
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v7
-; GFX11-TRUE16-NEXT:  .LBB9_7: ; %frem.loop_exit28
+; GFX11-TRUE16-NEXT:  .LBB9_8: ; %frem.loop_exit28
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6
 ; GFX11-TRUE16-NEXT:    v_ldexp_f32 v4, v4, v6
@@ -5958,7 +6196,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v2.l, v2
 ; GFX11-TRUE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v3
-; GFX11-TRUE16-NEXT:  .LBB9_8:
+; GFX11-TRUE16-NEXT:  .LBB9_9:
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v0
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v1
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -5966,17 +6204,24 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v6, |v4.l|
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v7, v6
-; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB9_10
-; GFX11-TRUE16-NEXT:  ; %bb.9: ; %frem.else
+; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB9_11
+; GFX11-TRUE16-NEXT:  ; %bb.10: ; %frem.else
 ; GFX11-TRUE16-NEXT:    v_and_b16 v0.h, 0x8000, v3.l
 ; GFX11-TRUE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v7, v6
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_cndmask_b16 v5.l, v3.l, v0.h, vcc_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_execz .LBB9_11
-; GFX11-TRUE16-NEXT:    s_branch .LBB9_16
-; GFX11-TRUE16-NEXT:  .LBB9_10:
+; GFX11-TRUE16-NEXT:    s_branch .LBB9_12
+; GFX11-TRUE16-NEXT:  .LBB9_11:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr5
-; GFX11-TRUE16-NEXT:  .LBB9_11: ; %frem.compute
+; GFX11-TRUE16-NEXT:  .LBB9_12: ; %Flow53
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_18
+; GFX11-TRUE16-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v5, v7
 ; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v9, v6
 ; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v8, v7
@@ -6011,12 +6256,12 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v9
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_div_fixup_f32 v8, v8, v6, 1.0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_15
-; GFX11-TRUE16-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_17
+; GFX11-TRUE16-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX11-TRUE16-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 11
-; GFX11-TRUE16-NEXT:  .LBB9_13: ; %frem.loop_body
+; GFX11-TRUE16-NEXT:  .LBB9_15: ; %frem.loop_body
 ; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, v7
@@ -6032,11 +6277,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo
 ; GFX11-TRUE16-NEXT:    v_ldexp_f32 v7, v7, 11
-; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_13
-; GFX11-TRUE16-NEXT:  ; %bb.14: ; %Flow
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_15
+; GFX11-TRUE16-NEXT:  ; %bb.16: ; %Flow
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v9, s2
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v7, v10
-; GFX11-TRUE16-NEXT:  .LBB9_15: ; %frem.loop_exit
+; GFX11-TRUE16-NEXT:  .LBB9_17: ; %frem.loop_exit
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v9, -10, v9
 ; GFX11-TRUE16-NEXT:    v_ldexp_f32 v7, v7, v9
@@ -6054,7 +6299,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v5.l, v5
 ; GFX11-TRUE16-NEXT:    v_bfi_b32 v5, 0x7fff, v5, v6
-; GFX11-TRUE16-NEXT:  .LBB9_16: ; %Flow54
+; GFX11-TRUE16-NEXT:  .LBB9_18: ; %Flow54
 ; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v1.l
 ; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v0.l|
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, 0
@@ -6088,13 +6333,20 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %frem.else20
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0x8000, v0
 ; GFX11-FAKE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v4, v3
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_execz .LBB9_3
-; GFX11-FAKE16-NEXT:    s_branch .LBB9_8
+; GFX11-FAKE16-NEXT:    s_branch .LBB9_3
 ; GFX11-FAKE16-NEXT:  .LBB9_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr2
-; GFX11-FAKE16-NEXT:  .LBB9_3: ; %frem.compute19
+; GFX11-FAKE16-NEXT:  .LBB9_3: ; %Flow57
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_9
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %frem.compute19
 ; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, v4
 ; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v6, v3
 ; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, v4
@@ -6129,12 +6381,12 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_7
-; GFX11-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader
+; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_8
+; GFX11-FAKE16-NEXT:  ; %bb.5: ; %frem.loop_body27.preheader
 ; GFX11-FAKE16-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 11
-; GFX11-FAKE16-NEXT:  .LBB9_5: ; %frem.loop_body27
+; GFX11-FAKE16-NEXT:  .LBB9_6: ; %frem.loop_body27
 ; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v7, v4
@@ -6150,11 +6402,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX11-FAKE16-NEXT:    v_ldexp_f32 v4, v4, 11
-; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_5
-; GFX11-FAKE16-NEXT:  ; %bb.6: ; %Flow55
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_6
+; GFX11-FAKE16-NEXT:  ; %bb.7: ; %Flow55
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, s2
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v7
-; GFX11-FAKE16-NEXT:  .LBB9_7: ; %frem.loop_exit28
+; GFX11-FAKE16-NEXT:  .LBB9_8: ; %frem.loop_exit28
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6
 ; GFX11-FAKE16-NEXT:    v_ldexp_f32 v4, v4, v6
@@ -6171,7 +6423,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; GFX11-FAKE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v0
-; GFX11-FAKE16-NEXT:  .LBB9_8:
+; GFX11-FAKE16-NEXT:  .LBB9_9:
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v0
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v1
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -6179,17 +6431,24 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v6, |v4|
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v7, v6
-; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB9_10
-; GFX11-FAKE16-NEXT:  ; %bb.9: ; %frem.else
+; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB9_11
+; GFX11-FAKE16-NEXT:  ; %bb.10: ; %frem.else
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0x8000, v3
 ; GFX11-FAKE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v7, v6
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v3, v5, vcc_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_execz .LBB9_11
-; GFX11-FAKE16-NEXT:    s_branch .LBB9_16
-; GFX11-FAKE16-NEXT:  .LBB9_10:
+; GFX11-FAKE16-NEXT:    s_branch .LBB9_12
+; GFX11-FAKE16-NEXT:  .LBB9_11:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr5
-; GFX11-FAKE16-NEXT:  .LBB9_11: ; %frem.compute
+; GFX11-FAKE16-NEXT:  .LBB9_12: ; %Flow53
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_18
+; GFX11-FAKE16-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v5, v7
 ; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v9, v6
 ; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v8, v7
@@ -6224,12 +6483,12 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v9
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_div_fixup_f32 v8, v8, v6, 1.0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_15
-; GFX11-FAKE16-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_17
+; GFX11-FAKE16-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX11-FAKE16-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 11
-; GFX11-FAKE16-NEXT:  .LBB9_13: ; %frem.loop_body
+; GFX11-FAKE16-NEXT:  .LBB9_15: ; %frem.loop_body
 ; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, v7
@@ -6245,11 +6504,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo
 ; GFX11-FAKE16-NEXT:    v_ldexp_f32 v7, v7, 11
-; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_13
-; GFX11-FAKE16-NEXT:  ; %bb.14: ; %Flow
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_15
+; GFX11-FAKE16-NEXT:  ; %bb.16: ; %Flow
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v9, s2
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v7, v10
-; GFX11-FAKE16-NEXT:  .LBB9_15: ; %frem.loop_exit
+; GFX11-FAKE16-NEXT:  .LBB9_17: ; %frem.loop_exit
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v9, -10, v9
 ; GFX11-FAKE16-NEXT:    v_ldexp_f32 v7, v7, v9
@@ -6266,7 +6525,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v5, v5
 ; GFX11-FAKE16-NEXT:    v_bfi_b32 v5, 0x7fff, v5, v3
-; GFX11-FAKE16-NEXT:  .LBB9_16: ; %Flow54
+; GFX11-FAKE16-NEXT:  .LBB9_18: ; %Flow54
 ; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v0|
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, 0
@@ -6309,11 +6568,18 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    s_cselect_b32 s7, -1, 0
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v0.l, s4, v0.l, s7
-; GFX1150-TRUE16-NEXT:    s_cbranch_execz .LBB9_3
-; GFX1150-TRUE16-NEXT:    s_branch .LBB9_8
+; GFX1150-TRUE16-NEXT:    s_mov_b32 s7, 0
+; GFX1150-TRUE16-NEXT:    s_branch .LBB9_3
 ; GFX1150-TRUE16-NEXT:  .LBB9_2:
+; GFX1150-TRUE16-NEXT:    s_mov_b32 s7, -1
 ; GFX1150-TRUE16-NEXT:    ; implicit-def: $vgpr0
-; GFX1150-TRUE16-NEXT:  .LBB9_3: ; %frem.compute19
+; GFX1150-TRUE16-NEXT:  .LBB9_3: ; %Flow57
+; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-TRUE16-NEXT:    s_and_b32 s7, s7, exec_lo
+; GFX1150-TRUE16-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX1150-TRUE16-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_9
+; GFX1150-TRUE16-NEXT:  ; %bb.4: ; %frem.compute19
 ; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s5
 ; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v0, s6
 ; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s6
@@ -6347,12 +6613,12 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v7
 ; GFX1150-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v4
 ; GFX1150-TRUE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.0
-; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_7
-; GFX1150-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader
+; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_8
+; GFX1150-TRUE16-NEXT:  ; %bb.5: ; %frem.loop_body27.preheader
 ; GFX1150-TRUE16-NEXT:    s_sub_i32 s5, s6, s5
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    s_add_i32 s5, s5, 11
-; GFX1150-TRUE16-NEXT:  .LBB9_5: ; %frem.loop_body27
+; GFX1150-TRUE16-NEXT:  .LBB9_6: ; %frem.loop_body27
 ; GFX1150-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v5, v2
@@ -6370,11 +6636,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v2, v2, 11
-; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_5
-; GFX1150-TRUE16-NEXT:  ; %bb.6: ; %Flow55
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_6
+; GFX1150-TRUE16-NEXT:  ; %bb.7: ; %Flow55
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v4, s5
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v2, v5
-; GFX1150-TRUE16-NEXT:  .LBB9_7: ; %frem.loop_exit28
+; GFX1150-TRUE16-NEXT:  .LBB9_8: ; %frem.loop_exit28
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v4, -10, v4
 ; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v2, v2, v4
@@ -6394,7 +6660,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v0
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, v1
-; GFX1150-TRUE16-NEXT:  .LBB9_8:
+; GFX1150-TRUE16-NEXT:  .LBB9_9:
 ; GFX1150-TRUE16-NEXT:    s_lshr_b32 s6, s4, 16
 ; GFX1150-TRUE16-NEXT:    s_lshr_b32 s5, s3, 16
 ; GFX1150-TRUE16-NEXT:    s_and_b32 s4, s6, 0x7fff
@@ -6403,18 +6669,25 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s7, s7
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)
 ; GFX1150-TRUE16-NEXT:    s_cmp_ngt_f32 s8, s7
-; GFX1150-TRUE16-NEXT:    s_cbranch_scc0 .LBB9_10
-; GFX1150-TRUE16-NEXT:  ; %bb.9: ; %frem.else
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc0 .LBB9_11
+; GFX1150-TRUE16-NEXT:  ; %bb.10: ; %frem.else
 ; GFX1150-TRUE16-NEXT:    s_cmp_eq_f32 s8, s7
 ; GFX1150-TRUE16-NEXT:    v_and_b16 v0.h, 0x8000, s6
 ; GFX1150-TRUE16-NEXT:    s_cselect_b32 s9, -1, 0
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v1.l, s6, v0.h, s9
-; GFX1150-TRUE16-NEXT:    s_cbranch_execz .LBB9_11
-; GFX1150-TRUE16-NEXT:    s_branch .LBB9_16
-; GFX1150-TRUE16-NEXT:  .LBB9_10:
+; GFX1150-TRUE16-NEXT:    s_mov_b32 s9, 0
+; GFX1150-TRUE16-NEXT:    s_branch .LBB9_12
+; GFX1150-TRUE16-NEXT:  .LBB9_11:
+; GFX1150-TRUE16-NEXT:    s_mov_b32 s9, -1
 ; GFX1150-TRUE16-NEXT:    ; implicit-def: $vgpr1
-; GFX1150-TRUE16-NEXT:  .LBB9_11: ; %frem.compute
+; GFX1150-TRUE16-NEXT:  .LBB9_12: ; %Flow53
+; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-TRUE16-NEXT:    s_and_b32 s9, s9, exec_lo
+; GFX1150-TRUE16-NEXT:    s_cselect_b32 s9, 1, 0
+; GFX1150-TRUE16-NEXT:    s_cmp_lg_u32 s9, 1
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_18
+; GFX1150-TRUE16-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s7
 ; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s8
 ; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s8
@@ -6448,12 +6721,12 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v8
 ; GFX1150-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v5
 ; GFX1150-TRUE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.0
-; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_15
-; GFX1150-TRUE16-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_17
+; GFX1150-TRUE16-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX1150-TRUE16-NEXT:    s_sub_i32 s7, s8, s7
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    s_add_i32 s7, s7, 11
-; GFX1150-TRUE16-NEXT:  .LBB9_13: ; %frem.loop_body
+; GFX1150-TRUE16-NEXT:  .LBB9_15: ; %frem.loop_body
 ; GFX1150-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v6, v3
@@ -6471,11 +6744,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v3, v3, 11
-; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_13
-; GFX1150-TRUE16-NEXT:  ; %bb.14: ; %Flow
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_15
+; GFX1150-TRUE16-NEXT:  ; %bb.16: ; %Flow
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v5, s7
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v3, v6
-; GFX1150-TRUE16-NEXT:  .LBB9_15: ; %frem.loop_exit
+; GFX1150-TRUE16-NEXT:  .LBB9_17: ; %frem.loop_exit
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v5, -10, v5
 ; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v3, v3, v5
@@ -6495,7 +6768,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v1.l, v1
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, v2
-; GFX1150-TRUE16-NEXT:  .LBB9_16: ; %Flow54
+; GFX1150-TRUE16-NEXT:  .LBB9_18: ; %Flow54
 ; GFX1150-TRUE16-NEXT:    s_cmp_lg_f16 s3, 0
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX1150-TRUE16-NEXT:    s_cselect_b32 s3, -1, 0
@@ -6539,14 +6812,21 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    s_and_b32 s7, 0x8000, s4
 ; GFX1150-FAKE16-NEXT:    s_cmp_eq_f32 s6, s5
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v0, s7
+; GFX1150-FAKE16-NEXT:    s_mov_b32 s7, 0
 ; GFX1150-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v0, s4, v0, vcc_lo
-; GFX1150-FAKE16-NEXT:    s_cbranch_execz .LBB9_3
-; GFX1150-FAKE16-NEXT:    s_branch .LBB9_8
+; GFX1150-FAKE16-NEXT:    s_branch .LBB9_3
 ; GFX1150-FAKE16-NEXT:  .LBB9_2:
+; GFX1150-FAKE16-NEXT:    s_mov_b32 s7, -1
 ; GFX1150-FAKE16-NEXT:    ; implicit-def: $vgpr0
-; GFX1150-FAKE16-NEXT:  .LBB9_3: ; %frem.compute19
+; GFX1150-FAKE16-NEXT:  .LBB9_3: ; %Flow57
+; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-FAKE16-NEXT:    s_and_b32 s7, s7, exec_lo
+; GFX1150-FAKE16-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX1150-FAKE16-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_9
+; GFX1150-FAKE16-NEXT:  ; %bb.4: ; %frem.compute19
 ; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s5
 ; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v0, s6
 ; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s6
@@ -6580,12 +6860,12 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v7
 ; GFX1150-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v4
 ; GFX1150-FAKE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.0
-; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_7
-; GFX1150-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader
+; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_8
+; GFX1150-FAKE16-NEXT:  ; %bb.5: ; %frem.loop_body27.preheader
 ; GFX1150-FAKE16-NEXT:    s_sub_i32 s5, s6, s5
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-FAKE16-NEXT:    s_add_i32 s5, s5, 11
-; GFX1150-FAKE16-NEXT:  .LBB9_5: ; %frem.loop_body27
+; GFX1150-FAKE16-NEXT:  .LBB9_6: ; %frem.loop_body27
 ; GFX1150-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v5, v2
@@ -6603,11 +6883,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v2, v2, 11
-; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_5
-; GFX1150-FAKE16-NEXT:  ; %bb.6: ; %Flow55
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_6
+; GFX1150-FAKE16-NEXT:  ; %bb.7: ; %Flow55
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v4, s5
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v2, v5
-; GFX1150-FAKE16-NEXT:  .LBB9_7: ; %frem.loop_exit28
+; GFX1150-FAKE16-NEXT:  .LBB9_8: ; %frem.loop_exit28
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v4, -10, v4
 ; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v2, v2, v4
@@ -6626,7 +6906,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v0, v0
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, s4
-; GFX1150-FAKE16-NEXT:  .LBB9_8:
+; GFX1150-FAKE16-NEXT:  .LBB9_9:
 ; GFX1150-FAKE16-NEXT:    s_lshr_b32 s6, s4, 16
 ; GFX1150-FAKE16-NEXT:    s_lshr_b32 s5, s3, 16
 ; GFX1150-FAKE16-NEXT:    s_and_b32 s4, s6, 0x7fff
@@ -6635,19 +6915,26 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s7, s7
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)
 ; GFX1150-FAKE16-NEXT:    s_cmp_ngt_f32 s8, s7
-; GFX1150-FAKE16-NEXT:    s_cbranch_scc0 .LBB9_10
-; GFX1150-FAKE16-NEXT:  ; %bb.9: ; %frem.else
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc0 .LBB9_11
+; GFX1150-FAKE16-NEXT:  ; %bb.10: ; %frem.else
 ; GFX1150-FAKE16-NEXT:    s_and_b32 s9, 0x8000, s6
 ; GFX1150-FAKE16-NEXT:    s_cmp_eq_f32 s8, s7
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v1, s9
+; GFX1150-FAKE16-NEXT:    s_mov_b32 s9, 0
 ; GFX1150-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v1, s6, v1, vcc_lo
-; GFX1150-FAKE16-NEXT:    s_cbranch_execz .LBB9_11
-; GFX1150-FAKE16-NEXT:    s_branch .LBB9_16
-; GFX1150-FAKE16-NEXT:  .LBB9_10:
+; GFX1150-FAKE16-NEXT:    s_branch .LBB9_12
+; GFX1150-FAKE16-NEXT:  .LBB9_11:
+; GFX1150-FAKE16-NEXT:    s_mov_b32 s9, -1
 ; GFX1150-FAKE16-NEXT:    ; implicit-def: $vgpr1
-; GFX1150-FAKE16-NEXT:  .LBB9_11: ; %frem.compute
+; GFX1150-FAKE16-NEXT:  .LBB9_12: ; %Flow53
+; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-FAKE16-NEXT:    s_and_b32 s9, s9, exec_lo
+; GFX1150-FAKE16-NEXT:    s_cselect_b32 s9, 1, 0
+; GFX1150-FAKE16-NEXT:    s_cmp_lg_u32 s9, 1
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_18
+; GFX1150-FAKE16-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s7
 ; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s8
 ; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s8
@@ -6681,12 +6968,12 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v8
 ; GFX1150-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v5
 ; GFX1150-FAKE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.0
-; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_15
-; GFX1150-FAKE16-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_17
+; GFX1150-FAKE16-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX1150-FAKE16-NEXT:    s_sub_i32 s7, s8, s7
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-FAKE16-NEXT:    s_add_i32 s7, s7, 11
-; GFX1150-FAKE16-NEXT:  .LBB9_13: ; %frem.loop_body
+; GFX1150-FAKE16-NEXT:  .LBB9_15: ; %frem.loop_body
 ; GFX1150-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v6, v3
@@ -6704,11 +6991,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v3, v3, 11
-; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_13
-; GFX1150-FAKE16-NEXT:  ; %bb.14: ; %Flow
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_15
+; GFX1150-FAKE16-NEXT:  ; %bb.16: ; %Flow
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v5, s7
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v3, v6
-; GFX1150-FAKE16-NEXT:  .LBB9_15: ; %frem.loop_exit
+; GFX1150-FAKE16-NEXT:  .LBB9_17: ; %frem.loop_exit
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v5, -10, v5
 ; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v3, v3, v5
@@ -6727,7 +7014,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v1, v1
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, s6
-; GFX1150-FAKE16-NEXT:  .LBB9_16: ; %Flow54
+; GFX1150-FAKE16-NEXT:  .LBB9_18: ; %Flow54
 ; GFX1150-FAKE16-NEXT:    s_cmp_lg_f16 s3, 0
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX1150-FAKE16-NEXT:    s_cselect_b32 s3, -1, 0
@@ -6775,11 +7062,19 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    s_cselect_b32 s7, -1, 0
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
 ; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v0.l, s4, v0.l, s7
-; GFX1200-TRUE16-NEXT:    s_cbranch_execz .LBB9_3
-; GFX1200-TRUE16-NEXT:    s_branch .LBB9_8
+; GFX1200-TRUE16-NEXT:    s_mov_b32 s7, 0
+; GFX1200-TRUE16-NEXT:    s_branch .LBB9_3
 ; GFX1200-TRUE16-NEXT:  .LBB9_2:
+; GFX1200-TRUE16-NEXT:    s_mov_b32 s7, -1
 ; GFX1200-TRUE16-NEXT:    ; implicit-def: $vgpr0
-; GFX1200-TRUE16-NEXT:  .LBB9_3: ; %frem.compute19
+; GFX1200-TRUE16-NEXT:  .LBB9_3: ; %Flow57
+; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-TRUE16-NEXT:    s_and_b32 s7, s7, exec_lo
+; GFX1200-TRUE16-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-TRUE16-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_9
+; GFX1200-TRUE16-NEXT:  ; %bb.4: ; %frem.compute19
 ; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s5
 ; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v0, s6
 ; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s6
@@ -6813,12 +7108,12 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v7
 ; GFX1200-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v4
 ; GFX1200-TRUE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.0
-; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_7
-; GFX1200-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader
+; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_8
+; GFX1200-TRUE16-NEXT:  ; %bb.5: ; %frem.loop_body27.preheader
 ; GFX1200-TRUE16-NEXT:    s_sub_co_i32 s5, s6, s5
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-TRUE16-NEXT:    s_add_co_i32 s5, s5, 11
-; GFX1200-TRUE16-NEXT:  .LBB9_5: ; %frem.loop_body27
+; GFX1200-TRUE16-NEXT:  .LBB9_6: ; %frem.loop_body27
 ; GFX1200-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v5, v2
@@ -6838,11 +7133,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo
 ; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v2, v2, 11
-; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_5
-; GFX1200-TRUE16-NEXT:  ; %bb.6: ; %Flow55
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_6
+; GFX1200-TRUE16-NEXT:  ; %bb.7: ; %Flow55
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v4, s5
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v2, v5
-; GFX1200-TRUE16-NEXT:  .LBB9_7: ; %frem.loop_exit28
+; GFX1200-TRUE16-NEXT:  .LBB9_8: ; %frem.loop_exit28
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v4, -10, v4
 ; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v2, v2, v4
@@ -6863,7 +7158,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v0
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, v1
-; GFX1200-TRUE16-NEXT:  .LBB9_8:
+; GFX1200-TRUE16-NEXT:  .LBB9_9:
 ; GFX1200-TRUE16-NEXT:    s_lshr_b32 s6, s4, 16
 ; GFX1200-TRUE16-NEXT:    s_lshr_b32 s5, s3, 16
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
@@ -6875,18 +7170,26 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)
 ; GFX1200-TRUE16-NEXT:    s_cmp_ngt_f32 s8, s7
-; GFX1200-TRUE16-NEXT:    s_cbranch_scc0 .LBB9_10
-; GFX1200-TRUE16-NEXT:  ; %bb.9: ; %frem.else
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc0 .LBB9_11
+; GFX1200-TRUE16-NEXT:  ; %bb.10: ; %frem.else
 ; GFX1200-TRUE16-NEXT:    s_cmp_eq_f32 s8, s7
 ; GFX1200-TRUE16-NEXT:    v_and_b16 v0.h, 0x8000, s6
 ; GFX1200-TRUE16-NEXT:    s_cselect_b32 s9, -1, 0
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
 ; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v1.l, s6, v0.h, s9
-; GFX1200-TRUE16-NEXT:    s_cbranch_execz .LBB9_11
-; GFX1200-TRUE16-NEXT:    s_branch .LBB9_16
-; GFX1200-TRUE16-NEXT:  .LBB9_10:
+; GFX1200-TRUE16-NEXT:    s_mov_b32 s9, 0
+; GFX1200-TRUE16-NEXT:    s_branch .LBB9_12
+; GFX1200-TRUE16-NEXT:  .LBB9_11:
+; GFX1200-TRUE16-NEXT:    s_mov_b32 s9, -1
 ; GFX1200-TRUE16-NEXT:    ; implicit-def: $vgpr1
-; GFX1200-TRUE16-NEXT:  .LBB9_11: ; %frem.compute
+; GFX1200-TRUE16-NEXT:  .LBB9_12: ; %Flow53
+; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-TRUE16-NEXT:    s_and_b32 s9, s9, exec_lo
+; GFX1200-TRUE16-NEXT:    s_cselect_b32 s9, 1, 0
+; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-TRUE16-NEXT:    s_cmp_lg_u32 s9, 1
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_18
+; GFX1200-TRUE16-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s7
 ; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s8
 ; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s8
@@ -6921,12 +7224,12 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v8
 ; GFX1200-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v5
 ; GFX1200-TRUE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.0
-; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_15
-; GFX1200-TRUE16-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_17
+; GFX1200-TRUE16-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX1200-TRUE16-NEXT:    s_sub_co_i32 s7, s8, s7
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-TRUE16-NEXT:    s_add_co_i32 s7, s7, 11
-; GFX1200-TRUE16-NEXT:  .LBB9_13: ; %frem.loop_body
+; GFX1200-TRUE16-NEXT:  .LBB9_15: ; %frem.loop_body
 ; GFX1200-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v6, v3
@@ -6946,11 +7249,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo
 ; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v3, v3, 11
-; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_13
-; GFX1200-TRUE16-NEXT:  ; %bb.14: ; %Flow
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_15
+; GFX1200-TRUE16-NEXT:  ; %bb.16: ; %Flow
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v5, s7
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v3, v6
-; GFX1200-TRUE16-NEXT:  .LBB9_15: ; %frem.loop_exit
+; GFX1200-TRUE16-NEXT:  .LBB9_17: ; %frem.loop_exit
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v5, -10, v5
 ; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v3, v3, v5
@@ -6971,7 +7274,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v1.l, v1
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, v2
-; GFX1200-TRUE16-NEXT:  .LBB9_16: ; %Flow54
+; GFX1200-TRUE16-NEXT:  .LBB9_18: ; %Flow54
 ; GFX1200-TRUE16-NEXT:    s_cmp_lg_f16 s3, 0
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX1200-TRUE16-NEXT:    s_cselect_b32 s3, -1, 0
@@ -7016,14 +7319,22 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    s_and_b32 s7, 0x8000, s4
 ; GFX1200-FAKE16-NEXT:    s_cmp_eq_f32 s6, s5
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v0, s7
+; GFX1200-FAKE16-NEXT:    s_mov_b32 s7, 0
 ; GFX1200-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v0, s4, v0, vcc_lo
-; GFX1200-FAKE16-NEXT:    s_cbranch_execz .LBB9_3
-; GFX1200-FAKE16-NEXT:    s_branch .LBB9_8
+; GFX1200-FAKE16-NEXT:    s_branch .LBB9_3
 ; GFX1200-FAKE16-NEXT:  .LBB9_2:
+; GFX1200-FAKE16-NEXT:    s_mov_b32 s7, -1
 ; GFX1200-FAKE16-NEXT:    ; implicit-def: $vgpr0
-; GFX1200-FAKE16-NEXT:  .LBB9_3: ; %frem.compute19
+; GFX1200-FAKE16-NEXT:  .LBB9_3: ; %Flow57
+; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-FAKE16-NEXT:    s_and_b32 s7, s7, exec_lo
+; GFX1200-FAKE16-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-FAKE16-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_9
+; GFX1200-FAKE16-NEXT:  ; %bb.4: ; %frem.compute19
 ; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s5
 ; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v0, s6
 ; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s6
@@ -7058,12 +7369,12 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v7
 ; GFX1200-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v4
 ; GFX1200-FAKE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.0
-; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_7
-; GFX1200-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader
+; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_8
+; GFX1200-FAKE16-NEXT:  ; %bb.5: ; %frem.loop_body27.preheader
 ; GFX1200-FAKE16-NEXT:    s_sub_co_i32 s5, s6, s5
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    s_add_co_i32 s5, s5, 11
-; GFX1200-FAKE16-NEXT:  .LBB9_5: ; %frem.loop_body27
+; GFX1200-FAKE16-NEXT:  .LBB9_6: ; %frem.loop_body27
 ; GFX1200-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v5, v2
@@ -7083,11 +7394,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo
 ; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v2, v2, 11
-; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_5
-; GFX1200-FAKE16-NEXT:  ; %bb.6: ; %Flow55
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_6
+; GFX1200-FAKE16-NEXT:  ; %bb.7: ; %Flow55
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v4, s5
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v2, v5
-; GFX1200-FAKE16-NEXT:  .LBB9_7: ; %frem.loop_exit28
+; GFX1200-FAKE16-NEXT:  .LBB9_8: ; %frem.loop_exit28
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v4, -10, v4
 ; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v2, v2, v4
@@ -7107,7 +7418,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v0, v0
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, s4
-; GFX1200-FAKE16-NEXT:  .LBB9_8:
+; GFX1200-FAKE16-NEXT:  .LBB9_9:
 ; GFX1200-FAKE16-NEXT:    s_lshr_b32 s6, s4, 16
 ; GFX1200-FAKE16-NEXT:    s_lshr_b32 s5, s3, 16
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
@@ -7119,20 +7430,28 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)
 ; GFX1200-FAKE16-NEXT:    s_cmp_ngt_f32 s8, s7
-; GFX1200-FAKE16-NEXT:    s_cbranch_scc0 .LBB9_10
-; GFX1200-FAKE16-NEXT:  ; %bb.9: ; %frem.else
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc0 .LBB9_11
+; GFX1200-FAKE16-NEXT:  ; %bb.10: ; %frem.else
 ; GFX1200-FAKE16-NEXT:    s_and_b32 s9, 0x8000, s6
 ; GFX1200-FAKE16-NEXT:    s_cmp_eq_f32 s8, s7
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v1, s9
+; GFX1200-FAKE16-NEXT:    s_mov_b32 s9, 0
 ; GFX1200-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v1, s6, v1, vcc_lo
-; GFX1200-FAKE16-NEXT:    s_cbranch_execz .LBB9_11
-; GFX1200-FAKE16-NEXT:    s_branch .LBB9_16
-; GFX1200-FAKE16-NEXT:  .LBB9_10:
+; GFX1200-FAKE16-NEXT:    s_branch .LBB9_12
+; GFX1200-FAKE16-NEXT:  .LBB9_11:
+; GFX1200-FAKE16-NEXT:    s_mov_b32 s9, -1
 ; GFX1200-FAKE16-NEXT:    ; implicit-def: $vgpr1
-; GFX1200-FAKE16-NEXT:  .LBB9_11: ; %frem.compute
+; GFX1200-FAKE16-NEXT:  .LBB9_12: ; %Flow53
+; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1200-FAKE16-NEXT:    s_and_b32 s9, s9, exec_lo
+; GFX1200-FAKE16-NEXT:    s_cselect_b32 s9, 1, 0
+; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-FAKE16-NEXT:    s_cmp_lg_u32 s9, 1
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_18
+; GFX1200-FAKE16-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s7
 ; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s8
 ; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s8
@@ -7167,12 +7486,12 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v8
 ; GFX1200-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v5
 ; GFX1200-FAKE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.0
-; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_15
-; GFX1200-FAKE16-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_17
+; GFX1200-FAKE16-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX1200-FAKE16-NEXT:    s_sub_co_i32 s7, s8, s7
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    s_add_co_i32 s7, s7, 11
-; GFX1200-FAKE16-NEXT:  .LBB9_13: ; %frem.loop_body
+; GFX1200-FAKE16-NEXT:  .LBB9_15: ; %frem.loop_body
 ; GFX1200-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v6, v3
@@ -7192,11 +7511,11 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo
 ; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v3, v3, 11
-; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_13
-; GFX1200-FAKE16-NEXT:  ; %bb.14: ; %Flow
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_15
+; GFX1200-FAKE16-NEXT:  ; %bb.16: ; %Flow
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v5, s7
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v3, v6
-; GFX1200-FAKE16-NEXT:  .LBB9_15: ; %frem.loop_exit
+; GFX1200-FAKE16-NEXT:  .LBB9_17: ; %frem.loop_exit
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v5, -10, v5
 ; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v3, v3, v5
@@ -7216,7 +7535,7 @@ define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v1, v1
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, s6
-; GFX1200-FAKE16-NEXT:  .LBB9_16: ; %Flow54
+; GFX1200-FAKE16-NEXT:  .LBB9_18: ; %Flow54
 ; GFX1200-FAKE16-NEXT:    s_cmp_lg_f16 s3, 0
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX1200-FAKE16-NEXT:    s_cselect_b32 s3, -1, 0
@@ -7268,19 +7587,23 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_cvt_f32_f16_e64 v2, |v0|
 ; SI-NEXT:    v_cmp_ngt_f32_e32 vcc, v3, v2
-; SI-NEXT:    s_cbranch_vccz .LBB10_3
+; SI-NEXT:    s_cbranch_vccz .LBB10_2
 ; SI-NEXT:  ; %bb.1: ; %frem.else86
 ; SI-NEXT:    s_and_b32 s4, s3, 0xffff8000
 ; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v3, v2
 ; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
 ; SI-NEXT:    s_cselect_b32 s4, s4, s3
-; SI-NEXT:    s_cbranch_execz .LBB10_4
-; SI-NEXT:  ; %bb.2:
-; SI-NEXT:    v_mov_b32_e32 v3, s4
-; SI-NEXT:    s_branch .LBB10_9
-; SI-NEXT:  .LBB10_3:
+; SI-NEXT:    s_mov_b64 s[0:1], 0
+; SI-NEXT:    s_branch .LBB10_3
+; SI-NEXT:  .LBB10_2:
+; SI-NEXT:    s_mov_b64 s[0:1], -1
 ; SI-NEXT:    ; implicit-def: $sgpr4
-; SI-NEXT:  .LBB10_4: ; %frem.compute85
+; SI-NEXT:  .LBB10_3: ; %Flow135
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s0, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB10_9
+; SI-NEXT:  ; %bb.4: ; %frem.compute85
 ; SI-NEXT:    s_mov_b32 s5, 0x7f800000
 ; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v3|, s5
 ; SI-NEXT:    v_frexp_exp_i32_f32_e32 v4, v3
@@ -7348,28 +7671,35 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_and_b32 s0, s3, 0xffff8000
 ; SI-NEXT:    v_and_b32_e32 v2, 0x7fff, v2
 ; SI-NEXT:    v_or_b32_e32 v3, s0, v2
-; SI-NEXT:  .LBB10_9: ; %Flow136
+; SI-NEXT:    s_branch .LBB10_10
+; SI-NEXT:  .LBB10_9:
+; SI-NEXT:    v_mov_b32_e32 v3, s4
+; SI-NEXT:  .LBB10_10: ; %Flow136
 ; SI-NEXT:    s_lshr_b32 s4, s2, 16
 ; SI-NEXT:    s_lshr_b32 s5, s3, 16
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v1
 ; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v0
-; SI-NEXT:  ; %bb.10:
+; SI-NEXT:  ; %bb.11:
 ; SI-NEXT:    v_cvt_f32_f16_e64 v6, |s5|
 ; SI-NEXT:    v_cvt_f32_f16_e64 v5, |v4|
 ; SI-NEXT:    v_cmp_ngt_f32_e32 vcc, v6, v5
 ; SI-NEXT:    s_cbranch_vccz .LBB10_13
-; SI-NEXT:  ; %bb.11: ; %frem.else53
+; SI-NEXT:  ; %bb.12: ; %frem.else53
 ; SI-NEXT:    s_and_b32 s6, s5, 0x8000
 ; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v6, v5
 ; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
 ; SI-NEXT:    s_cselect_b32 s6, s6, s5
-; SI-NEXT:    s_cbranch_execz .LBB10_14
-; SI-NEXT:  ; %bb.12:
-; SI-NEXT:    v_mov_b32_e32 v5, s6
-; SI-NEXT:    s_branch .LBB10_19
+; SI-NEXT:    s_mov_b64 s[0:1], 0
+; SI-NEXT:    s_branch .LBB10_14
 ; SI-NEXT:  .LBB10_13:
+; SI-NEXT:    s_mov_b64 s[0:1], -1
 ; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:  .LBB10_14: ; %frem.compute52
+; SI-NEXT:  .LBB10_14: ; %Flow131
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s0, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB10_20
+; SI-NEXT:  ; %bb.15: ; %frem.compute52
 ; SI-NEXT:    s_mov_b32 s7, 0x7f800000
 ; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v6|, s7
 ; SI-NEXT:    v_frexp_exp_i32_f32_e32 v7, v6
@@ -7404,11 +7734,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_div_fmas_f32 v7, v7, v9, v10
 ; SI-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.0
 ; SI-NEXT:    s_cmp_lt_i32 s1, 12
-; SI-NEXT:    s_cbranch_scc1 .LBB10_18
-; SI-NEXT:  ; %bb.15: ; %frem.loop_body60.preheader
+; SI-NEXT:    s_cbranch_scc1 .LBB10_19
+; SI-NEXT:  ; %bb.16: ; %frem.loop_body60.preheader
 ; SI-NEXT:    s_sub_i32 s1, s6, s7
 ; SI-NEXT:    s_add_i32 s1, s1, 11
-; SI-NEXT:  .LBB10_16: ; %frem.loop_body60
+; SI-NEXT:  .LBB10_17: ; %frem.loop_body60
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; SI-NEXT:    v_mov_b32_e32 v8, v6
 ; SI-NEXT:    v_mul_f32_e32 v6, v8, v7
@@ -7420,10 +7750,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_add_i32 s1, s1, -11
 ; SI-NEXT:    v_ldexp_f32_e64 v6, v6, 11
 ; SI-NEXT:    s_cmp_gt_i32 s1, 11
-; SI-NEXT:    s_cbranch_scc1 .LBB10_16
-; SI-NEXT:  ; %bb.17: ; %Flow129
+; SI-NEXT:    s_cbranch_scc1 .LBB10_17
+; SI-NEXT:  ; %bb.18: ; %Flow129
 ; SI-NEXT:    v_mov_b32_e32 v6, v8
-; SI-NEXT:  .LBB10_18: ; %frem.loop_exit61
+; SI-NEXT:  .LBB10_19: ; %frem.loop_exit61
 ; SI-NEXT:    s_add_i32 s1, s1, -10
 ; SI-NEXT:    v_ldexp_f32_e64 v6, v6, s1
 ; SI-NEXT:    v_mul_f32_e32 v7, v6, v7
@@ -7437,23 +7767,30 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_and_b32 s0, s5, 0x8000
 ; SI-NEXT:    v_and_b32_e32 v5, 0x7fff, v5
 ; SI-NEXT:    v_or_b32_e32 v5, s0, v5
-; SI-NEXT:  .LBB10_19:
+; SI-NEXT:    s_branch .LBB10_21
+; SI-NEXT:  .LBB10_20:
+; SI-NEXT:    v_mov_b32_e32 v5, s6
+; SI-NEXT:  .LBB10_21:
 ; SI-NEXT:    v_cvt_f32_f16_e64 v7, |s2|
 ; SI-NEXT:    v_cvt_f32_f16_e64 v6, |v1|
 ; SI-NEXT:    v_cmp_ngt_f32_e32 vcc, v7, v6
-; SI-NEXT:    s_cbranch_vccz .LBB10_22
-; SI-NEXT:  ; %bb.20: ; %frem.else20
+; SI-NEXT:    s_cbranch_vccz .LBB10_23
+; SI-NEXT:  ; %bb.22: ; %frem.else20
 ; SI-NEXT:    s_and_b32 s6, s2, 0xffff8000
 ; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v7, v6
 ; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
 ; SI-NEXT:    s_cselect_b32 s6, s6, s2
-; SI-NEXT:    s_cbranch_execz .LBB10_23
-; SI-NEXT:  ; %bb.21:
-; SI-NEXT:    v_mov_b32_e32 v6, s6
-; SI-NEXT:    s_branch .LBB10_28
-; SI-NEXT:  .LBB10_22:
+; SI-NEXT:    s_mov_b64 s[0:1], 0
+; SI-NEXT:    s_branch .LBB10_24
+; SI-NEXT:  .LBB10_23:
+; SI-NEXT:    s_mov_b64 s[0:1], -1
 ; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:  .LBB10_23: ; %frem.compute19
+; SI-NEXT:  .LBB10_24: ; %Flow127
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s0, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB10_30
+; SI-NEXT:  ; %bb.25: ; %frem.compute19
 ; SI-NEXT:    s_mov_b32 s7, 0x7f800000
 ; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v7|, s7
 ; SI-NEXT:    v_frexp_exp_i32_f32_e32 v8, v7
@@ -7488,11 +7825,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_div_fmas_f32 v8, v8, v10, v11
 ; SI-NEXT:    v_div_fixup_f32 v8, v8, v6, 1.0
 ; SI-NEXT:    s_cmp_lt_i32 s1, 12
-; SI-NEXT:    s_cbranch_scc1 .LBB10_27
-; SI-NEXT:  ; %bb.24: ; %frem.loop_body27.preheader
+; SI-NEXT:    s_cbranch_scc1 .LBB10_29
+; SI-NEXT:  ; %bb.26: ; %frem.loop_body27.preheader
 ; SI-NEXT:    s_sub_i32 s1, s6, s7
 ; SI-NEXT:    s_add_i32 s1, s1, 11
-; SI-NEXT:  .LBB10_25: ; %frem.loop_body27
+; SI-NEXT:  .LBB10_27: ; %frem.loop_body27
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; SI-NEXT:    v_mov_b32_e32 v9, v7
 ; SI-NEXT:    v_mul_f32_e32 v7, v9, v8
@@ -7504,10 +7841,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_add_i32 s1, s1, -11
 ; SI-NEXT:    v_ldexp_f32_e64 v7, v7, 11
 ; SI-NEXT:    s_cmp_gt_i32 s1, 11
-; SI-NEXT:    s_cbranch_scc1 .LBB10_25
-; SI-NEXT:  ; %bb.26: ; %Flow125
+; SI-NEXT:    s_cbranch_scc1 .LBB10_27
+; SI-NEXT:  ; %bb.28: ; %Flow125
 ; SI-NEXT:    v_mov_b32_e32 v7, v9
-; SI-NEXT:  .LBB10_27: ; %frem.loop_exit28
+; SI-NEXT:  .LBB10_29: ; %frem.loop_exit28
 ; SI-NEXT:    s_add_i32 s1, s1, -10
 ; SI-NEXT:    v_ldexp_f32_e64 v7, v7, s1
 ; SI-NEXT:    v_mul_f32_e32 v8, v7, v8
@@ -7521,23 +7858,30 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_and_b32 s0, s2, 0xffff8000
 ; SI-NEXT:    v_and_b32_e32 v6, 0x7fff, v6
 ; SI-NEXT:    v_or_b32_e32 v6, s0, v6
-; SI-NEXT:  .LBB10_28:
+; SI-NEXT:    s_branch .LBB10_31
+; SI-NEXT:  .LBB10_30:
+; SI-NEXT:    v_mov_b32_e32 v6, s6
+; SI-NEXT:  .LBB10_31:
 ; SI-NEXT:    v_cvt_f32_f16_e64 v8, |s4|
 ; SI-NEXT:    v_cvt_f32_f16_e64 v7, |v2|
 ; SI-NEXT:    v_cmp_ngt_f32_e32 vcc, v8, v7
-; SI-NEXT:    s_cbranch_vccz .LBB10_31
-; SI-NEXT:  ; %bb.29: ; %frem.else
+; SI-NEXT:    s_cbranch_vccz .LBB10_33
+; SI-NEXT:  ; %bb.32: ; %frem.else
 ; SI-NEXT:    s_and_b32 s6, s4, 0x8000
 ; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v8, v7
 ; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
 ; SI-NEXT:    s_cselect_b32 s6, s6, s4
-; SI-NEXT:    s_cbranch_execz .LBB10_32
-; SI-NEXT:  ; %bb.30:
-; SI-NEXT:    v_mov_b32_e32 v7, s6
-; SI-NEXT:    s_branch .LBB10_37
-; SI-NEXT:  .LBB10_31:
+; SI-NEXT:    s_mov_b64 s[0:1], 0
+; SI-NEXT:    s_branch .LBB10_34
+; SI-NEXT:  .LBB10_33:
+; SI-NEXT:    s_mov_b64 s[0:1], -1
 ; SI-NEXT:    ; implicit-def: $sgpr6
-; SI-NEXT:  .LBB10_32: ; %frem.compute
+; SI-NEXT:  .LBB10_34: ; %Flow123
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s0, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB10_40
+; SI-NEXT:  ; %bb.35: ; %frem.compute
 ; SI-NEXT:    s_mov_b32 s7, 0x7f800000
 ; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v8|, s7
 ; SI-NEXT:    v_frexp_exp_i32_f32_e32 v9, v8
@@ -7572,11 +7916,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_div_fmas_f32 v9, v9, v11, v12
 ; SI-NEXT:    v_div_fixup_f32 v9, v9, v7, 1.0
 ; SI-NEXT:    s_cmp_lt_i32 s1, 12
-; SI-NEXT:    s_cbranch_scc1 .LBB10_36
-; SI-NEXT:  ; %bb.33: ; %frem.loop_body.preheader
+; SI-NEXT:    s_cbranch_scc1 .LBB10_39
+; SI-NEXT:  ; %bb.36: ; %frem.loop_body.preheader
 ; SI-NEXT:    s_sub_i32 s1, s6, s7
 ; SI-NEXT:    s_add_i32 s1, s1, 11
-; SI-NEXT:  .LBB10_34: ; %frem.loop_body
+; SI-NEXT:  .LBB10_37: ; %frem.loop_body
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; SI-NEXT:    v_mov_b32_e32 v10, v8
 ; SI-NEXT:    v_mul_f32_e32 v8, v10, v9
@@ -7588,10 +7932,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_add_i32 s1, s1, -11
 ; SI-NEXT:    v_ldexp_f32_e64 v8, v8, 11
 ; SI-NEXT:    s_cmp_gt_i32 s1, 11
-; SI-NEXT:    s_cbranch_scc1 .LBB10_34
-; SI-NEXT:  ; %bb.35: ; %Flow
+; SI-NEXT:    s_cbranch_scc1 .LBB10_37
+; SI-NEXT:  ; %bb.38: ; %Flow
 ; SI-NEXT:    v_mov_b32_e32 v8, v10
-; SI-NEXT:  .LBB10_36: ; %frem.loop_exit
+; SI-NEXT:  .LBB10_39: ; %frem.loop_exit
 ; SI-NEXT:    s_add_i32 s1, s1, -10
 ; SI-NEXT:    v_ldexp_f32_e64 v8, v8, s1
 ; SI-NEXT:    v_mul_f32_e32 v9, v8, v9
@@ -7605,7 +7949,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_and_b32 s0, s4, 0x8000
 ; SI-NEXT:    v_and_b32_e32 v7, 0x7fff, v7
 ; SI-NEXT:    v_or_b32_e32 v7, s0, v7
-; SI-NEXT:  .LBB10_37: ; %Flow124
+; SI-NEXT:    s_branch .LBB10_41
+; SI-NEXT:  .LBB10_40:
+; SI-NEXT:    v_mov_b32_e32 v7, s6
+; SI-NEXT:  .LBB10_41: ; %Flow124
 ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; SI-NEXT:    v_cvt_f32_f16_e32 v4, v4
 ; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
@@ -7663,19 +8010,23 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    s_waitcnt vmcnt(0)
 ; CI-NEXT:    v_cvt_f32_f16_e64 v2, |v0|
 ; CI-NEXT:    v_cmp_ngt_f32_e32 vcc, v3, v2
-; CI-NEXT:    s_cbranch_vccz .LBB10_3
+; CI-NEXT:    s_cbranch_vccz .LBB10_2
 ; CI-NEXT:  ; %bb.1: ; %frem.else86
 ; CI-NEXT:    s_and_b32 s4, s3, 0xffff8000
 ; CI-NEXT:    v_cmp_eq_f32_e32 vcc, v3, v2
 ; CI-NEXT:    s_and_b64 s[0:1], vcc, exec
 ; CI-NEXT:    s_cselect_b32 s4, s4, s3
-; CI-NEXT:    s_cbranch_execz .LBB10_4
-; CI-NEXT:  ; %bb.2:
-; CI-NEXT:    v_mov_b32_e32 v3, s4
-; CI-NEXT:    s_branch .LBB10_9
-; CI-NEXT:  .LBB10_3:
+; CI-NEXT:    s_mov_b64 s[0:1], 0
+; CI-NEXT:    s_branch .LBB10_3
+; CI-NEXT:  .LBB10_2:
+; CI-NEXT:    s_mov_b64 s[0:1], -1
 ; CI-NEXT:    ; implicit-def: $sgpr4
-; CI-NEXT:  .LBB10_4: ; %frem.compute85
+; CI-NEXT:  .LBB10_3: ; %Flow135
+; CI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CI-NEXT:    s_cselect_b32 s0, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s0, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB10_9
+; CI-NEXT:  ; %bb.4: ; %frem.compute85
 ; CI-NEXT:    v_frexp_exp_i32_f32_e32 v7, v3
 ; CI-NEXT:    v_frexp_mant_f32_e32 v3, v3
 ; CI-NEXT:    v_ldexp_f32_e64 v5, v3, 11
@@ -7732,28 +8083,35 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    s_and_b32 s0, s3, 0xffff8000
 ; CI-NEXT:    v_and_b32_e32 v2, 0x7fff, v2
 ; CI-NEXT:    v_or_b32_e32 v3, s0, v2
-; CI-NEXT:  .LBB10_9: ; %Flow136
+; CI-NEXT:    s_branch .LBB10_10
+; CI-NEXT:  .LBB10_9:
+; CI-NEXT:    v_mov_b32_e32 v3, s4
+; CI-NEXT:  .LBB10_10: ; %Flow136
 ; CI-NEXT:    s_lshr_b32 s4, s2, 16
 ; CI-NEXT:    s_lshr_b32 s5, s3, 16
 ; CI-NEXT:    v_lshrrev_b32_e32 v2, 16, v1
 ; CI-NEXT:    v_lshrrev_b32_e32 v4, 16, v0
-; CI-NEXT:  ; %bb.10:
+; CI-NEXT:  ; %bb.11:
 ; CI-NEXT:    v_cvt_f32_f16_e64 v6, |s5|
 ; CI-NEXT:    v_cvt_f32_f16_e64 v5, |v4|
 ; CI-NEXT:    v_cmp_ngt_f32_e32 vcc, v6, v5
 ; CI-NEXT:    s_cbranch_vccz .LBB10_13
-; CI-NEXT:  ; %bb.11: ; %frem.else53
+; CI-NEXT:  ; %bb.12: ; %frem.else53
 ; CI-NEXT:    s_and_b32 s6, s5, 0x8000
 ; CI-NEXT:    v_cmp_eq_f32_e32 vcc, v6, v5
 ; CI-NEXT:    s_and_b64 s[0:1], vcc, exec
 ; CI-NEXT:    s_cselect_b32 s6, s6, s5
-; CI-NEXT:    s_cbranch_execz .LBB10_14
-; CI-NEXT:  ; %bb.12:
-; CI-NEXT:    v_mov_b32_e32 v5, s6
-; CI-NEXT:    s_branch .LBB10_19
+; CI-NEXT:    s_mov_b64 s[0:1], 0
+; CI-NEXT:    s_branch .LBB10_14
 ; CI-NEXT:  .LBB10_13:
+; CI-NEXT:    s_mov_b64 s[0:1], -1
 ; CI-NEXT:    ; implicit-def: $sgpr6
-; CI-NEXT:  .LBB10_14: ; %frem.compute52
+; CI-NEXT:  .LBB10_14: ; %Flow131
+; CI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CI-NEXT:    s_cselect_b32 s0, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s0, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB10_20
+; CI-NEXT:  ; %bb.15: ; %frem.compute52
 ; CI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v6
 ; CI-NEXT:    v_frexp_mant_f32_e32 v6, v6
 ; CI-NEXT:    v_ldexp_f32_e64 v8, v6, 11
@@ -7777,11 +8135,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_div_fmas_f32 v9, v9, v13, v14
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v7
 ; CI-NEXT:    v_div_fixup_f32 v9, v9, v6, 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB10_18
-; CI-NEXT:  ; %bb.15: ; %frem.loop_body60.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB10_19
+; CI-NEXT:  ; %bb.16: ; %frem.loop_body60.preheader
 ; CI-NEXT:    v_sub_i32_e32 v7, vcc, v10, v11
 ; CI-NEXT:    v_add_i32_e32 v7, vcc, 11, v7
-; CI-NEXT:  .LBB10_16: ; %frem.loop_body60
+; CI-NEXT:  .LBB10_17: ; %frem.loop_body60
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v10, v8
 ; CI-NEXT:    v_mul_f32_e32 v8, v10, v9
@@ -7793,10 +8151,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_add_i32_e32 v7, vcc, -11, v7
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v7
 ; CI-NEXT:    v_ldexp_f32_e64 v8, v8, 11
-; CI-NEXT:    s_cbranch_vccnz .LBB10_16
-; CI-NEXT:  ; %bb.17: ; %Flow129
+; CI-NEXT:    s_cbranch_vccnz .LBB10_17
+; CI-NEXT:  ; %bb.18: ; %Flow129
 ; CI-NEXT:    v_mov_b32_e32 v8, v10
-; CI-NEXT:  .LBB10_18: ; %frem.loop_exit61
+; CI-NEXT:  .LBB10_19: ; %frem.loop_exit61
 ; CI-NEXT:    v_add_i32_e32 v7, vcc, -10, v7
 ; CI-NEXT:    v_ldexp_f32_e32 v7, v8, v7
 ; CI-NEXT:    v_mul_f32_e32 v8, v7, v9
@@ -7810,23 +8168,30 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    s_and_b32 s0, s5, 0x8000
 ; CI-NEXT:    v_and_b32_e32 v5, 0x7fff, v5
 ; CI-NEXT:    v_or_b32_e32 v5, s0, v5
-; CI-NEXT:  .LBB10_19:
+; CI-NEXT:    s_branch .LBB10_21
+; CI-NEXT:  .LBB10_20:
+; CI-NEXT:    v_mov_b32_e32 v5, s6
+; CI-NEXT:  .LBB10_21:
 ; CI-NEXT:    v_cvt_f32_f16_e64 v7, |s2|
 ; CI-NEXT:    v_cvt_f32_f16_e64 v6, |v1|
 ; CI-NEXT:    v_cmp_ngt_f32_e32 vcc, v7, v6
-; CI-NEXT:    s_cbranch_vccz .LBB10_22
-; CI-NEXT:  ; %bb.20: ; %frem.else20
+; CI-NEXT:    s_cbranch_vccz .LBB10_23
+; CI-NEXT:  ; %bb.22: ; %frem.else20
 ; CI-NEXT:    s_and_b32 s6, s2, 0xffff8000
 ; CI-NEXT:    v_cmp_eq_f32_e32 vcc, v7, v6
 ; CI-NEXT:    s_and_b64 s[0:1], vcc, exec
 ; CI-NEXT:    s_cselect_b32 s6, s6, s2
-; CI-NEXT:    s_cbranch_execz .LBB10_23
-; CI-NEXT:  ; %bb.21:
-; CI-NEXT:    v_mov_b32_e32 v6, s6
-; CI-NEXT:    s_branch .LBB10_28
-; CI-NEXT:  .LBB10_22:
+; CI-NEXT:    s_mov_b64 s[0:1], 0
+; CI-NEXT:    s_branch .LBB10_24
+; CI-NEXT:  .LBB10_23:
+; CI-NEXT:    s_mov_b64 s[0:1], -1
 ; CI-NEXT:    ; implicit-def: $sgpr6
-; CI-NEXT:  .LBB10_23: ; %frem.compute19
+; CI-NEXT:  .LBB10_24: ; %Flow127
+; CI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CI-NEXT:    s_cselect_b32 s0, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s0, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB10_30
+; CI-NEXT:  ; %bb.25: ; %frem.compute19
 ; CI-NEXT:    v_frexp_exp_i32_f32_e32 v11, v7
 ; CI-NEXT:    v_frexp_mant_f32_e32 v7, v7
 ; CI-NEXT:    v_ldexp_f32_e64 v9, v7, 11
@@ -7850,11 +8215,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_div_fmas_f32 v10, v10, v14, v15
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v8
 ; CI-NEXT:    v_div_fixup_f32 v10, v10, v7, 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB10_27
-; CI-NEXT:  ; %bb.24: ; %frem.loop_body27.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB10_29
+; CI-NEXT:  ; %bb.26: ; %frem.loop_body27.preheader
 ; CI-NEXT:    v_sub_i32_e32 v8, vcc, v11, v12
 ; CI-NEXT:    v_add_i32_e32 v8, vcc, 11, v8
-; CI-NEXT:  .LBB10_25: ; %frem.loop_body27
+; CI-NEXT:  .LBB10_27: ; %frem.loop_body27
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v11, v9
 ; CI-NEXT:    v_mul_f32_e32 v9, v11, v10
@@ -7866,10 +8231,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_add_i32_e32 v8, vcc, -11, v8
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v8
 ; CI-NEXT:    v_ldexp_f32_e64 v9, v9, 11
-; CI-NEXT:    s_cbranch_vccnz .LBB10_25
-; CI-NEXT:  ; %bb.26: ; %Flow125
+; CI-NEXT:    s_cbranch_vccnz .LBB10_27
+; CI-NEXT:  ; %bb.28: ; %Flow125
 ; CI-NEXT:    v_mov_b32_e32 v9, v11
-; CI-NEXT:  .LBB10_27: ; %frem.loop_exit28
+; CI-NEXT:  .LBB10_29: ; %frem.loop_exit28
 ; CI-NEXT:    v_add_i32_e32 v8, vcc, -10, v8
 ; CI-NEXT:    v_ldexp_f32_e32 v8, v9, v8
 ; CI-NEXT:    v_mul_f32_e32 v9, v8, v10
@@ -7883,23 +8248,30 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    s_and_b32 s0, s2, 0xffff8000
 ; CI-NEXT:    v_and_b32_e32 v6, 0x7fff, v6
 ; CI-NEXT:    v_or_b32_e32 v6, s0, v6
-; CI-NEXT:  .LBB10_28:
+; CI-NEXT:    s_branch .LBB10_31
+; CI-NEXT:  .LBB10_30:
+; CI-NEXT:    v_mov_b32_e32 v6, s6
+; CI-NEXT:  .LBB10_31:
 ; CI-NEXT:    v_cvt_f32_f16_e64 v8, |s4|
 ; CI-NEXT:    v_cvt_f32_f16_e64 v7, |v2|
 ; CI-NEXT:    v_cmp_ngt_f32_e32 vcc, v8, v7
-; CI-NEXT:    s_cbranch_vccz .LBB10_31
-; CI-NEXT:  ; %bb.29: ; %frem.else
+; CI-NEXT:    s_cbranch_vccz .LBB10_33
+; CI-NEXT:  ; %bb.32: ; %frem.else
 ; CI-NEXT:    s_and_b32 s6, s4, 0x8000
 ; CI-NEXT:    v_cmp_eq_f32_e32 vcc, v8, v7
 ; CI-NEXT:    s_and_b64 s[0:1], vcc, exec
 ; CI-NEXT:    s_cselect_b32 s6, s6, s4
-; CI-NEXT:    s_cbranch_execz .LBB10_32
-; CI-NEXT:  ; %bb.30:
-; CI-NEXT:    v_mov_b32_e32 v7, s6
-; CI-NEXT:    s_branch .LBB10_37
-; CI-NEXT:  .LBB10_31:
+; CI-NEXT:    s_mov_b64 s[0:1], 0
+; CI-NEXT:    s_branch .LBB10_34
+; CI-NEXT:  .LBB10_33:
+; CI-NEXT:    s_mov_b64 s[0:1], -1
 ; CI-NEXT:    ; implicit-def: $sgpr6
-; CI-NEXT:  .LBB10_32: ; %frem.compute
+; CI-NEXT:  .LBB10_34: ; %Flow123
+; CI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CI-NEXT:    s_cselect_b32 s0, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s0, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB10_40
+; CI-NEXT:  ; %bb.35: ; %frem.compute
 ; CI-NEXT:    v_frexp_exp_i32_f32_e32 v12, v8
 ; CI-NEXT:    v_frexp_mant_f32_e32 v8, v8
 ; CI-NEXT:    v_ldexp_f32_e64 v10, v8, 11
@@ -7923,11 +8295,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_div_fmas_f32 v11, v11, v15, v16
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v9
 ; CI-NEXT:    v_div_fixup_f32 v11, v11, v8, 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB10_36
-; CI-NEXT:  ; %bb.33: ; %frem.loop_body.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB10_39
+; CI-NEXT:  ; %bb.36: ; %frem.loop_body.preheader
 ; CI-NEXT:    v_sub_i32_e32 v9, vcc, v12, v13
 ; CI-NEXT:    v_add_i32_e32 v9, vcc, 11, v9
-; CI-NEXT:  .LBB10_34: ; %frem.loop_body
+; CI-NEXT:  .LBB10_37: ; %frem.loop_body
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v12, v10
 ; CI-NEXT:    v_mul_f32_e32 v10, v12, v11
@@ -7939,10 +8311,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_add_i32_e32 v9, vcc, -11, v9
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v9
 ; CI-NEXT:    v_ldexp_f32_e64 v10, v10, 11
-; CI-NEXT:    s_cbranch_vccnz .LBB10_34
-; CI-NEXT:  ; %bb.35: ; %Flow
+; CI-NEXT:    s_cbranch_vccnz .LBB10_37
+; CI-NEXT:  ; %bb.38: ; %Flow
 ; CI-NEXT:    v_mov_b32_e32 v10, v12
-; CI-NEXT:  .LBB10_36: ; %frem.loop_exit
+; CI-NEXT:  .LBB10_39: ; %frem.loop_exit
 ; CI-NEXT:    v_add_i32_e32 v9, vcc, -10, v9
 ; CI-NEXT:    v_ldexp_f32_e32 v9, v10, v9
 ; CI-NEXT:    v_mul_f32_e32 v10, v9, v11
@@ -7956,7 +8328,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    s_and_b32 s0, s4, 0x8000
 ; CI-NEXT:    v_and_b32_e32 v7, 0x7fff, v7
 ; CI-NEXT:    v_or_b32_e32 v7, s0, v7
-; CI-NEXT:  .LBB10_37: ; %Flow124
+; CI-NEXT:    s_branch .LBB10_41
+; CI-NEXT:  .LBB10_40:
+; CI-NEXT:    v_mov_b32_e32 v7, s6
+; CI-NEXT:  .LBB10_41: ; %Flow124
 ; CI-NEXT:    v_cvt_f32_f16_e32 v0, v0
 ; CI-NEXT:    v_cvt_f32_f16_e32 v4, v4
 ; CI-NEXT:    v_cvt_f32_f16_e32 v1, v1
@@ -8017,11 +8392,17 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_and_b32_e32 v4, 0x8000, v0
 ; VI-NEXT:    v_cmp_eq_f32_e32 vcc, v6, v5
 ; VI-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc
-; VI-NEXT:    s_cbranch_execz .LBB10_3
-; VI-NEXT:    s_branch .LBB10_8
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB10_3
 ; VI-NEXT:  .LBB10_2:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr4
-; VI-NEXT:  .LBB10_3: ; %frem.compute85
+; VI-NEXT:  .LBB10_3: ; %Flow135
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB10_9
+; VI-NEXT:  ; %bb.4: ; %frem.compute85
 ; VI-NEXT:    v_frexp_exp_i32_f32_e32 v9, v6
 ; VI-NEXT:    v_frexp_mant_f32_e32 v4, v6
 ; VI-NEXT:    v_frexp_mant_f32_e32 v6, v5
@@ -8045,11 +8426,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_div_fmas_f32 v8, v8, v12, v13
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v6
 ; VI-NEXT:    v_div_fixup_f32 v8, v8, v5, 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB10_7
-; VI-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB10_8
+; VI-NEXT:  ; %bb.5: ; %frem.loop_body93.preheader
 ; VI-NEXT:    v_sub_u32_e32 v6, vcc, v9, v10
 ; VI-NEXT:    v_add_u32_e32 v6, vcc, 11, v6
-; VI-NEXT:  .LBB10_5: ; %frem.loop_body93
+; VI-NEXT:  .LBB10_6: ; %frem.loop_body93
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v9, v7
 ; VI-NEXT:    v_mul_f32_e32 v7, v9, v8
@@ -8061,10 +8442,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_add_u32_e32 v6, vcc, -11, v6
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v6
 ; VI-NEXT:    v_ldexp_f32 v7, v7, 11
-; VI-NEXT:    s_cbranch_vccnz .LBB10_5
-; VI-NEXT:  ; %bb.6: ; %Flow133
+; VI-NEXT:    s_cbranch_vccnz .LBB10_6
+; VI-NEXT:  ; %bb.7: ; %Flow133
 ; VI-NEXT:    v_mov_b32_e32 v7, v9
-; VI-NEXT:  .LBB10_7: ; %frem.loop_exit94
+; VI-NEXT:  .LBB10_8: ; %frem.loop_exit94
 ; VI-NEXT:    v_add_u32_e32 v6, vcc, -10, v6
 ; VI-NEXT:    v_ldexp_f32 v6, v7, v6
 ; VI-NEXT:    v_mul_f32_e32 v7, v6, v8
@@ -8077,22 +8458,28 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; VI-NEXT:    s_movk_i32 s2, 0x7fff
 ; VI-NEXT:    v_bfi_b32 v4, s2, v4, v0
-; VI-NEXT:  .LBB10_8:
+; VI-NEXT:  .LBB10_9:
 ; VI-NEXT:    v_lshrrev_b32_e32 v5, 16, v0
 ; VI-NEXT:    v_lshrrev_b32_e32 v6, 16, v2
 ; VI-NEXT:    v_cvt_f32_f16_e64 v9, |v5|
 ; VI-NEXT:    v_cvt_f32_f16_e64 v8, |v6|
 ; VI-NEXT:    v_cmp_ngt_f32_e32 vcc, v9, v8
-; VI-NEXT:    s_cbranch_vccz .LBB10_10
-; VI-NEXT:  ; %bb.9: ; %frem.else53
+; VI-NEXT:    s_cbranch_vccz .LBB10_11
+; VI-NEXT:  ; %bb.10: ; %frem.else53
 ; VI-NEXT:    v_and_b32_e32 v7, 0x8000, v5
 ; VI-NEXT:    v_cmp_eq_f32_e32 vcc, v9, v8
 ; VI-NEXT:    v_cndmask_b32_e32 v7, v5, v7, vcc
-; VI-NEXT:    s_cbranch_execz .LBB10_11
-; VI-NEXT:    s_branch .LBB10_16
-; VI-NEXT:  .LBB10_10:
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB10_12
+; VI-NEXT:  .LBB10_11:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr7
-; VI-NEXT:  .LBB10_11: ; %frem.compute52
+; VI-NEXT:  .LBB10_12: ; %Flow131
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB10_18
+; VI-NEXT:  ; %bb.13: ; %frem.compute52
 ; VI-NEXT:    v_frexp_exp_i32_f32_e32 v12, v9
 ; VI-NEXT:    v_frexp_mant_f32_e32 v7, v9
 ; VI-NEXT:    v_frexp_mant_f32_e32 v9, v8
@@ -8116,11 +8503,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_div_fmas_f32 v11, v11, v15, v16
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v9
 ; VI-NEXT:    v_div_fixup_f32 v11, v11, v8, 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB10_15
-; VI-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB10_17
+; VI-NEXT:  ; %bb.14: ; %frem.loop_body60.preheader
 ; VI-NEXT:    v_sub_u32_e32 v9, vcc, v12, v13
 ; VI-NEXT:    v_add_u32_e32 v9, vcc, 11, v9
-; VI-NEXT:  .LBB10_13: ; %frem.loop_body60
+; VI-NEXT:  .LBB10_15: ; %frem.loop_body60
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v12, v10
 ; VI-NEXT:    v_mul_f32_e32 v10, v12, v11
@@ -8132,10 +8519,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_add_u32_e32 v9, vcc, -11, v9
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v9
 ; VI-NEXT:    v_ldexp_f32 v10, v10, 11
-; VI-NEXT:    s_cbranch_vccnz .LBB10_13
-; VI-NEXT:  ; %bb.14: ; %Flow129
+; VI-NEXT:    s_cbranch_vccnz .LBB10_15
+; VI-NEXT:  ; %bb.16: ; %Flow129
 ; VI-NEXT:    v_mov_b32_e32 v10, v12
-; VI-NEXT:  .LBB10_15: ; %frem.loop_exit61
+; VI-NEXT:  .LBB10_17: ; %frem.loop_exit61
 ; VI-NEXT:    v_add_u32_e32 v9, vcc, -10, v9
 ; VI-NEXT:    v_ldexp_f32 v9, v10, v9
 ; VI-NEXT:    v_mul_f32_e32 v10, v9, v11
@@ -8148,20 +8535,26 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; VI-NEXT:    s_movk_i32 s2, 0x7fff
 ; VI-NEXT:    v_bfi_b32 v7, s2, v7, v5
-; VI-NEXT:  .LBB10_16:
+; VI-NEXT:  .LBB10_18:
 ; VI-NEXT:    v_cvt_f32_f16_e64 v10, |v1|
 ; VI-NEXT:    v_cvt_f32_f16_e64 v9, |v3|
 ; VI-NEXT:    v_cmp_ngt_f32_e32 vcc, v10, v9
-; VI-NEXT:    s_cbranch_vccz .LBB10_18
-; VI-NEXT:  ; %bb.17: ; %frem.else20
+; VI-NEXT:    s_cbranch_vccz .LBB10_20
+; VI-NEXT:  ; %bb.19: ; %frem.else20
 ; VI-NEXT:    v_and_b32_e32 v8, 0x8000, v1
 ; VI-NEXT:    v_cmp_eq_f32_e32 vcc, v10, v9
 ; VI-NEXT:    v_cndmask_b32_e32 v8, v1, v8, vcc
-; VI-NEXT:    s_cbranch_execz .LBB10_19
-; VI-NEXT:    s_branch .LBB10_24
-; VI-NEXT:  .LBB10_18:
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB10_21
+; VI-NEXT:  .LBB10_20:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr8
-; VI-NEXT:  .LBB10_19: ; %frem.compute19
+; VI-NEXT:  .LBB10_21: ; %Flow127
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB10_27
+; VI-NEXT:  ; %bb.22: ; %frem.compute19
 ; VI-NEXT:    v_frexp_exp_i32_f32_e32 v13, v10
 ; VI-NEXT:    v_frexp_mant_f32_e32 v8, v10
 ; VI-NEXT:    v_frexp_mant_f32_e32 v10, v9
@@ -8185,11 +8578,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_div_fmas_f32 v12, v12, v16, v17
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v10
 ; VI-NEXT:    v_div_fixup_f32 v12, v12, v9, 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB10_23
-; VI-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB10_26
+; VI-NEXT:  ; %bb.23: ; %frem.loop_body27.preheader
 ; VI-NEXT:    v_sub_u32_e32 v10, vcc, v13, v14
 ; VI-NEXT:    v_add_u32_e32 v10, vcc, 11, v10
-; VI-NEXT:  .LBB10_21: ; %frem.loop_body27
+; VI-NEXT:  .LBB10_24: ; %frem.loop_body27
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v13, v11
 ; VI-NEXT:    v_mul_f32_e32 v11, v13, v12
@@ -8201,10 +8594,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_add_u32_e32 v10, vcc, -11, v10
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v10
 ; VI-NEXT:    v_ldexp_f32 v11, v11, 11
-; VI-NEXT:    s_cbranch_vccnz .LBB10_21
-; VI-NEXT:  ; %bb.22: ; %Flow125
+; VI-NEXT:    s_cbranch_vccnz .LBB10_24
+; VI-NEXT:  ; %bb.25: ; %Flow125
 ; VI-NEXT:    v_mov_b32_e32 v11, v13
-; VI-NEXT:  .LBB10_23: ; %frem.loop_exit28
+; VI-NEXT:  .LBB10_26: ; %frem.loop_exit28
 ; VI-NEXT:    v_add_u32_e32 v10, vcc, -10, v10
 ; VI-NEXT:    v_ldexp_f32 v10, v11, v10
 ; VI-NEXT:    v_mul_f32_e32 v11, v10, v12
@@ -8217,22 +8610,28 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_cvt_f16_f32_e32 v8, v8
 ; VI-NEXT:    s_movk_i32 s2, 0x7fff
 ; VI-NEXT:    v_bfi_b32 v8, s2, v8, v1
-; VI-NEXT:  .LBB10_24:
+; VI-NEXT:  .LBB10_27:
 ; VI-NEXT:    v_lshrrev_b32_e32 v9, 16, v1
 ; VI-NEXT:    v_lshrrev_b32_e32 v10, 16, v3
 ; VI-NEXT:    v_cvt_f32_f16_e64 v13, |v9|
 ; VI-NEXT:    v_cvt_f32_f16_e64 v12, |v10|
 ; VI-NEXT:    v_cmp_ngt_f32_e32 vcc, v13, v12
-; VI-NEXT:    s_cbranch_vccz .LBB10_26
-; VI-NEXT:  ; %bb.25: ; %frem.else
+; VI-NEXT:    s_cbranch_vccz .LBB10_29
+; VI-NEXT:  ; %bb.28: ; %frem.else
 ; VI-NEXT:    v_and_b32_e32 v11, 0x8000, v9
 ; VI-NEXT:    v_cmp_eq_f32_e32 vcc, v13, v12
 ; VI-NEXT:    v_cndmask_b32_e32 v11, v9, v11, vcc
-; VI-NEXT:    s_cbranch_execz .LBB10_27
-; VI-NEXT:    s_branch .LBB10_32
-; VI-NEXT:  .LBB10_26:
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB10_30
+; VI-NEXT:  .LBB10_29:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr11
-; VI-NEXT:  .LBB10_27: ; %frem.compute
+; VI-NEXT:  .LBB10_30: ; %Flow123
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB10_36
+; VI-NEXT:  ; %bb.31: ; %frem.compute
 ; VI-NEXT:    v_frexp_exp_i32_f32_e32 v16, v13
 ; VI-NEXT:    v_frexp_mant_f32_e32 v11, v13
 ; VI-NEXT:    v_frexp_mant_f32_e32 v13, v12
@@ -8256,11 +8655,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_div_fmas_f32 v15, v15, v19, v20
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v13
 ; VI-NEXT:    v_div_fixup_f32 v15, v15, v12, 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB10_31
-; VI-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB10_35
+; VI-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; VI-NEXT:    v_sub_u32_e32 v13, vcc, v16, v17
 ; VI-NEXT:    v_add_u32_e32 v13, vcc, 11, v13
-; VI-NEXT:  .LBB10_29: ; %frem.loop_body
+; VI-NEXT:  .LBB10_33: ; %frem.loop_body
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v16, v14
 ; VI-NEXT:    v_mul_f32_e32 v14, v16, v15
@@ -8272,10 +8671,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_add_u32_e32 v13, vcc, -11, v13
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v13
 ; VI-NEXT:    v_ldexp_f32 v14, v14, 11
-; VI-NEXT:    s_cbranch_vccnz .LBB10_29
-; VI-NEXT:  ; %bb.30: ; %Flow
+; VI-NEXT:    s_cbranch_vccnz .LBB10_33
+; VI-NEXT:  ; %bb.34: ; %Flow
 ; VI-NEXT:    v_mov_b32_e32 v14, v16
-; VI-NEXT:  .LBB10_31: ; %frem.loop_exit
+; VI-NEXT:  .LBB10_35: ; %frem.loop_exit
 ; VI-NEXT:    v_add_u32_e32 v13, vcc, -10, v13
 ; VI-NEXT:    v_ldexp_f32 v13, v14, v13
 ; VI-NEXT:    v_mul_f32_e32 v14, v13, v15
@@ -8288,7 +8687,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_cvt_f16_f32_e32 v11, v11
 ; VI-NEXT:    s_movk_i32 s2, 0x7fff
 ; VI-NEXT:    v_bfi_b32 v11, s2, v11, v9
-; VI-NEXT:  .LBB10_32: ; %Flow124
+; VI-NEXT:  .LBB10_36: ; %Flow124
 ; VI-NEXT:    s_movk_i32 s4, 0x7c00
 ; VI-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v2
 ; VI-NEXT:    v_cmp_nge_f16_e64 s[2:3], |v0|, s4
@@ -8332,11 +8731,17 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_and_b32_e32 v4, 0x8000, v2
 ; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, v6, v5
 ; GFX9-NEXT:    v_cndmask_b32_e32 v4, v2, v4, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB10_3
-; GFX9-NEXT:    s_branch .LBB10_8
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-NEXT:    s_branch .LBB10_3
 ; GFX9-NEXT:  .LBB10_2:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr4
-; GFX9-NEXT:  .LBB10_3: ; %frem.compute85
+; GFX9-NEXT:  .LBB10_3: ; %Flow135
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB10_9
+; GFX9-NEXT:  ; %bb.4: ; %frem.compute85
 ; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v9, v6
 ; GFX9-NEXT:    v_frexp_mant_f32_e32 v4, v6
 ; GFX9-NEXT:    v_frexp_mant_f32_e32 v6, v5
@@ -8360,11 +8765,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_div_fmas_f32 v8, v8, v12, v13
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v6
 ; GFX9-NEXT:    v_div_fixup_f32 v8, v8, v5, 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB10_7
-; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB10_8
+; GFX9-NEXT:  ; %bb.5: ; %frem.loop_body93.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v6, v9, v10
 ; GFX9-NEXT:    v_add_u32_e32 v6, 11, v6
-; GFX9-NEXT:  .LBB10_5: ; %frem.loop_body93
+; GFX9-NEXT:  .LBB10_6: ; %frem.loop_body93
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v9, v7
 ; GFX9-NEXT:    v_mul_f32_e32 v7, v9, v8
@@ -8376,10 +8781,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v7, v7, v10, vcc
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v6
 ; GFX9-NEXT:    v_ldexp_f32 v7, v7, 11
-; GFX9-NEXT:    s_cbranch_vccnz .LBB10_5
-; GFX9-NEXT:  ; %bb.6: ; %Flow133
+; GFX9-NEXT:    s_cbranch_vccnz .LBB10_6
+; GFX9-NEXT:  ; %bb.7: ; %Flow133
 ; GFX9-NEXT:    v_mov_b32_e32 v7, v9
-; GFX9-NEXT:  .LBB10_7: ; %frem.loop_exit94
+; GFX9-NEXT:  .LBB10_8: ; %frem.loop_exit94
 ; GFX9-NEXT:    v_add_u32_e32 v6, -10, v6
 ; GFX9-NEXT:    v_ldexp_f32 v6, v7, v6
 ; GFX9-NEXT:    v_mul_f32_e32 v7, v6, v8
@@ -8392,21 +8797,27 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; GFX9-NEXT:    s_movk_i32 s2, 0x7fff
 ; GFX9-NEXT:    v_bfi_b32 v4, s2, v4, v2
-; GFX9-NEXT:  .LBB10_8:
+; GFX9-NEXT:  .LBB10_9:
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 16, v2
 ; GFX9-NEXT:    v_cvt_f32_f16_e64 v8, |v5|
 ; GFX9-NEXT:    v_cvt_f32_f16_sdwa v7, |v0| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1
 ; GFX9-NEXT:    v_cmp_ngt_f32_e32 vcc, v8, v7
-; GFX9-NEXT:    s_cbranch_vccz .LBB10_10
-; GFX9-NEXT:  ; %bb.9: ; %frem.else53
+; GFX9-NEXT:    s_cbranch_vccz .LBB10_11
+; GFX9-NEXT:  ; %bb.10: ; %frem.else53
 ; GFX9-NEXT:    v_and_b32_e32 v6, 0x8000, v5
 ; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, v8, v7
 ; GFX9-NEXT:    v_cndmask_b32_e32 v6, v5, v6, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB10_11
-; GFX9-NEXT:    s_branch .LBB10_16
-; GFX9-NEXT:  .LBB10_10:
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-NEXT:    s_branch .LBB10_12
+; GFX9-NEXT:  .LBB10_11:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr6
-; GFX9-NEXT:  .LBB10_11: ; %frem.compute52
+; GFX9-NEXT:  .LBB10_12: ; %Flow131
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB10_18
+; GFX9-NEXT:  ; %bb.13: ; %frem.compute52
 ; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v11, v8
 ; GFX9-NEXT:    v_frexp_mant_f32_e32 v6, v8
 ; GFX9-NEXT:    v_frexp_mant_f32_e32 v8, v7
@@ -8430,11 +8841,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_div_fmas_f32 v10, v10, v14, v15
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v8
 ; GFX9-NEXT:    v_div_fixup_f32 v10, v10, v7, 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB10_15
-; GFX9-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB10_17
+; GFX9-NEXT:  ; %bb.14: ; %frem.loop_body60.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v8, v11, v12
 ; GFX9-NEXT:    v_add_u32_e32 v8, 11, v8
-; GFX9-NEXT:  .LBB10_13: ; %frem.loop_body60
+; GFX9-NEXT:  .LBB10_15: ; %frem.loop_body60
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v11, v9
 ; GFX9-NEXT:    v_mul_f32_e32 v9, v11, v10
@@ -8446,10 +8857,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v9, v9, v12, vcc
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v8
 ; GFX9-NEXT:    v_ldexp_f32 v9, v9, 11
-; GFX9-NEXT:    s_cbranch_vccnz .LBB10_13
-; GFX9-NEXT:  ; %bb.14: ; %Flow129
+; GFX9-NEXT:    s_cbranch_vccnz .LBB10_15
+; GFX9-NEXT:  ; %bb.16: ; %Flow129
 ; GFX9-NEXT:    v_mov_b32_e32 v9, v11
-; GFX9-NEXT:  .LBB10_15: ; %frem.loop_exit61
+; GFX9-NEXT:  .LBB10_17: ; %frem.loop_exit61
 ; GFX9-NEXT:    v_add_u32_e32 v8, -10, v8
 ; GFX9-NEXT:    v_ldexp_f32 v8, v9, v8
 ; GFX9-NEXT:    v_mul_f32_e32 v9, v8, v10
@@ -8462,20 +8873,26 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cvt_f16_f32_e32 v6, v6
 ; GFX9-NEXT:    s_movk_i32 s2, 0x7fff
 ; GFX9-NEXT:    v_bfi_b32 v6, s2, v6, v5
-; GFX9-NEXT:  .LBB10_16:
+; GFX9-NEXT:  .LBB10_18:
 ; GFX9-NEXT:    v_cvt_f32_f16_e64 v9, |v3|
 ; GFX9-NEXT:    v_cvt_f32_f16_e64 v8, |v1|
 ; GFX9-NEXT:    v_cmp_ngt_f32_e32 vcc, v9, v8
-; GFX9-NEXT:    s_cbranch_vccz .LBB10_18
-; GFX9-NEXT:  ; %bb.17: ; %frem.else20
+; GFX9-NEXT:    s_cbranch_vccz .LBB10_20
+; GFX9-NEXT:  ; %bb.19: ; %frem.else20
 ; GFX9-NEXT:    v_and_b32_e32 v7, 0x8000, v3
 ; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, v9, v8
 ; GFX9-NEXT:    v_cndmask_b32_e32 v7, v3, v7, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB10_19
-; GFX9-NEXT:    s_branch .LBB10_24
-; GFX9-NEXT:  .LBB10_18:
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-NEXT:    s_branch .LBB10_21
+; GFX9-NEXT:  .LBB10_20:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr7
-; GFX9-NEXT:  .LBB10_19: ; %frem.compute19
+; GFX9-NEXT:  .LBB10_21: ; %Flow127
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB10_27
+; GFX9-NEXT:  ; %bb.22: ; %frem.compute19
 ; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v12, v9
 ; GFX9-NEXT:    v_frexp_mant_f32_e32 v7, v9
 ; GFX9-NEXT:    v_frexp_mant_f32_e32 v9, v8
@@ -8499,11 +8916,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_div_fmas_f32 v11, v11, v15, v16
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v9
 ; GFX9-NEXT:    v_div_fixup_f32 v11, v11, v8, 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB10_23
-; GFX9-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB10_26
+; GFX9-NEXT:  ; %bb.23: ; %frem.loop_body27.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v9, v12, v13
 ; GFX9-NEXT:    v_add_u32_e32 v9, 11, v9
-; GFX9-NEXT:  .LBB10_21: ; %frem.loop_body27
+; GFX9-NEXT:  .LBB10_24: ; %frem.loop_body27
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v12, v10
 ; GFX9-NEXT:    v_mul_f32_e32 v10, v12, v11
@@ -8515,10 +8932,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v10, v10, v13, vcc
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v9
 ; GFX9-NEXT:    v_ldexp_f32 v10, v10, 11
-; GFX9-NEXT:    s_cbranch_vccnz .LBB10_21
-; GFX9-NEXT:  ; %bb.22: ; %Flow125
+; GFX9-NEXT:    s_cbranch_vccnz .LBB10_24
+; GFX9-NEXT:  ; %bb.25: ; %Flow125
 ; GFX9-NEXT:    v_mov_b32_e32 v10, v12
-; GFX9-NEXT:  .LBB10_23: ; %frem.loop_exit28
+; GFX9-NEXT:  .LBB10_26: ; %frem.loop_exit28
 ; GFX9-NEXT:    v_add_u32_e32 v9, -10, v9
 ; GFX9-NEXT:    v_ldexp_f32 v9, v10, v9
 ; GFX9-NEXT:    v_mul_f32_e32 v10, v9, v11
@@ -8531,21 +8948,27 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; GFX9-NEXT:    s_movk_i32 s2, 0x7fff
 ; GFX9-NEXT:    v_bfi_b32 v7, s2, v7, v3
-; GFX9-NEXT:  .LBB10_24:
+; GFX9-NEXT:  .LBB10_27:
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v8, 16, v3
 ; GFX9-NEXT:    v_cvt_f32_f16_e64 v11, |v8|
 ; GFX9-NEXT:    v_cvt_f32_f16_sdwa v10, |v1| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1
 ; GFX9-NEXT:    v_cmp_ngt_f32_e32 vcc, v11, v10
-; GFX9-NEXT:    s_cbranch_vccz .LBB10_26
-; GFX9-NEXT:  ; %bb.25: ; %frem.else
+; GFX9-NEXT:    s_cbranch_vccz .LBB10_29
+; GFX9-NEXT:  ; %bb.28: ; %frem.else
 ; GFX9-NEXT:    v_and_b32_e32 v9, 0x8000, v8
 ; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, v11, v10
 ; GFX9-NEXT:    v_cndmask_b32_e32 v9, v8, v9, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB10_27
-; GFX9-NEXT:    s_branch .LBB10_32
-; GFX9-NEXT:  .LBB10_26:
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-NEXT:    s_branch .LBB10_30
+; GFX9-NEXT:  .LBB10_29:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr9
-; GFX9-NEXT:  .LBB10_27: ; %frem.compute
+; GFX9-NEXT:  .LBB10_30: ; %Flow123
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB10_36
+; GFX9-NEXT:  ; %bb.31: ; %frem.compute
 ; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v14, v11
 ; GFX9-NEXT:    v_frexp_mant_f32_e32 v9, v11
 ; GFX9-NEXT:    v_frexp_mant_f32_e32 v11, v10
@@ -8569,11 +8992,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_div_fmas_f32 v13, v13, v17, v18
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v11
 ; GFX9-NEXT:    v_div_fixup_f32 v13, v13, v10, 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB10_31
-; GFX9-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB10_35
+; GFX9-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v11, v14, v15
 ; GFX9-NEXT:    v_add_u32_e32 v11, 11, v11
-; GFX9-NEXT:  .LBB10_29: ; %frem.loop_body
+; GFX9-NEXT:  .LBB10_33: ; %frem.loop_body
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v14, v12
 ; GFX9-NEXT:    v_mul_f32_e32 v12, v14, v13
@@ -8585,10 +9008,10 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v12, v12, v15, vcc
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v11
 ; GFX9-NEXT:    v_ldexp_f32 v12, v12, 11
-; GFX9-NEXT:    s_cbranch_vccnz .LBB10_29
-; GFX9-NEXT:  ; %bb.30: ; %Flow
+; GFX9-NEXT:    s_cbranch_vccnz .LBB10_33
+; GFX9-NEXT:  ; %bb.34: ; %Flow
 ; GFX9-NEXT:    v_mov_b32_e32 v12, v14
-; GFX9-NEXT:  .LBB10_31: ; %frem.loop_exit
+; GFX9-NEXT:  .LBB10_35: ; %frem.loop_exit
 ; GFX9-NEXT:    v_add_u32_e32 v11, -10, v11
 ; GFX9-NEXT:    v_ldexp_f32 v11, v12, v11
 ; GFX9-NEXT:    v_mul_f32_e32 v12, v11, v13
@@ -8601,7 +9024,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cvt_f16_f32_e32 v9, v9
 ; GFX9-NEXT:    s_movk_i32 s2, 0x7fff
 ; GFX9-NEXT:    v_bfi_b32 v9, s2, v9, v8
-; GFX9-NEXT:  .LBB10_32: ; %Flow124
+; GFX9-NEXT:  .LBB10_36: ; %Flow124
 ; GFX9-NEXT:    s_movk_i32 s6, 0x7c00
 ; GFX9-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v0
 ; GFX9-NEXT:    v_cmp_nge_f16_e64 s[2:3], |v2|, s6
@@ -8647,12 +9070,18 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:  ; %bb.1: ; %frem.else86
 ; GFX10-NEXT:    v_and_b32_e32 v4, 0x8000, v2
 ; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v6, v5
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v4, v2, v4, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB10_3
-; GFX10-NEXT:    s_branch .LBB10_8
+; GFX10-NEXT:    s_branch .LBB10_3
 ; GFX10-NEXT:  .LBB10_2:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr4
-; GFX10-NEXT:  .LBB10_3: ; %frem.compute85
+; GFX10-NEXT:  .LBB10_3: ; %Flow135
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB10_9
+; GFX10-NEXT:  ; %bb.4: ; %frem.compute85
 ; GFX10-NEXT:    v_frexp_mant_f32_e32 v4, v6
 ; GFX10-NEXT:    v_frexp_mant_f32_e32 v8, v5
 ; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v7, v6
@@ -8678,11 +9107,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_div_fmas_f32 v7, v7, v10, v11
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v8
 ; GFX10-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB10_7
-; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB10_8
+; GFX10-NEXT:  ; %bb.5: ; %frem.loop_body93.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 11
-; GFX10-NEXT:  .LBB10_5: ; %frem.loop_body93
+; GFX10-NEXT:  .LBB10_6: ; %frem.loop_body93
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v9, v6
 ; GFX10-NEXT:    s_add_i32 s2, s2, -11
@@ -8694,11 +9123,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_add_f32_e32 v8, v6, v5
 ; GFX10-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v6, v6, 11
-; GFX10-NEXT:    s_cbranch_scc1 .LBB10_5
-; GFX10-NEXT:  ; %bb.6: ; %Flow133
+; GFX10-NEXT:    s_cbranch_scc1 .LBB10_6
+; GFX10-NEXT:  ; %bb.7: ; %Flow133
 ; GFX10-NEXT:    v_mov_b32_e32 v8, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v6, v9
-; GFX10-NEXT:  .LBB10_7: ; %frem.loop_exit94
+; GFX10-NEXT:  .LBB10_8: ; %frem.loop_exit94
 ; GFX10-NEXT:    v_add_nc_u32_e32 v8, -10, v8
 ; GFX10-NEXT:    v_ldexp_f32 v6, v6, v8
 ; GFX10-NEXT:    v_mul_f32_e32 v7, v6, v7
@@ -8710,21 +9139,27 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_ldexp_f32 v4, v5, v4
 ; GFX10-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; GFX10-NEXT:    v_bfi_b32 v4, 0x7fff, v4, v2
-; GFX10-NEXT:  .LBB10_8:
+; GFX10-NEXT:  .LBB10_9:
 ; GFX10-NEXT:    v_lshrrev_b32_e32 v5, 16, v2
 ; GFX10-NEXT:    v_cvt_f32_f16_sdwa v7, |v0| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1
 ; GFX10-NEXT:    v_cvt_f32_f16_e64 v8, |v5|
 ; GFX10-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v8, v7
-; GFX10-NEXT:    s_cbranch_vccz .LBB10_10
-; GFX10-NEXT:  ; %bb.9: ; %frem.else53
+; GFX10-NEXT:    s_cbranch_vccz .LBB10_11
+; GFX10-NEXT:  ; %bb.10: ; %frem.else53
 ; GFX10-NEXT:    v_and_b32_e32 v6, 0x8000, v5
 ; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v8, v7
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v6, v5, v6, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB10_11
-; GFX10-NEXT:    s_branch .LBB10_16
-; GFX10-NEXT:  .LBB10_10:
+; GFX10-NEXT:    s_branch .LBB10_12
+; GFX10-NEXT:  .LBB10_11:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr6
-; GFX10-NEXT:  .LBB10_11: ; %frem.compute52
+; GFX10-NEXT:  .LBB10_12: ; %Flow131
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB10_18
+; GFX10-NEXT:  ; %bb.13: ; %frem.compute52
 ; GFX10-NEXT:    v_frexp_mant_f32_e32 v6, v8
 ; GFX10-NEXT:    v_frexp_mant_f32_e32 v10, v7
 ; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v9, v8
@@ -8750,11 +9185,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_div_fmas_f32 v9, v9, v12, v13
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v10
 ; GFX10-NEXT:    v_div_fixup_f32 v9, v9, v7, 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB10_15
-; GFX10-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB10_17
+; GFX10-NEXT:  ; %bb.14: ; %frem.loop_body60.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 11
-; GFX10-NEXT:  .LBB10_13: ; %frem.loop_body60
+; GFX10-NEXT:  .LBB10_15: ; %frem.loop_body60
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v11, v8
 ; GFX10-NEXT:    s_add_i32 s2, s2, -11
@@ -8766,11 +9201,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_add_f32_e32 v10, v8, v7
 ; GFX10-NEXT:    v_cndmask_b32_e32 v8, v8, v10, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v8, v8, 11
-; GFX10-NEXT:    s_cbranch_scc1 .LBB10_13
-; GFX10-NEXT:  ; %bb.14: ; %Flow129
+; GFX10-NEXT:    s_cbranch_scc1 .LBB10_15
+; GFX10-NEXT:  ; %bb.16: ; %Flow129
 ; GFX10-NEXT:    v_mov_b32_e32 v10, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v8, v11
-; GFX10-NEXT:  .LBB10_15: ; %frem.loop_exit61
+; GFX10-NEXT:  .LBB10_17: ; %frem.loop_exit61
 ; GFX10-NEXT:    v_add_nc_u32_e32 v10, -10, v10
 ; GFX10-NEXT:    v_ldexp_f32 v8, v8, v10
 ; GFX10-NEXT:    v_mul_f32_e32 v9, v8, v9
@@ -8782,20 +9217,26 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_ldexp_f32 v6, v7, v6
 ; GFX10-NEXT:    v_cvt_f16_f32_e32 v6, v6
 ; GFX10-NEXT:    v_bfi_b32 v6, 0x7fff, v6, v5
-; GFX10-NEXT:  .LBB10_16:
+; GFX10-NEXT:  .LBB10_18:
 ; GFX10-NEXT:    v_cvt_f32_f16_e64 v9, |v3|
 ; GFX10-NEXT:    v_cvt_f32_f16_e64 v8, |v1|
 ; GFX10-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v9, v8
-; GFX10-NEXT:    s_cbranch_vccz .LBB10_18
-; GFX10-NEXT:  ; %bb.17: ; %frem.else20
+; GFX10-NEXT:    s_cbranch_vccz .LBB10_20
+; GFX10-NEXT:  ; %bb.19: ; %frem.else20
 ; GFX10-NEXT:    v_and_b32_e32 v7, 0x8000, v3
 ; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v9, v8
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v7, v3, v7, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB10_19
-; GFX10-NEXT:    s_branch .LBB10_24
-; GFX10-NEXT:  .LBB10_18:
+; GFX10-NEXT:    s_branch .LBB10_21
+; GFX10-NEXT:  .LBB10_20:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr7
-; GFX10-NEXT:  .LBB10_19: ; %frem.compute19
+; GFX10-NEXT:  .LBB10_21: ; %Flow127
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB10_27
+; GFX10-NEXT:  ; %bb.22: ; %frem.compute19
 ; GFX10-NEXT:    v_frexp_mant_f32_e32 v7, v9
 ; GFX10-NEXT:    v_frexp_mant_f32_e32 v11, v8
 ; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v10, v9
@@ -8821,11 +9262,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_div_fmas_f32 v10, v10, v13, v14
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v11
 ; GFX10-NEXT:    v_div_fixup_f32 v10, v10, v8, 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB10_23
-; GFX10-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB10_26
+; GFX10-NEXT:  ; %bb.23: ; %frem.loop_body27.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 11
-; GFX10-NEXT:  .LBB10_21: ; %frem.loop_body27
+; GFX10-NEXT:  .LBB10_24: ; %frem.loop_body27
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v12, v9
 ; GFX10-NEXT:    s_add_i32 s2, s2, -11
@@ -8837,11 +9278,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_add_f32_e32 v11, v9, v8
 ; GFX10-NEXT:    v_cndmask_b32_e32 v9, v9, v11, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v9, v9, 11
-; GFX10-NEXT:    s_cbranch_scc1 .LBB10_21
-; GFX10-NEXT:  ; %bb.22: ; %Flow125
+; GFX10-NEXT:    s_cbranch_scc1 .LBB10_24
+; GFX10-NEXT:  ; %bb.25: ; %Flow125
 ; GFX10-NEXT:    v_mov_b32_e32 v11, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v9, v12
-; GFX10-NEXT:  .LBB10_23: ; %frem.loop_exit28
+; GFX10-NEXT:  .LBB10_26: ; %frem.loop_exit28
 ; GFX10-NEXT:    v_add_nc_u32_e32 v11, -10, v11
 ; GFX10-NEXT:    v_ldexp_f32 v9, v9, v11
 ; GFX10-NEXT:    v_mul_f32_e32 v10, v9, v10
@@ -8853,21 +9294,27 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_ldexp_f32 v7, v8, v7
 ; GFX10-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; GFX10-NEXT:    v_bfi_b32 v7, 0x7fff, v7, v3
-; GFX10-NEXT:  .LBB10_24:
+; GFX10-NEXT:  .LBB10_27:
 ; GFX10-NEXT:    v_lshrrev_b32_e32 v8, 16, v3
 ; GFX10-NEXT:    v_cvt_f32_f16_sdwa v10, |v1| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1
 ; GFX10-NEXT:    v_cvt_f32_f16_e64 v11, |v8|
 ; GFX10-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v11, v10
-; GFX10-NEXT:    s_cbranch_vccz .LBB10_26
-; GFX10-NEXT:  ; %bb.25: ; %frem.else
+; GFX10-NEXT:    s_cbranch_vccz .LBB10_29
+; GFX10-NEXT:  ; %bb.28: ; %frem.else
 ; GFX10-NEXT:    v_and_b32_e32 v9, 0x8000, v8
 ; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v11, v10
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v9, v8, v9, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB10_27
-; GFX10-NEXT:    s_branch .LBB10_32
-; GFX10-NEXT:  .LBB10_26:
+; GFX10-NEXT:    s_branch .LBB10_30
+; GFX10-NEXT:  .LBB10_29:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr9
-; GFX10-NEXT:  .LBB10_27: ; %frem.compute
+; GFX10-NEXT:  .LBB10_30: ; %Flow123
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB10_36
+; GFX10-NEXT:  ; %bb.31: ; %frem.compute
 ; GFX10-NEXT:    v_frexp_mant_f32_e32 v9, v11
 ; GFX10-NEXT:    v_frexp_mant_f32_e32 v13, v10
 ; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v12, v11
@@ -8893,11 +9340,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_div_fmas_f32 v12, v12, v15, v16
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v13
 ; GFX10-NEXT:    v_div_fixup_f32 v12, v12, v10, 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB10_31
-; GFX10-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB10_35
+; GFX10-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 11
-; GFX10-NEXT:  .LBB10_29: ; %frem.loop_body
+; GFX10-NEXT:  .LBB10_33: ; %frem.loop_body
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v14, v11
 ; GFX10-NEXT:    s_add_i32 s2, s2, -11
@@ -8909,11 +9356,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_add_f32_e32 v13, v11, v10
 ; GFX10-NEXT:    v_cndmask_b32_e32 v11, v11, v13, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v11, v11, 11
-; GFX10-NEXT:    s_cbranch_scc1 .LBB10_29
-; GFX10-NEXT:  ; %bb.30: ; %Flow
+; GFX10-NEXT:    s_cbranch_scc1 .LBB10_33
+; GFX10-NEXT:  ; %bb.34: ; %Flow
 ; GFX10-NEXT:    v_mov_b32_e32 v13, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v11, v14
-; GFX10-NEXT:  .LBB10_31: ; %frem.loop_exit
+; GFX10-NEXT:  .LBB10_35: ; %frem.loop_exit
 ; GFX10-NEXT:    v_add_nc_u32_e32 v13, -10, v13
 ; GFX10-NEXT:    v_ldexp_f32 v11, v11, v13
 ; GFX10-NEXT:    v_mul_f32_e32 v12, v11, v12
@@ -8925,7 +9372,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_ldexp_f32 v9, v10, v9
 ; GFX10-NEXT:    v_cvt_f16_f32_e32 v9, v9
 ; GFX10-NEXT:    v_bfi_b32 v9, 0x7fff, v9, v8
-; GFX10-NEXT:  .LBB10_32: ; %Flow124
+; GFX10-NEXT:  .LBB10_36: ; %Flow124
 ; GFX10-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v0
 ; GFX10-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v2|
 ; GFX10-NEXT:    v_cmp_nle_f16_e64 s3, 0x7c00, |v5|
@@ -8970,13 +9417,20 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:  ; %bb.1: ; %frem.else86
 ; GFX11-TRUE16-NEXT:    v_and_b16 v4.l, 0x8000, v0.l
 ; GFX11-TRUE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v6, v5
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_cndmask_b16 v4.l, v0.l, v4.l, vcc_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_execz .LBB10_3
-; GFX11-TRUE16-NEXT:    s_branch .LBB10_8
+; GFX11-TRUE16-NEXT:    s_branch .LBB10_3
 ; GFX11-TRUE16-NEXT:  .LBB10_2:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr4
-; GFX11-TRUE16-NEXT:  .LBB10_3: ; %frem.compute85
+; GFX11-TRUE16-NEXT:  .LBB10_3: ; %Flow135
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_9
+; GFX11-TRUE16-NEXT:  ; %bb.4: ; %frem.compute85
 ; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v4, v6
 ; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v8, v5
 ; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v7, v6
@@ -9011,12 +9465,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v8
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_7
-; GFX11-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader
+; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_8
+; GFX11-TRUE16-NEXT:  ; %bb.5: ; %frem.loop_body93.preheader
 ; GFX11-TRUE16-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 11
-; GFX11-TRUE16-NEXT:  .LBB10_5: ; %frem.loop_body93
+; GFX11-TRUE16-NEXT:  .LBB10_6: ; %frem.loop_body93
 ; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v9, v6
@@ -9032,11 +9486,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc_lo
 ; GFX11-TRUE16-NEXT:    v_ldexp_f32 v6, v6, 11
-; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_5
-; GFX11-TRUE16-NEXT:  ; %bb.6: ; %Flow133
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_6
+; GFX11-TRUE16-NEXT:  ; %bb.7: ; %Flow133
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v8, s2
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v9
-; GFX11-TRUE16-NEXT:  .LBB10_7: ; %frem.loop_exit94
+; GFX11-TRUE16-NEXT:  .LBB10_8: ; %frem.loop_exit94
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v8, -10, v8
 ; GFX11-TRUE16-NEXT:    v_ldexp_f32 v6, v6, v8
@@ -9054,7 +9508,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v4.l, v4
 ; GFX11-TRUE16-NEXT:    v_bfi_b32 v4, 0x7fff, v4, v5
-; GFX11-TRUE16-NEXT:  .LBB10_8:
+; GFX11-TRUE16-NEXT:  .LBB10_9:
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v0
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v6, 16, v2
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -9062,17 +9516,24 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v8, |v6.l|
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v9, v8
-; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB10_10
-; GFX11-TRUE16-NEXT:  ; %bb.9: ; %frem.else53
+; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB10_11
+; GFX11-TRUE16-NEXT:  ; %bb.10: ; %frem.else53
 ; GFX11-TRUE16-NEXT:    v_and_b16 v0.h, 0x8000, v5.l
 ; GFX11-TRUE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v9, v8
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_cndmask_b16 v7.l, v5.l, v0.h, vcc_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_execz .LBB10_11
-; GFX11-TRUE16-NEXT:    s_branch .LBB10_16
-; GFX11-TRUE16-NEXT:  .LBB10_10:
+; GFX11-TRUE16-NEXT:    s_branch .LBB10_12
+; GFX11-TRUE16-NEXT:  .LBB10_11:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr7
-; GFX11-TRUE16-NEXT:  .LBB10_11: ; %frem.compute52
+; GFX11-TRUE16-NEXT:  .LBB10_12: ; %Flow131
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_18
+; GFX11-TRUE16-NEXT:  ; %bb.13: ; %frem.compute52
 ; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v7, v9
 ; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v11, v8
 ; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v10, v9
@@ -9107,12 +9568,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v11
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_div_fixup_f32 v10, v10, v8, 1.0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_15
-; GFX11-TRUE16-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader
+; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_17
+; GFX11-TRUE16-NEXT:  ; %bb.14: ; %frem.loop_body60.preheader
 ; GFX11-TRUE16-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 11
-; GFX11-TRUE16-NEXT:  .LBB10_13: ; %frem.loop_body60
+; GFX11-TRUE16-NEXT:  .LBB10_15: ; %frem.loop_body60
 ; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v12, v9
@@ -9128,11 +9589,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v9, v9, v11, vcc_lo
 ; GFX11-TRUE16-NEXT:    v_ldexp_f32 v9, v9, 11
-; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_13
-; GFX11-TRUE16-NEXT:  ; %bb.14: ; %Flow129
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_15
+; GFX11-TRUE16-NEXT:  ; %bb.16: ; %Flow129
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v11, s2
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v9, v12
-; GFX11-TRUE16-NEXT:  .LBB10_15: ; %frem.loop_exit61
+; GFX11-TRUE16-NEXT:  .LBB10_17: ; %frem.loop_exit61
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v11, -10, v11
 ; GFX11-TRUE16-NEXT:    v_ldexp_f32 v9, v9, v11
@@ -9150,22 +9611,29 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v7.l, v7
 ; GFX11-TRUE16-NEXT:    v_bfi_b32 v7, 0x7fff, v7, v8
-; GFX11-TRUE16-NEXT:  .LBB10_16:
+; GFX11-TRUE16-NEXT:  .LBB10_18:
 ; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v10, |v1.l|
 ; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v9, |v3.l|
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v10, v9
-; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB10_18
-; GFX11-TRUE16-NEXT:  ; %bb.17: ; %frem.else20
+; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB10_20
+; GFX11-TRUE16-NEXT:  ; %bb.19: ; %frem.else20
 ; GFX11-TRUE16-NEXT:    v_and_b16 v0.h, 0x8000, v1.l
 ; GFX11-TRUE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v10, v9
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_cndmask_b16 v8.l, v1.l, v0.h, vcc_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_execz .LBB10_19
-; GFX11-TRUE16-NEXT:    s_branch .LBB10_24
-; GFX11-TRUE16-NEXT:  .LBB10_18:
+; GFX11-TRUE16-NEXT:    s_branch .LBB10_21
+; GFX11-TRUE16-NEXT:  .LBB10_20:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr8
-; GFX11-TRUE16-NEXT:  .LBB10_19: ; %frem.compute19
+; GFX11-TRUE16-NEXT:  .LBB10_21: ; %Flow127
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_27
+; GFX11-TRUE16-NEXT:  ; %bb.22: ; %frem.compute19
 ; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v8, v10
 ; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v12, v9
 ; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v11, v10
@@ -9200,12 +9668,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v12
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_div_fixup_f32 v11, v11, v9, 1.0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_23
-; GFX11-TRUE16-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader
+; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_26
+; GFX11-TRUE16-NEXT:  ; %bb.23: ; %frem.loop_body27.preheader
 ; GFX11-TRUE16-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 11
-; GFX11-TRUE16-NEXT:  .LBB10_21: ; %frem.loop_body27
+; GFX11-TRUE16-NEXT:  .LBB10_24: ; %frem.loop_body27
 ; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v13, v10
@@ -9221,11 +9689,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v10, v10, v12, vcc_lo
 ; GFX11-TRUE16-NEXT:    v_ldexp_f32 v10, v10, 11
-; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_21
-; GFX11-TRUE16-NEXT:  ; %bb.22: ; %Flow125
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_24
+; GFX11-TRUE16-NEXT:  ; %bb.25: ; %Flow125
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v12, s2
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, v13
-; GFX11-TRUE16-NEXT:  .LBB10_23: ; %frem.loop_exit28
+; GFX11-TRUE16-NEXT:  .LBB10_26: ; %frem.loop_exit28
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v12, -10, v12
 ; GFX11-TRUE16-NEXT:    v_ldexp_f32 v10, v10, v12
@@ -9243,7 +9711,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v8.l, v8
 ; GFX11-TRUE16-NEXT:    v_bfi_b32 v8, 0x7fff, v8, v9
-; GFX11-TRUE16-NEXT:  .LBB10_24:
+; GFX11-TRUE16-NEXT:  .LBB10_27:
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v9, 16, v1
 ; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v10, 16, v3
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -9251,17 +9719,24 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v12, |v10.l|
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v13, v12
-; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB10_26
-; GFX11-TRUE16-NEXT:  ; %bb.25: ; %frem.else
+; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB10_29
+; GFX11-TRUE16-NEXT:  ; %bb.28: ; %frem.else
 ; GFX11-TRUE16-NEXT:    v_and_b16 v0.h, 0x8000, v9.l
 ; GFX11-TRUE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v13, v12
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, 0
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_cndmask_b16 v11.l, v9.l, v0.h, vcc_lo
-; GFX11-TRUE16-NEXT:    s_cbranch_execz .LBB10_27
-; GFX11-TRUE16-NEXT:    s_branch .LBB10_32
-; GFX11-TRUE16-NEXT:  .LBB10_26:
+; GFX11-TRUE16-NEXT:    s_branch .LBB10_30
+; GFX11-TRUE16-NEXT:  .LBB10_29:
+; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr11
-; GFX11-TRUE16-NEXT:  .LBB10_27: ; %frem.compute
+; GFX11-TRUE16-NEXT:  .LBB10_30: ; %Flow123
+; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-TRUE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-TRUE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_36
+; GFX11-TRUE16-NEXT:  ; %bb.31: ; %frem.compute
 ; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v11, v13
 ; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v15, v12
 ; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v14, v13
@@ -9296,12 +9771,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v15
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-TRUE16-NEXT:    v_div_fixup_f32 v14, v14, v12, 1.0
-; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_31
-; GFX11-TRUE16-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_35
+; GFX11-TRUE16-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; GFX11-TRUE16-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 11
-; GFX11-TRUE16-NEXT:  .LBB10_29: ; %frem.loop_body
+; GFX11-TRUE16-NEXT:  .LBB10_33: ; %frem.loop_body
 ; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v16, v13
@@ -9317,11 +9792,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v13, v13, v15, vcc_lo
 ; GFX11-TRUE16-NEXT:    v_ldexp_f32 v13, v13, 11
-; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_29
-; GFX11-TRUE16-NEXT:  ; %bb.30: ; %Flow
+; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_33
+; GFX11-TRUE16-NEXT:  ; %bb.34: ; %Flow
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v15, s2
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v13, v16
-; GFX11-TRUE16-NEXT:  .LBB10_31: ; %frem.loop_exit
+; GFX11-TRUE16-NEXT:  .LBB10_35: ; %frem.loop_exit
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v15, -10, v15
 ; GFX11-TRUE16-NEXT:    v_ldexp_f32 v13, v13, v15
@@ -9339,7 +9814,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v11.l, v11
 ; GFX11-TRUE16-NEXT:    v_bfi_b32 v11, 0x7fff, v11, v12
-; GFX11-TRUE16-NEXT:  .LBB10_32: ; %Flow124
+; GFX11-TRUE16-NEXT:  .LBB10_36: ; %Flow124
 ; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v2.l
 ; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v0.l|
 ; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, 0
@@ -9381,13 +9856,20 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:  ; %bb.1: ; %frem.else86
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0x8000, v0
 ; GFX11-FAKE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v6, v5
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_execz .LBB10_3
-; GFX11-FAKE16-NEXT:    s_branch .LBB10_8
+; GFX11-FAKE16-NEXT:    s_branch .LBB10_3
 ; GFX11-FAKE16-NEXT:  .LBB10_2:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr4
-; GFX11-FAKE16-NEXT:  .LBB10_3: ; %frem.compute85
+; GFX11-FAKE16-NEXT:  .LBB10_3: ; %Flow135
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_9
+; GFX11-FAKE16-NEXT:  ; %bb.4: ; %frem.compute85
 ; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v4, v6
 ; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v8, v5
 ; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v7, v6
@@ -9422,12 +9904,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v8
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_7
-; GFX11-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader
+; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_8
+; GFX11-FAKE16-NEXT:  ; %bb.5: ; %frem.loop_body93.preheader
 ; GFX11-FAKE16-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 11
-; GFX11-FAKE16-NEXT:  .LBB10_5: ; %frem.loop_body93
+; GFX11-FAKE16-NEXT:  .LBB10_6: ; %frem.loop_body93
 ; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v9, v6
@@ -9443,11 +9925,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc_lo
 ; GFX11-FAKE16-NEXT:    v_ldexp_f32 v6, v6, 11
-; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_5
-; GFX11-FAKE16-NEXT:  ; %bb.6: ; %Flow133
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_6
+; GFX11-FAKE16-NEXT:  ; %bb.7: ; %Flow133
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, s2
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v9
-; GFX11-FAKE16-NEXT:  .LBB10_7: ; %frem.loop_exit94
+; GFX11-FAKE16-NEXT:  .LBB10_8: ; %frem.loop_exit94
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v8, -10, v8
 ; GFX11-FAKE16-NEXT:    v_ldexp_f32 v6, v6, v8
@@ -9464,7 +9946,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v4, v4
 ; GFX11-FAKE16-NEXT:    v_bfi_b32 v4, 0x7fff, v4, v0
-; GFX11-FAKE16-NEXT:  .LBB10_8:
+; GFX11-FAKE16-NEXT:  .LBB10_9:
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v0
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v6, 16, v2
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -9472,17 +9954,24 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v8, |v6|
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v9, v8
-; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB10_10
-; GFX11-FAKE16-NEXT:  ; %bb.9: ; %frem.else53
+; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB10_11
+; GFX11-FAKE16-NEXT:  ; %bb.10: ; %frem.else53
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v7, 0x8000, v5
 ; GFX11-FAKE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v9, v8
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v7, v5, v7, vcc_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_execz .LBB10_11
-; GFX11-FAKE16-NEXT:    s_branch .LBB10_16
-; GFX11-FAKE16-NEXT:  .LBB10_10:
+; GFX11-FAKE16-NEXT:    s_branch .LBB10_12
+; GFX11-FAKE16-NEXT:  .LBB10_11:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr7
-; GFX11-FAKE16-NEXT:  .LBB10_11: ; %frem.compute52
+; GFX11-FAKE16-NEXT:  .LBB10_12: ; %Flow131
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_18
+; GFX11-FAKE16-NEXT:  ; %bb.13: ; %frem.compute52
 ; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v7, v9
 ; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v11, v8
 ; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v10, v9
@@ -9517,12 +10006,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v11
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_div_fixup_f32 v10, v10, v8, 1.0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_15
-; GFX11-FAKE16-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader
+; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_17
+; GFX11-FAKE16-NEXT:  ; %bb.14: ; %frem.loop_body60.preheader
 ; GFX11-FAKE16-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 11
-; GFX11-FAKE16-NEXT:  .LBB10_13: ; %frem.loop_body60
+; GFX11-FAKE16-NEXT:  .LBB10_15: ; %frem.loop_body60
 ; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v12, v9
@@ -9538,11 +10027,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v9, v9, v11, vcc_lo
 ; GFX11-FAKE16-NEXT:    v_ldexp_f32 v9, v9, 11
-; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_13
-; GFX11-FAKE16-NEXT:  ; %bb.14: ; %Flow129
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_15
+; GFX11-FAKE16-NEXT:  ; %bb.16: ; %Flow129
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, s2
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v9, v12
-; GFX11-FAKE16-NEXT:  .LBB10_15: ; %frem.loop_exit61
+; GFX11-FAKE16-NEXT:  .LBB10_17: ; %frem.loop_exit61
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v11, -10, v11
 ; GFX11-FAKE16-NEXT:    v_ldexp_f32 v9, v9, v11
@@ -9559,22 +10048,29 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v7, v7
 ; GFX11-FAKE16-NEXT:    v_bfi_b32 v7, 0x7fff, v7, v5
-; GFX11-FAKE16-NEXT:  .LBB10_16:
+; GFX11-FAKE16-NEXT:  .LBB10_18:
 ; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v10, |v1|
 ; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v9, |v3|
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v10, v9
-; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB10_18
-; GFX11-FAKE16-NEXT:  ; %bb.17: ; %frem.else20
+; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB10_20
+; GFX11-FAKE16-NEXT:  ; %bb.19: ; %frem.else20
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v8, 0x8000, v1
 ; GFX11-FAKE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v10, v9
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v8, v1, v8, vcc_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_execz .LBB10_19
-; GFX11-FAKE16-NEXT:    s_branch .LBB10_24
-; GFX11-FAKE16-NEXT:  .LBB10_18:
+; GFX11-FAKE16-NEXT:    s_branch .LBB10_21
+; GFX11-FAKE16-NEXT:  .LBB10_20:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr8
-; GFX11-FAKE16-NEXT:  .LBB10_19: ; %frem.compute19
+; GFX11-FAKE16-NEXT:  .LBB10_21: ; %Flow127
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_27
+; GFX11-FAKE16-NEXT:  ; %bb.22: ; %frem.compute19
 ; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v8, v10
 ; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v12, v9
 ; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v11, v10
@@ -9609,12 +10105,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v12
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_div_fixup_f32 v11, v11, v9, 1.0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_23
-; GFX11-FAKE16-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader
+; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_26
+; GFX11-FAKE16-NEXT:  ; %bb.23: ; %frem.loop_body27.preheader
 ; GFX11-FAKE16-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 11
-; GFX11-FAKE16-NEXT:  .LBB10_21: ; %frem.loop_body27
+; GFX11-FAKE16-NEXT:  .LBB10_24: ; %frem.loop_body27
 ; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v13, v10
@@ -9630,11 +10126,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v10, v10, v12, vcc_lo
 ; GFX11-FAKE16-NEXT:    v_ldexp_f32 v10, v10, 11
-; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_21
-; GFX11-FAKE16-NEXT:  ; %bb.22: ; %Flow125
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_24
+; GFX11-FAKE16-NEXT:  ; %bb.25: ; %Flow125
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v12, s2
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, v13
-; GFX11-FAKE16-NEXT:  .LBB10_23: ; %frem.loop_exit28
+; GFX11-FAKE16-NEXT:  .LBB10_26: ; %frem.loop_exit28
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v12, -10, v12
 ; GFX11-FAKE16-NEXT:    v_ldexp_f32 v10, v10, v12
@@ -9651,7 +10147,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v8, v8
 ; GFX11-FAKE16-NEXT:    v_bfi_b32 v8, 0x7fff, v8, v1
-; GFX11-FAKE16-NEXT:  .LBB10_24:
+; GFX11-FAKE16-NEXT:  .LBB10_27:
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v9, 16, v1
 ; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v10, 16, v3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -9659,17 +10155,24 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v12, |v10|
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v13, v12
-; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB10_26
-; GFX11-FAKE16-NEXT:  ; %bb.25: ; %frem.else
+; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB10_29
+; GFX11-FAKE16-NEXT:  ; %bb.28: ; %frem.else
 ; GFX11-FAKE16-NEXT:    v_and_b32_e32 v11, 0x8000, v9
 ; GFX11-FAKE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v13, v12
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, 0
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v11, v9, v11, vcc_lo
-; GFX11-FAKE16-NEXT:    s_cbranch_execz .LBB10_27
-; GFX11-FAKE16-NEXT:    s_branch .LBB10_32
-; GFX11-FAKE16-NEXT:  .LBB10_26:
+; GFX11-FAKE16-NEXT:    s_branch .LBB10_30
+; GFX11-FAKE16-NEXT:  .LBB10_29:
+; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1
 ; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr11
-; GFX11-FAKE16-NEXT:  .LBB10_27: ; %frem.compute
+; GFX11-FAKE16-NEXT:  .LBB10_30: ; %Flow123
+; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-FAKE16-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-FAKE16-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_36
+; GFX11-FAKE16-NEXT:  ; %bb.31: ; %frem.compute
 ; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v11, v13
 ; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v15, v12
 ; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v14, v13
@@ -9704,12 +10207,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v15
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-FAKE16-NEXT:    v_div_fixup_f32 v14, v14, v12, 1.0
-; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_31
-; GFX11-FAKE16-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_35
+; GFX11-FAKE16-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; GFX11-FAKE16-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 11
-; GFX11-FAKE16-NEXT:  .LBB10_29: ; %frem.loop_body
+; GFX11-FAKE16-NEXT:  .LBB10_33: ; %frem.loop_body
 ; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v16, v13
@@ -9725,11 +10228,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v13, v13, v15, vcc_lo
 ; GFX11-FAKE16-NEXT:    v_ldexp_f32 v13, v13, 11
-; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_29
-; GFX11-FAKE16-NEXT:  ; %bb.30: ; %Flow
+; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_33
+; GFX11-FAKE16-NEXT:  ; %bb.34: ; %Flow
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v15, s2
 ; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v13, v16
-; GFX11-FAKE16-NEXT:  .LBB10_31: ; %frem.loop_exit
+; GFX11-FAKE16-NEXT:  .LBB10_35: ; %frem.loop_exit
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v15, -10, v15
 ; GFX11-FAKE16-NEXT:    v_ldexp_f32 v13, v13, v15
@@ -9746,7 +10249,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v11, v11
 ; GFX11-FAKE16-NEXT:    v_bfi_b32 v11, 0x7fff, v11, v9
-; GFX11-FAKE16-NEXT:  .LBB10_32: ; %Flow124
+; GFX11-FAKE16-NEXT:  .LBB10_36: ; %Flow124
 ; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v2
 ; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v0|
 ; GFX11-FAKE16-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo
@@ -9800,11 +10303,18 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    s_cselect_b32 s9, -1, 0
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v0.l, s5, v0.l, s9
-; GFX1150-TRUE16-NEXT:    s_cbranch_execz .LBB10_3
-; GFX1150-TRUE16-NEXT:    s_branch .LBB10_8
+; GFX1150-TRUE16-NEXT:    s_mov_b32 s9, 0
+; GFX1150-TRUE16-NEXT:    s_branch .LBB10_3
 ; GFX1150-TRUE16-NEXT:  .LBB10_2:
+; GFX1150-TRUE16-NEXT:    s_mov_b32 s9, -1
 ; GFX1150-TRUE16-NEXT:    ; implicit-def: $vgpr0
-; GFX1150-TRUE16-NEXT:  .LBB10_3: ; %frem.compute85
+; GFX1150-TRUE16-NEXT:  .LBB10_3: ; %Flow135
+; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-TRUE16-NEXT:    s_and_b32 s9, s9, exec_lo
+; GFX1150-TRUE16-NEXT:    s_cselect_b32 s9, 1, 0
+; GFX1150-TRUE16-NEXT:    s_cmp_lg_u32 s9, 1
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_9
+; GFX1150-TRUE16-NEXT:  ; %bb.4: ; %frem.compute85
 ; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s6
 ; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v0, s8
 ; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s8
@@ -9838,12 +10348,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v7
 ; GFX1150-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v4
 ; GFX1150-TRUE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.0
-; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_7
-; GFX1150-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader
+; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_8
+; GFX1150-TRUE16-NEXT:  ; %bb.5: ; %frem.loop_body93.preheader
 ; GFX1150-TRUE16-NEXT:    s_sub_i32 s6, s8, s6
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    s_add_i32 s6, s6, 11
-; GFX1150-TRUE16-NEXT:  .LBB10_5: ; %frem.loop_body93
+; GFX1150-TRUE16-NEXT:  .LBB10_6: ; %frem.loop_body93
 ; GFX1150-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v5, v2
@@ -9861,11 +10371,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v2, v2, 11
-; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_5
-; GFX1150-TRUE16-NEXT:  ; %bb.6: ; %Flow133
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_6
+; GFX1150-TRUE16-NEXT:  ; %bb.7: ; %Flow133
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v4, s6
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v2, v5
-; GFX1150-TRUE16-NEXT:  .LBB10_7: ; %frem.loop_exit94
+; GFX1150-TRUE16-NEXT:  .LBB10_8: ; %frem.loop_exit94
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v4, -10, v4
 ; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v2, v2, v4
@@ -9885,7 +10395,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v0
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, v1
-; GFX1150-TRUE16-NEXT:  .LBB10_8:
+; GFX1150-TRUE16-NEXT:  .LBB10_9:
 ; GFX1150-TRUE16-NEXT:    s_lshr_b32 s8, s5, 16
 ; GFX1150-TRUE16-NEXT:    s_lshr_b32 s6, s4, 16
 ; GFX1150-TRUE16-NEXT:    s_and_b32 s5, s8, 0x7fff
@@ -9894,18 +10404,25 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s9, s9
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)
 ; GFX1150-TRUE16-NEXT:    s_cmp_ngt_f32 s10, s9
-; GFX1150-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_10
-; GFX1150-TRUE16-NEXT:  ; %bb.9: ; %frem.else53
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_11
+; GFX1150-TRUE16-NEXT:  ; %bb.10: ; %frem.else53
 ; GFX1150-TRUE16-NEXT:    s_cmp_eq_f32 s10, s9
 ; GFX1150-TRUE16-NEXT:    v_and_b16 v0.h, 0x8000, s8
 ; GFX1150-TRUE16-NEXT:    s_cselect_b32 s11, -1, 0
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v1.l, s8, v0.h, s11
-; GFX1150-TRUE16-NEXT:    s_cbranch_execz .LBB10_11
-; GFX1150-TRUE16-NEXT:    s_branch .LBB10_16
-; GFX1150-TRUE16-NEXT:  .LBB10_10:
+; GFX1150-TRUE16-NEXT:    s_mov_b32 s11, 0
+; GFX1150-TRUE16-NEXT:    s_branch .LBB10_12
+; GFX1150-TRUE16-NEXT:  .LBB10_11:
+; GFX1150-TRUE16-NEXT:    s_mov_b32 s11, -1
 ; GFX1150-TRUE16-NEXT:    ; implicit-def: $vgpr1
-; GFX1150-TRUE16-NEXT:  .LBB10_11: ; %frem.compute52
+; GFX1150-TRUE16-NEXT:  .LBB10_12: ; %Flow131
+; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-TRUE16-NEXT:    s_and_b32 s11, s11, exec_lo
+; GFX1150-TRUE16-NEXT:    s_cselect_b32 s11, 1, 0
+; GFX1150-TRUE16-NEXT:    s_cmp_lg_u32 s11, 1
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_18
+; GFX1150-TRUE16-NEXT:  ; %bb.13: ; %frem.compute52
 ; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s9
 ; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s10
 ; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s10
@@ -9939,12 +10456,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v8
 ; GFX1150-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v5
 ; GFX1150-TRUE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.0
-; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_15
-; GFX1150-TRUE16-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader
+; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_17
+; GFX1150-TRUE16-NEXT:  ; %bb.14: ; %frem.loop_body60.preheader
 ; GFX1150-TRUE16-NEXT:    s_sub_i32 s9, s10, s9
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    s_add_i32 s9, s9, 11
-; GFX1150-TRUE16-NEXT:  .LBB10_13: ; %frem.loop_body60
+; GFX1150-TRUE16-NEXT:  .LBB10_15: ; %frem.loop_body60
 ; GFX1150-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v6, v3
@@ -9962,11 +10479,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v3, v3, 11
-; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_13
-; GFX1150-TRUE16-NEXT:  ; %bb.14: ; %Flow129
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_15
+; GFX1150-TRUE16-NEXT:  ; %bb.16: ; %Flow129
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v5, s9
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v3, v6
-; GFX1150-TRUE16-NEXT:  .LBB10_15: ; %frem.loop_exit61
+; GFX1150-TRUE16-NEXT:  .LBB10_17: ; %frem.loop_exit61
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v5, -10, v5
 ; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v3, v3, v5
@@ -9986,25 +10503,32 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v1.l, v1
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, v2
-; GFX1150-TRUE16-NEXT:  .LBB10_16:
+; GFX1150-TRUE16-NEXT:  .LBB10_18:
 ; GFX1150-TRUE16-NEXT:    s_and_b32 s8, s7, 0x7fff
 ; GFX1150-TRUE16-NEXT:    s_and_b32 s9, s2, 0x7fff
 ; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s10, s8
 ; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s9, s9
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)
 ; GFX1150-TRUE16-NEXT:    s_cmp_ngt_f32 s10, s9
-; GFX1150-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_18
-; GFX1150-TRUE16-NEXT:  ; %bb.17: ; %frem.else20
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_20
+; GFX1150-TRUE16-NEXT:  ; %bb.19: ; %frem.else20
 ; GFX1150-TRUE16-NEXT:    s_cmp_eq_f32 s10, s9
 ; GFX1150-TRUE16-NEXT:    v_and_b16 v0.h, 0x8000, s7
 ; GFX1150-TRUE16-NEXT:    s_cselect_b32 s11, -1, 0
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v2.l, s7, v0.h, s11
-; GFX1150-TRUE16-NEXT:    s_cbranch_execz .LBB10_19
-; GFX1150-TRUE16-NEXT:    s_branch .LBB10_24
-; GFX1150-TRUE16-NEXT:  .LBB10_18:
+; GFX1150-TRUE16-NEXT:    s_mov_b32 s11, 0
+; GFX1150-TRUE16-NEXT:    s_branch .LBB10_21
+; GFX1150-TRUE16-NEXT:  .LBB10_20:
+; GFX1150-TRUE16-NEXT:    s_mov_b32 s11, -1
 ; GFX1150-TRUE16-NEXT:    ; implicit-def: $vgpr2
-; GFX1150-TRUE16-NEXT:  .LBB10_19: ; %frem.compute19
+; GFX1150-TRUE16-NEXT:  .LBB10_21: ; %Flow127
+; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-TRUE16-NEXT:    s_and_b32 s11, s11, exec_lo
+; GFX1150-TRUE16-NEXT:    s_cselect_b32 s11, 1, 0
+; GFX1150-TRUE16-NEXT:    s_cmp_lg_u32 s11, 1
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_27
+; GFX1150-TRUE16-NEXT:  ; %bb.22: ; %frem.compute19
 ; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v3, s9
 ; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s10
 ; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s10
@@ -10038,12 +10562,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v9
 ; GFX1150-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6
 ; GFX1150-TRUE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_23
-; GFX1150-TRUE16-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader
+; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_26
+; GFX1150-TRUE16-NEXT:  ; %bb.23: ; %frem.loop_body27.preheader
 ; GFX1150-TRUE16-NEXT:    s_sub_i32 s9, s10, s9
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    s_add_i32 s9, s9, 11
-; GFX1150-TRUE16-NEXT:  .LBB10_21: ; %frem.loop_body27
+; GFX1150-TRUE16-NEXT:  .LBB10_24: ; %frem.loop_body27
 ; GFX1150-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v7, v4
@@ -10061,11 +10585,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v4, v4, 11
-; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_21
-; GFX1150-TRUE16-NEXT:  ; %bb.22: ; %Flow125
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_24
+; GFX1150-TRUE16-NEXT:  ; %bb.25: ; %Flow125
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v6, s9
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v4, v7
-; GFX1150-TRUE16-NEXT:  .LBB10_23: ; %frem.loop_exit28
+; GFX1150-TRUE16-NEXT:  .LBB10_26: ; %frem.loop_exit28
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6
 ; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v4, v4, v6
@@ -10085,7 +10609,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v2.l, v2
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v3
-; GFX1150-TRUE16-NEXT:  .LBB10_24:
+; GFX1150-TRUE16-NEXT:  .LBB10_27:
 ; GFX1150-TRUE16-NEXT:    s_lshr_b32 s10, s7, 16
 ; GFX1150-TRUE16-NEXT:    s_lshr_b32 s9, s2, 16
 ; GFX1150-TRUE16-NEXT:    s_and_b32 s7, s10, 0x7fff
@@ -10094,18 +10618,25 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s11, s11
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)
 ; GFX1150-TRUE16-NEXT:    s_cmp_ngt_f32 s12, s11
-; GFX1150-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_26
-; GFX1150-TRUE16-NEXT:  ; %bb.25: ; %frem.else
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_29
+; GFX1150-TRUE16-NEXT:  ; %bb.28: ; %frem.else
 ; GFX1150-TRUE16-NEXT:    s_cmp_eq_f32 s12, s11
 ; GFX1150-TRUE16-NEXT:    v_and_b16 v0.h, 0x8000, s10
 ; GFX1150-TRUE16-NEXT:    s_cselect_b32 s13, -1, 0
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v3.l, s10, v0.h, s13
-; GFX1150-TRUE16-NEXT:    s_cbranch_execz .LBB10_27
-; GFX1150-TRUE16-NEXT:    s_branch .LBB10_32
-; GFX1150-TRUE16-NEXT:  .LBB10_26:
+; GFX1150-TRUE16-NEXT:    s_mov_b32 s13, 0
+; GFX1150-TRUE16-NEXT:    s_branch .LBB10_30
+; GFX1150-TRUE16-NEXT:  .LBB10_29:
+; GFX1150-TRUE16-NEXT:    s_mov_b32 s13, -1
 ; GFX1150-TRUE16-NEXT:    ; implicit-def: $vgpr3
-; GFX1150-TRUE16-NEXT:  .LBB10_27: ; %frem.compute
+; GFX1150-TRUE16-NEXT:  .LBB10_30: ; %Flow123
+; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-TRUE16-NEXT:    s_and_b32 s13, s13, exec_lo
+; GFX1150-TRUE16-NEXT:    s_cselect_b32 s13, 1, 0
+; GFX1150-TRUE16-NEXT:    s_cmp_lg_u32 s13, 1
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_36
+; GFX1150-TRUE16-NEXT:  ; %bb.31: ; %frem.compute
 ; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v4, s11
 ; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v3, s12
 ; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v6, s12
@@ -10139,12 +10670,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_div_fmas_f32 v6, v6, v9, v10
 ; GFX1150-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v7
 ; GFX1150-TRUE16-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.0
-; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_31
-; GFX1150-TRUE16-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_35
+; GFX1150-TRUE16-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; GFX1150-TRUE16-NEXT:    s_sub_i32 s11, s12, s11
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    s_add_i32 s11, s11, 11
-; GFX1150-TRUE16-NEXT:  .LBB10_29: ; %frem.loop_body
+; GFX1150-TRUE16-NEXT:  .LBB10_33: ; %frem.loop_body
 ; GFX1150-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v8, v5
@@ -10162,11 +10693,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v5, v5, 11
-; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_29
-; GFX1150-TRUE16-NEXT:  ; %bb.30: ; %Flow
+; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_33
+; GFX1150-TRUE16-NEXT:  ; %bb.34: ; %Flow
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v7, s11
 ; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v5, v8
-; GFX1150-TRUE16-NEXT:  .LBB10_31: ; %frem.loop_exit
+; GFX1150-TRUE16-NEXT:  .LBB10_35: ; %frem.loop_exit
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v7, -10, v7
 ; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v5, v5, v7
@@ -10186,7 +10717,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v3.l, v3
 ; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-TRUE16-NEXT:    v_bfi_b32 v3, 0x7fff, v3, v4
-; GFX1150-TRUE16-NEXT:  .LBB10_32: ; %Flow124
+; GFX1150-TRUE16-NEXT:  .LBB10_36: ; %Flow124
 ; GFX1150-TRUE16-NEXT:    s_cmp_lg_f16 s4, 0
 ; GFX1150-TRUE16-NEXT:    s_cselect_b32 s4, -1, 0
 ; GFX1150-TRUE16-NEXT:    s_cmp_nge_f16 s3, 0x7c00
@@ -10246,14 +10777,21 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    s_and_b32 s9, 0x8000, s5
 ; GFX1150-FAKE16-NEXT:    s_cmp_eq_f32 s8, s6
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v0, s9
+; GFX1150-FAKE16-NEXT:    s_mov_b32 s9, 0
 ; GFX1150-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v0, s5, v0, vcc_lo
-; GFX1150-FAKE16-NEXT:    s_cbranch_execz .LBB10_3
-; GFX1150-FAKE16-NEXT:    s_branch .LBB10_8
+; GFX1150-FAKE16-NEXT:    s_branch .LBB10_3
 ; GFX1150-FAKE16-NEXT:  .LBB10_2:
+; GFX1150-FAKE16-NEXT:    s_mov_b32 s9, -1
 ; GFX1150-FAKE16-NEXT:    ; implicit-def: $vgpr0
-; GFX1150-FAKE16-NEXT:  .LBB10_3: ; %frem.compute85
+; GFX1150-FAKE16-NEXT:  .LBB10_3: ; %Flow135
+; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-FAKE16-NEXT:    s_and_b32 s9, s9, exec_lo
+; GFX1150-FAKE16-NEXT:    s_cselect_b32 s9, 1, 0
+; GFX1150-FAKE16-NEXT:    s_cmp_lg_u32 s9, 1
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_9
+; GFX1150-FAKE16-NEXT:  ; %bb.4: ; %frem.compute85
 ; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s6
 ; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v0, s8
 ; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s8
@@ -10287,12 +10825,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v7
 ; GFX1150-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v4
 ; GFX1150-FAKE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.0
-; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_7
-; GFX1150-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader
+; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_8
+; GFX1150-FAKE16-NEXT:  ; %bb.5: ; %frem.loop_body93.preheader
 ; GFX1150-FAKE16-NEXT:    s_sub_i32 s6, s8, s6
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-FAKE16-NEXT:    s_add_i32 s6, s6, 11
-; GFX1150-FAKE16-NEXT:  .LBB10_5: ; %frem.loop_body93
+; GFX1150-FAKE16-NEXT:  .LBB10_6: ; %frem.loop_body93
 ; GFX1150-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v5, v2
@@ -10310,11 +10848,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v2, v2, 11
-; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_5
-; GFX1150-FAKE16-NEXT:  ; %bb.6: ; %Flow133
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_6
+; GFX1150-FAKE16-NEXT:  ; %bb.7: ; %Flow133
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v4, s6
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v2, v5
-; GFX1150-FAKE16-NEXT:  .LBB10_7: ; %frem.loop_exit94
+; GFX1150-FAKE16-NEXT:  .LBB10_8: ; %frem.loop_exit94
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v4, -10, v4
 ; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v2, v2, v4
@@ -10333,7 +10871,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v0, v0
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, s5
-; GFX1150-FAKE16-NEXT:  .LBB10_8:
+; GFX1150-FAKE16-NEXT:  .LBB10_9:
 ; GFX1150-FAKE16-NEXT:    s_lshr_b32 s8, s5, 16
 ; GFX1150-FAKE16-NEXT:    s_lshr_b32 s6, s4, 16
 ; GFX1150-FAKE16-NEXT:    s_and_b32 s5, s8, 0x7fff
@@ -10342,19 +10880,26 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s9, s9
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)
 ; GFX1150-FAKE16-NEXT:    s_cmp_ngt_f32 s10, s9
-; GFX1150-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_10
-; GFX1150-FAKE16-NEXT:  ; %bb.9: ; %frem.else53
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_11
+; GFX1150-FAKE16-NEXT:  ; %bb.10: ; %frem.else53
 ; GFX1150-FAKE16-NEXT:    s_and_b32 s11, 0x8000, s8
 ; GFX1150-FAKE16-NEXT:    s_cmp_eq_f32 s10, s9
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v1, s11
+; GFX1150-FAKE16-NEXT:    s_mov_b32 s11, 0
 ; GFX1150-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v1, s8, v1, vcc_lo
-; GFX1150-FAKE16-NEXT:    s_cbranch_execz .LBB10_11
-; GFX1150-FAKE16-NEXT:    s_branch .LBB10_16
-; GFX1150-FAKE16-NEXT:  .LBB10_10:
+; GFX1150-FAKE16-NEXT:    s_branch .LBB10_12
+; GFX1150-FAKE16-NEXT:  .LBB10_11:
+; GFX1150-FAKE16-NEXT:    s_mov_b32 s11, -1
 ; GFX1150-FAKE16-NEXT:    ; implicit-def: $vgpr1
-; GFX1150-FAKE16-NEXT:  .LBB10_11: ; %frem.compute52
+; GFX1150-FAKE16-NEXT:  .LBB10_12: ; %Flow131
+; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-FAKE16-NEXT:    s_and_b32 s11, s11, exec_lo
+; GFX1150-FAKE16-NEXT:    s_cselect_b32 s11, 1, 0
+; GFX1150-FAKE16-NEXT:    s_cmp_lg_u32 s11, 1
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_18
+; GFX1150-FAKE16-NEXT:  ; %bb.13: ; %frem.compute52
 ; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s9
 ; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s10
 ; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s10
@@ -10388,12 +10933,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v8
 ; GFX1150-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v5
 ; GFX1150-FAKE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.0
-; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_15
-; GFX1150-FAKE16-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader
+; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_17
+; GFX1150-FAKE16-NEXT:  ; %bb.14: ; %frem.loop_body60.preheader
 ; GFX1150-FAKE16-NEXT:    s_sub_i32 s9, s10, s9
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-FAKE16-NEXT:    s_add_i32 s9, s9, 11
-; GFX1150-FAKE16-NEXT:  .LBB10_13: ; %frem.loop_body60
+; GFX1150-FAKE16-NEXT:  .LBB10_15: ; %frem.loop_body60
 ; GFX1150-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v6, v3
@@ -10411,11 +10956,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v3, v3, 11
-; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_13
-; GFX1150-FAKE16-NEXT:  ; %bb.14: ; %Flow129
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_15
+; GFX1150-FAKE16-NEXT:  ; %bb.16: ; %Flow129
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v5, s9
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v3, v6
-; GFX1150-FAKE16-NEXT:  .LBB10_15: ; %frem.loop_exit61
+; GFX1150-FAKE16-NEXT:  .LBB10_17: ; %frem.loop_exit61
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v5, -10, v5
 ; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v3, v3, v5
@@ -10434,26 +10979,33 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v1, v1
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, s8
-; GFX1150-FAKE16-NEXT:  .LBB10_16:
+; GFX1150-FAKE16-NEXT:  .LBB10_18:
 ; GFX1150-FAKE16-NEXT:    s_and_b32 s8, s7, 0x7fff
 ; GFX1150-FAKE16-NEXT:    s_and_b32 s9, s2, 0x7fff
 ; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s10, s8
 ; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s9, s9
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)
 ; GFX1150-FAKE16-NEXT:    s_cmp_ngt_f32 s10, s9
-; GFX1150-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_18
-; GFX1150-FAKE16-NEXT:  ; %bb.17: ; %frem.else20
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_20
+; GFX1150-FAKE16-NEXT:  ; %bb.19: ; %frem.else20
 ; GFX1150-FAKE16-NEXT:    s_and_b32 s11, 0x8000, s7
 ; GFX1150-FAKE16-NEXT:    s_cmp_eq_f32 s10, s9
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v2, s11
+; GFX1150-FAKE16-NEXT:    s_mov_b32 s11, 0
 ; GFX1150-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v2, s7, v2, vcc_lo
-; GFX1150-FAKE16-NEXT:    s_cbranch_execz .LBB10_19
-; GFX1150-FAKE16-NEXT:    s_branch .LBB10_24
-; GFX1150-FAKE16-NEXT:  .LBB10_18:
+; GFX1150-FAKE16-NEXT:    s_branch .LBB10_21
+; GFX1150-FAKE16-NEXT:  .LBB10_20:
+; GFX1150-FAKE16-NEXT:    s_mov_b32 s11, -1
 ; GFX1150-FAKE16-NEXT:    ; implicit-def: $vgpr2
-; GFX1150-FAKE16-NEXT:  .LBB10_19: ; %frem.compute19
+; GFX1150-FAKE16-NEXT:  .LBB10_21: ; %Flow127
+; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-FAKE16-NEXT:    s_and_b32 s11, s11, exec_lo
+; GFX1150-FAKE16-NEXT:    s_cselect_b32 s11, 1, 0
+; GFX1150-FAKE16-NEXT:    s_cmp_lg_u32 s11, 1
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_27
+; GFX1150-FAKE16-NEXT:  ; %bb.22: ; %frem.compute19
 ; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v3, s9
 ; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s10
 ; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s10
@@ -10487,12 +11039,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v9
 ; GFX1150-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6
 ; GFX1150-FAKE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_23
-; GFX1150-FAKE16-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader
+; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_26
+; GFX1150-FAKE16-NEXT:  ; %bb.23: ; %frem.loop_body27.preheader
 ; GFX1150-FAKE16-NEXT:    s_sub_i32 s9, s10, s9
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-FAKE16-NEXT:    s_add_i32 s9, s9, 11
-; GFX1150-FAKE16-NEXT:  .LBB10_21: ; %frem.loop_body27
+; GFX1150-FAKE16-NEXT:  .LBB10_24: ; %frem.loop_body27
 ; GFX1150-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v7, v4
@@ -10510,11 +11062,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v4, v4, 11
-; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_21
-; GFX1150-FAKE16-NEXT:  ; %bb.22: ; %Flow125
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_24
+; GFX1150-FAKE16-NEXT:  ; %bb.25: ; %Flow125
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v6, s9
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v4, v7
-; GFX1150-FAKE16-NEXT:  .LBB10_23: ; %frem.loop_exit28
+; GFX1150-FAKE16-NEXT:  .LBB10_26: ; %frem.loop_exit28
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6
 ; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v4, v4, v6
@@ -10533,7 +11085,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, s7
-; GFX1150-FAKE16-NEXT:  .LBB10_24:
+; GFX1150-FAKE16-NEXT:  .LBB10_27:
 ; GFX1150-FAKE16-NEXT:    s_lshr_b32 s10, s7, 16
 ; GFX1150-FAKE16-NEXT:    s_lshr_b32 s9, s2, 16
 ; GFX1150-FAKE16-NEXT:    s_and_b32 s7, s10, 0x7fff
@@ -10542,19 +11094,26 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s11, s11
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)
 ; GFX1150-FAKE16-NEXT:    s_cmp_ngt_f32 s12, s11
-; GFX1150-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_26
-; GFX1150-FAKE16-NEXT:  ; %bb.25: ; %frem.else
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_29
+; GFX1150-FAKE16-NEXT:  ; %bb.28: ; %frem.else
 ; GFX1150-FAKE16-NEXT:    s_and_b32 s13, 0x8000, s10
 ; GFX1150-FAKE16-NEXT:    s_cmp_eq_f32 s12, s11
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v3, s13
+; GFX1150-FAKE16-NEXT:    s_mov_b32 s13, 0
 ; GFX1150-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v3, s10, v3, vcc_lo
-; GFX1150-FAKE16-NEXT:    s_cbranch_execz .LBB10_27
-; GFX1150-FAKE16-NEXT:    s_branch .LBB10_32
-; GFX1150-FAKE16-NEXT:  .LBB10_26:
+; GFX1150-FAKE16-NEXT:    s_branch .LBB10_30
+; GFX1150-FAKE16-NEXT:  .LBB10_29:
+; GFX1150-FAKE16-NEXT:    s_mov_b32 s13, -1
 ; GFX1150-FAKE16-NEXT:    ; implicit-def: $vgpr3
-; GFX1150-FAKE16-NEXT:  .LBB10_27: ; %frem.compute
+; GFX1150-FAKE16-NEXT:  .LBB10_30: ; %Flow123
+; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-FAKE16-NEXT:    s_and_b32 s13, s13, exec_lo
+; GFX1150-FAKE16-NEXT:    s_cselect_b32 s13, 1, 0
+; GFX1150-FAKE16-NEXT:    s_cmp_lg_u32 s13, 1
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_36
+; GFX1150-FAKE16-NEXT:  ; %bb.31: ; %frem.compute
 ; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v4, s11
 ; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v3, s12
 ; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v6, s12
@@ -10588,12 +11147,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_div_fmas_f32 v6, v6, v9, v10
 ; GFX1150-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v7
 ; GFX1150-FAKE16-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.0
-; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_31
-; GFX1150-FAKE16-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_35
+; GFX1150-FAKE16-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; GFX1150-FAKE16-NEXT:    s_sub_i32 s11, s12, s11
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-FAKE16-NEXT:    s_add_i32 s11, s11, 11
-; GFX1150-FAKE16-NEXT:  .LBB10_29: ; %frem.loop_body
+; GFX1150-FAKE16-NEXT:  .LBB10_33: ; %frem.loop_body
 ; GFX1150-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v8, v5
@@ -10611,11 +11170,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v5, v5, 11
-; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_29
-; GFX1150-FAKE16-NEXT:  ; %bb.30: ; %Flow
+; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_33
+; GFX1150-FAKE16-NEXT:  ; %bb.34: ; %Flow
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v7, s11
 ; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v5, v8
-; GFX1150-FAKE16-NEXT:  .LBB10_31: ; %frem.loop_exit
+; GFX1150-FAKE16-NEXT:  .LBB10_35: ; %frem.loop_exit
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v7, -10, v7
 ; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v5, v5, v7
@@ -10634,7 +11193,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-FAKE16-NEXT:    v_bfi_b32 v3, 0x7fff, v3, s10
-; GFX1150-FAKE16-NEXT:  .LBB10_32: ; %Flow124
+; GFX1150-FAKE16-NEXT:  .LBB10_36: ; %Flow124
 ; GFX1150-FAKE16-NEXT:    s_cmp_lg_f16 s4, 0
 ; GFX1150-FAKE16-NEXT:    s_cselect_b32 s4, -1, 0
 ; GFX1150-FAKE16-NEXT:    s_cmp_nge_f16 s3, 0x7c00
@@ -10700,11 +11259,19 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    s_cselect_b32 s9, -1, 0
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
 ; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v0.l, s5, v0.l, s9
-; GFX1200-TRUE16-NEXT:    s_cbranch_execz .LBB10_3
-; GFX1200-TRUE16-NEXT:    s_branch .LBB10_8
+; GFX1200-TRUE16-NEXT:    s_mov_b32 s9, 0
+; GFX1200-TRUE16-NEXT:    s_branch .LBB10_3
 ; GFX1200-TRUE16-NEXT:  .LBB10_2:
+; GFX1200-TRUE16-NEXT:    s_mov_b32 s9, -1
 ; GFX1200-TRUE16-NEXT:    ; implicit-def: $vgpr0
-; GFX1200-TRUE16-NEXT:  .LBB10_3: ; %frem.compute85
+; GFX1200-TRUE16-NEXT:  .LBB10_3: ; %Flow135
+; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-TRUE16-NEXT:    s_and_b32 s9, s9, exec_lo
+; GFX1200-TRUE16-NEXT:    s_cselect_b32 s9, 1, 0
+; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-TRUE16-NEXT:    s_cmp_lg_u32 s9, 1
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_9
+; GFX1200-TRUE16-NEXT:  ; %bb.4: ; %frem.compute85
 ; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s6
 ; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v0, s8
 ; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s8
@@ -10738,12 +11305,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v7
 ; GFX1200-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v4
 ; GFX1200-TRUE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.0
-; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_7
-; GFX1200-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader
+; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_8
+; GFX1200-TRUE16-NEXT:  ; %bb.5: ; %frem.loop_body93.preheader
 ; GFX1200-TRUE16-NEXT:    s_sub_co_i32 s6, s8, s6
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-TRUE16-NEXT:    s_add_co_i32 s6, s6, 11
-; GFX1200-TRUE16-NEXT:  .LBB10_5: ; %frem.loop_body93
+; GFX1200-TRUE16-NEXT:  .LBB10_6: ; %frem.loop_body93
 ; GFX1200-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v5, v2
@@ -10763,11 +11330,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo
 ; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v2, v2, 11
-; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_5
-; GFX1200-TRUE16-NEXT:  ; %bb.6: ; %Flow133
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_6
+; GFX1200-TRUE16-NEXT:  ; %bb.7: ; %Flow133
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v4, s6
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v2, v5
-; GFX1200-TRUE16-NEXT:  .LBB10_7: ; %frem.loop_exit94
+; GFX1200-TRUE16-NEXT:  .LBB10_8: ; %frem.loop_exit94
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v4, -10, v4
 ; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v2, v2, v4
@@ -10788,7 +11355,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v0
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, v1
-; GFX1200-TRUE16-NEXT:  .LBB10_8:
+; GFX1200-TRUE16-NEXT:  .LBB10_9:
 ; GFX1200-TRUE16-NEXT:    s_lshr_b32 s8, s5, 16
 ; GFX1200-TRUE16-NEXT:    s_lshr_b32 s6, s4, 16
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
@@ -10800,18 +11367,26 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)
 ; GFX1200-TRUE16-NEXT:    s_cmp_ngt_f32 s10, s9
-; GFX1200-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_10
-; GFX1200-TRUE16-NEXT:  ; %bb.9: ; %frem.else53
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_11
+; GFX1200-TRUE16-NEXT:  ; %bb.10: ; %frem.else53
 ; GFX1200-TRUE16-NEXT:    s_cmp_eq_f32 s10, s9
 ; GFX1200-TRUE16-NEXT:    v_and_b16 v0.h, 0x8000, s8
 ; GFX1200-TRUE16-NEXT:    s_cselect_b32 s11, -1, 0
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
 ; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v1.l, s8, v0.h, s11
-; GFX1200-TRUE16-NEXT:    s_cbranch_execz .LBB10_11
-; GFX1200-TRUE16-NEXT:    s_branch .LBB10_16
-; GFX1200-TRUE16-NEXT:  .LBB10_10:
+; GFX1200-TRUE16-NEXT:    s_mov_b32 s11, 0
+; GFX1200-TRUE16-NEXT:    s_branch .LBB10_12
+; GFX1200-TRUE16-NEXT:  .LBB10_11:
+; GFX1200-TRUE16-NEXT:    s_mov_b32 s11, -1
 ; GFX1200-TRUE16-NEXT:    ; implicit-def: $vgpr1
-; GFX1200-TRUE16-NEXT:  .LBB10_11: ; %frem.compute52
+; GFX1200-TRUE16-NEXT:  .LBB10_12: ; %Flow131
+; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-TRUE16-NEXT:    s_and_b32 s11, s11, exec_lo
+; GFX1200-TRUE16-NEXT:    s_cselect_b32 s11, 1, 0
+; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-TRUE16-NEXT:    s_cmp_lg_u32 s11, 1
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_18
+; GFX1200-TRUE16-NEXT:  ; %bb.13: ; %frem.compute52
 ; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s9
 ; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s10
 ; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s10
@@ -10846,12 +11421,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v8
 ; GFX1200-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v5
 ; GFX1200-TRUE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.0
-; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_15
-; GFX1200-TRUE16-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader
+; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_17
+; GFX1200-TRUE16-NEXT:  ; %bb.14: ; %frem.loop_body60.preheader
 ; GFX1200-TRUE16-NEXT:    s_sub_co_i32 s9, s10, s9
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-TRUE16-NEXT:    s_add_co_i32 s9, s9, 11
-; GFX1200-TRUE16-NEXT:  .LBB10_13: ; %frem.loop_body60
+; GFX1200-TRUE16-NEXT:  .LBB10_15: ; %frem.loop_body60
 ; GFX1200-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v6, v3
@@ -10871,11 +11446,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo
 ; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v3, v3, 11
-; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_13
-; GFX1200-TRUE16-NEXT:  ; %bb.14: ; %Flow129
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_15
+; GFX1200-TRUE16-NEXT:  ; %bb.16: ; %Flow129
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v5, s9
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v3, v6
-; GFX1200-TRUE16-NEXT:  .LBB10_15: ; %frem.loop_exit61
+; GFX1200-TRUE16-NEXT:  .LBB10_17: ; %frem.loop_exit61
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v5, -10, v5
 ; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v3, v3, v5
@@ -10896,7 +11471,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v1.l, v1
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, v2
-; GFX1200-TRUE16-NEXT:  .LBB10_16:
+; GFX1200-TRUE16-NEXT:  .LBB10_18:
 ; GFX1200-TRUE16-NEXT:    s_and_b32 s8, s7, 0x7fff
 ; GFX1200-TRUE16-NEXT:    s_and_b32 s9, s2, 0x7fff
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
@@ -10905,19 +11480,27 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)
 ; GFX1200-TRUE16-NEXT:    s_cmp_ngt_f32 s10, s9
-; GFX1200-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_18
-; GFX1200-TRUE16-NEXT:  ; %bb.17: ; %frem.else20
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_20
+; GFX1200-TRUE16-NEXT:  ; %bb.19: ; %frem.else20
 ; GFX1200-TRUE16-NEXT:    s_cmp_eq_f32 s10, s9
 ; GFX1200-TRUE16-NEXT:    v_and_b16 v0.h, 0x8000, s7
 ; GFX1200-TRUE16-NEXT:    s_cselect_b32 s11, -1, 0
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v2.l, s7, v0.h, s11
-; GFX1200-TRUE16-NEXT:    s_cbranch_execz .LBB10_19
-; GFX1200-TRUE16-NEXT:    s_branch .LBB10_24
-; GFX1200-TRUE16-NEXT:  .LBB10_18:
+; GFX1200-TRUE16-NEXT:    s_mov_b32 s11, 0
+; GFX1200-TRUE16-NEXT:    s_branch .LBB10_21
+; GFX1200-TRUE16-NEXT:  .LBB10_20:
+; GFX1200-TRUE16-NEXT:    s_mov_b32 s11, -1
 ; GFX1200-TRUE16-NEXT:    ; implicit-def: $vgpr2
-; GFX1200-TRUE16-NEXT:  .LBB10_19: ; %frem.compute19
+; GFX1200-TRUE16-NEXT:  .LBB10_21: ; %Flow127
+; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-TRUE16-NEXT:    s_and_b32 s11, s11, exec_lo
+; GFX1200-TRUE16-NEXT:    s_cselect_b32 s11, 1, 0
+; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-TRUE16-NEXT:    s_cmp_lg_u32 s11, 1
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_27
+; GFX1200-TRUE16-NEXT:  ; %bb.22: ; %frem.compute19
 ; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v3, s9
 ; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s10
 ; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s10
@@ -10952,12 +11535,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v9
 ; GFX1200-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6
 ; GFX1200-TRUE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_23
-; GFX1200-TRUE16-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader
+; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_26
+; GFX1200-TRUE16-NEXT:  ; %bb.23: ; %frem.loop_body27.preheader
 ; GFX1200-TRUE16-NEXT:    s_sub_co_i32 s9, s10, s9
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-TRUE16-NEXT:    s_add_co_i32 s9, s9, 11
-; GFX1200-TRUE16-NEXT:  .LBB10_21: ; %frem.loop_body27
+; GFX1200-TRUE16-NEXT:  .LBB10_24: ; %frem.loop_body27
 ; GFX1200-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v7, v4
@@ -10977,11 +11560,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v4, v4, 11
-; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_21
-; GFX1200-TRUE16-NEXT:  ; %bb.22: ; %Flow125
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_24
+; GFX1200-TRUE16-NEXT:  ; %bb.25: ; %Flow125
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v6, s9
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v4, v7
-; GFX1200-TRUE16-NEXT:  .LBB10_23: ; %frem.loop_exit28
+; GFX1200-TRUE16-NEXT:  .LBB10_26: ; %frem.loop_exit28
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6
 ; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v4, v4, v6
@@ -11002,7 +11585,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v2.l, v2
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v3
-; GFX1200-TRUE16-NEXT:  .LBB10_24:
+; GFX1200-TRUE16-NEXT:  .LBB10_27:
 ; GFX1200-TRUE16-NEXT:    s_lshr_b32 s10, s7, 16
 ; GFX1200-TRUE16-NEXT:    s_lshr_b32 s9, s2, 16
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
@@ -11014,18 +11597,26 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)
 ; GFX1200-TRUE16-NEXT:    s_cmp_ngt_f32 s12, s11
-; GFX1200-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_26
-; GFX1200-TRUE16-NEXT:  ; %bb.25: ; %frem.else
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_29
+; GFX1200-TRUE16-NEXT:  ; %bb.28: ; %frem.else
 ; GFX1200-TRUE16-NEXT:    s_cmp_eq_f32 s12, s11
 ; GFX1200-TRUE16-NEXT:    v_and_b16 v0.h, 0x8000, s10
 ; GFX1200-TRUE16-NEXT:    s_cselect_b32 s13, -1, 0
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
 ; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v3.l, s10, v0.h, s13
-; GFX1200-TRUE16-NEXT:    s_cbranch_execz .LBB10_27
-; GFX1200-TRUE16-NEXT:    s_branch .LBB10_32
-; GFX1200-TRUE16-NEXT:  .LBB10_26:
+; GFX1200-TRUE16-NEXT:    s_mov_b32 s13, 0
+; GFX1200-TRUE16-NEXT:    s_branch .LBB10_30
+; GFX1200-TRUE16-NEXT:  .LBB10_29:
+; GFX1200-TRUE16-NEXT:    s_mov_b32 s13, -1
 ; GFX1200-TRUE16-NEXT:    ; implicit-def: $vgpr3
-; GFX1200-TRUE16-NEXT:  .LBB10_27: ; %frem.compute
+; GFX1200-TRUE16-NEXT:  .LBB10_30: ; %Flow123
+; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-TRUE16-NEXT:    s_and_b32 s13, s13, exec_lo
+; GFX1200-TRUE16-NEXT:    s_cselect_b32 s13, 1, 0
+; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-TRUE16-NEXT:    s_cmp_lg_u32 s13, 1
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_36
+; GFX1200-TRUE16-NEXT:  ; %bb.31: ; %frem.compute
 ; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v4, s11
 ; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v3, s12
 ; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v6, s12
@@ -11060,12 +11651,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    v_div_fmas_f32 v6, v6, v9, v10
 ; GFX1200-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v7
 ; GFX1200-TRUE16-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.0
-; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_31
-; GFX1200-TRUE16-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_35
+; GFX1200-TRUE16-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; GFX1200-TRUE16-NEXT:    s_sub_co_i32 s11, s12, s11
 ; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-TRUE16-NEXT:    s_add_co_i32 s11, s11, 11
-; GFX1200-TRUE16-NEXT:  .LBB10_29: ; %frem.loop_body
+; GFX1200-TRUE16-NEXT:  .LBB10_33: ; %frem.loop_body
 ; GFX1200-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v8, v5
@@ -11085,11 +11676,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo
 ; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v5, v5, 11
-; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_29
-; GFX1200-TRUE16-NEXT:  ; %bb.30: ; %Flow
+; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_33
+; GFX1200-TRUE16-NEXT:  ; %bb.34: ; %Flow
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v7, s11
 ; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v5, v8
-; GFX1200-TRUE16-NEXT:  .LBB10_31: ; %frem.loop_exit
+; GFX1200-TRUE16-NEXT:  .LBB10_35: ; %frem.loop_exit
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v7, -10, v7
 ; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v5, v5, v7
@@ -11110,7 +11701,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v3.l, v3
 ; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-TRUE16-NEXT:    v_bfi_b32 v3, 0x7fff, v3, v4
-; GFX1200-TRUE16-NEXT:  .LBB10_32: ; %Flow124
+; GFX1200-TRUE16-NEXT:  .LBB10_36: ; %Flow124
 ; GFX1200-TRUE16-NEXT:    s_cmp_lg_f16 s4, 0
 ; GFX1200-TRUE16-NEXT:    s_cselect_b32 s4, -1, 0
 ; GFX1200-TRUE16-NEXT:    s_cmp_nge_f16 s3, 0x7c00
@@ -11173,14 +11764,22 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    s_and_b32 s9, 0x8000, s5
 ; GFX1200-FAKE16-NEXT:    s_cmp_eq_f32 s8, s6
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v0, s9
+; GFX1200-FAKE16-NEXT:    s_mov_b32 s9, 0
 ; GFX1200-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v0, s5, v0, vcc_lo
-; GFX1200-FAKE16-NEXT:    s_cbranch_execz .LBB10_3
-; GFX1200-FAKE16-NEXT:    s_branch .LBB10_8
+; GFX1200-FAKE16-NEXT:    s_branch .LBB10_3
 ; GFX1200-FAKE16-NEXT:  .LBB10_2:
+; GFX1200-FAKE16-NEXT:    s_mov_b32 s9, -1
 ; GFX1200-FAKE16-NEXT:    ; implicit-def: $vgpr0
-; GFX1200-FAKE16-NEXT:  .LBB10_3: ; %frem.compute85
+; GFX1200-FAKE16-NEXT:  .LBB10_3: ; %Flow135
+; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-FAKE16-NEXT:    s_and_b32 s9, s9, exec_lo
+; GFX1200-FAKE16-NEXT:    s_cselect_b32 s9, 1, 0
+; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-FAKE16-NEXT:    s_cmp_lg_u32 s9, 1
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_9
+; GFX1200-FAKE16-NEXT:  ; %bb.4: ; %frem.compute85
 ; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s6
 ; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v0, s8
 ; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s8
@@ -11215,12 +11814,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v7
 ; GFX1200-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v4
 ; GFX1200-FAKE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.0
-; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_7
-; GFX1200-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader
+; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_8
+; GFX1200-FAKE16-NEXT:  ; %bb.5: ; %frem.loop_body93.preheader
 ; GFX1200-FAKE16-NEXT:    s_sub_co_i32 s6, s8, s6
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    s_add_co_i32 s6, s6, 11
-; GFX1200-FAKE16-NEXT:  .LBB10_5: ; %frem.loop_body93
+; GFX1200-FAKE16-NEXT:  .LBB10_6: ; %frem.loop_body93
 ; GFX1200-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v5, v2
@@ -11240,11 +11839,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo
 ; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v2, v2, 11
-; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_5
-; GFX1200-FAKE16-NEXT:  ; %bb.6: ; %Flow133
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_6
+; GFX1200-FAKE16-NEXT:  ; %bb.7: ; %Flow133
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v4, s6
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v2, v5
-; GFX1200-FAKE16-NEXT:  .LBB10_7: ; %frem.loop_exit94
+; GFX1200-FAKE16-NEXT:  .LBB10_8: ; %frem.loop_exit94
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v4, -10, v4
 ; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v2, v2, v4
@@ -11264,7 +11863,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v0, v0
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, s5
-; GFX1200-FAKE16-NEXT:  .LBB10_8:
+; GFX1200-FAKE16-NEXT:  .LBB10_9:
 ; GFX1200-FAKE16-NEXT:    s_lshr_b32 s8, s5, 16
 ; GFX1200-FAKE16-NEXT:    s_lshr_b32 s6, s4, 16
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
@@ -11276,20 +11875,28 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)
 ; GFX1200-FAKE16-NEXT:    s_cmp_ngt_f32 s10, s9
-; GFX1200-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_10
-; GFX1200-FAKE16-NEXT:  ; %bb.9: ; %frem.else53
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_11
+; GFX1200-FAKE16-NEXT:  ; %bb.10: ; %frem.else53
 ; GFX1200-FAKE16-NEXT:    s_and_b32 s11, 0x8000, s8
 ; GFX1200-FAKE16-NEXT:    s_cmp_eq_f32 s10, s9
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v1, s11
+; GFX1200-FAKE16-NEXT:    s_mov_b32 s11, 0
 ; GFX1200-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v1, s8, v1, vcc_lo
-; GFX1200-FAKE16-NEXT:    s_cbranch_execz .LBB10_11
-; GFX1200-FAKE16-NEXT:    s_branch .LBB10_16
-; GFX1200-FAKE16-NEXT:  .LBB10_10:
+; GFX1200-FAKE16-NEXT:    s_branch .LBB10_12
+; GFX1200-FAKE16-NEXT:  .LBB10_11:
+; GFX1200-FAKE16-NEXT:    s_mov_b32 s11, -1
 ; GFX1200-FAKE16-NEXT:    ; implicit-def: $vgpr1
-; GFX1200-FAKE16-NEXT:  .LBB10_11: ; %frem.compute52
+; GFX1200-FAKE16-NEXT:  .LBB10_12: ; %Flow131
+; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1200-FAKE16-NEXT:    s_and_b32 s11, s11, exec_lo
+; GFX1200-FAKE16-NEXT:    s_cselect_b32 s11, 1, 0
+; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-FAKE16-NEXT:    s_cmp_lg_u32 s11, 1
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_18
+; GFX1200-FAKE16-NEXT:  ; %bb.13: ; %frem.compute52
 ; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s9
 ; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s10
 ; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s10
@@ -11324,12 +11931,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v8
 ; GFX1200-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v5
 ; GFX1200-FAKE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.0
-; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_15
-; GFX1200-FAKE16-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader
+; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_17
+; GFX1200-FAKE16-NEXT:  ; %bb.14: ; %frem.loop_body60.preheader
 ; GFX1200-FAKE16-NEXT:    s_sub_co_i32 s9, s10, s9
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    s_add_co_i32 s9, s9, 11
-; GFX1200-FAKE16-NEXT:  .LBB10_13: ; %frem.loop_body60
+; GFX1200-FAKE16-NEXT:  .LBB10_15: ; %frem.loop_body60
 ; GFX1200-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v6, v3
@@ -11349,11 +11956,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo
 ; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v3, v3, 11
-; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_13
-; GFX1200-FAKE16-NEXT:  ; %bb.14: ; %Flow129
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_15
+; GFX1200-FAKE16-NEXT:  ; %bb.16: ; %Flow129
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v5, s9
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v3, v6
-; GFX1200-FAKE16-NEXT:  .LBB10_15: ; %frem.loop_exit61
+; GFX1200-FAKE16-NEXT:  .LBB10_17: ; %frem.loop_exit61
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v5, -10, v5
 ; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v3, v3, v5
@@ -11373,7 +11980,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v1, v1
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, s8
-; GFX1200-FAKE16-NEXT:  .LBB10_16:
+; GFX1200-FAKE16-NEXT:  .LBB10_18:
 ; GFX1200-FAKE16-NEXT:    s_and_b32 s8, s7, 0x7fff
 ; GFX1200-FAKE16-NEXT:    s_and_b32 s9, s2, 0x7fff
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
@@ -11382,21 +11989,29 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)
 ; GFX1200-FAKE16-NEXT:    s_cmp_ngt_f32 s10, s9
-; GFX1200-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_18
-; GFX1200-FAKE16-NEXT:  ; %bb.17: ; %frem.else20
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_20
+; GFX1200-FAKE16-NEXT:  ; %bb.19: ; %frem.else20
 ; GFX1200-FAKE16-NEXT:    s_and_b32 s11, 0x8000, s7
 ; GFX1200-FAKE16-NEXT:    s_cmp_eq_f32 s10, s9
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v2, s11
+; GFX1200-FAKE16-NEXT:    s_mov_b32 s11, 0
 ; GFX1200-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v2, s7, v2, vcc_lo
-; GFX1200-FAKE16-NEXT:    s_cbranch_execz .LBB10_19
-; GFX1200-FAKE16-NEXT:    s_branch .LBB10_24
-; GFX1200-FAKE16-NEXT:  .LBB10_18:
+; GFX1200-FAKE16-NEXT:    s_branch .LBB10_21
+; GFX1200-FAKE16-NEXT:  .LBB10_20:
+; GFX1200-FAKE16-NEXT:    s_mov_b32 s11, -1
 ; GFX1200-FAKE16-NEXT:    ; implicit-def: $vgpr2
-; GFX1200-FAKE16-NEXT:  .LBB10_19: ; %frem.compute19
+; GFX1200-FAKE16-NEXT:  .LBB10_21: ; %Flow127
+; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-FAKE16-NEXT:    s_and_b32 s11, s11, exec_lo
+; GFX1200-FAKE16-NEXT:    s_cselect_b32 s11, 1, 0
+; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-FAKE16-NEXT:    s_cmp_lg_u32 s11, 1
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_27
+; GFX1200-FAKE16-NEXT:  ; %bb.22: ; %frem.compute19
 ; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v3, s9
 ; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s10
 ; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s10
@@ -11431,12 +12046,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v9
 ; GFX1200-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6
 ; GFX1200-FAKE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_23
-; GFX1200-FAKE16-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader
+; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_26
+; GFX1200-FAKE16-NEXT:  ; %bb.23: ; %frem.loop_body27.preheader
 ; GFX1200-FAKE16-NEXT:    s_sub_co_i32 s9, s10, s9
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    s_add_co_i32 s9, s9, 11
-; GFX1200-FAKE16-NEXT:  .LBB10_21: ; %frem.loop_body27
+; GFX1200-FAKE16-NEXT:  .LBB10_24: ; %frem.loop_body27
 ; GFX1200-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v7, v4
@@ -11456,11 +12071,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v4, v4, 11
-; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_21
-; GFX1200-FAKE16-NEXT:  ; %bb.22: ; %Flow125
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_24
+; GFX1200-FAKE16-NEXT:  ; %bb.25: ; %Flow125
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v6, s9
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v4, v7
-; GFX1200-FAKE16-NEXT:  .LBB10_23: ; %frem.loop_exit28
+; GFX1200-FAKE16-NEXT:  .LBB10_26: ; %frem.loop_exit28
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6
 ; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v4, v4, v6
@@ -11480,7 +12095,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v2, v2
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, s7
-; GFX1200-FAKE16-NEXT:  .LBB10_24:
+; GFX1200-FAKE16-NEXT:  .LBB10_27:
 ; GFX1200-FAKE16-NEXT:    s_lshr_b32 s10, s7, 16
 ; GFX1200-FAKE16-NEXT:    s_lshr_b32 s9, s2, 16
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
@@ -11492,20 +12107,28 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)
 ; GFX1200-FAKE16-NEXT:    s_cmp_ngt_f32 s12, s11
-; GFX1200-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_26
-; GFX1200-FAKE16-NEXT:  ; %bb.25: ; %frem.else
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_29
+; GFX1200-FAKE16-NEXT:  ; %bb.28: ; %frem.else
 ; GFX1200-FAKE16-NEXT:    s_and_b32 s13, 0x8000, s10
 ; GFX1200-FAKE16-NEXT:    s_cmp_eq_f32 s12, s11
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v3, s13
+; GFX1200-FAKE16-NEXT:    s_mov_b32 s13, 0
 ; GFX1200-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v3, s10, v3, vcc_lo
-; GFX1200-FAKE16-NEXT:    s_cbranch_execz .LBB10_27
-; GFX1200-FAKE16-NEXT:    s_branch .LBB10_32
-; GFX1200-FAKE16-NEXT:  .LBB10_26:
+; GFX1200-FAKE16-NEXT:    s_branch .LBB10_30
+; GFX1200-FAKE16-NEXT:  .LBB10_29:
+; GFX1200-FAKE16-NEXT:    s_mov_b32 s13, -1
 ; GFX1200-FAKE16-NEXT:    ; implicit-def: $vgpr3
-; GFX1200-FAKE16-NEXT:  .LBB10_27: ; %frem.compute
+; GFX1200-FAKE16-NEXT:  .LBB10_30: ; %Flow123
+; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1200-FAKE16-NEXT:    s_and_b32 s13, s13, exec_lo
+; GFX1200-FAKE16-NEXT:    s_cselect_b32 s13, 1, 0
+; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-FAKE16-NEXT:    s_cmp_lg_u32 s13, 1
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_36
+; GFX1200-FAKE16-NEXT:  ; %bb.31: ; %frem.compute
 ; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v4, s11
 ; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v3, s12
 ; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v6, s12
@@ -11540,12 +12163,12 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    v_div_fmas_f32 v6, v6, v9, v10
 ; GFX1200-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v7
 ; GFX1200-FAKE16-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.0
-; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_31
-; GFX1200-FAKE16-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_35
+; GFX1200-FAKE16-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; GFX1200-FAKE16-NEXT:    s_sub_co_i32 s11, s12, s11
 ; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-FAKE16-NEXT:    s_add_co_i32 s11, s11, 11
-; GFX1200-FAKE16-NEXT:  .LBB10_29: ; %frem.loop_body
+; GFX1200-FAKE16-NEXT:  .LBB10_33: ; %frem.loop_body
 ; GFX1200-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v8, v5
@@ -11565,11 +12188,11 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo
 ; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v5, v5, 11
-; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_29
-; GFX1200-FAKE16-NEXT:  ; %bb.30: ; %Flow
+; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_33
+; GFX1200-FAKE16-NEXT:  ; %bb.34: ; %Flow
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v7, s11
 ; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v5, v8
-; GFX1200-FAKE16-NEXT:  .LBB10_31: ; %frem.loop_exit
+; GFX1200-FAKE16-NEXT:  .LBB10_35: ; %frem.loop_exit
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v7, -10, v7
 ; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v5, v5, v7
@@ -11589,7 +12212,7 @@ define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v3, v3
 ; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-FAKE16-NEXT:    v_bfi_b32 v3, 0x7fff, v3, s10
-; GFX1200-FAKE16-NEXT:  .LBB10_32: ; %Flow124
+; GFX1200-FAKE16-NEXT:  .LBB10_36: ; %Flow124
 ; GFX1200-FAKE16-NEXT:    s_cmp_lg_f16 s4, 0
 ; GFX1200-FAKE16-NEXT:    s_cselect_b32 s4, -1, 0
 ; GFX1200-FAKE16-NEXT:    s_cmp_nge_f16 s3, 0x7c00
@@ -11660,11 +12283,17 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_and_b32_e32 v4, 0x80000000, v0
 ; SI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v2|
 ; SI-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc
-; SI-NEXT:    s_cbranch_execz .LBB11_3
-; SI-NEXT:    s_branch .LBB11_8
+; SI-NEXT:    s_mov_b64 s[2:3], 0
+; SI-NEXT:    s_branch .LBB11_3
 ; SI-NEXT:  .LBB11_2:
+; SI-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-NEXT:    ; implicit-def: $vgpr4
-; SI-NEXT:  .LBB11_3: ; %frem.compute15
+; SI-NEXT:  .LBB11_3: ; %Flow53
+; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_9
+; SI-NEXT:  ; %bb.4: ; %frem.compute15
 ; SI-NEXT:    s_mov_b32 s6, 0x7f800000
 ; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v0|, s6
 ; SI-NEXT:    v_frexp_exp_i32_f32_e32 v4, v0
@@ -11699,11 +12328,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_div_fmas_f32 v6, v6, v8, v9
 ; SI-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.0
 ; SI-NEXT:    s_cmp_lt_i32 s3, 13
-; SI-NEXT:    s_cbranch_scc1 .LBB11_7
-; SI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; SI-NEXT:    s_cbranch_scc1 .LBB11_8
+; SI-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; SI-NEXT:    s_sub_i32 s3, s4, s5
 ; SI-NEXT:    s_add_i32 s3, s3, 12
-; SI-NEXT:  .LBB11_5: ; %frem.loop_body23
+; SI-NEXT:  .LBB11_6: ; %frem.loop_body23
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; SI-NEXT:    v_mov_b32_e32 v7, v5
 ; SI-NEXT:    v_mul_f32_e32 v5, v7, v6
@@ -11715,10 +12344,10 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_add_i32 s3, s3, -12
 ; SI-NEXT:    v_ldexp_f32_e64 v5, v5, 12
 ; SI-NEXT:    s_cmp_gt_i32 s3, 12
-; SI-NEXT:    s_cbranch_scc1 .LBB11_5
-; SI-NEXT:  ; %bb.6: ; %Flow51
+; SI-NEXT:    s_cbranch_scc1 .LBB11_6
+; SI-NEXT:  ; %bb.7: ; %Flow51
 ; SI-NEXT:    v_mov_b32_e32 v5, v7
-; SI-NEXT:  .LBB11_7: ; %frem.loop_exit24
+; SI-NEXT:  .LBB11_8: ; %frem.loop_exit24
 ; SI-NEXT:    s_add_i32 s3, s3, -11
 ; SI-NEXT:    v_ldexp_f32_e64 v5, v5, s3
 ; SI-NEXT:    v_mul_f32_e32 v6, v5, v6
@@ -11730,19 +12359,25 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_ldexp_f32_e64 v4, v4, s2
 ; SI-NEXT:    s_brev_b32 s2, -2
 ; SI-NEXT:    v_bfi_b32 v4, s2, v4, v0
-; SI-NEXT:  .LBB11_8:
+; SI-NEXT:  .LBB11_9:
 ; SI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v3|
 ; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; SI-NEXT:    s_cbranch_vccz .LBB11_10
-; SI-NEXT:  ; %bb.9: ; %frem.else
+; SI-NEXT:    s_cbranch_vccz .LBB11_11
+; SI-NEXT:  ; %bb.10: ; %frem.else
 ; SI-NEXT:    v_and_b32_e32 v5, 0x80000000, v1
 ; SI-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v3|
 ; SI-NEXT:    v_cndmask_b32_e32 v5, v1, v5, vcc
-; SI-NEXT:    s_cbranch_execz .LBB11_11
-; SI-NEXT:    s_branch .LBB11_16
-; SI-NEXT:  .LBB11_10:
+; SI-NEXT:    s_mov_b64 s[2:3], 0
+; SI-NEXT:    s_branch .LBB11_12
+; SI-NEXT:  .LBB11_11:
+; SI-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-NEXT:    ; implicit-def: $vgpr5
-; SI-NEXT:  .LBB11_11: ; %frem.compute
+; SI-NEXT:  .LBB11_12: ; %Flow49
+; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB11_18
+; SI-NEXT:  ; %bb.13: ; %frem.compute
 ; SI-NEXT:    s_mov_b32 s6, 0x7f800000
 ; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v1|, s6
 ; SI-NEXT:    v_frexp_exp_i32_f32_e32 v5, v1
@@ -11777,11 +12412,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_div_fmas_f32 v7, v7, v9, v10
 ; SI-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.0
 ; SI-NEXT:    s_cmp_lt_i32 s3, 13
-; SI-NEXT:    s_cbranch_scc1 .LBB11_15
-; SI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; SI-NEXT:    s_cbranch_scc1 .LBB11_17
+; SI-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; SI-NEXT:    s_sub_i32 s3, s4, s5
 ; SI-NEXT:    s_add_i32 s3, s3, 12
-; SI-NEXT:  .LBB11_13: ; %frem.loop_body
+; SI-NEXT:  .LBB11_15: ; %frem.loop_body
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; SI-NEXT:    v_mov_b32_e32 v8, v6
 ; SI-NEXT:    v_mul_f32_e32 v6, v8, v7
@@ -11793,10 +12428,10 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_add_i32 s3, s3, -12
 ; SI-NEXT:    v_ldexp_f32_e64 v6, v6, 12
 ; SI-NEXT:    s_cmp_gt_i32 s3, 12
-; SI-NEXT:    s_cbranch_scc1 .LBB11_13
-; SI-NEXT:  ; %bb.14: ; %Flow
+; SI-NEXT:    s_cbranch_scc1 .LBB11_15
+; SI-NEXT:  ; %bb.16: ; %Flow
 ; SI-NEXT:    v_mov_b32_e32 v6, v8
-; SI-NEXT:  .LBB11_15: ; %frem.loop_exit
+; SI-NEXT:  .LBB11_17: ; %frem.loop_exit
 ; SI-NEXT:    s_add_i32 s3, s3, -11
 ; SI-NEXT:    v_ldexp_f32_e64 v6, v6, s3
 ; SI-NEXT:    v_mul_f32_e32 v7, v6, v7
@@ -11808,7 +12443,7 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_ldexp_f32_e64 v5, v5, s2
 ; SI-NEXT:    s_brev_b32 s2, -2
 ; SI-NEXT:    v_bfi_b32 v5, s2, v5, v1
-; SI-NEXT:  .LBB11_16: ; %Flow50
+; SI-NEXT:  .LBB11_18: ; %Flow50
 ; SI-NEXT:    s_mov_b32 s4, 0x7f800000
 ; SI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v2
 ; SI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s4
@@ -11845,11 +12480,17 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_and_b32_e32 v4, 0x80000000, v0
 ; CI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v2|
 ; CI-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc
-; CI-NEXT:    s_cbranch_execz .LBB11_3
-; CI-NEXT:    s_branch .LBB11_8
+; CI-NEXT:    s_mov_b64 s[2:3], 0
+; CI-NEXT:    s_branch .LBB11_3
 ; CI-NEXT:  .LBB11_2:
+; CI-NEXT:    s_mov_b64 s[2:3], -1
 ; CI-NEXT:    ; implicit-def: $vgpr4
-; CI-NEXT:  .LBB11_3: ; %frem.compute15
+; CI-NEXT:  .LBB11_3: ; %Flow53
+; CI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; CI-NEXT:    s_cselect_b32 s2, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s2, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB11_9
+; CI-NEXT:  ; %bb.4: ; %frem.compute15
 ; CI-NEXT:    v_frexp_mant_f32_e64 v5, |v2|
 ; CI-NEXT:    v_ldexp_f32_e64 v5, v5, 1
 ; CI-NEXT:    v_div_scale_f32 v11, s[2:3], v5, v5, 1.0
@@ -11873,11 +12514,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_div_fmas_f32 v8, v8, v12, v13
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v6
 ; CI-NEXT:    v_div_fixup_f32 v8, v8, v5, 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB11_7
-; CI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB11_8
+; CI-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; CI-NEXT:    v_sub_i32_e32 v6, vcc, v9, v10
 ; CI-NEXT:    v_add_i32_e32 v6, vcc, 12, v6
-; CI-NEXT:  .LBB11_5: ; %frem.loop_body23
+; CI-NEXT:  .LBB11_6: ; %frem.loop_body23
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v9, v7
 ; CI-NEXT:    v_mul_f32_e32 v7, v9, v8
@@ -11889,10 +12530,10 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_add_i32_e32 v6, vcc, -12, v6
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v6
 ; CI-NEXT:    v_ldexp_f32_e64 v7, v7, 12
-; CI-NEXT:    s_cbranch_vccnz .LBB11_5
-; CI-NEXT:  ; %bb.6: ; %Flow51
+; CI-NEXT:    s_cbranch_vccnz .LBB11_6
+; CI-NEXT:  ; %bb.7: ; %Flow51
 ; CI-NEXT:    v_mov_b32_e32 v7, v9
-; CI-NEXT:  .LBB11_7: ; %frem.loop_exit24
+; CI-NEXT:  .LBB11_8: ; %frem.loop_exit24
 ; CI-NEXT:    v_add_i32_e32 v6, vcc, -11, v6
 ; CI-NEXT:    v_ldexp_f32_e32 v6, v7, v6
 ; CI-NEXT:    v_mul_f32_e32 v7, v6, v8
@@ -11904,19 +12545,25 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_ldexp_f32_e32 v4, v5, v4
 ; CI-NEXT:    s_brev_b32 s2, -2
 ; CI-NEXT:    v_bfi_b32 v4, s2, v4, v0
-; CI-NEXT:  .LBB11_8:
+; CI-NEXT:  .LBB11_9:
 ; CI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v3|
 ; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; CI-NEXT:    s_cbranch_vccz .LBB11_10
-; CI-NEXT:  ; %bb.9: ; %frem.else
+; CI-NEXT:    s_cbranch_vccz .LBB11_11
+; CI-NEXT:  ; %bb.10: ; %frem.else
 ; CI-NEXT:    v_and_b32_e32 v5, 0x80000000, v1
 ; CI-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v3|
 ; CI-NEXT:    v_cndmask_b32_e32 v5, v1, v5, vcc
-; CI-NEXT:    s_cbranch_execz .LBB11_11
-; CI-NEXT:    s_branch .LBB11_16
-; CI-NEXT:  .LBB11_10:
+; CI-NEXT:    s_mov_b64 s[2:3], 0
+; CI-NEXT:    s_branch .LBB11_12
+; CI-NEXT:  .LBB11_11:
+; CI-NEXT:    s_mov_b64 s[2:3], -1
 ; CI-NEXT:    ; implicit-def: $vgpr5
-; CI-NEXT:  .LBB11_11: ; %frem.compute
+; CI-NEXT:  .LBB11_12: ; %Flow49
+; CI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; CI-NEXT:    s_cselect_b32 s2, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s2, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB11_18
+; CI-NEXT:  ; %bb.13: ; %frem.compute
 ; CI-NEXT:    v_frexp_mant_f32_e64 v6, |v3|
 ; CI-NEXT:    v_ldexp_f32_e64 v6, v6, 1
 ; CI-NEXT:    v_div_scale_f32 v12, s[2:3], v6, v6, 1.0
@@ -11940,11 +12587,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_div_fmas_f32 v9, v9, v13, v14
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v7
 ; CI-NEXT:    v_div_fixup_f32 v9, v9, v6, 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB11_15
-; CI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB11_17
+; CI-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; CI-NEXT:    v_sub_i32_e32 v7, vcc, v10, v11
 ; CI-NEXT:    v_add_i32_e32 v7, vcc, 12, v7
-; CI-NEXT:  .LBB11_13: ; %frem.loop_body
+; CI-NEXT:  .LBB11_15: ; %frem.loop_body
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v10, v8
 ; CI-NEXT:    v_mul_f32_e32 v8, v10, v9
@@ -11956,10 +12603,10 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_add_i32_e32 v7, vcc, -12, v7
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v7
 ; CI-NEXT:    v_ldexp_f32_e64 v8, v8, 12
-; CI-NEXT:    s_cbranch_vccnz .LBB11_13
-; CI-NEXT:  ; %bb.14: ; %Flow
+; CI-NEXT:    s_cbranch_vccnz .LBB11_15
+; CI-NEXT:  ; %bb.16: ; %Flow
 ; CI-NEXT:    v_mov_b32_e32 v8, v10
-; CI-NEXT:  .LBB11_15: ; %frem.loop_exit
+; CI-NEXT:  .LBB11_17: ; %frem.loop_exit
 ; CI-NEXT:    v_add_i32_e32 v7, vcc, -11, v7
 ; CI-NEXT:    v_ldexp_f32_e32 v7, v8, v7
 ; CI-NEXT:    v_mul_f32_e32 v8, v7, v9
@@ -11971,7 +12618,7 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_ldexp_f32_e32 v5, v6, v5
 ; CI-NEXT:    s_brev_b32 s2, -2
 ; CI-NEXT:    v_bfi_b32 v5, s2, v5, v1
-; CI-NEXT:  .LBB11_16: ; %Flow50
+; CI-NEXT:  .LBB11_18: ; %Flow50
 ; CI-NEXT:    s_mov_b32 s4, 0x7f800000
 ; CI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v2
 ; CI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s4
@@ -12008,11 +12655,17 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_and_b32_e32 v4, 0x80000000, v0
 ; VI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v2|
 ; VI-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc
-; VI-NEXT:    s_cbranch_execz .LBB11_3
-; VI-NEXT:    s_branch .LBB11_8
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB11_3
 ; VI-NEXT:  .LBB11_2:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr4
-; VI-NEXT:  .LBB11_3: ; %frem.compute15
+; VI-NEXT:  .LBB11_3: ; %Flow53
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_9
+; VI-NEXT:  ; %bb.4: ; %frem.compute15
 ; VI-NEXT:    v_frexp_mant_f32_e64 v5, |v2|
 ; VI-NEXT:    v_ldexp_f32 v5, v5, 1
 ; VI-NEXT:    v_div_scale_f32 v11, s[2:3], v5, v5, 1.0
@@ -12036,11 +12689,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_div_fmas_f32 v8, v8, v12, v13
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v6
 ; VI-NEXT:    v_div_fixup_f32 v8, v8, v5, 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB11_7
-; VI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB11_8
+; VI-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; VI-NEXT:    v_sub_u32_e32 v6, vcc, v9, v10
 ; VI-NEXT:    v_add_u32_e32 v6, vcc, 12, v6
-; VI-NEXT:  .LBB11_5: ; %frem.loop_body23
+; VI-NEXT:  .LBB11_6: ; %frem.loop_body23
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v9, v7
 ; VI-NEXT:    v_mul_f32_e32 v7, v9, v8
@@ -12052,10 +12705,10 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_add_u32_e32 v6, vcc, -12, v6
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v6
 ; VI-NEXT:    v_ldexp_f32 v7, v7, 12
-; VI-NEXT:    s_cbranch_vccnz .LBB11_5
-; VI-NEXT:  ; %bb.6: ; %Flow51
+; VI-NEXT:    s_cbranch_vccnz .LBB11_6
+; VI-NEXT:  ; %bb.7: ; %Flow51
 ; VI-NEXT:    v_mov_b32_e32 v7, v9
-; VI-NEXT:  .LBB11_7: ; %frem.loop_exit24
+; VI-NEXT:  .LBB11_8: ; %frem.loop_exit24
 ; VI-NEXT:    v_add_u32_e32 v6, vcc, -11, v6
 ; VI-NEXT:    v_ldexp_f32 v6, v7, v6
 ; VI-NEXT:    v_mul_f32_e32 v7, v6, v8
@@ -12067,19 +12720,25 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_ldexp_f32 v4, v5, v4
 ; VI-NEXT:    s_brev_b32 s2, -2
 ; VI-NEXT:    v_bfi_b32 v4, s2, v4, v0
-; VI-NEXT:  .LBB11_8:
+; VI-NEXT:  .LBB11_9:
 ; VI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v3|
 ; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; VI-NEXT:    s_cbranch_vccz .LBB11_10
-; VI-NEXT:  ; %bb.9: ; %frem.else
+; VI-NEXT:    s_cbranch_vccz .LBB11_11
+; VI-NEXT:  ; %bb.10: ; %frem.else
 ; VI-NEXT:    v_and_b32_e32 v5, 0x80000000, v1
 ; VI-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v3|
 ; VI-NEXT:    v_cndmask_b32_e32 v5, v1, v5, vcc
-; VI-NEXT:    s_cbranch_execz .LBB11_11
-; VI-NEXT:    s_branch .LBB11_16
-; VI-NEXT:  .LBB11_10:
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB11_12
+; VI-NEXT:  .LBB11_11:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr5
-; VI-NEXT:  .LBB11_11: ; %frem.compute
+; VI-NEXT:  .LBB11_12: ; %Flow49
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB11_18
+; VI-NEXT:  ; %bb.13: ; %frem.compute
 ; VI-NEXT:    v_frexp_mant_f32_e64 v6, |v3|
 ; VI-NEXT:    v_ldexp_f32 v6, v6, 1
 ; VI-NEXT:    v_div_scale_f32 v12, s[2:3], v6, v6, 1.0
@@ -12103,11 +12762,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_div_fmas_f32 v9, v9, v13, v14
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v7
 ; VI-NEXT:    v_div_fixup_f32 v9, v9, v6, 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB11_15
-; VI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB11_17
+; VI-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; VI-NEXT:    v_sub_u32_e32 v7, vcc, v10, v11
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, 12, v7
-; VI-NEXT:  .LBB11_13: ; %frem.loop_body
+; VI-NEXT:  .LBB11_15: ; %frem.loop_body
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v10, v8
 ; VI-NEXT:    v_mul_f32_e32 v8, v10, v9
@@ -12119,10 +12778,10 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, -12, v7
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v7
 ; VI-NEXT:    v_ldexp_f32 v8, v8, 12
-; VI-NEXT:    s_cbranch_vccnz .LBB11_13
-; VI-NEXT:  ; %bb.14: ; %Flow
+; VI-NEXT:    s_cbranch_vccnz .LBB11_15
+; VI-NEXT:  ; %bb.16: ; %Flow
 ; VI-NEXT:    v_mov_b32_e32 v8, v10
-; VI-NEXT:  .LBB11_15: ; %frem.loop_exit
+; VI-NEXT:  .LBB11_17: ; %frem.loop_exit
 ; VI-NEXT:    v_add_u32_e32 v7, vcc, -11, v7
 ; VI-NEXT:    v_ldexp_f32 v7, v8, v7
 ; VI-NEXT:    v_mul_f32_e32 v8, v7, v9
@@ -12134,7 +12793,7 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_ldexp_f32 v5, v6, v5
 ; VI-NEXT:    s_brev_b32 s2, -2
 ; VI-NEXT:    v_bfi_b32 v5, s2, v5, v1
-; VI-NEXT:  .LBB11_16: ; %Flow50
+; VI-NEXT:  .LBB11_18: ; %Flow50
 ; VI-NEXT:    s_mov_b32 s4, 0x7f800000
 ; VI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v2
 ; VI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s4
@@ -12166,11 +12825,17 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_and_b32_e32 v4, 0x80000000, v0
 ; GFX9-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v2|
 ; GFX9-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB11_3
-; GFX9-NEXT:    s_branch .LBB11_8
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-NEXT:    s_branch .LBB11_3
 ; GFX9-NEXT:  .LBB11_2:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr4
-; GFX9-NEXT:  .LBB11_3: ; %frem.compute15
+; GFX9-NEXT:  .LBB11_3: ; %Flow53
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_9
+; GFX9-NEXT:  ; %bb.4: ; %frem.compute15
 ; GFX9-NEXT:    v_frexp_mant_f32_e64 v5, |v2|
 ; GFX9-NEXT:    v_ldexp_f32 v5, v5, 1
 ; GFX9-NEXT:    v_div_scale_f32 v11, s[2:3], v5, v5, 1.0
@@ -12194,11 +12859,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_div_fmas_f32 v8, v8, v12, v13
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v6
 ; GFX9-NEXT:    v_div_fixup_f32 v8, v8, v5, 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB11_7
-; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB11_8
+; GFX9-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v6, v9, v10
 ; GFX9-NEXT:    v_add_u32_e32 v6, 12, v6
-; GFX9-NEXT:  .LBB11_5: ; %frem.loop_body23
+; GFX9-NEXT:  .LBB11_6: ; %frem.loop_body23
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v9, v7
 ; GFX9-NEXT:    v_mul_f32_e32 v7, v9, v8
@@ -12210,10 +12875,10 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v7, v7, v10, vcc
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v6
 ; GFX9-NEXT:    v_ldexp_f32 v7, v7, 12
-; GFX9-NEXT:    s_cbranch_vccnz .LBB11_5
-; GFX9-NEXT:  ; %bb.6: ; %Flow51
+; GFX9-NEXT:    s_cbranch_vccnz .LBB11_6
+; GFX9-NEXT:  ; %bb.7: ; %Flow51
 ; GFX9-NEXT:    v_mov_b32_e32 v7, v9
-; GFX9-NEXT:  .LBB11_7: ; %frem.loop_exit24
+; GFX9-NEXT:  .LBB11_8: ; %frem.loop_exit24
 ; GFX9-NEXT:    v_add_u32_e32 v6, -11, v6
 ; GFX9-NEXT:    v_ldexp_f32 v6, v7, v6
 ; GFX9-NEXT:    v_mul_f32_e32 v7, v6, v8
@@ -12225,19 +12890,25 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_ldexp_f32 v4, v5, v4
 ; GFX9-NEXT:    s_brev_b32 s2, -2
 ; GFX9-NEXT:    v_bfi_b32 v4, s2, v4, v0
-; GFX9-NEXT:  .LBB11_8:
+; GFX9-NEXT:  .LBB11_9:
 ; GFX9-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v3|
 ; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; GFX9-NEXT:    s_cbranch_vccz .LBB11_10
-; GFX9-NEXT:  ; %bb.9: ; %frem.else
+; GFX9-NEXT:    s_cbranch_vccz .LBB11_11
+; GFX9-NEXT:  ; %bb.10: ; %frem.else
 ; GFX9-NEXT:    v_and_b32_e32 v5, 0x80000000, v1
 ; GFX9-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v3|
 ; GFX9-NEXT:    v_cndmask_b32_e32 v5, v1, v5, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB11_11
-; GFX9-NEXT:    s_branch .LBB11_16
-; GFX9-NEXT:  .LBB11_10:
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-NEXT:    s_branch .LBB11_12
+; GFX9-NEXT:  .LBB11_11:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr5
-; GFX9-NEXT:  .LBB11_11: ; %frem.compute
+; GFX9-NEXT:  .LBB11_12: ; %Flow49
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB11_18
+; GFX9-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX9-NEXT:    v_frexp_mant_f32_e64 v6, |v3|
 ; GFX9-NEXT:    v_ldexp_f32 v6, v6, 1
 ; GFX9-NEXT:    v_div_scale_f32 v12, s[2:3], v6, v6, 1.0
@@ -12261,11 +12932,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_div_fmas_f32 v9, v9, v13, v14
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v7
 ; GFX9-NEXT:    v_div_fixup_f32 v9, v9, v6, 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB11_15
-; GFX9-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB11_17
+; GFX9-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v7, v10, v11
 ; GFX9-NEXT:    v_add_u32_e32 v7, 12, v7
-; GFX9-NEXT:  .LBB11_13: ; %frem.loop_body
+; GFX9-NEXT:  .LBB11_15: ; %frem.loop_body
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v10, v8
 ; GFX9-NEXT:    v_mul_f32_e32 v8, v10, v9
@@ -12277,10 +12948,10 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v8, v8, v11, vcc
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v7
 ; GFX9-NEXT:    v_ldexp_f32 v8, v8, 12
-; GFX9-NEXT:    s_cbranch_vccnz .LBB11_13
-; GFX9-NEXT:  ; %bb.14: ; %Flow
+; GFX9-NEXT:    s_cbranch_vccnz .LBB11_15
+; GFX9-NEXT:  ; %bb.16: ; %Flow
 ; GFX9-NEXT:    v_mov_b32_e32 v8, v10
-; GFX9-NEXT:  .LBB11_15: ; %frem.loop_exit
+; GFX9-NEXT:  .LBB11_17: ; %frem.loop_exit
 ; GFX9-NEXT:    v_add_u32_e32 v7, -11, v7
 ; GFX9-NEXT:    v_ldexp_f32 v7, v8, v7
 ; GFX9-NEXT:    v_mul_f32_e32 v8, v7, v9
@@ -12292,7 +12963,7 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_ldexp_f32 v5, v6, v5
 ; GFX9-NEXT:    s_brev_b32 s2, -2
 ; GFX9-NEXT:    v_bfi_b32 v5, s2, v5, v1
-; GFX9-NEXT:  .LBB11_16: ; %Flow50
+; GFX9-NEXT:  .LBB11_18: ; %Flow50
 ; GFX9-NEXT:    s_mov_b32 s4, 0x7f800000
 ; GFX9-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v2
 ; GFX9-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s4
@@ -12324,12 +12995,18 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:  ; %bb.1: ; %frem.else16
 ; GFX10-NEXT:    v_and_b32_e32 v4, 0x80000000, v0
 ; GFX10-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v0|, |v2|
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB11_3
-; GFX10-NEXT:    s_branch .LBB11_8
+; GFX10-NEXT:    s_branch .LBB11_3
 ; GFX10-NEXT:  .LBB11_2:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr4
-; GFX10-NEXT:  .LBB11_3: ; %frem.compute15
+; GFX10-NEXT:  .LBB11_3: ; %Flow53
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB11_9
+; GFX10-NEXT:  ; %bb.4: ; %frem.compute15
 ; GFX10-NEXT:    v_frexp_mant_f32_e64 v5, |v2|
 ; GFX10-NEXT:    v_frexp_mant_f32_e64 v4, |v0|
 ; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v7, v0
@@ -12355,11 +13032,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_div_fmas_f32 v7, v7, v10, v11
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v8
 ; GFX10-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB11_7
-; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB11_8
+; GFX10-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 12
-; GFX10-NEXT:  .LBB11_5: ; %frem.loop_body23
+; GFX10-NEXT:  .LBB11_6: ; %frem.loop_body23
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v9, v6
 ; GFX10-NEXT:    s_add_i32 s2, s2, -12
@@ -12371,11 +13048,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_add_f32_e32 v8, v6, v5
 ; GFX10-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v6, v6, 12
-; GFX10-NEXT:    s_cbranch_scc1 .LBB11_5
-; GFX10-NEXT:  ; %bb.6: ; %Flow51
+; GFX10-NEXT:    s_cbranch_scc1 .LBB11_6
+; GFX10-NEXT:  ; %bb.7: ; %Flow51
 ; GFX10-NEXT:    v_mov_b32_e32 v8, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v6, v9
-; GFX10-NEXT:  .LBB11_7: ; %frem.loop_exit24
+; GFX10-NEXT:  .LBB11_8: ; %frem.loop_exit24
 ; GFX10-NEXT:    v_add_nc_u32_e32 v8, -11, v8
 ; GFX10-NEXT:    v_ldexp_f32 v6, v6, v8
 ; GFX10-NEXT:    v_mul_f32_e32 v7, v6, v7
@@ -12386,19 +13063,25 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v4, v5, v4
 ; GFX10-NEXT:    v_bfi_b32 v4, 0x7fffffff, v4, v0
-; GFX10-NEXT:  .LBB11_8:
+; GFX10-NEXT:  .LBB11_9:
 ; GFX10-NEXT:    v_cmp_ngt_f32_e64 s2, |v1|, |v3|
 ; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
-; GFX10-NEXT:    s_cbranch_vccz .LBB11_10
-; GFX10-NEXT:  ; %bb.9: ; %frem.else
+; GFX10-NEXT:    s_cbranch_vccz .LBB11_11
+; GFX10-NEXT:  ; %bb.10: ; %frem.else
 ; GFX10-NEXT:    v_and_b32_e32 v5, 0x80000000, v1
 ; GFX10-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v1|, |v3|
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v5, v1, v5, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB11_11
-; GFX10-NEXT:    s_branch .LBB11_16
-; GFX10-NEXT:  .LBB11_10:
+; GFX10-NEXT:    s_branch .LBB11_12
+; GFX10-NEXT:  .LBB11_11:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr5
-; GFX10-NEXT:  .LBB11_11: ; %frem.compute
+; GFX10-NEXT:  .LBB11_12: ; %Flow49
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB11_18
+; GFX10-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX10-NEXT:    v_frexp_mant_f32_e64 v6, |v3|
 ; GFX10-NEXT:    v_frexp_mant_f32_e64 v5, |v1|
 ; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v8, v1
@@ -12424,11 +13107,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_div_fmas_f32 v8, v8, v11, v12
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v9
 ; GFX10-NEXT:    v_div_fixup_f32 v8, v8, v6, 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB11_15
-; GFX10-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB11_17
+; GFX10-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 12
-; GFX10-NEXT:  .LBB11_13: ; %frem.loop_body
+; GFX10-NEXT:  .LBB11_15: ; %frem.loop_body
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v10, v7
 ; GFX10-NEXT:    s_add_i32 s2, s2, -12
@@ -12440,11 +13123,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_add_f32_e32 v9, v7, v6
 ; GFX10-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v7, v7, 12
-; GFX10-NEXT:    s_cbranch_scc1 .LBB11_13
-; GFX10-NEXT:  ; %bb.14: ; %Flow
+; GFX10-NEXT:    s_cbranch_scc1 .LBB11_15
+; GFX10-NEXT:  ; %bb.16: ; %Flow
 ; GFX10-NEXT:    v_mov_b32_e32 v9, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v7, v10
-; GFX10-NEXT:  .LBB11_15: ; %frem.loop_exit
+; GFX10-NEXT:  .LBB11_17: ; %frem.loop_exit
 ; GFX10-NEXT:    v_add_nc_u32_e32 v9, -11, v9
 ; GFX10-NEXT:    v_ldexp_f32 v7, v7, v9
 ; GFX10-NEXT:    v_mul_f32_e32 v8, v7, v8
@@ -12455,7 +13138,7 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_cndmask_b32_e32 v6, v7, v6, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v5, v6, v5
 ; GFX10-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v1
-; GFX10-NEXT:  .LBB11_16: ; %Flow50
+; GFX10-NEXT:  .LBB11_18: ; %Flow50
 ; GFX10-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v2
 ; GFX10-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v0|
 ; GFX10-NEXT:    v_mov_b32_e32 v2, 0
@@ -12485,13 +13168,19 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:  ; %bb.1: ; %frem.else16
 ; GFX11-NEXT:    v_and_b32_e32 v4, 0x80000000, v0
 ; GFX11-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v0|, |v2|
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX11-NEXT:    s_mov_b32 s2, 0
 ; GFX11-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc_lo
-; GFX11-NEXT:    s_cbranch_execz .LBB11_3
-; GFX11-NEXT:    s_branch .LBB11_8
+; GFX11-NEXT:    s_branch .LBB11_3
 ; GFX11-NEXT:  .LBB11_2:
+; GFX11-NEXT:    s_mov_b32 s2, -1
 ; GFX11-NEXT:    ; implicit-def: $vgpr4
-; GFX11-NEXT:  .LBB11_3: ; %frem.compute15
+; GFX11-NEXT:  .LBB11_3: ; %Flow53
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_9
+; GFX11-NEXT:  ; %bb.4: ; %frem.compute15
 ; GFX11-NEXT:    v_frexp_mant_f32_e64 v5, |v2|
 ; GFX11-NEXT:    v_frexp_mant_f32_e64 v4, |v0|
 ; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v7, v0
@@ -12526,12 +13215,12 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v8
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_7
-; GFX11-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; GFX11-NEXT:    s_cbranch_vccnz .LBB11_8
+; GFX11-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; GFX11-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_add_i32 s2, s2, 12
-; GFX11-NEXT:  .LBB11_5: ; %frem.loop_body23
+; GFX11-NEXT:  .LBB11_6: ; %frem.loop_body23
 ; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v9, v6
@@ -12547,11 +13236,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc_lo
 ; GFX11-NEXT:    v_ldexp_f32 v6, v6, 12
-; GFX11-NEXT:    s_cbranch_scc1 .LBB11_5
-; GFX11-NEXT:  ; %bb.6: ; %Flow51
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_6
+; GFX11-NEXT:  ; %bb.7: ; %Flow51
 ; GFX11-NEXT:    v_mov_b32_e32 v8, s2
 ; GFX11-NEXT:    v_mov_b32_e32 v6, v9
-; GFX11-NEXT:  .LBB11_7: ; %frem.loop_exit24
+; GFX11-NEXT:  .LBB11_8: ; %frem.loop_exit24
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_add_nc_u32_e32 v8, -11, v8
 ; GFX11-NEXT:    v_ldexp_f32 v6, v6, v8
@@ -12567,20 +13256,26 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_ldexp_f32 v4, v5, v4
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_bfi_b32 v4, 0x7fffffff, v4, v0
-; GFX11-NEXT:  .LBB11_8:
+; GFX11-NEXT:  .LBB11_9:
 ; GFX11-NEXT:    v_cmp_ngt_f32_e64 s2, |v1|, |v3|
 ; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccz .LBB11_10
-; GFX11-NEXT:  ; %bb.9: ; %frem.else
+; GFX11-NEXT:    s_cbranch_vccz .LBB11_11
+; GFX11-NEXT:  ; %bb.10: ; %frem.else
 ; GFX11-NEXT:    v_and_b32_e32 v5, 0x80000000, v1
 ; GFX11-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v1|, |v3|
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX11-NEXT:    s_mov_b32 s2, 0
 ; GFX11-NEXT:    v_cndmask_b32_e32 v5, v1, v5, vcc_lo
-; GFX11-NEXT:    s_cbranch_execz .LBB11_11
-; GFX11-NEXT:    s_branch .LBB11_16
-; GFX11-NEXT:  .LBB11_10:
+; GFX11-NEXT:    s_branch .LBB11_12
+; GFX11-NEXT:  .LBB11_11:
+; GFX11-NEXT:    s_mov_b32 s2, -1
 ; GFX11-NEXT:    ; implicit-def: $vgpr5
-; GFX11-NEXT:  .LBB11_11: ; %frem.compute
+; GFX11-NEXT:  .LBB11_12: ; %Flow49
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_18
+; GFX11-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX11-NEXT:    v_frexp_mant_f32_e64 v6, |v3|
 ; GFX11-NEXT:    v_frexp_mant_f32_e64 v5, |v1|
 ; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v8, v1
@@ -12615,12 +13310,12 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v9
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_div_fixup_f32 v8, v8, v6, 1.0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB11_15
-; GFX11-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX11-NEXT:    s_cbranch_vccnz .LBB11_17
+; GFX11-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX11-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_add_i32 s2, s2, 12
-; GFX11-NEXT:  .LBB11_13: ; %frem.loop_body
+; GFX11-NEXT:  .LBB11_15: ; %frem.loop_body
 ; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v10, v7
@@ -12636,11 +13331,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo
 ; GFX11-NEXT:    v_ldexp_f32 v7, v7, 12
-; GFX11-NEXT:    s_cbranch_scc1 .LBB11_13
-; GFX11-NEXT:  ; %bb.14: ; %Flow
+; GFX11-NEXT:    s_cbranch_scc1 .LBB11_15
+; GFX11-NEXT:  ; %bb.16: ; %Flow
 ; GFX11-NEXT:    v_mov_b32_e32 v9, s2
 ; GFX11-NEXT:    v_mov_b32_e32 v7, v10
-; GFX11-NEXT:  .LBB11_15: ; %frem.loop_exit
+; GFX11-NEXT:  .LBB11_17: ; %frem.loop_exit
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_add_nc_u32_e32 v9, -11, v9
 ; GFX11-NEXT:    v_ldexp_f32 v7, v7, v9
@@ -12656,7 +13351,7 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_ldexp_f32 v5, v6, v5
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v1
-; GFX11-NEXT:  .LBB11_16: ; %Flow50
+; GFX11-NEXT:  .LBB11_18: ; %Flow50
 ; GFX11-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v2
 ; GFX11-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v0|
 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
@@ -12693,14 +13388,21 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    s_and_b32 s8, 0x80000000, s6
 ; GFX1150-NEXT:    s_cmp_eq_f32 s3, s7
 ; GFX1150-NEXT:    v_mov_b32_e32 v0, s8
+; GFX1150-NEXT:    s_mov_b32 s7, 0
 ; GFX1150-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v0, s6, v0, vcc_lo
-; GFX1150-NEXT:    s_cbranch_execz .LBB11_3
-; GFX1150-NEXT:    s_branch .LBB11_8
+; GFX1150-NEXT:    s_branch .LBB11_3
 ; GFX1150-NEXT:  .LBB11_2:
+; GFX1150-NEXT:    s_mov_b32 s7, -1
 ; GFX1150-NEXT:    ; implicit-def: $vgpr0
-; GFX1150-NEXT:  .LBB11_3: ; %frem.compute15
+; GFX1150-NEXT:  .LBB11_3: ; %Flow53
+; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-NEXT:    s_and_b32 s7, s7, exec_lo
+; GFX1150-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX1150-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB11_9
+; GFX1150-NEXT:  ; %bb.4: ; %frem.compute15
 ; GFX1150-NEXT:    v_frexp_mant_f32_e64 v1, |s4|
 ; GFX1150-NEXT:    v_frexp_mant_f32_e64 v0, |s6|
 ; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v3, s6
@@ -12734,12 +13436,12 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_div_fmas_f32 v3, v3, v6, v7
 ; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v4
 ; GFX1150-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.0
-; GFX1150-NEXT:    s_cbranch_vccnz .LBB11_7
-; GFX1150-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; GFX1150-NEXT:    s_cbranch_vccnz .LBB11_8
+; GFX1150-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; GFX1150-NEXT:    s_sub_i32 s7, s7, s8
 ; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-NEXT:    s_add_i32 s7, s7, 12
-; GFX1150-NEXT:  .LBB11_5: ; %frem.loop_body23
+; GFX1150-NEXT:  .LBB11_6: ; %frem.loop_body23
 ; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-NEXT:    v_mov_b32_e32 v5, v2
@@ -12757,11 +13459,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f32 v2, v2, 12
-; GFX1150-NEXT:    s_cbranch_scc1 .LBB11_5
-; GFX1150-NEXT:  ; %bb.6: ; %Flow51
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB11_6
+; GFX1150-NEXT:  ; %bb.7: ; %Flow51
 ; GFX1150-NEXT:    v_mov_b32_e32 v4, s7
 ; GFX1150-NEXT:    v_mov_b32_e32 v2, v5
-; GFX1150-NEXT:  .LBB11_7: ; %frem.loop_exit24
+; GFX1150-NEXT:  .LBB11_8: ; %frem.loop_exit24
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_add_nc_u32_e32 v4, -11, v4
 ; GFX1150-NEXT:    v_ldexp_f32 v2, v2, v4
@@ -12778,24 +13480,31 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f32 v0, v1, v0
 ; GFX1150-NEXT:    v_bfi_b32 v0, 0x7fffffff, v0, s6
-; GFX1150-NEXT:  .LBB11_8:
+; GFX1150-NEXT:  .LBB11_9:
 ; GFX1150-NEXT:    s_and_b32 s6, s5, 0x7fffffff
 ; GFX1150-NEXT:    s_and_b32 s7, s2, 0x7fffffff
 ; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-NEXT:    s_cmp_ngt_f32 s6, s7
-; GFX1150-NEXT:    s_cbranch_scc0 .LBB11_10
-; GFX1150-NEXT:  ; %bb.9: ; %frem.else
+; GFX1150-NEXT:    s_cbranch_scc0 .LBB11_11
+; GFX1150-NEXT:  ; %bb.10: ; %frem.else
 ; GFX1150-NEXT:    s_and_b32 s8, 0x80000000, s5
 ; GFX1150-NEXT:    s_cmp_eq_f32 s6, s7
 ; GFX1150-NEXT:    v_mov_b32_e32 v1, s8
+; GFX1150-NEXT:    s_mov_b32 s7, 0
 ; GFX1150-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v1, s5, v1, vcc_lo
-; GFX1150-NEXT:    s_cbranch_execz .LBB11_11
-; GFX1150-NEXT:    s_branch .LBB11_16
-; GFX1150-NEXT:  .LBB11_10:
+; GFX1150-NEXT:    s_branch .LBB11_12
+; GFX1150-NEXT:  .LBB11_11:
+; GFX1150-NEXT:    s_mov_b32 s7, -1
 ; GFX1150-NEXT:    ; implicit-def: $vgpr1
-; GFX1150-NEXT:  .LBB11_11: ; %frem.compute
+; GFX1150-NEXT:  .LBB11_12: ; %Flow49
+; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-NEXT:    s_and_b32 s7, s7, exec_lo
+; GFX1150-NEXT:    s_cselect_b32 s7, 1, 0
+; GFX1150-NEXT:    s_cmp_lg_u32 s7, 1
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB11_18
+; GFX1150-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX1150-NEXT:    v_frexp_mant_f32_e64 v2, |s2|
 ; GFX1150-NEXT:    v_frexp_mant_f32_e64 v1, |s5|
 ; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v4, s5
@@ -12829,12 +13538,12 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_div_fmas_f32 v4, v4, v7, v8
 ; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v5
 ; GFX1150-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.0
-; GFX1150-NEXT:    s_cbranch_vccnz .LBB11_15
-; GFX1150-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX1150-NEXT:    s_cbranch_vccnz .LBB11_17
+; GFX1150-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX1150-NEXT:    s_sub_i32 s7, s7, s8
 ; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-NEXT:    s_add_i32 s7, s7, 12
-; GFX1150-NEXT:  .LBB11_13: ; %frem.loop_body
+; GFX1150-NEXT:  .LBB11_15: ; %frem.loop_body
 ; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-NEXT:    v_mov_b32_e32 v6, v3
@@ -12852,11 +13561,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f32 v3, v3, 12
-; GFX1150-NEXT:    s_cbranch_scc1 .LBB11_13
-; GFX1150-NEXT:  ; %bb.14: ; %Flow
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB11_15
+; GFX1150-NEXT:  ; %bb.16: ; %Flow
 ; GFX1150-NEXT:    v_mov_b32_e32 v5, s7
 ; GFX1150-NEXT:    v_mov_b32_e32 v3, v6
-; GFX1150-NEXT:  .LBB11_15: ; %frem.loop_exit
+; GFX1150-NEXT:  .LBB11_17: ; %frem.loop_exit
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_add_nc_u32_e32 v5, -11, v5
 ; GFX1150-NEXT:    v_ldexp_f32 v3, v3, v5
@@ -12873,7 +13582,7 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f32 v1, v2, v1
 ; GFX1150-NEXT:    v_bfi_b32 v1, 0x7fffffff, v1, s5
-; GFX1150-NEXT:  .LBB11_16: ; %Flow50
+; GFX1150-NEXT:  .LBB11_18: ; %Flow50
 ; GFX1150-NEXT:    s_cmp_lg_f32 s4, 0
 ; GFX1150-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX1150-NEXT:    s_cselect_b32 s4, -1, 0
@@ -12911,18 +13620,23 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    s_and_b32 s7, s4, 0x7fffffff
 ; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1200-NEXT:    s_cmp_ngt_f32 s3, s7
-; GFX1200-NEXT:    s_cbranch_scc0 .LBB11_3
+; GFX1200-NEXT:    s_cbranch_scc0 .LBB11_2
 ; GFX1200-NEXT:  ; %bb.1: ; %frem.else16
 ; GFX1200-NEXT:    s_and_b32 s8, 0x80000000, s6
 ; GFX1200-NEXT:    s_cmp_eq_f32 s3, s7
 ; GFX1200-NEXT:    s_cselect_b32 s7, s8, s6
-; GFX1200-NEXT:    s_cbranch_execz .LBB11_4
-; GFX1200-NEXT:  ; %bb.2:
-; GFX1200-NEXT:    v_mov_b32_e32 v0, s7
-; GFX1200-NEXT:    s_branch .LBB11_9
-; GFX1200-NEXT:  .LBB11_3:
+; GFX1200-NEXT:    s_mov_b32 s8, 0
+; GFX1200-NEXT:    s_branch .LBB11_3
+; GFX1200-NEXT:  .LBB11_2:
+; GFX1200-NEXT:    s_mov_b32 s8, -1
 ; GFX1200-NEXT:    ; implicit-def: $sgpr7
-; GFX1200-NEXT:  .LBB11_4: ; %frem.compute15
+; GFX1200-NEXT:  .LBB11_3: ; %Flow53
+; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1200-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX1200-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX1200-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB11_9
+; GFX1200-NEXT:  ; %bb.4: ; %frem.compute15
 ; GFX1200-NEXT:    v_frexp_mant_f32_e64 v1, |s4|
 ; GFX1200-NEXT:    v_frexp_mant_f32_e64 v0, |s6|
 ; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v3, s6
@@ -13003,24 +13717,31 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_ldexp_f32 v0, v1, v0
 ; GFX1200-NEXT:    v_bfi_b32 v0, 0x7fffffff, v0, s6
+; GFX1200-NEXT:    s_branch .LBB11_10
 ; GFX1200-NEXT:  .LBB11_9:
+; GFX1200-NEXT:    v_mov_b32_e32 v0, s7
+; GFX1200-NEXT:  .LBB11_10:
 ; GFX1200-NEXT:    s_and_b32 s6, s5, 0x7fffffff
 ; GFX1200-NEXT:    s_and_b32 s7, s2, 0x7fffffff
 ; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-NEXT:    s_cmp_ngt_f32 s6, s7
 ; GFX1200-NEXT:    s_cbranch_scc0 .LBB11_12
-; GFX1200-NEXT:  ; %bb.10: ; %frem.else
+; GFX1200-NEXT:  ; %bb.11: ; %frem.else
 ; GFX1200-NEXT:    s_and_b32 s8, 0x80000000, s5
 ; GFX1200-NEXT:    s_cmp_eq_f32 s6, s7
 ; GFX1200-NEXT:    s_cselect_b32 s7, s8, s5
-; GFX1200-NEXT:    s_cbranch_execz .LBB11_13
-; GFX1200-NEXT:  ; %bb.11:
-; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX1200-NEXT:    v_mov_b32_e32 v1, s7
-; GFX1200-NEXT:    s_branch .LBB11_18
+; GFX1200-NEXT:    s_mov_b32 s8, 0
+; GFX1200-NEXT:    s_branch .LBB11_13
 ; GFX1200-NEXT:  .LBB11_12:
+; GFX1200-NEXT:    s_mov_b32 s8, -1
 ; GFX1200-NEXT:    ; implicit-def: $sgpr7
-; GFX1200-NEXT:  .LBB11_13: ; %frem.compute
+; GFX1200-NEXT:  .LBB11_13: ; %Flow49
+; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1200-NEXT:    s_and_b32 s8, s8, exec_lo
+; GFX1200-NEXT:    s_cselect_b32 s8, 1, 0
+; GFX1200-NEXT:    s_cmp_lg_u32 s8, 1
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB11_19
+; GFX1200-NEXT:  ; %bb.14: ; %frem.compute
 ; GFX1200-NEXT:    v_frexp_mant_f32_e64 v2, |s2|
 ; GFX1200-NEXT:    v_frexp_mant_f32_e64 v1, |s5|
 ; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v4, s5
@@ -13055,13 +13776,13 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    v_div_fmas_f32 v4, v4, v7, v8
 ; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v5
 ; GFX1200-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.0
-; GFX1200-NEXT:    s_cbranch_vccnz .LBB11_17
-; GFX1200-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
+; GFX1200-NEXT:    s_cbranch_vccnz .LBB11_18
+; GFX1200-NEXT:  ; %bb.15: ; %frem.loop_body.preheader
 ; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-NEXT:    s_sub_co_i32 s7, s7, s8
 ; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-NEXT:    s_add_co_i32 s7, s7, 12
-; GFX1200-NEXT:  .LBB11_15: ; %frem.loop_body
+; GFX1200-NEXT:  .LBB11_16: ; %frem.loop_body
 ; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_mov_b32_e32 v6, v3
@@ -13081,11 +13802,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo
 ; GFX1200-NEXT:    v_ldexp_f32 v3, v3, 12
-; GFX1200-NEXT:    s_cbranch_scc1 .LBB11_15
-; GFX1200-NEXT:  ; %bb.16: ; %Flow
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB11_16
+; GFX1200-NEXT:  ; %bb.17: ; %Flow
 ; GFX1200-NEXT:    v_mov_b32_e32 v5, s7
 ; GFX1200-NEXT:    v_mov_b32_e32 v3, v6
-; GFX1200-NEXT:  .LBB11_17: ; %frem.loop_exit
+; GFX1200-NEXT:  .LBB11_18: ; %frem.loop_exit
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_add_nc_u32_e32 v5, -11, v5
 ; GFX1200-NEXT:    v_ldexp_f32 v3, v3, v5
@@ -13103,7 +13824,11 @@ define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_ldexp_f32 v1, v2, v1
 ; GFX1200-NEXT:    v_bfi_b32 v1, 0x7fffffff, v1, s5
-; GFX1200-NEXT:  .LBB11_18: ; %Flow50
+; GFX1200-NEXT:    s_branch .LBB11_20
+; GFX1200-NEXT:  .LBB11_19:
+; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-NEXT:    v_mov_b32_e32 v1, s7
+; GFX1200-NEXT:  .LBB11_20: ; %Flow50
 ; GFX1200-NEXT:    s_cmp_lg_f32 s4, 0
 ; GFX1200-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX1200-NEXT:    s_cselect_b32 s4, -1, 0
@@ -13154,11 +13879,17 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_and_b32_e32 v8, 0x80000000, v0
 ; SI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v4|
 ; SI-NEXT:    v_cndmask_b32_e32 v8, v0, v8, vcc
-; SI-NEXT:    s_cbranch_execz .LBB12_3
-; SI-NEXT:    s_branch .LBB12_8
+; SI-NEXT:    s_mov_b64 s[2:3], 0
+; SI-NEXT:    s_branch .LBB12_3
 ; SI-NEXT:  .LBB12_2:
+; SI-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-NEXT:    ; implicit-def: $vgpr8
-; SI-NEXT:  .LBB12_3: ; %frem.compute77
+; SI-NEXT:  .LBB12_3: ; %Flow127
+; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB12_9
+; SI-NEXT:  ; %bb.4: ; %frem.compute77
 ; SI-NEXT:    s_mov_b32 s6, 0x7f800000
 ; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v0|, s6
 ; SI-NEXT:    v_frexp_exp_i32_f32_e32 v8, v0
@@ -13193,11 +13924,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_div_fmas_f32 v10, v10, v12, v13
 ; SI-NEXT:    v_div_fixup_f32 v10, v10, v8, 1.0
 ; SI-NEXT:    s_cmp_lt_i32 s3, 13
-; SI-NEXT:    s_cbranch_scc1 .LBB12_7
-; SI-NEXT:  ; %bb.4: ; %frem.loop_body85.preheader
+; SI-NEXT:    s_cbranch_scc1 .LBB12_8
+; SI-NEXT:  ; %bb.5: ; %frem.loop_body85.preheader
 ; SI-NEXT:    s_sub_i32 s3, s4, s5
 ; SI-NEXT:    s_add_i32 s3, s3, 12
-; SI-NEXT:  .LBB12_5: ; %frem.loop_body85
+; SI-NEXT:  .LBB12_6: ; %frem.loop_body85
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; SI-NEXT:    v_mov_b32_e32 v11, v9
 ; SI-NEXT:    v_mul_f32_e32 v9, v11, v10
@@ -13209,10 +13940,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_add_i32 s3, s3, -12
 ; SI-NEXT:    v_ldexp_f32_e64 v9, v9, 12
 ; SI-NEXT:    s_cmp_gt_i32 s3, 12
-; SI-NEXT:    s_cbranch_scc1 .LBB12_5
-; SI-NEXT:  ; %bb.6: ; %Flow125
+; SI-NEXT:    s_cbranch_scc1 .LBB12_6
+; SI-NEXT:  ; %bb.7: ; %Flow125
 ; SI-NEXT:    v_mov_b32_e32 v9, v11
-; SI-NEXT:  .LBB12_7: ; %frem.loop_exit86
+; SI-NEXT:  .LBB12_8: ; %frem.loop_exit86
 ; SI-NEXT:    s_add_i32 s3, s3, -11
 ; SI-NEXT:    v_ldexp_f32_e64 v9, v9, s3
 ; SI-NEXT:    v_mul_f32_e32 v10, v9, v10
@@ -13224,19 +13955,25 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_ldexp_f32_e64 v8, v8, s2
 ; SI-NEXT:    s_brev_b32 s2, -2
 ; SI-NEXT:    v_bfi_b32 v8, s2, v8, v0
-; SI-NEXT:  .LBB12_8:
+; SI-NEXT:  .LBB12_9:
 ; SI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v5|
 ; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; SI-NEXT:    s_cbranch_vccz .LBB12_10
-; SI-NEXT:  ; %bb.9: ; %frem.else47
+; SI-NEXT:    s_cbranch_vccz .LBB12_11
+; SI-NEXT:  ; %bb.10: ; %frem.else47
 ; SI-NEXT:    v_and_b32_e32 v9, 0x80000000, v1
 ; SI-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v5|
 ; SI-NEXT:    v_cndmask_b32_e32 v9, v1, v9, vcc
-; SI-NEXT:    s_cbranch_execz .LBB12_11
-; SI-NEXT:    s_branch .LBB12_16
-; SI-NEXT:  .LBB12_10:
+; SI-NEXT:    s_mov_b64 s[2:3], 0
+; SI-NEXT:    s_branch .LBB12_12
+; SI-NEXT:  .LBB12_11:
+; SI-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-NEXT:    ; implicit-def: $vgpr9
-; SI-NEXT:  .LBB12_11: ; %frem.compute46
+; SI-NEXT:  .LBB12_12: ; %Flow123
+; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB12_18
+; SI-NEXT:  ; %bb.13: ; %frem.compute46
 ; SI-NEXT:    s_mov_b32 s6, 0x7f800000
 ; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v1|, s6
 ; SI-NEXT:    v_frexp_exp_i32_f32_e32 v9, v1
@@ -13271,11 +14008,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_div_fmas_f32 v11, v11, v13, v14
 ; SI-NEXT:    v_div_fixup_f32 v11, v11, v9, 1.0
 ; SI-NEXT:    s_cmp_lt_i32 s3, 13
-; SI-NEXT:    s_cbranch_scc1 .LBB12_15
-; SI-NEXT:  ; %bb.12: ; %frem.loop_body54.preheader
+; SI-NEXT:    s_cbranch_scc1 .LBB12_17
+; SI-NEXT:  ; %bb.14: ; %frem.loop_body54.preheader
 ; SI-NEXT:    s_sub_i32 s3, s4, s5
 ; SI-NEXT:    s_add_i32 s3, s3, 12
-; SI-NEXT:  .LBB12_13: ; %frem.loop_body54
+; SI-NEXT:  .LBB12_15: ; %frem.loop_body54
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; SI-NEXT:    v_mov_b32_e32 v12, v10
 ; SI-NEXT:    v_mul_f32_e32 v10, v12, v11
@@ -13287,10 +14024,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_add_i32 s3, s3, -12
 ; SI-NEXT:    v_ldexp_f32_e64 v10, v10, 12
 ; SI-NEXT:    s_cmp_gt_i32 s3, 12
-; SI-NEXT:    s_cbranch_scc1 .LBB12_13
-; SI-NEXT:  ; %bb.14: ; %Flow121
+; SI-NEXT:    s_cbranch_scc1 .LBB12_15
+; SI-NEXT:  ; %bb.16: ; %Flow121
 ; SI-NEXT:    v_mov_b32_e32 v10, v12
-; SI-NEXT:  .LBB12_15: ; %frem.loop_exit55
+; SI-NEXT:  .LBB12_17: ; %frem.loop_exit55
 ; SI-NEXT:    s_add_i32 s3, s3, -11
 ; SI-NEXT:    v_ldexp_f32_e64 v10, v10, s3
 ; SI-NEXT:    v_mul_f32_e32 v11, v10, v11
@@ -13302,19 +14039,25 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_ldexp_f32_e64 v9, v9, s2
 ; SI-NEXT:    s_brev_b32 s2, -2
 ; SI-NEXT:    v_bfi_b32 v9, s2, v9, v1
-; SI-NEXT:  .LBB12_16:
+; SI-NEXT:  .LBB12_18:
 ; SI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v2|, |v6|
 ; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; SI-NEXT:    s_cbranch_vccz .LBB12_18
-; SI-NEXT:  ; %bb.17: ; %frem.else16
+; SI-NEXT:    s_cbranch_vccz .LBB12_20
+; SI-NEXT:  ; %bb.19: ; %frem.else16
 ; SI-NEXT:    v_and_b32_e32 v10, 0x80000000, v2
 ; SI-NEXT:    v_cmp_eq_f32_e64 vcc, |v2|, |v6|
 ; SI-NEXT:    v_cndmask_b32_e32 v10, v2, v10, vcc
-; SI-NEXT:    s_cbranch_execz .LBB12_19
-; SI-NEXT:    s_branch .LBB12_24
-; SI-NEXT:  .LBB12_18:
+; SI-NEXT:    s_mov_b64 s[2:3], 0
+; SI-NEXT:    s_branch .LBB12_21
+; SI-NEXT:  .LBB12_20:
+; SI-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-NEXT:    ; implicit-def: $vgpr10
-; SI-NEXT:  .LBB12_19: ; %frem.compute15
+; SI-NEXT:  .LBB12_21: ; %Flow119
+; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB12_27
+; SI-NEXT:  ; %bb.22: ; %frem.compute15
 ; SI-NEXT:    s_mov_b32 s6, 0x7f800000
 ; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v2|, s6
 ; SI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v2
@@ -13349,11 +14092,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_div_fmas_f32 v12, v12, v14, v15
 ; SI-NEXT:    v_div_fixup_f32 v12, v12, v10, 1.0
 ; SI-NEXT:    s_cmp_lt_i32 s3, 13
-; SI-NEXT:    s_cbranch_scc1 .LBB12_23
-; SI-NEXT:  ; %bb.20: ; %frem.loop_body23.preheader
+; SI-NEXT:    s_cbranch_scc1 .LBB12_26
+; SI-NEXT:  ; %bb.23: ; %frem.loop_body23.preheader
 ; SI-NEXT:    s_sub_i32 s3, s4, s5
 ; SI-NEXT:    s_add_i32 s3, s3, 12
-; SI-NEXT:  .LBB12_21: ; %frem.loop_body23
+; SI-NEXT:  .LBB12_24: ; %frem.loop_body23
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; SI-NEXT:    v_mov_b32_e32 v13, v11
 ; SI-NEXT:    v_mul_f32_e32 v11, v13, v12
@@ -13365,10 +14108,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_add_i32 s3, s3, -12
 ; SI-NEXT:    v_ldexp_f32_e64 v11, v11, 12
 ; SI-NEXT:    s_cmp_gt_i32 s3, 12
-; SI-NEXT:    s_cbranch_scc1 .LBB12_21
-; SI-NEXT:  ; %bb.22: ; %Flow117
+; SI-NEXT:    s_cbranch_scc1 .LBB12_24
+; SI-NEXT:  ; %bb.25: ; %Flow117
 ; SI-NEXT:    v_mov_b32_e32 v11, v13
-; SI-NEXT:  .LBB12_23: ; %frem.loop_exit24
+; SI-NEXT:  .LBB12_26: ; %frem.loop_exit24
 ; SI-NEXT:    s_add_i32 s3, s3, -11
 ; SI-NEXT:    v_ldexp_f32_e64 v11, v11, s3
 ; SI-NEXT:    v_mul_f32_e32 v12, v11, v12
@@ -13380,19 +14123,25 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_ldexp_f32_e64 v10, v10, s2
 ; SI-NEXT:    s_brev_b32 s2, -2
 ; SI-NEXT:    v_bfi_b32 v10, s2, v10, v2
-; SI-NEXT:  .LBB12_24:
+; SI-NEXT:  .LBB12_27:
 ; SI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v3|, |v7|
 ; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; SI-NEXT:    s_cbranch_vccz .LBB12_26
-; SI-NEXT:  ; %bb.25: ; %frem.else
+; SI-NEXT:    s_cbranch_vccz .LBB12_29
+; SI-NEXT:  ; %bb.28: ; %frem.else
 ; SI-NEXT:    v_and_b32_e32 v11, 0x80000000, v3
 ; SI-NEXT:    v_cmp_eq_f32_e64 vcc, |v3|, |v7|
 ; SI-NEXT:    v_cndmask_b32_e32 v11, v3, v11, vcc
-; SI-NEXT:    s_cbranch_execz .LBB12_27
-; SI-NEXT:    s_branch .LBB12_32
-; SI-NEXT:  .LBB12_26:
+; SI-NEXT:    s_mov_b64 s[2:3], 0
+; SI-NEXT:    s_branch .LBB12_30
+; SI-NEXT:  .LBB12_29:
+; SI-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-NEXT:    ; implicit-def: $vgpr11
-; SI-NEXT:  .LBB12_27: ; %frem.compute
+; SI-NEXT:  .LBB12_30: ; %Flow115
+; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB12_36
+; SI-NEXT:  ; %bb.31: ; %frem.compute
 ; SI-NEXT:    s_mov_b32 s6, 0x7f800000
 ; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v3|, s6
 ; SI-NEXT:    v_frexp_exp_i32_f32_e32 v11, v3
@@ -13427,11 +14176,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_div_fmas_f32 v13, v13, v15, v16
 ; SI-NEXT:    v_div_fixup_f32 v13, v13, v11, 1.0
 ; SI-NEXT:    s_cmp_lt_i32 s3, 13
-; SI-NEXT:    s_cbranch_scc1 .LBB12_31
-; SI-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; SI-NEXT:    s_cbranch_scc1 .LBB12_35
+; SI-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; SI-NEXT:    s_sub_i32 s3, s4, s5
 ; SI-NEXT:    s_add_i32 s3, s3, 12
-; SI-NEXT:  .LBB12_29: ; %frem.loop_body
+; SI-NEXT:  .LBB12_33: ; %frem.loop_body
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; SI-NEXT:    v_mov_b32_e32 v14, v12
 ; SI-NEXT:    v_mul_f32_e32 v12, v14, v13
@@ -13443,10 +14192,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_add_i32 s3, s3, -12
 ; SI-NEXT:    v_ldexp_f32_e64 v12, v12, 12
 ; SI-NEXT:    s_cmp_gt_i32 s3, 12
-; SI-NEXT:    s_cbranch_scc1 .LBB12_29
-; SI-NEXT:  ; %bb.30: ; %Flow
+; SI-NEXT:    s_cbranch_scc1 .LBB12_33
+; SI-NEXT:  ; %bb.34: ; %Flow
 ; SI-NEXT:    v_mov_b32_e32 v12, v14
-; SI-NEXT:  .LBB12_31: ; %frem.loop_exit
+; SI-NEXT:  .LBB12_35: ; %frem.loop_exit
 ; SI-NEXT:    s_add_i32 s3, s3, -11
 ; SI-NEXT:    v_ldexp_f32_e64 v12, v12, s3
 ; SI-NEXT:    v_mul_f32_e32 v13, v12, v13
@@ -13458,7 +14207,7 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_ldexp_f32_e64 v11, v11, s2
 ; SI-NEXT:    s_brev_b32 s2, -2
 ; SI-NEXT:    v_bfi_b32 v11, s2, v11, v3
-; SI-NEXT:  .LBB12_32: ; %Flow116
+; SI-NEXT:  .LBB12_36: ; %Flow116
 ; SI-NEXT:    s_mov_b32 s4, 0x7f800000
 ; SI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v4
 ; SI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s4
@@ -13503,11 +14252,17 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_and_b32_e32 v8, 0x80000000, v0
 ; CI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v4|
 ; CI-NEXT:    v_cndmask_b32_e32 v8, v0, v8, vcc
-; CI-NEXT:    s_cbranch_execz .LBB12_3
-; CI-NEXT:    s_branch .LBB12_8
+; CI-NEXT:    s_mov_b64 s[2:3], 0
+; CI-NEXT:    s_branch .LBB12_3
 ; CI-NEXT:  .LBB12_2:
+; CI-NEXT:    s_mov_b64 s[2:3], -1
 ; CI-NEXT:    ; implicit-def: $vgpr8
-; CI-NEXT:  .LBB12_3: ; %frem.compute77
+; CI-NEXT:  .LBB12_3: ; %Flow127
+; CI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; CI-NEXT:    s_cselect_b32 s2, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s2, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB12_9
+; CI-NEXT:  ; %bb.4: ; %frem.compute77
 ; CI-NEXT:    v_frexp_mant_f32_e64 v9, |v4|
 ; CI-NEXT:    v_ldexp_f32_e64 v9, v9, 1
 ; CI-NEXT:    v_div_scale_f32 v15, s[2:3], v9, v9, 1.0
@@ -13531,11 +14286,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_div_fmas_f32 v12, v12, v16, v17
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v10
 ; CI-NEXT:    v_div_fixup_f32 v12, v12, v9, 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB12_7
-; CI-NEXT:  ; %bb.4: ; %frem.loop_body85.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB12_8
+; CI-NEXT:  ; %bb.5: ; %frem.loop_body85.preheader
 ; CI-NEXT:    v_sub_i32_e32 v10, vcc, v13, v14
 ; CI-NEXT:    v_add_i32_e32 v10, vcc, 12, v10
-; CI-NEXT:  .LBB12_5: ; %frem.loop_body85
+; CI-NEXT:  .LBB12_6: ; %frem.loop_body85
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v13, v11
 ; CI-NEXT:    v_mul_f32_e32 v11, v13, v12
@@ -13547,10 +14302,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_add_i32_e32 v10, vcc, -12, v10
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v10
 ; CI-NEXT:    v_ldexp_f32_e64 v11, v11, 12
-; CI-NEXT:    s_cbranch_vccnz .LBB12_5
-; CI-NEXT:  ; %bb.6: ; %Flow125
+; CI-NEXT:    s_cbranch_vccnz .LBB12_6
+; CI-NEXT:  ; %bb.7: ; %Flow125
 ; CI-NEXT:    v_mov_b32_e32 v11, v13
-; CI-NEXT:  .LBB12_7: ; %frem.loop_exit86
+; CI-NEXT:  .LBB12_8: ; %frem.loop_exit86
 ; CI-NEXT:    v_add_i32_e32 v10, vcc, -11, v10
 ; CI-NEXT:    v_ldexp_f32_e32 v10, v11, v10
 ; CI-NEXT:    v_mul_f32_e32 v11, v10, v12
@@ -13562,19 +14317,25 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_ldexp_f32_e32 v8, v9, v8
 ; CI-NEXT:    s_brev_b32 s2, -2
 ; CI-NEXT:    v_bfi_b32 v8, s2, v8, v0
-; CI-NEXT:  .LBB12_8:
+; CI-NEXT:  .LBB12_9:
 ; CI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v5|
 ; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; CI-NEXT:    s_cbranch_vccz .LBB12_10
-; CI-NEXT:  ; %bb.9: ; %frem.else47
+; CI-NEXT:    s_cbranch_vccz .LBB12_11
+; CI-NEXT:  ; %bb.10: ; %frem.else47
 ; CI-NEXT:    v_and_b32_e32 v9, 0x80000000, v1
 ; CI-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v5|
 ; CI-NEXT:    v_cndmask_b32_e32 v9, v1, v9, vcc
-; CI-NEXT:    s_cbranch_execz .LBB12_11
-; CI-NEXT:    s_branch .LBB12_16
-; CI-NEXT:  .LBB12_10:
+; CI-NEXT:    s_mov_b64 s[2:3], 0
+; CI-NEXT:    s_branch .LBB12_12
+; CI-NEXT:  .LBB12_11:
+; CI-NEXT:    s_mov_b64 s[2:3], -1
 ; CI-NEXT:    ; implicit-def: $vgpr9
-; CI-NEXT:  .LBB12_11: ; %frem.compute46
+; CI-NEXT:  .LBB12_12: ; %Flow123
+; CI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; CI-NEXT:    s_cselect_b32 s2, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s2, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB12_18
+; CI-NEXT:  ; %bb.13: ; %frem.compute46
 ; CI-NEXT:    v_frexp_mant_f32_e64 v10, |v5|
 ; CI-NEXT:    v_ldexp_f32_e64 v10, v10, 1
 ; CI-NEXT:    v_div_scale_f32 v16, s[2:3], v10, v10, 1.0
@@ -13598,11 +14359,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_div_fmas_f32 v13, v13, v17, v18
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v11
 ; CI-NEXT:    v_div_fixup_f32 v13, v13, v10, 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB12_15
-; CI-NEXT:  ; %bb.12: ; %frem.loop_body54.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB12_17
+; CI-NEXT:  ; %bb.14: ; %frem.loop_body54.preheader
 ; CI-NEXT:    v_sub_i32_e32 v11, vcc, v14, v15
 ; CI-NEXT:    v_add_i32_e32 v11, vcc, 12, v11
-; CI-NEXT:  .LBB12_13: ; %frem.loop_body54
+; CI-NEXT:  .LBB12_15: ; %frem.loop_body54
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v14, v12
 ; CI-NEXT:    v_mul_f32_e32 v12, v14, v13
@@ -13614,10 +14375,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_add_i32_e32 v11, vcc, -12, v11
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v11
 ; CI-NEXT:    v_ldexp_f32_e64 v12, v12, 12
-; CI-NEXT:    s_cbranch_vccnz .LBB12_13
-; CI-NEXT:  ; %bb.14: ; %Flow121
+; CI-NEXT:    s_cbranch_vccnz .LBB12_15
+; CI-NEXT:  ; %bb.16: ; %Flow121
 ; CI-NEXT:    v_mov_b32_e32 v12, v14
-; CI-NEXT:  .LBB12_15: ; %frem.loop_exit55
+; CI-NEXT:  .LBB12_17: ; %frem.loop_exit55
 ; CI-NEXT:    v_add_i32_e32 v11, vcc, -11, v11
 ; CI-NEXT:    v_ldexp_f32_e32 v11, v12, v11
 ; CI-NEXT:    v_mul_f32_e32 v12, v11, v13
@@ -13629,19 +14390,25 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_ldexp_f32_e32 v9, v10, v9
 ; CI-NEXT:    s_brev_b32 s2, -2
 ; CI-NEXT:    v_bfi_b32 v9, s2, v9, v1
-; CI-NEXT:  .LBB12_16:
+; CI-NEXT:  .LBB12_18:
 ; CI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v2|, |v6|
 ; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; CI-NEXT:    s_cbranch_vccz .LBB12_18
-; CI-NEXT:  ; %bb.17: ; %frem.else16
+; CI-NEXT:    s_cbranch_vccz .LBB12_20
+; CI-NEXT:  ; %bb.19: ; %frem.else16
 ; CI-NEXT:    v_and_b32_e32 v10, 0x80000000, v2
 ; CI-NEXT:    v_cmp_eq_f32_e64 vcc, |v2|, |v6|
 ; CI-NEXT:    v_cndmask_b32_e32 v10, v2, v10, vcc
-; CI-NEXT:    s_cbranch_execz .LBB12_19
-; CI-NEXT:    s_branch .LBB12_24
-; CI-NEXT:  .LBB12_18:
+; CI-NEXT:    s_mov_b64 s[2:3], 0
+; CI-NEXT:    s_branch .LBB12_21
+; CI-NEXT:  .LBB12_20:
+; CI-NEXT:    s_mov_b64 s[2:3], -1
 ; CI-NEXT:    ; implicit-def: $vgpr10
-; CI-NEXT:  .LBB12_19: ; %frem.compute15
+; CI-NEXT:  .LBB12_21: ; %Flow119
+; CI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; CI-NEXT:    s_cselect_b32 s2, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s2, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB12_27
+; CI-NEXT:  ; %bb.22: ; %frem.compute15
 ; CI-NEXT:    v_frexp_mant_f32_e64 v11, |v6|
 ; CI-NEXT:    v_ldexp_f32_e64 v11, v11, 1
 ; CI-NEXT:    v_div_scale_f32 v17, s[2:3], v11, v11, 1.0
@@ -13665,11 +14432,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_div_fmas_f32 v14, v14, v18, v19
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v12
 ; CI-NEXT:    v_div_fixup_f32 v14, v14, v11, 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB12_23
-; CI-NEXT:  ; %bb.20: ; %frem.loop_body23.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB12_26
+; CI-NEXT:  ; %bb.23: ; %frem.loop_body23.preheader
 ; CI-NEXT:    v_sub_i32_e32 v12, vcc, v15, v16
 ; CI-NEXT:    v_add_i32_e32 v12, vcc, 12, v12
-; CI-NEXT:  .LBB12_21: ; %frem.loop_body23
+; CI-NEXT:  .LBB12_24: ; %frem.loop_body23
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v15, v13
 ; CI-NEXT:    v_mul_f32_e32 v13, v15, v14
@@ -13681,10 +14448,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_add_i32_e32 v12, vcc, -12, v12
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v12
 ; CI-NEXT:    v_ldexp_f32_e64 v13, v13, 12
-; CI-NEXT:    s_cbranch_vccnz .LBB12_21
-; CI-NEXT:  ; %bb.22: ; %Flow117
+; CI-NEXT:    s_cbranch_vccnz .LBB12_24
+; CI-NEXT:  ; %bb.25: ; %Flow117
 ; CI-NEXT:    v_mov_b32_e32 v13, v15
-; CI-NEXT:  .LBB12_23: ; %frem.loop_exit24
+; CI-NEXT:  .LBB12_26: ; %frem.loop_exit24
 ; CI-NEXT:    v_add_i32_e32 v12, vcc, -11, v12
 ; CI-NEXT:    v_ldexp_f32_e32 v12, v13, v12
 ; CI-NEXT:    v_mul_f32_e32 v13, v12, v14
@@ -13696,19 +14463,25 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_ldexp_f32_e32 v10, v11, v10
 ; CI-NEXT:    s_brev_b32 s2, -2
 ; CI-NEXT:    v_bfi_b32 v10, s2, v10, v2
-; CI-NEXT:  .LBB12_24:
+; CI-NEXT:  .LBB12_27:
 ; CI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v3|, |v7|
 ; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; CI-NEXT:    s_cbranch_vccz .LBB12_26
-; CI-NEXT:  ; %bb.25: ; %frem.else
+; CI-NEXT:    s_cbranch_vccz .LBB12_29
+; CI-NEXT:  ; %bb.28: ; %frem.else
 ; CI-NEXT:    v_and_b32_e32 v11, 0x80000000, v3
 ; CI-NEXT:    v_cmp_eq_f32_e64 vcc, |v3|, |v7|
 ; CI-NEXT:    v_cndmask_b32_e32 v11, v3, v11, vcc
-; CI-NEXT:    s_cbranch_execz .LBB12_27
-; CI-NEXT:    s_branch .LBB12_32
-; CI-NEXT:  .LBB12_26:
+; CI-NEXT:    s_mov_b64 s[2:3], 0
+; CI-NEXT:    s_branch .LBB12_30
+; CI-NEXT:  .LBB12_29:
+; CI-NEXT:    s_mov_b64 s[2:3], -1
 ; CI-NEXT:    ; implicit-def: $vgpr11
-; CI-NEXT:  .LBB12_27: ; %frem.compute
+; CI-NEXT:  .LBB12_30: ; %Flow115
+; CI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; CI-NEXT:    s_cselect_b32 s2, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s2, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB12_36
+; CI-NEXT:  ; %bb.31: ; %frem.compute
 ; CI-NEXT:    v_frexp_mant_f32_e64 v12, |v7|
 ; CI-NEXT:    v_ldexp_f32_e64 v12, v12, 1
 ; CI-NEXT:    v_div_scale_f32 v18, s[2:3], v12, v12, 1.0
@@ -13732,11 +14505,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_div_fmas_f32 v15, v15, v19, v20
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v13
 ; CI-NEXT:    v_div_fixup_f32 v15, v15, v12, 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB12_31
-; CI-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB12_35
+; CI-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; CI-NEXT:    v_sub_i32_e32 v13, vcc, v16, v17
 ; CI-NEXT:    v_add_i32_e32 v13, vcc, 12, v13
-; CI-NEXT:  .LBB12_29: ; %frem.loop_body
+; CI-NEXT:  .LBB12_33: ; %frem.loop_body
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v16, v14
 ; CI-NEXT:    v_mul_f32_e32 v14, v16, v15
@@ -13748,10 +14521,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_add_i32_e32 v13, vcc, -12, v13
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v13
 ; CI-NEXT:    v_ldexp_f32_e64 v14, v14, 12
-; CI-NEXT:    s_cbranch_vccnz .LBB12_29
-; CI-NEXT:  ; %bb.30: ; %Flow
+; CI-NEXT:    s_cbranch_vccnz .LBB12_33
+; CI-NEXT:  ; %bb.34: ; %Flow
 ; CI-NEXT:    v_mov_b32_e32 v14, v16
-; CI-NEXT:  .LBB12_31: ; %frem.loop_exit
+; CI-NEXT:  .LBB12_35: ; %frem.loop_exit
 ; CI-NEXT:    v_add_i32_e32 v13, vcc, -11, v13
 ; CI-NEXT:    v_ldexp_f32_e32 v13, v14, v13
 ; CI-NEXT:    v_mul_f32_e32 v14, v13, v15
@@ -13763,7 +14536,7 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_ldexp_f32_e32 v11, v12, v11
 ; CI-NEXT:    s_brev_b32 s2, -2
 ; CI-NEXT:    v_bfi_b32 v11, s2, v11, v3
-; CI-NEXT:  .LBB12_32: ; %Flow116
+; CI-NEXT:  .LBB12_36: ; %Flow116
 ; CI-NEXT:    s_mov_b32 s4, 0x7f800000
 ; CI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v4
 ; CI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s4
@@ -13808,11 +14581,17 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_and_b32_e32 v8, 0x80000000, v0
 ; VI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v4|
 ; VI-NEXT:    v_cndmask_b32_e32 v8, v0, v8, vcc
-; VI-NEXT:    s_cbranch_execz .LBB12_3
-; VI-NEXT:    s_branch .LBB12_8
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB12_3
 ; VI-NEXT:  .LBB12_2:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr8
-; VI-NEXT:  .LBB12_3: ; %frem.compute77
+; VI-NEXT:  .LBB12_3: ; %Flow127
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB12_9
+; VI-NEXT:  ; %bb.4: ; %frem.compute77
 ; VI-NEXT:    v_frexp_mant_f32_e64 v9, |v4|
 ; VI-NEXT:    v_ldexp_f32 v9, v9, 1
 ; VI-NEXT:    v_div_scale_f32 v15, s[2:3], v9, v9, 1.0
@@ -13836,11 +14615,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_div_fmas_f32 v12, v12, v16, v17
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v10
 ; VI-NEXT:    v_div_fixup_f32 v12, v12, v9, 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB12_7
-; VI-NEXT:  ; %bb.4: ; %frem.loop_body85.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB12_8
+; VI-NEXT:  ; %bb.5: ; %frem.loop_body85.preheader
 ; VI-NEXT:    v_sub_u32_e32 v10, vcc, v13, v14
 ; VI-NEXT:    v_add_u32_e32 v10, vcc, 12, v10
-; VI-NEXT:  .LBB12_5: ; %frem.loop_body85
+; VI-NEXT:  .LBB12_6: ; %frem.loop_body85
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v13, v11
 ; VI-NEXT:    v_mul_f32_e32 v11, v13, v12
@@ -13852,10 +14631,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_add_u32_e32 v10, vcc, -12, v10
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v10
 ; VI-NEXT:    v_ldexp_f32 v11, v11, 12
-; VI-NEXT:    s_cbranch_vccnz .LBB12_5
-; VI-NEXT:  ; %bb.6: ; %Flow125
+; VI-NEXT:    s_cbranch_vccnz .LBB12_6
+; VI-NEXT:  ; %bb.7: ; %Flow125
 ; VI-NEXT:    v_mov_b32_e32 v11, v13
-; VI-NEXT:  .LBB12_7: ; %frem.loop_exit86
+; VI-NEXT:  .LBB12_8: ; %frem.loop_exit86
 ; VI-NEXT:    v_add_u32_e32 v10, vcc, -11, v10
 ; VI-NEXT:    v_ldexp_f32 v10, v11, v10
 ; VI-NEXT:    v_mul_f32_e32 v11, v10, v12
@@ -13867,19 +14646,25 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_ldexp_f32 v8, v9, v8
 ; VI-NEXT:    s_brev_b32 s2, -2
 ; VI-NEXT:    v_bfi_b32 v8, s2, v8, v0
-; VI-NEXT:  .LBB12_8:
+; VI-NEXT:  .LBB12_9:
 ; VI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v5|
 ; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; VI-NEXT:    s_cbranch_vccz .LBB12_10
-; VI-NEXT:  ; %bb.9: ; %frem.else47
+; VI-NEXT:    s_cbranch_vccz .LBB12_11
+; VI-NEXT:  ; %bb.10: ; %frem.else47
 ; VI-NEXT:    v_and_b32_e32 v9, 0x80000000, v1
 ; VI-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v5|
 ; VI-NEXT:    v_cndmask_b32_e32 v9, v1, v9, vcc
-; VI-NEXT:    s_cbranch_execz .LBB12_11
-; VI-NEXT:    s_branch .LBB12_16
-; VI-NEXT:  .LBB12_10:
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB12_12
+; VI-NEXT:  .LBB12_11:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr9
-; VI-NEXT:  .LBB12_11: ; %frem.compute46
+; VI-NEXT:  .LBB12_12: ; %Flow123
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB12_18
+; VI-NEXT:  ; %bb.13: ; %frem.compute46
 ; VI-NEXT:    v_frexp_mant_f32_e64 v10, |v5|
 ; VI-NEXT:    v_ldexp_f32 v10, v10, 1
 ; VI-NEXT:    v_div_scale_f32 v16, s[2:3], v10, v10, 1.0
@@ -13903,11 +14688,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_div_fmas_f32 v13, v13, v17, v18
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v11
 ; VI-NEXT:    v_div_fixup_f32 v13, v13, v10, 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB12_15
-; VI-NEXT:  ; %bb.12: ; %frem.loop_body54.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB12_17
+; VI-NEXT:  ; %bb.14: ; %frem.loop_body54.preheader
 ; VI-NEXT:    v_sub_u32_e32 v11, vcc, v14, v15
 ; VI-NEXT:    v_add_u32_e32 v11, vcc, 12, v11
-; VI-NEXT:  .LBB12_13: ; %frem.loop_body54
+; VI-NEXT:  .LBB12_15: ; %frem.loop_body54
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v14, v12
 ; VI-NEXT:    v_mul_f32_e32 v12, v14, v13
@@ -13919,10 +14704,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_add_u32_e32 v11, vcc, -12, v11
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v11
 ; VI-NEXT:    v_ldexp_f32 v12, v12, 12
-; VI-NEXT:    s_cbranch_vccnz .LBB12_13
-; VI-NEXT:  ; %bb.14: ; %Flow121
+; VI-NEXT:    s_cbranch_vccnz .LBB12_15
+; VI-NEXT:  ; %bb.16: ; %Flow121
 ; VI-NEXT:    v_mov_b32_e32 v12, v14
-; VI-NEXT:  .LBB12_15: ; %frem.loop_exit55
+; VI-NEXT:  .LBB12_17: ; %frem.loop_exit55
 ; VI-NEXT:    v_add_u32_e32 v11, vcc, -11, v11
 ; VI-NEXT:    v_ldexp_f32 v11, v12, v11
 ; VI-NEXT:    v_mul_f32_e32 v12, v11, v13
@@ -13934,19 +14719,25 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_ldexp_f32 v9, v10, v9
 ; VI-NEXT:    s_brev_b32 s2, -2
 ; VI-NEXT:    v_bfi_b32 v9, s2, v9, v1
-; VI-NEXT:  .LBB12_16:
+; VI-NEXT:  .LBB12_18:
 ; VI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v2|, |v6|
 ; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; VI-NEXT:    s_cbranch_vccz .LBB12_18
-; VI-NEXT:  ; %bb.17: ; %frem.else16
+; VI-NEXT:    s_cbranch_vccz .LBB12_20
+; VI-NEXT:  ; %bb.19: ; %frem.else16
 ; VI-NEXT:    v_and_b32_e32 v10, 0x80000000, v2
 ; VI-NEXT:    v_cmp_eq_f32_e64 vcc, |v2|, |v6|
 ; VI-NEXT:    v_cndmask_b32_e32 v10, v2, v10, vcc
-; VI-NEXT:    s_cbranch_execz .LBB12_19
-; VI-NEXT:    s_branch .LBB12_24
-; VI-NEXT:  .LBB12_18:
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB12_21
+; VI-NEXT:  .LBB12_20:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr10
-; VI-NEXT:  .LBB12_19: ; %frem.compute15
+; VI-NEXT:  .LBB12_21: ; %Flow119
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB12_27
+; VI-NEXT:  ; %bb.22: ; %frem.compute15
 ; VI-NEXT:    v_frexp_mant_f32_e64 v11, |v6|
 ; VI-NEXT:    v_ldexp_f32 v11, v11, 1
 ; VI-NEXT:    v_div_scale_f32 v17, s[2:3], v11, v11, 1.0
@@ -13970,11 +14761,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_div_fmas_f32 v14, v14, v18, v19
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v12
 ; VI-NEXT:    v_div_fixup_f32 v14, v14, v11, 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB12_23
-; VI-NEXT:  ; %bb.20: ; %frem.loop_body23.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB12_26
+; VI-NEXT:  ; %bb.23: ; %frem.loop_body23.preheader
 ; VI-NEXT:    v_sub_u32_e32 v12, vcc, v15, v16
 ; VI-NEXT:    v_add_u32_e32 v12, vcc, 12, v12
-; VI-NEXT:  .LBB12_21: ; %frem.loop_body23
+; VI-NEXT:  .LBB12_24: ; %frem.loop_body23
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v15, v13
 ; VI-NEXT:    v_mul_f32_e32 v13, v15, v14
@@ -13986,10 +14777,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_add_u32_e32 v12, vcc, -12, v12
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v12
 ; VI-NEXT:    v_ldexp_f32 v13, v13, 12
-; VI-NEXT:    s_cbranch_vccnz .LBB12_21
-; VI-NEXT:  ; %bb.22: ; %Flow117
+; VI-NEXT:    s_cbranch_vccnz .LBB12_24
+; VI-NEXT:  ; %bb.25: ; %Flow117
 ; VI-NEXT:    v_mov_b32_e32 v13, v15
-; VI-NEXT:  .LBB12_23: ; %frem.loop_exit24
+; VI-NEXT:  .LBB12_26: ; %frem.loop_exit24
 ; VI-NEXT:    v_add_u32_e32 v12, vcc, -11, v12
 ; VI-NEXT:    v_ldexp_f32 v12, v13, v12
 ; VI-NEXT:    v_mul_f32_e32 v13, v12, v14
@@ -14001,19 +14792,25 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_ldexp_f32 v10, v11, v10
 ; VI-NEXT:    s_brev_b32 s2, -2
 ; VI-NEXT:    v_bfi_b32 v10, s2, v10, v2
-; VI-NEXT:  .LBB12_24:
+; VI-NEXT:  .LBB12_27:
 ; VI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v3|, |v7|
 ; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; VI-NEXT:    s_cbranch_vccz .LBB12_26
-; VI-NEXT:  ; %bb.25: ; %frem.else
+; VI-NEXT:    s_cbranch_vccz .LBB12_29
+; VI-NEXT:  ; %bb.28: ; %frem.else
 ; VI-NEXT:    v_and_b32_e32 v11, 0x80000000, v3
 ; VI-NEXT:    v_cmp_eq_f32_e64 vcc, |v3|, |v7|
 ; VI-NEXT:    v_cndmask_b32_e32 v11, v3, v11, vcc
-; VI-NEXT:    s_cbranch_execz .LBB12_27
-; VI-NEXT:    s_branch .LBB12_32
-; VI-NEXT:  .LBB12_26:
+; VI-NEXT:    s_mov_b64 s[2:3], 0
+; VI-NEXT:    s_branch .LBB12_30
+; VI-NEXT:  .LBB12_29:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr11
-; VI-NEXT:  .LBB12_27: ; %frem.compute
+; VI-NEXT:  .LBB12_30: ; %Flow115
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB12_36
+; VI-NEXT:  ; %bb.31: ; %frem.compute
 ; VI-NEXT:    v_frexp_mant_f32_e64 v12, |v7|
 ; VI-NEXT:    v_ldexp_f32 v12, v12, 1
 ; VI-NEXT:    v_div_scale_f32 v18, s[2:3], v12, v12, 1.0
@@ -14037,11 +14834,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_div_fmas_f32 v15, v15, v19, v20
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v13
 ; VI-NEXT:    v_div_fixup_f32 v15, v15, v12, 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB12_31
-; VI-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB12_35
+; VI-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; VI-NEXT:    v_sub_u32_e32 v13, vcc, v16, v17
 ; VI-NEXT:    v_add_u32_e32 v13, vcc, 12, v13
-; VI-NEXT:  .LBB12_29: ; %frem.loop_body
+; VI-NEXT:  .LBB12_33: ; %frem.loop_body
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v16, v14
 ; VI-NEXT:    v_mul_f32_e32 v14, v16, v15
@@ -14053,10 +14850,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_add_u32_e32 v13, vcc, -12, v13
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v13
 ; VI-NEXT:    v_ldexp_f32 v14, v14, 12
-; VI-NEXT:    s_cbranch_vccnz .LBB12_29
-; VI-NEXT:  ; %bb.30: ; %Flow
+; VI-NEXT:    s_cbranch_vccnz .LBB12_33
+; VI-NEXT:  ; %bb.34: ; %Flow
 ; VI-NEXT:    v_mov_b32_e32 v14, v16
-; VI-NEXT:  .LBB12_31: ; %frem.loop_exit
+; VI-NEXT:  .LBB12_35: ; %frem.loop_exit
 ; VI-NEXT:    v_add_u32_e32 v13, vcc, -11, v13
 ; VI-NEXT:    v_ldexp_f32 v13, v14, v13
 ; VI-NEXT:    v_mul_f32_e32 v14, v13, v15
@@ -14068,7 +14865,7 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_ldexp_f32 v11, v12, v11
 ; VI-NEXT:    s_brev_b32 s2, -2
 ; VI-NEXT:    v_bfi_b32 v11, s2, v11, v3
-; VI-NEXT:  .LBB12_32: ; %Flow116
+; VI-NEXT:  .LBB12_36: ; %Flow116
 ; VI-NEXT:    s_mov_b32 s4, 0x7f800000
 ; VI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v4
 ; VI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s4
@@ -14108,11 +14905,17 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_and_b32_e32 v8, 0x80000000, v0
 ; GFX9-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v4|
 ; GFX9-NEXT:    v_cndmask_b32_e32 v8, v0, v8, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB12_3
-; GFX9-NEXT:    s_branch .LBB12_8
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-NEXT:    s_branch .LBB12_3
 ; GFX9-NEXT:  .LBB12_2:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr8
-; GFX9-NEXT:  .LBB12_3: ; %frem.compute77
+; GFX9-NEXT:  .LBB12_3: ; %Flow127
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB12_9
+; GFX9-NEXT:  ; %bb.4: ; %frem.compute77
 ; GFX9-NEXT:    v_frexp_mant_f32_e64 v9, |v4|
 ; GFX9-NEXT:    v_ldexp_f32 v9, v9, 1
 ; GFX9-NEXT:    v_div_scale_f32 v15, s[2:3], v9, v9, 1.0
@@ -14136,11 +14939,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_div_fmas_f32 v12, v12, v16, v17
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v10
 ; GFX9-NEXT:    v_div_fixup_f32 v12, v12, v9, 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB12_7
-; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body85.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB12_8
+; GFX9-NEXT:  ; %bb.5: ; %frem.loop_body85.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v10, v13, v14
 ; GFX9-NEXT:    v_add_u32_e32 v10, 12, v10
-; GFX9-NEXT:  .LBB12_5: ; %frem.loop_body85
+; GFX9-NEXT:  .LBB12_6: ; %frem.loop_body85
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v13, v11
 ; GFX9-NEXT:    v_mul_f32_e32 v11, v13, v12
@@ -14152,10 +14955,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v11, v11, v14, vcc
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v10
 ; GFX9-NEXT:    v_ldexp_f32 v11, v11, 12
-; GFX9-NEXT:    s_cbranch_vccnz .LBB12_5
-; GFX9-NEXT:  ; %bb.6: ; %Flow125
+; GFX9-NEXT:    s_cbranch_vccnz .LBB12_6
+; GFX9-NEXT:  ; %bb.7: ; %Flow125
 ; GFX9-NEXT:    v_mov_b32_e32 v11, v13
-; GFX9-NEXT:  .LBB12_7: ; %frem.loop_exit86
+; GFX9-NEXT:  .LBB12_8: ; %frem.loop_exit86
 ; GFX9-NEXT:    v_add_u32_e32 v10, -11, v10
 ; GFX9-NEXT:    v_ldexp_f32 v10, v11, v10
 ; GFX9-NEXT:    v_mul_f32_e32 v11, v10, v12
@@ -14167,19 +14970,25 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_ldexp_f32 v8, v9, v8
 ; GFX9-NEXT:    s_brev_b32 s2, -2
 ; GFX9-NEXT:    v_bfi_b32 v8, s2, v8, v0
-; GFX9-NEXT:  .LBB12_8:
+; GFX9-NEXT:  .LBB12_9:
 ; GFX9-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v5|
 ; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; GFX9-NEXT:    s_cbranch_vccz .LBB12_10
-; GFX9-NEXT:  ; %bb.9: ; %frem.else47
+; GFX9-NEXT:    s_cbranch_vccz .LBB12_11
+; GFX9-NEXT:  ; %bb.10: ; %frem.else47
 ; GFX9-NEXT:    v_and_b32_e32 v9, 0x80000000, v1
 ; GFX9-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v5|
 ; GFX9-NEXT:    v_cndmask_b32_e32 v9, v1, v9, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB12_11
-; GFX9-NEXT:    s_branch .LBB12_16
-; GFX9-NEXT:  .LBB12_10:
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-NEXT:    s_branch .LBB12_12
+; GFX9-NEXT:  .LBB12_11:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr9
-; GFX9-NEXT:  .LBB12_11: ; %frem.compute46
+; GFX9-NEXT:  .LBB12_12: ; %Flow123
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB12_18
+; GFX9-NEXT:  ; %bb.13: ; %frem.compute46
 ; GFX9-NEXT:    v_frexp_mant_f32_e64 v10, |v5|
 ; GFX9-NEXT:    v_ldexp_f32 v10, v10, 1
 ; GFX9-NEXT:    v_div_scale_f32 v16, s[2:3], v10, v10, 1.0
@@ -14203,11 +15012,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_div_fmas_f32 v13, v13, v17, v18
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v11
 ; GFX9-NEXT:    v_div_fixup_f32 v13, v13, v10, 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB12_15
-; GFX9-NEXT:  ; %bb.12: ; %frem.loop_body54.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB12_17
+; GFX9-NEXT:  ; %bb.14: ; %frem.loop_body54.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v11, v14, v15
 ; GFX9-NEXT:    v_add_u32_e32 v11, 12, v11
-; GFX9-NEXT:  .LBB12_13: ; %frem.loop_body54
+; GFX9-NEXT:  .LBB12_15: ; %frem.loop_body54
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v14, v12
 ; GFX9-NEXT:    v_mul_f32_e32 v12, v14, v13
@@ -14219,10 +15028,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v12, v12, v15, vcc
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v11
 ; GFX9-NEXT:    v_ldexp_f32 v12, v12, 12
-; GFX9-NEXT:    s_cbranch_vccnz .LBB12_13
-; GFX9-NEXT:  ; %bb.14: ; %Flow121
+; GFX9-NEXT:    s_cbranch_vccnz .LBB12_15
+; GFX9-NEXT:  ; %bb.16: ; %Flow121
 ; GFX9-NEXT:    v_mov_b32_e32 v12, v14
-; GFX9-NEXT:  .LBB12_15: ; %frem.loop_exit55
+; GFX9-NEXT:  .LBB12_17: ; %frem.loop_exit55
 ; GFX9-NEXT:    v_add_u32_e32 v11, -11, v11
 ; GFX9-NEXT:    v_ldexp_f32 v11, v12, v11
 ; GFX9-NEXT:    v_mul_f32_e32 v12, v11, v13
@@ -14234,19 +15043,25 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_ldexp_f32 v9, v10, v9
 ; GFX9-NEXT:    s_brev_b32 s2, -2
 ; GFX9-NEXT:    v_bfi_b32 v9, s2, v9, v1
-; GFX9-NEXT:  .LBB12_16:
+; GFX9-NEXT:  .LBB12_18:
 ; GFX9-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v2|, |v6|
 ; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; GFX9-NEXT:    s_cbranch_vccz .LBB12_18
-; GFX9-NEXT:  ; %bb.17: ; %frem.else16
+; GFX9-NEXT:    s_cbranch_vccz .LBB12_20
+; GFX9-NEXT:  ; %bb.19: ; %frem.else16
 ; GFX9-NEXT:    v_and_b32_e32 v10, 0x80000000, v2
 ; GFX9-NEXT:    v_cmp_eq_f32_e64 vcc, |v2|, |v6|
 ; GFX9-NEXT:    v_cndmask_b32_e32 v10, v2, v10, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB12_19
-; GFX9-NEXT:    s_branch .LBB12_24
-; GFX9-NEXT:  .LBB12_18:
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-NEXT:    s_branch .LBB12_21
+; GFX9-NEXT:  .LBB12_20:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr10
-; GFX9-NEXT:  .LBB12_19: ; %frem.compute15
+; GFX9-NEXT:  .LBB12_21: ; %Flow119
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB12_27
+; GFX9-NEXT:  ; %bb.22: ; %frem.compute15
 ; GFX9-NEXT:    v_frexp_mant_f32_e64 v11, |v6|
 ; GFX9-NEXT:    v_ldexp_f32 v11, v11, 1
 ; GFX9-NEXT:    v_div_scale_f32 v17, s[2:3], v11, v11, 1.0
@@ -14270,11 +15085,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_div_fmas_f32 v14, v14, v18, v19
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v12
 ; GFX9-NEXT:    v_div_fixup_f32 v14, v14, v11, 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB12_23
-; GFX9-NEXT:  ; %bb.20: ; %frem.loop_body23.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB12_26
+; GFX9-NEXT:  ; %bb.23: ; %frem.loop_body23.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v12, v15, v16
 ; GFX9-NEXT:    v_add_u32_e32 v12, 12, v12
-; GFX9-NEXT:  .LBB12_21: ; %frem.loop_body23
+; GFX9-NEXT:  .LBB12_24: ; %frem.loop_body23
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v15, v13
 ; GFX9-NEXT:    v_mul_f32_e32 v13, v15, v14
@@ -14286,10 +15101,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v13, v13, v16, vcc
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v12
 ; GFX9-NEXT:    v_ldexp_f32 v13, v13, 12
-; GFX9-NEXT:    s_cbranch_vccnz .LBB12_21
-; GFX9-NEXT:  ; %bb.22: ; %Flow117
+; GFX9-NEXT:    s_cbranch_vccnz .LBB12_24
+; GFX9-NEXT:  ; %bb.25: ; %Flow117
 ; GFX9-NEXT:    v_mov_b32_e32 v13, v15
-; GFX9-NEXT:  .LBB12_23: ; %frem.loop_exit24
+; GFX9-NEXT:  .LBB12_26: ; %frem.loop_exit24
 ; GFX9-NEXT:    v_add_u32_e32 v12, -11, v12
 ; GFX9-NEXT:    v_ldexp_f32 v12, v13, v12
 ; GFX9-NEXT:    v_mul_f32_e32 v13, v12, v14
@@ -14301,19 +15116,25 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_ldexp_f32 v10, v11, v10
 ; GFX9-NEXT:    s_brev_b32 s2, -2
 ; GFX9-NEXT:    v_bfi_b32 v10, s2, v10, v2
-; GFX9-NEXT:  .LBB12_24:
+; GFX9-NEXT:  .LBB12_27:
 ; GFX9-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v3|, |v7|
 ; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; GFX9-NEXT:    s_cbranch_vccz .LBB12_26
-; GFX9-NEXT:  ; %bb.25: ; %frem.else
+; GFX9-NEXT:    s_cbranch_vccz .LBB12_29
+; GFX9-NEXT:  ; %bb.28: ; %frem.else
 ; GFX9-NEXT:    v_and_b32_e32 v11, 0x80000000, v3
 ; GFX9-NEXT:    v_cmp_eq_f32_e64 vcc, |v3|, |v7|
 ; GFX9-NEXT:    v_cndmask_b32_e32 v11, v3, v11, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB12_27
-; GFX9-NEXT:    s_branch .LBB12_32
-; GFX9-NEXT:  .LBB12_26:
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-NEXT:    s_branch .LBB12_30
+; GFX9-NEXT:  .LBB12_29:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr11
-; GFX9-NEXT:  .LBB12_27: ; %frem.compute
+; GFX9-NEXT:  .LBB12_30: ; %Flow115
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB12_36
+; GFX9-NEXT:  ; %bb.31: ; %frem.compute
 ; GFX9-NEXT:    v_frexp_mant_f32_e64 v12, |v7|
 ; GFX9-NEXT:    v_ldexp_f32 v12, v12, 1
 ; GFX9-NEXT:    v_div_scale_f32 v18, s[2:3], v12, v12, 1.0
@@ -14337,11 +15158,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_div_fmas_f32 v15, v15, v19, v20
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v13
 ; GFX9-NEXT:    v_div_fixup_f32 v15, v15, v12, 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB12_31
-; GFX9-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB12_35
+; GFX9-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v13, v16, v17
 ; GFX9-NEXT:    v_add_u32_e32 v13, 12, v13
-; GFX9-NEXT:  .LBB12_29: ; %frem.loop_body
+; GFX9-NEXT:  .LBB12_33: ; %frem.loop_body
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v16, v14
 ; GFX9-NEXT:    v_mul_f32_e32 v14, v16, v15
@@ -14353,10 +15174,10 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v14, v14, v17, vcc
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v13
 ; GFX9-NEXT:    v_ldexp_f32 v14, v14, 12
-; GFX9-NEXT:    s_cbranch_vccnz .LBB12_29
-; GFX9-NEXT:  ; %bb.30: ; %Flow
+; GFX9-NEXT:    s_cbranch_vccnz .LBB12_33
+; GFX9-NEXT:  ; %bb.34: ; %Flow
 ; GFX9-NEXT:    v_mov_b32_e32 v14, v16
-; GFX9-NEXT:  .LBB12_31: ; %frem.loop_exit
+; GFX9-NEXT:  .LBB12_35: ; %frem.loop_exit
 ; GFX9-NEXT:    v_add_u32_e32 v13, -11, v13
 ; GFX9-NEXT:    v_ldexp_f32 v13, v14, v13
 ; GFX9-NEXT:    v_mul_f32_e32 v14, v13, v15
@@ -14368,7 +15189,7 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_ldexp_f32 v11, v12, v11
 ; GFX9-NEXT:    s_brev_b32 s2, -2
 ; GFX9-NEXT:    v_bfi_b32 v11, s2, v11, v3
-; GFX9-NEXT:  .LBB12_32: ; %Flow116
+; GFX9-NEXT:  .LBB12_36: ; %Flow116
 ; GFX9-NEXT:    s_mov_b32 s4, 0x7f800000
 ; GFX9-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v4
 ; GFX9-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s4
@@ -14408,12 +15229,18 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:  ; %bb.1: ; %frem.else78
 ; GFX10-NEXT:    v_and_b32_e32 v8, 0x80000000, v0
 ; GFX10-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v0|, |v4|
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v8, v0, v8, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB12_3
-; GFX10-NEXT:    s_branch .LBB12_8
+; GFX10-NEXT:    s_branch .LBB12_3
 ; GFX10-NEXT:  .LBB12_2:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr8
-; GFX10-NEXT:  .LBB12_3: ; %frem.compute77
+; GFX10-NEXT:  .LBB12_3: ; %Flow127
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB12_9
+; GFX10-NEXT:  ; %bb.4: ; %frem.compute77
 ; GFX10-NEXT:    v_frexp_mant_f32_e64 v9, |v4|
 ; GFX10-NEXT:    v_frexp_mant_f32_e64 v8, |v0|
 ; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v11, v0
@@ -14439,11 +15266,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_div_fmas_f32 v11, v11, v14, v15
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v12
 ; GFX10-NEXT:    v_div_fixup_f32 v11, v11, v9, 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB12_7
-; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body85.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB12_8
+; GFX10-NEXT:  ; %bb.5: ; %frem.loop_body85.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 12
-; GFX10-NEXT:  .LBB12_5: ; %frem.loop_body85
+; GFX10-NEXT:  .LBB12_6: ; %frem.loop_body85
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v13, v10
 ; GFX10-NEXT:    s_add_i32 s2, s2, -12
@@ -14455,11 +15282,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_add_f32_e32 v12, v10, v9
 ; GFX10-NEXT:    v_cndmask_b32_e32 v10, v10, v12, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v10, v10, 12
-; GFX10-NEXT:    s_cbranch_scc1 .LBB12_5
-; GFX10-NEXT:  ; %bb.6: ; %Flow125
+; GFX10-NEXT:    s_cbranch_scc1 .LBB12_6
+; GFX10-NEXT:  ; %bb.7: ; %Flow125
 ; GFX10-NEXT:    v_mov_b32_e32 v12, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v10, v13
-; GFX10-NEXT:  .LBB12_7: ; %frem.loop_exit86
+; GFX10-NEXT:  .LBB12_8: ; %frem.loop_exit86
 ; GFX10-NEXT:    v_add_nc_u32_e32 v12, -11, v12
 ; GFX10-NEXT:    v_ldexp_f32 v10, v10, v12
 ; GFX10-NEXT:    v_mul_f32_e32 v11, v10, v11
@@ -14470,19 +15297,25 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_cndmask_b32_e32 v9, v10, v9, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v8, v9, v8
 ; GFX10-NEXT:    v_bfi_b32 v8, 0x7fffffff, v8, v0
-; GFX10-NEXT:  .LBB12_8:
+; GFX10-NEXT:  .LBB12_9:
 ; GFX10-NEXT:    v_cmp_ngt_f32_e64 s2, |v1|, |v5|
 ; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
-; GFX10-NEXT:    s_cbranch_vccz .LBB12_10
-; GFX10-NEXT:  ; %bb.9: ; %frem.else47
+; GFX10-NEXT:    s_cbranch_vccz .LBB12_11
+; GFX10-NEXT:  ; %bb.10: ; %frem.else47
 ; GFX10-NEXT:    v_and_b32_e32 v9, 0x80000000, v1
 ; GFX10-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v1|, |v5|
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v9, v1, v9, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB12_11
-; GFX10-NEXT:    s_branch .LBB12_16
-; GFX10-NEXT:  .LBB12_10:
+; GFX10-NEXT:    s_branch .LBB12_12
+; GFX10-NEXT:  .LBB12_11:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr9
-; GFX10-NEXT:  .LBB12_11: ; %frem.compute46
+; GFX10-NEXT:  .LBB12_12: ; %Flow123
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB12_18
+; GFX10-NEXT:  ; %bb.13: ; %frem.compute46
 ; GFX10-NEXT:    v_frexp_mant_f32_e64 v10, |v5|
 ; GFX10-NEXT:    v_frexp_mant_f32_e64 v9, |v1|
 ; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v12, v1
@@ -14508,11 +15341,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_div_fmas_f32 v12, v12, v15, v16
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v13
 ; GFX10-NEXT:    v_div_fixup_f32 v12, v12, v10, 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB12_15
-; GFX10-NEXT:  ; %bb.12: ; %frem.loop_body54.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB12_17
+; GFX10-NEXT:  ; %bb.14: ; %frem.loop_body54.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 12
-; GFX10-NEXT:  .LBB12_13: ; %frem.loop_body54
+; GFX10-NEXT:  .LBB12_15: ; %frem.loop_body54
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v14, v11
 ; GFX10-NEXT:    s_add_i32 s2, s2, -12
@@ -14524,11 +15357,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_add_f32_e32 v13, v11, v10
 ; GFX10-NEXT:    v_cndmask_b32_e32 v11, v11, v13, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v11, v11, 12
-; GFX10-NEXT:    s_cbranch_scc1 .LBB12_13
-; GFX10-NEXT:  ; %bb.14: ; %Flow121
+; GFX10-NEXT:    s_cbranch_scc1 .LBB12_15
+; GFX10-NEXT:  ; %bb.16: ; %Flow121
 ; GFX10-NEXT:    v_mov_b32_e32 v13, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v11, v14
-; GFX10-NEXT:  .LBB12_15: ; %frem.loop_exit55
+; GFX10-NEXT:  .LBB12_17: ; %frem.loop_exit55
 ; GFX10-NEXT:    v_add_nc_u32_e32 v13, -11, v13
 ; GFX10-NEXT:    v_ldexp_f32 v11, v11, v13
 ; GFX10-NEXT:    v_mul_f32_e32 v12, v11, v12
@@ -14539,19 +15372,25 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_cndmask_b32_e32 v10, v11, v10, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v9, v10, v9
 ; GFX10-NEXT:    v_bfi_b32 v9, 0x7fffffff, v9, v1
-; GFX10-NEXT:  .LBB12_16:
+; GFX10-NEXT:  .LBB12_18:
 ; GFX10-NEXT:    v_cmp_ngt_f32_e64 s2, |v2|, |v6|
 ; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
-; GFX10-NEXT:    s_cbranch_vccz .LBB12_18
-; GFX10-NEXT:  ; %bb.17: ; %frem.else16
+; GFX10-NEXT:    s_cbranch_vccz .LBB12_20
+; GFX10-NEXT:  ; %bb.19: ; %frem.else16
 ; GFX10-NEXT:    v_and_b32_e32 v10, 0x80000000, v2
 ; GFX10-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v2|, |v6|
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v10, v2, v10, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB12_19
-; GFX10-NEXT:    s_branch .LBB12_24
-; GFX10-NEXT:  .LBB12_18:
+; GFX10-NEXT:    s_branch .LBB12_21
+; GFX10-NEXT:  .LBB12_20:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr10
-; GFX10-NEXT:  .LBB12_19: ; %frem.compute15
+; GFX10-NEXT:  .LBB12_21: ; %Flow119
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB12_27
+; GFX10-NEXT:  ; %bb.22: ; %frem.compute15
 ; GFX10-NEXT:    v_frexp_mant_f32_e64 v11, |v6|
 ; GFX10-NEXT:    v_frexp_mant_f32_e64 v10, |v2|
 ; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v13, v2
@@ -14577,11 +15416,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_div_fmas_f32 v13, v13, v16, v17
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v14
 ; GFX10-NEXT:    v_div_fixup_f32 v13, v13, v11, 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB12_23
-; GFX10-NEXT:  ; %bb.20: ; %frem.loop_body23.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB12_26
+; GFX10-NEXT:  ; %bb.23: ; %frem.loop_body23.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 12
-; GFX10-NEXT:  .LBB12_21: ; %frem.loop_body23
+; GFX10-NEXT:  .LBB12_24: ; %frem.loop_body23
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v15, v12
 ; GFX10-NEXT:    s_add_i32 s2, s2, -12
@@ -14593,11 +15432,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_add_f32_e32 v14, v12, v11
 ; GFX10-NEXT:    v_cndmask_b32_e32 v12, v12, v14, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v12, v12, 12
-; GFX10-NEXT:    s_cbranch_scc1 .LBB12_21
-; GFX10-NEXT:  ; %bb.22: ; %Flow117
+; GFX10-NEXT:    s_cbranch_scc1 .LBB12_24
+; GFX10-NEXT:  ; %bb.25: ; %Flow117
 ; GFX10-NEXT:    v_mov_b32_e32 v14, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v12, v15
-; GFX10-NEXT:  .LBB12_23: ; %frem.loop_exit24
+; GFX10-NEXT:  .LBB12_26: ; %frem.loop_exit24
 ; GFX10-NEXT:    v_add_nc_u32_e32 v14, -11, v14
 ; GFX10-NEXT:    v_ldexp_f32 v12, v12, v14
 ; GFX10-NEXT:    v_mul_f32_e32 v13, v12, v13
@@ -14608,19 +15447,25 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_cndmask_b32_e32 v11, v12, v11, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v10, v11, v10
 ; GFX10-NEXT:    v_bfi_b32 v10, 0x7fffffff, v10, v2
-; GFX10-NEXT:  .LBB12_24:
+; GFX10-NEXT:  .LBB12_27:
 ; GFX10-NEXT:    v_cmp_ngt_f32_e64 s2, |v3|, |v7|
 ; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
-; GFX10-NEXT:    s_cbranch_vccz .LBB12_26
-; GFX10-NEXT:  ; %bb.25: ; %frem.else
+; GFX10-NEXT:    s_cbranch_vccz .LBB12_29
+; GFX10-NEXT:  ; %bb.28: ; %frem.else
 ; GFX10-NEXT:    v_and_b32_e32 v11, 0x80000000, v3
 ; GFX10-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v3|, |v7|
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v11, v3, v11, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB12_27
-; GFX10-NEXT:    s_branch .LBB12_32
-; GFX10-NEXT:  .LBB12_26:
+; GFX10-NEXT:    s_branch .LBB12_30
+; GFX10-NEXT:  .LBB12_29:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr11
-; GFX10-NEXT:  .LBB12_27: ; %frem.compute
+; GFX10-NEXT:  .LBB12_30: ; %Flow115
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB12_36
+; GFX10-NEXT:  ; %bb.31: ; %frem.compute
 ; GFX10-NEXT:    v_frexp_mant_f32_e64 v12, |v7|
 ; GFX10-NEXT:    v_frexp_mant_f32_e64 v11, |v3|
 ; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v14, v3
@@ -14646,11 +15491,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_div_fmas_f32 v14, v14, v17, v18
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v15
 ; GFX10-NEXT:    v_div_fixup_f32 v14, v14, v12, 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB12_31
-; GFX10-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB12_35
+; GFX10-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 12
-; GFX10-NEXT:  .LBB12_29: ; %frem.loop_body
+; GFX10-NEXT:  .LBB12_33: ; %frem.loop_body
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v16, v13
 ; GFX10-NEXT:    s_add_i32 s2, s2, -12
@@ -14662,11 +15507,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_add_f32_e32 v15, v13, v12
 ; GFX10-NEXT:    v_cndmask_b32_e32 v13, v13, v15, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v13, v13, 12
-; GFX10-NEXT:    s_cbranch_scc1 .LBB12_29
-; GFX10-NEXT:  ; %bb.30: ; %Flow
+; GFX10-NEXT:    s_cbranch_scc1 .LBB12_33
+; GFX10-NEXT:  ; %bb.34: ; %Flow
 ; GFX10-NEXT:    v_mov_b32_e32 v15, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v13, v16
-; GFX10-NEXT:  .LBB12_31: ; %frem.loop_exit
+; GFX10-NEXT:  .LBB12_35: ; %frem.loop_exit
 ; GFX10-NEXT:    v_add_nc_u32_e32 v15, -11, v15
 ; GFX10-NEXT:    v_ldexp_f32 v13, v13, v15
 ; GFX10-NEXT:    v_mul_f32_e32 v14, v13, v14
@@ -14677,7 +15522,7 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_cndmask_b32_e32 v12, v13, v12, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f32 v11, v12, v11
 ; GFX10-NEXT:    v_bfi_b32 v11, 0x7fffffff, v11, v3
-; GFX10-NEXT:  .LBB12_32: ; %Flow116
+; GFX10-NEXT:  .LBB12_36: ; %Flow116
 ; GFX10-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v4
 ; GFX10-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v0|
 ; GFX10-NEXT:    v_mov_b32_e32 v4, 0
@@ -14715,13 +15560,19 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:  ; %bb.1: ; %frem.else78
 ; GFX11-NEXT:    v_and_b32_e32 v8, 0x80000000, v0
 ; GFX11-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v0|, |v4|
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX11-NEXT:    s_mov_b32 s2, 0
 ; GFX11-NEXT:    v_cndmask_b32_e32 v8, v0, v8, vcc_lo
-; GFX11-NEXT:    s_cbranch_execz .LBB12_3
-; GFX11-NEXT:    s_branch .LBB12_8
+; GFX11-NEXT:    s_branch .LBB12_3
 ; GFX11-NEXT:  .LBB12_2:
+; GFX11-NEXT:    s_mov_b32 s2, -1
 ; GFX11-NEXT:    ; implicit-def: $vgpr8
-; GFX11-NEXT:  .LBB12_3: ; %frem.compute77
+; GFX11-NEXT:  .LBB12_3: ; %Flow127
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB12_9
+; GFX11-NEXT:  ; %bb.4: ; %frem.compute77
 ; GFX11-NEXT:    v_frexp_mant_f32_e64 v9, |v4|
 ; GFX11-NEXT:    v_frexp_mant_f32_e64 v8, |v0|
 ; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v11, v0
@@ -14756,12 +15607,12 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v12
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_div_fixup_f32 v11, v11, v9, 1.0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB12_7
-; GFX11-NEXT:  ; %bb.4: ; %frem.loop_body85.preheader
+; GFX11-NEXT:    s_cbranch_vccnz .LBB12_8
+; GFX11-NEXT:  ; %bb.5: ; %frem.loop_body85.preheader
 ; GFX11-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_add_i32 s2, s2, 12
-; GFX11-NEXT:  .LBB12_5: ; %frem.loop_body85
+; GFX11-NEXT:  .LBB12_6: ; %frem.loop_body85
 ; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v13, v10
@@ -14777,11 +15628,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_cndmask_b32_e32 v10, v10, v12, vcc_lo
 ; GFX11-NEXT:    v_ldexp_f32 v10, v10, 12
-; GFX11-NEXT:    s_cbranch_scc1 .LBB12_5
-; GFX11-NEXT:  ; %bb.6: ; %Flow125
+; GFX11-NEXT:    s_cbranch_scc1 .LBB12_6
+; GFX11-NEXT:  ; %bb.7: ; %Flow125
 ; GFX11-NEXT:    v_mov_b32_e32 v12, s2
 ; GFX11-NEXT:    v_mov_b32_e32 v10, v13
-; GFX11-NEXT:  .LBB12_7: ; %frem.loop_exit86
+; GFX11-NEXT:  .LBB12_8: ; %frem.loop_exit86
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_add_nc_u32_e32 v12, -11, v12
 ; GFX11-NEXT:    v_ldexp_f32 v10, v10, v12
@@ -14797,20 +15648,26 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_ldexp_f32 v8, v9, v8
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_bfi_b32 v8, 0x7fffffff, v8, v0
-; GFX11-NEXT:  .LBB12_8:
+; GFX11-NEXT:  .LBB12_9:
 ; GFX11-NEXT:    v_cmp_ngt_f32_e64 s2, |v1|, |v5|
 ; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccz .LBB12_10
-; GFX11-NEXT:  ; %bb.9: ; %frem.else47
+; GFX11-NEXT:    s_cbranch_vccz .LBB12_11
+; GFX11-NEXT:  ; %bb.10: ; %frem.else47
 ; GFX11-NEXT:    v_and_b32_e32 v9, 0x80000000, v1
 ; GFX11-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v1|, |v5|
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX11-NEXT:    s_mov_b32 s2, 0
 ; GFX11-NEXT:    v_cndmask_b32_e32 v9, v1, v9, vcc_lo
-; GFX11-NEXT:    s_cbranch_execz .LBB12_11
-; GFX11-NEXT:    s_branch .LBB12_16
-; GFX11-NEXT:  .LBB12_10:
+; GFX11-NEXT:    s_branch .LBB12_12
+; GFX11-NEXT:  .LBB12_11:
+; GFX11-NEXT:    s_mov_b32 s2, -1
 ; GFX11-NEXT:    ; implicit-def: $vgpr9
-; GFX11-NEXT:  .LBB12_11: ; %frem.compute46
+; GFX11-NEXT:  .LBB12_12: ; %Flow123
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB12_18
+; GFX11-NEXT:  ; %bb.13: ; %frem.compute46
 ; GFX11-NEXT:    v_frexp_mant_f32_e64 v10, |v5|
 ; GFX11-NEXT:    v_frexp_mant_f32_e64 v9, |v1|
 ; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v12, v1
@@ -14845,12 +15702,12 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v13
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_div_fixup_f32 v12, v12, v10, 1.0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB12_15
-; GFX11-NEXT:  ; %bb.12: ; %frem.loop_body54.preheader
+; GFX11-NEXT:    s_cbranch_vccnz .LBB12_17
+; GFX11-NEXT:  ; %bb.14: ; %frem.loop_body54.preheader
 ; GFX11-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_add_i32 s2, s2, 12
-; GFX11-NEXT:  .LBB12_13: ; %frem.loop_body54
+; GFX11-NEXT:  .LBB12_15: ; %frem.loop_body54
 ; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v14, v11
@@ -14866,11 +15723,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_cndmask_b32_e32 v11, v11, v13, vcc_lo
 ; GFX11-NEXT:    v_ldexp_f32 v11, v11, 12
-; GFX11-NEXT:    s_cbranch_scc1 .LBB12_13
-; GFX11-NEXT:  ; %bb.14: ; %Flow121
+; GFX11-NEXT:    s_cbranch_scc1 .LBB12_15
+; GFX11-NEXT:  ; %bb.16: ; %Flow121
 ; GFX11-NEXT:    v_mov_b32_e32 v13, s2
 ; GFX11-NEXT:    v_mov_b32_e32 v11, v14
-; GFX11-NEXT:  .LBB12_15: ; %frem.loop_exit55
+; GFX11-NEXT:  .LBB12_17: ; %frem.loop_exit55
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_add_nc_u32_e32 v13, -11, v13
 ; GFX11-NEXT:    v_ldexp_f32 v11, v11, v13
@@ -14886,20 +15743,26 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_ldexp_f32 v9, v10, v9
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_bfi_b32 v9, 0x7fffffff, v9, v1
-; GFX11-NEXT:  .LBB12_16:
+; GFX11-NEXT:  .LBB12_18:
 ; GFX11-NEXT:    v_cmp_ngt_f32_e64 s2, |v2|, |v6|
 ; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccz .LBB12_18
-; GFX11-NEXT:  ; %bb.17: ; %frem.else16
+; GFX11-NEXT:    s_cbranch_vccz .LBB12_20
+; GFX11-NEXT:  ; %bb.19: ; %frem.else16
 ; GFX11-NEXT:    v_and_b32_e32 v10, 0x80000000, v2
 ; GFX11-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v2|, |v6|
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX11-NEXT:    s_mov_b32 s2, 0
 ; GFX11-NEXT:    v_cndmask_b32_e32 v10, v2, v10, vcc_lo
-; GFX11-NEXT:    s_cbranch_execz .LBB12_19
-; GFX11-NEXT:    s_branch .LBB12_24
-; GFX11-NEXT:  .LBB12_18:
+; GFX11-NEXT:    s_branch .LBB12_21
+; GFX11-NEXT:  .LBB12_20:
+; GFX11-NEXT:    s_mov_b32 s2, -1
 ; GFX11-NEXT:    ; implicit-def: $vgpr10
-; GFX11-NEXT:  .LBB12_19: ; %frem.compute15
+; GFX11-NEXT:  .LBB12_21: ; %Flow119
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB12_27
+; GFX11-NEXT:  ; %bb.22: ; %frem.compute15
 ; GFX11-NEXT:    v_frexp_mant_f32_e64 v11, |v6|
 ; GFX11-NEXT:    v_frexp_mant_f32_e64 v10, |v2|
 ; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v13, v2
@@ -14934,12 +15797,12 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v14
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_div_fixup_f32 v13, v13, v11, 1.0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB12_23
-; GFX11-NEXT:  ; %bb.20: ; %frem.loop_body23.preheader
+; GFX11-NEXT:    s_cbranch_vccnz .LBB12_26
+; GFX11-NEXT:  ; %bb.23: ; %frem.loop_body23.preheader
 ; GFX11-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_add_i32 s2, s2, 12
-; GFX11-NEXT:  .LBB12_21: ; %frem.loop_body23
+; GFX11-NEXT:  .LBB12_24: ; %frem.loop_body23
 ; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v15, v12
@@ -14955,11 +15818,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_cndmask_b32_e32 v12, v12, v14, vcc_lo
 ; GFX11-NEXT:    v_ldexp_f32 v12, v12, 12
-; GFX11-NEXT:    s_cbranch_scc1 .LBB12_21
-; GFX11-NEXT:  ; %bb.22: ; %Flow117
+; GFX11-NEXT:    s_cbranch_scc1 .LBB12_24
+; GFX11-NEXT:  ; %bb.25: ; %Flow117
 ; GFX11-NEXT:    v_mov_b32_e32 v14, s2
 ; GFX11-NEXT:    v_mov_b32_e32 v12, v15
-; GFX11-NEXT:  .LBB12_23: ; %frem.loop_exit24
+; GFX11-NEXT:  .LBB12_26: ; %frem.loop_exit24
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_add_nc_u32_e32 v14, -11, v14
 ; GFX11-NEXT:    v_ldexp_f32 v12, v12, v14
@@ -14975,20 +15838,26 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_ldexp_f32 v10, v11, v10
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_bfi_b32 v10, 0x7fffffff, v10, v2
-; GFX11-NEXT:  .LBB12_24:
+; GFX11-NEXT:  .LBB12_27:
 ; GFX11-NEXT:    v_cmp_ngt_f32_e64 s2, |v3|, |v7|
 ; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccz .LBB12_26
-; GFX11-NEXT:  ; %bb.25: ; %frem.else
+; GFX11-NEXT:    s_cbranch_vccz .LBB12_29
+; GFX11-NEXT:  ; %bb.28: ; %frem.else
 ; GFX11-NEXT:    v_and_b32_e32 v11, 0x80000000, v3
 ; GFX11-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v3|, |v7|
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX11-NEXT:    s_mov_b32 s2, 0
 ; GFX11-NEXT:    v_cndmask_b32_e32 v11, v3, v11, vcc_lo
-; GFX11-NEXT:    s_cbranch_execz .LBB12_27
-; GFX11-NEXT:    s_branch .LBB12_32
-; GFX11-NEXT:  .LBB12_26:
+; GFX11-NEXT:    s_branch .LBB12_30
+; GFX11-NEXT:  .LBB12_29:
+; GFX11-NEXT:    s_mov_b32 s2, -1
 ; GFX11-NEXT:    ; implicit-def: $vgpr11
-; GFX11-NEXT:  .LBB12_27: ; %frem.compute
+; GFX11-NEXT:  .LBB12_30: ; %Flow115
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB12_36
+; GFX11-NEXT:  ; %bb.31: ; %frem.compute
 ; GFX11-NEXT:    v_frexp_mant_f32_e64 v12, |v7|
 ; GFX11-NEXT:    v_frexp_mant_f32_e64 v11, |v3|
 ; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v14, v3
@@ -15023,12 +15892,12 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v15
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_div_fixup_f32 v14, v14, v12, 1.0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB12_31
-; GFX11-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; GFX11-NEXT:    s_cbranch_vccnz .LBB12_35
+; GFX11-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; GFX11-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_add_i32 s2, s2, 12
-; GFX11-NEXT:  .LBB12_29: ; %frem.loop_body
+; GFX11-NEXT:  .LBB12_33: ; %frem.loop_body
 ; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_mov_b32_e32 v16, v13
@@ -15044,11 +15913,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_cndmask_b32_e32 v13, v13, v15, vcc_lo
 ; GFX11-NEXT:    v_ldexp_f32 v13, v13, 12
-; GFX11-NEXT:    s_cbranch_scc1 .LBB12_29
-; GFX11-NEXT:  ; %bb.30: ; %Flow
+; GFX11-NEXT:    s_cbranch_scc1 .LBB12_33
+; GFX11-NEXT:  ; %bb.34: ; %Flow
 ; GFX11-NEXT:    v_mov_b32_e32 v15, s2
 ; GFX11-NEXT:    v_mov_b32_e32 v13, v16
-; GFX11-NEXT:  .LBB12_31: ; %frem.loop_exit
+; GFX11-NEXT:  .LBB12_35: ; %frem.loop_exit
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_add_nc_u32_e32 v15, -11, v15
 ; GFX11-NEXT:    v_ldexp_f32 v13, v13, v15
@@ -15064,7 +15933,7 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_ldexp_f32 v11, v12, v11
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_bfi_b32 v11, 0x7fffffff, v11, v3
-; GFX11-NEXT:  .LBB12_32: ; %Flow116
+; GFX11-NEXT:  .LBB12_36: ; %Flow116
 ; GFX11-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v4
 ; GFX11-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v0|
 ; GFX11-NEXT:    v_mov_b32_e32 v4, 0
@@ -15113,14 +15982,21 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    s_and_b32 s12, 0x80000000, s8
 ; GFX1150-NEXT:    s_cmp_eq_f32 s5, s11
 ; GFX1150-NEXT:    v_mov_b32_e32 v0, s12
+; GFX1150-NEXT:    s_mov_b32 s11, 0
 ; GFX1150-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v0, s8, v0, vcc_lo
-; GFX1150-NEXT:    s_cbranch_execz .LBB12_3
-; GFX1150-NEXT:    s_branch .LBB12_8
+; GFX1150-NEXT:    s_branch .LBB12_3
 ; GFX1150-NEXT:  .LBB12_2:
+; GFX1150-NEXT:    s_mov_b32 s11, -1
 ; GFX1150-NEXT:    ; implicit-def: $vgpr0
-; GFX1150-NEXT:  .LBB12_3: ; %frem.compute77
+; GFX1150-NEXT:  .LBB12_3: ; %Flow127
+; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-NEXT:    s_and_b32 s11, s11, exec_lo
+; GFX1150-NEXT:    s_cselect_b32 s11, 1, 0
+; GFX1150-NEXT:    s_cmp_lg_u32 s11, 1
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_9
+; GFX1150-NEXT:  ; %bb.4: ; %frem.compute77
 ; GFX1150-NEXT:    v_frexp_mant_f32_e64 v1, |s6|
 ; GFX1150-NEXT:    v_frexp_mant_f32_e64 v0, |s8|
 ; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v3, s8
@@ -15154,12 +16030,12 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_div_fmas_f32 v3, v3, v6, v7
 ; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v4
 ; GFX1150-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.0
-; GFX1150-NEXT:    s_cbranch_vccnz .LBB12_7
-; GFX1150-NEXT:  ; %bb.4: ; %frem.loop_body85.preheader
+; GFX1150-NEXT:    s_cbranch_vccnz .LBB12_8
+; GFX1150-NEXT:  ; %bb.5: ; %frem.loop_body85.preheader
 ; GFX1150-NEXT:    s_sub_i32 s11, s11, s12
 ; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-NEXT:    s_add_i32 s11, s11, 12
-; GFX1150-NEXT:  .LBB12_5: ; %frem.loop_body85
+; GFX1150-NEXT:  .LBB12_6: ; %frem.loop_body85
 ; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-NEXT:    v_mov_b32_e32 v5, v2
@@ -15177,11 +16053,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f32 v2, v2, 12
-; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_5
-; GFX1150-NEXT:  ; %bb.6: ; %Flow125
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_6
+; GFX1150-NEXT:  ; %bb.7: ; %Flow125
 ; GFX1150-NEXT:    v_mov_b32_e32 v4, s11
 ; GFX1150-NEXT:    v_mov_b32_e32 v2, v5
-; GFX1150-NEXT:  .LBB12_7: ; %frem.loop_exit86
+; GFX1150-NEXT:  .LBB12_8: ; %frem.loop_exit86
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_add_nc_u32_e32 v4, -11, v4
 ; GFX1150-NEXT:    v_ldexp_f32 v2, v2, v4
@@ -15198,24 +16074,31 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f32 v0, v1, v0
 ; GFX1150-NEXT:    v_bfi_b32 v0, 0x7fffffff, v0, s8
-; GFX1150-NEXT:  .LBB12_8:
+; GFX1150-NEXT:  .LBB12_9:
 ; GFX1150-NEXT:    s_and_b32 s8, s10, 0x7fffffff
 ; GFX1150-NEXT:    s_and_b32 s11, s4, 0x7fffffff
 ; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-NEXT:    s_cmp_ngt_f32 s8, s11
-; GFX1150-NEXT:    s_cbranch_scc0 .LBB12_10
-; GFX1150-NEXT:  ; %bb.9: ; %frem.else47
+; GFX1150-NEXT:    s_cbranch_scc0 .LBB12_11
+; GFX1150-NEXT:  ; %bb.10: ; %frem.else47
 ; GFX1150-NEXT:    s_and_b32 s12, 0x80000000, s10
 ; GFX1150-NEXT:    s_cmp_eq_f32 s8, s11
 ; GFX1150-NEXT:    v_mov_b32_e32 v1, s12
+; GFX1150-NEXT:    s_mov_b32 s11, 0
 ; GFX1150-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v1, s10, v1, vcc_lo
-; GFX1150-NEXT:    s_cbranch_execz .LBB12_11
-; GFX1150-NEXT:    s_branch .LBB12_16
-; GFX1150-NEXT:  .LBB12_10:
+; GFX1150-NEXT:    s_branch .LBB12_12
+; GFX1150-NEXT:  .LBB12_11:
+; GFX1150-NEXT:    s_mov_b32 s11, -1
 ; GFX1150-NEXT:    ; implicit-def: $vgpr1
-; GFX1150-NEXT:  .LBB12_11: ; %frem.compute46
+; GFX1150-NEXT:  .LBB12_12: ; %Flow123
+; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-NEXT:    s_and_b32 s11, s11, exec_lo
+; GFX1150-NEXT:    s_cselect_b32 s11, 1, 0
+; GFX1150-NEXT:    s_cmp_lg_u32 s11, 1
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_18
+; GFX1150-NEXT:  ; %bb.13: ; %frem.compute46
 ; GFX1150-NEXT:    v_frexp_mant_f32_e64 v2, |s4|
 ; GFX1150-NEXT:    v_frexp_mant_f32_e64 v1, |s10|
 ; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v4, s10
@@ -15249,12 +16132,12 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_div_fmas_f32 v4, v4, v7, v8
 ; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v5
 ; GFX1150-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.0
-; GFX1150-NEXT:    s_cbranch_vccnz .LBB12_15
-; GFX1150-NEXT:  ; %bb.12: ; %frem.loop_body54.preheader
+; GFX1150-NEXT:    s_cbranch_vccnz .LBB12_17
+; GFX1150-NEXT:  ; %bb.14: ; %frem.loop_body54.preheader
 ; GFX1150-NEXT:    s_sub_i32 s11, s11, s12
 ; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-NEXT:    s_add_i32 s11, s11, 12
-; GFX1150-NEXT:  .LBB12_13: ; %frem.loop_body54
+; GFX1150-NEXT:  .LBB12_15: ; %frem.loop_body54
 ; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-NEXT:    v_mov_b32_e32 v6, v3
@@ -15272,11 +16155,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f32 v3, v3, 12
-; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_13
-; GFX1150-NEXT:  ; %bb.14: ; %Flow121
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_15
+; GFX1150-NEXT:  ; %bb.16: ; %Flow121
 ; GFX1150-NEXT:    v_mov_b32_e32 v5, s11
 ; GFX1150-NEXT:    v_mov_b32_e32 v3, v6
-; GFX1150-NEXT:  .LBB12_15: ; %frem.loop_exit55
+; GFX1150-NEXT:  .LBB12_17: ; %frem.loop_exit55
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_add_nc_u32_e32 v5, -11, v5
 ; GFX1150-NEXT:    v_ldexp_f32 v3, v3, v5
@@ -15293,24 +16176,31 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f32 v1, v2, v1
 ; GFX1150-NEXT:    v_bfi_b32 v1, 0x7fffffff, v1, s10
-; GFX1150-NEXT:  .LBB12_16:
+; GFX1150-NEXT:  .LBB12_18:
 ; GFX1150-NEXT:    s_and_b32 s10, s9, 0x7fffffff
 ; GFX1150-NEXT:    s_and_b32 s11, s3, 0x7fffffff
 ; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-NEXT:    s_cmp_ngt_f32 s10, s11
-; GFX1150-NEXT:    s_cbranch_scc0 .LBB12_18
-; GFX1150-NEXT:  ; %bb.17: ; %frem.else16
+; GFX1150-NEXT:    s_cbranch_scc0 .LBB12_20
+; GFX1150-NEXT:  ; %bb.19: ; %frem.else16
 ; GFX1150-NEXT:    s_and_b32 s12, 0x80000000, s9
 ; GFX1150-NEXT:    s_cmp_eq_f32 s10, s11
 ; GFX1150-NEXT:    v_mov_b32_e32 v2, s12
+; GFX1150-NEXT:    s_mov_b32 s11, 0
 ; GFX1150-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v2, s9, v2, vcc_lo
-; GFX1150-NEXT:    s_cbranch_execz .LBB12_19
-; GFX1150-NEXT:    s_branch .LBB12_24
-; GFX1150-NEXT:  .LBB12_18:
+; GFX1150-NEXT:    s_branch .LBB12_21
+; GFX1150-NEXT:  .LBB12_20:
+; GFX1150-NEXT:    s_mov_b32 s11, -1
 ; GFX1150-NEXT:    ; implicit-def: $vgpr2
-; GFX1150-NEXT:  .LBB12_19: ; %frem.compute15
+; GFX1150-NEXT:  .LBB12_21: ; %Flow119
+; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-NEXT:    s_and_b32 s11, s11, exec_lo
+; GFX1150-NEXT:    s_cselect_b32 s11, 1, 0
+; GFX1150-NEXT:    s_cmp_lg_u32 s11, 1
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_27
+; GFX1150-NEXT:  ; %bb.22: ; %frem.compute15
 ; GFX1150-NEXT:    v_frexp_mant_f32_e64 v3, |s3|
 ; GFX1150-NEXT:    v_frexp_mant_f32_e64 v2, |s9|
 ; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v5, s9
@@ -15344,12 +16234,12 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_div_fmas_f32 v5, v5, v8, v9
 ; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v6
 ; GFX1150-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX1150-NEXT:    s_cbranch_vccnz .LBB12_23
-; GFX1150-NEXT:  ; %bb.20: ; %frem.loop_body23.preheader
+; GFX1150-NEXT:    s_cbranch_vccnz .LBB12_26
+; GFX1150-NEXT:  ; %bb.23: ; %frem.loop_body23.preheader
 ; GFX1150-NEXT:    s_sub_i32 s11, s11, s12
 ; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-NEXT:    s_add_i32 s11, s11, 12
-; GFX1150-NEXT:  .LBB12_21: ; %frem.loop_body23
+; GFX1150-NEXT:  .LBB12_24: ; %frem.loop_body23
 ; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-NEXT:    v_mov_b32_e32 v7, v4
@@ -15367,11 +16257,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f32 v4, v4, 12
-; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_21
-; GFX1150-NEXT:  ; %bb.22: ; %Flow117
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_24
+; GFX1150-NEXT:  ; %bb.25: ; %Flow117
 ; GFX1150-NEXT:    v_mov_b32_e32 v6, s11
 ; GFX1150-NEXT:    v_mov_b32_e32 v4, v7
-; GFX1150-NEXT:  .LBB12_23: ; %frem.loop_exit24
+; GFX1150-NEXT:  .LBB12_26: ; %frem.loop_exit24
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_add_nc_u32_e32 v6, -11, v6
 ; GFX1150-NEXT:    v_ldexp_f32 v4, v4, v6
@@ -15388,24 +16278,31 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f32 v2, v3, v2
 ; GFX1150-NEXT:    v_bfi_b32 v2, 0x7fffffff, v2, s9
-; GFX1150-NEXT:  .LBB12_24:
+; GFX1150-NEXT:  .LBB12_27:
 ; GFX1150-NEXT:    s_and_b32 s9, s7, 0x7fffffff
 ; GFX1150-NEXT:    s_and_b32 s11, s2, 0x7fffffff
 ; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-NEXT:    s_cmp_ngt_f32 s9, s11
-; GFX1150-NEXT:    s_cbranch_scc0 .LBB12_26
-; GFX1150-NEXT:  ; %bb.25: ; %frem.else
+; GFX1150-NEXT:    s_cbranch_scc0 .LBB12_29
+; GFX1150-NEXT:  ; %bb.28: ; %frem.else
 ; GFX1150-NEXT:    s_and_b32 s12, 0x80000000, s7
 ; GFX1150-NEXT:    s_cmp_eq_f32 s9, s11
 ; GFX1150-NEXT:    v_mov_b32_e32 v3, s12
+; GFX1150-NEXT:    s_mov_b32 s11, 0
 ; GFX1150-NEXT:    s_cselect_b32 vcc_lo, -1, 0
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v3, s7, v3, vcc_lo
-; GFX1150-NEXT:    s_cbranch_execz .LBB12_27
-; GFX1150-NEXT:    s_branch .LBB12_32
-; GFX1150-NEXT:  .LBB12_26:
+; GFX1150-NEXT:    s_branch .LBB12_30
+; GFX1150-NEXT:  .LBB12_29:
+; GFX1150-NEXT:    s_mov_b32 s11, -1
 ; GFX1150-NEXT:    ; implicit-def: $vgpr3
-; GFX1150-NEXT:  .LBB12_27: ; %frem.compute
+; GFX1150-NEXT:  .LBB12_30: ; %Flow115
+; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-NEXT:    s_and_b32 s11, s11, exec_lo
+; GFX1150-NEXT:    s_cselect_b32 s11, 1, 0
+; GFX1150-NEXT:    s_cmp_lg_u32 s11, 1
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_36
+; GFX1150-NEXT:  ; %bb.31: ; %frem.compute
 ; GFX1150-NEXT:    v_frexp_mant_f32_e64 v4, |s2|
 ; GFX1150-NEXT:    v_frexp_mant_f32_e64 v3, |s7|
 ; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v6, s7
@@ -15439,12 +16336,12 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_div_fmas_f32 v6, v6, v9, v10
 ; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v7
 ; GFX1150-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.0
-; GFX1150-NEXT:    s_cbranch_vccnz .LBB12_31
-; GFX1150-NEXT:  ; %bb.28: ; %frem.loop_body.preheader
+; GFX1150-NEXT:    s_cbranch_vccnz .LBB12_35
+; GFX1150-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
 ; GFX1150-NEXT:    s_sub_i32 s11, s11, s12
 ; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-NEXT:    s_add_i32 s11, s11, 12
-; GFX1150-NEXT:  .LBB12_29: ; %frem.loop_body
+; GFX1150-NEXT:  .LBB12_33: ; %frem.loop_body
 ; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-NEXT:    v_mov_b32_e32 v8, v5
@@ -15462,11 +16359,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f32 v5, v5, 12
-; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_29
-; GFX1150-NEXT:  ; %bb.30: ; %Flow
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_33
+; GFX1150-NEXT:  ; %bb.34: ; %Flow
 ; GFX1150-NEXT:    v_mov_b32_e32 v7, s11
 ; GFX1150-NEXT:    v_mov_b32_e32 v5, v8
-; GFX1150-NEXT:  .LBB12_31: ; %frem.loop_exit
+; GFX1150-NEXT:  .LBB12_35: ; %frem.loop_exit
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_add_nc_u32_e32 v7, -11, v7
 ; GFX1150-NEXT:    v_ldexp_f32 v5, v5, v7
@@ -15483,7 +16380,7 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f32 v3, v4, v3
 ; GFX1150-NEXT:    v_bfi_b32 v3, 0x7fffffff, v3, s7
-; GFX1150-NEXT:  .LBB12_32: ; %Flow116
+; GFX1150-NEXT:  .LBB12_36: ; %Flow116
 ; GFX1150-NEXT:    s_cmp_lg_f32 s6, 0
 ; GFX1150-NEXT:    v_mov_b32_e32 v4, 0
 ; GFX1150-NEXT:    s_cselect_b32 s6, -1, 0
@@ -15539,18 +16436,23 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    s_and_b32 s11, s6, 0x7fffffff
 ; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1200-NEXT:    s_cmp_ngt_f32 s5, s11
-; GFX1200-NEXT:    s_cbranch_scc0 .LBB12_3
+; GFX1200-NEXT:    s_cbranch_scc0 .LBB12_2
 ; GFX1200-NEXT:  ; %bb.1: ; %frem.else78
 ; GFX1200-NEXT:    s_and_b32 s12, 0x80000000, s8
 ; GFX1200-NEXT:    s_cmp_eq_f32 s5, s11
 ; GFX1200-NEXT:    s_cselect_b32 s11, s12, s8
-; GFX1200-NEXT:    s_cbranch_execz .LBB12_4
-; GFX1200-NEXT:  ; %bb.2:
-; GFX1200-NEXT:    v_mov_b32_e32 v0, s11
-; GFX1200-NEXT:    s_branch .LBB12_9
-; GFX1200-NEXT:  .LBB12_3:
+; GFX1200-NEXT:    s_mov_b32 s12, 0
+; GFX1200-NEXT:    s_branch .LBB12_3
+; GFX1200-NEXT:  .LBB12_2:
+; GFX1200-NEXT:    s_mov_b32 s12, -1
 ; GFX1200-NEXT:    ; implicit-def: $sgpr11
-; GFX1200-NEXT:  .LBB12_4: ; %frem.compute77
+; GFX1200-NEXT:  .LBB12_3: ; %Flow127
+; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1200-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX1200-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX1200-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB12_9
+; GFX1200-NEXT:  ; %bb.4: ; %frem.compute77
 ; GFX1200-NEXT:    v_frexp_mant_f32_e64 v1, |s6|
 ; GFX1200-NEXT:    v_frexp_mant_f32_e64 v0, |s8|
 ; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v3, s8
@@ -15630,24 +16532,31 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_ldexp_f32 v0, v1, v0
 ; GFX1200-NEXT:    v_bfi_b32 v0, 0x7fffffff, v0, s8
+; GFX1200-NEXT:    s_branch .LBB12_10
 ; GFX1200-NEXT:  .LBB12_9:
+; GFX1200-NEXT:    v_mov_b32_e32 v0, s11
+; GFX1200-NEXT:  .LBB12_10:
 ; GFX1200-NEXT:    s_and_b32 s8, s10, 0x7fffffff
 ; GFX1200-NEXT:    s_and_b32 s11, s4, 0x7fffffff
 ; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-NEXT:    s_cmp_ngt_f32 s8, s11
 ; GFX1200-NEXT:    s_cbranch_scc0 .LBB12_12
-; GFX1200-NEXT:  ; %bb.10: ; %frem.else47
+; GFX1200-NEXT:  ; %bb.11: ; %frem.else47
 ; GFX1200-NEXT:    s_and_b32 s12, 0x80000000, s10
 ; GFX1200-NEXT:    s_cmp_eq_f32 s8, s11
 ; GFX1200-NEXT:    s_cselect_b32 s11, s12, s10
-; GFX1200-NEXT:    s_cbranch_execz .LBB12_13
-; GFX1200-NEXT:  ; %bb.11:
-; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX1200-NEXT:    v_mov_b32_e32 v1, s11
-; GFX1200-NEXT:    s_branch .LBB12_18
+; GFX1200-NEXT:    s_mov_b32 s12, 0
+; GFX1200-NEXT:    s_branch .LBB12_13
 ; GFX1200-NEXT:  .LBB12_12:
+; GFX1200-NEXT:    s_mov_b32 s12, -1
 ; GFX1200-NEXT:    ; implicit-def: $sgpr11
-; GFX1200-NEXT:  .LBB12_13: ; %frem.compute46
+; GFX1200-NEXT:  .LBB12_13: ; %Flow123
+; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1200-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX1200-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX1200-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB12_19
+; GFX1200-NEXT:  ; %bb.14: ; %frem.compute46
 ; GFX1200-NEXT:    v_frexp_mant_f32_e64 v2, |s4|
 ; GFX1200-NEXT:    v_frexp_mant_f32_e64 v1, |s10|
 ; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v4, s10
@@ -15682,13 +16591,13 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    v_div_fmas_f32 v4, v4, v7, v8
 ; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v5
 ; GFX1200-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.0
-; GFX1200-NEXT:    s_cbranch_vccnz .LBB12_17
-; GFX1200-NEXT:  ; %bb.14: ; %frem.loop_body54.preheader
+; GFX1200-NEXT:    s_cbranch_vccnz .LBB12_18
+; GFX1200-NEXT:  ; %bb.15: ; %frem.loop_body54.preheader
 ; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-NEXT:    s_sub_co_i32 s11, s11, s12
 ; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-NEXT:    s_add_co_i32 s11, s11, 12
-; GFX1200-NEXT:  .LBB12_15: ; %frem.loop_body54
+; GFX1200-NEXT:  .LBB12_16: ; %frem.loop_body54
 ; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_mov_b32_e32 v6, v3
@@ -15708,11 +16617,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo
 ; GFX1200-NEXT:    v_ldexp_f32 v3, v3, 12
-; GFX1200-NEXT:    s_cbranch_scc1 .LBB12_15
-; GFX1200-NEXT:  ; %bb.16: ; %Flow121
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB12_16
+; GFX1200-NEXT:  ; %bb.17: ; %Flow121
 ; GFX1200-NEXT:    v_mov_b32_e32 v5, s11
 ; GFX1200-NEXT:    v_mov_b32_e32 v3, v6
-; GFX1200-NEXT:  .LBB12_17: ; %frem.loop_exit55
+; GFX1200-NEXT:  .LBB12_18: ; %frem.loop_exit55
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_add_nc_u32_e32 v5, -11, v5
 ; GFX1200-NEXT:    v_ldexp_f32 v3, v3, v5
@@ -15730,24 +16639,32 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_ldexp_f32 v1, v2, v1
 ; GFX1200-NEXT:    v_bfi_b32 v1, 0x7fffffff, v1, s10
-; GFX1200-NEXT:  .LBB12_18:
+; GFX1200-NEXT:    s_branch .LBB12_20
+; GFX1200-NEXT:  .LBB12_19:
+; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-NEXT:    v_mov_b32_e32 v1, s11
+; GFX1200-NEXT:  .LBB12_20:
 ; GFX1200-NEXT:    s_and_b32 s10, s9, 0x7fffffff
 ; GFX1200-NEXT:    s_and_b32 s11, s3, 0x7fffffff
 ; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-NEXT:    s_cmp_ngt_f32 s10, s11
-; GFX1200-NEXT:    s_cbranch_scc0 .LBB12_21
-; GFX1200-NEXT:  ; %bb.19: ; %frem.else16
+; GFX1200-NEXT:    s_cbranch_scc0 .LBB12_22
+; GFX1200-NEXT:  ; %bb.21: ; %frem.else16
 ; GFX1200-NEXT:    s_and_b32 s12, 0x80000000, s9
 ; GFX1200-NEXT:    s_cmp_eq_f32 s10, s11
 ; GFX1200-NEXT:    s_cselect_b32 s11, s12, s9
-; GFX1200-NEXT:    s_cbranch_execz .LBB12_22
-; GFX1200-NEXT:  ; %bb.20:
-; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX1200-NEXT:    v_mov_b32_e32 v2, s11
-; GFX1200-NEXT:    s_branch .LBB12_27
-; GFX1200-NEXT:  .LBB12_21:
+; GFX1200-NEXT:    s_mov_b32 s12, 0
+; GFX1200-NEXT:    s_branch .LBB12_23
+; GFX1200-NEXT:  .LBB12_22:
+; GFX1200-NEXT:    s_mov_b32 s12, -1
 ; GFX1200-NEXT:    ; implicit-def: $sgpr11
-; GFX1200-NEXT:  .LBB12_22: ; %frem.compute15
+; GFX1200-NEXT:  .LBB12_23: ; %Flow119
+; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1200-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX1200-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX1200-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB12_29
+; GFX1200-NEXT:  ; %bb.24: ; %frem.compute15
 ; GFX1200-NEXT:    v_frexp_mant_f32_e64 v3, |s3|
 ; GFX1200-NEXT:    v_frexp_mant_f32_e64 v2, |s9|
 ; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v5, s9
@@ -15782,13 +16699,13 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    v_div_fmas_f32 v5, v5, v8, v9
 ; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v6
 ; GFX1200-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0
-; GFX1200-NEXT:    s_cbranch_vccnz .LBB12_26
-; GFX1200-NEXT:  ; %bb.23: ; %frem.loop_body23.preheader
+; GFX1200-NEXT:    s_cbranch_vccnz .LBB12_28
+; GFX1200-NEXT:  ; %bb.25: ; %frem.loop_body23.preheader
 ; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-NEXT:    s_sub_co_i32 s11, s11, s12
 ; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-NEXT:    s_add_co_i32 s11, s11, 12
-; GFX1200-NEXT:  .LBB12_24: ; %frem.loop_body23
+; GFX1200-NEXT:  .LBB12_26: ; %frem.loop_body23
 ; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_mov_b32_e32 v7, v4
@@ -15808,11 +16725,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX1200-NEXT:    v_ldexp_f32 v4, v4, 12
-; GFX1200-NEXT:    s_cbranch_scc1 .LBB12_24
-; GFX1200-NEXT:  ; %bb.25: ; %Flow117
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB12_26
+; GFX1200-NEXT:  ; %bb.27: ; %Flow117
 ; GFX1200-NEXT:    v_mov_b32_e32 v6, s11
 ; GFX1200-NEXT:    v_mov_b32_e32 v4, v7
-; GFX1200-NEXT:  .LBB12_26: ; %frem.loop_exit24
+; GFX1200-NEXT:  .LBB12_28: ; %frem.loop_exit24
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_add_nc_u32_e32 v6, -11, v6
 ; GFX1200-NEXT:    v_ldexp_f32 v4, v4, v6
@@ -15830,24 +16747,32 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_ldexp_f32 v2, v3, v2
 ; GFX1200-NEXT:    v_bfi_b32 v2, 0x7fffffff, v2, s9
-; GFX1200-NEXT:  .LBB12_27:
+; GFX1200-NEXT:    s_branch .LBB12_30
+; GFX1200-NEXT:  .LBB12_29:
+; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-NEXT:    v_mov_b32_e32 v2, s11
+; GFX1200-NEXT:  .LBB12_30:
 ; GFX1200-NEXT:    s_and_b32 s9, s7, 0x7fffffff
 ; GFX1200-NEXT:    s_and_b32 s11, s2, 0x7fffffff
 ; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-NEXT:    s_cmp_ngt_f32 s9, s11
-; GFX1200-NEXT:    s_cbranch_scc0 .LBB12_30
-; GFX1200-NEXT:  ; %bb.28: ; %frem.else
+; GFX1200-NEXT:    s_cbranch_scc0 .LBB12_32
+; GFX1200-NEXT:  ; %bb.31: ; %frem.else
 ; GFX1200-NEXT:    s_and_b32 s12, 0x80000000, s7
 ; GFX1200-NEXT:    s_cmp_eq_f32 s9, s11
 ; GFX1200-NEXT:    s_cselect_b32 s11, s12, s7
-; GFX1200-NEXT:    s_cbranch_execz .LBB12_31
-; GFX1200-NEXT:  ; %bb.29:
-; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX1200-NEXT:    v_mov_b32_e32 v3, s11
-; GFX1200-NEXT:    s_branch .LBB12_36
-; GFX1200-NEXT:  .LBB12_30:
+; GFX1200-NEXT:    s_mov_b32 s12, 0
+; GFX1200-NEXT:    s_branch .LBB12_33
+; GFX1200-NEXT:  .LBB12_32:
+; GFX1200-NEXT:    s_mov_b32 s12, -1
 ; GFX1200-NEXT:    ; implicit-def: $sgpr11
-; GFX1200-NEXT:  .LBB12_31: ; %frem.compute
+; GFX1200-NEXT:  .LBB12_33: ; %Flow115
+; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1200-NEXT:    s_and_b32 s12, s12, exec_lo
+; GFX1200-NEXT:    s_cselect_b32 s12, 1, 0
+; GFX1200-NEXT:    s_cmp_lg_u32 s12, 1
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB12_39
+; GFX1200-NEXT:  ; %bb.34: ; %frem.compute
 ; GFX1200-NEXT:    v_frexp_mant_f32_e64 v4, |s2|
 ; GFX1200-NEXT:    v_frexp_mant_f32_e64 v3, |s7|
 ; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v6, s7
@@ -15882,13 +16807,13 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    v_div_fmas_f32 v6, v6, v9, v10
 ; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v7
 ; GFX1200-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.0
-; GFX1200-NEXT:    s_cbranch_vccnz .LBB12_35
-; GFX1200-NEXT:  ; %bb.32: ; %frem.loop_body.preheader
+; GFX1200-NEXT:    s_cbranch_vccnz .LBB12_38
+; GFX1200-NEXT:  ; %bb.35: ; %frem.loop_body.preheader
 ; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-NEXT:    s_sub_co_i32 s11, s11, s12
 ; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-NEXT:    s_add_co_i32 s11, s11, 12
-; GFX1200-NEXT:  .LBB12_33: ; %frem.loop_body
+; GFX1200-NEXT:  .LBB12_36: ; %frem.loop_body
 ; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_mov_b32_e32 v8, v5
@@ -15908,11 +16833,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo
 ; GFX1200-NEXT:    v_ldexp_f32 v5, v5, 12
-; GFX1200-NEXT:    s_cbranch_scc1 .LBB12_33
-; GFX1200-NEXT:  ; %bb.34: ; %Flow
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB12_36
+; GFX1200-NEXT:  ; %bb.37: ; %Flow
 ; GFX1200-NEXT:    v_mov_b32_e32 v7, s11
 ; GFX1200-NEXT:    v_mov_b32_e32 v5, v8
-; GFX1200-NEXT:  .LBB12_35: ; %frem.loop_exit
+; GFX1200-NEXT:  .LBB12_38: ; %frem.loop_exit
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_add_nc_u32_e32 v7, -11, v7
 ; GFX1200-NEXT:    v_ldexp_f32 v5, v5, v7
@@ -15930,7 +16855,11 @@ define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_ldexp_f32 v3, v4, v3
 ; GFX1200-NEXT:    v_bfi_b32 v3, 0x7fffffff, v3, s7
-; GFX1200-NEXT:  .LBB12_36: ; %Flow116
+; GFX1200-NEXT:    s_branch .LBB12_40
+; GFX1200-NEXT:  .LBB12_39:
+; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-NEXT:    v_mov_b32_e32 v3, s11
+; GFX1200-NEXT:  .LBB12_40: ; %Flow116
 ; GFX1200-NEXT:    s_cmp_lg_f32 s6, 0
 ; GFX1200-NEXT:    v_mov_b32_e32 v4, 0
 ; GFX1200-NEXT:    s_cselect_b32 s6, -1, 0
@@ -16003,7 +16932,7 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_readfirstlane_b32 s4, v4
 ; SI-NEXT:    v_readfirstlane_b32 s5, v5
 ; SI-NEXT:    s_and_b64 vcc, exec, s[0:1]
-; SI-NEXT:    s_cbranch_vccz .LBB13_3
+; SI-NEXT:    s_cbranch_vccz .LBB13_2
 ; SI-NEXT:  ; %bb.1: ; %frem.else16
 ; SI-NEXT:    v_mov_b32_e32 v0, s10
 ; SI-NEXT:    v_mov_b32_e32 v1, s11
@@ -16012,14 +16941,17 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
 ; SI-NEXT:    s_cselect_b32 s1, s12, s7
 ; SI-NEXT:    s_cselect_b32 s0, 0, s6
-; SI-NEXT:    s_cbranch_execz .LBB13_4
-; SI-NEXT:  ; %bb.2:
-; SI-NEXT:    v_mov_b32_e32 v0, s0
-; SI-NEXT:    v_mov_b32_e32 v1, s1
-; SI-NEXT:    s_branch .LBB13_9
-; SI-NEXT:  .LBB13_3:
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB13_3
+; SI-NEXT:  .LBB13_2:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
 ; SI-NEXT:    ; implicit-def: $sgpr0_sgpr1
-; SI-NEXT:  .LBB13_4: ; %frem.compute15
+; SI-NEXT:  .LBB13_3: ; %Flow53
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_9
+; SI-NEXT:  ; %bb.4: ; %frem.compute15
 ; SI-NEXT:    s_and_b32 s0, s7, 0x7fffffff
 ; SI-NEXT:    v_frexp_mant_f64_e64 v[0:1], |s[6:7]|
 ; SI-NEXT:    s_cmp_lt_i32 s0, 0x7ff00000
@@ -16118,13 +17050,17 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_ldexp_f64 v[0:1], v[0:1], s14
 ; SI-NEXT:    v_mov_b32_e32 v2, s7
 ; SI-NEXT:    v_bfi_b32 v1, s0, v1, v2
+; SI-NEXT:    s_branch .LBB13_10
 ; SI-NEXT:  .LBB13_9:
+; SI-NEXT:    v_mov_b32_e32 v0, s0
+; SI-NEXT:    v_mov_b32_e32 v1, s1
+; SI-NEXT:  .LBB13_10:
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
 ; SI-NEXT:    v_mov_b32_e32 v3, s5
 ; SI-NEXT:    v_cmp_ngt_f64_e64 s[0:1], |s[2:3]|, |v[2:3]|
 ; SI-NEXT:    s_and_b64 vcc, exec, s[0:1]
 ; SI-NEXT:    s_cbranch_vccz .LBB13_12
-; SI-NEXT:  ; %bb.10: ; %frem.else
+; SI-NEXT:  ; %bb.11: ; %frem.else
 ; SI-NEXT:    v_mov_b32_e32 v2, s4
 ; SI-NEXT:    v_mov_b32_e32 v3, s5
 ; SI-NEXT:    v_cmp_eq_f64_e64 s[0:1], |s[2:3]|, |v[2:3]|
@@ -16132,14 +17068,17 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
 ; SI-NEXT:    s_cselect_b32 s1, s12, s3
 ; SI-NEXT:    s_cselect_b32 s0, 0, s2
-; SI-NEXT:    s_cbranch_execz .LBB13_13
-; SI-NEXT:  ; %bb.11:
-; SI-NEXT:    v_mov_b32_e32 v3, s1
-; SI-NEXT:    v_mov_b32_e32 v2, s0
-; SI-NEXT:    s_branch .LBB13_18
+; SI-NEXT:    s_mov_b64 s[12:13], 0
+; SI-NEXT:    s_branch .LBB13_13
 ; SI-NEXT:  .LBB13_12:
+; SI-NEXT:    s_mov_b64 s[12:13], -1
 ; SI-NEXT:    ; implicit-def: $sgpr0_sgpr1
-; SI-NEXT:  .LBB13_13: ; %frem.compute
+; SI-NEXT:  .LBB13_13: ; %Flow49
+; SI-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s12, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB13_19
+; SI-NEXT:  ; %bb.14: ; %frem.compute
 ; SI-NEXT:    s_and_b32 s0, s3, 0x7fffffff
 ; SI-NEXT:    v_frexp_mant_f64_e64 v[2:3], |s[2:3]|
 ; SI-NEXT:    s_cmp_lt_i32 s0, 0x7ff00000
@@ -16185,14 +17124,14 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_div_fmas_f64 v[6:7], v[14:15], v[8:9], v[12:13]
 ; SI-NEXT:    s_cmp_lt_i32 s16, 27
 ; SI-NEXT:    v_div_fixup_f64 v[6:7], v[6:7], v[2:3], 1.0
-; SI-NEXT:    s_cbranch_scc1 .LBB13_17
-; SI-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
+; SI-NEXT:    s_cbranch_scc1 .LBB13_18
+; SI-NEXT:  ; %bb.15: ; %frem.loop_body.preheader
 ; SI-NEXT:    s_sub_i32 s0, s13, s17
 ; SI-NEXT:    s_add_i32 s16, s0, 26
 ; SI-NEXT:    s_mov_b32 s13, 0x432fffff
 ; SI-NEXT:    v_mov_b32_e32 v12, 0x43300000
 ; SI-NEXT:    v_mov_b32_e32 v8, 0
-; SI-NEXT:  .LBB13_15: ; %frem.loop_body
+; SI-NEXT:  .LBB13_16: ; %frem.loop_body
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; SI-NEXT:    v_mov_b32_e32 v11, v5
 ; SI-NEXT:    v_mov_b32_e32 v10, v4
@@ -16211,11 +17150,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_cndmask_b32_e32 v5, v5, v14, vcc
 ; SI-NEXT:    v_cndmask_b32_e32 v4, v4, v13, vcc
 ; SI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 26
-; SI-NEXT:    s_cbranch_scc1 .LBB13_15
-; SI-NEXT:  ; %bb.16: ; %Flow
+; SI-NEXT:    s_cbranch_scc1 .LBB13_16
+; SI-NEXT:  ; %bb.17: ; %Flow
 ; SI-NEXT:    v_mov_b32_e32 v4, v10
 ; SI-NEXT:    v_mov_b32_e32 v5, v11
-; SI-NEXT:  .LBB13_17: ; %frem.loop_exit
+; SI-NEXT:  .LBB13_18: ; %frem.loop_exit
 ; SI-NEXT:    s_sub_i32 s0, s16, 25
 ; SI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], s0
 ; SI-NEXT:    s_mov_b32 s0, -1
@@ -16238,7 +17177,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; SI-NEXT:    v_ldexp_f64 v[2:3], v[2:3], s14
 ; SI-NEXT:    v_mov_b32_e32 v4, s3
 ; SI-NEXT:    v_bfi_b32 v3, s0, v3, v4
-; SI-NEXT:  .LBB13_18: ; %Flow50
+; SI-NEXT:    s_branch .LBB13_20
+; SI-NEXT:  .LBB13_19:
+; SI-NEXT:    v_mov_b32_e32 v3, s1
+; SI-NEXT:    v_mov_b32_e32 v2, s0
+; SI-NEXT:  .LBB13_20: ; %Flow50
 ; SI-NEXT:    v_mov_b32_e32 v4, 0
 ; SI-NEXT:    v_mov_b32_e32 v5, 0x7ff00000
 ; SI-NEXT:    v_cmp_lg_f64_e64 s[0:1], s[10:11], 0
@@ -16277,13 +17220,19 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:  ; %bb.1: ; %frem.else16
 ; CI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, |v[4:5]|
 ; CI-NEXT:    v_and_b32_e32 v8, 0x80000000, v1
+; CI-NEXT:    s_mov_b64 s[2:3], 0
 ; CI-NEXT:    v_cndmask_b32_e32 v9, v1, v8, vcc
 ; CI-NEXT:    v_cndmask_b32_e64 v8, v0, 0, vcc
-; CI-NEXT:    s_cbranch_execz .LBB13_3
-; CI-NEXT:    s_branch .LBB13_8
+; CI-NEXT:    s_branch .LBB13_3
 ; CI-NEXT:  .LBB13_2:
+; CI-NEXT:    s_mov_b64 s[2:3], -1
 ; CI-NEXT:    ; implicit-def: $vgpr8_vgpr9
-; CI-NEXT:  .LBB13_3: ; %frem.compute15
+; CI-NEXT:  .LBB13_3: ; %Flow53
+; CI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; CI-NEXT:    s_cselect_b32 s2, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s2, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB13_9
+; CI-NEXT:  ; %bb.4: ; %frem.compute15
 ; CI-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[0:1]|
 ; CI-NEXT:    v_frexp_exp_i32_f64_e32 v15, v[4:5]
 ; CI-NEXT:    v_frexp_exp_i32_f64_e32 v14, v[0:1]
@@ -16306,11 +17255,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_div_fmas_f64 v[12:13], v[12:13], v[18:19], v[22:23]
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v17
 ; CI-NEXT:    v_div_fixup_f64 v[12:13], v[12:13], v[8:9], 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB13_7
-; CI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB13_8
+; CI-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; CI-NEXT:    v_sub_i32_e32 v14, vcc, v14, v15
 ; CI-NEXT:    v_add_i32_e32 v17, vcc, 26, v14
-; CI-NEXT:  .LBB13_5: ; %frem.loop_body23
+; CI-NEXT:  .LBB13_6: ; %frem.loop_body23
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v15, v11
 ; CI-NEXT:    v_mov_b32_e32 v14, v10
@@ -16324,11 +17273,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 26
 ; CI-NEXT:    v_subrev_i32_e32 v17, vcc, 26, v17
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v17
-; CI-NEXT:    s_cbranch_vccnz .LBB13_5
-; CI-NEXT:  ; %bb.6: ; %Flow51
+; CI-NEXT:    s_cbranch_vccnz .LBB13_6
+; CI-NEXT:  ; %bb.7: ; %Flow51
 ; CI-NEXT:    v_mov_b32_e32 v10, v14
 ; CI-NEXT:    v_mov_b32_e32 v11, v15
-; CI-NEXT:  .LBB13_7: ; %frem.loop_exit24
+; CI-NEXT:  .LBB13_8: ; %frem.loop_exit24
 ; CI-NEXT:    v_subrev_i32_e32 v14, vcc, 25, v17
 ; CI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v14
 ; CI-NEXT:    s_brev_b32 s2, -2
@@ -16341,20 +17290,26 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_cndmask_b32_e32 v8, v10, v8, vcc
 ; CI-NEXT:    v_ldexp_f64 v[8:9], v[8:9], v16
 ; CI-NEXT:    v_bfi_b32 v9, s2, v9, v1
-; CI-NEXT:  .LBB13_8:
+; CI-NEXT:  .LBB13_9:
 ; CI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[2:3]|, |v[6:7]|
 ; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; CI-NEXT:    s_cbranch_vccz .LBB13_10
-; CI-NEXT:  ; %bb.9: ; %frem.else
+; CI-NEXT:    s_cbranch_vccz .LBB13_11
+; CI-NEXT:  ; %bb.10: ; %frem.else
 ; CI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[2:3]|, |v[6:7]|
 ; CI-NEXT:    v_and_b32_e32 v10, 0x80000000, v3
+; CI-NEXT:    s_mov_b64 s[2:3], 0
 ; CI-NEXT:    v_cndmask_b32_e32 v11, v3, v10, vcc
 ; CI-NEXT:    v_cndmask_b32_e64 v10, v2, 0, vcc
-; CI-NEXT:    s_cbranch_execz .LBB13_11
-; CI-NEXT:    s_branch .LBB13_16
-; CI-NEXT:  .LBB13_10:
+; CI-NEXT:    s_branch .LBB13_12
+; CI-NEXT:  .LBB13_11:
+; CI-NEXT:    s_mov_b64 s[2:3], -1
 ; CI-NEXT:    ; implicit-def: $vgpr10_vgpr11
-; CI-NEXT:  .LBB13_11: ; %frem.compute
+; CI-NEXT:  .LBB13_12: ; %Flow49
+; CI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; CI-NEXT:    s_cselect_b32 s2, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s2, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB13_18
+; CI-NEXT:  ; %bb.13: ; %frem.compute
 ; CI-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[2:3]|
 ; CI-NEXT:    v_frexp_exp_i32_f64_e32 v17, v[6:7]
 ; CI-NEXT:    v_frexp_exp_i32_f64_e32 v16, v[2:3]
@@ -16377,11 +17332,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_div_fmas_f64 v[14:15], v[14:15], v[20:21], v[24:25]
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v19
 ; CI-NEXT:    v_div_fixup_f64 v[14:15], v[14:15], v[10:11], 1.0
-; CI-NEXT:    s_cbranch_vccnz .LBB13_15
-; CI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB13_17
+; CI-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; CI-NEXT:    v_sub_i32_e32 v16, vcc, v16, v17
 ; CI-NEXT:    v_add_i32_e32 v19, vcc, 26, v16
-; CI-NEXT:  .LBB13_13: ; %frem.loop_body
+; CI-NEXT:  .LBB13_15: ; %frem.loop_body
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v17, v13
 ; CI-NEXT:    v_mov_b32_e32 v16, v12
@@ -16395,11 +17350,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_ldexp_f64 v[12:13], v[12:13], 26
 ; CI-NEXT:    v_subrev_i32_e32 v19, vcc, 26, v19
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v19
-; CI-NEXT:    s_cbranch_vccnz .LBB13_13
-; CI-NEXT:  ; %bb.14: ; %Flow
+; CI-NEXT:    s_cbranch_vccnz .LBB13_15
+; CI-NEXT:  ; %bb.16: ; %Flow
 ; CI-NEXT:    v_mov_b32_e32 v12, v16
 ; CI-NEXT:    v_mov_b32_e32 v13, v17
-; CI-NEXT:  .LBB13_15: ; %frem.loop_exit
+; CI-NEXT:  .LBB13_17: ; %frem.loop_exit
 ; CI-NEXT:    v_subrev_i32_e32 v16, vcc, 25, v19
 ; CI-NEXT:    v_ldexp_f64 v[12:13], v[12:13], v16
 ; CI-NEXT:    s_brev_b32 s2, -2
@@ -16412,7 +17367,7 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; CI-NEXT:    v_cndmask_b32_e32 v10, v12, v10, vcc
 ; CI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v18
 ; CI-NEXT:    v_bfi_b32 v11, s2, v11, v3
-; CI-NEXT:  .LBB13_16: ; %Flow50
+; CI-NEXT:  .LBB13_18: ; %Flow50
 ; CI-NEXT:    s_mov_b32 s4, 0
 ; CI-NEXT:    s_mov_b32 s5, 0x7ff00000
 ; CI-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[4:5]
@@ -16451,13 +17406,19 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:  ; %bb.1: ; %frem.else16
 ; VI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, |v[4:5]|
 ; VI-NEXT:    v_and_b32_e32 v8, 0x80000000, v1
+; VI-NEXT:    s_mov_b64 s[2:3], 0
 ; VI-NEXT:    v_cndmask_b32_e32 v9, v1, v8, vcc
 ; VI-NEXT:    v_cndmask_b32_e64 v8, v0, 0, vcc
-; VI-NEXT:    s_cbranch_execz .LBB13_3
-; VI-NEXT:    s_branch .LBB13_8
+; VI-NEXT:    s_branch .LBB13_3
 ; VI-NEXT:  .LBB13_2:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr8_vgpr9
-; VI-NEXT:  .LBB13_3: ; %frem.compute15
+; VI-NEXT:  .LBB13_3: ; %Flow53
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_9
+; VI-NEXT:  ; %bb.4: ; %frem.compute15
 ; VI-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[0:1]|
 ; VI-NEXT:    v_frexp_exp_i32_f64_e32 v15, v[4:5]
 ; VI-NEXT:    v_frexp_exp_i32_f64_e32 v14, v[0:1]
@@ -16480,11 +17441,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_div_fmas_f64 v[12:13], v[12:13], v[18:19], v[22:23]
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v17
 ; VI-NEXT:    v_div_fixup_f64 v[12:13], v[12:13], v[8:9], 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB13_7
-; VI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB13_8
+; VI-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; VI-NEXT:    v_sub_u32_e32 v14, vcc, v14, v15
 ; VI-NEXT:    v_add_u32_e32 v17, vcc, 26, v14
-; VI-NEXT:  .LBB13_5: ; %frem.loop_body23
+; VI-NEXT:  .LBB13_6: ; %frem.loop_body23
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v15, v11
 ; VI-NEXT:    v_mov_b32_e32 v14, v10
@@ -16498,11 +17459,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 26
 ; VI-NEXT:    v_subrev_u32_e32 v17, vcc, 26, v17
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v17
-; VI-NEXT:    s_cbranch_vccnz .LBB13_5
-; VI-NEXT:  ; %bb.6: ; %Flow51
+; VI-NEXT:    s_cbranch_vccnz .LBB13_6
+; VI-NEXT:  ; %bb.7: ; %Flow51
 ; VI-NEXT:    v_mov_b32_e32 v10, v14
 ; VI-NEXT:    v_mov_b32_e32 v11, v15
-; VI-NEXT:  .LBB13_7: ; %frem.loop_exit24
+; VI-NEXT:  .LBB13_8: ; %frem.loop_exit24
 ; VI-NEXT:    v_subrev_u32_e32 v14, vcc, 25, v17
 ; VI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v14
 ; VI-NEXT:    s_brev_b32 s2, -2
@@ -16515,20 +17476,26 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_cndmask_b32_e32 v8, v10, v8, vcc
 ; VI-NEXT:    v_ldexp_f64 v[8:9], v[8:9], v16
 ; VI-NEXT:    v_bfi_b32 v9, s2, v9, v1
-; VI-NEXT:  .LBB13_8:
+; VI-NEXT:  .LBB13_9:
 ; VI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[2:3]|, |v[6:7]|
 ; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; VI-NEXT:    s_cbranch_vccz .LBB13_10
-; VI-NEXT:  ; %bb.9: ; %frem.else
+; VI-NEXT:    s_cbranch_vccz .LBB13_11
+; VI-NEXT:  ; %bb.10: ; %frem.else
 ; VI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[2:3]|, |v[6:7]|
 ; VI-NEXT:    v_and_b32_e32 v10, 0x80000000, v3
+; VI-NEXT:    s_mov_b64 s[2:3], 0
 ; VI-NEXT:    v_cndmask_b32_e32 v11, v3, v10, vcc
 ; VI-NEXT:    v_cndmask_b32_e64 v10, v2, 0, vcc
-; VI-NEXT:    s_cbranch_execz .LBB13_11
-; VI-NEXT:    s_branch .LBB13_16
-; VI-NEXT:  .LBB13_10:
+; VI-NEXT:    s_branch .LBB13_12
+; VI-NEXT:  .LBB13_11:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr10_vgpr11
-; VI-NEXT:  .LBB13_11: ; %frem.compute
+; VI-NEXT:  .LBB13_12: ; %Flow49
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB13_18
+; VI-NEXT:  ; %bb.13: ; %frem.compute
 ; VI-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[2:3]|
 ; VI-NEXT:    v_frexp_exp_i32_f64_e32 v17, v[6:7]
 ; VI-NEXT:    v_frexp_exp_i32_f64_e32 v16, v[2:3]
@@ -16551,11 +17518,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_div_fmas_f64 v[14:15], v[14:15], v[20:21], v[24:25]
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v19
 ; VI-NEXT:    v_div_fixup_f64 v[14:15], v[14:15], v[10:11], 1.0
-; VI-NEXT:    s_cbranch_vccnz .LBB13_15
-; VI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB13_17
+; VI-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; VI-NEXT:    v_sub_u32_e32 v16, vcc, v16, v17
 ; VI-NEXT:    v_add_u32_e32 v19, vcc, 26, v16
-; VI-NEXT:  .LBB13_13: ; %frem.loop_body
+; VI-NEXT:  .LBB13_15: ; %frem.loop_body
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v17, v13
 ; VI-NEXT:    v_mov_b32_e32 v16, v12
@@ -16569,11 +17536,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_ldexp_f64 v[12:13], v[12:13], 26
 ; VI-NEXT:    v_subrev_u32_e32 v19, vcc, 26, v19
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v19
-; VI-NEXT:    s_cbranch_vccnz .LBB13_13
-; VI-NEXT:  ; %bb.14: ; %Flow
+; VI-NEXT:    s_cbranch_vccnz .LBB13_15
+; VI-NEXT:  ; %bb.16: ; %Flow
 ; VI-NEXT:    v_mov_b32_e32 v12, v16
 ; VI-NEXT:    v_mov_b32_e32 v13, v17
-; VI-NEXT:  .LBB13_15: ; %frem.loop_exit
+; VI-NEXT:  .LBB13_17: ; %frem.loop_exit
 ; VI-NEXT:    v_subrev_u32_e32 v16, vcc, 25, v19
 ; VI-NEXT:    v_ldexp_f64 v[12:13], v[12:13], v16
 ; VI-NEXT:    s_brev_b32 s2, -2
@@ -16586,7 +17553,7 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; VI-NEXT:    v_cndmask_b32_e32 v10, v12, v10, vcc
 ; VI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v18
 ; VI-NEXT:    v_bfi_b32 v11, s2, v11, v3
-; VI-NEXT:  .LBB13_16: ; %Flow50
+; VI-NEXT:  .LBB13_18: ; %Flow50
 ; VI-NEXT:    s_mov_b32 s2, 0
 ; VI-NEXT:    s_mov_b32 s3, 0x7ff00000
 ; VI-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[4:5]
@@ -16620,13 +17587,19 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:  ; %bb.1: ; %frem.else16
 ; GFX9-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, |v[4:5]|
 ; GFX9-NEXT:    v_and_b32_e32 v8, 0x80000000, v1
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX9-NEXT:    v_cndmask_b32_e32 v9, v1, v8, vcc
 ; GFX9-NEXT:    v_cndmask_b32_e64 v8, v0, 0, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB13_3
-; GFX9-NEXT:    s_branch .LBB13_8
+; GFX9-NEXT:    s_branch .LBB13_3
 ; GFX9-NEXT:  .LBB13_2:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr8_vgpr9
-; GFX9-NEXT:  .LBB13_3: ; %frem.compute15
+; GFX9-NEXT:  .LBB13_3: ; %Flow53
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_9
+; GFX9-NEXT:  ; %bb.4: ; %frem.compute15
 ; GFX9-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[0:1]|
 ; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v15, v[4:5]
 ; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v14, v[0:1]
@@ -16649,11 +17622,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_div_fmas_f64 v[12:13], v[12:13], v[18:19], v[22:23]
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v17
 ; GFX9-NEXT:    v_div_fixup_f64 v[12:13], v[12:13], v[8:9], 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB13_7
-; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB13_8
+; GFX9-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v14, v14, v15
 ; GFX9-NEXT:    v_add_u32_e32 v17, 26, v14
-; GFX9-NEXT:  .LBB13_5: ; %frem.loop_body23
+; GFX9-NEXT:  .LBB13_6: ; %frem.loop_body23
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v15, v11
 ; GFX9-NEXT:    v_mov_b32_e32 v14, v10
@@ -16667,11 +17640,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v10, v10, v18, vcc
 ; GFX9-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 26
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v17
-; GFX9-NEXT:    s_cbranch_vccnz .LBB13_5
-; GFX9-NEXT:  ; %bb.6: ; %Flow51
+; GFX9-NEXT:    s_cbranch_vccnz .LBB13_6
+; GFX9-NEXT:  ; %bb.7: ; %Flow51
 ; GFX9-NEXT:    v_mov_b32_e32 v10, v14
 ; GFX9-NEXT:    v_mov_b32_e32 v11, v15
-; GFX9-NEXT:  .LBB13_7: ; %frem.loop_exit24
+; GFX9-NEXT:  .LBB13_8: ; %frem.loop_exit24
 ; GFX9-NEXT:    v_subrev_u32_e32 v14, 25, v17
 ; GFX9-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v14
 ; GFX9-NEXT:    s_brev_b32 s2, -2
@@ -16684,20 +17657,26 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v8, v10, v8, vcc
 ; GFX9-NEXT:    v_ldexp_f64 v[8:9], v[8:9], v16
 ; GFX9-NEXT:    v_bfi_b32 v9, s2, v9, v1
-; GFX9-NEXT:  .LBB13_8:
+; GFX9-NEXT:  .LBB13_9:
 ; GFX9-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[2:3]|, |v[6:7]|
 ; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; GFX9-NEXT:    s_cbranch_vccz .LBB13_10
-; GFX9-NEXT:  ; %bb.9: ; %frem.else
+; GFX9-NEXT:    s_cbranch_vccz .LBB13_11
+; GFX9-NEXT:  ; %bb.10: ; %frem.else
 ; GFX9-NEXT:    v_cmp_eq_f64_e64 vcc, |v[2:3]|, |v[6:7]|
 ; GFX9-NEXT:    v_and_b32_e32 v10, 0x80000000, v3
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX9-NEXT:    v_cndmask_b32_e32 v11, v3, v10, vcc
 ; GFX9-NEXT:    v_cndmask_b32_e64 v10, v2, 0, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB13_11
-; GFX9-NEXT:    s_branch .LBB13_16
-; GFX9-NEXT:  .LBB13_10:
+; GFX9-NEXT:    s_branch .LBB13_12
+; GFX9-NEXT:  .LBB13_11:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr10_vgpr11
-; GFX9-NEXT:  .LBB13_11: ; %frem.compute
+; GFX9-NEXT:  .LBB13_12: ; %Flow49
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB13_18
+; GFX9-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX9-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[2:3]|
 ; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v17, v[6:7]
 ; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v16, v[2:3]
@@ -16720,11 +17699,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_div_fmas_f64 v[14:15], v[14:15], v[20:21], v[24:25]
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v19
 ; GFX9-NEXT:    v_div_fixup_f64 v[14:15], v[14:15], v[10:11], 1.0
-; GFX9-NEXT:    s_cbranch_vccnz .LBB13_15
-; GFX9-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB13_17
+; GFX9-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX9-NEXT:    v_sub_u32_e32 v16, v16, v17
 ; GFX9-NEXT:    v_add_u32_e32 v19, 26, v16
-; GFX9-NEXT:  .LBB13_13: ; %frem.loop_body
+; GFX9-NEXT:  .LBB13_15: ; %frem.loop_body
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v17, v13
 ; GFX9-NEXT:    v_mov_b32_e32 v16, v12
@@ -16738,11 +17717,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v12, v12, v20, vcc
 ; GFX9-NEXT:    v_ldexp_f64 v[12:13], v[12:13], 26
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v19
-; GFX9-NEXT:    s_cbranch_vccnz .LBB13_13
-; GFX9-NEXT:  ; %bb.14: ; %Flow
+; GFX9-NEXT:    s_cbranch_vccnz .LBB13_15
+; GFX9-NEXT:  ; %bb.16: ; %Flow
 ; GFX9-NEXT:    v_mov_b32_e32 v12, v16
 ; GFX9-NEXT:    v_mov_b32_e32 v13, v17
-; GFX9-NEXT:  .LBB13_15: ; %frem.loop_exit
+; GFX9-NEXT:  .LBB13_17: ; %frem.loop_exit
 ; GFX9-NEXT:    v_subrev_u32_e32 v16, 25, v19
 ; GFX9-NEXT:    v_ldexp_f64 v[12:13], v[12:13], v16
 ; GFX9-NEXT:    s_brev_b32 s2, -2
@@ -16755,7 +17734,7 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX9-NEXT:    v_cndmask_b32_e32 v10, v12, v10, vcc
 ; GFX9-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v18
 ; GFX9-NEXT:    v_bfi_b32 v11, s2, v11, v3
-; GFX9-NEXT:  .LBB13_16: ; %Flow50
+; GFX9-NEXT:  .LBB13_18: ; %Flow50
 ; GFX9-NEXT:    s_mov_b32 s2, 0
 ; GFX9-NEXT:    s_mov_b32 s3, 0x7ff00000
 ; GFX9-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[4:5]
@@ -16790,13 +17769,19 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:  ; %bb.1: ; %frem.else16
 ; GFX10-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[4:5]|
 ; GFX10-NEXT:    v_and_b32_e32 v8, 0x80000000, v1
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v9, v1, v8, vcc_lo
 ; GFX10-NEXT:    v_cndmask_b32_e64 v8, v0, 0, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB13_3
-; GFX10-NEXT:    s_branch .LBB13_8
+; GFX10-NEXT:    s_branch .LBB13_3
 ; GFX10-NEXT:  .LBB13_2:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr8_vgpr9
-; GFX10-NEXT:  .LBB13_3: ; %frem.compute15
+; GFX10-NEXT:  .LBB13_3: ; %Flow53
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB13_9
+; GFX10-NEXT:  ; %bb.4: ; %frem.compute15
 ; GFX10-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[0:1]|
 ; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v13, v[4:5]
 ; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v12, v[0:1]
@@ -16820,11 +17805,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_div_fmas_f64 v[12:13], v[12:13], v[14:15], v[20:21]
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v17
 ; GFX10-NEXT:    v_div_fixup_f64 v[12:13], v[12:13], v[8:9], 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB13_7
-; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB13_8
+; GFX10-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 26
-; GFX10-NEXT:  .LBB13_5: ; %frem.loop_body23
+; GFX10-NEXT:  .LBB13_6: ; %frem.loop_body23
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v15, v11
 ; GFX10-NEXT:    v_mov_b32_e32 v14, v10
@@ -16838,12 +17823,12 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_cndmask_b32_e32 v11, v11, v18, vcc_lo
 ; GFX10-NEXT:    v_cndmask_b32_e32 v10, v10, v17, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 26
-; GFX10-NEXT:    s_cbranch_scc1 .LBB13_5
-; GFX10-NEXT:  ; %bb.6: ; %Flow51
+; GFX10-NEXT:    s_cbranch_scc1 .LBB13_6
+; GFX10-NEXT:  ; %bb.7: ; %Flow51
 ; GFX10-NEXT:    v_mov_b32_e32 v10, v14
 ; GFX10-NEXT:    v_mov_b32_e32 v17, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v11, v15
-; GFX10-NEXT:  .LBB13_7: ; %frem.loop_exit24
+; GFX10-NEXT:  .LBB13_8: ; %frem.loop_exit24
 ; GFX10-NEXT:    v_subrev_nc_u32_e32 v14, 25, v17
 ; GFX10-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v14
 ; GFX10-NEXT:    v_mul_f64 v[12:13], v[10:11], v[12:13]
@@ -16855,20 +17840,26 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_cndmask_b32_e32 v8, v10, v8, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f64 v[8:9], v[8:9], v16
 ; GFX10-NEXT:    v_bfi_b32 v9, 0x7fffffff, v9, v1
-; GFX10-NEXT:  .LBB13_8:
+; GFX10-NEXT:  .LBB13_9:
 ; GFX10-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, |v[6:7]|
 ; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
-; GFX10-NEXT:    s_cbranch_vccz .LBB13_10
-; GFX10-NEXT:  ; %bb.9: ; %frem.else
+; GFX10-NEXT:    s_cbranch_vccz .LBB13_11
+; GFX10-NEXT:  ; %bb.10: ; %frem.else
 ; GFX10-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, |v[6:7]|
 ; GFX10-NEXT:    v_and_b32_e32 v10, 0x80000000, v3
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v11, v3, v10, vcc_lo
 ; GFX10-NEXT:    v_cndmask_b32_e64 v10, v2, 0, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB13_11
-; GFX10-NEXT:    s_branch .LBB13_16
-; GFX10-NEXT:  .LBB13_10:
+; GFX10-NEXT:    s_branch .LBB13_12
+; GFX10-NEXT:  .LBB13_11:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr10_vgpr11
-; GFX10-NEXT:  .LBB13_11: ; %frem.compute
+; GFX10-NEXT:  .LBB13_12: ; %Flow49
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB13_18
+; GFX10-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX10-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[2:3]|
 ; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v15, v[6:7]
 ; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v14, v[2:3]
@@ -16892,11 +17883,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_div_fmas_f64 v[14:15], v[14:15], v[16:17], v[22:23]
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v19
 ; GFX10-NEXT:    v_div_fixup_f64 v[14:15], v[14:15], v[10:11], 1.0
-; GFX10-NEXT:    s_cbranch_vccnz .LBB13_15
-; GFX10-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB13_17
+; GFX10-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX10-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX10-NEXT:    s_add_i32 s2, s2, 26
-; GFX10-NEXT:  .LBB13_13: ; %frem.loop_body
+; GFX10-NEXT:  .LBB13_15: ; %frem.loop_body
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v17, v13
 ; GFX10-NEXT:    v_mov_b32_e32 v16, v12
@@ -16910,12 +17901,12 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_cndmask_b32_e32 v13, v13, v20, vcc_lo
 ; GFX10-NEXT:    v_cndmask_b32_e32 v12, v12, v19, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f64 v[12:13], v[12:13], 26
-; GFX10-NEXT:    s_cbranch_scc1 .LBB13_13
-; GFX10-NEXT:  ; %bb.14: ; %Flow
+; GFX10-NEXT:    s_cbranch_scc1 .LBB13_15
+; GFX10-NEXT:  ; %bb.16: ; %Flow
 ; GFX10-NEXT:    v_mov_b32_e32 v12, v16
 ; GFX10-NEXT:    v_mov_b32_e32 v19, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v13, v17
-; GFX10-NEXT:  .LBB13_15: ; %frem.loop_exit
+; GFX10-NEXT:  .LBB13_17: ; %frem.loop_exit
 ; GFX10-NEXT:    v_subrev_nc_u32_e32 v16, 25, v19
 ; GFX10-NEXT:    v_ldexp_f64 v[12:13], v[12:13], v16
 ; GFX10-NEXT:    v_mul_f64 v[14:15], v[12:13], v[14:15]
@@ -16927,7 +17918,7 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX10-NEXT:    v_cndmask_b32_e32 v10, v12, v10, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v18
 ; GFX10-NEXT:    v_bfi_b32 v11, 0x7fffffff, v11, v3
-; GFX10-NEXT:  .LBB13_16: ; %Flow50
+; GFX10-NEXT:  .LBB13_18: ; %Flow50
 ; GFX10-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[4:5]
 ; GFX10-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|
 ; GFX10-NEXT:    v_mov_b32_e32 v4, 0
@@ -16959,14 +17950,21 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:  ; %bb.1: ; %frem.else16
 ; GFX11-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[4:5]|
 ; GFX11-NEXT:    v_and_b32_e32 v8, 0x80000000, v1
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX11-NEXT:    s_mov_b32 s2, 0
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_cndmask_b32_e32 v9, v1, v8, vcc_lo
 ; GFX11-NEXT:    v_cndmask_b32_e64 v8, v0, 0, vcc_lo
-; GFX11-NEXT:    s_cbranch_execz .LBB13_3
-; GFX11-NEXT:    s_branch .LBB13_8
+; GFX11-NEXT:    s_branch .LBB13_3
 ; GFX11-NEXT:  .LBB13_2:
+; GFX11-NEXT:    s_mov_b32 s2, -1
 ; GFX11-NEXT:    ; implicit-def: $vgpr8_vgpr9
-; GFX11-NEXT:  .LBB13_3: ; %frem.compute15
+; GFX11-NEXT:  .LBB13_3: ; %Flow53
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_9
+; GFX11-NEXT:  ; %bb.4: ; %frem.compute15
 ; GFX11-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[0:1]|
 ; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v13, v[4:5]
 ; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v12, v[0:1]
@@ -16998,13 +17996,13 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v17
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_div_fixup_f64 v[12:13], v[12:13], v[8:9], 1.0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_7
-; GFX11-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; GFX11-NEXT:    s_cbranch_vccnz .LBB13_8
+; GFX11-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; GFX11-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_add_i32 s2, s2, 26
 ; GFX11-NEXT:    .p2align 6
-; GFX11-NEXT:  .LBB13_5: ; %frem.loop_body23
+; GFX11-NEXT:  .LBB13_6: ; %frem.loop_body23
 ; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v10
@@ -17020,11 +18018,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_dual_cndmask_b32 v11, v11, v18 :: v_dual_cndmask_b32 v10, v10, v17
 ; GFX11-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 26
-; GFX11-NEXT:    s_cbranch_scc1 .LBB13_5
-; GFX11-NEXT:  ; %bb.6: ; %Flow51
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_6
+; GFX11-NEXT:  ; %bb.7: ; %Flow51
 ; GFX11-NEXT:    v_dual_mov_b32 v17, s2 :: v_dual_mov_b32 v10, v14
 ; GFX11-NEXT:    v_mov_b32_e32 v11, v15
-; GFX11-NEXT:  .LBB13_7: ; %frem.loop_exit24
+; GFX11-NEXT:  .LBB13_8: ; %frem.loop_exit24
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_subrev_nc_u32_e32 v14, 25, v17
 ; GFX11-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v14
@@ -17040,21 +18038,28 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_ldexp_f64 v[8:9], v[8:9], v16
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_bfi_b32 v9, 0x7fffffff, v9, v1
-; GFX11-NEXT:  .LBB13_8:
+; GFX11-NEXT:  .LBB13_9:
 ; GFX11-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, |v[6:7]|
 ; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccz .LBB13_10
-; GFX11-NEXT:  ; %bb.9: ; %frem.else
+; GFX11-NEXT:    s_cbranch_vccz .LBB13_11
+; GFX11-NEXT:  ; %bb.10: ; %frem.else
 ; GFX11-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, |v[6:7]|
 ; GFX11-NEXT:    v_and_b32_e32 v10, 0x80000000, v3
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX11-NEXT:    s_mov_b32 s2, 0
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_cndmask_b32_e32 v11, v3, v10, vcc_lo
 ; GFX11-NEXT:    v_cndmask_b32_e64 v10, v2, 0, vcc_lo
-; GFX11-NEXT:    s_cbranch_execz .LBB13_11
-; GFX11-NEXT:    s_branch .LBB13_16
-; GFX11-NEXT:  .LBB13_10:
+; GFX11-NEXT:    s_branch .LBB13_12
+; GFX11-NEXT:  .LBB13_11:
+; GFX11-NEXT:    s_mov_b32 s2, -1
 ; GFX11-NEXT:    ; implicit-def: $vgpr10_vgpr11
-; GFX11-NEXT:  .LBB13_11: ; %frem.compute
+; GFX11-NEXT:  .LBB13_12: ; %Flow49
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_18
+; GFX11-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX11-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[2:3]|
 ; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v15, v[6:7]
 ; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v14, v[2:3]
@@ -17086,13 +18091,13 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v19
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_div_fixup_f64 v[14:15], v[14:15], v[10:11], 1.0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB13_15
-; GFX11-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX11-NEXT:    s_cbranch_vccnz .LBB13_17
+; GFX11-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX11-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_add_i32 s2, s2, 26
 ; GFX11-NEXT:    .p2align 6
-; GFX11-NEXT:  .LBB13_13: ; %frem.loop_body
+; GFX11-NEXT:  .LBB13_15: ; %frem.loop_body
 ; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v17, v13 :: v_dual_mov_b32 v16, v12
@@ -17108,11 +18113,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_dual_cndmask_b32 v13, v13, v20 :: v_dual_cndmask_b32 v12, v12, v19
 ; GFX11-NEXT:    v_ldexp_f64 v[12:13], v[12:13], 26
-; GFX11-NEXT:    s_cbranch_scc1 .LBB13_13
-; GFX11-NEXT:  ; %bb.14: ; %Flow
+; GFX11-NEXT:    s_cbranch_scc1 .LBB13_15
+; GFX11-NEXT:  ; %bb.16: ; %Flow
 ; GFX11-NEXT:    v_dual_mov_b32 v19, s2 :: v_dual_mov_b32 v12, v16
 ; GFX11-NEXT:    v_mov_b32_e32 v13, v17
-; GFX11-NEXT:  .LBB13_15: ; %frem.loop_exit
+; GFX11-NEXT:  .LBB13_17: ; %frem.loop_exit
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_subrev_nc_u32_e32 v16, 25, v19
 ; GFX11-NEXT:    v_ldexp_f64 v[12:13], v[12:13], v16
@@ -17128,7 +18133,7 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX11-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v18
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_bfi_b32 v11, 0x7fffffff, v11, v3
-; GFX11-NEXT:  .LBB13_16: ; %Flow50
+; GFX11-NEXT:  .LBB13_18: ; %Flow50
 ; GFX11-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[4:5]
 ; GFX11-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|
 ; GFX11-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo
@@ -17158,14 +18163,21 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:  ; %bb.1: ; %frem.else16
 ; GFX1150-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[4:5]|
 ; GFX1150-NEXT:    v_and_b32_e32 v8, 0x80000000, v1
-; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1150-NEXT:    s_mov_b32 s2, 0
+; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v9, v1, v8, vcc_lo
 ; GFX1150-NEXT:    v_cndmask_b32_e64 v8, v0, 0, vcc_lo
-; GFX1150-NEXT:    s_cbranch_execz .LBB13_3
-; GFX1150-NEXT:    s_branch .LBB13_8
+; GFX1150-NEXT:    s_branch .LBB13_3
 ; GFX1150-NEXT:  .LBB13_2:
+; GFX1150-NEXT:    s_mov_b32 s2, -1
 ; GFX1150-NEXT:    ; implicit-def: $vgpr8_vgpr9
-; GFX1150-NEXT:  .LBB13_3: ; %frem.compute15
+; GFX1150-NEXT:  .LBB13_3: ; %Flow53
+; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1150-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1150-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB13_9
+; GFX1150-NEXT:  ; %bb.4: ; %frem.compute15
 ; GFX1150-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[0:1]|
 ; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v13, v[4:5]
 ; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v12, v[0:1]
@@ -17196,13 +18208,13 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_div_fmas_f64 v[12:13], v[12:13], v[14:15], v[20:21]
 ; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v17
 ; GFX1150-NEXT:    v_div_fixup_f64 v[12:13], v[12:13], v[8:9], 1.0
-; GFX1150-NEXT:    s_cbranch_vccnz .LBB13_7
-; GFX1150-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; GFX1150-NEXT:    s_cbranch_vccnz .LBB13_8
+; GFX1150-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; GFX1150-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-NEXT:    s_add_i32 s2, s2, 26
 ; GFX1150-NEXT:    .p2align 6
-; GFX1150-NEXT:  .LBB13_5: ; %frem.loop_body23
+; GFX1150-NEXT:  .LBB13_6: ; %frem.loop_body23
 ; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-NEXT:    v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v10
@@ -17218,11 +18230,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_dual_cndmask_b32 v11, v11, v18 :: v_dual_cndmask_b32 v10, v10, v17
 ; GFX1150-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 26
-; GFX1150-NEXT:    s_cbranch_scc1 .LBB13_5
-; GFX1150-NEXT:  ; %bb.6: ; %Flow51
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB13_6
+; GFX1150-NEXT:  ; %bb.7: ; %Flow51
 ; GFX1150-NEXT:    v_dual_mov_b32 v17, s2 :: v_dual_mov_b32 v10, v14
 ; GFX1150-NEXT:    v_mov_b32_e32 v11, v15
-; GFX1150-NEXT:  .LBB13_7: ; %frem.loop_exit24
+; GFX1150-NEXT:  .LBB13_8: ; %frem.loop_exit24
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_subrev_nc_u32_e32 v14, 25, v17
 ; GFX1150-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v14
@@ -17238,21 +18250,28 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_ldexp_f64 v[8:9], v[8:9], v16
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_bfi_b32 v9, 0x7fffffff, v9, v1
-; GFX1150-NEXT:  .LBB13_8:
+; GFX1150-NEXT:  .LBB13_9:
 ; GFX1150-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, |v[6:7]|
 ; GFX1150-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
-; GFX1150-NEXT:    s_cbranch_vccz .LBB13_10
-; GFX1150-NEXT:  ; %bb.9: ; %frem.else
+; GFX1150-NEXT:    s_cbranch_vccz .LBB13_11
+; GFX1150-NEXT:  ; %bb.10: ; %frem.else
 ; GFX1150-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, |v[6:7]|
 ; GFX1150-NEXT:    v_and_b32_e32 v10, 0x80000000, v3
-; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1150-NEXT:    s_mov_b32 s2, 0
+; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v11, v3, v10, vcc_lo
 ; GFX1150-NEXT:    v_cndmask_b32_e64 v10, v2, 0, vcc_lo
-; GFX1150-NEXT:    s_cbranch_execz .LBB13_11
-; GFX1150-NEXT:    s_branch .LBB13_16
-; GFX1150-NEXT:  .LBB13_10:
+; GFX1150-NEXT:    s_branch .LBB13_12
+; GFX1150-NEXT:  .LBB13_11:
+; GFX1150-NEXT:    s_mov_b32 s2, -1
 ; GFX1150-NEXT:    ; implicit-def: $vgpr10_vgpr11
-; GFX1150-NEXT:  .LBB13_11: ; %frem.compute
+; GFX1150-NEXT:  .LBB13_12: ; %Flow49
+; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1150-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1150-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB13_18
+; GFX1150-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX1150-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[2:3]|
 ; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v15, v[6:7]
 ; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v14, v[2:3]
@@ -17283,13 +18302,13 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_div_fmas_f64 v[14:15], v[14:15], v[16:17], v[22:23]
 ; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v19
 ; GFX1150-NEXT:    v_div_fixup_f64 v[14:15], v[14:15], v[10:11], 1.0
-; GFX1150-NEXT:    s_cbranch_vccnz .LBB13_15
-; GFX1150-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX1150-NEXT:    s_cbranch_vccnz .LBB13_17
+; GFX1150-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX1150-NEXT:    s_sub_i32 s2, s2, s3
 ; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1150-NEXT:    s_add_i32 s2, s2, 26
 ; GFX1150-NEXT:    .p2align 6
-; GFX1150-NEXT:  .LBB13_13: ; %frem.loop_body
+; GFX1150-NEXT:  .LBB13_15: ; %frem.loop_body
 ; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-NEXT:    v_dual_mov_b32 v17, v13 :: v_dual_mov_b32 v16, v12
@@ -17305,11 +18324,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_dual_cndmask_b32 v13, v13, v20 :: v_dual_cndmask_b32 v12, v12, v19
 ; GFX1150-NEXT:    v_ldexp_f64 v[12:13], v[12:13], 26
-; GFX1150-NEXT:    s_cbranch_scc1 .LBB13_13
-; GFX1150-NEXT:  ; %bb.14: ; %Flow
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB13_15
+; GFX1150-NEXT:  ; %bb.16: ; %Flow
 ; GFX1150-NEXT:    v_dual_mov_b32 v19, s2 :: v_dual_mov_b32 v12, v16
 ; GFX1150-NEXT:    v_mov_b32_e32 v13, v17
-; GFX1150-NEXT:  .LBB13_15: ; %frem.loop_exit
+; GFX1150-NEXT:  .LBB13_17: ; %frem.loop_exit
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_subrev_nc_u32_e32 v16, 25, v19
 ; GFX1150-NEXT:    v_ldexp_f64 v[12:13], v[12:13], v16
@@ -17325,7 +18344,7 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1150-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v18
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_bfi_b32 v11, 0x7fffffff, v11, v3
-; GFX1150-NEXT:  .LBB13_16: ; %Flow50
+; GFX1150-NEXT:  .LBB13_18: ; %Flow50
 ; GFX1150-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[4:5]
 ; GFX1150-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|
 ; GFX1150-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo
@@ -17355,14 +18374,21 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:  ; %bb.1: ; %frem.else16
 ; GFX1200-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[4:5]|
 ; GFX1200-NEXT:    v_and_b32_e32 v8, 0x80000000, v1
-; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1200-NEXT:    s_mov_b32 s2, 0
+; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_cndmask_b32_e32 v9, v1, v8, vcc_lo
 ; GFX1200-NEXT:    v_cndmask_b32_e64 v8, v0, 0, vcc_lo
-; GFX1200-NEXT:    s_cbranch_execz .LBB13_3
-; GFX1200-NEXT:    s_branch .LBB13_8
+; GFX1200-NEXT:    s_branch .LBB13_3
 ; GFX1200-NEXT:  .LBB13_2:
+; GFX1200-NEXT:    s_mov_b32 s2, -1
 ; GFX1200-NEXT:    ; implicit-def: $vgpr8_vgpr9
-; GFX1200-NEXT:  .LBB13_3: ; %frem.compute15
+; GFX1200-NEXT:  .LBB13_3: ; %Flow53
+; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1200-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1200-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1200-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB13_9
+; GFX1200-NEXT:  ; %bb.4: ; %frem.compute15
 ; GFX1200-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[0:1]|
 ; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v13, v[4:5]
 ; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v12, v[0:1]
@@ -17394,12 +18420,12 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    v_div_fmas_f64 v[12:13], v[12:13], v[14:15], v[20:21]
 ; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v17
 ; GFX1200-NEXT:    v_div_fixup_f64 v[12:13], v[12:13], v[8:9], 1.0
-; GFX1200-NEXT:    s_cbranch_vccnz .LBB13_7
-; GFX1200-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; GFX1200-NEXT:    s_cbranch_vccnz .LBB13_8
+; GFX1200-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; GFX1200-NEXT:    s_sub_co_i32 s2, s2, s3
 ; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1200-NEXT:    s_add_co_i32 s2, s2, 26
-; GFX1200-NEXT:  .LBB13_5: ; %frem.loop_body23
+; GFX1200-NEXT:  .LBB13_6: ; %frem.loop_body23
 ; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1200-NEXT:    v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v10
@@ -17416,11 +18442,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_dual_cndmask_b32 v11, v11, v18 :: v_dual_cndmask_b32 v10, v10, v17
 ; GFX1200-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 26
-; GFX1200-NEXT:    s_cbranch_scc1 .LBB13_5
-; GFX1200-NEXT:  ; %bb.6: ; %Flow51
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB13_6
+; GFX1200-NEXT:  ; %bb.7: ; %Flow51
 ; GFX1200-NEXT:    v_dual_mov_b32 v17, s2 :: v_dual_mov_b32 v10, v14
 ; GFX1200-NEXT:    v_mov_b32_e32 v11, v15
-; GFX1200-NEXT:  .LBB13_7: ; %frem.loop_exit24
+; GFX1200-NEXT:  .LBB13_8: ; %frem.loop_exit24
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_subrev_nc_u32_e32 v14, 25, v17
 ; GFX1200-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v14
@@ -17437,23 +18463,31 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    v_ldexp_f64 v[8:9], v[8:9], v16
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_bfi_b32 v9, 0x7fffffff, v9, v1
-; GFX1200-NEXT:  .LBB13_8:
+; GFX1200-NEXT:  .LBB13_9:
 ; GFX1200-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, |v[6:7]|
 ; GFX1200-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
 ; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX1200-NEXT:    s_cbranch_vccz .LBB13_10
-; GFX1200-NEXT:  ; %bb.9: ; %frem.else
+; GFX1200-NEXT:    s_cbranch_vccz .LBB13_11
+; GFX1200-NEXT:  ; %bb.10: ; %frem.else
 ; GFX1200-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, |v[6:7]|
 ; GFX1200-NEXT:    v_and_b32_e32 v10, 0x80000000, v3
+; GFX1200-NEXT:    s_mov_b32 s2, 0
 ; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_cndmask_b32_e32 v11, v3, v10, vcc_lo
 ; GFX1200-NEXT:    v_cndmask_b32_e64 v10, v2, 0, vcc_lo
-; GFX1200-NEXT:    s_cbranch_execz .LBB13_11
-; GFX1200-NEXT:    s_branch .LBB13_16
-; GFX1200-NEXT:  .LBB13_10:
+; GFX1200-NEXT:    s_branch .LBB13_12
+; GFX1200-NEXT:  .LBB13_11:
+; GFX1200-NEXT:    s_mov_b32 s2, -1
 ; GFX1200-NEXT:    ; implicit-def: $vgpr10_vgpr11
-; GFX1200-NEXT:  .LBB13_11: ; %frem.compute
+; GFX1200-NEXT:  .LBB13_12: ; %Flow49
+; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1200-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB13_18
+; GFX1200-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX1200-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[2:3]|
 ; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v15, v[6:7]
 ; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v14, v[2:3]
@@ -17485,12 +18519,12 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    v_div_fmas_f64 v[14:15], v[14:15], v[16:17], v[22:23]
 ; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v19
 ; GFX1200-NEXT:    v_div_fixup_f64 v[14:15], v[14:15], v[10:11], 1.0
-; GFX1200-NEXT:    s_cbranch_vccnz .LBB13_15
-; GFX1200-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX1200-NEXT:    s_cbranch_vccnz .LBB13_17
+; GFX1200-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX1200-NEXT:    s_sub_co_i32 s2, s2, s3
 ; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX1200-NEXT:    s_add_co_i32 s2, s2, 26
-; GFX1200-NEXT:  .LBB13_13: ; %frem.loop_body
+; GFX1200-NEXT:  .LBB13_15: ; %frem.loop_body
 ; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_4) | instid1(VALU_DEP_2)
 ; GFX1200-NEXT:    v_dual_mov_b32 v17, v13 :: v_dual_mov_b32 v16, v12
@@ -17509,11 +18543,11 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    v_dual_cndmask_b32 v13, v13, v20 :: v_dual_cndmask_b32 v12, v12, v19
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_ldexp_f64 v[12:13], v[12:13], 26
-; GFX1200-NEXT:    s_cbranch_scc1 .LBB13_13
-; GFX1200-NEXT:  ; %bb.14: ; %Flow
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB13_15
+; GFX1200-NEXT:  ; %bb.16: ; %Flow
 ; GFX1200-NEXT:    v_dual_mov_b32 v19, s2 :: v_dual_mov_b32 v12, v16
 ; GFX1200-NEXT:    v_mov_b32_e32 v13, v17
-; GFX1200-NEXT:  .LBB13_15: ; %frem.loop_exit
+; GFX1200-NEXT:  .LBB13_17: ; %frem.loop_exit
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_subrev_nc_u32_e32 v16, 25, v19
 ; GFX1200-NEXT:    v_ldexp_f64 v[12:13], v[12:13], v16
@@ -17530,7 +18564,7 @@ define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GFX1200-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v18
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_bfi_b32 v11, 0x7fffffff, v11, v3
-; GFX1200-NEXT:  .LBB13_16: ; %Flow50
+; GFX1200-NEXT:  .LBB13_18: ; %Flow50
 ; GFX1200-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[4:5]
 ; GFX1200-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|
 ; GFX1200-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo
@@ -17749,21 +18783,24 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; SI-NEXT:    v_readfirstlane_b32 s4, v2
 ; SI-NEXT:    v_readfirstlane_b32 s5, v3
 ; SI-NEXT:    s_and_b64 vcc, exec, s[6:7]
-; SI-NEXT:    s_cbranch_vccz .LBB15_3
+; SI-NEXT:    s_cbranch_vccz .LBB15_2
 ; SI-NEXT:  ; %bb.1: ; %frem.else16
 ; SI-NEXT:    v_cmp_eq_f64_e64 s[6:7], |s[2:3]|, 1.0
 ; SI-NEXT:    s_and_b32 s8, s3, 0x80000000
 ; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
 ; SI-NEXT:    s_cselect_b32 s7, s8, s3
 ; SI-NEXT:    s_cselect_b32 s6, 0, s2
-; SI-NEXT:    s_cbranch_execz .LBB15_4
-; SI-NEXT:  ; %bb.2:
-; SI-NEXT:    v_mov_b32_e32 v0, s6
-; SI-NEXT:    v_mov_b32_e32 v1, s7
-; SI-NEXT:    s_branch .LBB15_9
-; SI-NEXT:  .LBB15_3:
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB15_3
+; SI-NEXT:  .LBB15_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
 ; SI-NEXT:    ; implicit-def: $sgpr6_sgpr7
-; SI-NEXT:  .LBB15_4: ; %frem.compute15
+; SI-NEXT:  .LBB15_3: ; %Flow52
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_9
+; SI-NEXT:  ; %bb.4: ; %frem.compute15
 ; SI-NEXT:    s_and_b32 s6, s3, 0x7fffffff
 ; SI-NEXT:    v_frexp_mant_f64_e64 v[0:1], |s[2:3]|
 ; SI-NEXT:    s_cmp_lt_i32 s6, 0x7ff00000
@@ -17829,24 +18866,31 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; SI-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc
 ; SI-NEXT:    v_mov_b32_e32 v2, s3
 ; SI-NEXT:    v_bfi_b32 v1, s6, v1, v2
+; SI-NEXT:    s_branch .LBB15_10
 ; SI-NEXT:  .LBB15_9:
+; SI-NEXT:    v_mov_b32_e32 v0, s6
+; SI-NEXT:    v_mov_b32_e32 v1, s7
+; SI-NEXT:  .LBB15_10:
 ; SI-NEXT:    v_cmp_ngt_f64_e64 s[6:7], |s[4:5]|, 1.0
 ; SI-NEXT:    s_and_b64 vcc, exec, s[6:7]
 ; SI-NEXT:    s_cbranch_vccz .LBB15_12
-; SI-NEXT:  ; %bb.10: ; %frem.else
+; SI-NEXT:  ; %bb.11: ; %frem.else
 ; SI-NEXT:    v_cmp_eq_f64_e64 s[6:7], |s[4:5]|, 1.0
 ; SI-NEXT:    s_and_b32 s8, s5, 0x80000000
 ; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
 ; SI-NEXT:    s_cselect_b32 s7, s8, s5
 ; SI-NEXT:    s_cselect_b32 s6, 0, s4
-; SI-NEXT:    s_cbranch_execz .LBB15_13
-; SI-NEXT:  ; %bb.11:
-; SI-NEXT:    v_mov_b32_e32 v2, s6
-; SI-NEXT:    v_mov_b32_e32 v3, s7
-; SI-NEXT:    s_branch .LBB15_18
+; SI-NEXT:    s_mov_b64 s[8:9], 0
+; SI-NEXT:    s_branch .LBB15_13
 ; SI-NEXT:  .LBB15_12:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
 ; SI-NEXT:    ; implicit-def: $sgpr6_sgpr7
-; SI-NEXT:  .LBB15_13: ; %frem.compute
+; SI-NEXT:  .LBB15_13: ; %Flow48
+; SI-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s8, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_19
+; SI-NEXT:  ; %bb.14: ; %frem.compute
 ; SI-NEXT:    s_and_b32 s6, s5, 0x7fffffff
 ; SI-NEXT:    v_frexp_mant_f64_e64 v[2:3], |s[4:5]|
 ; SI-NEXT:    s_cmp_lt_i32 s6, 0x7ff00000
@@ -17863,13 +18907,13 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; SI-NEXT:    v_ldexp_f64 v[3:4], v[2:3], 26
 ; SI-NEXT:    s_mov_b32 s6, -1
 ; SI-NEXT:    s_cmp_lt_i32 s9, 27
-; SI-NEXT:    s_cbranch_scc1 .LBB15_17
-; SI-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
+; SI-NEXT:    s_cbranch_scc1 .LBB15_18
+; SI-NEXT:  ; %bb.15: ; %frem.loop_body.preheader
 ; SI-NEXT:    s_add_i32 s9, s7, 25
 ; SI-NEXT:    v_mov_b32_e32 v7, 0x43300000
 ; SI-NEXT:    v_mov_b32_e32 v2, 0
 ; SI-NEXT:    s_mov_b32 s7, 0x432fffff
-; SI-NEXT:  .LBB15_15: ; %frem.loop_body
+; SI-NEXT:  .LBB15_16: ; %frem.loop_body
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; SI-NEXT:    v_mov_b32_e32 v6, v4
 ; SI-NEXT:    v_mov_b32_e32 v5, v3
@@ -17887,11 +18931,11 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; SI-NEXT:    v_cndmask_b32_e32 v4, v4, v9, vcc
 ; SI-NEXT:    v_cndmask_b32_e32 v3, v3, v8, vcc
 ; SI-NEXT:    v_ldexp_f64 v[3:4], v[3:4], 26
-; SI-NEXT:    s_cbranch_scc1 .LBB15_15
-; SI-NEXT:  ; %bb.16: ; %Flow
+; SI-NEXT:    s_cbranch_scc1 .LBB15_16
+; SI-NEXT:  ; %bb.17: ; %Flow
 ; SI-NEXT:    v_mov_b32_e32 v3, v5
 ; SI-NEXT:    v_mov_b32_e32 v4, v6
-; SI-NEXT:  .LBB15_17: ; %frem.loop_exit
+; SI-NEXT:  .LBB15_18: ; %frem.loop_exit
 ; SI-NEXT:    s_sub_i32 s6, s9, 25
 ; SI-NEXT:    v_ldexp_f64 v[2:3], v[3:4], s6
 ; SI-NEXT:    s_mov_b32 s6, -1
@@ -17912,7 +18956,11 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; SI-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc
 ; SI-NEXT:    v_mov_b32_e32 v4, s5
 ; SI-NEXT:    v_bfi_b32 v3, s6, v3, v4
-; SI-NEXT:  .LBB15_18: ; %Flow49
+; SI-NEXT:    s_branch .LBB15_20
+; SI-NEXT:  .LBB15_19:
+; SI-NEXT:    v_mov_b32_e32 v2, s6
+; SI-NEXT:    v_mov_b32_e32 v3, s7
+; SI-NEXT:  .LBB15_20: ; %Flow49
 ; SI-NEXT:    v_mov_b32_e32 v4, 0
 ; SI-NEXT:    v_mov_b32_e32 v5, 0x7ff00000
 ; SI-NEXT:    v_cmp_nge_f64_e64 vcc, |s[2:3]|, v[4:5]
@@ -17943,22 +18991,28 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; CI-NEXT:  ; %bb.1: ; %frem.else16
 ; CI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, 1.0
 ; CI-NEXT:    v_and_b32_e32 v4, 0x80000000, v1
+; CI-NEXT:    s_mov_b64 s[2:3], 0
 ; CI-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc
 ; CI-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc
-; CI-NEXT:    s_cbranch_execz .LBB15_3
-; CI-NEXT:    s_branch .LBB15_8
+; CI-NEXT:    s_branch .LBB15_3
 ; CI-NEXT:  .LBB15_2:
+; CI-NEXT:    s_mov_b64 s[2:3], -1
 ; CI-NEXT:    ; implicit-def: $vgpr4_vgpr5
-; CI-NEXT:  .LBB15_3: ; %frem.compute15
+; CI-NEXT:  .LBB15_3: ; %Flow52
+; CI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; CI-NEXT:    s_cselect_b32 s2, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s2, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB15_9
+; CI-NEXT:  ; %bb.4: ; %frem.compute15
 ; CI-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|
 ; CI-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]
 ; CI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 26
 ; CI-NEXT:    v_add_i32_e32 v8, vcc, -1, v6
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v8
-; CI-NEXT:    s_cbranch_vccnz .LBB15_7
-; CI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB15_8
+; CI-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; CI-NEXT:    v_add_i32_e32 v8, vcc, 25, v6
-; CI-NEXT:  .LBB15_5: ; %frem.loop_body23
+; CI-NEXT:  .LBB15_6: ; %frem.loop_body23
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v7, v5
 ; CI-NEXT:    v_mov_b32_e32 v6, v4
@@ -17971,11 +19025,11 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; CI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 26
 ; CI-NEXT:    v_subrev_i32_e32 v8, vcc, 26, v8
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v8
-; CI-NEXT:    s_cbranch_vccnz .LBB15_5
-; CI-NEXT:  ; %bb.6: ; %Flow50
+; CI-NEXT:    s_cbranch_vccnz .LBB15_6
+; CI-NEXT:  ; %bb.7: ; %Flow50
 ; CI-NEXT:    v_mov_b32_e32 v4, v6
 ; CI-NEXT:    v_mov_b32_e32 v5, v7
-; CI-NEXT:  .LBB15_7: ; %frem.loop_exit24
+; CI-NEXT:  .LBB15_8: ; %frem.loop_exit24
 ; CI-NEXT:    v_subrev_i32_e32 v6, vcc, 25, v8
 ; CI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v6
 ; CI-NEXT:    s_brev_b32 s2, -2
@@ -17986,29 +19040,35 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; CI-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc
 ; CI-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc
 ; CI-NEXT:    v_bfi_b32 v5, s2, v5, v1
-; CI-NEXT:  .LBB15_8:
+; CI-NEXT:  .LBB15_9:
 ; CI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[2:3]|, 1.0
 ; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; CI-NEXT:    s_cbranch_vccz .LBB15_10
-; CI-NEXT:  ; %bb.9: ; %frem.else
+; CI-NEXT:    s_cbranch_vccz .LBB15_11
+; CI-NEXT:  ; %bb.10: ; %frem.else
 ; CI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[2:3]|, 1.0
 ; CI-NEXT:    v_and_b32_e32 v6, 0x80000000, v3
+; CI-NEXT:    s_mov_b64 s[2:3], 0
 ; CI-NEXT:    v_cndmask_b32_e32 v7, v3, v6, vcc
 ; CI-NEXT:    v_cndmask_b32_e64 v6, v2, 0, vcc
-; CI-NEXT:    s_cbranch_execz .LBB15_11
-; CI-NEXT:    s_branch .LBB15_16
-; CI-NEXT:  .LBB15_10:
+; CI-NEXT:    s_branch .LBB15_12
+; CI-NEXT:  .LBB15_11:
+; CI-NEXT:    s_mov_b64 s[2:3], -1
 ; CI-NEXT:    ; implicit-def: $vgpr6_vgpr7
-; CI-NEXT:  .LBB15_11: ; %frem.compute
+; CI-NEXT:  .LBB15_12: ; %Flow48
+; CI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; CI-NEXT:    s_cselect_b32 s2, 1, 0
+; CI-NEXT:    s_cmp_lg_u32 s2, 1
+; CI-NEXT:    s_cbranch_scc1 .LBB15_18
+; CI-NEXT:  ; %bb.13: ; %frem.compute
 ; CI-NEXT:    v_frexp_mant_f64_e64 v[6:7], |v[2:3]|
 ; CI-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]
 ; CI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
 ; CI-NEXT:    v_add_i32_e32 v10, vcc, -1, v8
 ; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v10
-; CI-NEXT:    s_cbranch_vccnz .LBB15_15
-; CI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; CI-NEXT:    s_cbranch_vccnz .LBB15_17
+; CI-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; CI-NEXT:    v_add_i32_e32 v10, vcc, 25, v8
-; CI-NEXT:  .LBB15_13: ; %frem.loop_body
+; CI-NEXT:  .LBB15_15: ; %frem.loop_body
 ; CI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CI-NEXT:    v_mov_b32_e32 v9, v7
 ; CI-NEXT:    v_mov_b32_e32 v8, v6
@@ -18021,11 +19081,11 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; CI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
 ; CI-NEXT:    v_subrev_i32_e32 v10, vcc, 26, v10
 ; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v10
-; CI-NEXT:    s_cbranch_vccnz .LBB15_13
-; CI-NEXT:  ; %bb.14: ; %Flow
+; CI-NEXT:    s_cbranch_vccnz .LBB15_15
+; CI-NEXT:  ; %bb.16: ; %Flow
 ; CI-NEXT:    v_mov_b32_e32 v6, v8
 ; CI-NEXT:    v_mov_b32_e32 v7, v9
-; CI-NEXT:  .LBB15_15: ; %frem.loop_exit
+; CI-NEXT:  .LBB15_17: ; %frem.loop_exit
 ; CI-NEXT:    v_subrev_i32_e32 v8, vcc, 25, v10
 ; CI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v8
 ; CI-NEXT:    s_brev_b32 s2, -2
@@ -18036,7 +19096,7 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; CI-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc
 ; CI-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc
 ; CI-NEXT:    v_bfi_b32 v7, s2, v7, v3
-; CI-NEXT:  .LBB15_16: ; %Flow49
+; CI-NEXT:  .LBB15_18: ; %Flow49
 ; CI-NEXT:    s_mov_b32 s4, 0
 ; CI-NEXT:    s_mov_b32 s5, 0x7ff00000
 ; CI-NEXT:    v_cmp_nge_f64_e64 vcc, |v[0:1]|, s[4:5]
@@ -18065,22 +19125,28 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; VI-NEXT:  ; %bb.1: ; %frem.else16
 ; VI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, 1.0
 ; VI-NEXT:    v_and_b32_e32 v4, 0x80000000, v1
+; VI-NEXT:    s_mov_b64 s[2:3], 0
 ; VI-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc
 ; VI-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc
-; VI-NEXT:    s_cbranch_execz .LBB15_3
-; VI-NEXT:    s_branch .LBB15_8
+; VI-NEXT:    s_branch .LBB15_3
 ; VI-NEXT:  .LBB15_2:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr4_vgpr5
-; VI-NEXT:  .LBB15_3: ; %frem.compute15
+; VI-NEXT:  .LBB15_3: ; %Flow52
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_9
+; VI-NEXT:  ; %bb.4: ; %frem.compute15
 ; VI-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|
 ; VI-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]
 ; VI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 26
 ; VI-NEXT:    v_add_u32_e32 v8, vcc, -1, v6
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v8
-; VI-NEXT:    s_cbranch_vccnz .LBB15_7
-; VI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB15_8
+; VI-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; VI-NEXT:    v_add_u32_e32 v8, vcc, 25, v6
-; VI-NEXT:  .LBB15_5: ; %frem.loop_body23
+; VI-NEXT:  .LBB15_6: ; %frem.loop_body23
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v7, v5
 ; VI-NEXT:    v_mov_b32_e32 v6, v4
@@ -18093,11 +19159,11 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; VI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 26
 ; VI-NEXT:    v_subrev_u32_e32 v8, vcc, 26, v8
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v8
-; VI-NEXT:    s_cbranch_vccnz .LBB15_5
-; VI-NEXT:  ; %bb.6: ; %Flow50
+; VI-NEXT:    s_cbranch_vccnz .LBB15_6
+; VI-NEXT:  ; %bb.7: ; %Flow50
 ; VI-NEXT:    v_mov_b32_e32 v4, v6
 ; VI-NEXT:    v_mov_b32_e32 v5, v7
-; VI-NEXT:  .LBB15_7: ; %frem.loop_exit24
+; VI-NEXT:  .LBB15_8: ; %frem.loop_exit24
 ; VI-NEXT:    v_subrev_u32_e32 v6, vcc, 25, v8
 ; VI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v6
 ; VI-NEXT:    s_brev_b32 s2, -2
@@ -18108,29 +19174,35 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; VI-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc
 ; VI-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc
 ; VI-NEXT:    v_bfi_b32 v5, s2, v5, v1
-; VI-NEXT:  .LBB15_8:
+; VI-NEXT:  .LBB15_9:
 ; VI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[2:3]|, 1.0
 ; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; VI-NEXT:    s_cbranch_vccz .LBB15_10
-; VI-NEXT:  ; %bb.9: ; %frem.else
+; VI-NEXT:    s_cbranch_vccz .LBB15_11
+; VI-NEXT:  ; %bb.10: ; %frem.else
 ; VI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[2:3]|, 1.0
 ; VI-NEXT:    v_and_b32_e32 v6, 0x80000000, v3
+; VI-NEXT:    s_mov_b64 s[2:3], 0
 ; VI-NEXT:    v_cndmask_b32_e32 v7, v3, v6, vcc
 ; VI-NEXT:    v_cndmask_b32_e64 v6, v2, 0, vcc
-; VI-NEXT:    s_cbranch_execz .LBB15_11
-; VI-NEXT:    s_branch .LBB15_16
-; VI-NEXT:  .LBB15_10:
+; VI-NEXT:    s_branch .LBB15_12
+; VI-NEXT:  .LBB15_11:
+; VI-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-NEXT:    ; implicit-def: $vgpr6_vgpr7
-; VI-NEXT:  .LBB15_11: ; %frem.compute
+; VI-NEXT:  .LBB15_12: ; %Flow48
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_18
+; VI-NEXT:  ; %bb.13: ; %frem.compute
 ; VI-NEXT:    v_frexp_mant_f64_e64 v[6:7], |v[2:3]|
 ; VI-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]
 ; VI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
 ; VI-NEXT:    v_add_u32_e32 v10, vcc, -1, v8
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v10
-; VI-NEXT:    s_cbranch_vccnz .LBB15_15
-; VI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; VI-NEXT:    s_cbranch_vccnz .LBB15_17
+; VI-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; VI-NEXT:    v_add_u32_e32 v10, vcc, 25, v8
-; VI-NEXT:  .LBB15_13: ; %frem.loop_body
+; VI-NEXT:  .LBB15_15: ; %frem.loop_body
 ; VI-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; VI-NEXT:    v_mov_b32_e32 v9, v7
 ; VI-NEXT:    v_mov_b32_e32 v8, v6
@@ -18143,11 +19215,11 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; VI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
 ; VI-NEXT:    v_subrev_u32_e32 v10, vcc, 26, v10
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v10
-; VI-NEXT:    s_cbranch_vccnz .LBB15_13
-; VI-NEXT:  ; %bb.14: ; %Flow
+; VI-NEXT:    s_cbranch_vccnz .LBB15_15
+; VI-NEXT:  ; %bb.16: ; %Flow
 ; VI-NEXT:    v_mov_b32_e32 v6, v8
 ; VI-NEXT:    v_mov_b32_e32 v7, v9
-; VI-NEXT:  .LBB15_15: ; %frem.loop_exit
+; VI-NEXT:  .LBB15_17: ; %frem.loop_exit
 ; VI-NEXT:    v_subrev_u32_e32 v8, vcc, 25, v10
 ; VI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v8
 ; VI-NEXT:    s_brev_b32 s2, -2
@@ -18158,7 +19230,7 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; VI-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc
 ; VI-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc
 ; VI-NEXT:    v_bfi_b32 v7, s2, v7, v3
-; VI-NEXT:  .LBB15_16: ; %Flow49
+; VI-NEXT:  .LBB15_18: ; %Flow49
 ; VI-NEXT:    s_mov_b32 s2, 0
 ; VI-NEXT:    s_mov_b32 s3, 0x7ff00000
 ; VI-NEXT:    v_cmp_nge_f64_e64 vcc, |v[0:1]|, s[2:3]
@@ -18186,22 +19258,28 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX9-NEXT:  ; %bb.1: ; %frem.else16
 ; GFX9-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, 1.0
 ; GFX9-NEXT:    v_and_b32_e32 v4, 0x80000000, v1
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX9-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc
 ; GFX9-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB15_3
-; GFX9-NEXT:    s_branch .LBB15_8
+; GFX9-NEXT:    s_branch .LBB15_3
 ; GFX9-NEXT:  .LBB15_2:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr4_vgpr5
-; GFX9-NEXT:  .LBB15_3: ; %frem.compute15
+; GFX9-NEXT:  .LBB15_3: ; %Flow52
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_9
+; GFX9-NEXT:  ; %bb.4: ; %frem.compute15
 ; GFX9-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|
 ; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]
 ; GFX9-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 26
 ; GFX9-NEXT:    v_add_u32_e32 v8, -1, v6
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v8
-; GFX9-NEXT:    s_cbranch_vccnz .LBB15_7
-; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB15_8
+; GFX9-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; GFX9-NEXT:    v_add_u32_e32 v8, 25, v6
-; GFX9-NEXT:  .LBB15_5: ; %frem.loop_body23
+; GFX9-NEXT:  .LBB15_6: ; %frem.loop_body23
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v7, v5
 ; GFX9-NEXT:    v_mov_b32_e32 v6, v4
@@ -18214,11 +19292,11 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX9-NEXT:    v_cndmask_b32_e32 v4, v4, v9, vcc
 ; GFX9-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 26
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v8
-; GFX9-NEXT:    s_cbranch_vccnz .LBB15_5
-; GFX9-NEXT:  ; %bb.6: ; %Flow50
+; GFX9-NEXT:    s_cbranch_vccnz .LBB15_6
+; GFX9-NEXT:  ; %bb.7: ; %Flow50
 ; GFX9-NEXT:    v_mov_b32_e32 v4, v6
 ; GFX9-NEXT:    v_mov_b32_e32 v5, v7
-; GFX9-NEXT:  .LBB15_7: ; %frem.loop_exit24
+; GFX9-NEXT:  .LBB15_8: ; %frem.loop_exit24
 ; GFX9-NEXT:    v_subrev_u32_e32 v6, 25, v8
 ; GFX9-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v6
 ; GFX9-NEXT:    s_brev_b32 s2, -2
@@ -18229,29 +19307,35 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX9-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc
 ; GFX9-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc
 ; GFX9-NEXT:    v_bfi_b32 v5, s2, v5, v1
-; GFX9-NEXT:  .LBB15_8:
+; GFX9-NEXT:  .LBB15_9:
 ; GFX9-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[2:3]|, 1.0
 ; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]
-; GFX9-NEXT:    s_cbranch_vccz .LBB15_10
-; GFX9-NEXT:  ; %bb.9: ; %frem.else
+; GFX9-NEXT:    s_cbranch_vccz .LBB15_11
+; GFX9-NEXT:  ; %bb.10: ; %frem.else
 ; GFX9-NEXT:    v_cmp_eq_f64_e64 vcc, |v[2:3]|, 1.0
 ; GFX9-NEXT:    v_and_b32_e32 v6, 0x80000000, v3
+; GFX9-NEXT:    s_mov_b64 s[2:3], 0
 ; GFX9-NEXT:    v_cndmask_b32_e32 v7, v3, v6, vcc
 ; GFX9-NEXT:    v_cndmask_b32_e64 v6, v2, 0, vcc
-; GFX9-NEXT:    s_cbranch_execz .LBB15_11
-; GFX9-NEXT:    s_branch .LBB15_16
-; GFX9-NEXT:  .LBB15_10:
+; GFX9-NEXT:    s_branch .LBB15_12
+; GFX9-NEXT:  .LBB15_11:
+; GFX9-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-NEXT:    ; implicit-def: $vgpr6_vgpr7
-; GFX9-NEXT:  .LBB15_11: ; %frem.compute
+; GFX9-NEXT:  .LBB15_12: ; %Flow48
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_18
+; GFX9-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX9-NEXT:    v_frexp_mant_f64_e64 v[6:7], |v[2:3]|
 ; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]
 ; GFX9-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
 ; GFX9-NEXT:    v_add_u32_e32 v10, -1, v8
 ; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v10
-; GFX9-NEXT:    s_cbranch_vccnz .LBB15_15
-; GFX9-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX9-NEXT:    s_cbranch_vccnz .LBB15_17
+; GFX9-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX9-NEXT:    v_add_u32_e32 v10, 25, v8
-; GFX9-NEXT:  .LBB15_13: ; %frem.loop_body
+; GFX9-NEXT:  .LBB15_15: ; %frem.loop_body
 ; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-NEXT:    v_mov_b32_e32 v9, v7
 ; GFX9-NEXT:    v_mov_b32_e32 v8, v6
@@ -18264,11 +19348,11 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX9-NEXT:    v_cndmask_b32_e32 v6, v6, v11, vcc
 ; GFX9-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
 ; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v10
-; GFX9-NEXT:    s_cbranch_vccnz .LBB15_13
-; GFX9-NEXT:  ; %bb.14: ; %Flow
+; GFX9-NEXT:    s_cbranch_vccnz .LBB15_15
+; GFX9-NEXT:  ; %bb.16: ; %Flow
 ; GFX9-NEXT:    v_mov_b32_e32 v6, v8
 ; GFX9-NEXT:    v_mov_b32_e32 v7, v9
-; GFX9-NEXT:  .LBB15_15: ; %frem.loop_exit
+; GFX9-NEXT:  .LBB15_17: ; %frem.loop_exit
 ; GFX9-NEXT:    v_subrev_u32_e32 v8, 25, v10
 ; GFX9-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v8
 ; GFX9-NEXT:    s_brev_b32 s2, -2
@@ -18279,7 +19363,7 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX9-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc
 ; GFX9-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc
 ; GFX9-NEXT:    v_bfi_b32 v7, s2, v7, v3
-; GFX9-NEXT:  .LBB15_16: ; %Flow49
+; GFX9-NEXT:  .LBB15_18: ; %Flow49
 ; GFX9-NEXT:    s_mov_b32 s2, 0
 ; GFX9-NEXT:    s_mov_b32 s3, 0x7ff00000
 ; GFX9-NEXT:    v_cmp_nge_f64_e64 vcc, |v[0:1]|, s[2:3]
@@ -18306,23 +19390,29 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX10-NEXT:  ; %bb.1: ; %frem.else16
 ; GFX10-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, 1.0
 ; GFX10-NEXT:    v_and_b32_e32 v4, 0x80000000, v1
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo
 ; GFX10-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB15_3
-; GFX10-NEXT:    s_branch .LBB15_8
+; GFX10-NEXT:    s_branch .LBB15_3
 ; GFX10-NEXT:  .LBB15_2:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr4_vgpr5
-; GFX10-NEXT:  .LBB15_3: ; %frem.compute15
+; GFX10-NEXT:  .LBB15_3: ; %Flow52
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB15_9
+; GFX10-NEXT:  ; %bb.4: ; %frem.compute15
 ; GFX10-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|
 ; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]
 ; GFX10-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 26
 ; GFX10-NEXT:    v_add_nc_u32_e32 v8, -1, v6
 ; GFX10-NEXT:    v_readfirstlane_b32 s2, v6
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v8
-; GFX10-NEXT:    s_cbranch_vccnz .LBB15_7
-; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB15_8
+; GFX10-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; GFX10-NEXT:    s_add_i32 s2, s2, 25
-; GFX10-NEXT:  .LBB15_5: ; %frem.loop_body23
+; GFX10-NEXT:  .LBB15_6: ; %frem.loop_body23
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v7, v5
 ; GFX10-NEXT:    v_mov_b32_e32 v6, v4
@@ -18335,12 +19425,12 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX10-NEXT:    v_cndmask_b32_e32 v5, v5, v9, vcc_lo
 ; GFX10-NEXT:    v_cndmask_b32_e32 v4, v4, v8, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 26
-; GFX10-NEXT:    s_cbranch_scc1 .LBB15_5
-; GFX10-NEXT:  ; %bb.6: ; %Flow50
+; GFX10-NEXT:    s_cbranch_scc1 .LBB15_6
+; GFX10-NEXT:  ; %bb.7: ; %Flow50
 ; GFX10-NEXT:    v_mov_b32_e32 v4, v6
 ; GFX10-NEXT:    v_mov_b32_e32 v8, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v5, v7
-; GFX10-NEXT:  .LBB15_7: ; %frem.loop_exit24
+; GFX10-NEXT:  .LBB15_8: ; %frem.loop_exit24
 ; GFX10-NEXT:    v_subrev_nc_u32_e32 v6, 25, v8
 ; GFX10-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v6
 ; GFX10-NEXT:    v_rndne_f64_e32 v[6:7], v[4:5]
@@ -18350,30 +19440,36 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX10-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo
 ; GFX10-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo
 ; GFX10-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v1
-; GFX10-NEXT:  .LBB15_8:
+; GFX10-NEXT:  .LBB15_9:
 ; GFX10-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, 1.0
 ; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
-; GFX10-NEXT:    s_cbranch_vccz .LBB15_10
-; GFX10-NEXT:  ; %bb.9: ; %frem.else
+; GFX10-NEXT:    s_cbranch_vccz .LBB15_11
+; GFX10-NEXT:  ; %bb.10: ; %frem.else
 ; GFX10-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, 1.0
 ; GFX10-NEXT:    v_and_b32_e32 v6, 0x80000000, v3
+; GFX10-NEXT:    s_mov_b32 s2, 0
 ; GFX10-NEXT:    v_cndmask_b32_e32 v7, v3, v6, vcc_lo
 ; GFX10-NEXT:    v_cndmask_b32_e64 v6, v2, 0, vcc_lo
-; GFX10-NEXT:    s_cbranch_execz .LBB15_11
-; GFX10-NEXT:    s_branch .LBB15_16
-; GFX10-NEXT:  .LBB15_10:
+; GFX10-NEXT:    s_branch .LBB15_12
+; GFX10-NEXT:  .LBB15_11:
+; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    ; implicit-def: $vgpr6_vgpr7
-; GFX10-NEXT:  .LBB15_11: ; %frem.compute
+; GFX10-NEXT:  .LBB15_12: ; %Flow48
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB15_18
+; GFX10-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX10-NEXT:    v_frexp_mant_f64_e64 v[6:7], |v[2:3]|
 ; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]
 ; GFX10-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
 ; GFX10-NEXT:    v_add_nc_u32_e32 v10, -1, v8
 ; GFX10-NEXT:    v_readfirstlane_b32 s2, v8
 ; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v10
-; GFX10-NEXT:    s_cbranch_vccnz .LBB15_15
-; GFX10-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX10-NEXT:    s_cbranch_vccnz .LBB15_17
+; GFX10-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX10-NEXT:    s_add_i32 s2, s2, 25
-; GFX10-NEXT:  .LBB15_13: ; %frem.loop_body
+; GFX10-NEXT:  .LBB15_15: ; %frem.loop_body
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_mov_b32_e32 v9, v7
 ; GFX10-NEXT:    v_mov_b32_e32 v8, v6
@@ -18386,12 +19482,12 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX10-NEXT:    v_cndmask_b32_e32 v7, v7, v11, vcc_lo
 ; GFX10-NEXT:    v_cndmask_b32_e32 v6, v6, v10, vcc_lo
 ; GFX10-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
-; GFX10-NEXT:    s_cbranch_scc1 .LBB15_13
-; GFX10-NEXT:  ; %bb.14: ; %Flow
+; GFX10-NEXT:    s_cbranch_scc1 .LBB15_15
+; GFX10-NEXT:  ; %bb.16: ; %Flow
 ; GFX10-NEXT:    v_mov_b32_e32 v6, v8
 ; GFX10-NEXT:    v_mov_b32_e32 v10, s2
 ; GFX10-NEXT:    v_mov_b32_e32 v7, v9
-; GFX10-NEXT:  .LBB15_15: ; %frem.loop_exit
+; GFX10-NEXT:  .LBB15_17: ; %frem.loop_exit
 ; GFX10-NEXT:    v_subrev_nc_u32_e32 v8, 25, v10
 ; GFX10-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v8
 ; GFX10-NEXT:    v_rndne_f64_e32 v[8:9], v[6:7]
@@ -18401,7 +19497,7 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX10-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo
 ; GFX10-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc_lo
 ; GFX10-NEXT:    v_bfi_b32 v7, 0x7fffffff, v7, v3
-; GFX10-NEXT:  .LBB15_16: ; %Flow49
+; GFX10-NEXT:  .LBB15_18: ; %Flow49
 ; GFX10-NEXT:    v_cmp_nle_f64_e64 vcc_lo, 0x7ff00000, |v[0:1]|
 ; GFX10-NEXT:    v_cndmask_b32_e32 v1, 0x7ff80000, v5, vcc_lo
 ; GFX10-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc_lo
@@ -18425,14 +19521,21 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX11-NEXT:  ; %bb.1: ; %frem.else16
 ; GFX11-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, 1.0
 ; GFX11-NEXT:    v_and_b32_e32 v4, 0x80000000, v1
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX11-NEXT:    s_mov_b32 s2, 0
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo
 ; GFX11-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo
-; GFX11-NEXT:    s_cbranch_execz .LBB15_3
-; GFX11-NEXT:    s_branch .LBB15_8
+; GFX11-NEXT:    s_branch .LBB15_3
 ; GFX11-NEXT:  .LBB15_2:
+; GFX11-NEXT:    s_mov_b32 s2, -1
 ; GFX11-NEXT:    ; implicit-def: $vgpr4_vgpr5
-; GFX11-NEXT:  .LBB15_3: ; %frem.compute15
+; GFX11-NEXT:  .LBB15_3: ; %Flow52
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_9
+; GFX11-NEXT:  ; %bb.4: ; %frem.compute15
 ; GFX11-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|
 ; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -18441,10 +19544,10 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX11-NEXT:    v_readfirstlane_b32 s2, v6
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v8
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_7
-; GFX11-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; GFX11-NEXT:    s_cbranch_vccnz .LBB15_8
+; GFX11-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; GFX11-NEXT:    s_add_i32 s2, s2, 25
-; GFX11-NEXT:  .LBB15_5: ; %frem.loop_body23
+; GFX11-NEXT:  .LBB15_6: ; %frem.loop_body23
 ; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v4
@@ -18459,11 +19562,11 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX11-NEXT:    v_dual_cndmask_b32 v5, v5, v9 :: v_dual_cndmask_b32 v4, v4, v8
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 26
-; GFX11-NEXT:    s_cbranch_scc1 .LBB15_5
-; GFX11-NEXT:  ; %bb.6: ; %Flow50
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_6
+; GFX11-NEXT:  ; %bb.7: ; %Flow50
 ; GFX11-NEXT:    v_mov_b32_e32 v4, v6
 ; GFX11-NEXT:    v_dual_mov_b32 v8, s2 :: v_dual_mov_b32 v5, v7
-; GFX11-NEXT:  .LBB15_7: ; %frem.loop_exit24
+; GFX11-NEXT:  .LBB15_8: ; %frem.loop_exit24
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_subrev_nc_u32_e32 v6, 25, v8
 ; GFX11-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v6
@@ -18476,21 +19579,28 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX11-NEXT:    v_dual_cndmask_b32 v4, v4, v6 :: v_dual_cndmask_b32 v5, v5, v7
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v1
-; GFX11-NEXT:  .LBB15_8:
+; GFX11-NEXT:  .LBB15_9:
 ; GFX11-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, 1.0
 ; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
-; GFX11-NEXT:    s_cbranch_vccz .LBB15_10
-; GFX11-NEXT:  ; %bb.9: ; %frem.else
+; GFX11-NEXT:    s_cbranch_vccz .LBB15_11
+; GFX11-NEXT:  ; %bb.10: ; %frem.else
 ; GFX11-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, 1.0
 ; GFX11-NEXT:    v_and_b32_e32 v6, 0x80000000, v3
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX11-NEXT:    s_mov_b32 s2, 0
+; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_cndmask_b32_e32 v7, v3, v6, vcc_lo
 ; GFX11-NEXT:    v_cndmask_b32_e64 v6, v2, 0, vcc_lo
-; GFX11-NEXT:    s_cbranch_execz .LBB15_11
-; GFX11-NEXT:    s_branch .LBB15_16
-; GFX11-NEXT:  .LBB15_10:
+; GFX11-NEXT:    s_branch .LBB15_12
+; GFX11-NEXT:  .LBB15_11:
+; GFX11-NEXT:    s_mov_b32 s2, -1
 ; GFX11-NEXT:    ; implicit-def: $vgpr6_vgpr7
-; GFX11-NEXT:  .LBB15_11: ; %frem.compute
+; GFX11-NEXT:  .LBB15_12: ; %Flow48
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_18
+; GFX11-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX11-NEXT:    v_frexp_mant_f64_e64 v[6:7], |v[2:3]|
 ; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -18499,10 +19609,10 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX11-NEXT:    v_readfirstlane_b32 s2, v8
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v10
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_15
-; GFX11-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX11-NEXT:    s_cbranch_vccnz .LBB15_17
+; GFX11-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX11-NEXT:    s_add_i32 s2, s2, 25
-; GFX11-NEXT:  .LBB15_13: ; %frem.loop_body
+; GFX11-NEXT:  .LBB15_15: ; %frem.loop_body
 ; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v6
@@ -18517,11 +19627,11 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX11-NEXT:    v_dual_cndmask_b32 v7, v7, v11 :: v_dual_cndmask_b32 v6, v6, v10
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
-; GFX11-NEXT:    s_cbranch_scc1 .LBB15_13
-; GFX11-NEXT:  ; %bb.14: ; %Flow
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_15
+; GFX11-NEXT:  ; %bb.16: ; %Flow
 ; GFX11-NEXT:    v_mov_b32_e32 v6, v8
 ; GFX11-NEXT:    v_dual_mov_b32 v10, s2 :: v_dual_mov_b32 v7, v9
-; GFX11-NEXT:  .LBB15_15: ; %frem.loop_exit
+; GFX11-NEXT:  .LBB15_17: ; %frem.loop_exit
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-NEXT:    v_subrev_nc_u32_e32 v8, 25, v10
 ; GFX11-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v8
@@ -18534,7 +19644,7 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX11-NEXT:    v_dual_cndmask_b32 v6, v6, v8 :: v_dual_cndmask_b32 v7, v7, v9
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_bfi_b32 v7, 0x7fffffff, v7, v3
-; GFX11-NEXT:  .LBB15_16: ; %Flow49
+; GFX11-NEXT:  .LBB15_18: ; %Flow49
 ; GFX11-NEXT:    v_cmp_nle_f64_e64 vcc_lo, 0x7ff00000, |v[0:1]|
 ; GFX11-NEXT:    v_dual_cndmask_b32 v1, 0x7ff80000, v5 :: v_dual_cndmask_b32 v0, 0, v4
 ; GFX11-NEXT:    v_cmp_nle_f64_e64 vcc_lo, 0x7ff00000, |v[2:3]|
@@ -18557,14 +19667,21 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX1150-NEXT:  ; %bb.1: ; %frem.else16
 ; GFX1150-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, 1.0
 ; GFX1150-NEXT:    v_and_b32_e32 v4, 0x80000000, v1
-; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1150-NEXT:    s_mov_b32 s2, 0
+; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo
 ; GFX1150-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo
-; GFX1150-NEXT:    s_cbranch_execz .LBB15_3
-; GFX1150-NEXT:    s_branch .LBB15_8
+; GFX1150-NEXT:    s_branch .LBB15_3
 ; GFX1150-NEXT:  .LBB15_2:
+; GFX1150-NEXT:    s_mov_b32 s2, -1
 ; GFX1150-NEXT:    ; implicit-def: $vgpr4_vgpr5
-; GFX1150-NEXT:  .LBB15_3: ; %frem.compute15
+; GFX1150-NEXT:  .LBB15_3: ; %Flow52
+; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1150-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1150-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB15_9
+; GFX1150-NEXT:  ; %bb.4: ; %frem.compute15
 ; GFX1150-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|
 ; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -18573,10 +19690,10 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX1150-NEXT:    v_readfirstlane_b32 s2, v6
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v8
-; GFX1150-NEXT:    s_cbranch_vccnz .LBB15_7
-; GFX1150-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; GFX1150-NEXT:    s_cbranch_vccnz .LBB15_8
+; GFX1150-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; GFX1150-NEXT:    s_add_i32 s2, s2, 25
-; GFX1150-NEXT:  .LBB15_5: ; %frem.loop_body23
+; GFX1150-NEXT:  .LBB15_6: ; %frem.loop_body23
 ; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v4
@@ -18591,11 +19708,11 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX1150-NEXT:    v_dual_cndmask_b32 v5, v5, v9 :: v_dual_cndmask_b32 v4, v4, v8
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 26
-; GFX1150-NEXT:    s_cbranch_scc1 .LBB15_5
-; GFX1150-NEXT:  ; %bb.6: ; %Flow50
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB15_6
+; GFX1150-NEXT:  ; %bb.7: ; %Flow50
 ; GFX1150-NEXT:    v_mov_b32_e32 v4, v6
 ; GFX1150-NEXT:    v_dual_mov_b32 v8, s2 :: v_dual_mov_b32 v5, v7
-; GFX1150-NEXT:  .LBB15_7: ; %frem.loop_exit24
+; GFX1150-NEXT:  .LBB15_8: ; %frem.loop_exit24
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_subrev_nc_u32_e32 v6, 25, v8
 ; GFX1150-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v6
@@ -18608,21 +19725,28 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX1150-NEXT:    v_dual_cndmask_b32 v4, v4, v6 :: v_dual_cndmask_b32 v5, v5, v7
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v1
-; GFX1150-NEXT:  .LBB15_8:
+; GFX1150-NEXT:  .LBB15_9:
 ; GFX1150-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, 1.0
 ; GFX1150-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
-; GFX1150-NEXT:    s_cbranch_vccz .LBB15_10
-; GFX1150-NEXT:  ; %bb.9: ; %frem.else
+; GFX1150-NEXT:    s_cbranch_vccz .LBB15_11
+; GFX1150-NEXT:  ; %bb.10: ; %frem.else
 ; GFX1150-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, 1.0
 ; GFX1150-NEXT:    v_and_b32_e32 v6, 0x80000000, v3
-; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1150-NEXT:    s_mov_b32 s2, 0
+; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_cndmask_b32_e32 v7, v3, v6, vcc_lo
 ; GFX1150-NEXT:    v_cndmask_b32_e64 v6, v2, 0, vcc_lo
-; GFX1150-NEXT:    s_cbranch_execz .LBB15_11
-; GFX1150-NEXT:    s_branch .LBB15_16
-; GFX1150-NEXT:  .LBB15_10:
+; GFX1150-NEXT:    s_branch .LBB15_12
+; GFX1150-NEXT:  .LBB15_11:
+; GFX1150-NEXT:    s_mov_b32 s2, -1
 ; GFX1150-NEXT:    ; implicit-def: $vgpr6_vgpr7
-; GFX1150-NEXT:  .LBB15_11: ; %frem.compute
+; GFX1150-NEXT:  .LBB15_12: ; %Flow48
+; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1150-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1150-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1150-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB15_18
+; GFX1150-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX1150-NEXT:    v_frexp_mant_f64_e64 v[6:7], |v[2:3]|
 ; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -18631,10 +19755,10 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX1150-NEXT:    v_readfirstlane_b32 s2, v8
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v10
-; GFX1150-NEXT:    s_cbranch_vccnz .LBB15_15
-; GFX1150-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX1150-NEXT:    s_cbranch_vccnz .LBB15_17
+; GFX1150-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX1150-NEXT:    s_add_i32 s2, s2, 25
-; GFX1150-NEXT:  .LBB15_13: ; %frem.loop_body
+; GFX1150-NEXT:  .LBB15_15: ; %frem.loop_body
 ; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1150-NEXT:    v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v6
@@ -18649,11 +19773,11 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX1150-NEXT:    v_dual_cndmask_b32 v7, v7, v11 :: v_dual_cndmask_b32 v6, v6, v10
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
-; GFX1150-NEXT:    s_cbranch_scc1 .LBB15_13
-; GFX1150-NEXT:  ; %bb.14: ; %Flow
+; GFX1150-NEXT:    s_cbranch_scc1 .LBB15_15
+; GFX1150-NEXT:  ; %bb.16: ; %Flow
 ; GFX1150-NEXT:    v_mov_b32_e32 v6, v8
 ; GFX1150-NEXT:    v_dual_mov_b32 v10, s2 :: v_dual_mov_b32 v7, v9
-; GFX1150-NEXT:  .LBB15_15: ; %frem.loop_exit
+; GFX1150-NEXT:  .LBB15_17: ; %frem.loop_exit
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1150-NEXT:    v_subrev_nc_u32_e32 v8, 25, v10
 ; GFX1150-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v8
@@ -18666,7 +19790,7 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX1150-NEXT:    v_dual_cndmask_b32 v6, v6, v8 :: v_dual_cndmask_b32 v7, v7, v9
 ; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1150-NEXT:    v_bfi_b32 v7, 0x7fffffff, v7, v3
-; GFX1150-NEXT:  .LBB15_16: ; %Flow49
+; GFX1150-NEXT:  .LBB15_18: ; %Flow49
 ; GFX1150-NEXT:    v_cmp_nle_f64_e64 vcc_lo, 0x7ff00000, |v[0:1]|
 ; GFX1150-NEXT:    v_dual_cndmask_b32 v1, 0x7ff80000, v5 :: v_dual_cndmask_b32 v0, 0, v4
 ; GFX1150-NEXT:    v_cmp_nle_f64_e64 vcc_lo, 0x7ff00000, |v[2:3]|
@@ -18689,14 +19813,21 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX1200-NEXT:  ; %bb.1: ; %frem.else16
 ; GFX1200-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, 1.0
 ; GFX1200-NEXT:    v_and_b32_e32 v4, 0x80000000, v1
-; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1200-NEXT:    s_mov_b32 s2, 0
+; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo
 ; GFX1200-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo
-; GFX1200-NEXT:    s_cbranch_execz .LBB15_3
-; GFX1200-NEXT:    s_branch .LBB15_8
+; GFX1200-NEXT:    s_branch .LBB15_3
 ; GFX1200-NEXT:  .LBB15_2:
+; GFX1200-NEXT:    s_mov_b32 s2, -1
 ; GFX1200-NEXT:    ; implicit-def: $vgpr4_vgpr5
-; GFX1200-NEXT:  .LBB15_3: ; %frem.compute15
+; GFX1200-NEXT:  .LBB15_3: ; %Flow52
+; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1200-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1200-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1200-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB15_9
+; GFX1200-NEXT:  ; %bb.4: ; %frem.compute15
 ; GFX1200-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|
 ; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -18705,10 +19836,10 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX1200-NEXT:    v_readfirstlane_b32 s2, v6
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v8
-; GFX1200-NEXT:    s_cbranch_vccnz .LBB15_7
-; GFX1200-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader
+; GFX1200-NEXT:    s_cbranch_vccnz .LBB15_8
+; GFX1200-NEXT:  ; %bb.5: ; %frem.loop_body23.preheader
 ; GFX1200-NEXT:    s_add_co_i32 s2, s2, 25
-; GFX1200-NEXT:  .LBB15_5: ; %frem.loop_body23
+; GFX1200-NEXT:  .LBB15_6: ; %frem.loop_body23
 ; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1200-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v4
@@ -18724,11 +19855,11 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX1200-NEXT:    v_dual_cndmask_b32 v5, v5, v9 :: v_dual_cndmask_b32 v4, v4, v8
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 26
-; GFX1200-NEXT:    s_cbranch_scc1 .LBB15_5
-; GFX1200-NEXT:  ; %bb.6: ; %Flow50
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB15_6
+; GFX1200-NEXT:  ; %bb.7: ; %Flow50
 ; GFX1200-NEXT:    v_mov_b32_e32 v4, v6
 ; GFX1200-NEXT:    v_dual_mov_b32 v8, s2 :: v_dual_mov_b32 v5, v7
-; GFX1200-NEXT:  .LBB15_7: ; %frem.loop_exit24
+; GFX1200-NEXT:  .LBB15_8: ; %frem.loop_exit24
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_subrev_nc_u32_e32 v6, 25, v8
 ; GFX1200-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v6
@@ -18742,23 +19873,31 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX1200-NEXT:    v_dual_cndmask_b32 v4, v4, v6 :: v_dual_cndmask_b32 v5, v5, v7
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v1
-; GFX1200-NEXT:  .LBB15_8:
+; GFX1200-NEXT:  .LBB15_9:
 ; GFX1200-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, 1.0
 ; GFX1200-NEXT:    s_and_b32 vcc_lo, exec_lo, s2
 ; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX1200-NEXT:    s_cbranch_vccz .LBB15_10
-; GFX1200-NEXT:  ; %bb.9: ; %frem.else
+; GFX1200-NEXT:    s_cbranch_vccz .LBB15_11
+; GFX1200-NEXT:  ; %bb.10: ; %frem.else
 ; GFX1200-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, 1.0
 ; GFX1200-NEXT:    v_and_b32_e32 v6, 0x80000000, v3
+; GFX1200-NEXT:    s_mov_b32 s2, 0
 ; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
-; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_cndmask_b32_e32 v7, v3, v6, vcc_lo
 ; GFX1200-NEXT:    v_cndmask_b32_e64 v6, v2, 0, vcc_lo
-; GFX1200-NEXT:    s_cbranch_execz .LBB15_11
-; GFX1200-NEXT:    s_branch .LBB15_16
-; GFX1200-NEXT:  .LBB15_10:
+; GFX1200-NEXT:    s_branch .LBB15_12
+; GFX1200-NEXT:  .LBB15_11:
+; GFX1200-NEXT:    s_mov_b32 s2, -1
 ; GFX1200-NEXT:    ; implicit-def: $vgpr6_vgpr7
-; GFX1200-NEXT:  .LBB15_11: ; %frem.compute
+; GFX1200-NEXT:  .LBB15_12: ; %Flow48
+; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1200-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX1200-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB15_18
+; GFX1200-NEXT:  ; %bb.13: ; %frem.compute
 ; GFX1200-NEXT:    v_frexp_mant_f64_e64 v[6:7], |v[2:3]|
 ; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
@@ -18767,10 +19906,10 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX1200-NEXT:    v_readfirstlane_b32 s2, v8
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v10
-; GFX1200-NEXT:    s_cbranch_vccnz .LBB15_15
-; GFX1200-NEXT:  ; %bb.12: ; %frem.loop_body.preheader
+; GFX1200-NEXT:    s_cbranch_vccnz .LBB15_17
+; GFX1200-NEXT:  ; %bb.14: ; %frem.loop_body.preheader
 ; GFX1200-NEXT:    s_add_co_i32 s2, s2, 25
-; GFX1200-NEXT:  .LBB15_13: ; %frem.loop_body
+; GFX1200-NEXT:  .LBB15_15: ; %frem.loop_body
 ; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v6
@@ -18787,11 +19926,11 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_dual_cndmask_b32 v7, v7, v11 :: v_dual_cndmask_b32 v6, v6, v10
 ; GFX1200-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 26
-; GFX1200-NEXT:    s_cbranch_scc1 .LBB15_13
-; GFX1200-NEXT:  ; %bb.14: ; %Flow
+; GFX1200-NEXT:    s_cbranch_scc1 .LBB15_15
+; GFX1200-NEXT:  ; %bb.16: ; %Flow
 ; GFX1200-NEXT:    v_mov_b32_e32 v6, v8
 ; GFX1200-NEXT:    v_dual_mov_b32 v10, s2 :: v_dual_mov_b32 v7, v9
-; GFX1200-NEXT:  .LBB15_15: ; %frem.loop_exit
+; GFX1200-NEXT:  .LBB15_17: ; %frem.loop_exit
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1200-NEXT:    v_subrev_nc_u32_e32 v8, 25, v10
 ; GFX1200-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v8
@@ -18805,7 +19944,7 @@ define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr
 ; GFX1200-NEXT:    v_dual_cndmask_b32 v6, v6, v8 :: v_dual_cndmask_b32 v7, v7, v9
 ; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1200-NEXT:    v_bfi_b32 v7, 0x7fffffff, v7, v3
-; GFX1200-NEXT:  .LBB15_16: ; %Flow49
+; GFX1200-NEXT:  .LBB15_18: ; %Flow49
 ; GFX1200-NEXT:    v_cmp_nle_f64_e64 vcc_lo, 0x7ff00000, |v[0:1]|
 ; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX1200-NEXT:    v_dual_cndmask_b32 v1, 0x7ff80000, v5 :: v_dual_cndmask_b32 v0, 0, v4

diff  --git a/llvm/test/CodeGen/AMDGPU/gep-const-address-space.ll b/llvm/test/CodeGen/AMDGPU/gep-const-address-space.ll
index 872c2cf569dcc..a2a11bdf6931a 100644
--- a/llvm/test/CodeGen/AMDGPU/gep-const-address-space.ll
+++ b/llvm/test/CodeGen/AMDGPU/gep-const-address-space.ll
@@ -21,33 +21,30 @@ define protected amdgpu_kernel void @IllegalGEPConst(i32 %a, ptr addrspace(1) %b
 ; CHECK-NEXT:    s_mov_b64 s[6:7], src_shared_base
 ; CHECK-NEXT:    s_addc_u32 s1, s1, -1
 ; CHECK-NEXT:    s_cmp_eq_u32 s1, s7
-; CHECK-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
 ; CHECK-NEXT:    s_mov_b64 s[4:5], -1
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_3
-; CHECK-NEXT:  ; %bb.1: ; %Flow6
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; CHECK-NEXT:    s_cbranch_vccz .LBB0_8
-; CHECK-NEXT:  .LBB0_2: ; %atomicrmw.phi
-; CHECK-NEXT:    s_endpgm
-; CHECK-NEXT:  .LBB0_3: ; %atomicrmw.check.private
+; CHECK-NEXT:    s_cbranch_scc0 .LBB0_6
+; CHECK-NEXT:  ; %bb.1: ; %atomicrmw.check.private
 ; CHECK-NEXT:    s_mov_b64 s[4:5], src_private_base
 ; CHECK-NEXT:    s_cmp_eq_u32 s1, s5
-; CHECK-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
 ; CHECK-NEXT:    s_mov_b64 s[4:5], -1
-; CHECK-NEXT:    s_cbranch_vccz .LBB0_5
-; CHECK-NEXT:  ; %bb.4: ; %atomicrmw.global
+; CHECK-NEXT:    s_cbranch_scc0 .LBB0_3
+; CHECK-NEXT:  ; %bb.2: ; %atomicrmw.global
 ; CHECK-NEXT:    v_mov_b32_e32 v0, 0
 ; CHECK-NEXT:    v_pk_mov_b32 v[2:3], s[2:3], s[2:3] op_sel:[0,1]
 ; CHECK-NEXT:    global_atomic_add_f64 v0, v[2:3], s[0:1]
 ; CHECK-NEXT:    s_waitcnt vmcnt(0)
 ; CHECK-NEXT:    buffer_wbinvl1_vol
 ; CHECK-NEXT:    s_mov_b64 s[4:5], 0
-; CHECK-NEXT:  .LBB0_5: ; %Flow
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_7
-; CHECK-NEXT:  ; %bb.6: ; %atomicrmw.private
+; CHECK-NEXT:  .LBB0_3: ; %Flow
+; CHECK-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_5
+; CHECK-NEXT:  ; %bb.4: ; %atomicrmw.private
 ; CHECK-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; CHECK-NEXT:    s_cselect_b32 s4, s0, -1
 ; CHECK-NEXT:    v_mov_b32_e32 v2, s4
@@ -57,15 +54,21 @@ define protected amdgpu_kernel void @IllegalGEPConst(i32 %a, ptr addrspace(1) %b
 ; CHECK-NEXT:    v_add_f64 v[0:1], v[0:1], s[2:3]
 ; CHECK-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; CHECK-NEXT:    buffer_store_dword v1, v2, s[12:15], 0 offen offset:4
-; CHECK-NEXT:  .LBB0_7: ; %Flow5
-; CHECK-NEXT:    s_cbranch_execnz .LBB0_2
-; CHECK-NEXT:  .LBB0_8: ; %atomicrmw.shared
+; CHECK-NEXT:  .LBB0_5: ; %Flow5
+; CHECK-NEXT:    s_mov_b64 s[4:5], 0
+; CHECK-NEXT:  .LBB0_6: ; %Flow6
+; CHECK-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_8
+; CHECK-NEXT:  ; %bb.7: ; %atomicrmw.shared
 ; CHECK-NEXT:    s_cmp_lg_u64 s[0:1], 0
 ; CHECK-NEXT:    s_cselect_b32 s0, s0, -1
 ; CHECK-NEXT:    v_mov_b32_e32 v0, s0
 ; CHECK-NEXT:    v_pk_mov_b32 v[2:3], s[2:3], s[2:3] op_sel:[0,1]
 ; CHECK-NEXT:    ds_add_f64 v0, v[2:3]
 ; CHECK-NEXT:    s_waitcnt lgkmcnt(0)
+; CHECK-NEXT:  .LBB0_8: ; %atomicrmw.phi
 ; CHECK-NEXT:    s_endpgm
 entry:
   %i = add nsw i32 %a, -1

diff  --git a/llvm/test/CodeGen/AMDGPU/implicit-kernarg-backend-usage.ll b/llvm/test/CodeGen/AMDGPU/implicit-kernarg-backend-usage.ll
index 2daed9b69384f..3420cb8a44653 100644
--- a/llvm/test/CodeGen/AMDGPU/implicit-kernarg-backend-usage.ll
+++ b/llvm/test/CodeGen/AMDGPU/implicit-kernarg-backend-usage.ll
@@ -116,8 +116,8 @@ define amdgpu_kernel void @llvm_amdgcn_is_shared(ptr %ptr) #0 {
 ; GFX8V4-NEXT:    s_load_dword s1, s[8:9], 0x4
 ; GFX8V4-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX8V4-NEXT:    s_cmp_eq_u32 s1, s0
-; GFX8V4-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX8V4-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; GFX8V4-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX8V4-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX8V4-NEXT:    flat_store_dword v[0:1], v0
 ; GFX8V4-NEXT:    s_waitcnt vmcnt(0)
 ; GFX8V4-NEXT:    s_endpgm
@@ -128,8 +128,8 @@ define amdgpu_kernel void @llvm_amdgcn_is_shared(ptr %ptr) #0 {
 ; GFX8V5-NEXT:    s_load_dword s1, s[8:9], 0x4
 ; GFX8V5-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX8V5-NEXT:    s_cmp_eq_u32 s1, s0
-; GFX8V5-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX8V5-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; GFX8V5-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX8V5-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX8V5-NEXT:    flat_store_dword v[0:1], v0
 ; GFX8V5-NEXT:    s_waitcnt vmcnt(0)
 ; GFX8V5-NEXT:    s_endpgm
@@ -140,8 +140,8 @@ define amdgpu_kernel void @llvm_amdgcn_is_shared(ptr %ptr) #0 {
 ; GFX9V4-NEXT:    s_load_dword s0, s[8:9], 0x4
 ; GFX9V4-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9V4-NEXT:    s_cmp_eq_u32 s0, s1
-; GFX9V4-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX9V4-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; GFX9V4-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9V4-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX9V4-NEXT:    global_store_dword v[0:1], v0, off
 ; GFX9V4-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9V4-NEXT:    s_endpgm
@@ -152,8 +152,8 @@ define amdgpu_kernel void @llvm_amdgcn_is_shared(ptr %ptr) #0 {
 ; GFX9V5-NEXT:    s_load_dword s0, s[8:9], 0x4
 ; GFX9V5-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9V5-NEXT:    s_cmp_eq_u32 s0, s1
-; GFX9V5-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX9V5-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; GFX9V5-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9V5-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX9V5-NEXT:    global_store_dword v[0:1], v0, off
 ; GFX9V5-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9V5-NEXT:    s_endpgm
@@ -170,8 +170,8 @@ define amdgpu_kernel void @llvm_amdgcn_is_private(ptr %ptr) #0 {
 ; GFX8V4-NEXT:    s_load_dword s1, s[8:9], 0x4
 ; GFX8V4-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX8V4-NEXT:    s_cmp_eq_u32 s1, s0
-; GFX8V4-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX8V4-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; GFX8V4-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX8V4-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX8V4-NEXT:    flat_store_dword v[0:1], v0
 ; GFX8V4-NEXT:    s_waitcnt vmcnt(0)
 ; GFX8V4-NEXT:    s_endpgm
@@ -182,8 +182,8 @@ define amdgpu_kernel void @llvm_amdgcn_is_private(ptr %ptr) #0 {
 ; GFX8V5-NEXT:    s_load_dword s1, s[8:9], 0x4
 ; GFX8V5-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX8V5-NEXT:    s_cmp_eq_u32 s1, s0
-; GFX8V5-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX8V5-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; GFX8V5-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX8V5-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX8V5-NEXT:    flat_store_dword v[0:1], v0
 ; GFX8V5-NEXT:    s_waitcnt vmcnt(0)
 ; GFX8V5-NEXT:    s_endpgm
@@ -194,8 +194,8 @@ define amdgpu_kernel void @llvm_amdgcn_is_private(ptr %ptr) #0 {
 ; GFX9V4-NEXT:    s_load_dword s0, s[8:9], 0x4
 ; GFX9V4-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9V4-NEXT:    s_cmp_eq_u32 s0, s1
-; GFX9V4-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX9V4-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; GFX9V4-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9V4-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX9V4-NEXT:    global_store_dword v[0:1], v0, off
 ; GFX9V4-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9V4-NEXT:    s_endpgm
@@ -206,8 +206,8 @@ define amdgpu_kernel void @llvm_amdgcn_is_private(ptr %ptr) #0 {
 ; GFX9V5-NEXT:    s_load_dword s0, s[8:9], 0x4
 ; GFX9V5-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9V5-NEXT:    s_cmp_eq_u32 s0, s1
-; GFX9V5-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX9V5-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; GFX9V5-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9V5-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX9V5-NEXT:    global_store_dword v[0:1], v0, off
 ; GFX9V5-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9V5-NEXT:    s_endpgm

diff  --git a/llvm/test/CodeGen/AMDGPU/indirect-addressing-si.ll b/llvm/test/CodeGen/AMDGPU/indirect-addressing-si.ll
index 5d2259216e7f7..9256fa827046b 100644
--- a/llvm/test/CodeGen/AMDGPU/indirect-addressing-si.ll
+++ b/llvm/test/CodeGen/AMDGPU/indirect-addressing-si.ll
@@ -6936,7 +6936,7 @@ define amdgpu_kernel void @extract_adjacent_blocks(i32 %arg) {
 ; GENERIC-NEXT:    s_load_dword s0, s[4:5], 0x9
 ; GENERIC-NEXT:    s_waitcnt lgkmcnt(0)
 ; GENERIC-NEXT:    s_cmp_lg_u32 s0, 0
-; GENERIC-NEXT:    s_cbranch_scc0 .LBB19_4
+; GENERIC-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GENERIC-NEXT:  ; %bb.1: ; %bb4
 ; GENERIC-NEXT:    s_mov_b32 s3, 0xf000
 ; GENERIC-NEXT:    s_mov_b32 s2, -1
@@ -6945,8 +6945,16 @@ define amdgpu_kernel void @extract_adjacent_blocks(i32 %arg) {
 ; GENERIC-NEXT:    ;;#ASMSTART
 ; GENERIC-NEXT:    ; reg use v[0:3]
 ; GENERIC-NEXT:    ;;#ASMEND
-; GENERIC-NEXT:    s_cbranch_execnz .LBB19_3
-; GENERIC-NEXT:  .LBB19_2: ; %bb1
+; GENERIC-NEXT:    s_mov_b64 s[0:1], 0
+; GENERIC-NEXT:    s_branch .LBB19_3
+; GENERIC-NEXT:  .LBB19_2:
+; GENERIC-NEXT:    s_mov_b64 s[0:1], -1
+; GENERIC-NEXT:  .LBB19_3: ; %Flow
+; GENERIC-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GENERIC-NEXT:    s_cselect_b32 s0, 1, 0
+; GENERIC-NEXT:    s_cmp_lg_u32 s0, 1
+; GENERIC-NEXT:    s_cbranch_scc1 .LBB19_5
+; GENERIC-NEXT:  ; %bb.4: ; %bb1
 ; GENERIC-NEXT:    s_mov_b32 s3, 0xf000
 ; GENERIC-NEXT:    s_mov_b32 s2, -1
 ; GENERIC-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 glc
@@ -6954,14 +6962,12 @@ define amdgpu_kernel void @extract_adjacent_blocks(i32 %arg) {
 ; GENERIC-NEXT:    ;;#ASMSTART
 ; GENERIC-NEXT:    ; reg use v[0:3]
 ; GENERIC-NEXT:    ;;#ASMEND
-; GENERIC-NEXT:  .LBB19_3: ; %bb7
+; GENERIC-NEXT:  .LBB19_5: ; %bb7
 ; GENERIC-NEXT:    s_mov_b32 s3, 0xf000
 ; GENERIC-NEXT:    s_mov_b32 s2, -1
 ; GENERIC-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GENERIC-NEXT:    s_waitcnt vmcnt(0)
 ; GENERIC-NEXT:    s_endpgm
-; GENERIC-NEXT:  .LBB19_4:
-; GENERIC-NEXT:    s_branch .LBB19_2
 ;
 ; NOOPT-LABEL: extract_adjacent_blocks:
 ; NOOPT:       ; %bb.0: ; %bb
@@ -7067,7 +7073,7 @@ define amdgpu_kernel void @extract_adjacent_blocks(i32 %arg) {
 ; SI-MOVREL-NEXT:    s_load_dword s0, s[4:5], 0x9
 ; SI-MOVREL-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-MOVREL-NEXT:    s_cmp_lg_u32 s0, 0
-; SI-MOVREL-NEXT:    s_cbranch_scc0 .LBB19_4
+; SI-MOVREL-NEXT:    s_cbranch_scc0 .LBB19_2
 ; SI-MOVREL-NEXT:  ; %bb.1: ; %bb4
 ; SI-MOVREL-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-MOVREL-NEXT:    s_mov_b32 s2, -1
@@ -7076,8 +7082,16 @@ define amdgpu_kernel void @extract_adjacent_blocks(i32 %arg) {
 ; SI-MOVREL-NEXT:    ;;#ASMSTART
 ; SI-MOVREL-NEXT:    ; reg use v[0:3]
 ; SI-MOVREL-NEXT:    ;;#ASMEND
-; SI-MOVREL-NEXT:    s_cbranch_execnz .LBB19_3
-; SI-MOVREL-NEXT:  .LBB19_2: ; %bb1
+; SI-MOVREL-NEXT:    s_mov_b64 s[0:1], 0
+; SI-MOVREL-NEXT:    s_branch .LBB19_3
+; SI-MOVREL-NEXT:  .LBB19_2:
+; SI-MOVREL-NEXT:    s_mov_b64 s[0:1], -1
+; SI-MOVREL-NEXT:  .LBB19_3: ; %Flow
+; SI-MOVREL-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-MOVREL-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-MOVREL-NEXT:    s_cmp_lg_u32 s0, 1
+; SI-MOVREL-NEXT:    s_cbranch_scc1 .LBB19_5
+; SI-MOVREL-NEXT:  ; %bb.4: ; %bb1
 ; SI-MOVREL-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-MOVREL-NEXT:    s_mov_b32 s2, -1
 ; SI-MOVREL-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 glc
@@ -7085,66 +7099,76 @@ define amdgpu_kernel void @extract_adjacent_blocks(i32 %arg) {
 ; SI-MOVREL-NEXT:    ;;#ASMSTART
 ; SI-MOVREL-NEXT:    ; reg use v[0:3]
 ; SI-MOVREL-NEXT:    ;;#ASMEND
-; SI-MOVREL-NEXT:  .LBB19_3: ; %bb7
+; SI-MOVREL-NEXT:  .LBB19_5: ; %bb7
 ; SI-MOVREL-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-MOVREL-NEXT:    s_mov_b32 s2, -1
 ; SI-MOVREL-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-MOVREL-NEXT:    s_waitcnt vmcnt(0)
 ; SI-MOVREL-NEXT:    s_endpgm
-; SI-MOVREL-NEXT:  .LBB19_4:
-; SI-MOVREL-NEXT:    s_branch .LBB19_2
 ;
 ; VI-LABEL: extract_adjacent_blocks:
 ; VI:       ; %bb.0: ; %bb
 ; VI-NEXT:    s_load_dword s0, s[4:5], 0x24
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s0, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB19_4
+; VI-NEXT:    s_cbranch_scc0 .LBB19_2
 ; VI-NEXT:  ; %bb.1: ; %bb4
 ; VI-NEXT:    flat_load_dwordx4 v[0:3], v[0:1] glc
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    ;;#ASMSTART
 ; VI-NEXT:    ; reg use v[0:3]
 ; VI-NEXT:    ;;#ASMEND
-; VI-NEXT:    s_cbranch_execnz .LBB19_3
-; VI-NEXT:  .LBB19_2: ; %bb1
+; VI-NEXT:    s_mov_b64 s[0:1], 0
+; VI-NEXT:    s_branch .LBB19_3
+; VI-NEXT:  .LBB19_2:
+; VI-NEXT:    s_mov_b64 s[0:1], -1
+; VI-NEXT:  .LBB19_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s0, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB19_5
+; VI-NEXT:  ; %bb.4: ; %bb1
 ; VI-NEXT:    flat_load_dwordx4 v[0:3], v[0:1] glc
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    ;;#ASMSTART
 ; VI-NEXT:    ; reg use v[0:3]
 ; VI-NEXT:    ;;#ASMEND
-; VI-NEXT:  .LBB19_3: ; %bb7
+; VI-NEXT:  .LBB19_5: ; %bb7
 ; VI-NEXT:    flat_store_dword v[0:1], v0
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_endpgm
-; VI-NEXT:  .LBB19_4:
-; VI-NEXT:    s_branch .LBB19_2
 ;
 ; GFX9-IDXMODE-LABEL: extract_adjacent_blocks:
 ; GFX9-IDXMODE:       ; %bb.0: ; %bb
 ; GFX9-IDXMODE-NEXT:    s_load_dword s0, s[4:5], 0x24
 ; GFX9-IDXMODE-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-IDXMODE-NEXT:    s_cmp_lg_u32 s0, 0
-; GFX9-IDXMODE-NEXT:    s_cbranch_scc0 .LBB19_4
+; GFX9-IDXMODE-NEXT:    s_cbranch_scc0 .LBB19_2
 ; GFX9-IDXMODE-NEXT:  ; %bb.1: ; %bb4
 ; GFX9-IDXMODE-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
 ; GFX9-IDXMODE-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-IDXMODE-NEXT:    ;;#ASMSTART
 ; GFX9-IDXMODE-NEXT:    ; reg use v[0:3]
 ; GFX9-IDXMODE-NEXT:    ;;#ASMEND
-; GFX9-IDXMODE-NEXT:    s_cbranch_execnz .LBB19_3
-; GFX9-IDXMODE-NEXT:  .LBB19_2: ; %bb1
+; GFX9-IDXMODE-NEXT:    s_mov_b64 s[0:1], 0
+; GFX9-IDXMODE-NEXT:    s_branch .LBB19_3
+; GFX9-IDXMODE-NEXT:  .LBB19_2:
+; GFX9-IDXMODE-NEXT:    s_mov_b64 s[0:1], -1
+; GFX9-IDXMODE-NEXT:  .LBB19_3: ; %Flow
+; GFX9-IDXMODE-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-IDXMODE-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-IDXMODE-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX9-IDXMODE-NEXT:    s_cbranch_scc1 .LBB19_5
+; GFX9-IDXMODE-NEXT:  ; %bb.4: ; %bb1
 ; GFX9-IDXMODE-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
 ; GFX9-IDXMODE-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-IDXMODE-NEXT:    ;;#ASMSTART
 ; GFX9-IDXMODE-NEXT:    ; reg use v[0:3]
 ; GFX9-IDXMODE-NEXT:    ;;#ASMEND
-; GFX9-IDXMODE-NEXT:  .LBB19_3: ; %bb7
+; GFX9-IDXMODE-NEXT:  .LBB19_5: ; %bb7
 ; GFX9-IDXMODE-NEXT:    global_store_dword v[0:1], v0, off
 ; GFX9-IDXMODE-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-IDXMODE-NEXT:    s_endpgm
-; GFX9-IDXMODE-NEXT:  .LBB19_4:
-; GFX9-IDXMODE-NEXT:    s_branch .LBB19_2
 bb:
   %tmp = icmp eq i32 %arg, 0
   br i1 %tmp, label %bb1, label %bb4
@@ -7173,7 +7197,7 @@ define amdgpu_kernel void @insert_adjacent_blocks(i32 %arg, float %val0) {
 ; GENERIC-NEXT:    s_load_dword s0, s[4:5], 0x9
 ; GENERIC-NEXT:    s_waitcnt lgkmcnt(0)
 ; GENERIC-NEXT:    s_cmp_lg_u32 s0, 0
-; GENERIC-NEXT:    s_cbranch_scc0 .LBB20_4
+; GENERIC-NEXT:    s_cbranch_scc0 .LBB20_2
 ; GENERIC-NEXT:  ; %bb.1: ; %bb4
 ; GENERIC-NEXT:    s_mov_b32 s3, 0xf000
 ; GENERIC-NEXT:    s_mov_b32 s2, -1
@@ -7182,8 +7206,16 @@ define amdgpu_kernel void @insert_adjacent_blocks(i32 %arg, float %val0) {
 ; GENERIC-NEXT:    ;;#ASMSTART
 ; GENERIC-NEXT:    ; reg use v[0:3]
 ; GENERIC-NEXT:    ;;#ASMEND
-; GENERIC-NEXT:    s_cbranch_execnz .LBB20_3
-; GENERIC-NEXT:  .LBB20_2: ; %bb1
+; GENERIC-NEXT:    s_mov_b64 s[0:1], 0
+; GENERIC-NEXT:    s_branch .LBB20_3
+; GENERIC-NEXT:  .LBB20_2:
+; GENERIC-NEXT:    s_mov_b64 s[0:1], -1
+; GENERIC-NEXT:  .LBB20_3: ; %Flow
+; GENERIC-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GENERIC-NEXT:    s_cselect_b32 s0, 1, 0
+; GENERIC-NEXT:    s_cmp_lg_u32 s0, 1
+; GENERIC-NEXT:    s_cbranch_scc1 .LBB20_5
+; GENERIC-NEXT:  ; %bb.4: ; %bb1
 ; GENERIC-NEXT:    s_mov_b32 s3, 0xf000
 ; GENERIC-NEXT:    s_mov_b32 s2, -1
 ; GENERIC-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 glc
@@ -7191,14 +7223,12 @@ define amdgpu_kernel void @insert_adjacent_blocks(i32 %arg, float %val0) {
 ; GENERIC-NEXT:    ;;#ASMSTART
 ; GENERIC-NEXT:    ; reg use v[0:3]
 ; GENERIC-NEXT:    ;;#ASMEND
-; GENERIC-NEXT:  .LBB20_3: ; %bb7
+; GENERIC-NEXT:  .LBB20_5: ; %bb7
 ; GENERIC-NEXT:    s_mov_b32 s3, 0xf000
 ; GENERIC-NEXT:    s_mov_b32 s2, -1
 ; GENERIC-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
 ; GENERIC-NEXT:    s_waitcnt vmcnt(0)
 ; GENERIC-NEXT:    s_endpgm
-; GENERIC-NEXT:  .LBB20_4:
-; GENERIC-NEXT:    s_branch .LBB20_2
 ;
 ; NOOPT-LABEL: insert_adjacent_blocks:
 ; NOOPT:       ; %bb.0: ; %bb
@@ -7313,7 +7343,7 @@ define amdgpu_kernel void @insert_adjacent_blocks(i32 %arg, float %val0) {
 ; SI-MOVREL-NEXT:    s_load_dword s0, s[4:5], 0x9
 ; SI-MOVREL-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-MOVREL-NEXT:    s_cmp_lg_u32 s0, 0
-; SI-MOVREL-NEXT:    s_cbranch_scc0 .LBB20_4
+; SI-MOVREL-NEXT:    s_cbranch_scc0 .LBB20_2
 ; SI-MOVREL-NEXT:  ; %bb.1: ; %bb4
 ; SI-MOVREL-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-MOVREL-NEXT:    s_mov_b32 s2, -1
@@ -7322,8 +7352,16 @@ define amdgpu_kernel void @insert_adjacent_blocks(i32 %arg, float %val0) {
 ; SI-MOVREL-NEXT:    ;;#ASMSTART
 ; SI-MOVREL-NEXT:    ; reg use v[0:3]
 ; SI-MOVREL-NEXT:    ;;#ASMEND
-; SI-MOVREL-NEXT:    s_cbranch_execnz .LBB20_3
-; SI-MOVREL-NEXT:  .LBB20_2: ; %bb1
+; SI-MOVREL-NEXT:    s_mov_b64 s[0:1], 0
+; SI-MOVREL-NEXT:    s_branch .LBB20_3
+; SI-MOVREL-NEXT:  .LBB20_2:
+; SI-MOVREL-NEXT:    s_mov_b64 s[0:1], -1
+; SI-MOVREL-NEXT:  .LBB20_3: ; %Flow
+; SI-MOVREL-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-MOVREL-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-MOVREL-NEXT:    s_cmp_lg_u32 s0, 1
+; SI-MOVREL-NEXT:    s_cbranch_scc1 .LBB20_5
+; SI-MOVREL-NEXT:  ; %bb.4: ; %bb1
 ; SI-MOVREL-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-MOVREL-NEXT:    s_mov_b32 s2, -1
 ; SI-MOVREL-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 glc
@@ -7331,66 +7369,76 @@ define amdgpu_kernel void @insert_adjacent_blocks(i32 %arg, float %val0) {
 ; SI-MOVREL-NEXT:    ;;#ASMSTART
 ; SI-MOVREL-NEXT:    ; reg use v[0:3]
 ; SI-MOVREL-NEXT:    ;;#ASMEND
-; SI-MOVREL-NEXT:  .LBB20_3: ; %bb7
+; SI-MOVREL-NEXT:  .LBB20_5: ; %bb7
 ; SI-MOVREL-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-MOVREL-NEXT:    s_mov_b32 s2, -1
 ; SI-MOVREL-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
 ; SI-MOVREL-NEXT:    s_waitcnt vmcnt(0)
 ; SI-MOVREL-NEXT:    s_endpgm
-; SI-MOVREL-NEXT:  .LBB20_4:
-; SI-MOVREL-NEXT:    s_branch .LBB20_2
 ;
 ; VI-LABEL: insert_adjacent_blocks:
 ; VI:       ; %bb.0: ; %bb
 ; VI-NEXT:    s_load_dword s0, s[4:5], 0x24
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s0, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB20_4
+; VI-NEXT:    s_cbranch_scc0 .LBB20_2
 ; VI-NEXT:  ; %bb.1: ; %bb4
 ; VI-NEXT:    flat_load_dwordx4 v[0:3], v[0:1] glc
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    ;;#ASMSTART
 ; VI-NEXT:    ; reg use v[0:3]
 ; VI-NEXT:    ;;#ASMEND
-; VI-NEXT:    s_cbranch_execnz .LBB20_3
-; VI-NEXT:  .LBB20_2: ; %bb1
+; VI-NEXT:    s_mov_b64 s[0:1], 0
+; VI-NEXT:    s_branch .LBB20_3
+; VI-NEXT:  .LBB20_2:
+; VI-NEXT:    s_mov_b64 s[0:1], -1
+; VI-NEXT:  .LBB20_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s0, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB20_5
+; VI-NEXT:  ; %bb.4: ; %bb1
 ; VI-NEXT:    flat_load_dwordx4 v[0:3], v[0:1] glc
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    ;;#ASMSTART
 ; VI-NEXT:    ; reg use v[0:3]
 ; VI-NEXT:    ;;#ASMEND
-; VI-NEXT:  .LBB20_3: ; %bb7
+; VI-NEXT:  .LBB20_5: ; %bb7
 ; VI-NEXT:    flat_store_dwordx4 v[0:1], v[0:3]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_endpgm
-; VI-NEXT:  .LBB20_4:
-; VI-NEXT:    s_branch .LBB20_2
 ;
 ; GFX9-IDXMODE-LABEL: insert_adjacent_blocks:
 ; GFX9-IDXMODE:       ; %bb.0: ; %bb
 ; GFX9-IDXMODE-NEXT:    s_load_dword s0, s[4:5], 0x24
 ; GFX9-IDXMODE-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-IDXMODE-NEXT:    s_cmp_lg_u32 s0, 0
-; GFX9-IDXMODE-NEXT:    s_cbranch_scc0 .LBB20_4
+; GFX9-IDXMODE-NEXT:    s_cbranch_scc0 .LBB20_2
 ; GFX9-IDXMODE-NEXT:  ; %bb.1: ; %bb4
 ; GFX9-IDXMODE-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
 ; GFX9-IDXMODE-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-IDXMODE-NEXT:    ;;#ASMSTART
 ; GFX9-IDXMODE-NEXT:    ; reg use v[0:3]
 ; GFX9-IDXMODE-NEXT:    ;;#ASMEND
-; GFX9-IDXMODE-NEXT:    s_cbranch_execnz .LBB20_3
-; GFX9-IDXMODE-NEXT:  .LBB20_2: ; %bb1
+; GFX9-IDXMODE-NEXT:    s_mov_b64 s[0:1], 0
+; GFX9-IDXMODE-NEXT:    s_branch .LBB20_3
+; GFX9-IDXMODE-NEXT:  .LBB20_2:
+; GFX9-IDXMODE-NEXT:    s_mov_b64 s[0:1], -1
+; GFX9-IDXMODE-NEXT:  .LBB20_3: ; %Flow
+; GFX9-IDXMODE-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-IDXMODE-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-IDXMODE-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX9-IDXMODE-NEXT:    s_cbranch_scc1 .LBB20_5
+; GFX9-IDXMODE-NEXT:  ; %bb.4: ; %bb1
 ; GFX9-IDXMODE-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
 ; GFX9-IDXMODE-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-IDXMODE-NEXT:    ;;#ASMSTART
 ; GFX9-IDXMODE-NEXT:    ; reg use v[0:3]
 ; GFX9-IDXMODE-NEXT:    ;;#ASMEND
-; GFX9-IDXMODE-NEXT:  .LBB20_3: ; %bb7
+; GFX9-IDXMODE-NEXT:  .LBB20_5: ; %bb7
 ; GFX9-IDXMODE-NEXT:    global_store_dwordx4 v[0:1], v[0:3], off
 ; GFX9-IDXMODE-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-IDXMODE-NEXT:    s_endpgm
-; GFX9-IDXMODE-NEXT:  .LBB20_4:
-; GFX9-IDXMODE-NEXT:    s_branch .LBB20_2
 bb:
   %tmp = icmp eq i32 %arg, 0
   br i1 %tmp, label %bb1, label %bb4
@@ -8670,24 +8718,30 @@ define amdgpu_kernel void @broken_phi_bb(i32 %arg, i32 %arg1) {
 ; GENERIC-NEXT:    v_mov_b32_e32 v0, 8
 ; GENERIC-NEXT:    s_mov_b32 s3, 0xf000
 ; GENERIC-NEXT:    s_mov_b32 s2, -1
-; GENERIC-NEXT:    s_branch .LBB26_2
-; GENERIC-NEXT:  .LBB26_1:
+; GENERIC-NEXT:    s_branch .LBB26_3
+; GENERIC-NEXT:  .LBB26_1: ; in Loop: Header=BB26_3 Depth=1
+; GENERIC-NEXT:    s_mov_b64 s[4:5], -1
 ; GENERIC-NEXT:    ; implicit-def: $vgpr0
-; GENERIC-NEXT:    s_branch .LBB26_6
-; GENERIC-NEXT:  .LBB26_2: ; %bb2
+; GENERIC-NEXT:  .LBB26_2: ; %Flow
+; GENERIC-NEXT:    ; in Loop: Header=BB26_3 Depth=1
+; GENERIC-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GENERIC-NEXT:    s_cselect_b32 s4, 1, 0
+; GENERIC-NEXT:    s_cmp_lg_u32 s4, 1
+; GENERIC-NEXT:    s_cbranch_scc0 .LBB26_7
+; GENERIC-NEXT:  .LBB26_3: ; %bb2
 ; GENERIC-NEXT:    ; =>This Loop Header: Depth=1
-; GENERIC-NEXT:    ; Child Loop BB26_4 Depth 2
+; GENERIC-NEXT:    ; Child Loop BB26_5 Depth 2
 ; GENERIC-NEXT:    s_waitcnt lgkmcnt(0)
 ; GENERIC-NEXT:    v_cmp_le_i32_e32 vcc, s0, v0
 ; GENERIC-NEXT:    s_cbranch_vccnz .LBB26_1
-; GENERIC-NEXT:  ; %bb.3: ; %bb4
-; GENERIC-NEXT:    ; in Loop: Header=BB26_2 Depth=1
+; GENERIC-NEXT:  ; %bb.4: ; %bb4
+; GENERIC-NEXT:    ; in Loop: Header=BB26_3 Depth=1
 ; GENERIC-NEXT:    buffer_load_dword v16, off, s[0:3], 0 glc
 ; GENERIC-NEXT:    s_waitcnt vmcnt(0)
 ; GENERIC-NEXT:    v_mov_b32_e32 v17, s1
 ; GENERIC-NEXT:    s_mov_b64 s[4:5], exec
 ; GENERIC-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GENERIC-NEXT:  .LBB26_4: ; Parent Loop BB26_2 Depth=1
+; GENERIC-NEXT:  .LBB26_5: ; Parent Loop BB26_3 Depth=1
 ; GENERIC-NEXT:    ; => This Inner Loop Header: Depth=2
 ; GENERIC-NEXT:    v_readfirstlane_b32 s6, v16
 ; GENERIC-NEXT:    v_cmp_eq_u32_e32 vcc, s6, v16
@@ -8695,11 +8749,12 @@ define amdgpu_kernel void @broken_phi_bb(i32 %arg, i32 %arg1) {
 ; GENERIC-NEXT:    s_mov_b32 m0, s6
 ; GENERIC-NEXT:    v_movreld_b32_e32 v0, v17
 ; GENERIC-NEXT:    s_xor_b64 exec, exec, vcc
-; GENERIC-NEXT:    s_cbranch_execnz .LBB26_4
-; GENERIC-NEXT:  ; %bb.5: ; in Loop: Header=BB26_2 Depth=1
+; GENERIC-NEXT:    s_cbranch_execnz .LBB26_5
+; GENERIC-NEXT:  ; %bb.6: ; in Loop: Header=BB26_3 Depth=1
 ; GENERIC-NEXT:    s_mov_b64 exec, s[4:5]
-; GENERIC-NEXT:    s_cbranch_execnz .LBB26_2
-; GENERIC-NEXT:  .LBB26_6: ; %bb8
+; GENERIC-NEXT:    s_mov_b64 s[4:5], 0
+; GENERIC-NEXT:    s_branch .LBB26_2
+; GENERIC-NEXT:  .LBB26_7: ; %bb8
 ; GENERIC-NEXT:    s_endpgm
 ;
 ; NOOPT-LABEL: broken_phi_bb:
@@ -8957,24 +9012,30 @@ define amdgpu_kernel void @broken_phi_bb(i32 %arg, i32 %arg1) {
 ; SI-MOVREL-NEXT:    v_mov_b32_e32 v0, 8
 ; SI-MOVREL-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-MOVREL-NEXT:    s_mov_b32 s2, -1
-; SI-MOVREL-NEXT:    s_branch .LBB26_2
-; SI-MOVREL-NEXT:  .LBB26_1:
+; SI-MOVREL-NEXT:    s_branch .LBB26_3
+; SI-MOVREL-NEXT:  .LBB26_1: ; in Loop: Header=BB26_3 Depth=1
+; SI-MOVREL-NEXT:    s_mov_b64 s[4:5], -1
 ; SI-MOVREL-NEXT:    ; implicit-def: $vgpr0
-; SI-MOVREL-NEXT:    s_branch .LBB26_6
-; SI-MOVREL-NEXT:  .LBB26_2: ; %bb2
+; SI-MOVREL-NEXT:  .LBB26_2: ; %Flow
+; SI-MOVREL-NEXT:    ; in Loop: Header=BB26_3 Depth=1
+; SI-MOVREL-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-MOVREL-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-MOVREL-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-MOVREL-NEXT:    s_cbranch_scc0 .LBB26_7
+; SI-MOVREL-NEXT:  .LBB26_3: ; %bb2
 ; SI-MOVREL-NEXT:    ; =>This Loop Header: Depth=1
-; SI-MOVREL-NEXT:    ; Child Loop BB26_4 Depth 2
+; SI-MOVREL-NEXT:    ; Child Loop BB26_5 Depth 2
 ; SI-MOVREL-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-MOVREL-NEXT:    v_cmp_le_i32_e32 vcc, s0, v0
 ; SI-MOVREL-NEXT:    s_cbranch_vccnz .LBB26_1
-; SI-MOVREL-NEXT:  ; %bb.3: ; %bb4
-; SI-MOVREL-NEXT:    ; in Loop: Header=BB26_2 Depth=1
+; SI-MOVREL-NEXT:  ; %bb.4: ; %bb4
+; SI-MOVREL-NEXT:    ; in Loop: Header=BB26_3 Depth=1
 ; SI-MOVREL-NEXT:    buffer_load_dword v16, off, s[0:3], 0 glc
 ; SI-MOVREL-NEXT:    s_waitcnt vmcnt(0)
 ; SI-MOVREL-NEXT:    v_mov_b32_e32 v17, s1
 ; SI-MOVREL-NEXT:    s_mov_b64 s[4:5], exec
 ; SI-MOVREL-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; SI-MOVREL-NEXT:  .LBB26_4: ; Parent Loop BB26_2 Depth=1
+; SI-MOVREL-NEXT:  .LBB26_5: ; Parent Loop BB26_3 Depth=1
 ; SI-MOVREL-NEXT:    ; => This Inner Loop Header: Depth=2
 ; SI-MOVREL-NEXT:    v_readfirstlane_b32 s6, v16
 ; SI-MOVREL-NEXT:    v_cmp_eq_u32_e32 vcc, s6, v16
@@ -8982,35 +9043,42 @@ define amdgpu_kernel void @broken_phi_bb(i32 %arg, i32 %arg1) {
 ; SI-MOVREL-NEXT:    s_mov_b32 m0, s6
 ; SI-MOVREL-NEXT:    v_movreld_b32_e32 v0, v17
 ; SI-MOVREL-NEXT:    s_xor_b64 exec, exec, vcc
-; SI-MOVREL-NEXT:    s_cbranch_execnz .LBB26_4
-; SI-MOVREL-NEXT:  ; %bb.5: ; in Loop: Header=BB26_2 Depth=1
+; SI-MOVREL-NEXT:    s_cbranch_execnz .LBB26_5
+; SI-MOVREL-NEXT:  ; %bb.6: ; in Loop: Header=BB26_3 Depth=1
 ; SI-MOVREL-NEXT:    s_mov_b64 exec, s[4:5]
-; SI-MOVREL-NEXT:    s_cbranch_execnz .LBB26_2
-; SI-MOVREL-NEXT:  .LBB26_6: ; %bb8
+; SI-MOVREL-NEXT:    s_mov_b64 s[4:5], 0
+; SI-MOVREL-NEXT:    s_branch .LBB26_2
+; SI-MOVREL-NEXT:  .LBB26_7: ; %bb8
 ; SI-MOVREL-NEXT:    s_endpgm
 ;
 ; VI-MOVREL-LABEL: broken_phi_bb:
 ; VI-MOVREL:       ; %bb.0: ; %bb
 ; VI-MOVREL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24
 ; VI-MOVREL-NEXT:    v_mov_b32_e32 v0, 8
-; VI-MOVREL-NEXT:    s_branch .LBB26_2
-; VI-MOVREL-NEXT:  .LBB26_1:
+; VI-MOVREL-NEXT:    s_branch .LBB26_3
+; VI-MOVREL-NEXT:  .LBB26_1: ; in Loop: Header=BB26_3 Depth=1
+; VI-MOVREL-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-MOVREL-NEXT:    ; implicit-def: $vgpr0
-; VI-MOVREL-NEXT:    s_branch .LBB26_6
-; VI-MOVREL-NEXT:  .LBB26_2: ; %bb2
+; VI-MOVREL-NEXT:  .LBB26_2: ; %Flow
+; VI-MOVREL-NEXT:    ; in Loop: Header=BB26_3 Depth=1
+; VI-MOVREL-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-MOVREL-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-MOVREL-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-MOVREL-NEXT:    s_cbranch_scc0 .LBB26_7
+; VI-MOVREL-NEXT:  .LBB26_3: ; %bb2
 ; VI-MOVREL-NEXT:    ; =>This Loop Header: Depth=1
-; VI-MOVREL-NEXT:    ; Child Loop BB26_4 Depth 2
+; VI-MOVREL-NEXT:    ; Child Loop BB26_5 Depth 2
 ; VI-MOVREL-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-MOVREL-NEXT:    v_cmp_le_i32_e32 vcc, s0, v0
 ; VI-MOVREL-NEXT:    s_cbranch_vccnz .LBB26_1
-; VI-MOVREL-NEXT:  ; %bb.3: ; %bb4
-; VI-MOVREL-NEXT:    ; in Loop: Header=BB26_2 Depth=1
+; VI-MOVREL-NEXT:  ; %bb.4: ; %bb4
+; VI-MOVREL-NEXT:    ; in Loop: Header=BB26_3 Depth=1
 ; VI-MOVREL-NEXT:    flat_load_dword v16, v[0:1] glc
 ; VI-MOVREL-NEXT:    s_waitcnt vmcnt(0)
 ; VI-MOVREL-NEXT:    v_mov_b32_e32 v17, s1
 ; VI-MOVREL-NEXT:    s_mov_b64 s[2:3], exec
 ; VI-MOVREL-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-MOVREL-NEXT:  .LBB26_4: ; Parent Loop BB26_2 Depth=1
+; VI-MOVREL-NEXT:  .LBB26_5: ; Parent Loop BB26_3 Depth=1
 ; VI-MOVREL-NEXT:    ; => This Inner Loop Header: Depth=2
 ; VI-MOVREL-NEXT:    v_readfirstlane_b32 s4, v16
 ; VI-MOVREL-NEXT:    v_cmp_eq_u32_e32 vcc, s4, v16
@@ -9018,35 +9086,42 @@ define amdgpu_kernel void @broken_phi_bb(i32 %arg, i32 %arg1) {
 ; VI-MOVREL-NEXT:    s_mov_b32 m0, s4
 ; VI-MOVREL-NEXT:    v_movreld_b32_e32 v0, v17
 ; VI-MOVREL-NEXT:    s_xor_b64 exec, exec, vcc
-; VI-MOVREL-NEXT:    s_cbranch_execnz .LBB26_4
-; VI-MOVREL-NEXT:  ; %bb.5: ; in Loop: Header=BB26_2 Depth=1
+; VI-MOVREL-NEXT:    s_cbranch_execnz .LBB26_5
+; VI-MOVREL-NEXT:  ; %bb.6: ; in Loop: Header=BB26_3 Depth=1
 ; VI-MOVREL-NEXT:    s_mov_b64 exec, s[2:3]
-; VI-MOVREL-NEXT:    s_cbranch_execnz .LBB26_2
-; VI-MOVREL-NEXT:  .LBB26_6: ; %bb8
+; VI-MOVREL-NEXT:    s_mov_b64 s[2:3], 0
+; VI-MOVREL-NEXT:    s_branch .LBB26_2
+; VI-MOVREL-NEXT:  .LBB26_7: ; %bb8
 ; VI-MOVREL-NEXT:    s_endpgm
 ;
 ; VI-IDXMODE-LABEL: broken_phi_bb:
 ; VI-IDXMODE:       ; %bb.0: ; %bb
 ; VI-IDXMODE-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24
 ; VI-IDXMODE-NEXT:    v_mov_b32_e32 v0, 8
-; VI-IDXMODE-NEXT:    s_branch .LBB26_2
-; VI-IDXMODE-NEXT:  .LBB26_1:
+; VI-IDXMODE-NEXT:    s_branch .LBB26_3
+; VI-IDXMODE-NEXT:  .LBB26_1: ; in Loop: Header=BB26_3 Depth=1
+; VI-IDXMODE-NEXT:    s_mov_b64 s[2:3], -1
 ; VI-IDXMODE-NEXT:    ; implicit-def: $vgpr0
-; VI-IDXMODE-NEXT:    s_branch .LBB26_6
-; VI-IDXMODE-NEXT:  .LBB26_2: ; %bb2
+; VI-IDXMODE-NEXT:  .LBB26_2: ; %Flow
+; VI-IDXMODE-NEXT:    ; in Loop: Header=BB26_3 Depth=1
+; VI-IDXMODE-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-IDXMODE-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-IDXMODE-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-IDXMODE-NEXT:    s_cbranch_scc0 .LBB26_7
+; VI-IDXMODE-NEXT:  .LBB26_3: ; %bb2
 ; VI-IDXMODE-NEXT:    ; =>This Loop Header: Depth=1
-; VI-IDXMODE-NEXT:    ; Child Loop BB26_4 Depth 2
+; VI-IDXMODE-NEXT:    ; Child Loop BB26_5 Depth 2
 ; VI-IDXMODE-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-IDXMODE-NEXT:    v_cmp_le_i32_e32 vcc, s0, v0
 ; VI-IDXMODE-NEXT:    s_cbranch_vccnz .LBB26_1
-; VI-IDXMODE-NEXT:  ; %bb.3: ; %bb4
-; VI-IDXMODE-NEXT:    ; in Loop: Header=BB26_2 Depth=1
+; VI-IDXMODE-NEXT:  ; %bb.4: ; %bb4
+; VI-IDXMODE-NEXT:    ; in Loop: Header=BB26_3 Depth=1
 ; VI-IDXMODE-NEXT:    flat_load_dword v16, v[0:1] glc
 ; VI-IDXMODE-NEXT:    s_waitcnt vmcnt(0)
 ; VI-IDXMODE-NEXT:    v_mov_b32_e32 v17, s1
 ; VI-IDXMODE-NEXT:    s_mov_b64 s[2:3], exec
 ; VI-IDXMODE-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; VI-IDXMODE-NEXT:  .LBB26_4: ; Parent Loop BB26_2 Depth=1
+; VI-IDXMODE-NEXT:  .LBB26_5: ; Parent Loop BB26_3 Depth=1
 ; VI-IDXMODE-NEXT:    ; => This Inner Loop Header: Depth=2
 ; VI-IDXMODE-NEXT:    v_readfirstlane_b32 s4, v16
 ; VI-IDXMODE-NEXT:    v_cmp_eq_u32_e32 vcc, s4, v16
@@ -9055,35 +9130,42 @@ define amdgpu_kernel void @broken_phi_bb(i32 %arg, i32 %arg1) {
 ; VI-IDXMODE-NEXT:    v_mov_b32_e32 v0, v17
 ; VI-IDXMODE-NEXT:    s_set_gpr_idx_off
 ; VI-IDXMODE-NEXT:    s_xor_b64 exec, exec, vcc
-; VI-IDXMODE-NEXT:    s_cbranch_execnz .LBB26_4
-; VI-IDXMODE-NEXT:  ; %bb.5: ; in Loop: Header=BB26_2 Depth=1
+; VI-IDXMODE-NEXT:    s_cbranch_execnz .LBB26_5
+; VI-IDXMODE-NEXT:  ; %bb.6: ; in Loop: Header=BB26_3 Depth=1
 ; VI-IDXMODE-NEXT:    s_mov_b64 exec, s[2:3]
-; VI-IDXMODE-NEXT:    s_cbranch_execnz .LBB26_2
-; VI-IDXMODE-NEXT:  .LBB26_6: ; %bb8
+; VI-IDXMODE-NEXT:    s_mov_b64 s[2:3], 0
+; VI-IDXMODE-NEXT:    s_branch .LBB26_2
+; VI-IDXMODE-NEXT:  .LBB26_7: ; %bb8
 ; VI-IDXMODE-NEXT:    s_endpgm
 ;
 ; GFX9-IDXMODE-LABEL: broken_phi_bb:
 ; GFX9-IDXMODE:       ; %bb.0: ; %bb
 ; GFX9-IDXMODE-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24
 ; GFX9-IDXMODE-NEXT:    v_mov_b32_e32 v0, 8
-; GFX9-IDXMODE-NEXT:    s_branch .LBB26_2
-; GFX9-IDXMODE-NEXT:  .LBB26_1:
+; GFX9-IDXMODE-NEXT:    s_branch .LBB26_3
+; GFX9-IDXMODE-NEXT:  .LBB26_1: ; in Loop: Header=BB26_3 Depth=1
+; GFX9-IDXMODE-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-IDXMODE-NEXT:    ; implicit-def: $vgpr0
-; GFX9-IDXMODE-NEXT:    s_branch .LBB26_6
-; GFX9-IDXMODE-NEXT:  .LBB26_2: ; %bb2
+; GFX9-IDXMODE-NEXT:  .LBB26_2: ; %Flow
+; GFX9-IDXMODE-NEXT:    ; in Loop: Header=BB26_3 Depth=1
+; GFX9-IDXMODE-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-IDXMODE-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-IDXMODE-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-IDXMODE-NEXT:    s_cbranch_scc0 .LBB26_7
+; GFX9-IDXMODE-NEXT:  .LBB26_3: ; %bb2
 ; GFX9-IDXMODE-NEXT:    ; =>This Loop Header: Depth=1
-; GFX9-IDXMODE-NEXT:    ; Child Loop BB26_4 Depth 2
+; GFX9-IDXMODE-NEXT:    ; Child Loop BB26_5 Depth 2
 ; GFX9-IDXMODE-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-IDXMODE-NEXT:    v_cmp_le_i32_e32 vcc, s0, v0
 ; GFX9-IDXMODE-NEXT:    s_cbranch_vccnz .LBB26_1
-; GFX9-IDXMODE-NEXT:  ; %bb.3: ; %bb4
-; GFX9-IDXMODE-NEXT:    ; in Loop: Header=BB26_2 Depth=1
+; GFX9-IDXMODE-NEXT:  ; %bb.4: ; %bb4
+; GFX9-IDXMODE-NEXT:    ; in Loop: Header=BB26_3 Depth=1
 ; GFX9-IDXMODE-NEXT:    global_load_dword v16, v[0:1], off glc
 ; GFX9-IDXMODE-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-IDXMODE-NEXT:    v_mov_b32_e32 v17, s1
 ; GFX9-IDXMODE-NEXT:    s_mov_b64 s[2:3], exec
 ; GFX9-IDXMODE-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
-; GFX9-IDXMODE-NEXT:  .LBB26_4: ; Parent Loop BB26_2 Depth=1
+; GFX9-IDXMODE-NEXT:  .LBB26_5: ; Parent Loop BB26_3 Depth=1
 ; GFX9-IDXMODE-NEXT:    ; => This Inner Loop Header: Depth=2
 ; GFX9-IDXMODE-NEXT:    v_readfirstlane_b32 s4, v16
 ; GFX9-IDXMODE-NEXT:    v_cmp_eq_u32_e32 vcc, s4, v16
@@ -9092,11 +9174,12 @@ define amdgpu_kernel void @broken_phi_bb(i32 %arg, i32 %arg1) {
 ; GFX9-IDXMODE-NEXT:    v_mov_b32_e32 v0, v17
 ; GFX9-IDXMODE-NEXT:    s_set_gpr_idx_off
 ; GFX9-IDXMODE-NEXT:    s_xor_b64 exec, exec, vcc
-; GFX9-IDXMODE-NEXT:    s_cbranch_execnz .LBB26_4
-; GFX9-IDXMODE-NEXT:  ; %bb.5: ; in Loop: Header=BB26_2 Depth=1
+; GFX9-IDXMODE-NEXT:    s_cbranch_execnz .LBB26_5
+; GFX9-IDXMODE-NEXT:  ; %bb.6: ; in Loop: Header=BB26_3 Depth=1
 ; GFX9-IDXMODE-NEXT:    s_mov_b64 exec, s[2:3]
-; GFX9-IDXMODE-NEXT:    s_cbranch_execnz .LBB26_2
-; GFX9-IDXMODE-NEXT:  .LBB26_6: ; %bb8
+; GFX9-IDXMODE-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-IDXMODE-NEXT:    s_branch .LBB26_2
+; GFX9-IDXMODE-NEXT:  .LBB26_7: ; %bb8
 ; GFX9-IDXMODE-NEXT:    s_endpgm
 bb:
   br label %bb2

diff  --git a/llvm/test/CodeGen/AMDGPU/infer-addrspace-flat-atomic.ll b/llvm/test/CodeGen/AMDGPU/infer-addrspace-flat-atomic.ll
index 36df710529599..66b4b3d84faea 100644
--- a/llvm/test/CodeGen/AMDGPU/infer-addrspace-flat-atomic.ll
+++ b/llvm/test/CodeGen/AMDGPU/infer-addrspace-flat-atomic.ll
@@ -113,64 +113,67 @@ define protected amdgpu_kernel void @InferPHI(i32 %a, ptr addrspace(1) %b, doubl
 ; CHECK-NEXT:    s_lshl_b64 s[4:5], s[6:7], 3
 ; CHECK-NEXT:    s_add_u32 s0, s0, s4
 ; CHECK-NEXT:    s_addc_u32 s1, s1, s5
-; CHECK-NEXT:    s_add_u32 s4, s0, -8
-; CHECK-NEXT:    s_addc_u32 s5, s1, -1
-; CHECK-NEXT:    s_cmp_eq_u64 s[4:5], 1
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
+; CHECK-NEXT:    s_add_u32 s0, s0, -8
+; CHECK-NEXT:    s_addc_u32 s1, s1, -1
+; CHECK-NEXT:    s_cmp_eq_u64 s[0:1], 1
+; CHECK-NEXT:    s_cselect_b64 s[4:5], -1, 0
 ; CHECK-NEXT:  .LBB3_1: ; %bb0
 ; CHECK-NEXT:    ; =>This Inner Loop Header: Depth=1
-; CHECK-NEXT:    s_and_b64 vcc, exec, s[0:1]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB3_1
+; CHECK-NEXT:    s_and_b64 s[6:7], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s6, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s6, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB3_1
 ; CHECK-NEXT:  ; %bb.2: ; %bb1
-; CHECK-NEXT:    s_mov_b64 s[0:1], src_shared_base
-; CHECK-NEXT:    s_cmp_eq_u32 s5, s1
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; CHECK-NEXT:    s_mov_b64 s[0:1], -1
-; CHECK-NEXT:    s_cbranch_vccnz .LBB3_5
-; CHECK-NEXT:  ; %bb.3: ; %Flow6
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; CHECK-NEXT:    s_cbranch_vccz .LBB3_10
-; CHECK-NEXT:  .LBB3_4: ; %atomicrmw.phi
-; CHECK-NEXT:    s_endpgm
-; CHECK-NEXT:  .LBB3_5: ; %atomicrmw.check.private
-; CHECK-NEXT:    s_mov_b64 s[0:1], src_private_base
-; CHECK-NEXT:    s_cmp_eq_u32 s5, s1
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; CHECK-NEXT:    s_mov_b64 s[0:1], -1
-; CHECK-NEXT:    s_cbranch_vccz .LBB3_7
-; CHECK-NEXT:  ; %bb.6: ; %atomicrmw.global
+; CHECK-NEXT:    s_mov_b64 s[4:5], src_shared_base
+; CHECK-NEXT:    s_cmp_eq_u32 s1, s5
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
+; CHECK-NEXT:    s_mov_b64 s[4:5], -1
+; CHECK-NEXT:    s_cbranch_scc0 .LBB3_8
+; CHECK-NEXT:  ; %bb.3: ; %atomicrmw.check.private
+; CHECK-NEXT:    s_mov_b64 s[4:5], src_private_base
+; CHECK-NEXT:    s_cmp_eq_u32 s1, s5
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
+; CHECK-NEXT:    s_mov_b64 s[4:5], -1
+; CHECK-NEXT:    s_cbranch_scc0 .LBB3_5
+; CHECK-NEXT:  ; %bb.4: ; %atomicrmw.global
 ; CHECK-NEXT:    v_mov_b32_e32 v0, 0
 ; CHECK-NEXT:    v_pk_mov_b32 v[2:3], s[2:3], s[2:3] op_sel:[0,1]
-; CHECK-NEXT:    global_atomic_add_f64 v0, v[2:3], s[4:5]
+; CHECK-NEXT:    global_atomic_add_f64 v0, v[2:3], s[0:1]
 ; CHECK-NEXT:    s_waitcnt vmcnt(0)
 ; CHECK-NEXT:    buffer_wbinvl1_vol
-; CHECK-NEXT:    s_mov_b64 s[0:1], 0
-; CHECK-NEXT:  .LBB3_7: ; %Flow
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB3_9
-; CHECK-NEXT:  ; %bb.8: ; %atomicrmw.private
-; CHECK-NEXT:    s_cmp_lg_u64 s[4:5], 0
-; CHECK-NEXT:    s_cselect_b32 s0, s4, -1
-; CHECK-NEXT:    v_mov_b32_e32 v2, s0
+; CHECK-NEXT:    s_mov_b64 s[4:5], 0
+; CHECK-NEXT:  .LBB3_5: ; %Flow
+; CHECK-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB3_7
+; CHECK-NEXT:  ; %bb.6: ; %atomicrmw.private
+; CHECK-NEXT:    s_cmp_lg_u64 s[0:1], 0
+; CHECK-NEXT:    s_cselect_b32 s4, s0, -1
+; CHECK-NEXT:    v_mov_b32_e32 v2, s4
 ; CHECK-NEXT:    buffer_load_dword v0, v2, s[12:15], 0 offen
 ; CHECK-NEXT:    buffer_load_dword v1, v2, s[12:15], 0 offen offset:4
 ; CHECK-NEXT:    s_waitcnt vmcnt(0)
 ; CHECK-NEXT:    v_add_f64 v[0:1], v[0:1], s[2:3]
 ; CHECK-NEXT:    buffer_store_dword v0, v2, s[12:15], 0 offen
 ; CHECK-NEXT:    buffer_store_dword v1, v2, s[12:15], 0 offen offset:4
-; CHECK-NEXT:  .LBB3_9: ; %Flow5
-; CHECK-NEXT:    s_cbranch_execnz .LBB3_4
-; CHECK-NEXT:  .LBB3_10: ; %atomicrmw.shared
-; CHECK-NEXT:    s_cmp_lg_u64 s[4:5], 0
-; CHECK-NEXT:    s_cselect_b32 s0, s4, -1
+; CHECK-NEXT:  .LBB3_7: ; %Flow5
+; CHECK-NEXT:    s_mov_b64 s[4:5], 0
+; CHECK-NEXT:  .LBB3_8: ; %Flow6
+; CHECK-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB3_10
+; CHECK-NEXT:  ; %bb.9: ; %atomicrmw.shared
+; CHECK-NEXT:    s_cmp_lg_u64 s[0:1], 0
+; CHECK-NEXT:    s_cselect_b32 s0, s0, -1
 ; CHECK-NEXT:    v_mov_b32_e32 v0, s0
 ; CHECK-NEXT:    v_pk_mov_b32 v[2:3], s[2:3], s[2:3] op_sel:[0,1]
 ; CHECK-NEXT:    ds_add_f64 v0, v[2:3]
 ; CHECK-NEXT:    s_waitcnt lgkmcnt(0)
+; CHECK-NEXT:  .LBB3_10: ; %atomicrmw.phi
 ; CHECK-NEXT:    s_endpgm
 entry:
   %i = add nsw i32 %a, -1

diff  --git a/llvm/test/CodeGen/AMDGPU/insert-delay-alu-bug.ll b/llvm/test/CodeGen/AMDGPU/insert-delay-alu-bug.ll
index 7ba2f1b847fa0..97f60d72921f4 100644
--- a/llvm/test/CodeGen/AMDGPU/insert-delay-alu-bug.ll
+++ b/llvm/test/CodeGen/AMDGPU/insert-delay-alu-bug.ll
@@ -56,7 +56,7 @@ define amdgpu_kernel void @f2(i32 %arg, i32 %arg1, i32 %arg2, i1 %arg3, i32 %arg
 ; GFX11:       ; %bb.0: ; %bb
 ; GFX11-NEXT:    s_mov_b64 s[18:19], s[4:5]
 ; GFX11-NEXT:    v_mov_b32_e32 v31, v0
-; GFX11-NEXT:    s_load_b32 s25, s[18:19], 0x24
+; GFX11-NEXT:    s_load_b32 s26, s[18:19], 0x24
 ; GFX11-NEXT:    s_mov_b32 s17, s15
 ; GFX11-NEXT:    s_mov_b32 s12, s13
 ; GFX11-NEXT:    s_mov_b64 s[10:11], s[6:7]
@@ -68,15 +68,15 @@ define amdgpu_kernel void @f2(i32 %arg, i32 %arg1, i32 %arg2, i1 %arg3, i32 %arg
 ; GFX11-NEXT:    s_mov_b32 s24, exec_lo
 ; GFX11-NEXT:    s_mov_b32 s32, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-NEXT:    v_mul_lo_u32 v0, s25, v0
+; GFX11-NEXT:    v_mul_lo_u32 v0, s26, v0
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-NEXT:    v_cmpx_eq_u32_e32 0, v0
-; GFX11-NEXT:    s_cbranch_execz .LBB2_13
+; GFX11-NEXT:    s_cbranch_execz .LBB2_14
 ; GFX11-NEXT:  ; %bb.1: ; %bb14
 ; GFX11-NEXT:    s_load_b128 s[20:23], s[18:19], 0x2c
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_bitcmp1_b32 s21, 0
-; GFX11-NEXT:    s_cselect_b32 s26, -1, 0
+; GFX11-NEXT:    s_cselect_b32 s25, -1, 0
 ; GFX11-NEXT:    s_bitcmp0_b32 s21, 0
 ; GFX11-NEXT:    s_mov_b32 s21, 0
 ; GFX11-NEXT:    s_cbranch_scc0 .LBB2_3
@@ -94,14 +94,18 @@ define amdgpu_kernel void @f2(i32 %arg, i32 %arg1, i32 %arg2, i1 %arg3, i32 %arg
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_swappc_b64 s[30:31], s[0:1]
 ; GFX11-NEXT:    s_mov_b32 s14, s15
+; GFX11-NEXT:    s_mov_b32 s0, 0
 ; GFX11-NEXT:    s_mov_b32 s2, -1
-; GFX11-NEXT:    s_cbranch_execz .LBB2_4
-; GFX11-NEXT:    s_branch .LBB2_12
+; GFX11-NEXT:    s_branch .LBB2_4
 ; GFX11-NEXT:  .LBB2_3:
 ; GFX11-NEXT:    s_mov_b32 s2, 0
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccnz .LBB2_12
-; GFX11-NEXT:  .LBB2_4: ; %bb16
+; GFX11-NEXT:  .LBB2_4: ; %Flow10
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB2_13
+; GFX11-NEXT:  ; %bb.5: ; %bb16
 ; GFX11-NEXT:    s_load_b32 s0, s[18:19], 0x54
 ; GFX11-NEXT:    s_bitcmp1_b32 s23, 0
 ; GFX11-NEXT:    s_cselect_b32 s8, -1, 0
@@ -111,81 +115,80 @@ define amdgpu_kernel void @f2(i32 %arg, i32 %arg1, i32 %arg2, i1 %arg3, i32 %arg
 ; GFX11-NEXT:    s_mov_b32 s0, -1
 ; GFX11-NEXT:    s_cselect_b32 s3, -1, 0
 ; GFX11-NEXT:    s_cmp_eq_u32 s1, 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB2_8
-; GFX11-NEXT:  ; %bb.5: ; %bb18.preheader
+; GFX11-NEXT:    s_cbranch_scc0 .LBB2_9
+; GFX11-NEXT:  ; %bb.6: ; %bb18.preheader
 ; GFX11-NEXT:    s_load_b128 s[28:31], s[18:19], 0x44
 ; GFX11-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-NEXT:    s_mov_b32 vcc_lo, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_mul_hi_u32 s1, s29, s28
 ; GFX11-NEXT:    s_mul_i32 s0, s29, s28
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_lshr_b64 s[0:1], s[0:1], 1
 ; GFX11-NEXT:    s_mov_b32 s1, 0
 ; GFX11-NEXT:    s_or_b32 s0, s0, 1
+; GFX11-NEXT:    s_mov_b32 s9, s1
 ; GFX11-NEXT:    s_lshr_b32 s0, s0, s30
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_mul_i32 s0, s0, s22
-; GFX11-NEXT:    s_mul_i32 s0, s0, s20
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    s_or_b32 s0, s25, s0
+; GFX11-NEXT:    s_mul_i32 s0, s0, s20
+; GFX11-NEXT:    s_or_b32 s0, s26, s0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_lshl_b64 s[22:23], s[0:1], 1
-; GFX11-NEXT:    s_mov_b32 s0, s1
-; GFX11-NEXT:    global_load_u16 v1, v0, s[22:23]
-; GFX11-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s26
+; GFX11-NEXT:    global_load_u16 v0, v0, s[22:23]
 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0, v1
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc_lo
-; GFX11-NEXT:    s_mov_b32 vcc_lo, 0
+; GFX11-NEXT:    v_readfirstlane_b32 s0, v0
+; GFX11-NEXT:    s_cmp_eq_u32 s0, 0
+; GFX11-NEXT:    s_cselect_b32 s0, -1, 0
 ; GFX11-NEXT:    .p2align 6
-; GFX11-NEXT:  .LBB2_6: ; %bb18
+; GFX11-NEXT:  .LBB2_7: ; %bb18
 ; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-NEXT:    s_and_b32 s1, 0xffff, s1
-; GFX11-NEXT:    s_cselect_b32 s9, -1, 0
-; GFX11-NEXT:    v_readfirstlane_b32 s1, v0
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s9
-; GFX11-NEXT:    s_and_b32 s9, s3, s9
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX11-NEXT:    s_and_b32 s9, s9, exec_lo
-; GFX11-NEXT:    v_readfirstlane_b32 s13, v2
-; GFX11-NEXT:    s_cselect_b32 s1, s13, s1
+; GFX11-NEXT:    s_cselect_b32 s1, -1, 0
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    s_and_b32 s1, s1, 1
-; GFX11-NEXT:    s_and_b32 s9, 0xffff, s0
-; GFX11-NEXT:    s_cselect_b32 s9, -1, 0
-; GFX11-NEXT:    s_and_b32 s15, s8, exec_lo
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s9
-; GFX11-NEXT:    v_readfirstlane_b32 s9, v1
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_readfirstlane_b32 s13, v2
-; GFX11-NEXT:    s_cselect_b32 s9, s13, s9
-; GFX11-NEXT:    s_bitcmp1_b32 s9, 0
-; GFX11-NEXT:    s_cselect_b32 s9, 0x100, 0
+; GFX11-NEXT:    s_and_b32 s13, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s13, 1, 0
+; GFX11-NEXT:    s_and_b32 s1, s3, s1
+; GFX11-NEXT:    s_and_b32 s15, s25, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s15, 1, 0
+; GFX11-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, s13, s15
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    s_or_b32 s0, s9, s0
-; GFX11-NEXT:    s_cbranch_vccz .LBB2_6
-; GFX11-NEXT:  ; %bb.7: ; %Flow
+; GFX11-NEXT:    s_and_b32 s1, s1, 1
+; GFX11-NEXT:    s_and_b32 s13, 0xffff, s9
+; GFX11-NEXT:    s_cselect_b32 s13, 1, 0
+; GFX11-NEXT:    s_and_b32 s15, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s15, 1, 0
+; GFX11-NEXT:    s_and_b32 s16, s8, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s13, s13, s15
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_bitcmp1_b32 s13, 0
+; GFX11-NEXT:    s_cselect_b32 s13, 0x100, 0
+; GFX11-NEXT:    s_or_b32 s9, s13, s9
+; GFX11-NEXT:    s_cbranch_vccz .LBB2_7
+; GFX11-NEXT:  ; %bb.8: ; %Flow
 ; GFX11-NEXT:    s_mov_b32 s0, 0
-; GFX11-NEXT:  .LBB2_8: ; %Flow12
+; GFX11-NEXT:  .LBB2_9: ; %Flow12
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccz .LBB2_12
-; GFX11-NEXT:  ; %bb.9:
+; GFX11-NEXT:    s_cbranch_vccz .LBB2_13
+; GFX11-NEXT:  ; %bb.10:
 ; GFX11-NEXT:    s_xor_b32 s0, s3, -1
-; GFX11-NEXT:  .LBB2_10: ; %bb17
+; GFX11-NEXT:  .LBB2_11: ; %bb17
 ; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s0
-; GFX11-NEXT:    s_cbranch_vccz .LBB2_10
-; GFX11-NEXT:  ; %bb.11: ; %Flow6
+; GFX11-NEXT:    s_cbranch_vccz .LBB2_11
+; GFX11-NEXT:  ; %bb.12: ; %Flow6
 ; GFX11-NEXT:    s_mov_b32 s21, -1
-; GFX11-NEXT:  .LBB2_12: ; %Flow11
+; GFX11-NEXT:  .LBB2_13: ; %Flow11
 ; GFX11-NEXT:    s_and_b32 s20, s2, exec_lo
 ; GFX11-NEXT:    s_or_not1_b32 s0, s21, exec_lo
-; GFX11-NEXT:  .LBB2_13: ; %Flow9
+; GFX11-NEXT:  .LBB2_14: ; %Flow9
 ; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s24
 ; GFX11-NEXT:    s_and_saveexec_b32 s21, s0
-; GFX11-NEXT:    s_cbranch_execz .LBB2_15
-; GFX11-NEXT:  ; %bb.14: ; %bb43
+; GFX11-NEXT:    s_cbranch_execz .LBB2_16
+; GFX11-NEXT:  ; %bb.15: ; %bb43
 ; GFX11-NEXT:    s_add_u32 s8, s18, 0x58
 ; GFX11-NEXT:    s_addc_u32 s9, s19, 0
 ; GFX11-NEXT:    s_getpc_b64 s[0:1]
@@ -198,12 +201,12 @@ define amdgpu_kernel void @f2(i32 %arg, i32 %arg1, i32 %arg2, i1 %arg3, i32 %arg
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_swappc_b64 s[30:31], s[0:1]
 ; GFX11-NEXT:    s_or_b32 s20, s20, exec_lo
-; GFX11-NEXT:  .LBB2_15: ; %Flow14
+; GFX11-NEXT:  .LBB2_16: ; %Flow14
 ; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s21
 ; GFX11-NEXT:    s_and_saveexec_b32 s0, s20
-; GFX11-NEXT:  ; %bb.16: ; %UnifiedUnreachableBlock
+; GFX11-NEXT:  ; %bb.17: ; %UnifiedUnreachableBlock
 ; GFX11-NEXT:    ; divergent unreachable
-; GFX11-NEXT:  ; %bb.17: ; %UnifiedReturnBlock
+; GFX11-NEXT:  ; %bb.18: ; %UnifiedReturnBlock
 ; GFX11-NEXT:    s_endpgm
 bb:
   %i = tail call i32 @llvm.amdgcn.workitem.id.x()

diff  --git a/llvm/test/CodeGen/AMDGPU/insert-waitcnts-merge.ll b/llvm/test/CodeGen/AMDGPU/insert-waitcnts-merge.ll
index 8075d5fa19b77..4a4298fdfe074 100644
--- a/llvm/test/CodeGen/AMDGPU/insert-waitcnts-merge.ll
+++ b/llvm/test/CodeGen/AMDGPU/insert-waitcnts-merge.ll
@@ -75,23 +75,27 @@ define amdgpu_kernel void @widget(ptr addrspace(1) %arg, i1 %arg1) #0 {
   ; CHECK-NEXT:   liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $vgpr0_vgpr1:0x000000000000000C, $vgpr2_vgpr3, $sgpr20_sgpr21_sgpr22_sgpr23
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT:   $exec = S_OR_B64 $exec, killed renamable $sgpr4_sgpr5, implicit-def $scc
-  ; CHECK-NEXT:   renamable $vgpr0 = BUFFER_LOAD_DWORD_OFFSET $sgpr20_sgpr21_sgpr22_sgpr23, 0, 0, 0, 0, implicit $exec :: (load (s32) from `ptr addrspace(5) null`, addrspace 5)
   ; CHECK-NEXT:   renamable $vgpr4 = GLOBAL_LOAD_DWORD renamable $vgpr2_vgpr3, 0, 0, implicit $exec :: (load (s32) from `ptr addrspace(1) null`, addrspace 1)
+  ; CHECK-NEXT:   renamable $vgpr0 = BUFFER_LOAD_DWORD_OFFSET $sgpr20_sgpr21_sgpr22_sgpr23, 0, 0, 0, 0, implicit $exec :: (load (s32) from `ptr addrspace(5) null`, addrspace 5)
+  ; CHECK-NEXT:   S_WAITCNT .Vmcnt_1
+  ; CHECK-NEXT:   renamable $sgpr8 = V_READFIRSTLANE_B32 killed $vgpr4, implicit $exec
   ; CHECK-NEXT:   S_BRANCH %bb.4
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT: bb.9.Flow2:
   ; CHECK-NEXT:   successors: %bb.10(0x04000000), %bb.4(0x7c000000)
-  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr4, $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7, $vgpr0_vgpr1:0x000000000000000C, $vgpr2_vgpr3, $sgpr20_sgpr21_sgpr22_sgpr23
+  ; CHECK-NEXT:   liveins: $sgpr8, $vgpr0, $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7, $vgpr0_vgpr1:0x000000000000000C, $vgpr2_vgpr3, $sgpr20_sgpr21_sgpr22_sgpr23
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   $vcc = S_ANDN2_B64 $exec, killed renamable $sgpr6_sgpr7, implicit-def dead $scc
-  ; CHECK-NEXT:   S_CBRANCH_VCCZ %bb.10, implicit killed $vcc
+  ; CHECK-NEXT:   dead renamable $sgpr6_sgpr7 = S_AND_B64 killed renamable $sgpr6_sgpr7, $exec, implicit-def $scc
+  ; CHECK-NEXT:   renamable $sgpr6 = S_CSELECT_B32 1, 0, implicit killed $scc
+  ; CHECK-NEXT:   S_CMP_LG_U32 killed renamable $sgpr6, 1, implicit-def $scc
+  ; CHECK-NEXT:   S_CBRANCH_SCC0 %bb.10, implicit killed $scc
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT: bb.4.bb6:
   ; CHECK-NEXT:   successors: %bb.6(0x40000000), %bb.5(0x40000000)
-  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr4, $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1:0x000000000000000C, $vgpr2_vgpr3, $sgpr20_sgpr21_sgpr22_sgpr23
+  ; CHECK-NEXT:   liveins: $sgpr8, $vgpr0, $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1:0x000000000000000C, $vgpr2_vgpr3, $sgpr20_sgpr21_sgpr22_sgpr23
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   S_WAITCNT .Vmcnt_0
-  ; CHECK-NEXT:   renamable $sgpr6_sgpr7 = V_CMP_EQ_U32_e64 0, killed $vgpr4, implicit $exec
+  ; CHECK-NEXT:   S_CMP_EQ_U32 killed renamable $sgpr8, 0, implicit-def $scc
+  ; CHECK-NEXT:   renamable $sgpr6_sgpr7 = S_CSELECT_B64 -1, 0, implicit killed $scc
   ; CHECK-NEXT:   renamable $vcc = S_AND_B64 $exec, renamable $sgpr6_sgpr7, implicit-def dead $scc
   ; CHECK-NEXT:   S_CBRANCH_VCCNZ %bb.5, implicit killed $vcc
   ; CHECK-NEXT: {{  $}}
@@ -102,26 +106,30 @@ define amdgpu_kernel void @widget(ptr addrspace(1) %arg, i1 %arg1) #0 {
   ; CHECK-NEXT:   GLOBAL_STORE_DWORD_SADDR renamable $vgpr1, renamable $vgpr1, renamable $sgpr0_sgpr1, 0, 0, implicit $exec :: (store (s32) into %ir.arg.load, addrspace 1)
   ; CHECK-NEXT:   renamable $vgpr4 = GLOBAL_LOAD_DWORD renamable $vgpr2_vgpr3, 0, 0, implicit $exec :: (load (s32) from `ptr addrspace(1) null`, addrspace 1)
   ; CHECK-NEXT:   renamable $sgpr6_sgpr7 = S_MOV_B64 -1
+  ; CHECK-NEXT:   S_WAITCNT .Vmcnt_0
+  ; CHECK-NEXT:   renamable $sgpr8 = V_READFIRSTLANE_B32 killed $vgpr4, implicit $exec
   ; CHECK-NEXT:   S_BRANCH %bb.7
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT: bb.5:
   ; CHECK-NEXT:   successors: %bb.7(0x80000000)
   ; CHECK-NEXT:   liveins: $vgpr0, $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr6_sgpr7, $vgpr0_vgpr1:0x000000000000000C, $vgpr2_vgpr3, $sgpr20_sgpr21_sgpr22_sgpr23
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   renamable $vgpr4 = V_MOV_B32_e32 0, implicit $exec
+  ; CHECK-NEXT:   renamable $sgpr8 = S_MOV_B32 0
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT: bb.7.Flow:
   ; CHECK-NEXT:   successors: %bb.8(0x40000000), %bb.9(0x40000000)
-  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr4, $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr6_sgpr7, $vgpr0_vgpr1:0x000000000000000C, $vgpr2_vgpr3, $sgpr20_sgpr21_sgpr22_sgpr23
+  ; CHECK-NEXT:   liveins: $sgpr8, $vgpr0, $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr6_sgpr7, $vgpr0_vgpr1:0x000000000000000C, $vgpr2_vgpr3, $sgpr20_sgpr21_sgpr22_sgpr23
   ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   dead renamable $sgpr6_sgpr7 = S_AND_B64 killed renamable $sgpr6_sgpr7, $exec, implicit-def $scc
+  ; CHECK-NEXT:   renamable $sgpr6 = S_CSELECT_B32 1, 0, implicit killed $scc
   ; CHECK-NEXT:   renamable $sgpr4_sgpr5 = S_MOV_B64 -1
-  ; CHECK-NEXT:   $vcc = S_ANDN2_B64 $exec, killed renamable $sgpr6_sgpr7, implicit-def dead $scc
+  ; CHECK-NEXT:   S_CMP_LG_U32 killed renamable $sgpr6, 1, implicit-def $scc
   ; CHECK-NEXT:   renamable $sgpr6_sgpr7 = S_MOV_B64 -1
-  ; CHECK-NEXT:   S_CBRANCH_VCCNZ %bb.9, implicit killed $vcc
+  ; CHECK-NEXT:   S_CBRANCH_SCC1 %bb.9, implicit killed $scc
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT: bb.8.bb11:
   ; CHECK-NEXT:   successors: %bb.9(0x80000000)
-  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr4, $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1:0x000000000000000C, $vgpr2_vgpr3, $sgpr20_sgpr21_sgpr22_sgpr23
+  ; CHECK-NEXT:   liveins: $sgpr8, $vgpr0, $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1:0x000000000000000C, $vgpr2_vgpr3, $sgpr20_sgpr21_sgpr22_sgpr23
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT:   renamable $sgpr4_sgpr5 = S_MOV_B64 0
   ; CHECK-NEXT:   $sgpr6_sgpr7 = S_MOV_B64 $sgpr2_sgpr3

diff  --git a/llvm/test/CodeGen/AMDGPU/insert_vector_dynelt.ll b/llvm/test/CodeGen/AMDGPU/insert_vector_dynelt.ll
index ea406781a4e79..9e42a6eda9427 100644
--- a/llvm/test/CodeGen/AMDGPU/insert_vector_dynelt.ll
+++ b/llvm/test/CodeGen/AMDGPU/insert_vector_dynelt.ll
@@ -3933,37 +3933,37 @@ define amdgpu_kernel void @bit4_inselt(ptr addrspace(1) %out, <4 x i1> %vec, i32
 ; GCN-O0-NEXT:    v_mov_b32_e32 v1, s1
 ; GCN-O0-NEXT:    flat_load_ubyte v0, v[0:1]
 ; GCN-O0-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24
-; GCN-O0-NEXT:    s_load_dword s6, s[4:5], 0x2c
+; GCN-O0-NEXT:    s_load_dword s7, s[4:5], 0x2c
 ; GCN-O0-NEXT:    s_load_dword s2, s[4:5], 0x30
-; GCN-O0-NEXT:    s_mov_b32 s10, 3
+; GCN-O0-NEXT:    s_mov_b32 s9, 3
 ; GCN-O0-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-O0-NEXT:    s_and_b32 s3, s6, s10
-; GCN-O0-NEXT:    s_mov_b32 s7, 0xffff
-; GCN-O0-NEXT:    s_and_b32 s4, s7, s3
+; GCN-O0-NEXT:    s_and_b32 s3, s7, s9
+; GCN-O0-NEXT:    s_mov_b32 s6, 0xffff
+; GCN-O0-NEXT:    s_and_b32 s4, s6, s3
 ; GCN-O0-NEXT:    s_mov_b32 s3, 1
 ; GCN-O0-NEXT:    s_lshr_b32 s5, s4, s3
 ; GCN-O0-NEXT:    s_mov_b32 s4, 15
-; GCN-O0-NEXT:    s_and_b32 s4, s6, s4
 ; GCN-O0-NEXT:    s_and_b32 s4, s7, s4
-; GCN-O0-NEXT:    s_mov_b32 s9, 2
-; GCN-O0-NEXT:    s_lshr_b32 s4, s4, s9
-; GCN-O0-NEXT:    s_mov_b32 s8, s4
-; GCN-O0-NEXT:    s_and_b32 s8, s8, s10
-; GCN-O0-NEXT:    s_and_b32 s7, s7, s8
-; GCN-O0-NEXT:    s_lshr_b32 s8, s7, s3
-; GCN-O0-NEXT:    s_and_b32 s6, 1, s6
-; GCN-O0-NEXT:    s_cmp_eq_u32 s6, 1
-; GCN-O0-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN-O0-NEXT:    s_and_b32 s2, s2, s10
+; GCN-O0-NEXT:    s_and_b32 s4, s6, s4
+; GCN-O0-NEXT:    s_mov_b32 s8, 2
+; GCN-O0-NEXT:    s_lshr_b32 s4, s4, s8
+; GCN-O0-NEXT:    s_mov_b32 s10, s4
+; GCN-O0-NEXT:    s_and_b32 s10, s10, s9
+; GCN-O0-NEXT:    s_and_b32 s6, s6, s10
+; GCN-O0-NEXT:    s_lshr_b32 s6, s6, s3
+; GCN-O0-NEXT:    s_and_b32 s7, 1, s7
+; GCN-O0-NEXT:    s_and_b32 s2, s2, s9
 ; GCN-O0-NEXT:    s_mul_i32 s3, s2, s3
 ; GCN-O0-NEXT:    s_mov_b32 s2, 0
 ; GCN-O0-NEXT:    s_add_i32 s3, s2, s3
-; GCN-O0-NEXT:    s_add_i32 s2, s2, s9
+; GCN-O0-NEXT:    s_add_i32 s2, s2, s8
+; GCN-O0-NEXT:    s_cmp_eq_u32 s7, 1
 ; GCN-O0-NEXT:    s_waitcnt vmcnt(0)
-; GCN-O0-NEXT:    v_mov_b32_e32 v0, s8
+; GCN-O0-NEXT:    v_mov_b32_e32 v0, s6
 ; GCN-O0-NEXT:    v_mov_b32_e32 v1, s2
 ; GCN-O0-NEXT:    buffer_store_byte v0, v1, s[12:15], 0 offen offset:1
-; GCN-O0-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[6:7]
+; GCN-O0-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN-O0-NEXT:    v_mov_b32_e32 v0, s6
 ; GCN-O0-NEXT:    buffer_store_byte v0, off, s[12:15], 0
 ; GCN-O0-NEXT:    v_mov_b32_e32 v0, s5
 ; GCN-O0-NEXT:    buffer_store_byte v0, off, s[12:15], 0 offset:1

diff  --git a/llvm/test/CodeGen/AMDGPU/insert_vector_elt.ll b/llvm/test/CodeGen/AMDGPU/insert_vector_elt.ll
index 7cbf9aeacfe48..9a94ec60de87f 100644
--- a/llvm/test/CodeGen/AMDGPU/insert_vector_elt.ll
+++ b/llvm/test/CodeGen/AMDGPU/insert_vector_elt.ll
@@ -1968,17 +1968,22 @@ define amdgpu_kernel void @insert_split_bb(ptr addrspace(1) %out, ptr addrspace(
 ; SI-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s4, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB42_4
+; SI-NEXT:    s_cbranch_scc0 .LBB42_2
 ; SI-NEXT:  ; %bb.1: ; %else
 ; SI-NEXT:    s_load_dword s5, s[2:3], 0x1
 ; SI-NEXT:    s_mov_b64 s[6:7], 0
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; SI-NEXT:    s_branch .LBB42_3
+; SI-NEXT:  .LBB42_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:  .LBB42_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB42_5
+; SI-NEXT:  ; %bb.4: ; %if
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
-; SI-NEXT:    s_mov_b64 vcc, vcc
-; SI-NEXT:    s_cbranch_vccnz .LBB42_3
-; SI-NEXT:  .LBB42_2: ; %if
 ; SI-NEXT:    s_load_dword s5, s[2:3], 0x0
-; SI-NEXT:  .LBB42_3: ; %endif
+; SI-NEXT:  .LBB42_5: ; %endif
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    s_mov_b32 s3, 0x100f000
@@ -1986,8 +1991,6 @@ define amdgpu_kernel void @insert_split_bb(ptr addrspace(1) %out, ptr addrspace(
 ; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
-; SI-NEXT:  .LBB42_4:
-; SI-NEXT:    s_branch .LBB42_2
 ;
 ; VI-LABEL: insert_split_bb:
 ; VI:       ; %bb.0: ; %entry
@@ -1995,14 +1998,22 @@ define amdgpu_kernel void @insert_split_bb(ptr addrspace(1) %out, ptr addrspace(
 ; VI-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u32 s4, 0
-; VI-NEXT:    s_cbranch_scc0 .LBB42_4
+; VI-NEXT:    s_cbranch_scc0 .LBB42_2
 ; VI-NEXT:  ; %bb.1: ; %else
 ; VI-NEXT:    s_load_dword s5, s[2:3], 0x4
-; VI-NEXT:    s_cbranch_execnz .LBB42_3
-; VI-NEXT:  .LBB42_2: ; %if
+; VI-NEXT:    s_mov_b64 s[6:7], 0
+; VI-NEXT:    s_branch .LBB42_3
+; VI-NEXT:  .LBB42_2:
+; VI-NEXT:    s_mov_b64 s[6:7], -1
+; VI-NEXT:  .LBB42_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; VI-NEXT:    s_cselect_b32 s6, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s6, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB42_5
+; VI-NEXT:  ; %bb.4: ; %if
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    s_load_dword s5, s[2:3], 0x0
-; VI-NEXT:  .LBB42_3: ; %endif
+; VI-NEXT:  .LBB42_5: ; %endif
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    s_mov_b32 s3, 0x1100f000
@@ -2010,8 +2021,6 @@ define amdgpu_kernel void @insert_split_bb(ptr addrspace(1) %out, ptr addrspace(
 ; VI-NEXT:    v_mov_b32_e32 v1, s5
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
 ; VI-NEXT:    s_endpgm
-; VI-NEXT:  .LBB42_4:
-; VI-NEXT:    s_branch .LBB42_2
 entry:
   %0 = insertelement <2 x i32> poison, i32 %a, i32 0
   %1 = icmp eq i32 %a, 0

diff  --git a/llvm/test/CodeGen/AMDGPU/intrinsic-amdgcn-s-alloc-vgpr.ll b/llvm/test/CodeGen/AMDGPU/intrinsic-amdgcn-s-alloc-vgpr.ll
index c096b1821c766..bf0a8acdc2cb8 100644
--- a/llvm/test/CodeGen/AMDGPU/intrinsic-amdgcn-s-alloc-vgpr.ll
+++ b/llvm/test/CodeGen/AMDGPU/intrinsic-amdgcn-s-alloc-vgpr.ll
@@ -32,8 +32,8 @@ define amdgpu_cs void @test_alloc_vreg_const(ptr addrspace(1) %out) #0 {
 ; DAGISEL-NEXT:    s_cmovk_i32 s33, 0x1c0
 ; DAGISEL-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
 ; DAGISEL-NEXT:    s_alloc_vgpr 45
-; DAGISEL-NEXT:    s_cselect_b32 s0, -1, 0
-; DAGISEL-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; DAGISEL-NEXT:    s_cselect_b32 s0, 1, 0
+; DAGISEL-NEXT:    v_mov_b32_e32 v2, s0
 ; DAGISEL-NEXT:    global_store_b32 v[0:1], v2, off
 ; DAGISEL-NEXT:    s_alloc_vgpr 0
 ; DAGISEL-NEXT:    s_endpgm
@@ -89,8 +89,8 @@ define amdgpu_cs void @test_alloc_vreg_var(i32 inreg %n, ptr addrspace(1) %out)
 ; DAGISEL-NEXT:    s_cmovk_i32 s33, 0x1c0
 ; DAGISEL-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
 ; DAGISEL-NEXT:    s_alloc_vgpr s0
-; DAGISEL-NEXT:    s_cselect_b32 s0, -1, 0
-; DAGISEL-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; DAGISEL-NEXT:    s_cselect_b32 s0, 1, 0
+; DAGISEL-NEXT:    v_mov_b32_e32 v2, s0
 ; DAGISEL-NEXT:    global_store_b32 v[0:1], v2, off
 ; DAGISEL-NEXT:    s_alloc_vgpr 0
 ; DAGISEL-NEXT:    s_endpgm
@@ -151,9 +151,9 @@ define amdgpu_cs void @test_alloc_vreg_vgpr(i32 %n, ptr addrspace(1) %out) #0 {
 ; DAGISEL-NEXT:    v_readfirstlane_b32 s0, v0
 ; DAGISEL-NEXT:    v_dual_mov_b32 v3, v2 :: v_dual_mov_b32 v2, v1
 ; DAGISEL-NEXT:    s_alloc_vgpr s0
-; DAGISEL-NEXT:    s_cselect_b32 s0, -1, 0
+; DAGISEL-NEXT:    s_cselect_b32 s0, 1, 0
 ; DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; DAGISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
+; DAGISEL-NEXT:    v_mov_b32_e32 v0, s0
 ; DAGISEL-NEXT:    global_store_b32 v[2:3], v0, off
 ; DAGISEL-NEXT:    s_alloc_vgpr 0
 ; DAGISEL-NEXT:    s_endpgm

diff  --git a/llvm/test/CodeGen/AMDGPU/issue176578.ll b/llvm/test/CodeGen/AMDGPU/issue176578.ll
index 35c53dfbec51b..255fea7098191 100644
--- a/llvm/test/CodeGen/AMDGPU/issue176578.ll
+++ b/llvm/test/CodeGen/AMDGPU/issue176578.ll
@@ -48,8 +48,10 @@ define <4 x i8> @issue176578() #0 {
 ; CHECK-NEXT:    s_branch .LBB0_2
 ; CHECK-NEXT:  .LBB0_1: ; %Flow
 ; CHECK-NEXT:    ; in Loop: Header=BB0_2 Depth=1
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; CHECK-NEXT:    s_cbranch_vccz .LBB0_4
+; CHECK-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
+; CHECK-NEXT:    s_cbranch_scc0 .LBB0_4
 ; CHECK-NEXT:  .LBB0_2: ; %bb1
 ; CHECK-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; CHECK-NEXT:    s_and_b64 vcc, exec, -1

diff  --git a/llvm/test/CodeGen/AMDGPU/large-phi-search.ll b/llvm/test/CodeGen/AMDGPU/large-phi-search.ll
index 575d453da3b33..c7d91bfbee8e8 100644
--- a/llvm/test/CodeGen/AMDGPU/large-phi-search.ll
+++ b/llvm/test/CodeGen/AMDGPU/large-phi-search.ll
@@ -26,8 +26,10 @@ define amdgpu_kernel void @func(i1 %arg1, float %arg2) {
 ; CHECK-NEXT:    s_mov_b64 s[6:7], 0
 ; CHECK-NEXT:    s_mov_b64 s[8:9], -1
 ; CHECK-NEXT:  .LBB0_2: ; %Flow
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_5
+; CHECK-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; CHECK-NEXT:    s_cselect_b32 s6, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s6, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_5
 ; CHECK-NEXT:  ; %bb.3: ; %bb1
 ; CHECK-NEXT:    s_mov_b64 s[4:5], -1
 ; CHECK-NEXT:    s_and_b64 vcc, exec, s[0:1]
@@ -54,163 +56,205 @@ define amdgpu_kernel void @func(i1 %arg1, float %arg2) {
 ; CHECK-NEXT:    s_mov_b64 s[6:7], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[0:1]
 ; CHECK-NEXT:  .LBB0_11: ; %Flow7
+; CHECK-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; CHECK-NEXT:    s_cselect_b32 s8, 1, 0
 ; CHECK-NEXT:    s_mov_b64 s[4:5], 0
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
+; CHECK-NEXT:    s_cmp_lg_u32 s8, 1
 ; CHECK-NEXT:    s_mov_b64 s[8:9], 0
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_13
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_13
 ; CHECK-NEXT:  ; %bb.12: ; %bb12
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[6:7], s[0:1]
 ; CHECK-NEXT:  .LBB0_13: ; %Flow8
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_15
+; CHECK-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; CHECK-NEXT:    s_cselect_b32 s6, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s6, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_15
 ; CHECK-NEXT:  ; %bb.14: ; %bb13
 ; CHECK-NEXT:    s_mov_b64 s[4:5], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[0:1]
 ; CHECK-NEXT:  .LBB0_15: ; %Flow9
+; CHECK-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; CHECK-NEXT:    s_cselect_b32 s8, 1, 0
 ; CHECK-NEXT:    s_mov_b64 s[6:7], 0
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
+; CHECK-NEXT:    s_cmp_lg_u32 s8, 1
 ; CHECK-NEXT:    s_mov_b64 s[8:9], 0
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_17
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_17
 ; CHECK-NEXT:  ; %bb.16: ; %bb14
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[4:5], s[0:1]
 ; CHECK-NEXT:  .LBB0_17: ; %Flow10
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_19
+; CHECK-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_19
 ; CHECK-NEXT:  ; %bb.18: ; %bb15
 ; CHECK-NEXT:    s_mov_b64 s[6:7], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[0:1]
 ; CHECK-NEXT:  .LBB0_19: ; %Flow11
+; CHECK-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; CHECK-NEXT:    s_cselect_b32 s8, 1, 0
 ; CHECK-NEXT:    s_mov_b64 s[4:5], 0
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
+; CHECK-NEXT:    s_cmp_lg_u32 s8, 1
 ; CHECK-NEXT:    s_mov_b64 s[8:9], 0
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_21
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_21
 ; CHECK-NEXT:  ; %bb.20: ; %bb16
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[6:7], s[0:1]
 ; CHECK-NEXT:  .LBB0_21: ; %Flow12
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_23
+; CHECK-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; CHECK-NEXT:    s_cselect_b32 s6, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s6, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_23
 ; CHECK-NEXT:  ; %bb.22: ; %bb17
 ; CHECK-NEXT:    s_mov_b64 s[4:5], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[0:1]
 ; CHECK-NEXT:  .LBB0_23: ; %Flow13
+; CHECK-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; CHECK-NEXT:    s_cselect_b32 s8, 1, 0
 ; CHECK-NEXT:    s_mov_b64 s[6:7], 0
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
+; CHECK-NEXT:    s_cmp_lg_u32 s8, 1
 ; CHECK-NEXT:    s_mov_b64 s[8:9], 0
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_25
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_25
 ; CHECK-NEXT:  ; %bb.24: ; %bb18
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[4:5], s[0:1]
 ; CHECK-NEXT:  .LBB0_25: ; %Flow14
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_27
+; CHECK-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_27
 ; CHECK-NEXT:  ; %bb.26: ; %bb19
 ; CHECK-NEXT:    s_mov_b64 s[6:7], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[0:1]
 ; CHECK-NEXT:  .LBB0_27: ; %Flow15
+; CHECK-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; CHECK-NEXT:    s_cselect_b32 s8, 1, 0
 ; CHECK-NEXT:    s_mov_b64 s[4:5], 0
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
+; CHECK-NEXT:    s_cmp_lg_u32 s8, 1
 ; CHECK-NEXT:    s_mov_b64 s[8:9], 0
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_29
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_29
 ; CHECK-NEXT:  ; %bb.28: ; %bb20
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[6:7], s[0:1]
 ; CHECK-NEXT:  .LBB0_29: ; %Flow16
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_31
+; CHECK-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; CHECK-NEXT:    s_cselect_b32 s6, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s6, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_31
 ; CHECK-NEXT:  ; %bb.30: ; %bb21
 ; CHECK-NEXT:    s_mov_b64 s[4:5], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[0:1]
 ; CHECK-NEXT:  .LBB0_31: ; %Flow17
+; CHECK-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; CHECK-NEXT:    s_cselect_b32 s8, 1, 0
 ; CHECK-NEXT:    s_mov_b64 s[6:7], 0
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
+; CHECK-NEXT:    s_cmp_lg_u32 s8, 1
 ; CHECK-NEXT:    s_mov_b64 s[8:9], 0
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_33
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_33
 ; CHECK-NEXT:  ; %bb.32: ; %bb22
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[4:5], s[0:1]
 ; CHECK-NEXT:  .LBB0_33: ; %Flow18
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_35
+; CHECK-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_35
 ; CHECK-NEXT:  ; %bb.34: ; %bb23
 ; CHECK-NEXT:    s_mov_b64 s[6:7], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[0:1]
 ; CHECK-NEXT:  .LBB0_35: ; %Flow19
+; CHECK-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; CHECK-NEXT:    s_cselect_b32 s8, 1, 0
 ; CHECK-NEXT:    s_mov_b64 s[4:5], 0
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
+; CHECK-NEXT:    s_cmp_lg_u32 s8, 1
 ; CHECK-NEXT:    s_mov_b64 s[8:9], 0
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_37
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_37
 ; CHECK-NEXT:  ; %bb.36: ; %bb24
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[6:7], s[0:1]
 ; CHECK-NEXT:  .LBB0_37: ; %Flow20
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_39
+; CHECK-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; CHECK-NEXT:    s_cselect_b32 s6, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s6, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_39
 ; CHECK-NEXT:  ; %bb.38: ; %bb25
 ; CHECK-NEXT:    s_mov_b64 s[4:5], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[0:1]
 ; CHECK-NEXT:  .LBB0_39: ; %Flow21
+; CHECK-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; CHECK-NEXT:    s_cselect_b32 s8, 1, 0
 ; CHECK-NEXT:    s_mov_b64 s[6:7], 0
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
+; CHECK-NEXT:    s_cmp_lg_u32 s8, 1
 ; CHECK-NEXT:    s_mov_b64 s[10:11], 0
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_41
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_41
 ; CHECK-NEXT:  ; %bb.40: ; %bb26
 ; CHECK-NEXT:    s_mov_b64 s[10:11], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[4:5], s[0:1]
 ; CHECK-NEXT:  .LBB0_41: ; %Flow22
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_43
+; CHECK-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_43
 ; CHECK-NEXT:  ; %bb.42: ; %bb27
 ; CHECK-NEXT:    s_mov_b64 s[6:7], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[10:11], s[0:1]
 ; CHECK-NEXT:  .LBB0_43: ; %Flow23
+; CHECK-NEXT:    s_and_b64 s[4:5], s[10:11], exec
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
 ; CHECK-NEXT:    s_mov_b64 s[8:9], 0
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[10:11]
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
 ; CHECK-NEXT:    s_mov_b64 s[10:11], 0
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_45
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_45
 ; CHECK-NEXT:  ; %bb.44: ; %bb28
 ; CHECK-NEXT:    s_mov_b64 s[10:11], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[6:7], s[0:1]
 ; CHECK-NEXT:  .LBB0_45: ; %Flow24
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_47
+; CHECK-NEXT:    s_and_b64 s[4:5], s[6:7], exec
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_47
 ; CHECK-NEXT:  ; %bb.46: ; %bb29
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[10:11], s[0:1]
 ; CHECK-NEXT:  .LBB0_47: ; %Flow25
+; CHECK-NEXT:    s_and_b64 s[6:7], s[10:11], exec
+; CHECK-NEXT:    s_cselect_b32 s6, 1, 0
 ; CHECK-NEXT:    s_mov_b64 s[4:5], 0
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[10:11]
+; CHECK-NEXT:    s_cmp_lg_u32 s6, 1
 ; CHECK-NEXT:    s_mov_b64 s[6:7], 0
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_49
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_49
 ; CHECK-NEXT:  ; %bb.48: ; %bb30
 ; CHECK-NEXT:    s_mov_b64 s[6:7], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[8:9], s[0:1]
 ; CHECK-NEXT:  .LBB0_49: ; %Flow26
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_51
+; CHECK-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; CHECK-NEXT:    s_cselect_b32 s8, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s8, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_51
 ; CHECK-NEXT:  ; %bb.50: ; %bb31
 ; CHECK-NEXT:    s_mov_b64 s[4:5], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[6:7], s[0:1]
 ; CHECK-NEXT:  .LBB0_51: ; %Flow27
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; CHECK-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; CHECK-NEXT:    s_cselect_b32 s6, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s6, 1
 ; CHECK-NEXT:    s_mov_b64 s[6:7], 0
-; CHECK-NEXT:    s_cbranch_vccz .LBB0_54
-; CHECK-NEXT:  ; %bb.52: ; %Flow28
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; CHECK-NEXT:    s_cbranch_vccz .LBB0_55
-; CHECK-NEXT:  .LBB0_53: ; %Flow29
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; CHECK-NEXT:    s_endpgm
-; CHECK-NEXT:  .LBB0_54: ; %bb32
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_53
+; CHECK-NEXT:  ; %bb.52: ; %bb32
 ; CHECK-NEXT:    s_mov_b64 s[6:7], s[2:3]
 ; CHECK-NEXT:    s_mov_b64 s[4:5], s[0:1]
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_53
-; CHECK-NEXT:  .LBB0_55: ; %bb33
+; CHECK-NEXT:  .LBB0_53: ; %Flow28
+; CHECK-NEXT:    s_and_b64 s[2:3], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s2, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s2, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_55
+; CHECK-NEXT:  ; %bb.54: ; %bb33
 ; CHECK-NEXT:    s_mov_b64 s[6:7], s[0:1]
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
+; CHECK-NEXT:  .LBB0_55: ; %Flow29
+; CHECK-NEXT:    s_and_b64 s[0:1], s[6:7], exec
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s0, 1
 ; CHECK-NEXT:    s_endpgm
 bb5:
   br i1 %arg1, label %bb1, label %bb9

diff  --git a/llvm/test/CodeGen/AMDGPU/literal64.ll b/llvm/test/CodeGen/AMDGPU/literal64.ll
index b86f3fa115cce..260ee0701ff3a 100644
--- a/llvm/test/CodeGen/AMDGPU/literal64.ll
+++ b/llvm/test/CodeGen/AMDGPU/literal64.ll
@@ -201,7 +201,9 @@ define i1 @class_f64() noinline optnone {
 ; GFX1250-SDAG-NEXT:    s_mov_b32 s2, 1
 ; GFX1250-SDAG-NEXT:    s_mov_b64 s[0:1], 0x4063233333333333
 ; GFX1250-SDAG-NEXT:    v_cmp_class_f64_e64 s0, s[0:1], s2
-; GFX1250-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
+; GFX1250-SDAG-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX1250-GISEL-LABEL: class_f64:
@@ -228,7 +230,9 @@ define i1 @class_f64() noinline optnone {
 ; GFX13-SDAG-NEXT:    s_mov_b32 s2, 1
 ; GFX13-SDAG-NEXT:    s_mov_b64 s[0:1], 0x4063233333333333
 ; GFX13-SDAG-NEXT:    v_cmp_class_f64_e64 s0, s[0:1], s2
-; GFX13-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
+; GFX13-SDAG-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX13-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX13-SDAG-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX13-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX13-GISEL-LABEL: class_f64:

diff  --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.class.f16.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.class.f16.ll
index 93bf25636b8b2..13ec5993798af 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.class.f16.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.class.f16.ll
@@ -12,20 +12,22 @@ define amdgpu_kernel void @class_f16(
 ; VI-SDAG-NEXT:    s_load_dwordx2 s[8:9], s[8:9], 0x10
 ; VI-SDAG-NEXT:    s_mov_b32 s7, 0x1100f000
 ; VI-SDAG-NEXT:    s_mov_b32 s6, -1
-; VI-SDAG-NEXT:    s_mov_b32 s10, s6
-; VI-SDAG-NEXT:    s_mov_b32 s11, s7
+; VI-SDAG-NEXT:    s_mov_b32 s14, s6
 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-SDAG-NEXT:    s_mov_b32 s12, s2
 ; VI-SDAG-NEXT:    s_mov_b32 s13, s3
-; VI-SDAG-NEXT:    s_mov_b32 s14, s6
 ; VI-SDAG-NEXT:    s_mov_b32 s15, s7
-; VI-SDAG-NEXT:    buffer_load_dword v0, off, s[8:11], 0
-; VI-SDAG-NEXT:    buffer_load_ushort v1, off, s[12:15], 0
+; VI-SDAG-NEXT:    s_mov_b32 s10, s6
+; VI-SDAG-NEXT:    s_mov_b32 s11, s7
+; VI-SDAG-NEXT:    buffer_load_ushort v0, off, s[12:15], 0
+; VI-SDAG-NEXT:    buffer_load_dword v1, off, s[8:11], 0
 ; VI-SDAG-NEXT:    s_mov_b32 s4, s0
 ; VI-SDAG-NEXT:    s_mov_b32 s5, s1
 ; VI-SDAG-NEXT:    s_waitcnt vmcnt(0)
-; VI-SDAG-NEXT:    v_cmp_class_f16_e32 vcc, v1, v0
-; VI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-SDAG-NEXT:    v_cmp_class_f16_e32 vcc, v0, v1
+; VI-SDAG-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-SDAG-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-SDAG-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-SDAG-NEXT:    s_endpgm
 ;
@@ -73,7 +75,9 @@ define amdgpu_kernel void @class_f16_fabs(
 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-SDAG-NEXT:    v_cmp_class_f16_e64 s[4:5], |s5|, v0
-; VI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; VI-SDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; VI-SDAG-NEXT:    s_endpgm
 ;
@@ -116,7 +120,9 @@ define amdgpu_kernel void @class_f16_fneg(
 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-SDAG-NEXT:    v_cmp_class_f16_e64 s[4:5], -s5, v0
-; VI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; VI-SDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; VI-SDAG-NEXT:    s_endpgm
 ;
@@ -159,7 +165,9 @@ define amdgpu_kernel void @class_f16_fabs_fneg(
 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-SDAG-NEXT:    v_cmp_class_f16_e64 s[4:5], -|s5|, v0
-; VI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; VI-SDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; VI-SDAG-NEXT:    s_endpgm
 ;
@@ -201,7 +209,9 @@ define amdgpu_kernel void @class_f16_1(
 ; VI-SDAG-NEXT:    s_mov_b32 s2, -1
 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-SDAG-NEXT:    v_cmp_class_f16_e64 s[4:5], s4, 1
-; VI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; VI-SDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; VI-SDAG-NEXT:    s_endpgm
 ;
@@ -236,7 +246,9 @@ define amdgpu_kernel void @class_f16_64(
 ; VI-SDAG-NEXT:    s_mov_b32 s2, -1
 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-SDAG-NEXT:    v_cmp_class_f16_e64 s[4:5], s4, 64
-; VI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; VI-SDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; VI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; VI-SDAG-NEXT:    s_endpgm
 ;
@@ -272,7 +284,9 @@ define amdgpu_kernel void @class_f16_full_mask(
 ; VI-SDAG-NEXT:    s_mov_b32 s2, -1
 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-SDAG-NEXT:    v_cmp_class_f16_e32 vcc, s4, v0
-; VI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-SDAG-NEXT:    s_and_b64 s[4:5], vcc, exec
+; VI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; VI-SDAG-NEXT:    s_endpgm
 ;
@@ -309,7 +323,9 @@ define amdgpu_kernel void @class_f16_nine_bit_mask(
 ; VI-SDAG-NEXT:    s_mov_b32 s2, -1
 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-SDAG-NEXT:    v_cmp_class_f16_e32 vcc, s4, v0
-; VI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; VI-SDAG-NEXT:    s_and_b64 s[4:5], vcc, exec
+; VI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; VI-SDAG-NEXT:    s_endpgm
 ;

diff  --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.class.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.class.ll
index e3c29d3b0d943..9f91d38dd0ead 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.class.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.class.ll
@@ -19,7 +19,9 @@ define amdgpu_kernel void @test_class_f32(ptr addrspace(1) %out, [8 x i32], floa
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s6
 ; SI-SDAG-NEXT:    v_cmp_class_f32_e32 vcc, s7, v0
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-SDAG-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-SDAG-NEXT:    s_endpgm
 ;
@@ -55,7 +57,9 @@ define amdgpu_kernel void @test_class_fabs_f32(ptr addrspace(1) %out, [8 x i32],
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s6
 ; SI-SDAG-NEXT:    v_cmp_class_f32_e64 s[4:5], |s7|, v0
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; SI-SDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-SDAG-NEXT:    s_endpgm
 ;
@@ -92,7 +96,9 @@ define amdgpu_kernel void @test_class_fneg_f32(ptr addrspace(1) %out, [8 x i32],
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s6
 ; SI-SDAG-NEXT:    v_cmp_class_f32_e64 s[4:5], -s7, v0
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; SI-SDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-SDAG-NEXT:    s_endpgm
 ;
@@ -129,7 +135,9 @@ define amdgpu_kernel void @test_class_fneg_fabs_f32(ptr addrspace(1) %out, [8 x
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s6
 ; SI-SDAG-NEXT:    v_cmp_class_f32_e64 s[4:5], -|s7|, v0
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; SI-SDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-SDAG-NEXT:    s_endpgm
 ;
@@ -165,7 +173,9 @@ define amdgpu_kernel void @test_class_1_f32(ptr addrspace(1) %out, float %a) #0
 ; SI-SDAG-NEXT:    s_mov_b32 s2, -1
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-SDAG-NEXT:    v_cmp_class_f32_e64 s[4:5], s6, 1
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; SI-SDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-SDAG-NEXT:    s_endpgm
 ;
@@ -197,7 +207,9 @@ define amdgpu_kernel void @test_class_64_f32(ptr addrspace(1) %out, float %a) #0
 ; SI-SDAG-NEXT:    s_mov_b32 s2, -1
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-SDAG-NEXT:    v_cmp_class_f32_e64 s[4:5], s6, 64
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; SI-SDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-SDAG-NEXT:    s_endpgm
 ;
@@ -231,7 +243,9 @@ define amdgpu_kernel void @test_class_full_mask_f32(ptr addrspace(1) %out, float
 ; SI-SDAG-NEXT:    s_mov_b32 s2, -1
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-SDAG-NEXT:    v_cmp_class_f32_e32 vcc, s6, v0
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-SDAG-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-SDAG-NEXT:    s_endpgm
 ;
@@ -265,7 +279,9 @@ define amdgpu_kernel void @test_class_9bit_mask_f32(ptr addrspace(1) %out, float
 ; SI-SDAG-NEXT:    s_mov_b32 s2, -1
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-SDAG-NEXT:    v_cmp_class_f32_e32 vcc, s6, v0
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-SDAG-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-SDAG-NEXT:    s_endpgm
 ;
@@ -432,15 +448,17 @@ define amdgpu_kernel void @test_class_lit_constant_dynamic_mask_f32(ptr addrspac
 define amdgpu_kernel void @test_class_f64(ptr addrspace(1) %out, [8 x i32], double %a, [8 x i32], i32 %b) #0 {
 ; SI-SDAG-LABEL: test_class_f64:
 ; SI-SDAG:       ; %bb.0:
-; SI-SDAG-NEXT:    s_load_dword s8, s[4:5], 0x1d
+; SI-SDAG-NEXT:    s_load_dword s2, s[4:5], 0x1d
 ; SI-SDAG-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x13
 ; SI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9
 ; SI-SDAG-NEXT:    s_mov_b32 s3, 0xf000
-; SI-SDAG-NEXT:    s_mov_b32 s2, -1
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
-; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s8
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s2
 ; SI-SDAG-NEXT:    v_cmp_class_f64_e32 vcc, s[6:7], v0
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-SDAG-NEXT:    s_mov_b32 s2, -1
+; SI-SDAG-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-SDAG-NEXT:    s_endpgm
 ;
@@ -468,15 +486,17 @@ define amdgpu_kernel void @test_class_f64(ptr addrspace(1) %out, [8 x i32], doub
 define amdgpu_kernel void @test_class_fabs_f64(ptr addrspace(1) %out, [8 x i32], double %a, [8 x i32], i32 %b) #0 {
 ; SI-SDAG-LABEL: test_class_fabs_f64:
 ; SI-SDAG:       ; %bb.0:
-; SI-SDAG-NEXT:    s_load_dword s8, s[4:5], 0x1d
+; SI-SDAG-NEXT:    s_load_dword s2, s[4:5], 0x1d
 ; SI-SDAG-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x13
 ; SI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9
 ; SI-SDAG-NEXT:    s_mov_b32 s3, 0xf000
-; SI-SDAG-NEXT:    s_mov_b32 s2, -1
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
-; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s8
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s2
 ; SI-SDAG-NEXT:    v_cmp_class_f64_e64 s[4:5], |s[6:7]|, v0
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; SI-SDAG-NEXT:    s_mov_b32 s2, -1
+; SI-SDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-SDAG-NEXT:    s_endpgm
 ;
@@ -505,15 +525,17 @@ define amdgpu_kernel void @test_class_fabs_f64(ptr addrspace(1) %out, [8 x i32],
 define amdgpu_kernel void @test_class_fneg_f64(ptr addrspace(1) %out, [8 x i32], double %a, [8 x i32], i32 %b) #0 {
 ; SI-SDAG-LABEL: test_class_fneg_f64:
 ; SI-SDAG:       ; %bb.0:
-; SI-SDAG-NEXT:    s_load_dword s8, s[4:5], 0x1d
+; SI-SDAG-NEXT:    s_load_dword s2, s[4:5], 0x1d
 ; SI-SDAG-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x13
 ; SI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9
 ; SI-SDAG-NEXT:    s_mov_b32 s3, 0xf000
-; SI-SDAG-NEXT:    s_mov_b32 s2, -1
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
-; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s8
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s2
 ; SI-SDAG-NEXT:    v_cmp_class_f64_e64 s[4:5], -s[6:7], v0
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; SI-SDAG-NEXT:    s_mov_b32 s2, -1
+; SI-SDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-SDAG-NEXT:    s_endpgm
 ;
@@ -543,15 +565,17 @@ define amdgpu_kernel void @test_class_fneg_f64(ptr addrspace(1) %out, [8 x i32],
 define amdgpu_kernel void @test_class_fneg_fabs_f64(ptr addrspace(1) %out, [8 x i32], double %a, [8 x i32], i32 %b) #0 {
 ; SI-SDAG-LABEL: test_class_fneg_fabs_f64:
 ; SI-SDAG:       ; %bb.0:
-; SI-SDAG-NEXT:    s_load_dword s8, s[4:5], 0x1d
+; SI-SDAG-NEXT:    s_load_dword s2, s[4:5], 0x1d
 ; SI-SDAG-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x13
 ; SI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9
 ; SI-SDAG-NEXT:    s_mov_b32 s3, 0xf000
-; SI-SDAG-NEXT:    s_mov_b32 s2, -1
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
-; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s8
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s2
 ; SI-SDAG-NEXT:    v_cmp_class_f64_e64 s[4:5], -|s[6:7]|, v0
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; SI-SDAG-NEXT:    s_mov_b32 s2, -1
+; SI-SDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-SDAG-NEXT:    s_endpgm
 ;
@@ -586,10 +610,12 @@ define amdgpu_kernel void @test_class_1_f64(ptr addrspace(1) %out, double %a) #0
 ; SI-SDAG-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-SDAG-NEXT:    s_mov_b32 s6, -1
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; SI-SDAG-NEXT:    v_cmp_class_f64_e64 s[2:3], s[2:3], 1
 ; SI-SDAG-NEXT:    s_mov_b32 s4, s0
 ; SI-SDAG-NEXT:    s_mov_b32 s5, s1
-; SI-SDAG-NEXT:    v_cmp_class_f64_e64 s[0:1], s[2:3], 1
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[0:1]
+; SI-SDAG-NEXT:    s_and_b64 s[0:1], s[2:3], exec
+; SI-SDAG-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-SDAG-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-SDAG-NEXT:    s_endpgm
 ;
@@ -618,10 +644,12 @@ define amdgpu_kernel void @test_class_64_f64(ptr addrspace(1) %out, double %a) #
 ; SI-SDAG-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-SDAG-NEXT:    s_mov_b32 s6, -1
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; SI-SDAG-NEXT:    v_cmp_class_f64_e64 s[2:3], s[2:3], 64
 ; SI-SDAG-NEXT:    s_mov_b32 s4, s0
 ; SI-SDAG-NEXT:    s_mov_b32 s5, s1
-; SI-SDAG-NEXT:    v_cmp_class_f64_e64 s[0:1], s[2:3], 64
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[0:1]
+; SI-SDAG-NEXT:    s_and_b64 s[0:1], s[2:3], exec
+; SI-SDAG-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-SDAG-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-SDAG-NEXT:    s_endpgm
 ;
@@ -654,7 +682,9 @@ define amdgpu_kernel void @test_class_full_mask_f64(ptr addrspace(1) %out, [8 x
 ; SI-SDAG-NEXT:    s_mov_b32 s2, -1
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-SDAG-NEXT:    v_cmp_class_f64_e32 vcc, s[6:7], v0
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc
+; SI-SDAG-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-SDAG-NEXT:    s_endpgm
 ;
@@ -684,8 +714,7 @@ define amdgpu_kernel void @v_test_class_full_mask_f64(ptr addrspace(1) %out, ptr
 ; SI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9
 ; SI-SDAG-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-SDAG-NEXT:    s_mov_b32 s6, -1
-; SI-SDAG-NEXT:    v_mov_b32_e32 v4, 0
-; SI-SDAG-NEXT:    v_lshlrev_b32_e32 v3, 2, v0
+; SI-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
 ; SI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-SDAG-NEXT:    s_mov_b32 s4, s2
 ; SI-SDAG-NEXT:    s_mov_b32 s5, s3
@@ -695,8 +724,11 @@ define amdgpu_kernel void @v_test_class_full_mask_f64(ptr addrspace(1) %out, ptr
 ; SI-SDAG-NEXT:    s_mov_b32 s3, s7
 ; SI-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; SI-SDAG-NEXT:    v_cmp_class_f64_e64 s[4:5], v[1:2], s4
-; SI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
-; SI-SDAG-NEXT:    buffer_store_dword v0, v[3:4], s[0:3], 0 addr64
+; SI-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; SI-SDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; SI-SDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; SI-SDAG-NEXT:    v_mov_b32_e32 v2, s4
+; SI-SDAG-NEXT:    buffer_store_dword v2, v[0:1], s[0:3], 0 addr64
 ; SI-SDAG-NEXT:    s_endpgm
 ;
 ; SI-GISEL-LABEL: v_test_class_full_mask_f64:

diff  --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.is.private.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.is.private.ll
index 007edb3b8bcab..a6264e09eeff3 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.is.private.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.is.private.ll
@@ -139,9 +139,9 @@ define amdgpu_kernel void @is_private_sgpr(ptr %ptr) {
 ; SI-NEXT:    s_load_dword s1, s[8:9], 0x32
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_cmp_eq_u32 s0, s1
-; SI-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; SI-NEXT:    s_cbranch_vccnz .LBB1_2
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s0, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %bb0
 ; SI-NEXT:    s_mov_b32 s3, 0x100f000
 ; SI-NEXT:    s_mov_b32 s2, -1
@@ -160,9 +160,9 @@ define amdgpu_kernel void @is_private_sgpr(ptr %ptr) {
 ; CI-SDAG-NEXT:    s_mov_b32 flat_scratch_lo, s13
 ; CI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; CI-SDAG-NEXT:    s_cmp_eq_u32 s0, s1
-; CI-SDAG-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CI-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; CI-SDAG-NEXT:    s_cbranch_vccnz .LBB1_2
+; CI-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
+; CI-SDAG-NEXT:    s_cmp_lg_u32 s0, 1
+; CI-SDAG-NEXT:    s_cbranch_scc1 .LBB1_2
 ; CI-SDAG-NEXT:  ; %bb.1: ; %bb0
 ; CI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; CI-SDAG-NEXT:    flat_store_dword v[0:1], v0
@@ -176,9 +176,9 @@ define amdgpu_kernel void @is_private_sgpr(ptr %ptr) {
 ; GFX9-SDAG-NEXT:    s_load_dword s0, s[8:9], 0x4
 ; GFX9-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-SDAG-NEXT:    s_cmp_eq_u32 s0, s1
-; GFX9-SDAG-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX9-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; GFX9-SDAG-NEXT:    s_cbranch_vccnz .LBB1_2
+; GFX9-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-SDAG-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX9-SDAG-NEXT:    s_cbranch_scc1 .LBB1_2
 ; GFX9-SDAG-NEXT:  ; %bb.1: ; %bb0
 ; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX9-SDAG-NEXT:    global_store_dword v[0:1], v0, off
@@ -194,9 +194,9 @@ define amdgpu_kernel void @is_private_sgpr(ptr %ptr) {
 ; GFX1250-SDAG-NEXT:    s_xor_b32 s0, s0, src_flat_scratch_base_hi
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX1250-SDAG-NEXT:    s_cmp_lt_u32 s0, 0x4000000
-; GFX1250-SDAG-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX1250-SDAG-NEXT:    s_cbranch_vccnz .LBB1_2
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc1 .LBB1_2
 ; GFX1250-SDAG-NEXT:  ; %bb.1: ; %bb0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX1250-SDAG-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS

diff  --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.is.shared.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.is.shared.ll
index 8ff7c25fc93dc..1799f1c2d9556 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.is.shared.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.is.shared.ll
@@ -205,9 +205,9 @@ define amdgpu_kernel void @is_local_sgpr(ptr %ptr) {
 ; SI-NEXT:    s_load_dword s1, s[8:9], 0x33
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_cmp_eq_u32 s0, s1
-; SI-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; SI-NEXT:    s_cbranch_vccnz .LBB1_2
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s0, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %bb0
 ; SI-NEXT:    s_mov_b32 s3, 0x100f000
 ; SI-NEXT:    s_mov_b32 s2, -1
@@ -226,9 +226,9 @@ define amdgpu_kernel void @is_local_sgpr(ptr %ptr) {
 ; CI-SDAG-NEXT:    s_mov_b32 flat_scratch_lo, s13
 ; CI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; CI-SDAG-NEXT:    s_cmp_eq_u32 s0, s1
-; CI-SDAG-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CI-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; CI-SDAG-NEXT:    s_cbranch_vccnz .LBB1_2
+; CI-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
+; CI-SDAG-NEXT:    s_cmp_lg_u32 s0, 1
+; CI-SDAG-NEXT:    s_cbranch_scc1 .LBB1_2
 ; CI-SDAG-NEXT:  ; %bb.1: ; %bb0
 ; CI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; CI-SDAG-NEXT:    flat_store_dword v[0:1], v0
@@ -242,9 +242,9 @@ define amdgpu_kernel void @is_local_sgpr(ptr %ptr) {
 ; GFX9-SDAG-NEXT:    s_load_dword s0, s[8:9], 0x4
 ; GFX9-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-SDAG-NEXT:    s_cmp_eq_u32 s0, s1
-; GFX9-SDAG-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX9-SDAG-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; GFX9-SDAG-NEXT:    s_cbranch_vccnz .LBB1_2
+; GFX9-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-SDAG-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX9-SDAG-NEXT:    s_cbranch_scc1 .LBB1_2
 ; GFX9-SDAG-NEXT:  ; %bb.1: ; %bb0
 ; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX9-SDAG-NEXT:    global_store_dword v[0:1], v0, off
@@ -259,10 +259,10 @@ define amdgpu_kernel void @is_local_sgpr(ptr %ptr) {
 ; GFX1250-SDAG-NEXT:    s_load_b32 s0, s[4:5], 0x4 nv
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_cmp_eq_u32 s0, s1
-; GFX1250-SDAG-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX1250-SDAG-NEXT:    s_cbranch_vccnz .LBB1_2
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc1 .LBB1_2
 ; GFX1250-SDAG-NEXT:  ; %bb.1: ; %bb0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX1250-SDAG-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS

diff  --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.kill.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.kill.ll
index 6dc10905b5f25..319aebb1a180f 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.kill.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.kill.ll
@@ -1580,13 +1580,15 @@ define amdgpu_ps void @kill_with_loop_exit(float inreg %inp0, float inreg %inp1,
 ; SI-NEXT:    s_cbranch_vccnz .LBB25_5
 ; SI-NEXT:  ; %bb.1: ; %.preheader1.preheader
 ; SI-NEXT:    s_mov_b64 s[2:3], exec
-; SI-NEXT:    v_mov_b32_e32 v0, 0x3fc00000
 ; SI-NEXT:    v_cmp_ngt_f32_e64 s[0:1], s6, 0
+; SI-NEXT:    v_mov_b32_e32 v0, 0x3fc00000
 ; SI-NEXT:  .LBB25_2: ; %bb
 ; SI-NEXT:    ; =>This Inner Loop Header: Depth=1
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
+; SI-NEXT:    s_and_b64 s[4:5], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
 ; SI-NEXT:    v_add_f32_e32 v0, 0x3e800000, v0
-; SI-NEXT:    s_cbranch_vccnz .LBB25_2
+; SI-NEXT:    s_cbranch_scc1 .LBB25_2
 ; SI-NEXT:  ; %bb.3: ; %bb33
 ; SI-NEXT:    s_andn2_b64 s[2:3], s[2:3], exec
 ; SI-NEXT:    s_cbranch_scc0 .LBB25_6
@@ -1609,14 +1611,16 @@ define amdgpu_ps void @kill_with_loop_exit(float inreg %inp0, float inreg %inp1,
 ; GFX10-NEXT:    s_and_b64 vcc, exec, s[0:1]
 ; GFX10-NEXT:    s_cbranch_vccnz .LBB25_5
 ; GFX10-NEXT:  ; %bb.1: ; %.preheader1.preheader
-; GFX10-NEXT:    v_mov_b32_e32 v0, 0x3fc00000
 ; GFX10-NEXT:    v_cmp_ngt_f32_e64 s[0:1], s6, 0
+; GFX10-NEXT:    v_mov_b32_e32 v0, 0x3fc00000
 ; GFX10-NEXT:    s_mov_b64 s[2:3], exec
 ; GFX10-NEXT:  .LBB25_2: ; %bb
 ; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-NEXT:    v_add_f32_e32 v0, 0x3e800000, v0
-; GFX10-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; GFX10-NEXT:    s_cbranch_vccnz .LBB25_2
+; GFX10-NEXT:    s_and_b64 s[4:5], s[0:1], exec
+; GFX10-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB25_2
 ; GFX10-NEXT:  ; %bb.3: ; %bb33
 ; GFX10-NEXT:    s_andn2_b64 s[2:3], s[2:3], exec
 ; GFX10-NEXT:    s_cbranch_scc0 .LBB25_6
@@ -1639,14 +1643,16 @@ define amdgpu_ps void @kill_with_loop_exit(float inreg %inp0, float inreg %inp1,
 ; GFX11-NEXT:    s_and_b64 vcc, exec, s[0:1]
 ; GFX11-NEXT:    s_cbranch_vccnz .LBB25_5
 ; GFX11-NEXT:  ; %bb.1: ; %.preheader1.preheader
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0x3fc00000
 ; GFX11-NEXT:    v_cmp_ngt_f32_e64 s[0:1], s6, 0
+; GFX11-NEXT:    v_mov_b32_e32 v0, 0x3fc00000
 ; GFX11-NEXT:    s_mov_b64 s[2:3], exec
 ; GFX11-NEXT:  .LBB25_2: ; %bb
 ; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX11-NEXT:    v_add_f32_e32 v0, 0x3e800000, v0
-; GFX11-NEXT:    s_and_not1_b64 vcc, exec, s[0:1]
-; GFX11-NEXT:    s_cbranch_vccnz .LBB25_2
+; GFX11-NEXT:    s_and_b64 s[4:5], s[0:1], exec
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB25_2
 ; GFX11-NEXT:  ; %bb.3: ; %bb33
 ; GFX11-NEXT:    s_and_not1_b64 s[2:3], s[2:3], exec
 ; GFX11-NEXT:    s_cbranch_scc0 .LBB25_6
@@ -1677,9 +1683,11 @@ define amdgpu_ps void @kill_with_loop_exit(float inreg %inp0, float inreg %inp1,
 ; GFX12-SDAG-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GFX12-SDAG-NEXT:  .LBB25_2: ; %bb
 ; GFX12-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX12-SDAG-NEXT:    s_and_b64 s[6:7], s[0:1], exec
+; GFX12-SDAG-NEXT:    s_cselect_b32 s5, 1, 0
 ; GFX12-SDAG-NEXT:    s_add_f32 s4, s4, 0x3e800000
-; GFX12-SDAG-NEXT:    s_and_not1_b64 vcc, exec, s[0:1]
-; GFX12-SDAG-NEXT:    s_cbranch_vccnz .LBB25_2
+; GFX12-SDAG-NEXT:    s_cmp_lg_u32 s5, 1
+; GFX12-SDAG-NEXT:    s_cbranch_scc1 .LBB25_2
 ; GFX12-SDAG-NEXT:  ; %bb.3: ; %bb33
 ; GFX12-SDAG-NEXT:    s_and_not1_b64 s[2:3], s[2:3], exec
 ; GFX12-SDAG-NEXT:    s_cbranch_scc0 .LBB25_6

diff  --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.quadmask.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.quadmask.ll
index af7fe95832fcf..58d90c4777a6d 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.quadmask.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.quadmask.ll
@@ -194,14 +194,14 @@ define amdgpu_kernel void @test_scc_quadmask_32(i32 %val0, i32 %val1, ptr addrsp
 ; GFX11-SDAG-LABEL: test_scc_quadmask_32:
 ; GFX11-SDAG:       ; %bb.0:
 ; GFX11-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-SDAG-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, 0
+; GFX11-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
 ; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-SDAG-NEXT:    s_and_b32 s0, s0, 1
 ; GFX11-SDAG-NEXT:    s_quadmask_b32 s1, s1
 ; GFX11-SDAG-NEXT:    s_cmp_eq_u32 s0, 0
-; GFX11-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v3, s1
-; GFX11-SDAG-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s0
+; GFX11-SDAG-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v3, s1
+; GFX11-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-SDAG-NEXT:    v_mov_b32_e32 v4, s0
 ; GFX11-SDAG-NEXT:    global_store_b32 v2, v3, s[2:3]
 ; GFX11-SDAG-NEXT:    global_store_b32 v[0:1], v4, off
 ; GFX11-SDAG-NEXT:    s_endpgm
@@ -238,17 +238,17 @@ define amdgpu_kernel void @test_scc_quadmask_64(i32 %val0, i64 %val1, ptr addrsp
 ; GFX11-SDAG-NEXT:    s_clause 0x1
 ; GFX11-SDAG-NEXT:    s_load_b32 s6, s[4:5], 0x24
 ; GFX11-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2c
-; GFX11-SDAG-NEXT:    v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v1, 0
+; GFX11-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-SDAG-NEXT:    s_and_b32 s4, s6, 1
 ; GFX11-SDAG-NEXT:    s_quadmask_b64 s[0:1], s[0:1]
 ; GFX11-SDAG-NEXT:    s_cmp_eq_u32 s4, 0
-; GFX11-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v3, s1
-; GFX11-SDAG-NEXT:    v_mov_b32_e32 v2, s0
-; GFX11-SDAG-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s0
-; GFX11-SDAG-NEXT:    global_store_b64 v4, v[2:3], s[2:3]
-; GFX11-SDAG-NEXT:    global_store_b32 v[0:1], v5, off
+; GFX11-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX11-SDAG-NEXT:    v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v1, s1
+; GFX11-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-SDAG-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v5, s0
+; GFX11-SDAG-NEXT:    global_store_b64 v4, v[0:1], s[2:3]
+; GFX11-SDAG-NEXT:    global_store_b32 v[2:3], v5, off
 ; GFX11-SDAG-NEXT:    s_endpgm
   %and = and i32 %val0, 1
   %result = call i64 @llvm.amdgcn.s.quadmask.i64(i64 %val1) nounwind readnone

diff  --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.barrier.signal.isfirst.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.barrier.signal.isfirst.ll
index d92255e1bb1b7..42196488ea4e0 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.barrier.signal.isfirst.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.barrier.signal.isfirst.ll
@@ -13,9 +13,9 @@ define i1 @func1() {
 ; GFX12-SDAG-NEXT:    s_cmp_eq_u32 0, 0
 ; GFX12-SDAG-NEXT:    s_barrier_signal_isfirst -1
 ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-SDAG-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX12-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX12-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
+; GFX12-SDAG-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX12-GISEL-LABEL: func1:
@@ -47,9 +47,9 @@ define i1 @signal_isfirst_same_barrier_wait() {
 ; GFX12-SDAG-NEXT:    s_cmp_eq_u32 0, 0
 ; GFX12-SDAG-NEXT:    s_barrier_signal_isfirst -1
 ; GFX12-SDAG-NEXT:    s_barrier_wait -1
-; GFX12-SDAG-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX12-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX12-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
+; GFX12-SDAG-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX12-GISEL-LABEL: signal_isfirst_same_barrier_wait:
@@ -83,9 +83,9 @@ define i1 @signal_isfirst_
diff erent_barrier_wait() {
 ; GFX12-SDAG-NEXT:    s_barrier_signal_isfirst -1
 ; GFX12-SDAG-NEXT:    s_barrier_wait 0
 ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-SDAG-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX12-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX12-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
+; GFX12-SDAG-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX12-GISEL-LABEL: signal_isfirst_
diff erent_barrier_wait:

diff  --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.set.inactive.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.set.inactive.ll
index ce03681f2eca8..219eda3f1c23d 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.set.inactive.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.set.inactive.ll
@@ -102,22 +102,23 @@ define amdgpu_kernel void @set_inactive_scc(ptr addrspace(1) %out, i32 %in, <4 x
 ; GCN-NEXT:    s_cmp_lg_u32 s7, 56
 ; GCN-NEXT:    v_mov_b32_e32 v1, v0
 ; GCN-NEXT:    s_mov_b64 s[2:3], -1
-; GCN-NEXT:    s_cbranch_scc1 .LBB4_3
-; GCN-NEXT:  ; %bb.1: ; %Flow
-; GCN-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN-NEXT:    s_cbranch_vccz .LBB4_4
-; GCN-NEXT:  .LBB4_2: ; %.exit
-; GCN-NEXT:    s_endpgm
-; GCN-NEXT:  .LBB4_3: ; %.one
+; GCN-NEXT:    s_cbranch_scc0 .LBB4_2
+; GCN-NEXT:  ; %bb.1: ; %.one
 ; GCN-NEXT:    v_add_u32_e32 v2, vcc, 1, v1
 ; GCN-NEXT:    s_mov_b32 s3, 0xf000
 ; GCN-NEXT:    s_mov_b32 s2, -1
 ; GCN-NEXT:    buffer_store_dword v2, off, s[0:3], 0
-; GCN-NEXT:    s_cbranch_execnz .LBB4_2
-; GCN-NEXT:  .LBB4_4: ; %.zero
+; GCN-NEXT:    s_mov_b64 s[2:3], 0
+; GCN-NEXT:  .LBB4_2: ; %Flow
+; GCN-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB4_4
+; GCN-NEXT:  ; %bb.3: ; %.zero
 ; GCN-NEXT:    s_mov_b32 s3, 0xf000
 ; GCN-NEXT:    s_mov_b32 s2, -1
 ; GCN-NEXT:    buffer_store_dword v1, off, s[0:3], 0
+; GCN-NEXT:  .LBB4_4: ; %.exit
 ; GCN-NEXT:    s_endpgm
   %val = call i32 @llvm.amdgcn.s.buffer.load.i32(<4 x i32> %desc, i32 0, i32 0)
   %cmp = icmp eq i32 %val, 56

diff  --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.tensor.load.store.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.tensor.load.store.ll
index 9f30255a07095..0ae3784e87361 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.tensor.load.store.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.tensor.load.store.ll
@@ -399,40 +399,41 @@ define void @tensor_or_async_lds_diamonds(i32 inreg %cond1, i32 inreg %cond2, <4
 ; GFX1250-SDAG-NEXT:    s_mov_b32 s12, s2
 ; GFX1250-SDAG-NEXT:    s_cmp_eq_u32 s0, 0
 ; GFX1250-SDAG-NEXT:    s_mov_b32 s0, -1
-; GFX1250-SDAG-NEXT:    s_cbranch_scc1 .LBB14_6
-; GFX1250-SDAG-NEXT:  ; %bb.1: ; %Flow1
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX1250-SDAG-NEXT:    s_cbranch_vccnz .LBB14_3
-; GFX1250-SDAG-NEXT:  .LBB14_2: ; %t1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc0 .LBB14_2
+; GFX1250-SDAG-NEXT:  ; %bb.1: ; %g1
+; GFX1250-SDAG-NEXT:    global_load_async_to_lds_b32 v2, v[0:1], off
+; GFX1250-SDAG-NEXT:    s_mov_b32 s0, 0
+; GFX1250-SDAG-NEXT:    ; asyncmark
+; GFX1250-SDAG-NEXT:  .LBB14_2: ; %Flow1
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc1 .LBB14_4
+; GFX1250-SDAG-NEXT:  ; %bb.3: ; %t1
 ; GFX1250-SDAG-NEXT:    tensor_load_to_lds s[12:15], s[4:11]
 ; GFX1250-SDAG-NEXT:    ; asyncmark
-; GFX1250-SDAG-NEXT:  .LBB14_3: ; %merge1
+; GFX1250-SDAG-NEXT:  .LBB14_4: ; %merge1
 ; GFX1250-SDAG-NEXT:    s_cmp_eq_u32 s1, 0
 ; GFX1250-SDAG-NEXT:    s_mov_b32 s0, -1
-; GFX1250-SDAG-NEXT:    s_cbranch_scc1 .LBB14_7
-; GFX1250-SDAG-NEXT:  ; %bb.4: ; %Flow
-; GFX1250-SDAG-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX1250-SDAG-NEXT:    s_cbranch_vccz .LBB14_8
-; GFX1250-SDAG-NEXT:  .LBB14_5: ; %merge2
-; GFX1250-SDAG-NEXT:    ; wait_asyncmark(1)
-; GFX1250-SDAG-NEXT:    s_wait_asynccnt 0x0
-; GFX1250-SDAG-NEXT:    s_wait_tensorcnt 0x0
-; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
-; GFX1250-SDAG-NEXT:  .LBB14_6: ; %g1
-; GFX1250-SDAG-NEXT:    global_load_async_to_lds_b32 v2, v[0:1], off
-; GFX1250-SDAG-NEXT:    ; asyncmark
-; GFX1250-SDAG-NEXT:    s_cbranch_execz .LBB14_2
-; GFX1250-SDAG-NEXT:    s_branch .LBB14_3
-; GFX1250-SDAG-NEXT:  .LBB14_7: ; %g2
+; GFX1250-SDAG-NEXT:    s_cbranch_scc0 .LBB14_6
+; GFX1250-SDAG-NEXT:  ; %bb.5: ; %g2
 ; GFX1250-SDAG-NEXT:    global_load_async_to_lds_b32 v2, v[0:1], off
+; GFX1250-SDAG-NEXT:    s_mov_b32 s0, 0
 ; GFX1250-SDAG-NEXT:    ; asyncmark
-; GFX1250-SDAG-NEXT:    s_cbranch_execnz .LBB14_5
-; GFX1250-SDAG-NEXT:  .LBB14_8: ; %t2
+; GFX1250-SDAG-NEXT:  .LBB14_6: ; %Flow
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX1250-SDAG-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX1250-SDAG-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX1250-SDAG-NEXT:    s_cbranch_scc1 .LBB14_8
+; GFX1250-SDAG-NEXT:  ; %bb.7: ; %t2
 ; GFX1250-SDAG-NEXT:    tensor_load_to_lds s[12:15], s[4:11]
 ; GFX1250-SDAG-NEXT:    ; asyncmark
+; GFX1250-SDAG-NEXT:  .LBB14_8: ; %merge2
 ; GFX1250-SDAG-NEXT:    ; wait_asyncmark(1)
 ; GFX1250-SDAG-NEXT:    s_wait_asynccnt 0x0
-; GFX1250-SDAG-NEXT:    s_wait_tensorcnt 0x1
+; GFX1250-SDAG-NEXT:    s_wait_tensorcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX1250-GISEL-LABEL: tensor_or_async_lds_diamonds:

diff  --git a/llvm/test/CodeGen/AMDGPU/llvm.fma.f16.ll b/llvm/test/CodeGen/AMDGPU/llvm.fma.f16.ll
index e8bf198f89855..d341c328c5859 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.fma.f16.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.fma.f16.ll
@@ -43,19 +43,18 @@ define amdgpu_kernel void @fma_f16(
 ; SI-NEXT:    v_cvt_f64_f32_e32 v[4:5], v4
 ; SI-NEXT:    v_fma_f64 v[0:1], v[4:5], v[2:3], v[0:1]
 ; SI-NEXT:    v_readfirstlane_b32 s0, v1
-; SI-NEXT:    s_and_b32 s1, s0, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v0, s1, v0
+; SI-NEXT:    v_readfirstlane_b32 s1, v0
+; SI-NEXT:    s_and_b32 s3, s0, 0x1ff
+; SI-NEXT:    s_or_b32 s1, s3, s1
+; SI-NEXT:    s_cselect_b32 s1, 1, 0
 ; SI-NEXT:    s_lshr_b32 s3, s0, 8
 ; SI-NEXT:    s_bfe_u32 s4, s0, 0xb0014
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-NEXT:    s_and_b32 s1, s3, 0xffe
-; SI-NEXT:    s_sub_i32 s3, 0x3f1, s4
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-NEXT:    v_med3_i32 v1, s3, 0, 13
-; SI-NEXT:    v_readfirstlane_b32 s3, v0
-; SI-NEXT:    s_or_b32 s1, s1, s3
-; SI-NEXT:    v_readfirstlane_b32 s5, v1
+; SI-NEXT:    s_and_b32 s3, s3, 0xffe
+; SI-NEXT:    s_sub_i32 s5, 0x3f1, s4
+; SI-NEXT:    s_or_b32 s1, s3, s1
+; SI-NEXT:    v_med3_i32 v0, s5, 0, 13
 ; SI-NEXT:    s_or_b32 s3, s1, 0x1000
+; SI-NEXT:    v_readfirstlane_b32 s5, v0
 ; SI-NEXT:    s_lshr_b32 s6, s3, s5
 ; SI-NEXT:    s_lshl_b32 s5, s6, s5
 ; SI-NEXT:    s_cmp_lg_u32 s5, s3
@@ -183,19 +182,18 @@ define amdgpu_kernel void @fma_f16_imm_a(
 ; SI-NEXT:    v_cvt_f64_f32_e32 v[2:3], v2
 ; SI-NEXT:    v_fma_f64 v[0:1], v[2:3], s[4:5], v[0:1]
 ; SI-NEXT:    v_readfirstlane_b32 s4, v1
-; SI-NEXT:    s_and_b32 s5, s4, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v0, s5, v0
+; SI-NEXT:    v_readfirstlane_b32 s5, v0
+; SI-NEXT:    s_and_b32 s7, s4, 0x1ff
+; SI-NEXT:    s_or_b32 s5, s7, s5
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
 ; SI-NEXT:    s_lshr_b32 s7, s4, 8
 ; SI-NEXT:    s_bfe_u32 s8, s4, 0xb0014
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-NEXT:    s_and_b32 s5, s7, 0xffe
-; SI-NEXT:    s_sub_i32 s7, 0x3f1, s8
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-NEXT:    v_med3_i32 v1, s7, 0, 13
-; SI-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-NEXT:    s_or_b32 s5, s5, s7
-; SI-NEXT:    v_readfirstlane_b32 s9, v1
+; SI-NEXT:    s_and_b32 s7, s7, 0xffe
+; SI-NEXT:    s_sub_i32 s9, 0x3f1, s8
+; SI-NEXT:    s_or_b32 s5, s7, s5
+; SI-NEXT:    v_med3_i32 v0, s9, 0, 13
 ; SI-NEXT:    s_or_b32 s7, s5, 0x1000
+; SI-NEXT:    v_readfirstlane_b32 s9, v0
 ; SI-NEXT:    s_lshr_b32 s10, s7, s9
 ; SI-NEXT:    s_lshl_b32 s9, s10, s9
 ; SI-NEXT:    s_cmp_lg_u32 s9, s7
@@ -311,19 +309,18 @@ define amdgpu_kernel void @fma_f16_imm_b(
 ; SI-NEXT:    v_cvt_f64_f32_e32 v[2:3], v2
 ; SI-NEXT:    v_fma_f64 v[0:1], v[2:3], s[4:5], v[0:1]
 ; SI-NEXT:    v_readfirstlane_b32 s4, v1
-; SI-NEXT:    s_and_b32 s5, s4, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v0, s5, v0
+; SI-NEXT:    v_readfirstlane_b32 s5, v0
+; SI-NEXT:    s_and_b32 s7, s4, 0x1ff
+; SI-NEXT:    s_or_b32 s5, s7, s5
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
 ; SI-NEXT:    s_lshr_b32 s7, s4, 8
 ; SI-NEXT:    s_bfe_u32 s8, s4, 0xb0014
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-NEXT:    s_and_b32 s5, s7, 0xffe
-; SI-NEXT:    s_sub_i32 s7, 0x3f1, s8
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-NEXT:    v_med3_i32 v1, s7, 0, 13
-; SI-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-NEXT:    s_or_b32 s5, s5, s7
-; SI-NEXT:    v_readfirstlane_b32 s9, v1
+; SI-NEXT:    s_and_b32 s7, s7, 0xffe
+; SI-NEXT:    s_sub_i32 s9, 0x3f1, s8
+; SI-NEXT:    s_or_b32 s5, s7, s5
+; SI-NEXT:    v_med3_i32 v0, s9, 0, 13
 ; SI-NEXT:    s_or_b32 s7, s5, 0x1000
+; SI-NEXT:    v_readfirstlane_b32 s9, v0
 ; SI-NEXT:    s_lshr_b32 s10, s7, s9
 ; SI-NEXT:    s_lshl_b32 s9, s10, s9
 ; SI-NEXT:    s_cmp_lg_u32 s9, s7
@@ -439,19 +436,18 @@ define amdgpu_kernel void @fma_f16_imm_c(
 ; SI-NEXT:    v_cvt_f64_f32_e32 v[2:3], v2
 ; SI-NEXT:    v_fma_f64 v[0:1], v[2:3], v[0:1], s[4:5]
 ; SI-NEXT:    v_readfirstlane_b32 s4, v1
-; SI-NEXT:    s_and_b32 s5, s4, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v0, s5, v0
+; SI-NEXT:    v_readfirstlane_b32 s5, v0
+; SI-NEXT:    s_and_b32 s7, s4, 0x1ff
+; SI-NEXT:    s_or_b32 s5, s7, s5
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
 ; SI-NEXT:    s_lshr_b32 s7, s4, 8
 ; SI-NEXT:    s_bfe_u32 s8, s4, 0xb0014
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-NEXT:    s_and_b32 s5, s7, 0xffe
-; SI-NEXT:    s_sub_i32 s7, 0x3f1, s8
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-NEXT:    v_med3_i32 v1, s7, 0, 13
-; SI-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-NEXT:    s_or_b32 s5, s5, s7
-; SI-NEXT:    v_readfirstlane_b32 s9, v1
+; SI-NEXT:    s_and_b32 s7, s7, 0xffe
+; SI-NEXT:    s_sub_i32 s9, 0x3f1, s8
+; SI-NEXT:    s_or_b32 s5, s7, s5
+; SI-NEXT:    v_med3_i32 v0, s9, 0, 13
 ; SI-NEXT:    s_or_b32 s7, s5, 0x1000
+; SI-NEXT:    v_readfirstlane_b32 s9, v0
 ; SI-NEXT:    s_lshr_b32 s10, s7, s9
 ; SI-NEXT:    s_lshl_b32 s9, s10, s9
 ; SI-NEXT:    s_cmp_lg_u32 s9, s7
@@ -583,87 +579,85 @@ define amdgpu_kernel void @fma_v2f16(
 ; SI-NEXT:    v_cvt_f64_f32_e32 v[10:11], v10
 ; SI-NEXT:    v_fma_f64 v[0:1], v[4:5], v[2:3], v[0:1]
 ; SI-NEXT:    v_readfirstlane_b32 s0, v1
-; SI-NEXT:    s_and_b32 s1, s0, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v0, s1, v0
+; SI-NEXT:    v_readfirstlane_b32 s1, v0
+; SI-NEXT:    s_and_b32 s3, s0, 0x1ff
+; SI-NEXT:    s_or_b32 s1, s3, s1
+; SI-NEXT:    s_cselect_b32 s1, 1, 0
 ; SI-NEXT:    s_lshr_b32 s3, s0, 8
-; SI-NEXT:    s_bfe_u32 s4, s0, 0xb0014
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-NEXT:    s_and_b32 s1, s3, 0xffe
-; SI-NEXT:    s_sub_i32 s3, 0x3f1, s4
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-NEXT:    v_med3_i32 v1, s3, 0, 13
-; SI-NEXT:    v_readfirstlane_b32 s3, v0
-; SI-NEXT:    s_or_b32 s1, s1, s3
-; SI-NEXT:    v_readfirstlane_b32 s6, v1
+; SI-NEXT:    s_bfe_u32 s6, s0, 0xb0014
+; SI-NEXT:    s_and_b32 s3, s3, 0xffe
+; SI-NEXT:    s_sub_i32 s7, 0x3f1, s6
+; SI-NEXT:    s_or_b32 s1, s3, s1
+; SI-NEXT:    v_med3_i32 v0, s7, 0, 13
 ; SI-NEXT:    s_or_b32 s3, s1, 0x1000
-; SI-NEXT:    s_lshr_b32 s7, s3, s6
-; SI-NEXT:    s_lshl_b32 s6, s7, s6
-; SI-NEXT:    s_cmp_lg_u32 s6, s3
+; SI-NEXT:    v_readfirstlane_b32 s7, v0
+; SI-NEXT:    s_lshr_b32 s12, s3, s7
+; SI-NEXT:    s_lshl_b32 s7, s12, s7
+; SI-NEXT:    s_cmp_lg_u32 s7, s3
 ; SI-NEXT:    s_cselect_b32 s3, 1, 0
-; SI-NEXT:    s_addk_i32 s4, 0xfc10
-; SI-NEXT:    s_lshl_b32 s6, s4, 12
-; SI-NEXT:    s_or_b32 s3, s7, s3
-; SI-NEXT:    s_or_b32 s6, s1, s6
-; SI-NEXT:    s_cmp_lt_i32 s4, 1
-; SI-NEXT:    s_cselect_b32 s3, s3, s6
-; SI-NEXT:    s_and_b32 s6, s3, 7
-; SI-NEXT:    s_cmp_gt_i32 s6, 5
+; SI-NEXT:    s_addk_i32 s6, 0xfc10
+; SI-NEXT:    s_lshl_b32 s7, s6, 12
+; SI-NEXT:    s_or_b32 s3, s12, s3
+; SI-NEXT:    s_or_b32 s7, s1, s7
+; SI-NEXT:    s_cmp_lt_i32 s6, 1
+; SI-NEXT:    s_cselect_b32 s3, s3, s7
+; SI-NEXT:    s_and_b32 s7, s3, 7
+; SI-NEXT:    s_cmp_gt_i32 s7, 5
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_eq_u32 s7, 3
 ; SI-NEXT:    s_cselect_b32 s7, 1, 0
-; SI-NEXT:    s_cmp_eq_u32 s6, 3
-; SI-NEXT:    s_cselect_b32 s6, 1, 0
 ; SI-NEXT:    s_lshr_b32 s3, s3, 2
-; SI-NEXT:    s_or_b32 s6, s6, s7
-; SI-NEXT:    s_add_i32 s3, s3, s6
-; SI-NEXT:    v_fma_f64 v[2:3], v[10:11], v[8:9], v[6:7]
-; SI-NEXT:    s_cmp_lt_i32 s4, 31
+; SI-NEXT:    s_or_b32 s7, s7, s12
+; SI-NEXT:    s_add_i32 s3, s3, s7
+; SI-NEXT:    s_cmp_lt_i32 s6, 31
 ; SI-NEXT:    s_cselect_b32 s3, s3, 0x7c00
 ; SI-NEXT:    s_cmp_lg_u32 s1, 0
-; SI-NEXT:    v_readfirstlane_b32 s5, v3
 ; SI-NEXT:    s_cselect_b32 s1, s2, 0x7c00
-; SI-NEXT:    s_cmpk_eq_i32 s4, 0x40f
+; SI-NEXT:    s_cmpk_eq_i32 s6, 0x40f
+; SI-NEXT:    v_fma_f64 v[2:3], v[10:11], v[8:9], v[6:7]
 ; SI-NEXT:    s_cselect_b32 s1, s1, s3
-; SI-NEXT:    s_and_b32 s3, s5, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v0, s3, v2
 ; SI-NEXT:    s_lshr_b32 s0, s0, 16
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-NEXT:    s_lshr_b32 s4, s5, 8
-; SI-NEXT:    s_bfe_u32 s6, s5, 0xb0014
 ; SI-NEXT:    s_and_b32 s0, s0, 0x8000
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-NEXT:    s_and_b32 s3, s4, 0xffe
-; SI-NEXT:    s_sub_i32 s4, 0x3f1, s6
+; SI-NEXT:    v_readfirstlane_b32 s4, v3
 ; SI-NEXT:    s_or_b32 s0, s0, s1
-; SI-NEXT:    v_readfirstlane_b32 s1, v0
-; SI-NEXT:    v_med3_i32 v1, s4, 0, 13
+; SI-NEXT:    v_readfirstlane_b32 s5, v2
+; SI-NEXT:    s_and_b32 s3, s4, 0x1ff
+; SI-NEXT:    s_and_b32 s0, s0, 0xffff
+; SI-NEXT:    s_or_b32 s1, s3, s5
+; SI-NEXT:    s_cselect_b32 s1, 1, 0
+; SI-NEXT:    s_lshr_b32 s3, s4, 8
+; SI-NEXT:    s_bfe_u32 s5, s4, 0xb0014
+; SI-NEXT:    s_and_b32 s3, s3, 0xffe
+; SI-NEXT:    s_sub_i32 s6, 0x3f1, s5
 ; SI-NEXT:    s_or_b32 s1, s3, s1
-; SI-NEXT:    v_readfirstlane_b32 s4, v1
+; SI-NEXT:    v_med3_i32 v0, s6, 0, 13
 ; SI-NEXT:    s_or_b32 s3, s1, 0x1000
-; SI-NEXT:    s_lshr_b32 s7, s3, s4
-; SI-NEXT:    s_and_b32 s0, s0, 0xffff
-; SI-NEXT:    s_lshl_b32 s4, s7, s4
-; SI-NEXT:    s_cmp_lg_u32 s4, s3
+; SI-NEXT:    v_readfirstlane_b32 s6, v0
+; SI-NEXT:    s_lshr_b32 s7, s3, s6
+; SI-NEXT:    s_lshl_b32 s6, s7, s6
+; SI-NEXT:    s_cmp_lg_u32 s6, s3
 ; SI-NEXT:    s_cselect_b32 s3, 1, 0
-; SI-NEXT:    s_addk_i32 s6, 0xfc10
-; SI-NEXT:    s_lshl_b32 s4, s6, 12
+; SI-NEXT:    s_addk_i32 s5, 0xfc10
+; SI-NEXT:    s_lshl_b32 s6, s5, 12
 ; SI-NEXT:    s_or_b32 s3, s7, s3
-; SI-NEXT:    s_or_b32 s4, s1, s4
-; SI-NEXT:    s_cmp_lt_i32 s6, 1
-; SI-NEXT:    s_cselect_b32 s3, s3, s4
-; SI-NEXT:    s_and_b32 s4, s3, 7
-; SI-NEXT:    s_cmp_gt_i32 s4, 5
+; SI-NEXT:    s_or_b32 s6, s1, s6
+; SI-NEXT:    s_cmp_lt_i32 s5, 1
+; SI-NEXT:    s_cselect_b32 s3, s3, s6
+; SI-NEXT:    s_and_b32 s6, s3, 7
+; SI-NEXT:    s_cmp_gt_i32 s6, 5
 ; SI-NEXT:    s_cselect_b32 s7, 1, 0
-; SI-NEXT:    s_cmp_eq_u32 s4, 3
-; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_eq_u32 s6, 3
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
 ; SI-NEXT:    s_lshr_b32 s3, s3, 2
-; SI-NEXT:    s_or_b32 s4, s4, s7
-; SI-NEXT:    s_add_i32 s3, s3, s4
-; SI-NEXT:    s_cmp_lt_i32 s6, 31
+; SI-NEXT:    s_or_b32 s6, s6, s7
+; SI-NEXT:    s_add_i32 s3, s3, s6
+; SI-NEXT:    s_cmp_lt_i32 s5, 31
 ; SI-NEXT:    s_cselect_b32 s3, s3, 0x7c00
 ; SI-NEXT:    s_cmp_lg_u32 s1, 0
 ; SI-NEXT:    s_cselect_b32 s1, s2, 0x7c00
-; SI-NEXT:    s_cmpk_eq_i32 s6, 0x40f
+; SI-NEXT:    s_cmpk_eq_i32 s5, 0x40f
 ; SI-NEXT:    s_cselect_b32 s1, s1, s3
-; SI-NEXT:    s_lshr_b32 s2, s5, 16
+; SI-NEXT:    s_lshr_b32 s2, s4, 16
 ; SI-NEXT:    s_and_b32 s2, s2, 0x8000
 ; SI-NEXT:    s_or_b32 s1, s2, s1
 ; SI-NEXT:    s_lshl_b32 s1, s1, 16
@@ -765,8 +759,8 @@ define amdgpu_kernel void @fma_v2f16_imm_a(
 ; SI-NEXT:    buffer_load_dword v1, off, s[12:15], 0
 ; SI-NEXT:    s_mov_b32 s4, 0
 ; SI-NEXT:    s_mov_b32 s5, 0x40080000
-; SI-NEXT:    s_mov_b32 s0, s8
 ; SI-NEXT:    s_movk_i32 s6, 0x7e00
+; SI-NEXT:    s_mov_b32 s0, s8
 ; SI-NEXT:    s_mov_b32 s1, s9
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
@@ -783,86 +777,84 @@ define amdgpu_kernel void @fma_v2f16_imm_a(
 ; SI-NEXT:    v_fma_f64 v[0:1], v[2:3], s[4:5], v[0:1]
 ; SI-NEXT:    v_fma_f64 v[2:3], v[6:7], s[4:5], v[4:5]
 ; SI-NEXT:    v_readfirstlane_b32 s4, v1
-; SI-NEXT:    s_and_b32 s5, s4, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v0, s5, v0
+; SI-NEXT:    v_readfirstlane_b32 s5, v0
+; SI-NEXT:    s_and_b32 s7, s4, 0x1ff
+; SI-NEXT:    s_or_b32 s5, s7, s5
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
 ; SI-NEXT:    s_lshr_b32 s7, s4, 8
-; SI-NEXT:    s_bfe_u32 s8, s4, 0xb0014
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-NEXT:    s_and_b32 s5, s7, 0xffe
-; SI-NEXT:    s_sub_i32 s7, 0x3f1, s8
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-NEXT:    v_med3_i32 v1, s7, 0, 13
-; SI-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-NEXT:    s_or_b32 s5, s5, s7
-; SI-NEXT:    v_readfirstlane_b32 s10, v1
+; SI-NEXT:    s_bfe_u32 s10, s4, 0xb0014
+; SI-NEXT:    s_and_b32 s7, s7, 0xffe
+; SI-NEXT:    s_sub_i32 s11, 0x3f1, s10
+; SI-NEXT:    s_or_b32 s5, s7, s5
+; SI-NEXT:    v_med3_i32 v0, s11, 0, 13
 ; SI-NEXT:    s_or_b32 s7, s5, 0x1000
-; SI-NEXT:    s_lshr_b32 s11, s7, s10
-; SI-NEXT:    s_lshl_b32 s10, s11, s10
-; SI-NEXT:    s_cmp_lg_u32 s10, s7
+; SI-NEXT:    v_readfirstlane_b32 s11, v0
+; SI-NEXT:    s_lshr_b32 s12, s7, s11
+; SI-NEXT:    s_lshl_b32 s11, s12, s11
+; SI-NEXT:    s_cmp_lg_u32 s11, s7
 ; SI-NEXT:    s_cselect_b32 s7, 1, 0
-; SI-NEXT:    s_addk_i32 s8, 0xfc10
-; SI-NEXT:    s_lshl_b32 s10, s8, 12
-; SI-NEXT:    s_or_b32 s7, s11, s7
-; SI-NEXT:    s_or_b32 s10, s5, s10
-; SI-NEXT:    s_cmp_lt_i32 s8, 1
-; SI-NEXT:    s_cselect_b32 s7, s7, s10
-; SI-NEXT:    s_and_b32 s10, s7, 7
-; SI-NEXT:    s_cmp_gt_i32 s10, 5
+; SI-NEXT:    s_addk_i32 s10, 0xfc10
+; SI-NEXT:    s_lshl_b32 s11, s10, 12
+; SI-NEXT:    s_or_b32 s7, s12, s7
+; SI-NEXT:    s_or_b32 s11, s5, s11
+; SI-NEXT:    s_cmp_lt_i32 s10, 1
+; SI-NEXT:    s_cselect_b32 s7, s7, s11
+; SI-NEXT:    s_and_b32 s11, s7, 7
+; SI-NEXT:    s_cmp_gt_i32 s11, 5
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_eq_u32 s11, 3
 ; SI-NEXT:    s_cselect_b32 s11, 1, 0
-; SI-NEXT:    s_cmp_eq_u32 s10, 3
-; SI-NEXT:    s_cselect_b32 s10, 1, 0
 ; SI-NEXT:    s_lshr_b32 s7, s7, 2
-; SI-NEXT:    s_or_b32 s10, s10, s11
-; SI-NEXT:    s_add_i32 s7, s7, s10
-; SI-NEXT:    s_cmp_lt_i32 s8, 31
+; SI-NEXT:    s_or_b32 s11, s11, s12
+; SI-NEXT:    s_add_i32 s7, s7, s11
+; SI-NEXT:    s_cmp_lt_i32 s10, 31
 ; SI-NEXT:    s_cselect_b32 s7, s7, 0x7c00
 ; SI-NEXT:    s_cmp_lg_u32 s5, 0
-; SI-NEXT:    v_readfirstlane_b32 s9, v3
 ; SI-NEXT:    s_cselect_b32 s5, s6, 0x7c00
-; SI-NEXT:    s_cmpk_eq_i32 s8, 0x40f
+; SI-NEXT:    s_cmpk_eq_i32 s10, 0x40f
 ; SI-NEXT:    s_cselect_b32 s5, s5, s7
-; SI-NEXT:    s_and_b32 s7, s9, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v0, s7, v2
 ; SI-NEXT:    s_lshr_b32 s4, s4, 16
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-NEXT:    s_lshr_b32 s8, s9, 8
-; SI-NEXT:    s_bfe_u32 s10, s9, 0xb0014
 ; SI-NEXT:    s_and_b32 s4, s4, 0x8000
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-NEXT:    s_and_b32 s7, s8, 0xffe
-; SI-NEXT:    s_sub_i32 s8, 0x3f1, s10
+; SI-NEXT:    v_readfirstlane_b32 s8, v3
 ; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_readfirstlane_b32 s5, v0
-; SI-NEXT:    v_med3_i32 v1, s8, 0, 13
+; SI-NEXT:    v_readfirstlane_b32 s9, v2
+; SI-NEXT:    s_and_b32 s7, s8, 0x1ff
+; SI-NEXT:    s_and_b32 s4, s4, 0xffff
+; SI-NEXT:    s_or_b32 s5, s7, s9
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_lshr_b32 s7, s8, 8
+; SI-NEXT:    s_bfe_u32 s9, s8, 0xb0014
+; SI-NEXT:    s_and_b32 s7, s7, 0xffe
+; SI-NEXT:    s_sub_i32 s10, 0x3f1, s9
 ; SI-NEXT:    s_or_b32 s5, s7, s5
-; SI-NEXT:    v_readfirstlane_b32 s8, v1
+; SI-NEXT:    v_med3_i32 v0, s10, 0, 13
 ; SI-NEXT:    s_or_b32 s7, s5, 0x1000
-; SI-NEXT:    s_lshr_b32 s11, s7, s8
-; SI-NEXT:    s_and_b32 s4, s4, 0xffff
-; SI-NEXT:    s_lshl_b32 s8, s11, s8
-; SI-NEXT:    s_cmp_lg_u32 s8, s7
+; SI-NEXT:    v_readfirstlane_b32 s10, v0
+; SI-NEXT:    s_lshr_b32 s11, s7, s10
+; SI-NEXT:    s_lshl_b32 s10, s11, s10
+; SI-NEXT:    s_cmp_lg_u32 s10, s7
 ; SI-NEXT:    s_cselect_b32 s7, 1, 0
-; SI-NEXT:    s_addk_i32 s10, 0xfc10
-; SI-NEXT:    s_lshl_b32 s8, s10, 12
+; SI-NEXT:    s_addk_i32 s9, 0xfc10
+; SI-NEXT:    s_lshl_b32 s10, s9, 12
 ; SI-NEXT:    s_or_b32 s7, s11, s7
-; SI-NEXT:    s_or_b32 s8, s5, s8
-; SI-NEXT:    s_cmp_lt_i32 s10, 1
-; SI-NEXT:    s_cselect_b32 s7, s7, s8
-; SI-NEXT:    s_and_b32 s8, s7, 7
-; SI-NEXT:    s_cmp_gt_i32 s8, 5
+; SI-NEXT:    s_or_b32 s10, s5, s10
+; SI-NEXT:    s_cmp_lt_i32 s9, 1
+; SI-NEXT:    s_cselect_b32 s7, s7, s10
+; SI-NEXT:    s_and_b32 s10, s7, 7
+; SI-NEXT:    s_cmp_gt_i32 s10, 5
 ; SI-NEXT:    s_cselect_b32 s11, 1, 0
-; SI-NEXT:    s_cmp_eq_u32 s8, 3
-; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_eq_u32 s10, 3
+; SI-NEXT:    s_cselect_b32 s10, 1, 0
 ; SI-NEXT:    s_lshr_b32 s7, s7, 2
-; SI-NEXT:    s_or_b32 s8, s8, s11
-; SI-NEXT:    s_add_i32 s7, s7, s8
-; SI-NEXT:    s_cmp_lt_i32 s10, 31
+; SI-NEXT:    s_or_b32 s10, s10, s11
+; SI-NEXT:    s_add_i32 s7, s7, s10
+; SI-NEXT:    s_cmp_lt_i32 s9, 31
 ; SI-NEXT:    s_cselect_b32 s7, s7, 0x7c00
 ; SI-NEXT:    s_cmp_lg_u32 s5, 0
 ; SI-NEXT:    s_cselect_b32 s5, s6, 0x7c00
-; SI-NEXT:    s_cmpk_eq_i32 s10, 0x40f
+; SI-NEXT:    s_cmpk_eq_i32 s9, 0x40f
 ; SI-NEXT:    s_cselect_b32 s5, s5, s7
-; SI-NEXT:    s_lshr_b32 s6, s9, 16
+; SI-NEXT:    s_lshr_b32 s6, s8, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0x8000
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
@@ -950,8 +942,8 @@ define amdgpu_kernel void @fma_v2f16_imm_b(
 ; SI-NEXT:    buffer_load_dword v1, off, s[12:15], 0
 ; SI-NEXT:    s_mov_b32 s4, 0
 ; SI-NEXT:    s_mov_b32 s5, 0x40080000
-; SI-NEXT:    s_mov_b32 s0, s8
 ; SI-NEXT:    s_movk_i32 s6, 0x7e00
+; SI-NEXT:    s_mov_b32 s0, s8
 ; SI-NEXT:    s_mov_b32 s1, s9
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
@@ -968,86 +960,84 @@ define amdgpu_kernel void @fma_v2f16_imm_b(
 ; SI-NEXT:    v_fma_f64 v[0:1], v[2:3], s[4:5], v[0:1]
 ; SI-NEXT:    v_fma_f64 v[2:3], v[6:7], s[4:5], v[4:5]
 ; SI-NEXT:    v_readfirstlane_b32 s4, v1
-; SI-NEXT:    s_and_b32 s5, s4, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v0, s5, v0
+; SI-NEXT:    v_readfirstlane_b32 s5, v0
+; SI-NEXT:    s_and_b32 s7, s4, 0x1ff
+; SI-NEXT:    s_or_b32 s5, s7, s5
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
 ; SI-NEXT:    s_lshr_b32 s7, s4, 8
-; SI-NEXT:    s_bfe_u32 s8, s4, 0xb0014
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-NEXT:    s_and_b32 s5, s7, 0xffe
-; SI-NEXT:    s_sub_i32 s7, 0x3f1, s8
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-NEXT:    v_med3_i32 v1, s7, 0, 13
-; SI-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-NEXT:    s_or_b32 s5, s5, s7
-; SI-NEXT:    v_readfirstlane_b32 s10, v1
+; SI-NEXT:    s_bfe_u32 s10, s4, 0xb0014
+; SI-NEXT:    s_and_b32 s7, s7, 0xffe
+; SI-NEXT:    s_sub_i32 s11, 0x3f1, s10
+; SI-NEXT:    s_or_b32 s5, s7, s5
+; SI-NEXT:    v_med3_i32 v0, s11, 0, 13
 ; SI-NEXT:    s_or_b32 s7, s5, 0x1000
-; SI-NEXT:    s_lshr_b32 s11, s7, s10
-; SI-NEXT:    s_lshl_b32 s10, s11, s10
-; SI-NEXT:    s_cmp_lg_u32 s10, s7
+; SI-NEXT:    v_readfirstlane_b32 s11, v0
+; SI-NEXT:    s_lshr_b32 s12, s7, s11
+; SI-NEXT:    s_lshl_b32 s11, s12, s11
+; SI-NEXT:    s_cmp_lg_u32 s11, s7
 ; SI-NEXT:    s_cselect_b32 s7, 1, 0
-; SI-NEXT:    s_addk_i32 s8, 0xfc10
-; SI-NEXT:    s_lshl_b32 s10, s8, 12
-; SI-NEXT:    s_or_b32 s7, s11, s7
-; SI-NEXT:    s_or_b32 s10, s5, s10
-; SI-NEXT:    s_cmp_lt_i32 s8, 1
-; SI-NEXT:    s_cselect_b32 s7, s7, s10
-; SI-NEXT:    s_and_b32 s10, s7, 7
-; SI-NEXT:    s_cmp_gt_i32 s10, 5
+; SI-NEXT:    s_addk_i32 s10, 0xfc10
+; SI-NEXT:    s_lshl_b32 s11, s10, 12
+; SI-NEXT:    s_or_b32 s7, s12, s7
+; SI-NEXT:    s_or_b32 s11, s5, s11
+; SI-NEXT:    s_cmp_lt_i32 s10, 1
+; SI-NEXT:    s_cselect_b32 s7, s7, s11
+; SI-NEXT:    s_and_b32 s11, s7, 7
+; SI-NEXT:    s_cmp_gt_i32 s11, 5
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_eq_u32 s11, 3
 ; SI-NEXT:    s_cselect_b32 s11, 1, 0
-; SI-NEXT:    s_cmp_eq_u32 s10, 3
-; SI-NEXT:    s_cselect_b32 s10, 1, 0
 ; SI-NEXT:    s_lshr_b32 s7, s7, 2
-; SI-NEXT:    s_or_b32 s10, s10, s11
-; SI-NEXT:    s_add_i32 s7, s7, s10
-; SI-NEXT:    s_cmp_lt_i32 s8, 31
+; SI-NEXT:    s_or_b32 s11, s11, s12
+; SI-NEXT:    s_add_i32 s7, s7, s11
+; SI-NEXT:    s_cmp_lt_i32 s10, 31
 ; SI-NEXT:    s_cselect_b32 s7, s7, 0x7c00
 ; SI-NEXT:    s_cmp_lg_u32 s5, 0
-; SI-NEXT:    v_readfirstlane_b32 s9, v3
 ; SI-NEXT:    s_cselect_b32 s5, s6, 0x7c00
-; SI-NEXT:    s_cmpk_eq_i32 s8, 0x40f
+; SI-NEXT:    s_cmpk_eq_i32 s10, 0x40f
 ; SI-NEXT:    s_cselect_b32 s5, s5, s7
-; SI-NEXT:    s_and_b32 s7, s9, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v0, s7, v2
 ; SI-NEXT:    s_lshr_b32 s4, s4, 16
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-NEXT:    s_lshr_b32 s8, s9, 8
-; SI-NEXT:    s_bfe_u32 s10, s9, 0xb0014
 ; SI-NEXT:    s_and_b32 s4, s4, 0x8000
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-NEXT:    s_and_b32 s7, s8, 0xffe
-; SI-NEXT:    s_sub_i32 s8, 0x3f1, s10
+; SI-NEXT:    v_readfirstlane_b32 s8, v3
 ; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_readfirstlane_b32 s5, v0
-; SI-NEXT:    v_med3_i32 v1, s8, 0, 13
+; SI-NEXT:    v_readfirstlane_b32 s9, v2
+; SI-NEXT:    s_and_b32 s7, s8, 0x1ff
+; SI-NEXT:    s_and_b32 s4, s4, 0xffff
+; SI-NEXT:    s_or_b32 s5, s7, s9
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_lshr_b32 s7, s8, 8
+; SI-NEXT:    s_bfe_u32 s9, s8, 0xb0014
+; SI-NEXT:    s_and_b32 s7, s7, 0xffe
+; SI-NEXT:    s_sub_i32 s10, 0x3f1, s9
 ; SI-NEXT:    s_or_b32 s5, s7, s5
-; SI-NEXT:    v_readfirstlane_b32 s8, v1
+; SI-NEXT:    v_med3_i32 v0, s10, 0, 13
 ; SI-NEXT:    s_or_b32 s7, s5, 0x1000
-; SI-NEXT:    s_lshr_b32 s11, s7, s8
-; SI-NEXT:    s_and_b32 s4, s4, 0xffff
-; SI-NEXT:    s_lshl_b32 s8, s11, s8
-; SI-NEXT:    s_cmp_lg_u32 s8, s7
+; SI-NEXT:    v_readfirstlane_b32 s10, v0
+; SI-NEXT:    s_lshr_b32 s11, s7, s10
+; SI-NEXT:    s_lshl_b32 s10, s11, s10
+; SI-NEXT:    s_cmp_lg_u32 s10, s7
 ; SI-NEXT:    s_cselect_b32 s7, 1, 0
-; SI-NEXT:    s_addk_i32 s10, 0xfc10
-; SI-NEXT:    s_lshl_b32 s8, s10, 12
+; SI-NEXT:    s_addk_i32 s9, 0xfc10
+; SI-NEXT:    s_lshl_b32 s10, s9, 12
 ; SI-NEXT:    s_or_b32 s7, s11, s7
-; SI-NEXT:    s_or_b32 s8, s5, s8
-; SI-NEXT:    s_cmp_lt_i32 s10, 1
-; SI-NEXT:    s_cselect_b32 s7, s7, s8
-; SI-NEXT:    s_and_b32 s8, s7, 7
-; SI-NEXT:    s_cmp_gt_i32 s8, 5
+; SI-NEXT:    s_or_b32 s10, s5, s10
+; SI-NEXT:    s_cmp_lt_i32 s9, 1
+; SI-NEXT:    s_cselect_b32 s7, s7, s10
+; SI-NEXT:    s_and_b32 s10, s7, 7
+; SI-NEXT:    s_cmp_gt_i32 s10, 5
 ; SI-NEXT:    s_cselect_b32 s11, 1, 0
-; SI-NEXT:    s_cmp_eq_u32 s8, 3
-; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_eq_u32 s10, 3
+; SI-NEXT:    s_cselect_b32 s10, 1, 0
 ; SI-NEXT:    s_lshr_b32 s7, s7, 2
-; SI-NEXT:    s_or_b32 s8, s8, s11
-; SI-NEXT:    s_add_i32 s7, s7, s8
-; SI-NEXT:    s_cmp_lt_i32 s10, 31
+; SI-NEXT:    s_or_b32 s10, s10, s11
+; SI-NEXT:    s_add_i32 s7, s7, s10
+; SI-NEXT:    s_cmp_lt_i32 s9, 31
 ; SI-NEXT:    s_cselect_b32 s7, s7, 0x7c00
 ; SI-NEXT:    s_cmp_lg_u32 s5, 0
 ; SI-NEXT:    s_cselect_b32 s5, s6, 0x7c00
-; SI-NEXT:    s_cmpk_eq_i32 s10, 0x40f
+; SI-NEXT:    s_cmpk_eq_i32 s9, 0x40f
 ; SI-NEXT:    s_cselect_b32 s5, s5, s7
-; SI-NEXT:    s_lshr_b32 s6, s9, 16
+; SI-NEXT:    s_lshr_b32 s6, s8, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0x8000
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
@@ -1135,8 +1125,8 @@ define amdgpu_kernel void @fma_v2f16_imm_c(
 ; SI-NEXT:    buffer_load_dword v1, off, s[12:15], 0
 ; SI-NEXT:    s_mov_b32 s4, 0
 ; SI-NEXT:    s_mov_b32 s5, 0x40080000
-; SI-NEXT:    s_mov_b32 s0, s8
 ; SI-NEXT:    s_movk_i32 s6, 0x7e00
+; SI-NEXT:    s_mov_b32 s0, s8
 ; SI-NEXT:    s_mov_b32 s1, s9
 ; SI-NEXT:    s_waitcnt vmcnt(1)
 ; SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
@@ -1153,86 +1143,84 @@ define amdgpu_kernel void @fma_v2f16_imm_c(
 ; SI-NEXT:    v_fma_f64 v[0:1], v[2:3], v[0:1], s[4:5]
 ; SI-NEXT:    v_fma_f64 v[2:3], v[6:7], v[4:5], s[4:5]
 ; SI-NEXT:    v_readfirstlane_b32 s4, v1
-; SI-NEXT:    s_and_b32 s5, s4, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v0, s5, v0
+; SI-NEXT:    v_readfirstlane_b32 s5, v0
+; SI-NEXT:    s_and_b32 s7, s4, 0x1ff
+; SI-NEXT:    s_or_b32 s5, s7, s5
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
 ; SI-NEXT:    s_lshr_b32 s7, s4, 8
-; SI-NEXT:    s_bfe_u32 s8, s4, 0xb0014
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-NEXT:    s_and_b32 s5, s7, 0xffe
-; SI-NEXT:    s_sub_i32 s7, 0x3f1, s8
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-NEXT:    v_med3_i32 v1, s7, 0, 13
-; SI-NEXT:    v_readfirstlane_b32 s7, v0
-; SI-NEXT:    s_or_b32 s5, s5, s7
-; SI-NEXT:    v_readfirstlane_b32 s10, v1
+; SI-NEXT:    s_bfe_u32 s10, s4, 0xb0014
+; SI-NEXT:    s_and_b32 s7, s7, 0xffe
+; SI-NEXT:    s_sub_i32 s11, 0x3f1, s10
+; SI-NEXT:    s_or_b32 s5, s7, s5
+; SI-NEXT:    v_med3_i32 v0, s11, 0, 13
 ; SI-NEXT:    s_or_b32 s7, s5, 0x1000
-; SI-NEXT:    s_lshr_b32 s11, s7, s10
-; SI-NEXT:    s_lshl_b32 s10, s11, s10
-; SI-NEXT:    s_cmp_lg_u32 s10, s7
+; SI-NEXT:    v_readfirstlane_b32 s11, v0
+; SI-NEXT:    s_lshr_b32 s12, s7, s11
+; SI-NEXT:    s_lshl_b32 s11, s12, s11
+; SI-NEXT:    s_cmp_lg_u32 s11, s7
 ; SI-NEXT:    s_cselect_b32 s7, 1, 0
-; SI-NEXT:    s_addk_i32 s8, 0xfc10
-; SI-NEXT:    s_lshl_b32 s10, s8, 12
-; SI-NEXT:    s_or_b32 s7, s11, s7
-; SI-NEXT:    s_or_b32 s10, s5, s10
-; SI-NEXT:    s_cmp_lt_i32 s8, 1
-; SI-NEXT:    s_cselect_b32 s7, s7, s10
-; SI-NEXT:    s_and_b32 s10, s7, 7
-; SI-NEXT:    s_cmp_gt_i32 s10, 5
+; SI-NEXT:    s_addk_i32 s10, 0xfc10
+; SI-NEXT:    s_lshl_b32 s11, s10, 12
+; SI-NEXT:    s_or_b32 s7, s12, s7
+; SI-NEXT:    s_or_b32 s11, s5, s11
+; SI-NEXT:    s_cmp_lt_i32 s10, 1
+; SI-NEXT:    s_cselect_b32 s7, s7, s11
+; SI-NEXT:    s_and_b32 s11, s7, 7
+; SI-NEXT:    s_cmp_gt_i32 s11, 5
+; SI-NEXT:    s_cselect_b32 s12, 1, 0
+; SI-NEXT:    s_cmp_eq_u32 s11, 3
 ; SI-NEXT:    s_cselect_b32 s11, 1, 0
-; SI-NEXT:    s_cmp_eq_u32 s10, 3
-; SI-NEXT:    s_cselect_b32 s10, 1, 0
 ; SI-NEXT:    s_lshr_b32 s7, s7, 2
-; SI-NEXT:    s_or_b32 s10, s10, s11
-; SI-NEXT:    s_add_i32 s7, s7, s10
-; SI-NEXT:    s_cmp_lt_i32 s8, 31
+; SI-NEXT:    s_or_b32 s11, s11, s12
+; SI-NEXT:    s_add_i32 s7, s7, s11
+; SI-NEXT:    s_cmp_lt_i32 s10, 31
 ; SI-NEXT:    s_cselect_b32 s7, s7, 0x7c00
 ; SI-NEXT:    s_cmp_lg_u32 s5, 0
-; SI-NEXT:    v_readfirstlane_b32 s9, v3
 ; SI-NEXT:    s_cselect_b32 s5, s6, 0x7c00
-; SI-NEXT:    s_cmpk_eq_i32 s8, 0x40f
+; SI-NEXT:    s_cmpk_eq_i32 s10, 0x40f
 ; SI-NEXT:    s_cselect_b32 s5, s5, s7
-; SI-NEXT:    s_and_b32 s7, s9, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v0, s7, v2
 ; SI-NEXT:    s_lshr_b32 s4, s4, 16
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-NEXT:    s_lshr_b32 s8, s9, 8
-; SI-NEXT:    s_bfe_u32 s10, s9, 0xb0014
 ; SI-NEXT:    s_and_b32 s4, s4, 0x8000
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-NEXT:    s_and_b32 s7, s8, 0xffe
-; SI-NEXT:    s_sub_i32 s8, 0x3f1, s10
+; SI-NEXT:    v_readfirstlane_b32 s8, v3
 ; SI-NEXT:    s_or_b32 s4, s4, s5
-; SI-NEXT:    v_readfirstlane_b32 s5, v0
-; SI-NEXT:    v_med3_i32 v1, s8, 0, 13
+; SI-NEXT:    v_readfirstlane_b32 s9, v2
+; SI-NEXT:    s_and_b32 s7, s8, 0x1ff
+; SI-NEXT:    s_and_b32 s4, s4, 0xffff
+; SI-NEXT:    s_or_b32 s5, s7, s9
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_lshr_b32 s7, s8, 8
+; SI-NEXT:    s_bfe_u32 s9, s8, 0xb0014
+; SI-NEXT:    s_and_b32 s7, s7, 0xffe
+; SI-NEXT:    s_sub_i32 s10, 0x3f1, s9
 ; SI-NEXT:    s_or_b32 s5, s7, s5
-; SI-NEXT:    v_readfirstlane_b32 s8, v1
+; SI-NEXT:    v_med3_i32 v0, s10, 0, 13
 ; SI-NEXT:    s_or_b32 s7, s5, 0x1000
-; SI-NEXT:    s_lshr_b32 s11, s7, s8
-; SI-NEXT:    s_and_b32 s4, s4, 0xffff
-; SI-NEXT:    s_lshl_b32 s8, s11, s8
-; SI-NEXT:    s_cmp_lg_u32 s8, s7
+; SI-NEXT:    v_readfirstlane_b32 s10, v0
+; SI-NEXT:    s_lshr_b32 s11, s7, s10
+; SI-NEXT:    s_lshl_b32 s10, s11, s10
+; SI-NEXT:    s_cmp_lg_u32 s10, s7
 ; SI-NEXT:    s_cselect_b32 s7, 1, 0
-; SI-NEXT:    s_addk_i32 s10, 0xfc10
-; SI-NEXT:    s_lshl_b32 s8, s10, 12
+; SI-NEXT:    s_addk_i32 s9, 0xfc10
+; SI-NEXT:    s_lshl_b32 s10, s9, 12
 ; SI-NEXT:    s_or_b32 s7, s11, s7
-; SI-NEXT:    s_or_b32 s8, s5, s8
-; SI-NEXT:    s_cmp_lt_i32 s10, 1
-; SI-NEXT:    s_cselect_b32 s7, s7, s8
-; SI-NEXT:    s_and_b32 s8, s7, 7
-; SI-NEXT:    s_cmp_gt_i32 s8, 5
+; SI-NEXT:    s_or_b32 s10, s5, s10
+; SI-NEXT:    s_cmp_lt_i32 s9, 1
+; SI-NEXT:    s_cselect_b32 s7, s7, s10
+; SI-NEXT:    s_and_b32 s10, s7, 7
+; SI-NEXT:    s_cmp_gt_i32 s10, 5
 ; SI-NEXT:    s_cselect_b32 s11, 1, 0
-; SI-NEXT:    s_cmp_eq_u32 s8, 3
-; SI-NEXT:    s_cselect_b32 s8, 1, 0
+; SI-NEXT:    s_cmp_eq_u32 s10, 3
+; SI-NEXT:    s_cselect_b32 s10, 1, 0
 ; SI-NEXT:    s_lshr_b32 s7, s7, 2
-; SI-NEXT:    s_or_b32 s8, s8, s11
-; SI-NEXT:    s_add_i32 s7, s7, s8
-; SI-NEXT:    s_cmp_lt_i32 s10, 31
+; SI-NEXT:    s_or_b32 s10, s10, s11
+; SI-NEXT:    s_add_i32 s7, s7, s10
+; SI-NEXT:    s_cmp_lt_i32 s9, 31
 ; SI-NEXT:    s_cselect_b32 s7, s7, 0x7c00
 ; SI-NEXT:    s_cmp_lg_u32 s5, 0
 ; SI-NEXT:    s_cselect_b32 s5, s6, 0x7c00
-; SI-NEXT:    s_cmpk_eq_i32 s10, 0x40f
+; SI-NEXT:    s_cmpk_eq_i32 s9, 0x40f
 ; SI-NEXT:    s_cselect_b32 s5, s5, s7
-; SI-NEXT:    s_lshr_b32 s6, s9, 16
+; SI-NEXT:    s_lshr_b32 s6, s8, 16
 ; SI-NEXT:    s_and_b32 s6, s6, 0x8000
 ; SI-NEXT:    s_or_b32 s5, s6, s5
 ; SI-NEXT:    s_lshl_b32 s5, s5, 16
@@ -1320,192 +1308,188 @@ define amdgpu_kernel void @fma_v4f16(
 ; SI-NEXT:    s_mov_b32 s4, s6
 ; SI-NEXT:    s_mov_b32 s5, s7
 ; SI-NEXT:    s_mov_b32 s6, s10
-; SI-NEXT:    buffer_load_dwordx2 v[5:6], off, s[12:15], 0
 ; SI-NEXT:    s_mov_b32 s7, s11
-; SI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[16:19], 0
-; SI-NEXT:    buffer_load_dwordx2 v[2:3], off, s[4:7], 0
+; SI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[12:15], 0
+; SI-NEXT:    buffer_load_dwordx2 v[2:3], off, s[16:19], 0
+; SI-NEXT:    buffer_load_dwordx2 v[4:5], off, s[4:7], 0
 ; SI-NEXT:    s_mov_b32 s8, s0
 ; SI-NEXT:    s_mov_b32 s9, s1
 ; SI-NEXT:    s_movk_i32 s2, 0x7e00
 ; SI-NEXT:    s_waitcnt vmcnt(2)
-; SI-NEXT:    v_cvt_f32_f16_e32 v10, v6
+; SI-NEXT:    v_cvt_f32_f16_e32 v12, v1
 ; SI-NEXT:    s_waitcnt vmcnt(1)
-; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v1
-; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v3
+; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v5
+; SI-NEXT:    v_cvt_f32_f16_e32 v5, v5
 ; SI-NEXT:    v_cvt_f32_f16_e32 v3, v3
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
-; SI-NEXT:    v_cvt_f32_f16_e32 v11, v2
-; SI-NEXT:    v_cvt_f32_f16_e32 v13, v0
-; SI-NEXT:    v_cvt_f32_f16_e32 v15, v5
-; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v6
-; SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v5
+; SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v0
+; SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v1
+; SI-NEXT:    v_lshrrev_b32_e32 v8, 16, v2
+; SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v4
+; SI-NEXT:    v_cvt_f32_f16_e32 v13, v4
+; SI-NEXT:    v_cvt_f32_f16_e32 v14, v2
+; SI-NEXT:    v_cvt_f32_f16_e32 v15, v0
+; SI-NEXT:    v_cvt_f64_f32_e32 v[0:1], v5
+; SI-NEXT:    v_cvt_f64_f32_e32 v[2:3], v3
+; SI-NEXT:    v_cvt_f64_f32_e32 v[4:5], v12
+; SI-NEXT:    v_cvt_f32_f16_e32 v16, v11
 ; SI-NEXT:    v_cvt_f32_f16_e32 v17, v9
-; SI-NEXT:    v_cvt_f32_f16_e32 v18, v8
-; SI-NEXT:    v_cvt_f32_f16_e32 v19, v7
-; SI-NEXT:    v_cvt_f64_f32_e32 v[5:6], v3
-; SI-NEXT:    v_cvt_f64_f32_e32 v[7:8], v1
-; SI-NEXT:    v_cvt_f64_f32_e32 v[9:10], v10
-; SI-NEXT:    v_cvt_f64_f32_e32 v[11:12], v11
-; SI-NEXT:    v_cvt_f64_f32_e32 v[13:14], v13
-; SI-NEXT:    v_cvt_f64_f32_e32 v[15:16], v15
-; SI-NEXT:    v_fma_f64 v[5:6], v[9:10], v[7:8], v[5:6]
-; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v2
-; SI-NEXT:    v_readfirstlane_b32 s0, v6
-; SI-NEXT:    v_fma_f64 v[2:3], v[15:16], v[13:14], v[11:12]
-; SI-NEXT:    s_and_b32 s3, s0, 0x1ff
-; SI-NEXT:    v_readfirstlane_b32 s1, v3
-; SI-NEXT:    v_or_b32_e32 v3, s3, v5
-; SI-NEXT:    s_lshr_b32 s4, s0, 8
-; SI-NEXT:    s_bfe_u32 s5, s0, 0xb0014
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v3
-; SI-NEXT:    s_and_b32 s3, s4, 0xffe
-; SI-NEXT:    s_sub_i32 s4, 0x3f1, s5
-; SI-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc
-; SI-NEXT:    v_med3_i32 v5, s4, 0, 13
-; SI-NEXT:    v_readfirstlane_b32 s4, v3
-; SI-NEXT:    s_or_b32 s3, s3, s4
-; SI-NEXT:    v_readfirstlane_b32 s7, v5
-; SI-NEXT:    s_or_b32 s4, s3, 0x1000
-; SI-NEXT:    s_lshr_b32 s12, s4, s7
-; SI-NEXT:    s_lshl_b32 s7, s12, s7
-; SI-NEXT:    s_cmp_lg_u32 s7, s4
-; SI-NEXT:    s_cselect_b32 s4, 1, 0
-; SI-NEXT:    s_addk_i32 s5, 0xfc10
-; SI-NEXT:    s_lshl_b32 s7, s5, 12
-; SI-NEXT:    s_or_b32 s4, s12, s4
-; SI-NEXT:    s_or_b32 s7, s3, s7
-; SI-NEXT:    s_cmp_lt_i32 s5, 1
-; SI-NEXT:    s_cselect_b32 s4, s4, s7
-; SI-NEXT:    s_and_b32 s7, s4, 7
-; SI-NEXT:    s_cmp_gt_i32 s7, 5
-; SI-NEXT:    v_cvt_f64_f32_e32 v[7:8], v17
-; SI-NEXT:    v_cvt_f64_f32_e32 v[9:10], v18
-; SI-NEXT:    v_cvt_f64_f32_e32 v[17:18], v19
-; SI-NEXT:    s_cselect_b32 s12, 1, 0
-; SI-NEXT:    s_cmp_eq_u32 s7, 3
-; SI-NEXT:    s_cselect_b32 s7, 1, 0
-; SI-NEXT:    s_lshr_b32 s4, s4, 2
-; SI-NEXT:    s_or_b32 s7, s7, s12
-; SI-NEXT:    s_add_i32 s4, s4, s7
-; SI-NEXT:    v_fma_f64 v[7:8], v[17:18], v[9:10], v[7:8]
-; SI-NEXT:    s_cmp_lt_i32 s5, 31
-; SI-NEXT:    s_cselect_b32 s4, s4, 0x7c00
-; SI-NEXT:    s_cmp_lg_u32 s3, 0
-; SI-NEXT:    v_readfirstlane_b32 s6, v8
-; SI-NEXT:    s_cselect_b32 s3, s2, 0x7c00
-; SI-NEXT:    s_cmpk_eq_i32 s5, 0x40f
-; SI-NEXT:    s_cselect_b32 s3, s3, s4
-; SI-NEXT:    s_and_b32 s4, s6, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v3, s4, v7
+; SI-NEXT:    v_cvt_f32_f16_e32 v18, v7
+; SI-NEXT:    v_fma_f64 v[4:5], v[4:5], v[2:3], v[0:1]
+; SI-NEXT:    v_cvt_f32_f16_e32 v19, v10
+; SI-NEXT:    v_readfirstlane_b32 s0, v5
+; SI-NEXT:    v_readfirstlane_b32 s1, v4
+; SI-NEXT:    s_and_b32 s5, s0, 0x1ff
+; SI-NEXT:    s_or_b32 s1, s5, s1
+; SI-NEXT:    s_cselect_b32 s1, 1, 0
+; SI-NEXT:    s_lshr_b32 s5, s0, 8
+; SI-NEXT:    s_bfe_u32 s12, s0, 0xb0014
+; SI-NEXT:    s_and_b32 s5, s5, 0xffe
+; SI-NEXT:    s_sub_i32 s13, 0x3f1, s12
+; SI-NEXT:    s_or_b32 s1, s5, s1
+; SI-NEXT:    v_med3_i32 v4, s13, 0, 13
+; SI-NEXT:    s_or_b32 s5, s1, 0x1000
+; SI-NEXT:    v_readfirstlane_b32 s13, v4
+; SI-NEXT:    s_lshr_b32 s14, s5, s13
+; SI-NEXT:    s_lshl_b32 s13, s14, s13
+; SI-NEXT:    s_cmp_lg_u32 s13, s5
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
+; SI-NEXT:    s_addk_i32 s12, 0xfc10
+; SI-NEXT:    s_lshl_b32 s13, s12, 12
+; SI-NEXT:    s_or_b32 s5, s14, s5
+; SI-NEXT:    s_or_b32 s13, s1, s13
+; SI-NEXT:    s_cmp_lt_i32 s12, 1
+; SI-NEXT:    s_cselect_b32 s5, s5, s13
+; SI-NEXT:    s_and_b32 s13, s5, 7
+; SI-NEXT:    s_cmp_gt_i32 s13, 5
+; SI-NEXT:    s_cselect_b32 s14, 1, 0
+; SI-NEXT:    s_cmp_eq_u32 s13, 3
+; SI-NEXT:    s_cselect_b32 s13, 1, 0
+; SI-NEXT:    s_lshr_b32 s5, s5, 2
+; SI-NEXT:    s_or_b32 s13, s13, s14
+; SI-NEXT:    v_cvt_f32_f16_e32 v20, v8
+; SI-NEXT:    v_cvt_f32_f16_e32 v21, v6
+; SI-NEXT:    v_cvt_f64_f32_e32 v[6:7], v13
+; SI-NEXT:    v_cvt_f64_f32_e32 v[8:9], v14
+; SI-NEXT:    v_cvt_f64_f32_e32 v[10:11], v15
+; SI-NEXT:    v_cvt_f64_f32_e32 v[12:13], v16
+; SI-NEXT:    v_cvt_f64_f32_e32 v[14:15], v17
+; SI-NEXT:    v_cvt_f64_f32_e32 v[16:17], v18
+; SI-NEXT:    s_add_i32 s5, s5, s13
+; SI-NEXT:    s_cmp_lt_i32 s12, 31
+; SI-NEXT:    s_cselect_b32 s5, s5, 0x7c00
+; SI-NEXT:    s_cmp_lg_u32 s1, 0
+; SI-NEXT:    s_cselect_b32 s1, s2, 0x7c00
+; SI-NEXT:    s_cmpk_eq_i32 s12, 0x40f
+; SI-NEXT:    v_fma_f64 v[6:7], v[10:11], v[8:9], v[6:7]
+; SI-NEXT:    v_fma_f64 v[8:9], v[16:17], v[14:15], v[12:13]
+; SI-NEXT:    s_cselect_b32 s1, s1, s5
 ; SI-NEXT:    s_lshr_b32 s0, s0, 16
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v3
-; SI-NEXT:    s_lshr_b32 s5, s6, 8
-; SI-NEXT:    s_bfe_u32 s7, s6, 0xb0014
 ; SI-NEXT:    s_and_b32 s0, s0, 0x8000
-; SI-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc
-; SI-NEXT:    s_and_b32 s4, s5, 0xffe
-; SI-NEXT:    s_sub_i32 s5, 0x3f1, s7
-; SI-NEXT:    s_or_b32 s0, s0, s3
-; SI-NEXT:    v_readfirstlane_b32 s3, v3
-; SI-NEXT:    v_med3_i32 v5, s5, 0, 13
-; SI-NEXT:    s_or_b32 s3, s4, s3
-; SI-NEXT:    v_readfirstlane_b32 s5, v5
-; SI-NEXT:    s_or_b32 s4, s3, 0x1000
-; SI-NEXT:    s_lshr_b32 s12, s4, s5
+; SI-NEXT:    v_readfirstlane_b32 s6, v9
+; SI-NEXT:    s_or_b32 s0, s0, s1
+; SI-NEXT:    v_readfirstlane_b32 s7, v8
+; SI-NEXT:    s_and_b32 s5, s6, 0x1ff
 ; SI-NEXT:    s_and_b32 s0, s0, 0xffff
-; SI-NEXT:    s_lshl_b32 s5, s12, s5
-; SI-NEXT:    s_cmp_lg_u32 s5, s4
-; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_or_b32 s1, s5, s7
+; SI-NEXT:    s_cselect_b32 s1, 1, 0
+; SI-NEXT:    s_lshr_b32 s5, s6, 8
+; SI-NEXT:    s_bfe_u32 s7, s6, 0xb0014
+; SI-NEXT:    s_and_b32 s5, s5, 0xffe
+; SI-NEXT:    s_sub_i32 s12, 0x3f1, s7
+; SI-NEXT:    s_or_b32 s1, s5, s1
+; SI-NEXT:    v_med3_i32 v4, s12, 0, 13
+; SI-NEXT:    s_or_b32 s5, s1, 0x1000
+; SI-NEXT:    v_readfirstlane_b32 s12, v4
+; SI-NEXT:    s_lshr_b32 s13, s5, s12
+; SI-NEXT:    s_lshl_b32 s12, s13, s12
+; SI-NEXT:    s_cmp_lg_u32 s12, s5
+; SI-NEXT:    s_cselect_b32 s5, 1, 0
 ; SI-NEXT:    s_addk_i32 s7, 0xfc10
-; SI-NEXT:    s_lshl_b32 s5, s7, 12
-; SI-NEXT:    s_or_b32 s4, s12, s4
-; SI-NEXT:    s_or_b32 s5, s3, s5
+; SI-NEXT:    s_lshl_b32 s12, s7, 12
+; SI-NEXT:    s_or_b32 s5, s13, s5
+; SI-NEXT:    s_or_b32 s12, s1, s12
 ; SI-NEXT:    s_cmp_lt_i32 s7, 1
-; SI-NEXT:    s_cselect_b32 s4, s4, s5
-; SI-NEXT:    s_and_b32 s5, s4, 7
-; SI-NEXT:    s_cmp_gt_i32 s5, 5
+; SI-NEXT:    s_cselect_b32 s5, s5, s12
+; SI-NEXT:    s_and_b32 s12, s5, 7
+; SI-NEXT:    s_cmp_gt_i32 s12, 5
+; SI-NEXT:    s_cselect_b32 s13, 1, 0
+; SI-NEXT:    s_cmp_eq_u32 s12, 3
 ; SI-NEXT:    s_cselect_b32 s12, 1, 0
-; SI-NEXT:    s_cmp_eq_u32 s5, 3
-; SI-NEXT:    s_cselect_b32 s5, 1, 0
-; SI-NEXT:    s_lshr_b32 s4, s4, 2
-; SI-NEXT:    s_or_b32 s5, s5, s12
-; SI-NEXT:    s_add_i32 s4, s4, s5
+; SI-NEXT:    s_lshr_b32 s5, s5, 2
+; SI-NEXT:    s_or_b32 s12, s12, s13
+; SI-NEXT:    s_add_i32 s5, s5, s12
 ; SI-NEXT:    s_cmp_lt_i32 s7, 31
-; SI-NEXT:    s_cselect_b32 s4, s4, 0x7c00
-; SI-NEXT:    s_cmp_lg_u32 s3, 0
-; SI-NEXT:    s_cselect_b32 s3, s2, 0x7c00
+; SI-NEXT:    s_cselect_b32 s5, s5, 0x7c00
+; SI-NEXT:    s_cmp_lg_u32 s1, 0
+; SI-NEXT:    s_cselect_b32 s1, s2, 0x7c00
 ; SI-NEXT:    s_cmpk_eq_i32 s7, 0x40f
-; SI-NEXT:    s_cselect_b32 s3, s3, s4
-; SI-NEXT:    s_and_b32 s5, s1, 0x1ff
-; SI-NEXT:    s_lshr_b32 s4, s6, 16
-; SI-NEXT:    v_or_b32_e32 v2, s5, v2
-; SI-NEXT:    s_and_b32 s4, s4, 0x8000
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v2
-; SI-NEXT:    s_lshr_b32 s6, s1, 8
-; SI-NEXT:    s_bfe_u32 s7, s1, 0xb0014
-; SI-NEXT:    s_or_b32 s3, s4, s3
-; SI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
-; SI-NEXT:    s_and_b32 s5, s6, 0xffe
-; SI-NEXT:    s_sub_i32 s6, 0x3f1, s7
-; SI-NEXT:    s_lshl_b32 s3, s3, 16
-; SI-NEXT:    v_readfirstlane_b32 s4, v2
-; SI-NEXT:    v_med3_i32 v3, s6, 0, 13
-; SI-NEXT:    s_or_b32 s0, s0, s3
-; SI-NEXT:    s_or_b32 s3, s5, s4
-; SI-NEXT:    v_readfirstlane_b32 s6, v3
-; SI-NEXT:    s_or_b32 s4, s3, 0x1000
-; SI-NEXT:    s_lshr_b32 s5, s4, s6
-; SI-NEXT:    s_lshl_b32 s6, s5, s6
+; SI-NEXT:    s_cselect_b32 s1, s1, s5
+; SI-NEXT:    s_lshr_b32 s5, s6, 16
+; SI-NEXT:    s_and_b32 s5, s5, 0x8000
+; SI-NEXT:    s_or_b32 s1, s5, s1
+; SI-NEXT:    v_readfirstlane_b32 s3, v7
+; SI-NEXT:    s_lshl_b32 s1, s1, 16
+; SI-NEXT:    v_readfirstlane_b32 s4, v6
+; SI-NEXT:    s_and_b32 s6, s3, 0x1ff
+; SI-NEXT:    s_or_b32 s0, s0, s1
+; SI-NEXT:    s_or_b32 s1, s6, s4
+; SI-NEXT:    s_cselect_b32 s1, 1, 0
+; SI-NEXT:    s_lshr_b32 s4, s3, 8
+; SI-NEXT:    s_bfe_u32 s5, s3, 0xb0014
+; SI-NEXT:    s_and_b32 s4, s4, 0xffe
+; SI-NEXT:    s_sub_i32 s6, 0x3f1, s5
+; SI-NEXT:    s_or_b32 s1, s4, s1
+; SI-NEXT:    v_med3_i32 v4, s6, 0, 13
+; SI-NEXT:    s_or_b32 s4, s1, 0x1000
+; SI-NEXT:    v_readfirstlane_b32 s6, v4
+; SI-NEXT:    s_lshr_b32 s7, s4, s6
+; SI-NEXT:    s_lshl_b32 s6, s7, s6
 ; SI-NEXT:    s_cmp_lg_u32 s6, s4
 ; SI-NEXT:    s_cselect_b32 s4, 1, 0
-; SI-NEXT:    s_addk_i32 s7, 0xfc10
-; SI-NEXT:    s_or_b32 s4, s5, s4
-; SI-NEXT:    s_lshl_b32 s5, s7, 12
-; SI-NEXT:    s_or_b32 s5, s3, s5
-; SI-NEXT:    s_cmp_lt_i32 s7, 1
-; SI-NEXT:    s_cselect_b32 s4, s4, s5
-; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
-; SI-NEXT:    s_and_b32 s5, s4, 7
-; SI-NEXT:    s_cmp_gt_i32 s5, 5
-; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1
-; SI-NEXT:    v_cvt_f32_f16_e32 v2, v0
-; SI-NEXT:    v_cvt_f32_f16_e32 v4, v4
+; SI-NEXT:    s_addk_i32 s5, 0xfc10
+; SI-NEXT:    s_lshl_b32 s6, s5, 12
+; SI-NEXT:    s_or_b32 s4, s7, s4
+; SI-NEXT:    s_or_b32 s6, s1, s6
+; SI-NEXT:    s_cmp_lt_i32 s5, 1
+; SI-NEXT:    s_cselect_b32 s4, s4, s6
+; SI-NEXT:    s_and_b32 s6, s4, 7
+; SI-NEXT:    s_cmp_gt_i32 s6, 5
+; SI-NEXT:    s_cselect_b32 s7, 1, 0
+; SI-NEXT:    s_cmp_eq_u32 s6, 3
 ; SI-NEXT:    s_cselect_b32 s6, 1, 0
-; SI-NEXT:    s_cmp_eq_u32 s5, 3
-; SI-NEXT:    s_cselect_b32 s5, 1, 0
-; SI-NEXT:    s_or_b32 s5, s5, s6
 ; SI-NEXT:    s_lshr_b32 s4, s4, 2
-; SI-NEXT:    s_add_i32 s4, s4, s5
-; SI-NEXT:    v_cvt_f64_f32_e32 v[0:1], v1
-; SI-NEXT:    v_cvt_f64_f32_e32 v[2:3], v2
-; SI-NEXT:    v_cvt_f64_f32_e32 v[4:5], v4
-; SI-NEXT:    s_cmp_lt_i32 s7, 31
+; SI-NEXT:    s_or_b32 s6, s6, s7
+; SI-NEXT:    v_cvt_f64_f32_e32 v[0:1], v19
+; SI-NEXT:    v_cvt_f64_f32_e32 v[2:3], v20
+; SI-NEXT:    v_cvt_f64_f32_e32 v[18:19], v21
+; SI-NEXT:    s_add_i32 s4, s4, s6
+; SI-NEXT:    s_cmp_lt_i32 s5, 31
 ; SI-NEXT:    s_cselect_b32 s4, s4, 0x7c00
-; SI-NEXT:    s_cmp_lg_u32 s3, 0
-; SI-NEXT:    s_cselect_b32 s3, s2, 0x7c00
-; SI-NEXT:    s_cmpk_eq_i32 s7, 0x40f
-; SI-NEXT:    s_cselect_b32 s3, s3, s4
-; SI-NEXT:    s_lshr_b32 s1, s1, 16
-; SI-NEXT:    v_fma_f64 v[0:1], v[4:5], v[2:3], v[0:1]
-; SI-NEXT:    s_and_b32 s1, s1, 0x8000
-; SI-NEXT:    s_or_b32 s1, s1, s3
+; SI-NEXT:    s_cmp_lg_u32 s1, 0
+; SI-NEXT:    s_cselect_b32 s1, s2, 0x7c00
+; SI-NEXT:    s_cmpk_eq_i32 s5, 0x40f
+; SI-NEXT:    s_cselect_b32 s1, s1, s4
+; SI-NEXT:    s_lshr_b32 s3, s3, 16
+; SI-NEXT:    v_fma_f64 v[0:1], v[18:19], v[2:3], v[0:1]
+; SI-NEXT:    s_and_b32 s3, s3, 0x8000
+; SI-NEXT:    s_or_b32 s1, s3, s1
 ; SI-NEXT:    v_readfirstlane_b32 s3, v1
+; SI-NEXT:    s_and_b32 s1, s1, 0xffff
 ; SI-NEXT:    s_and_b32 s4, s3, 0x1ff
-; SI-NEXT:    v_or_b32_e32 v0, s4, v0
-; SI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
-; SI-NEXT:    s_lshr_b32 s4, s3, 8
-; SI-NEXT:    s_bfe_u32 s6, s3, 0xb0014
-; SI-NEXT:    s_and_b32 s4, s4, 0xffe
 ; SI-NEXT:    v_readfirstlane_b32 s5, v0
-; SI-NEXT:    s_sub_i32 s7, 0x3f1, s6
 ; SI-NEXT:    s_or_b32 s4, s4, s5
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_lshr_b32 s5, s3, 8
+; SI-NEXT:    s_bfe_u32 s6, s3, 0xb0014
+; SI-NEXT:    s_and_b32 s5, s5, 0xffe
+; SI-NEXT:    s_sub_i32 s7, 0x3f1, s6
+; SI-NEXT:    s_or_b32 s4, s5, s4
 ; SI-NEXT:    v_med3_i32 v0, s7, 0, 13
 ; SI-NEXT:    s_or_b32 s5, s4, 0x1000
 ; SI-NEXT:    v_readfirstlane_b32 s7, v0
 ; SI-NEXT:    s_lshr_b32 s12, s5, s7
-; SI-NEXT:    s_and_b32 s1, s1, 0xffff
 ; SI-NEXT:    s_lshl_b32 s7, s12, s7
 ; SI-NEXT:    s_cmp_lg_u32 s7, s5
 ; SI-NEXT:    s_cselect_b32 s5, 1, 0

diff  --git a/llvm/test/CodeGen/AMDGPU/llvm.is.fpclass.bf16.ll b/llvm/test/CodeGen/AMDGPU/llvm.is.fpclass.bf16.ll
index 52e9474f46777..ffc0b075b3fd3 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.is.fpclass.bf16.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.is.fpclass.bf16.ll
@@ -23,8 +23,8 @@ define amdgpu_kernel void @sgpr_isnan_bf16(ptr addrspace(1) %out, bfloat %x) {
 ; GFX7CHECK-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX7CHECK-NEXT:    s_and_b32 s4, s6, 0x7fff
 ; GFX7CHECK-NEXT:    s_cmpk_gt_i32 s4, 0x7f80
-; GFX7CHECK-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; GFX7CHECK-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX7CHECK-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX7CHECK-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GFX7CHECK-NEXT:    s_endpgm
 ;
@@ -35,10 +35,10 @@ define amdgpu_kernel void @sgpr_isnan_bf16(ptr addrspace(1) %out, bfloat %x) {
 ; GFX8CHECK-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX8CHECK-NEXT:    s_and_b32 s2, s2, 0x7fff
 ; GFX8CHECK-NEXT:    s_cmpk_gt_i32 s2, 0x7f80
-; GFX8CHECK-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX8CHECK-NEXT:    s_cselect_b32 s2, -1, 0
 ; GFX8CHECK-NEXT:    v_mov_b32_e32 v0, s0
-; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, -1, s[2:3]
 ; GFX8CHECK-NEXT:    v_mov_b32_e32 v1, s1
+; GFX8CHECK-NEXT:    v_mov_b32_e32 v2, s2
 ; GFX8CHECK-NEXT:    flat_store_dword v[0:1], v2
 ; GFX8CHECK-NEXT:    s_endpgm
 ;
@@ -50,8 +50,8 @@ define amdgpu_kernel void @sgpr_isnan_bf16(ptr addrspace(1) %out, bfloat %x) {
 ; GFX9CHECK-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9CHECK-NEXT:    s_and_b32 s2, s2, 0x7fff
 ; GFX9CHECK-NEXT:    s_cmpk_gt_i32 s2, 0x7f80
-; GFX9CHECK-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s[2:3]
+; GFX9CHECK-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX9CHECK-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX9CHECK-NEXT:    global_store_dword v0, v1, s[0:1]
 ; GFX9CHECK-NEXT:    s_endpgm
 ;
@@ -65,7 +65,7 @@ define amdgpu_kernel void @sgpr_isnan_bf16(ptr addrspace(1) %out, bfloat %x) {
 ; GFX10CHECK-NEXT:    s_and_b32 s2, s2, 0x7fff
 ; GFX10CHECK-NEXT:    s_cmpk_gt_i32 s2, 0x7f80
 ; GFX10CHECK-NEXT:    s_cselect_b32 s2, -1, 0
-; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; GFX10CHECK-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX10CHECK-NEXT:    global_store_dword v0, v1, s[0:1]
 ; GFX10CHECK-NEXT:    s_endpgm
 ;
@@ -74,12 +74,11 @@ define amdgpu_kernel void @sgpr_isnan_bf16(ptr addrspace(1) %out, bfloat %x) {
 ; GFX11CHECK-NEXT:    s_clause 0x1
 ; GFX11CHECK-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11CHECK-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11CHECK-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11CHECK-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11CHECK-NEXT:    s_and_b32 s2, s2, 0x7fff
 ; GFX11CHECK-NEXT:    s_cmpk_gt_i32 s2, 0x7f80
 ; GFX11CHECK-NEXT:    s_cselect_b32 s2, -1, 0
-; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; GFX11CHECK-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11CHECK-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11CHECK-NEXT:    s_endpgm
   %result = call i1 @llvm.is.fpclass.bf16(bfloat %x, i32 3)

diff  --git a/llvm/test/CodeGen/AMDGPU/llvm.is.fpclass.f16.ll b/llvm/test/CodeGen/AMDGPU/llvm.is.fpclass.f16.ll
index 9e09b2111c1aa..62f3c06e5b523 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.is.fpclass.f16.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.is.fpclass.f16.ll
@@ -25,8 +25,8 @@ define amdgpu_kernel void @sgpr_isnan_f16(ptr addrspace(1) %out, half %x) {
 ; GFX7SELDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX7SELDAG-NEXT:    s_and_b32 s4, s6, 0x7fff
 ; GFX7SELDAG-NEXT:    s_cmpk_gt_i32 s4, 0x7c00
-; GFX7SELDAG-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GFX7SELDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; GFX7SELDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX7SELDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX7SELDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GFX7SELDAG-NEXT:    s_endpgm
 ;
@@ -51,9 +51,11 @@ define amdgpu_kernel void @sgpr_isnan_f16(ptr addrspace(1) %out, half %x) {
 ; GFX8SELDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24
 ; GFX8SELDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX8SELDAG-NEXT:    v_cmp_class_f16_e64 s[2:3], s2, 3
+; GFX8SELDAG-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX8SELDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; GFX8SELDAG-NEXT:    v_mov_b32_e32 v0, s0
-; GFX8SELDAG-NEXT:    v_cndmask_b32_e64 v2, 0, -1, s[2:3]
 ; GFX8SELDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX8SELDAG-NEXT:    v_mov_b32_e32 v2, s2
 ; GFX8SELDAG-NEXT:    flat_store_dword v[0:1], v2
 ; GFX8SELDAG-NEXT:    s_endpgm
 ;
@@ -78,7 +80,9 @@ define amdgpu_kernel void @sgpr_isnan_f16(ptr addrspace(1) %out, half %x) {
 ; GFX9SELDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX9SELDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9SELDAG-NEXT:    v_cmp_class_f16_e64 s[2:3], s2, 3
-; GFX9SELDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s[2:3]
+; GFX9SELDAG-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9SELDAG-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX9SELDAG-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX9SELDAG-NEXT:    global_store_dword v0, v1, s[0:1]
 ; GFX9SELDAG-NEXT:    s_endpgm
 ;
@@ -103,7 +107,9 @@ define amdgpu_kernel void @sgpr_isnan_f16(ptr addrspace(1) %out, half %x) {
 ; GFX10SELDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX10SELDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX10SELDAG-NEXT:    v_cmp_class_f16_e64 s2, s2, 3
-; GFX10SELDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; GFX10SELDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10SELDAG-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX10SELDAG-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX10SELDAG-NEXT:    global_store_dword v0, v1, s[0:1]
 ; GFX10SELDAG-NEXT:    s_endpgm
 ;
@@ -126,11 +132,14 @@ define amdgpu_kernel void @sgpr_isnan_f16(ptr addrspace(1) %out, half %x) {
 ; GFX11SELDAG-TRUE16-NEXT:    s_clause 0x1
 ; GFX11SELDAG-TRUE16-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11SELDAG-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11SELDAG-TRUE16-NEXT:    v_dual_mov_b32 v0, 3 :: v_dual_mov_b32 v1, 0
+; GFX11SELDAG-TRUE16-NEXT:    v_mov_b32_e32 v0, 3
 ; GFX11SELDAG-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11SELDAG-TRUE16-NEXT:    v_cmp_class_f16_e32 vcc_lo, s2, v0.l
-; GFX11SELDAG-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo
-; GFX11SELDAG-TRUE16-NEXT:    global_store_b32 v1, v0, s[0:1]
+; GFX11SELDAG-TRUE16-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11SELDAG-TRUE16-NEXT:    s_and_b32 s2, vcc_lo, exec_lo
+; GFX11SELDAG-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11SELDAG-TRUE16-NEXT:    v_mov_b32_e32 v1, s2
+; GFX11SELDAG-TRUE16-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11SELDAG-TRUE16-NEXT:    s_endpgm
 ;
 ; GFX11SELDAG-FAKE16-LABEL: sgpr_isnan_f16:
@@ -138,10 +147,11 @@ define amdgpu_kernel void @sgpr_isnan_f16(ptr addrspace(1) %out, half %x) {
 ; GFX11SELDAG-FAKE16-NEXT:    s_clause 0x1
 ; GFX11SELDAG-FAKE16-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11SELDAG-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11SELDAG-FAKE16-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11SELDAG-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11SELDAG-FAKE16-NEXT:    v_cmp_class_f16_e64 s2, s2, 3
-; GFX11SELDAG-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; GFX11SELDAG-FAKE16-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11SELDAG-FAKE16-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11SELDAG-FAKE16-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11SELDAG-FAKE16-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11SELDAG-FAKE16-NEXT:    s_endpgm
 ;

diff  --git a/llvm/test/CodeGen/AMDGPU/llvm.is.fpclass.ll b/llvm/test/CodeGen/AMDGPU/llvm.is.fpclass.ll
index edb8ca6f701d1..70108a090ee29 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.is.fpclass.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.is.fpclass.ll
@@ -22,7 +22,9 @@ define amdgpu_kernel void @sgpr_isnan_f32(ptr addrspace(1) %out, float %x) {
 ; GFX7SELDAG-NEXT:    s_mov_b32 s2, -1
 ; GFX7SELDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX7SELDAG-NEXT:    v_cmp_class_f32_e64 s[4:5], s6, 3
-; GFX7SELDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; GFX7SELDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX7SELDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX7SELDAG-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX7SELDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GFX7SELDAG-NEXT:    s_endpgm
 ;
@@ -46,9 +48,11 @@ define amdgpu_kernel void @sgpr_isnan_f32(ptr addrspace(1) %out, float %x) {
 ; GFX8SELDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24
 ; GFX8SELDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX8SELDAG-NEXT:    v_cmp_class_f32_e64 s[2:3], s2, 3
+; GFX8SELDAG-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX8SELDAG-NEXT:    s_cselect_b32 s2, -1, 0
 ; GFX8SELDAG-NEXT:    v_mov_b32_e32 v0, s0
-; GFX8SELDAG-NEXT:    v_cndmask_b32_e64 v2, 0, -1, s[2:3]
 ; GFX8SELDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX8SELDAG-NEXT:    v_mov_b32_e32 v2, s2
 ; GFX8SELDAG-NEXT:    flat_store_dword v[0:1], v2
 ; GFX8SELDAG-NEXT:    s_endpgm
 ;
@@ -73,7 +77,9 @@ define amdgpu_kernel void @sgpr_isnan_f32(ptr addrspace(1) %out, float %x) {
 ; GFX9SELDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX9SELDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9SELDAG-NEXT:    v_cmp_class_f32_e64 s[2:3], s2, 3
-; GFX9SELDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s[2:3]
+; GFX9SELDAG-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9SELDAG-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX9SELDAG-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX9SELDAG-NEXT:    global_store_dword v0, v1, s[0:1]
 ; GFX9SELDAG-NEXT:    s_endpgm
 ;
@@ -98,7 +104,9 @@ define amdgpu_kernel void @sgpr_isnan_f32(ptr addrspace(1) %out, float %x) {
 ; GFX10SELDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX10SELDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX10SELDAG-NEXT:    v_cmp_class_f32_e64 s2, s2, 3
-; GFX10SELDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; GFX10SELDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10SELDAG-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX10SELDAG-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX10SELDAG-NEXT:    global_store_dword v0, v1, s[0:1]
 ; GFX10SELDAG-NEXT:    s_endpgm
 ;
@@ -121,11 +129,12 @@ define amdgpu_kernel void @sgpr_isnan_f32(ptr addrspace(1) %out, float %x) {
 ; GFX11SELDAG-NEXT:    s_clause 0x1
 ; GFX11SELDAG-NEXT:    s_load_b32 s2, s[4:5], 0x2c
 ; GFX11SELDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24
-; GFX11SELDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11SELDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11SELDAG-NEXT:    v_cmp_class_f32_e64 s2, s2, 3
-; GFX11SELDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11SELDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; GFX11SELDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11SELDAG-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11SELDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11SELDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11SELDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11SELDAG-NEXT:    s_endpgm
 ;
@@ -153,14 +162,14 @@ define amdgpu_kernel void @sgpr_isnan_f64(ptr addrspace(1) %out, double %x) {
 ; GFX7SELDAG-LABEL: sgpr_isnan_f64:
 ; GFX7SELDAG:       ; %bb.0:
 ; GFX7SELDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9
-; GFX7SELDAG-NEXT:    s_mov_b32 s7, 0xf000
-; GFX7SELDAG-NEXT:    s_mov_b32 s6, -1
 ; GFX7SELDAG-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX7SELDAG-NEXT:    s_mov_b32 s4, s0
-; GFX7SELDAG-NEXT:    s_mov_b32 s5, s1
-; GFX7SELDAG-NEXT:    v_cmp_class_f64_e64 s[0:1], s[2:3], 3
-; GFX7SELDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[0:1]
-; GFX7SELDAG-NEXT:    buffer_store_dword v0, off, s[4:7], 0
+; GFX7SELDAG-NEXT:    v_cmp_class_f64_e64 s[4:5], s[2:3], 3
+; GFX7SELDAG-NEXT:    s_mov_b32 s3, 0xf000
+; GFX7SELDAG-NEXT:    s_mov_b32 s2, -1
+; GFX7SELDAG-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX7SELDAG-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX7SELDAG-NEXT:    v_mov_b32_e32 v0, s4
+; GFX7SELDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GFX7SELDAG-NEXT:    s_endpgm
 ;
 ; GFX7GLISEL-LABEL: sgpr_isnan_f64:
@@ -180,10 +189,12 @@ define amdgpu_kernel void @sgpr_isnan_f64(ptr addrspace(1) %out, double %x) {
 ; GFX8SELDAG:       ; %bb.0:
 ; GFX8SELDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
 ; GFX8SELDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX8SELDAG-NEXT:    v_cmp_class_f64_e64 s[2:3], s[2:3], 3
 ; GFX8SELDAG-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX8SELDAG-NEXT:    v_mov_b32_e32 v1, s1
-; GFX8SELDAG-NEXT:    v_cmp_class_f64_e64 s[0:1], s[2:3], 3
-; GFX8SELDAG-NEXT:    v_cndmask_b32_e64 v2, 0, -1, s[0:1]
+; GFX8SELDAG-NEXT:    s_and_b64 s[0:1], s[2:3], exec
+; GFX8SELDAG-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX8SELDAG-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX8SELDAG-NEXT:    flat_store_dword v[0:1], v2
 ; GFX8SELDAG-NEXT:    s_endpgm
 ;
@@ -206,7 +217,9 @@ define amdgpu_kernel void @sgpr_isnan_f64(ptr addrspace(1) %out, double %x) {
 ; GFX9SELDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX9SELDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9SELDAG-NEXT:    v_cmp_class_f64_e64 s[2:3], s[2:3], 3
-; GFX9SELDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s[2:3]
+; GFX9SELDAG-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9SELDAG-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX9SELDAG-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX9SELDAG-NEXT:    global_store_dword v0, v1, s[0:1]
 ; GFX9SELDAG-NEXT:    s_endpgm
 ;
@@ -228,7 +241,9 @@ define amdgpu_kernel void @sgpr_isnan_f64(ptr addrspace(1) %out, double %x) {
 ; GFX10SELDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX10SELDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX10SELDAG-NEXT:    v_cmp_class_f64_e64 s2, s[2:3], 3
-; GFX10SELDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; GFX10SELDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10SELDAG-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX10SELDAG-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX10SELDAG-NEXT:    global_store_dword v0, v1, s[0:1]
 ; GFX10SELDAG-NEXT:    s_endpgm
 ;
@@ -247,11 +262,12 @@ define amdgpu_kernel void @sgpr_isnan_f64(ptr addrspace(1) %out, double %x) {
 ; GFX11SELDAG-LABEL: sgpr_isnan_f64:
 ; GFX11SELDAG:       ; %bb.0:
 ; GFX11SELDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11SELDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11SELDAG-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11SELDAG-NEXT:    v_cmp_class_f64_e64 s2, s[2:3], 3
-; GFX11SELDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11SELDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2
+; GFX11SELDAG-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11SELDAG-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11SELDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11SELDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
 ; GFX11SELDAG-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11SELDAG-NEXT:    s_endpgm
 ;

diff  --git a/llvm/test/CodeGen/AMDGPU/llvm.set.rounding.ll b/llvm/test/CodeGen/AMDGPU/llvm.set.rounding.ll
index aadd16a22daf7..9bfa066830a51 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.set.rounding.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.set.rounding.ll
@@ -1562,119 +1562,45 @@ define amdgpu_gfx void @s_set_rounding_i3_zeroext(i3 zeroext inreg %rounding) {
 }
 
 define amdgpu_gfx void @s_set_rounding_select_0_1(i32 inreg %cond) {
-; GFX6-SDAG-LABEL: s_set_rounding_select_0_1:
-; GFX6-SDAG:       ; %bb.0:
-; GFX6-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX6-SDAG-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX6-SDAG-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GFX6-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[34:35]
-; GFX6-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX6-SDAG-NEXT:    v_lshr_b32_e32 v0, 0xa50f, v0
-; GFX6-SDAG-NEXT:    v_readfirstlane_b32 s34, v0
-; GFX6-SDAG-NEXT:    s_setreg_b32 hwreg(HW_REG_MODE, 0, 4), s34
-; GFX6-SDAG-NEXT:    s_setpc_b64 s[30:31]
-;
-; GFX678-GISEL-LABEL: s_set_rounding_select_0_1:
-; GFX678-GISEL:       ; %bb.0:
-; GFX678-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX678-GISEL-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX678-GISEL-NEXT:    s_cselect_b32 s34, 1, 0
-; GFX678-GISEL-NEXT:    s_lshl_b32 s34, s34, 2
-; GFX678-GISEL-NEXT:    s_lshr_b32 s34, 0xa50f, s34
-; GFX678-GISEL-NEXT:    s_setreg_b32 hwreg(HW_REG_MODE, 0, 4), s34
-; GFX678-GISEL-NEXT:    s_setpc_b64 s[30:31]
-;
-; GFX7-SDAG-LABEL: s_set_rounding_select_0_1:
-; GFX7-SDAG:       ; %bb.0:
-; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX7-SDAG-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX7-SDAG-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GFX7-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[34:35]
-; GFX7-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX7-SDAG-NEXT:    v_lshr_b32_e32 v0, 0xa50f, v0
-; GFX7-SDAG-NEXT:    v_readfirstlane_b32 s34, v0
-; GFX7-SDAG-NEXT:    s_setreg_b32 hwreg(HW_REG_MODE, 0, 4), s34
-; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]
-;
-; GFX8-SDAG-LABEL: s_set_rounding_select_0_1:
-; GFX8-SDAG:       ; %bb.0:
-; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX8-SDAG-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX8-SDAG-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GFX8-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[34:35]
-; GFX8-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX8-SDAG-NEXT:    s_mov_b32 s34, 0xa50f
-; GFX8-SDAG-NEXT:    v_lshrrev_b32_e64 v0, v0, s34
-; GFX8-SDAG-NEXT:    v_readfirstlane_b32 s34, v0
-; GFX8-SDAG-NEXT:    s_setreg_b32 hwreg(HW_REG_MODE, 0, 4), s34
-; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]
-;
-; GFX9-SDAG-LABEL: s_set_rounding_select_0_1:
-; GFX9-SDAG:       ; %bb.0:
-; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX9-SDAG-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-SDAG-NEXT:    s_cselect_b64 s[34:35], -1, 0
-; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[34:35]
-; GFX9-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX9-SDAG-NEXT:    s_mov_b32 s34, 0xa50f
-; GFX9-SDAG-NEXT:    v_lshrrev_b32_e64 v0, v0, s34
-; GFX9-SDAG-NEXT:    v_readfirstlane_b32 s34, v0
-; GFX9-SDAG-NEXT:    s_setreg_b32 hwreg(HW_REG_MODE, 0, 4), s34
-; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]
-;
-; GFX9-GISEL-LABEL: s_set_rounding_select_0_1:
-; GFX9-GISEL:       ; %bb.0:
-; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX9-GISEL-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX9-GISEL-NEXT:    s_cselect_b32 s34, 1, 0
-; GFX9-GISEL-NEXT:    s_lshl_b32 s34, s34, 2
-; GFX9-GISEL-NEXT:    s_lshr_b32 s34, 0xa50f, s34
-; GFX9-GISEL-NEXT:    s_setreg_b32 hwreg(HW_REG_MODE, 0, 4), s34
-; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]
-;
-; GFX10-SDAG-LABEL: s_set_rounding_select_0_1:
-; GFX10-SDAG:       ; %bb.0:
-; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX10-SDAG-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX10-SDAG-NEXT:    s_cselect_b32 s34, -1, 0
-; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s34
-; GFX10-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX10-SDAG-NEXT:    v_lshrrev_b32_e64 v0, v0, 0xa50f
-; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s34, v0
-; GFX10-SDAG-NEXT:    s_setreg_b32 hwreg(HW_REG_MODE, 0, 4), s34
-; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]
-;
-; GFX10-GISEL-LABEL: s_set_rounding_select_0_1:
-; GFX10-GISEL:       ; %bb.0:
-; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX10-GISEL-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX10-GISEL-NEXT:    s_cselect_b32 s34, 1, 0
-; GFX10-GISEL-NEXT:    s_lshl_b32 s34, s34, 2
-; GFX10-GISEL-NEXT:    s_lshr_b32 s34, 0xa50f, s34
-; GFX10-GISEL-NEXT:    s_setreg_b32 hwreg(HW_REG_MODE, 0, 4), s34
-; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]
+; GFX678-LABEL: s_set_rounding_select_0_1:
+; GFX678:       ; %bb.0:
+; GFX678-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX678-NEXT:    s_cmp_lg_u32 s4, 0
+; GFX678-NEXT:    s_cselect_b32 s34, 1, 0
+; GFX678-NEXT:    s_lshl_b32 s34, s34, 2
+; GFX678-NEXT:    s_lshr_b32 s34, 0xa50f, s34
+; GFX678-NEXT:    s_setreg_b32 hwreg(HW_REG_MODE, 0, 4), s34
+; GFX678-NEXT:    s_setpc_b64 s[30:31]
 ;
-; GFX11-SDAG-LABEL: s_set_rounding_select_0_1:
-; GFX11-SDAG:       ; %bb.0:
-; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-SDAG-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-SDAG-NEXT:    s_cselect_b32 s0, -1, 0
-; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; GFX11-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX11-SDAG-NEXT:    v_lshrrev_b32_e64 v0, v0, 0xa50f
-; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v0
-; GFX11-SDAG-NEXT:    s_setreg_b32 hwreg(HW_REG_MODE, 0, 4), s0
-; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]
+; GFX9-LABEL: s_set_rounding_select_0_1:
+; GFX9:       ; %bb.0:
+; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 0
+; GFX9-NEXT:    s_cselect_b32 s34, 1, 0
+; GFX9-NEXT:    s_lshl_b32 s34, s34, 2
+; GFX9-NEXT:    s_lshr_b32 s34, 0xa50f, s34
+; GFX9-NEXT:    s_setreg_b32 hwreg(HW_REG_MODE, 0, 4), s34
+; GFX9-NEXT:    s_setpc_b64 s[30:31]
 ;
-; GFX11-GISEL-LABEL: s_set_rounding_select_0_1:
-; GFX11-GISEL:       ; %bb.0:
-; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GISEL-NEXT:    s_cmp_lg_u32 s4, 0
-; GFX11-GISEL-NEXT:    s_cselect_b32 s0, 1, 0
-; GFX11-GISEL-NEXT:    s_lshl_b32 s0, s0, 2
-; GFX11-GISEL-NEXT:    s_lshr_b32 s0, 0xa50f, s0
-; GFX11-GISEL-NEXT:    s_setreg_b32 hwreg(HW_REG_MODE, 0, 4), s0
-; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]
+; GFX10-LABEL: s_set_rounding_select_0_1:
+; GFX10:       ; %bb.0:
+; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-NEXT:    s_cmp_lg_u32 s4, 0
+; GFX10-NEXT:    s_cselect_b32 s34, 1, 0
+; GFX10-NEXT:    s_lshl_b32 s34, s34, 2
+; GFX10-NEXT:    s_lshr_b32 s34, 0xa50f, s34
+; GFX10-NEXT:    s_setreg_b32 hwreg(HW_REG_MODE, 0, 4), s34
+; GFX10-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-LABEL: s_set_rounding_select_0_1:
+; GFX11:       ; %bb.0:
+; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 0
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_lshl_b32 s0, s0, 2
+; GFX11-NEXT:    s_lshr_b32 s0, 0xa50f, s0
+; GFX11-NEXT:    s_setreg_b32 hwreg(HW_REG_MODE, 0, 4), s0
+; GFX11-NEXT:    s_setpc_b64 s[30:31]
   %cmp = icmp eq i32 %cond, 0
   %rounding = select i1 %cmp, i32 0, i32 1
   call void @llvm.set.rounding(i32 %rounding)

diff  --git a/llvm/test/CodeGen/AMDGPU/long-branch-reserve-register.ll b/llvm/test/CodeGen/AMDGPU/long-branch-reserve-register.ll
index 7c6000d092768..343efc07cd089 100644
--- a/llvm/test/CodeGen/AMDGPU/long-branch-reserve-register.ll
+++ b/llvm/test/CodeGen/AMDGPU/long-branch-reserve-register.ll
@@ -258,23 +258,33 @@ define amdgpu_kernel void @uniform_unconditional_min_long_forward_branch(ptr add
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_cmp_eq_u32 s0, 0
 ; GCN-NEXT:    s_mov_b64 s[0:1], -1
-; GCN-NEXT:    s_cbranch_scc0 .LBB5_1
-; GCN-NEXT:  ; %bb.7: ; %bb0
+; GCN-NEXT:    s_cbranch_scc1 .LBB5_1
+; GCN-NEXT:  ; %bb.5: ; %bb0
 ; GCN-NEXT:    s_getpc_b64 s[6:7]
-; GCN-NEXT:  .Lpost_getpc5:
-; GCN-NEXT:    s_add_u32 s6, s6, (.LBB5_4-.Lpost_getpc5)&4294967295
-; GCN-NEXT:    s_addc_u32 s7, s7, (.LBB5_4-.Lpost_getpc5)>>32
+; GCN-NEXT:  .Lpost_getpc4:
+; GCN-NEXT:    s_add_u32 s6, s6, (.LBB5_2-.Lpost_getpc4)&4294967295
+; GCN-NEXT:    s_addc_u32 s7, s7, (.LBB5_2-.Lpost_getpc4)>>32
 ; GCN-NEXT:    s_setpc_b64 s[6:7]
-; GCN-NEXT:  .LBB5_1: ; %Flow
-; GCN-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; GCN-NEXT:    s_cbranch_vccnz .LBB5_3
-; GCN-NEXT:  .LBB5_2: ; %bb2
+; GCN-NEXT:  .LBB5_1: ; %bb3
+; GCN-NEXT:    ;;#ASMSTART
+; GCN-NEXT:    v_nop_e64
+; GCN-NEXT:    v_nop_e64
+; GCN-NEXT:    v_nop_e64
+; GCN-NEXT:    v_nop_e64
+; GCN-NEXT:    ;;#ASMEND
+; GCN-NEXT:    s_mov_b64 s[0:1], 0
+; GCN-NEXT:  .LBB5_2: ; %Flow
+; GCN-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s0, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s0, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB5_4
+; GCN-NEXT:  ; %bb.3: ; %bb2
 ; GCN-NEXT:    s_mov_b32 s3, 0xf000
 ; GCN-NEXT:    s_mov_b32 s2, -1
 ; GCN-NEXT:    v_mov_b32_e32 v0, 17
 ; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GCN-NEXT:    s_waitcnt vmcnt(0)
-; GCN-NEXT:  .LBB5_3: ; %bb4
+; GCN-NEXT:  .LBB5_4: ; %bb4
 ; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9
 ; GCN-NEXT:    s_mov_b32 s3, 0xf000
 ; GCN-NEXT:    s_mov_b32 s2, -1
@@ -284,26 +294,6 @@ define amdgpu_kernel void @uniform_unconditional_min_long_forward_branch(ptr add
 ; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; GCN-NEXT:    s_waitcnt vmcnt(0)
 ; GCN-NEXT:    s_endpgm
-; GCN-NEXT:  .LBB5_4: ; %bb3
-; GCN-NEXT:    ;;#ASMSTART
-; GCN-NEXT:    v_nop_e64
-; GCN-NEXT:    v_nop_e64
-; GCN-NEXT:    v_nop_e64
-; GCN-NEXT:    v_nop_e64
-; GCN-NEXT:    ;;#ASMEND
-; GCN-NEXT:    s_cbranch_execnz .LBB5_5
-; GCN-NEXT:  ; %bb.9: ; %bb3
-; GCN-NEXT:    s_getpc_b64 s[6:7]
-; GCN-NEXT:  .Lpost_getpc6:
-; GCN-NEXT:    s_add_u32 s6, s6, (.LBB5_2-.Lpost_getpc6)&4294967295
-; GCN-NEXT:    s_addc_u32 s7, s7, (.LBB5_2-.Lpost_getpc6)>>32
-; GCN-NEXT:    s_setpc_b64 s[6:7]
-; GCN-NEXT:  .LBB5_5: ; %bb3
-; GCN-NEXT:    s_getpc_b64 s[6:7]
-; GCN-NEXT:  .Lpost_getpc4:
-; GCN-NEXT:    s_add_u32 s6, s6, (.LBB5_3-.Lpost_getpc4)&4294967295
-; GCN-NEXT:    s_addc_u32 s7, s7, (.LBB5_3-.Lpost_getpc4)>>32
-; GCN-NEXT:    s_setpc_b64 s[6:7]
 bb0:
   %tmp = icmp ne i32 %arg1, 0
   br i1 %tmp, label %bb2, label %bb3

diff  --git a/llvm/test/CodeGen/AMDGPU/mad-combine.ll b/llvm/test/CodeGen/AMDGPU/mad-combine.ll
index cf6732d30d080..6f9f65975b94d 100644
--- a/llvm/test/CodeGen/AMDGPU/mad-combine.ll
+++ b/llvm/test/CodeGen/AMDGPU/mad-combine.ll
@@ -1073,14 +1073,20 @@ define amdgpu_kernel void @aggressive_combine_to_mad_fsub_0_f32(ptr addrspace(1)
 ; SI-STD-NEXT:    v_mul_f32_e32 v4, v6, v1
 ; SI-STD-NEXT:    v_fma_f32 v4, v2, v3, v4
 ; SI-STD-NEXT:    v_sub_f32_e32 v4, v4, v5
-; SI-STD-NEXT:    s_cbranch_execz .LBB12_3
-; SI-STD-NEXT:    s_branch .LBB12_4
+; SI-STD-NEXT:    s_mov_b64 s[2:3], 0
+; SI-STD-NEXT:    s_branch .LBB12_3
 ; SI-STD-NEXT:  .LBB12_2:
+; SI-STD-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-STD-NEXT:    ; implicit-def: $vgpr4
-; SI-STD-NEXT:  .LBB12_3: ; %aggressive
+; SI-STD-NEXT:  .LBB12_3: ; %Flow
+; SI-STD-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-STD-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-STD-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-STD-NEXT:    s_cbranch_scc1 .LBB12_5
+; SI-STD-NEXT:  ; %bb.4: ; %aggressive
 ; SI-STD-NEXT:    v_mad_f32 v4, v6, v1, -v5
 ; SI-STD-NEXT:    v_mac_f32_e32 v4, v2, v3
-; SI-STD-NEXT:  .LBB12_4: ; %exit
+; SI-STD-NEXT:  .LBB12_5: ; %exit
 ; SI-STD-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-STD-NEXT:    s_mov_b32 s2, 0
 ; SI-STD-NEXT:    v_mov_b32_e32 v1, 0
@@ -1115,14 +1121,20 @@ define amdgpu_kernel void @aggressive_combine_to_mad_fsub_0_f32(ptr addrspace(1)
 ; SI-DENORM-FASTFMAF-NEXT:    v_mul_f32_e32 v4, v6, v1
 ; SI-DENORM-FASTFMAF-NEXT:    v_fma_f32 v4, v2, v3, v4
 ; SI-DENORM-FASTFMAF-NEXT:    v_sub_f32_e32 v4, v4, v5
-; SI-DENORM-FASTFMAF-NEXT:    s_cbranch_execz .LBB12_3
-; SI-DENORM-FASTFMAF-NEXT:    s_branch .LBB12_4
+; SI-DENORM-FASTFMAF-NEXT:    s_mov_b64 s[2:3], 0
+; SI-DENORM-FASTFMAF-NEXT:    s_branch .LBB12_3
 ; SI-DENORM-FASTFMAF-NEXT:  .LBB12_2:
+; SI-DENORM-FASTFMAF-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-DENORM-FASTFMAF-NEXT:    ; implicit-def: $vgpr4
-; SI-DENORM-FASTFMAF-NEXT:  .LBB12_3: ; %aggressive
+; SI-DENORM-FASTFMAF-NEXT:  .LBB12_3: ; %Flow
+; SI-DENORM-FASTFMAF-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-DENORM-FASTFMAF-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-DENORM-FASTFMAF-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-DENORM-FASTFMAF-NEXT:    s_cbranch_scc1 .LBB12_5
+; SI-DENORM-FASTFMAF-NEXT:  ; %bb.4: ; %aggressive
 ; SI-DENORM-FASTFMAF-NEXT:    v_fma_f32 v1, v6, v1, -v5
 ; SI-DENORM-FASTFMAF-NEXT:    v_fma_f32 v4, v2, v3, v1
-; SI-DENORM-FASTFMAF-NEXT:  .LBB12_4: ; %exit
+; SI-DENORM-FASTFMAF-NEXT:  .LBB12_5: ; %exit
 ; SI-DENORM-FASTFMAF-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-DENORM-FASTFMAF-NEXT:    s_mov_b32 s2, 0
 ; SI-DENORM-FASTFMAF-NEXT:    v_mov_b32_e32 v1, 0
@@ -1157,13 +1169,19 @@ define amdgpu_kernel void @aggressive_combine_to_mad_fsub_0_f32(ptr addrspace(1)
 ; SI-DENORM-SLOWFMAF-NEXT:    s_cbranch_vccnz .LBB12_2
 ; SI-DENORM-SLOWFMAF-NEXT:  ; %bb.1: ; %normal
 ; SI-DENORM-SLOWFMAF-NEXT:    v_sub_f32_e32 v3, v1, v2
-; SI-DENORM-SLOWFMAF-NEXT:    s_cbranch_execz .LBB12_3
-; SI-DENORM-SLOWFMAF-NEXT:    s_branch .LBB12_4
+; SI-DENORM-SLOWFMAF-NEXT:    s_mov_b64 s[2:3], 0
+; SI-DENORM-SLOWFMAF-NEXT:    s_branch .LBB12_3
 ; SI-DENORM-SLOWFMAF-NEXT:  .LBB12_2:
+; SI-DENORM-SLOWFMAF-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-DENORM-SLOWFMAF-NEXT:    ; implicit-def: $vgpr3
-; SI-DENORM-SLOWFMAF-NEXT:  .LBB12_3: ; %aggressive
+; SI-DENORM-SLOWFMAF-NEXT:  .LBB12_3: ; %Flow
+; SI-DENORM-SLOWFMAF-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-DENORM-SLOWFMAF-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-DENORM-SLOWFMAF-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-DENORM-SLOWFMAF-NEXT:    s_cbranch_scc1 .LBB12_5
+; SI-DENORM-SLOWFMAF-NEXT:  ; %bb.4: ; %aggressive
 ; SI-DENORM-SLOWFMAF-NEXT:    v_sub_f32_e32 v3, v1, v2
-; SI-DENORM-SLOWFMAF-NEXT:  .LBB12_4: ; %exit
+; SI-DENORM-SLOWFMAF-NEXT:  .LBB12_5: ; %exit
 ; SI-DENORM-SLOWFMAF-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-DENORM-SLOWFMAF-NEXT:    s_mov_b32 s2, 0
 ; SI-DENORM-SLOWFMAF-NEXT:    v_mov_b32_e32 v1, 0
@@ -1283,14 +1301,20 @@ define amdgpu_kernel void @aggressive_combine_to_mad_fsub_2_f32(ptr addrspace(1)
 ; SI-STD-NEXT:    v_mul_f32_e32 v4, v6, v1
 ; SI-STD-NEXT:    v_mac_f32_e32 v4, v2, v3
 ; SI-STD-NEXT:    v_sub_f32_e32 v4, v4, v5
-; SI-STD-NEXT:    s_cbranch_execz .LBB14_3
-; SI-STD-NEXT:    s_branch .LBB14_4
+; SI-STD-NEXT:    s_mov_b64 s[2:3], 0
+; SI-STD-NEXT:    s_branch .LBB14_3
 ; SI-STD-NEXT:  .LBB14_2:
+; SI-STD-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-STD-NEXT:    ; implicit-def: $vgpr4
-; SI-STD-NEXT:  .LBB14_3: ; %aggressive
+; SI-STD-NEXT:  .LBB14_3: ; %Flow
+; SI-STD-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-STD-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-STD-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-STD-NEXT:    s_cbranch_scc1 .LBB14_5
+; SI-STD-NEXT:  ; %bb.4: ; %aggressive
 ; SI-STD-NEXT:    v_mad_f32 v4, v6, v1, -v5
 ; SI-STD-NEXT:    v_mac_f32_e32 v4, v2, v3
-; SI-STD-NEXT:  .LBB14_4: ; %exit
+; SI-STD-NEXT:  .LBB14_5: ; %exit
 ; SI-STD-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-STD-NEXT:    s_mov_b32 s2, 0
 ; SI-STD-NEXT:    v_mov_b32_e32 v1, 0
@@ -1325,14 +1349,20 @@ define amdgpu_kernel void @aggressive_combine_to_mad_fsub_2_f32(ptr addrspace(1)
 ; SI-DENORM-FASTFMAF-NEXT:    v_mul_f32_e32 v4, v6, v1
 ; SI-DENORM-FASTFMAF-NEXT:    v_fma_f32 v4, v2, v3, v4
 ; SI-DENORM-FASTFMAF-NEXT:    v_sub_f32_e32 v4, v4, v5
-; SI-DENORM-FASTFMAF-NEXT:    s_cbranch_execz .LBB14_3
-; SI-DENORM-FASTFMAF-NEXT:    s_branch .LBB14_4
+; SI-DENORM-FASTFMAF-NEXT:    s_mov_b64 s[2:3], 0
+; SI-DENORM-FASTFMAF-NEXT:    s_branch .LBB14_3
 ; SI-DENORM-FASTFMAF-NEXT:  .LBB14_2:
+; SI-DENORM-FASTFMAF-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-DENORM-FASTFMAF-NEXT:    ; implicit-def: $vgpr4
-; SI-DENORM-FASTFMAF-NEXT:  .LBB14_3: ; %aggressive
+; SI-DENORM-FASTFMAF-NEXT:  .LBB14_3: ; %Flow
+; SI-DENORM-FASTFMAF-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-DENORM-FASTFMAF-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-DENORM-FASTFMAF-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-DENORM-FASTFMAF-NEXT:    s_cbranch_scc1 .LBB14_5
+; SI-DENORM-FASTFMAF-NEXT:  ; %bb.4: ; %aggressive
 ; SI-DENORM-FASTFMAF-NEXT:    v_fma_f32 v1, v6, v1, -v5
 ; SI-DENORM-FASTFMAF-NEXT:    v_fma_f32 v4, v2, v3, v1
-; SI-DENORM-FASTFMAF-NEXT:  .LBB14_4: ; %exit
+; SI-DENORM-FASTFMAF-NEXT:  .LBB14_5: ; %exit
 ; SI-DENORM-FASTFMAF-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-DENORM-FASTFMAF-NEXT:    s_mov_b32 s2, 0
 ; SI-DENORM-FASTFMAF-NEXT:    v_mov_b32_e32 v1, 0
@@ -1368,13 +1398,19 @@ define amdgpu_kernel void @aggressive_combine_to_mad_fsub_2_f32(ptr addrspace(1)
 ; SI-DENORM-SLOWFMAF-NEXT:    s_cbranch_vccnz .LBB14_2
 ; SI-DENORM-SLOWFMAF-NEXT:  ; %bb.1: ; %normal
 ; SI-DENORM-SLOWFMAF-NEXT:    v_sub_f32_e32 v3, v1, v2
-; SI-DENORM-SLOWFMAF-NEXT:    s_cbranch_execz .LBB14_3
-; SI-DENORM-SLOWFMAF-NEXT:    s_branch .LBB14_4
+; SI-DENORM-SLOWFMAF-NEXT:    s_mov_b64 s[2:3], 0
+; SI-DENORM-SLOWFMAF-NEXT:    s_branch .LBB14_3
 ; SI-DENORM-SLOWFMAF-NEXT:  .LBB14_2:
+; SI-DENORM-SLOWFMAF-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-DENORM-SLOWFMAF-NEXT:    ; implicit-def: $vgpr3
-; SI-DENORM-SLOWFMAF-NEXT:  .LBB14_3: ; %aggressive
+; SI-DENORM-SLOWFMAF-NEXT:  .LBB14_3: ; %Flow
+; SI-DENORM-SLOWFMAF-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-DENORM-SLOWFMAF-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-DENORM-SLOWFMAF-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-DENORM-SLOWFMAF-NEXT:    s_cbranch_scc1 .LBB14_5
+; SI-DENORM-SLOWFMAF-NEXT:  ; %bb.4: ; %aggressive
 ; SI-DENORM-SLOWFMAF-NEXT:    v_sub_f32_e32 v3, v1, v2
-; SI-DENORM-SLOWFMAF-NEXT:  .LBB14_4: ; %exit
+; SI-DENORM-SLOWFMAF-NEXT:  .LBB14_5: ; %exit
 ; SI-DENORM-SLOWFMAF-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-DENORM-SLOWFMAF-NEXT:    s_mov_b32 s2, 0
 ; SI-DENORM-SLOWFMAF-NEXT:    v_mov_b32_e32 v1, 0
@@ -1445,14 +1481,20 @@ define amdgpu_kernel void @aggressive_combine_to_mad_fsub_3_f32(ptr addrspace(1)
 ; SI-STD-NEXT:    v_mul_f32_e32 v5, v6, v1
 ; SI-STD-NEXT:    v_mac_f32_e32 v5, v3, v4
 ; SI-STD-NEXT:    v_sub_f32_e32 v5, v2, v5
-; SI-STD-NEXT:    s_cbranch_execz .LBB15_3
-; SI-STD-NEXT:    s_branch .LBB15_4
+; SI-STD-NEXT:    s_mov_b64 s[2:3], 0
+; SI-STD-NEXT:    s_branch .LBB15_3
 ; SI-STD-NEXT:  .LBB15_2:
+; SI-STD-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-STD-NEXT:    ; implicit-def: $vgpr5
-; SI-STD-NEXT:  .LBB15_3: ; %aggressive
+; SI-STD-NEXT:  .LBB15_3: ; %Flow
+; SI-STD-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-STD-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-STD-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-STD-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-STD-NEXT:  ; %bb.4: ; %aggressive
 ; SI-STD-NEXT:    v_mad_f32 v1, -v6, v1, v2
 ; SI-STD-NEXT:    v_mad_f32 v5, -v3, v4, v1
-; SI-STD-NEXT:  .LBB15_4: ; %exit
+; SI-STD-NEXT:  .LBB15_5: ; %exit
 ; SI-STD-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-STD-NEXT:    s_mov_b32 s2, 0
 ; SI-STD-NEXT:    v_mov_b32_e32 v1, 0
@@ -1487,14 +1529,20 @@ define amdgpu_kernel void @aggressive_combine_to_mad_fsub_3_f32(ptr addrspace(1)
 ; SI-DENORM-FASTFMAF-NEXT:    v_mul_f32_e32 v5, v6, v1
 ; SI-DENORM-FASTFMAF-NEXT:    v_fma_f32 v5, v3, v4, v5
 ; SI-DENORM-FASTFMAF-NEXT:    v_sub_f32_e32 v5, v2, v5
-; SI-DENORM-FASTFMAF-NEXT:    s_cbranch_execz .LBB15_3
-; SI-DENORM-FASTFMAF-NEXT:    s_branch .LBB15_4
+; SI-DENORM-FASTFMAF-NEXT:    s_mov_b64 s[2:3], 0
+; SI-DENORM-FASTFMAF-NEXT:    s_branch .LBB15_3
 ; SI-DENORM-FASTFMAF-NEXT:  .LBB15_2:
+; SI-DENORM-FASTFMAF-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-DENORM-FASTFMAF-NEXT:    ; implicit-def: $vgpr5
-; SI-DENORM-FASTFMAF-NEXT:  .LBB15_3: ; %aggressive
+; SI-DENORM-FASTFMAF-NEXT:  .LBB15_3: ; %Flow
+; SI-DENORM-FASTFMAF-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-DENORM-FASTFMAF-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-DENORM-FASTFMAF-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-DENORM-FASTFMAF-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-DENORM-FASTFMAF-NEXT:  ; %bb.4: ; %aggressive
 ; SI-DENORM-FASTFMAF-NEXT:    v_fma_f32 v1, -v6, v1, v2
 ; SI-DENORM-FASTFMAF-NEXT:    v_fma_f32 v5, -v3, v4, v1
-; SI-DENORM-FASTFMAF-NEXT:  .LBB15_4: ; %exit
+; SI-DENORM-FASTFMAF-NEXT:  .LBB15_5: ; %exit
 ; SI-DENORM-FASTFMAF-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-DENORM-FASTFMAF-NEXT:    s_mov_b32 s2, 0
 ; SI-DENORM-FASTFMAF-NEXT:    v_mov_b32_e32 v1, 0
@@ -1530,13 +1578,19 @@ define amdgpu_kernel void @aggressive_combine_to_mad_fsub_3_f32(ptr addrspace(1)
 ; SI-DENORM-SLOWFMAF-NEXT:    s_cbranch_vccnz .LBB15_2
 ; SI-DENORM-SLOWFMAF-NEXT:  ; %bb.1: ; %normal
 ; SI-DENORM-SLOWFMAF-NEXT:    v_sub_f32_e32 v3, v2, v1
-; SI-DENORM-SLOWFMAF-NEXT:    s_cbranch_execz .LBB15_3
-; SI-DENORM-SLOWFMAF-NEXT:    s_branch .LBB15_4
+; SI-DENORM-SLOWFMAF-NEXT:    s_mov_b64 s[2:3], 0
+; SI-DENORM-SLOWFMAF-NEXT:    s_branch .LBB15_3
 ; SI-DENORM-SLOWFMAF-NEXT:  .LBB15_2:
+; SI-DENORM-SLOWFMAF-NEXT:    s_mov_b64 s[2:3], -1
 ; SI-DENORM-SLOWFMAF-NEXT:    ; implicit-def: $vgpr3
-; SI-DENORM-SLOWFMAF-NEXT:  .LBB15_3: ; %aggressive
+; SI-DENORM-SLOWFMAF-NEXT:  .LBB15_3: ; %Flow
+; SI-DENORM-SLOWFMAF-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-DENORM-SLOWFMAF-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-DENORM-SLOWFMAF-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-DENORM-SLOWFMAF-NEXT:    s_cbranch_scc1 .LBB15_5
+; SI-DENORM-SLOWFMAF-NEXT:  ; %bb.4: ; %aggressive
 ; SI-DENORM-SLOWFMAF-NEXT:    v_sub_f32_e32 v3, v2, v1
-; SI-DENORM-SLOWFMAF-NEXT:  .LBB15_4: ; %exit
+; SI-DENORM-SLOWFMAF-NEXT:  .LBB15_5: ; %exit
 ; SI-DENORM-SLOWFMAF-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-DENORM-SLOWFMAF-NEXT:    s_mov_b32 s2, 0
 ; SI-DENORM-SLOWFMAF-NEXT:    v_mov_b32_e32 v1, 0

diff  --git a/llvm/test/CodeGen/AMDGPU/mad-mix-bf16.ll b/llvm/test/CodeGen/AMDGPU/mad-mix-bf16.ll
index a1e78bdc3b27f..e382f637a25cf 100644
--- a/llvm/test/CodeGen/AMDGPU/mad-mix-bf16.ll
+++ b/llvm/test/CodeGen/AMDGPU/mad-mix-bf16.ll
@@ -606,14 +606,13 @@ define amdgpu_kernel void @test_fma_mix_f32_bf16_src2_bf16lo(float %x, i32 %y, p
 ; GFX1250:       ; %bb.0: ; %entry
 ; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
 ; GFX1250-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24 nv
+; GFX1250-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX1250-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-NEXT:    v_fma_mix_f32_bf16 v0, s0, 0, s1 op_sel_hi:[0,0,1]
-; GFX1250-NEXT:    s_mov_b32 s0, 0
-; GFX1250-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, s0
+; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-NEXT:    v_cmp_u_f32_e32 vcc_lo, v0, v0
 ; GFX1250-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-NEXT:    global_store_b64 v2, v[0:1], s[2:3]
+; GFX1250-NEXT:    global_store_b64 v1, v[0:1], s[2:3]
 ; GFX1250-NEXT:    s_endpgm
 entry:
   %v0 = shl i32 %y, 16

diff  --git a/llvm/test/CodeGen/AMDGPU/memcpy-crash-issue63986.ll b/llvm/test/CodeGen/AMDGPU/memcpy-crash-issue63986.ll
index faf70f55876f7..dd826623c7d3f 100644
--- a/llvm/test/CodeGen/AMDGPU/memcpy-crash-issue63986.ll
+++ b/llvm/test/CodeGen/AMDGPU/memcpy-crash-issue63986.ll
@@ -29,11 +29,20 @@ define void @issue63986(i64 %0, i64 %idxprom, ptr inreg %ptr) {
 ; CHECK-NEXT:  ; %bb.2: ; %dynamic-memcpy-expansion-residual-cond
 ; CHECK-NEXT:    s_branch .LBB0_4
 ; CHECK-NEXT:  ; %bb.3:
+; CHECK-NEXT:    s_mov_b64 s[4:5], -1
 ; CHECK-NEXT:    ; implicit-def: $vgpr6_vgpr7
-; CHECK-NEXT:    s_branch .LBB0_5
+; CHECK-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
+; CHECK-NEXT:    s_cbranch_scc0 .LBB0_5
+; CHECK-NEXT:    s_branch .LBB0_8
 ; CHECK-NEXT:  .LBB0_4: ; %dynamic-memcpy-expansion-residual-cond.dynamic-memcpy-post-expansion_crit_edge
 ; CHECK-NEXT:    v_lshlrev_b64 v[6:7], 6, v[2:3]
-; CHECK-NEXT:    s_cbranch_execnz .LBB0_8
+; CHECK-NEXT:    s_mov_b64 s[4:5], 0
+; CHECK-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s4, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s4, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_8
 ; CHECK-NEXT:  .LBB0_5: ; %dynamic-memcpy-expansion-residual-body.preheader
 ; CHECK-NEXT:    s_add_u32 s4, s16, 32
 ; CHECK-NEXT:    s_addc_u32 s5, s17, 0
@@ -75,8 +84,10 @@ define void @issue63986(i64 %0, i64 %idxprom, ptr inreg %ptr) {
 ; CHECK-NEXT:    s_mov_b64 s[8:9], 0
 ; CHECK-NEXT:  .LBB0_10: ; %Flow16
 ; CHECK-NEXT:    ; in Loop: Header=BB0_11 Depth=1
-; CHECK-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
-; CHECK-NEXT:    s_cbranch_vccz .LBB0_18
+; CHECK-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; CHECK-NEXT:    s_cselect_b32 s8, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s8, 1
+; CHECK-NEXT:    s_cbranch_scc0 .LBB0_18
 ; CHECK-NEXT:  .LBB0_11: ; %while.cond
 ; CHECK-NEXT:    ; =>This Loop Header: Depth=1
 ; CHECK-NEXT:    ; Child Loop BB0_13 Depth 2
@@ -159,11 +170,20 @@ define void @issue63986_reduced_expanded(i64 %idxprom) {
 ; CHECK-NEXT:    s_mov_b32 s5, 0
 ; CHECK-NEXT:    s_cbranch_scc0 .LBB1_4
 ; CHECK-NEXT:  ; %bb.3:
+; CHECK-NEXT:    s_mov_b64 s[6:7], -1
 ; CHECK-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; CHECK-NEXT:    s_branch .LBB1_5
+; CHECK-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; CHECK-NEXT:    s_cselect_b32 s6, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s6, 1
+; CHECK-NEXT:    s_cbranch_scc0 .LBB1_5
+; CHECK-NEXT:    s_branch .LBB1_8
 ; CHECK-NEXT:  .LBB1_4: ; %loop-memcpy-residual-header.post-loop-memcpy-expansion_crit_edge
 ; CHECK-NEXT:    v_lshlrev_b64 v[0:1], 1, v[0:1]
-; CHECK-NEXT:    s_cbranch_execnz .LBB1_8
+; CHECK-NEXT:    s_mov_b64 s[6:7], 0
+; CHECK-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; CHECK-NEXT:    s_cselect_b32 s6, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s6, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB1_8
 ; CHECK-NEXT:  .LBB1_5: ; %loop-memcpy-residual.preheader
 ; CHECK-NEXT:    v_mov_b32_e32 v0, s4
 ; CHECK-NEXT:    s_mov_b64 s[8:9], 0

diff  --git a/llvm/test/CodeGen/AMDGPU/min.ll b/llvm/test/CodeGen/AMDGPU/min.ll
index 6ebb6aaa4520f..7e241bf2dbdb6 100644
--- a/llvm/test/CodeGen/AMDGPU/min.ll
+++ b/llvm/test/CodeGen/AMDGPU/min.ll
@@ -2981,13 +2981,12 @@ define amdgpu_kernel void @v_test_umin_ult_i32_multi_use(ptr addrspace(1) %out0,
 ; CI-NEXT:    v_mov_b32_e32 v3, s3
 ; CI-NEXT:    s_waitcnt lgkmcnt(0)
 ; CI-NEXT:    s_cmp_lt_u32 s4, s5
-; CI-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CI-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[0:1]
-; CI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
 ; CI-NEXT:    s_cselect_b32 s0, s4, s5
-; CI-NEXT:    v_mov_b32_e32 v5, s0
-; CI-NEXT:    flat_store_dword v[0:1], v5
-; CI-NEXT:    flat_store_byte v[2:3], v4
+; CI-NEXT:    s_cselect_b32 s1, 1, 0
+; CI-NEXT:    v_mov_b32_e32 v4, s0
+; CI-NEXT:    v_mov_b32_e32 v5, s1
+; CI-NEXT:    flat_store_dword v[0:1], v4
+; CI-NEXT:    flat_store_byte v[2:3], v5
 ; CI-NEXT:    s_endpgm
 ;
 ; VI-LABEL: v_test_umin_ult_i32_multi_use:
@@ -3005,13 +3004,12 @@ define amdgpu_kernel void @v_test_umin_ult_i32_multi_use(ptr addrspace(1) %out0,
 ; VI-NEXT:    v_mov_b32_e32 v3, s3
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lt_u32 s4, s5
-; VI-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; VI-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[0:1]
-; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
 ; VI-NEXT:    s_cselect_b32 s0, s4, s5
-; VI-NEXT:    v_mov_b32_e32 v5, s0
-; VI-NEXT:    flat_store_dword v[0:1], v5
-; VI-NEXT:    flat_store_byte v[2:3], v4
+; VI-NEXT:    s_cselect_b32 s1, 1, 0
+; VI-NEXT:    v_mov_b32_e32 v4, s0
+; VI-NEXT:    v_mov_b32_e32 v5, s1
+; VI-NEXT:    flat_store_dword v[0:1], v4
+; VI-NEXT:    flat_store_byte v[2:3], v5
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX9-LABEL: v_test_umin_ult_i32_multi_use:
@@ -3023,72 +3021,66 @@ define amdgpu_kernel void @v_test_umin_ult_i32_multi_use(ptr addrspace(1) %out0,
 ; GFX9-NEXT:    s_load_dword s9, s[6:7], 0x0
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lt_u32 s8, s9
-; GFX9-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GFX9-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]
-; GFX9-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GFX9-NEXT:    s_cselect_b32 s4, s8, s9
-; GFX9-NEXT:    v_mov_b32_e32 v2, s4
-; GFX9-NEXT:    global_store_dword v0, v2, s[0:1]
-; GFX9-NEXT:    global_store_byte v0, v1, s[2:3]
+; GFX9-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX9-NEXT:    v_mov_b32_e32 v1, s4
+; GFX9-NEXT:    v_mov_b32_e32 v2, s5
+; GFX9-NEXT:    global_store_dword v0, v1, s[0:1]
+; GFX9-NEXT:    global_store_byte v0, v2, s[2:3]
 ; GFX9-NEXT:    s_endpgm
 ;
 ; GFX10-LABEL: v_test_umin_ult_i32_multi_use:
 ; GFX10:       ; %bb.0:
 ; GFX10-NEXT:    s_load_dwordx8 s[0:7], s[8:9], 0x0
-; GFX10-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX10-NEXT:    s_load_dword s8, s[4:5], 0x0
 ; GFX10-NEXT:    s_load_dword s9, s[6:7], 0x0
 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX10-NEXT:    s_cmp_lt_u32 s8, s9
-; GFX10-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX10-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4
-; GFX10-NEXT:    s_and_b32 s4, s4, exec_lo
 ; GFX10-NEXT:    s_cselect_b32 s4, s8, s9
-; GFX10-NEXT:    v_mov_b32_e32 v2, s4
-; GFX10-NEXT:    global_store_dword v1, v2, s[0:1]
-; GFX10-NEXT:    global_store_byte v1, v0, s[2:3]
+; GFX10-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v1, s4
+; GFX10-NEXT:    v_mov_b32_e32 v2, s5
+; GFX10-NEXT:    global_store_dword v0, v1, s[0:1]
+; GFX10-NEXT:    global_store_byte v0, v2, s[2:3]
 ; GFX10-NEXT:    s_endpgm
 ;
 ; GFX11-LABEL: v_test_umin_ult_i32_multi_use:
 ; GFX11:       ; %bb.0:
 ; GFX11-NEXT:    s_load_b256 s[0:7], s[4:5], 0x0
-; GFX11-NEXT:    v_mov_b32_e32 v1, 0
+; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_load_b32 s4, s[4:5], 0x0
 ; GFX11-NEXT:    s_load_b32 s5, s[6:7], 0x0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lt_u32 s4, s5
-; GFX11-NEXT:    s_cselect_b32 s6, -1, 0
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s6
-; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
 ; GFX11-NEXT:    s_cselect_b32 s4, s4, s5
-; GFX11-NEXT:    v_mov_b32_e32 v2, s4
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    v_mov_b32_e32 v1, s4
+; GFX11-NEXT:    v_mov_b32_e32 v2, s5
 ; GFX11-NEXT:    s_clause 0x1
-; GFX11-NEXT:    global_store_b32 v1, v2, s[0:1]
-; GFX11-NEXT:    global_store_b8 v1, v0, s[2:3]
+; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
+; GFX11-NEXT:    global_store_b8 v0, v2, s[2:3]
 ; GFX11-NEXT:    s_endpgm
 ;
 ; GFX1250-LABEL: v_test_umin_ult_i32_multi_use:
 ; GFX1250:       ; %bb.0:
 ; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
 ; GFX1250-NEXT:    s_load_b256 s[8:15], s[4:5], 0x0 nv
-; GFX1250-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1250-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX1250-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-NEXT:    s_load_b32 s0, s[12:13], 0x0
 ; GFX1250-NEXT:    s_load_b32 s1, s[14:15], 0x0
 ; GFX1250-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-NEXT:    s_cmp_lt_u32 s0, s1
-; GFX1250-NEXT:    s_cselect_b32 s2, -1, 0
-; GFX1250-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
-; GFX1250-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s2
-; GFX1250-NEXT:    s_and_b32 s2, s2, exec_lo
 ; GFX1250-NEXT:    s_cselect_b32 s0, s0, s1
-; GFX1250-NEXT:    v_mov_b32_e32 v2, s0
+; GFX1250-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX1250-NEXT:    v_mov_b32_e32 v1, s0
+; GFX1250-NEXT:    v_mov_b32_e32 v2, s1
 ; GFX1250-NEXT:    s_clause 0x1
-; GFX1250-NEXT:    global_store_b32 v1, v2, s[8:9]
-; GFX1250-NEXT:    global_store_b8 v1, v0, s[10:11]
+; GFX1250-NEXT:    global_store_b32 v0, v1, s[8:9]
+; GFX1250-NEXT:    global_store_b8 v0, v2, s[10:11]
 ; GFX1250-NEXT:    s_endpgm
   %a = load i32, ptr addrspace(1) %aptr, align 4
   %b = load i32, ptr addrspace(1) %bptr, align 4

diff  --git a/llvm/test/CodeGen/AMDGPU/mixed-vmem-types.ll b/llvm/test/CodeGen/AMDGPU/mixed-vmem-types.ll
index 02b341dcee9c3..9e46ba839ffff 100644
--- a/llvm/test/CodeGen/AMDGPU/mixed-vmem-types.ll
+++ b/llvm/test/CodeGen/AMDGPU/mixed-vmem-types.ll
@@ -35,8 +35,10 @@ define amdgpu_cs void @mixed_vmem_types_sampler_reads(i32 inreg %globalTable, i3
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_and_b32 s0, s0, s2
 ; GFX11-NEXT:    s_and_b32 s0, s0, vcc_lo
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    buffer_store_b32 v0, off, s[24:27], 0
 ; GFX11-NEXT:    s_endpgm
 ;
@@ -72,8 +74,10 @@ define amdgpu_cs void @mixed_vmem_types_sampler_reads(i32 inreg %globalTable, i3
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX12-NEXT:    s_and_b32 s0, s0, s2
 ; GFX12-NEXT:    s_and_b32 s0, s0, vcc_lo
-; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX12-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX12-NEXT:    buffer_store_b32 v0, off, s[24:27], null
 ; GFX12-NEXT:    s_endpgm
 ;

diff  --git a/llvm/test/CodeGen/AMDGPU/mul.ll b/llvm/test/CodeGen/AMDGPU/mul.ll
index d10e4511a5c6a..cb18594654611 100644
--- a/llvm/test/CodeGen/AMDGPU/mul.ll
+++ b/llvm/test/CodeGen/AMDGPU/mul.ll
@@ -2649,13 +2649,14 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; SI-NEXT:    ; implicit-def: $sgpr8
 ; SI-NEXT:  .LBB15_3: ; %Flow
 ; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; SI-NEXT:    s_waitcnt lgkmcnt(0)
-; SI-NEXT:    s_mov_b64 vcc, vcc
-; SI-NEXT:    s_cbranch_vccnz .LBB15_5
+; SI-NEXT:    s_and_b64 s[4:5], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB15_5
 ; SI-NEXT:  ; %bb.4: ; %if
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-NEXT:    s_mov_b32 s6, -1
+; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_mov_b32 s4, s2
 ; SI-NEXT:    s_mov_b32 s5, s3
 ; SI-NEXT:    buffer_load_dword v0, off, s[4:7], 0
@@ -2663,6 +2664,7 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; SI-NEXT:  .LBB15_5:
 ; SI-NEXT:    v_mov_b32_e32 v0, s8
 ; SI-NEXT:  .LBB15_6: ; %endif
+; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt vmcnt(0)
@@ -2684,8 +2686,10 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; VI-NEXT:    ; implicit-def: $sgpr8
 ; VI-NEXT:  .LBB15_3: ; %Flow
 ; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; VI-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; VI-NEXT:    s_cbranch_vccnz .LBB15_5
+; VI-NEXT:    s_and_b64 s[4:5], s[6:7], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB15_5
 ; VI-NEXT:  ; %bb.4: ; %if
 ; VI-NEXT:    s_mov_b32 s7, 0xf000
 ; VI-NEXT:    s_mov_b32 s6, -1
@@ -2719,8 +2723,10 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX9-NEXT:    ; implicit-def: $sgpr8
 ; GFX9-NEXT:  .LBB15_3: ; %Flow
 ; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GFX9-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GFX9-NEXT:    s_cbranch_vccnz .LBB15_5
+; GFX9-NEXT:    s_and_b64 s[4:5], s[6:7], exec
+; GFX9-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB15_5
 ; GFX9-NEXT:  ; %bb.4: ; %if
 ; GFX9-NEXT:    s_mov_b32 s7, 0xf000
 ; GFX9-NEXT:    s_mov_b32 s6, -1
@@ -2742,20 +2748,22 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX10-LABEL: mul32_in_branch:
 ; GFX10:       ; %bb.0: ; %entry
 ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x34
-; GFX10-NEXT:    s_mov_b32 s6, 0
+; GFX10-NEXT:    s_mov_b32 s7, 0
 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX10-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX10-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX10-NEXT:  ; %bb.1: ; %else
-; GFX10-NEXT:    s_mul_i32 s7, s0, s1
+; GFX10-NEXT:    s_mul_i32 s6, s0, s1
 ; GFX10-NEXT:    s_branch .LBB15_3
 ; GFX10-NEXT:  .LBB15_2:
-; GFX10-NEXT:    s_mov_b32 s6, -1
-; GFX10-NEXT:    ; implicit-def: $sgpr7
+; GFX10-NEXT:    s_mov_b32 s7, -1
+; GFX10-NEXT:    ; implicit-def: $sgpr6
 ; GFX10-NEXT:  .LBB15_3: ; %Flow
 ; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GFX10-NEXT:    s_andn2_b32 vcc_lo, exec_lo, s6
-; GFX10-NEXT:    s_cbranch_vccnz .LBB15_5
+; GFX10-NEXT:    s_and_b32 s4, s7, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB15_5
 ; GFX10-NEXT:  ; %bb.4: ; %if
 ; GFX10-NEXT:    s_mov_b32 s7, 0x31016000
 ; GFX10-NEXT:    s_mov_b32 s6, -1
@@ -2765,7 +2773,7 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX10-NEXT:    buffer_load_dword v0, off, s[4:7], 0
 ; GFX10-NEXT:    s_branch .LBB15_6
 ; GFX10-NEXT:  .LBB15_5:
-; GFX10-NEXT:    v_mov_b32_e32 v0, s7
+; GFX10-NEXT:    v_mov_b32_e32 v0, s6
 ; GFX10-NEXT:  .LBB15_6: ; %endif
 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000
@@ -2777,20 +2785,23 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX11-LABEL: mul32_in_branch:
 ; GFX11:       ; %bb.0: ; %entry
 ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
-; GFX11-NEXT:    s_mov_b32 s6, 0
+; GFX11-NEXT:    s_mov_b32 s7, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX11-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX11-NEXT:  ; %bb.1: ; %else
-; GFX11-NEXT:    s_mul_i32 s7, s0, s1
+; GFX11-NEXT:    s_mul_i32 s6, s0, s1
 ; GFX11-NEXT:    s_branch .LBB15_3
 ; GFX11-NEXT:  .LBB15_2:
-; GFX11-NEXT:    s_mov_b32 s6, -1
-; GFX11-NEXT:    ; implicit-def: $sgpr7
+; GFX11-NEXT:    s_mov_b32 s7, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr6
 ; GFX11-NEXT:  .LBB15_3: ; %Flow
 ; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX11-NEXT:    s_cbranch_vccnz .LBB15_5
+; GFX11-NEXT:    s_and_b32 s4, s7, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB15_5
 ; GFX11-NEXT:  ; %bb.4: ; %if
 ; GFX11-NEXT:    s_mov_b32 s7, 0x31016000
 ; GFX11-NEXT:    s_mov_b32 s6, -1
@@ -2800,7 +2811,7 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX11-NEXT:    buffer_load_b32 v0, off, s[4:7], 0
 ; GFX11-NEXT:    s_branch .LBB15_6
 ; GFX11-NEXT:  .LBB15_5:
-; GFX11-NEXT:    v_mov_b32_e32 v0, s7
+; GFX11-NEXT:    v_mov_b32_e32 v0, s6
 ; GFX11-NEXT:  .LBB15_6: ; %endif
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
@@ -2812,20 +2823,23 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX12-LABEL: mul32_in_branch:
 ; GFX12:       ; %bb.0: ; %entry
 ; GFX12-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34
-; GFX12-NEXT:    s_mov_b32 s6, 0
+; GFX12-NEXT:    s_mov_b32 s7, 0
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX12-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX12-NEXT:  ; %bb.1: ; %else
-; GFX12-NEXT:    s_mul_i32 s7, s0, s1
+; GFX12-NEXT:    s_mul_i32 s6, s0, s1
 ; GFX12-NEXT:    s_branch .LBB15_3
 ; GFX12-NEXT:  .LBB15_2:
-; GFX12-NEXT:    s_mov_b32 s6, -1
-; GFX12-NEXT:    ; implicit-def: $sgpr7
+; GFX12-NEXT:    s_mov_b32 s7, -1
+; GFX12-NEXT:    ; implicit-def: $sgpr6
 ; GFX12-NEXT:  .LBB15_3: ; %Flow
 ; GFX12-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX12-NEXT:    s_cbranch_vccnz .LBB15_5
+; GFX12-NEXT:    s_and_b32 s4, s7, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX12-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB15_5
 ; GFX12-NEXT:  ; %bb.4: ; %if
 ; GFX12-NEXT:    s_mov_b32 s7, 0x31016000
 ; GFX12-NEXT:    s_mov_b32 s6, -1
@@ -2835,7 +2849,7 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX12-NEXT:    buffer_load_b32 v0, off, s[4:7], null
 ; GFX12-NEXT:    s_branch .LBB15_6
 ; GFX12-NEXT:  .LBB15_5:
-; GFX12-NEXT:    v_mov_b32_e32 v0, s7
+; GFX12-NEXT:    v_mov_b32_e32 v0, s6
 ; GFX12-NEXT:  .LBB15_6: ; %endif
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_mov_b32 s3, 0x31016000
@@ -2848,20 +2862,24 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX1250:       ; %bb.0: ; %entry
 ; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
 ; GFX1250-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34 nv
-; GFX1250-NEXT:    s_mov_b32 s6, 0
+; GFX1250-NEXT:    s_mov_b32 s7, 0
 ; GFX1250-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX1250-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX1250-NEXT:  ; %bb.1: ; %else
-; GFX1250-NEXT:    s_mul_i32 s7, s0, s1
+; GFX1250-NEXT:    s_mul_i32 s6, s0, s1
 ; GFX1250-NEXT:    s_branch .LBB15_3
 ; GFX1250-NEXT:  .LBB15_2:
-; GFX1250-NEXT:    s_mov_b32 s6, -1
-; GFX1250-NEXT:    ; implicit-def: $sgpr7
+; GFX1250-NEXT:    s_mov_b32 s7, -1
+; GFX1250-NEXT:    ; implicit-def: $sgpr6
 ; GFX1250-NEXT:  .LBB15_3: ; %Flow
 ; GFX1250-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24 nv
-; GFX1250-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX1250-NEXT:    s_cbranch_vccnz .LBB15_5
+; GFX1250-NEXT:    s_wait_xcnt 0x0
+; GFX1250-NEXT:    s_and_b32 s4, s7, exec_lo
+; GFX1250-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX1250-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX1250-NEXT:    s_cbranch_scc1 .LBB15_5
 ; GFX1250-NEXT:  ; %bb.4: ; %if
 ; GFX1250-NEXT:    s_mov_b32 s7, 0x31016000
 ; GFX1250-NEXT:    s_mov_b32 s6, -1
@@ -2871,7 +2889,7 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX1250-NEXT:    buffer_load_b32 v0, off, s[4:7], null
 ; GFX1250-NEXT:    s_branch .LBB15_6
 ; GFX1250-NEXT:  .LBB15_5:
-; GFX1250-NEXT:    v_mov_b32_e32 v0, s7
+; GFX1250-NEXT:    v_mov_b32_e32 v0, s6
 ; GFX1250-NEXT:  .LBB15_6: ; %endif
 ; GFX1250-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-NEXT:    s_mov_b32 s3, 0x31016000
@@ -2883,20 +2901,23 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX13-LABEL: mul32_in_branch:
 ; GFX13:       ; %bb.0: ; %entry
 ; GFX13-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34 nv
-; GFX13-NEXT:    s_mov_b32 s6, 0
+; GFX13-NEXT:    s_mov_b32 s7, 0
 ; GFX13-NEXT:    s_wait_kmcnt 0x0
 ; GFX13-NEXT:    s_cmp_lg_u32 s0, 0
 ; GFX13-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX13-NEXT:  ; %bb.1: ; %else
-; GFX13-NEXT:    s_mul_i32 s7, s0, s1
+; GFX13-NEXT:    s_mul_i32 s6, s0, s1
 ; GFX13-NEXT:    s_branch .LBB15_3
 ; GFX13-NEXT:  .LBB15_2:
-; GFX13-NEXT:    s_mov_b32 s6, -1
-; GFX13-NEXT:    ; implicit-def: $sgpr7
+; GFX13-NEXT:    s_mov_b32 s7, -1
+; GFX13-NEXT:    ; implicit-def: $sgpr6
 ; GFX13-NEXT:  .LBB15_3: ; %Flow
 ; GFX13-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24 nv
-; GFX13-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s6
-; GFX13-NEXT:    s_cbranch_vccnz .LBB15_5
+; GFX13-NEXT:    s_and_b32 s4, s7, exec_lo
+; GFX13-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX13-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX13-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX13-NEXT:    s_cbranch_scc1 .LBB15_5
 ; GFX13-NEXT:  ; %bb.4: ; %if
 ; GFX13-NEXT:    s_mov_b32 s7, 0x31016000
 ; GFX13-NEXT:    s_mov_b32 s6, -1
@@ -2906,7 +2927,7 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX13-NEXT:    buffer_load_b32 v0, off, s[4:7], null
 ; GFX13-NEXT:    s_branch .LBB15_6
 ; GFX13-NEXT:  .LBB15_5:
-; GFX13-NEXT:    v_mov_b32_e32 v0, s7
+; GFX13-NEXT:    v_mov_b32_e32 v0, s6
 ; GFX13-NEXT:  .LBB15_6: ; %endif
 ; GFX13-NEXT:    s_wait_kmcnt 0x0
 ; GFX13-NEXT:    s_mov_b32 s3, 0x31016000
@@ -2977,7 +2998,7 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_cmp_ne_u64_e64 s[10:11], s[4:5], 0
 ; SI-NEXT:    s_and_b64 vcc, exec, s[10:11]
-; SI-NEXT:    s_cbranch_vccz .LBB16_4
+; SI-NEXT:    s_cbranch_vccz .LBB16_2
 ; SI-NEXT:  ; %bb.1: ; %else
 ; SI-NEXT:    v_mov_b32_e32 v0, s6
 ; SI-NEXT:    v_mul_hi_u32 v0, s4, v0
@@ -2987,23 +3008,27 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; SI-NEXT:    v_add_i32_e32 v0, vcc, s7, v0
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, s5, v0
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
-; SI-NEXT:    s_cbranch_vccnz .LBB16_3
-; SI-NEXT:  .LBB16_2: ; %if
+; SI-NEXT:    s_branch .LBB16_3
+; SI-NEXT:  .LBB16_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; SI-NEXT:  .LBB16_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[4:5], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s4, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB16_5
+; SI-NEXT:  ; %bb.4: ; %if
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-NEXT:    s_mov_b32 s6, -1
 ; SI-NEXT:    s_mov_b32 s4, s2
 ; SI-NEXT:    s_mov_b32 s5, s3
 ; SI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[4:7], 0
-; SI-NEXT:  .LBB16_3: ; %endif
+; SI-NEXT:  .LBB16_5: ; %endif
 ; SI-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
-; SI-NEXT:  .LBB16_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; SI-NEXT:    s_branch .LBB16_2
 ;
 ; VI-LABEL: mul64_in_branch:
 ; VI:       ; %bb.0: ; %entry
@@ -3011,7 +3036,7 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; VI-NEXT:    s_mov_b64 s[8:9], 0
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u64 s[4:5], 0
-; VI-NEXT:    s_cbranch_scc0 .LBB16_4
+; VI-NEXT:    s_cbranch_scc0 .LBB16_2
 ; VI-NEXT:  ; %bb.1: ; %else
 ; VI-NEXT:    v_mov_b32_e32 v0, s6
 ; VI-NEXT:    v_mad_u64_u32 v[0:1], s[10:11], s4, v0, 0
@@ -3019,23 +3044,27 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; VI-NEXT:    s_mul_i32 s5, s5, s6
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, s4, v1
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, s5, v1
-; VI-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
-; VI-NEXT:    s_cbranch_vccnz .LBB16_3
-; VI-NEXT:  .LBB16_2: ; %if
+; VI-NEXT:    s_branch .LBB16_3
+; VI-NEXT:  .LBB16_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; VI-NEXT:  .LBB16_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[4:5], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s4, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB16_5
+; VI-NEXT:  ; %bb.4: ; %if
 ; VI-NEXT:    s_mov_b32 s7, 0xf000
 ; VI-NEXT:    s_mov_b32 s6, -1
 ; VI-NEXT:    s_mov_b32 s4, s2
 ; VI-NEXT:    s_mov_b32 s5, s3
 ; VI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[4:7], 0
-; VI-NEXT:  .LBB16_3: ; %endif
+; VI-NEXT:  .LBB16_5: ; %endif
 ; VI-NEXT:    s_mov_b32 s3, 0xf000
 ; VI-NEXT:    s_mov_b32 s2, -1
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
 ; VI-NEXT:    s_endpgm
-; VI-NEXT:  .LBB16_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; VI-NEXT:    s_branch .LBB16_2
 ;
 ; GFX9-LABEL: mul64_in_branch:
 ; GFX9:       ; %bb.0: ; %entry
@@ -3043,7 +3072,7 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX9-NEXT:    s_mov_b64 s[0:1], 0
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    s_cmp_lg_u64 s[12:13], 0
-; GFX9-NEXT:    s_cbranch_scc0 .LBB16_3
+; GFX9-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GFX9-NEXT:  ; %bb.1: ; %else
 ; GFX9-NEXT:    s_mul_i32 s2, s12, s15
 ; GFX9-NEXT:    s_mul_hi_u32 s3, s12, s14
@@ -3051,22 +3080,26 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX9-NEXT:    s_mul_i32 s3, s13, s14
 ; GFX9-NEXT:    s_add_i32 s3, s2, s3
 ; GFX9-NEXT:    s_mul_i32 s2, s12, s14
-; GFX9-NEXT:    s_andn2_b64 vcc, exec, s[0:1]
-; GFX9-NEXT:    s_cbranch_vccnz .LBB16_4
-; GFX9-NEXT:  .LBB16_2: ; %if
+; GFX9-NEXT:    s_branch .LBB16_3
+; GFX9-NEXT:  .LBB16_2:
+; GFX9-NEXT:    s_mov_b64 s[0:1], -1
+; GFX9-NEXT:    ; implicit-def: $sgpr2_sgpr3
+; GFX9-NEXT:  .LBB16_3: ; %Flow
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX9-NEXT:    s_cbranch_scc1 .LBB16_5
+; GFX9-NEXT:  ; %bb.4: ; %if
 ; GFX9-NEXT:    s_mov_b32 s3, 0xf000
 ; GFX9-NEXT:    s_mov_b32 s2, -1
 ; GFX9-NEXT:    s_mov_b32 s0, s10
 ; GFX9-NEXT:    s_mov_b32 s1, s11
 ; GFX9-NEXT:    buffer_load_dwordx2 v[0:1], off, s[0:3], 0
-; GFX9-NEXT:    s_branch .LBB16_5
-; GFX9-NEXT:  .LBB16_3:
-; GFX9-NEXT:    ; implicit-def: $sgpr2_sgpr3
-; GFX9-NEXT:    s_branch .LBB16_2
-; GFX9-NEXT:  .LBB16_4:
+; GFX9-NEXT:    s_branch .LBB16_6
+; GFX9-NEXT:  .LBB16_5:
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
-; GFX9-NEXT:  .LBB16_5: ; %endif
+; GFX9-NEXT:  .LBB16_6: ; %endif
 ; GFX9-NEXT:    s_mov_b32 s11, 0xf000
 ; GFX9-NEXT:    s_mov_b32 s10, -1
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
@@ -3078,7 +3111,7 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX10-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24
 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX10-NEXT:    s_cmp_lg_u64 s[12:13], 0
-; GFX10-NEXT:    s_cbranch_scc0 .LBB16_3
+; GFX10-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GFX10-NEXT:  ; %bb.1: ; %else
 ; GFX10-NEXT:    s_mul_i32 s0, s12, s15
 ; GFX10-NEXT:    s_mul_hi_u32 s1, s12, s14
@@ -3086,21 +3119,27 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX10-NEXT:    s_add_i32 s0, s1, s0
 ; GFX10-NEXT:    s_add_i32 s1, s0, s2
 ; GFX10-NEXT:    s_mul_i32 s0, s12, s14
-; GFX10-NEXT:    s_cbranch_execnz .LBB16_4
-; GFX10-NEXT:  .LBB16_2: ; %if
+; GFX10-NEXT:    s_mov_b32 s2, 0
+; GFX10-NEXT:    s_branch .LBB16_3
+; GFX10-NEXT:  .LBB16_2:
+; GFX10-NEXT:    s_mov_b32 s2, -1
+; GFX10-NEXT:    ; implicit-def: $sgpr0_sgpr1
+; GFX10-NEXT:  .LBB16_3: ; %Flow
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX10-NEXT:    s_cbranch_scc1 .LBB16_5
+; GFX10-NEXT:  ; %bb.4: ; %if
 ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000
 ; GFX10-NEXT:    s_mov_b32 s2, -1
 ; GFX10-NEXT:    s_mov_b32 s0, s10
 ; GFX10-NEXT:    s_mov_b32 s1, s11
 ; GFX10-NEXT:    buffer_load_dwordx2 v[0:1], off, s[0:3], 0
-; GFX10-NEXT:    s_branch .LBB16_5
-; GFX10-NEXT:  .LBB16_3:
-; GFX10-NEXT:    ; implicit-def: $sgpr0_sgpr1
-; GFX10-NEXT:    s_branch .LBB16_2
-; GFX10-NEXT:  .LBB16_4:
+; GFX10-NEXT:    s_branch .LBB16_6
+; GFX10-NEXT:  .LBB16_5:
 ; GFX10-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX10-NEXT:    v_mov_b32_e32 v1, s1
-; GFX10-NEXT:  .LBB16_5: ; %endif
+; GFX10-NEXT:  .LBB16_6: ; %endif
 ; GFX10-NEXT:    s_mov_b32 s11, 0x31016000
 ; GFX10-NEXT:    s_mov_b32 s10, -1
 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
@@ -3112,7 +3151,7 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX11-NEXT:    s_load_b256 s[0:7], s[4:5], 0x24
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_cmp_lg_u64 s[4:5], 0
-; GFX11-NEXT:    s_cbranch_scc0 .LBB16_3
+; GFX11-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GFX11-NEXT:  ; %bb.1: ; %else
 ; GFX11-NEXT:    s_mul_i32 s7, s4, s7
 ; GFX11-NEXT:    s_mul_hi_u32 s8, s4, s6
@@ -3120,20 +3159,27 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX11-NEXT:    s_add_i32 s7, s8, s7
 ; GFX11-NEXT:    s_mul_i32 s4, s4, s6
 ; GFX11-NEXT:    s_add_i32 s5, s7, s5
-; GFX11-NEXT:    s_cbranch_execnz .LBB16_4
-; GFX11-NEXT:  .LBB16_2: ; %if
+; GFX11-NEXT:    s_mov_b32 s6, 0
+; GFX11-NEXT:    s_branch .LBB16_3
+; GFX11-NEXT:  .LBB16_2:
+; GFX11-NEXT:    s_mov_b32 s6, -1
+; GFX11-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; GFX11-NEXT:  .LBB16_3: ; %Flow
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX11-NEXT:    s_cbranch_scc1 .LBB16_5
+; GFX11-NEXT:  ; %bb.4: ; %if
 ; GFX11-NEXT:    s_mov_b32 s7, 0x31016000
 ; GFX11-NEXT:    s_mov_b32 s6, -1
 ; GFX11-NEXT:    s_mov_b32 s4, s2
 ; GFX11-NEXT:    s_mov_b32 s5, s3
 ; GFX11-NEXT:    buffer_load_b64 v[0:1], off, s[4:7], 0
-; GFX11-NEXT:    s_branch .LBB16_5
-; GFX11-NEXT:  .LBB16_3:
-; GFX11-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; GFX11-NEXT:    s_branch .LBB16_2
-; GFX11-NEXT:  .LBB16_4:
+; GFX11-NEXT:    s_branch .LBB16_6
+; GFX11-NEXT:  .LBB16_5:
 ; GFX11-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5
-; GFX11-NEXT:  .LBB16_5: ; %endif
+; GFX11-NEXT:  .LBB16_6: ; %endif
 ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000
 ; GFX11-NEXT:    s_mov_b32 s2, -1
 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
@@ -3145,23 +3191,30 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX12-NEXT:    s_load_b256 s[0:7], s[4:5], 0x24
 ; GFX12-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-NEXT:    s_cmp_lg_u64 s[4:5], 0
-; GFX12-NEXT:    s_cbranch_scc0 .LBB16_3
+; GFX12-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GFX12-NEXT:  ; %bb.1: ; %else
 ; GFX12-NEXT:    s_mul_u64 s[4:5], s[4:5], s[6:7]
-; GFX12-NEXT:    s_cbranch_execnz .LBB16_4
-; GFX12-NEXT:  .LBB16_2: ; %if
+; GFX12-NEXT:    s_mov_b32 s6, 0
+; GFX12-NEXT:    s_branch .LBB16_3
+; GFX12-NEXT:  .LBB16_2:
+; GFX12-NEXT:    s_mov_b32 s6, -1
+; GFX12-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; GFX12-NEXT:  .LBB16_3: ; %Flow
+; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX12-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX12-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX12-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB16_5
+; GFX12-NEXT:  ; %bb.4: ; %if
 ; GFX12-NEXT:    s_mov_b32 s7, 0x31016000
 ; GFX12-NEXT:    s_mov_b32 s6, -1
 ; GFX12-NEXT:    s_mov_b32 s4, s2
 ; GFX12-NEXT:    s_mov_b32 s5, s3
 ; GFX12-NEXT:    buffer_load_b64 v[0:1], off, s[4:7], null
-; GFX12-NEXT:    s_branch .LBB16_5
-; GFX12-NEXT:  .LBB16_3:
-; GFX12-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; GFX12-NEXT:    s_branch .LBB16_2
-; GFX12-NEXT:  .LBB16_4:
+; GFX12-NEXT:    s_branch .LBB16_6
+; GFX12-NEXT:  .LBB16_5:
 ; GFX12-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5
-; GFX12-NEXT:  .LBB16_5: ; %endif
+; GFX12-NEXT:  .LBB16_6: ; %endif
 ; GFX12-NEXT:    s_mov_b32 s3, 0x31016000
 ; GFX12-NEXT:    s_mov_b32 s2, -1
 ; GFX12-NEXT:    s_wait_loadcnt 0x0
@@ -3174,23 +3227,30 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX1250-NEXT:    s_load_b256 s[8:15], s[4:5], 0x24 nv
 ; GFX1250-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-NEXT:    s_cmp_lg_u64 s[12:13], 0
-; GFX1250-NEXT:    s_cbranch_scc0 .LBB16_3
+; GFX1250-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GFX1250-NEXT:  ; %bb.1: ; %else
 ; GFX1250-NEXT:    s_mul_u64 s[0:1], s[12:13], s[14:15]
-; GFX1250-NEXT:    s_cbranch_execnz .LBB16_4
-; GFX1250-NEXT:  .LBB16_2: ; %if
+; GFX1250-NEXT:    s_mov_b32 s2, 0
+; GFX1250-NEXT:    s_branch .LBB16_3
+; GFX1250-NEXT:  .LBB16_2:
+; GFX1250-NEXT:    s_mov_b32 s2, -1
+; GFX1250-NEXT:    ; implicit-def: $sgpr0_sgpr1
+; GFX1250-NEXT:  .LBB16_3: ; %Flow
+; GFX1250-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1250-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1250-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1250-NEXT:    s_cbranch_scc1 .LBB16_5
+; GFX1250-NEXT:  ; %bb.4: ; %if
 ; GFX1250-NEXT:    s_mov_b32 s3, 0x31016000
 ; GFX1250-NEXT:    s_mov_b32 s2, -1
 ; GFX1250-NEXT:    s_mov_b32 s0, s10
 ; GFX1250-NEXT:    s_mov_b32 s1, s11
 ; GFX1250-NEXT:    buffer_load_b64 v[0:1], off, s[0:3], null
-; GFX1250-NEXT:    s_branch .LBB16_5
-; GFX1250-NEXT:  .LBB16_3:
-; GFX1250-NEXT:    ; implicit-def: $sgpr0_sgpr1
-; GFX1250-NEXT:    s_branch .LBB16_2
-; GFX1250-NEXT:  .LBB16_4:
+; GFX1250-NEXT:    s_branch .LBB16_6
+; GFX1250-NEXT:  .LBB16_5:
 ; GFX1250-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
-; GFX1250-NEXT:  .LBB16_5: ; %endif
+; GFX1250-NEXT:  .LBB16_6: ; %endif
 ; GFX1250-NEXT:    s_mov_b32 s11, 0x31016000
 ; GFX1250-NEXT:    s_mov_b32 s10, -1
 ; GFX1250-NEXT:    s_wait_loadcnt 0x0
@@ -3202,23 +3262,30 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace(
 ; GFX13-NEXT:    s_load_b256 s[0:7], s[4:5], 0x24 nv
 ; GFX13-NEXT:    s_wait_kmcnt 0x0
 ; GFX13-NEXT:    s_cmp_lg_u64 s[4:5], 0
-; GFX13-NEXT:    s_cbranch_scc0 .LBB16_3
+; GFX13-NEXT:    s_cbranch_scc0 .LBB16_2
 ; GFX13-NEXT:  ; %bb.1: ; %else
 ; GFX13-NEXT:    s_mul_u64 s[4:5], s[4:5], s[6:7]
-; GFX13-NEXT:    s_cbranch_execnz .LBB16_4
-; GFX13-NEXT:  .LBB16_2: ; %if
+; GFX13-NEXT:    s_mov_b32 s6, 0
+; GFX13-NEXT:    s_branch .LBB16_3
+; GFX13-NEXT:  .LBB16_2:
+; GFX13-NEXT:    s_mov_b32 s6, -1
+; GFX13-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; GFX13-NEXT:  .LBB16_3: ; %Flow
+; GFX13-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX13-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX13-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX13-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX13-NEXT:    s_cbranch_scc1 .LBB16_5
+; GFX13-NEXT:  ; %bb.4: ; %if
 ; GFX13-NEXT:    s_mov_b32 s7, 0x31016000
 ; GFX13-NEXT:    s_mov_b32 s6, -1
 ; GFX13-NEXT:    s_mov_b32 s4, s2
 ; GFX13-NEXT:    s_mov_b32 s5, s3
 ; GFX13-NEXT:    buffer_load_b64 v[0:1], off, s[4:7], null
-; GFX13-NEXT:    s_branch .LBB16_5
-; GFX13-NEXT:  .LBB16_3:
-; GFX13-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; GFX13-NEXT:    s_branch .LBB16_2
-; GFX13-NEXT:  .LBB16_4:
+; GFX13-NEXT:    s_branch .LBB16_6
+; GFX13-NEXT:  .LBB16_5:
 ; GFX13-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5
-; GFX13-NEXT:  .LBB16_5: ; %endif
+; GFX13-NEXT:  .LBB16_6: ; %endif
 ; GFX13-NEXT:    s_mov_b32 s3, 0x31016000
 ; GFX13-NEXT:    s_mov_b32 s2, -1
 ; GFX13-NEXT:    s_wait_loadcnt 0x0

diff  --git a/llvm/test/CodeGen/AMDGPU/no-fold-accvgpr-mov.ll b/llvm/test/CodeGen/AMDGPU/no-fold-accvgpr-mov.ll
index 401ad6489bf6e..92e6d985062bd 100644
--- a/llvm/test/CodeGen/AMDGPU/no-fold-accvgpr-mov.ll
+++ b/llvm/test/CodeGen/AMDGPU/no-fold-accvgpr-mov.ll
@@ -5,79 +5,93 @@
 define amdgpu_kernel void @matmul_kernel(i32 %a0, i32 %a1) {
 ; GFX942-LABEL: matmul_kernel:
 ; GFX942:       ; %bb.0: ; %entry
-; GFX942-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0
+; GFX942-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x0
 ; GFX942-NEXT:    v_mov_b32_e32 v1, 0
-; GFX942-NEXT:    s_mov_b32 s2, 0
+; GFX942-NEXT:    s_mov_b32 s0, 0
 ; GFX942-NEXT:    v_mov_b32_e32 v0, v1
 ; GFX942-NEXT:    s_mov_b32 s6, 0
 ; GFX942-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX942-NEXT:    s_cmp_lg_u32 s0, 0
-; GFX942-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX942-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[0:1]
-; GFX942-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v2
-; GFX942-NEXT:    s_branch .LBB0_2
+; GFX942-NEXT:    s_cmp_lg_u32 s2, 0
+; GFX942-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX942-NEXT:    s_branch .LBB0_3
 ; GFX942-NEXT:  .LBB0_1: ; %bb2
-; GFX942-NEXT:    ; in Loop: Header=BB0_2 Depth=1
-; GFX942-NEXT:    s_mov_b32 s3, s2
-; GFX942-NEXT:    s_nop 0
-; GFX942-NEXT:    v_mov_b64_e32 v[4:5], s[2:3]
+; GFX942-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; GFX942-NEXT:    s_mov_b32 s1, s0
+; GFX942-NEXT:    v_mov_b64_e32 v[4:5], s[0:1]
 ; GFX942-NEXT:    v_mov_b32_e32 v2, v1
 ; GFX942-NEXT:    v_mov_b32_e32 v3, v1
 ; GFX942-NEXT:    s_or_b32 s4, s6, 1
-; GFX942-NEXT:    s_ashr_i32 s3, s6, 31
+; GFX942-NEXT:    s_ashr_i32 s1, s6, 31
 ; GFX942-NEXT:    v_mfma_f32_16x16x16_f16 v[2:5], v[4:5], v[4:5], v[0:3]
-; GFX942-NEXT:    s_and_b32 s6, s3, s4
-; GFX942-NEXT:    s_nop 5
+; GFX942-NEXT:    s_and_b32 s6, s1, s4
+; GFX942-NEXT:    s_mov_b64 s[4:5], 0
+; GFX942-NEXT:    s_nop 4
 ; GFX942-NEXT:    v_mov_b32_e32 v0, v2
-; GFX942-NEXT:    s_cbranch_execz .LBB0_4
-; GFX942-NEXT:  .LBB0_2: ; %bb
+; GFX942-NEXT:  .LBB0_2: ; %Flow
+; GFX942-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; GFX942-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX942-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX942-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX942-NEXT:    s_cbranch_scc0 .LBB0_5
+; GFX942-NEXT:  .LBB0_3: ; %bb
 ; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GFX942-NEXT:    s_and_b64 vcc, exec, s[0:1]
-; GFX942-NEXT:    s_cbranch_vccz .LBB0_1
-; GFX942-NEXT:  ; %bb.3:
+; GFX942-NEXT:    s_and_b64 s[4:5], s[2:3], exec
+; GFX942-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX942-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX942-NEXT:    s_cbranch_scc0 .LBB0_1
+; GFX942-NEXT:  ; %bb.4: ; in Loop: Header=BB0_3 Depth=1
+; GFX942-NEXT:    s_mov_b64 s[4:5], -1
 ; GFX942-NEXT:    ; implicit-def: $sgpr6
-; GFX942-NEXT:  .LBB0_4: ; %common.ret
+; GFX942-NEXT:    s_branch .LBB0_2
+; GFX942-NEXT:  .LBB0_5: ; %common.ret
 ; GFX942-NEXT:    s_endpgm
 ;
 ; GFX908-LABEL: matmul_kernel:
 ; GFX908:       ; %bb.0: ; %entry
-; GFX908-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0
+; GFX908-NEXT:    s_load_dwordx2 s[2:3], s[8:9], 0x0
 ; GFX908-NEXT:    v_accvgpr_write_b32 a2, 0
 ; GFX908-NEXT:    v_accvgpr_write_b32 a1, 0
-; GFX908-NEXT:    s_mov_b32 s2, 0
-; GFX908-NEXT:    s_mov_b32 s3, 0
+; GFX908-NEXT:    s_mov_b32 s0, 0
+; GFX908-NEXT:    s_mov_b32 s1, 0
 ; GFX908-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX908-NEXT:    s_cmp_lg_u32 s0, 0
-; GFX908-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX908-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GFX908-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; GFX908-NEXT:    s_branch .LBB0_2
+; GFX908-NEXT:    s_cmp_lg_u32 s2, 0
+; GFX908-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GFX908-NEXT:    s_branch .LBB0_3
 ; GFX908-NEXT:  .LBB0_1: ; %bb2
-; GFX908-NEXT:    ; in Loop: Header=BB0_2 Depth=1
-; GFX908-NEXT:    s_nop 6
+; GFX908-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; GFX908-NEXT:    s_nop 1
 ; GFX908-NEXT:    v_accvgpr_read_b32 v3, a2
-; GFX908-NEXT:    s_or_b32 s4, s3, 1
-; GFX908-NEXT:    s_ashr_i32 s5, s3, 31
-; GFX908-NEXT:    s_mov_b32 s3, s2
-; GFX908-NEXT:    v_mov_b32_e32 v1, s2
-; GFX908-NEXT:    v_mov_b32_e32 v2, s3
+; GFX908-NEXT:    s_or_b32 s4, s1, 1
+; GFX908-NEXT:    s_ashr_i32 s5, s1, 31
+; GFX908-NEXT:    s_mov_b32 s1, s0
+; GFX908-NEXT:    v_mov_b32_e32 v2, s1
+; GFX908-NEXT:    v_mov_b32_e32 v1, s0
 ; GFX908-NEXT:    v_accvgpr_write_b32 a0, v3
 ; GFX908-NEXT:    v_accvgpr_read_b32 v4, a1
 ; GFX908-NEXT:    v_accvgpr_read_b32 v3, a1
-; GFX908-NEXT:    s_and_b32 s3, s5, s4
+; GFX908-NEXT:    s_and_b32 s1, s5, s4
 ; GFX908-NEXT:    v_accvgpr_write_b32 a2, v4
 ; GFX908-NEXT:    v_accvgpr_write_b32 a3, v3
-; GFX908-NEXT:    s_nop 0
+; GFX908-NEXT:    s_mov_b64 s[4:5], 0
 ; GFX908-NEXT:    v_mfma_f32_16x16x16f16 a[2:5], v[1:2], v[1:2], a[0:3]
-; GFX908-NEXT:    s_cbranch_execz .LBB0_4
-; GFX908-NEXT:  .LBB0_2: ; %bb
+; GFX908-NEXT:  .LBB0_2: ; %Flow
+; GFX908-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; GFX908-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GFX908-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX908-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX908-NEXT:    s_cbranch_scc0 .LBB0_5
+; GFX908-NEXT:  .LBB0_3: ; %bb
 ; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GFX908-NEXT:    s_and_b64 vcc, exec, s[0:1]
-; GFX908-NEXT:    s_cbranch_vccz .LBB0_1
-; GFX908-NEXT:  ; %bb.3:
-; GFX908-NEXT:    ; implicit-def: $sgpr3
+; GFX908-NEXT:    s_and_b64 s[4:5], s[2:3], exec
+; GFX908-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX908-NEXT:    s_cmp_lg_u32 s4, 1
+; GFX908-NEXT:    s_cbranch_scc0 .LBB0_1
+; GFX908-NEXT:  ; %bb.4: ; in Loop: Header=BB0_3 Depth=1
+; GFX908-NEXT:    s_mov_b64 s[4:5], -1
+; GFX908-NEXT:    ; implicit-def: $sgpr1
 ; GFX908-NEXT:    ; implicit-def: $agpr2
-; GFX908-NEXT:  .LBB0_4: ; %common.ret
+; GFX908-NEXT:    s_branch .LBB0_2
+; GFX908-NEXT:  .LBB0_5: ; %common.ret
 ; GFX908-NEXT:    s_endpgm
 entry:
   br label %bb

diff  --git a/llvm/test/CodeGen/AMDGPU/noclobber-barrier.ll b/llvm/test/CodeGen/AMDGPU/noclobber-barrier.ll
index 5155873afa8f6..c56d9006bbae9 100644
--- a/llvm/test/CodeGen/AMDGPU/noclobber-barrier.ll
+++ b/llvm/test/CodeGen/AMDGPU/noclobber-barrier.ll
@@ -83,8 +83,10 @@ define amdgpu_kernel void @memory_phi_no_clobber(ptr addrspace(1) %arg, i1 %cond
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_mov_b64 s[2:3], 0
 ; GCN-NEXT:  .LBB1_2: ; %Flow
-; GCN-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN-NEXT:    s_cbranch_vccnz .LBB1_4
+; GCN-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB1_4
 ; GCN-NEXT:  ; %bb.3: ; %if.then
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_barrier
@@ -151,8 +153,10 @@ define amdgpu_kernel void @memory_phi_clobber1(ptr addrspace(1) %arg, i1 %cond)
 ; GCN-NEXT:    s_barrier
 ; GCN-NEXT:    s_mov_b64 s[2:3], 0
 ; GCN-NEXT:  .LBB2_2: ; %Flow
-; GCN-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN-NEXT:    s_cbranch_vccnz .LBB2_4
+; GCN-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB2_4
 ; GCN-NEXT:  ; %bb.3: ; %if.then
 ; GCN-NEXT:    v_mov_b32_e32 v0, 0
 ; GCN-NEXT:    v_mov_b32_e32 v1, 1
@@ -221,8 +225,10 @@ define amdgpu_kernel void @memory_phi_clobber2(ptr addrspace(1) %arg, i1 %cond)
 ; GCN-NEXT:    s_mov_b64 s[2:3], 0
 ; GCN-NEXT:  .LBB3_2: ; %Flow
 ; GCN-NEXT:    s_load_dword s4, s[0:1], 0x0
-; GCN-NEXT:    s_andn2_b64 vcc, exec, s[2:3]
-; GCN-NEXT:    s_cbranch_vccnz .LBB3_4
+; GCN-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB3_4
 ; GCN-NEXT:  ; %bb.3: ; %if.then
 ; GCN-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GCN-NEXT:    s_barrier
@@ -273,26 +279,26 @@ define amdgpu_kernel void @no_clobbering_loop1(ptr addrspace(1) %arg, i1 %cc) {
 ;
 ; GCN-LABEL: no_clobbering_loop1:
 ; GCN:       ; %bb.0: ; %bb
-; GCN-NEXT:    s_load_dword s0, s[4:5], 0x2c
-; GCN-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x24
+; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24
+; GCN-NEXT:    s_load_dword s2, s[4:5], 0x2c
 ; GCN-NEXT:    v_mov_b32_e32 v0, 0
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-NEXT:    s_bitcmp1_b32 s0, 0
-; GCN-NEXT:    s_load_dword s4, s[2:3], 0x0
-; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[0:1]
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v1
+; GCN-NEXT:    s_load_dword s4, s[0:1], 0x0
+; GCN-NEXT:    s_bitcmp1_b32 s2, 0
+; GCN-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GCN-NEXT:    s_xor_b64 s[2:3], s[2:3], -1
 ; GCN-NEXT:  .LBB4_1: ; %while.cond
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GCN-NEXT:    s_load_dword s5, s[2:3], 0x4
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_load_dword s5, s[0:1], 0x4
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_add_i32 s5, s5, s4
+; GCN-NEXT:    s_and_b64 s[6:7], s[2:3], exec
 ; GCN-NEXT:    v_mov_b32_e32 v1, s5
-; GCN-NEXT:    global_store_dword v0, v1, s[2:3] offset:8
+; GCN-NEXT:    s_cselect_b32 s5, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s5, 1
+; GCN-NEXT:    global_store_dword v0, v1, s[0:1] offset:8
 ; GCN-NEXT:    ; wave barrier
-; GCN-NEXT:    s_cbranch_vccnz .LBB4_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB4_1
 ; GCN-NEXT:  ; %bb.2: ; %end
 ; GCN-NEXT:    s_endpgm
 bb:
@@ -391,25 +397,25 @@ define amdgpu_kernel void @clobbering_loop(ptr addrspace(1) %arg, ptr addrspace(
 ;
 ; GCN-LABEL: clobbering_loop:
 ; GCN:       ; %bb.0: ; %bb
-; GCN-NEXT:    s_load_dword s0, s[4:5], 0x34
-; GCN-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x24
+; GCN-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
+; GCN-NEXT:    s_load_dword s7, s[4:5], 0x34
 ; GCN-NEXT:    v_mov_b32_e32 v0, 0
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-NEXT:    s_bitcmp1_b32 s0, 0
-; GCN-NEXT:    s_load_dword s2, s[8:9], 0x0
-; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[0:1]
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v1
+; GCN-NEXT:    s_load_dword s6, s[0:1], 0x0
+; GCN-NEXT:    s_bitcmp1_b32 s7, 0
+; GCN-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; GCN-NEXT:    s_xor_b64 s[4:5], s[4:5], -1
 ; GCN-NEXT:  .LBB6_1: ; %while.cond
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GCN-NEXT:    global_load_dword v1, v0, s[8:9] offset:4
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    global_load_dword v1, v0, s[0:1] offset:4
+; GCN-NEXT:    s_and_b64 s[8:9], s[4:5], exec
+; GCN-NEXT:    s_cselect_b32 s7, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s7, 1
 ; GCN-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
-; GCN-NEXT:    v_add_u32_e32 v1, s2, v1
-; GCN-NEXT:    global_store_dword v0, v1, s[10:11] offset:4
+; GCN-NEXT:    v_add_u32_e32 v1, s6, v1
+; GCN-NEXT:    global_store_dword v0, v1, s[2:3] offset:4
 ; GCN-NEXT:    ; wave barrier
-; GCN-NEXT:    s_cbranch_vccnz .LBB6_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB6_1
 ; GCN-NEXT:  ; %bb.2: ; %end
 ; GCN-NEXT:    s_endpgm
 bb:

diff  --git a/llvm/test/CodeGen/AMDGPU/optimize-negated-cond.ll b/llvm/test/CodeGen/AMDGPU/optimize-negated-cond.ll
index a8b2af48e5c98..95f716541b149 100644
--- a/llvm/test/CodeGen/AMDGPU/optimize-negated-cond.ll
+++ b/llvm/test/CodeGen/AMDGPU/optimize-negated-cond.ll
@@ -4,14 +4,14 @@
 define amdgpu_kernel void @negated_cond(ptr addrspace(1) %arg1) {
 ; GCN-LABEL: negated_cond:
 ; GCN:       ; %bb.0: ; %bb
-; GCN-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x9
-; GCN-NEXT:    s_mov_b32 s7, 0xf000
-; GCN-NEXT:    s_mov_b32 s10, -1
-; GCN-NEXT:    s_mov_b32 s11, s7
-; GCN-NEXT:    s_mov_b32 s6, 0
+; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9
+; GCN-NEXT:    s_mov_b32 s3, 0xf000
+; GCN-NEXT:    s_mov_b32 s6, -1
+; GCN-NEXT:    s_mov_b32 s7, s3
+; GCN-NEXT:    s_mov_b32 s2, 0
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-NEXT:    s_mov_b32 s8, s4
-; GCN-NEXT:    s_mov_b32 s9, s5
+; GCN-NEXT:    s_mov_b32 s4, s0
+; GCN-NEXT:    s_mov_b32 s5, s1
 ; GCN-NEXT:    v_mov_b32_e32 v0, 0
 ; GCN-NEXT:    s_branch .LBB0_2
 ; GCN-NEXT:  .LBB0_1: ; %loop.exit.guard
@@ -21,26 +21,31 @@ define amdgpu_kernel void @negated_cond(ptr addrspace(1) %arg1) {
 ; GCN-NEXT:  .LBB0_2: ; %bb1
 ; GCN-NEXT:    ; =>This Loop Header: Depth=1
 ; GCN-NEXT:    ; Child Loop BB0_4 Depth 2
-; GCN-NEXT:    buffer_load_dword v1, off, s[8:11], 0
-; GCN-NEXT:    s_mov_b32 s12, s6
+; GCN-NEXT:    buffer_load_dword v1, off, s[4:7], 0
+; GCN-NEXT:    s_mov_b32 s12, s2
 ; GCN-NEXT:    s_waitcnt vmcnt(0)
-; GCN-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v1
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[2:3], 0, v1
-; GCN-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v1
+; GCN-NEXT:    v_readfirstlane_b32 s10, v1
+; GCN-NEXT:    s_cmp_eq_u32 s10, 0
+; GCN-NEXT:    s_cselect_b64 s[8:9], -1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s10, 0
+; GCN-NEXT:    s_cselect_b64 s[10:11], -1, 0
 ; GCN-NEXT:    s_branch .LBB0_4
 ; GCN-NEXT:  .LBB0_3: ; %Flow1
 ; GCN-NEXT:    ; in Loop: Header=BB0_4 Depth=2
-; GCN-NEXT:    s_andn2_b64 vcc, exec, s[16:17]
-; GCN-NEXT:    s_cbranch_vccz .LBB0_1
+; GCN-NEXT:    s_and_b64 s[16:17], s[16:17], exec
+; GCN-NEXT:    s_cselect_b32 s13, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s13, 1
+; GCN-NEXT:    s_cbranch_scc0 .LBB0_1
 ; GCN-NEXT:  .LBB0_4: ; %bb2
 ; GCN-NEXT:    ; Parent Loop BB0_2 Depth=1
 ; GCN-NEXT:    ; => This Inner Loop Header: Depth=2
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
 ; GCN-NEXT:    s_lshl_b32 s12, s12, 5
-; GCN-NEXT:    s_cbranch_vccz .LBB0_6
+; GCN-NEXT:    s_and_b64 s[14:15], s[8:9], exec
+; GCN-NEXT:    s_cselect_b32 s13, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s13, 1
+; GCN-NEXT:    s_cbranch_scc0 .LBB0_6
 ; GCN-NEXT:  ; %bb.5: ; in Loop: Header=BB0_4 Depth=2
-; GCN-NEXT:    s_mov_b64 s[16:17], s[2:3]
+; GCN-NEXT:    s_mov_b64 s[16:17], s[10:11]
 ; GCN-NEXT:    s_branch .LBB0_7
 ; GCN-NEXT:  .LBB0_6: ; %bb3
 ; GCN-NEXT:    ; in Loop: Header=BB0_4 Depth=2
@@ -48,10 +53,12 @@ define amdgpu_kernel void @negated_cond(ptr addrspace(1) %arg1) {
 ; GCN-NEXT:    s_mov_b64 s[16:17], -1
 ; GCN-NEXT:  .LBB0_7: ; %Flow
 ; GCN-NEXT:    ; in Loop: Header=BB0_4 Depth=2
+; GCN-NEXT:    s_and_b64 s[16:17], s[16:17], exec
+; GCN-NEXT:    s_cselect_b32 s13, 1, 0
 ; GCN-NEXT:    s_mov_b64 s[14:15], -1
-; GCN-NEXT:    s_andn2_b64 vcc, exec, s[16:17]
+; GCN-NEXT:    s_cmp_lg_u32 s13, 1
 ; GCN-NEXT:    s_mov_b64 s[16:17], -1
-; GCN-NEXT:    s_cbranch_vccnz .LBB0_3
+; GCN-NEXT:    s_cbranch_scc1 .LBB0_3
 ; GCN-NEXT:  ; %bb.8: ; %bb4
 ; GCN-NEXT:    ; in Loop: Header=BB0_4 Depth=2
 ; GCN-NEXT:    s_ashr_i32 s13, s12, 31
@@ -61,7 +68,7 @@ define amdgpu_kernel void @negated_cond(ptr addrspace(1) %arg1) {
 ; GCN-NEXT:    v_mov_b32_e32 v2, s15
 ; GCN-NEXT:    s_mov_b64 s[14:15], 0
 ; GCN-NEXT:    s_cselect_b64 s[16:17], -1, 0
-; GCN-NEXT:    buffer_store_dword v0, v[1:2], s[4:7], 0 addr64
+; GCN-NEXT:    buffer_store_dword v0, v[1:2], s[0:3], 0 addr64
 ; GCN-NEXT:    s_branch .LBB0_3
 ; GCN-NEXT:  .LBB0_9: ; %DummyReturnBlock
 ; GCN-NEXT:    s_endpgm
@@ -93,45 +100,52 @@ bb4:
 define amdgpu_kernel void @negated_cond_dominated_blocks(ptr addrspace(1) %arg1) {
 ; GCN-LABEL: negated_cond_dominated_blocks:
 ; GCN:       ; %bb.0: ; %bb
-; GCN-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x9
-; GCN-NEXT:    s_mov_b32 s6, 0
-; GCN-NEXT:    s_mov_b32 s7, 0xf000
+; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9
+; GCN-NEXT:    s_mov_b32 s2, 0
+; GCN-NEXT:    s_mov_b32 s3, 0xf000
 ; GCN-NEXT:    v_mov_b32_e32 v0, 0
-; GCN-NEXT:    s_mov_b32 s3, s6
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-NEXT:    s_load_dword s0, s[4:5], 0x0
+; GCN-NEXT:    s_load_dword s4, s[0:1], 0x0
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-NEXT:    s_cmp_lg_u32 s0, 0
-; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GCN-NEXT:    s_and_b64 s[0:1], exec, s[0:1]
+; GCN-NEXT:    s_cmp_lg_u32 s4, 0
+; GCN-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; GCN-NEXT:    s_and_b64 vcc, exec, s[4:5]
+; GCN-NEXT:    s_mov_b32 s5, s2
 ; GCN-NEXT:    s_branch .LBB1_2
 ; GCN-NEXT:  .LBB1_1: ; %bb7
 ; GCN-NEXT:    ; in Loop: Header=BB1_2 Depth=1
-; GCN-NEXT:    s_ashr_i32 s3, s2, 31
-; GCN-NEXT:    s_lshl_b64 s[8:9], s[2:3], 2
-; GCN-NEXT:    v_mov_b32_e32 v1, s8
-; GCN-NEXT:    v_mov_b32_e32 v2, s9
-; GCN-NEXT:    s_cmp_eq_u32 s2, 32
-; GCN-NEXT:    s_mov_b32 s3, s2
-; GCN-NEXT:    buffer_store_dword v0, v[1:2], s[4:7], 0 addr64
-; GCN-NEXT:    s_cbranch_scc1 .LBB1_6
+; GCN-NEXT:    s_ashr_i32 s5, s4, 31
+; GCN-NEXT:    s_lshl_b64 s[6:7], s[4:5], 2
+; GCN-NEXT:    v_mov_b32_e32 v1, s6
+; GCN-NEXT:    v_mov_b32_e32 v2, s7
+; GCN-NEXT:    s_cmp_eq_u32 s4, 32
+; GCN-NEXT:    s_mov_b32 s5, s4
+; GCN-NEXT:    buffer_store_dword v0, v[1:2], s[0:3], 0 addr64
+; GCN-NEXT:    s_cbranch_scc1 .LBB1_7
 ; GCN-NEXT:  .LBB1_2: ; %bb4
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GCN-NEXT:    s_mov_b64 vcc, s[0:1]
+; GCN-NEXT:    s_mov_b64 vcc, vcc
 ; GCN-NEXT:    s_cbranch_vccz .LBB1_4
 ; GCN-NEXT:  ; %bb.3: ; %bb6
 ; GCN-NEXT:    ; in Loop: Header=BB1_2 Depth=1
-; GCN-NEXT:    s_add_i32 s2, s3, 1
-; GCN-NEXT:    s_cbranch_execnz .LBB1_1
+; GCN-NEXT:    s_add_i32 s4, s5, 1
+; GCN-NEXT:    s_mov_b64 s[6:7], 0
 ; GCN-NEXT:    s_branch .LBB1_5
 ; GCN-NEXT:  .LBB1_4: ; in Loop: Header=BB1_2 Depth=1
-; GCN-NEXT:    ; implicit-def: $sgpr2
-; GCN-NEXT:  .LBB1_5: ; %bb5
+; GCN-NEXT:    s_mov_b64 s[6:7], -1
+; GCN-NEXT:    ; implicit-def: $sgpr4
+; GCN-NEXT:  .LBB1_5: ; %Flow
 ; GCN-NEXT:    ; in Loop: Header=BB1_2 Depth=1
-; GCN-NEXT:    s_lshl_b32 s2, s3, 5
-; GCN-NEXT:    s_or_b32 s2, s2, 1
+; GCN-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN-NEXT:    s_cselect_b32 s6, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s6, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB1_1
+; GCN-NEXT:  ; %bb.6: ; %bb5
+; GCN-NEXT:    ; in Loop: Header=BB1_2 Depth=1
+; GCN-NEXT:    s_lshl_b32 s4, s5, 5
+; GCN-NEXT:    s_or_b32 s4, s4, 1
 ; GCN-NEXT:    s_branch .LBB1_1
-; GCN-NEXT:  .LBB1_6: ; %bb3
+; GCN-NEXT:  .LBB1_7: ; %bb3
 ; GCN-NEXT:    s_endpgm
 bb:
   br label %bb2

diff  --git a/llvm/test/CodeGen/AMDGPU/or.ll b/llvm/test/CodeGen/AMDGPU/or.ll
index 9afaab5ebcfb6..df1f300c84553 100644
--- a/llvm/test/CodeGen/AMDGPU/or.ll
+++ b/llvm/test/CodeGen/AMDGPU/or.ll
@@ -881,7 +881,9 @@ define amdgpu_kernel void @or_i1(ptr addrspace(1) %out, ptr addrspace(1) %in0, p
 ; GFX6-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; GFX6-NEXT:    v_max_f32_e32 v0, v1, v0
 ; GFX6-NEXT:    v_cmp_le_f32_e32 vcc, 0, v0
-; GFX6-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; GFX6-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GFX6-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX6-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX6-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; GFX6-NEXT:    s_endpgm
 ;
@@ -908,7 +910,9 @@ define amdgpu_kernel void @or_i1(ptr addrspace(1) %out, ptr addrspace(1) %in0, p
 ; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v1
 ; GFX8-NEXT:    v_max_f32_e32 v0, v1, v0
 ; GFX8-NEXT:    v_cmp_le_f32_e32 vcc, 0, v0
-; GFX8-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; GFX8-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GFX8-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX8-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX8-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; GFX8-NEXT:    s_endpgm
   %a = load float, ptr addrspace(1) %in0
@@ -934,7 +938,9 @@ define amdgpu_kernel void @s_or_i1(ptr addrspace(1) %out, i32 %a, i32 %b, i32 %c
 ; GFX6-NEXT:    s_cmp_eq_u32 s2, s3
 ; GFX6-NEXT:    s_cselect_b64 s[2:3], -1, 0
 ; GFX6-NEXT:    s_or_b64 s[0:1], s[0:1], s[2:3]
-; GFX6-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; GFX6-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX6-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX6-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX6-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; GFX6-NEXT:    s_endpgm
 ;
@@ -950,7 +956,9 @@ define amdgpu_kernel void @s_or_i1(ptr addrspace(1) %out, i32 %a, i32 %b, i32 %c
 ; GFX8-NEXT:    s_cmp_eq_u32 s2, s3
 ; GFX8-NEXT:    s_cselect_b64 s[2:3], -1, 0
 ; GFX8-NEXT:    s_or_b64 s[0:1], s[0:1], s[2:3]
-; GFX8-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; GFX8-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX8-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX8-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX8-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; GFX8-NEXT:    s_endpgm
   %cmp0 = icmp eq i32 %a, %b

diff  --git a/llvm/test/CodeGen/AMDGPU/rewrite-vgpr-mfma-to-agpr-phi.ll b/llvm/test/CodeGen/AMDGPU/rewrite-vgpr-mfma-to-agpr-phi.ll
index fc154604b8700..df7acbbc03ed4 100644
--- a/llvm/test/CodeGen/AMDGPU/rewrite-vgpr-mfma-to-agpr-phi.ll
+++ b/llvm/test/CodeGen/AMDGPU/rewrite-vgpr-mfma-to-agpr-phi.ll
@@ -24,16 +24,21 @@ define amdgpu_kernel void @test_rewrite_mfma_copy_to_agpr_phi(ptr addrspace(1) %
 ; CHECK-NEXT:    global_load_dwordx4 a[0:3], v32, s[2:3]
 ; CHECK-NEXT:    v_mov_b32_e32 v33, 2.0
 ; CHECK-NEXT:    v_mov_b32_e32 v34, 4.0
+; CHECK-NEXT:    s_mov_b64 s[2:3], 0
 ; CHECK-NEXT:    s_waitcnt vmcnt(0)
-; CHECK-NEXT:    s_nop 0
 ; CHECK-NEXT:    v_mfma_f32_32x32x1_2b_f32 a[0:31], v33, v34, a[0:31]
 ; CHECK-NEXT:    ; kill: def $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15_agpr16_agpr17_agpr18_agpr19_agpr20_agpr21_agpr22_agpr23_agpr24_agpr25_agpr26_agpr27_agpr28_agpr29_agpr30_agpr31 killed $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15_agpr16_agpr17_agpr18_agpr19_agpr20_agpr21_agpr22_agpr23_agpr24_agpr25_agpr26_agpr27_agpr28_agpr29_agpr30_agpr31 killed $exec
-; CHECK-NEXT:    s_cbranch_execz .LBB0_3
-; CHECK-NEXT:    s_branch .LBB0_4
+; CHECK-NEXT:    s_branch .LBB0_3
 ; CHECK-NEXT:  .LBB0_2:
+; CHECK-NEXT:    s_mov_b64 s[2:3], -1
 ; CHECK-NEXT:    ; implicit-def: $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15_agpr16_agpr17_agpr18_agpr19_agpr20_agpr21_agpr22_agpr23_agpr24_agpr25_agpr26_agpr27_agpr28_agpr29_agpr30_agpr31
-; CHECK-NEXT:  .LBB0_3: ; %if
-; CHECK-NEXT:    s_nop 15
+; CHECK-NEXT:  .LBB0_3: ; %Flow
+; CHECK-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; CHECK-NEXT:    s_cselect_b32 s2, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s2, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_5
+; CHECK-NEXT:  ; %bb.4: ; %if
+; CHECK-NEXT:    s_nop 12
 ; CHECK-NEXT:    global_load_dwordx4 a[28:31], v32, s[0:1] offset:112
 ; CHECK-NEXT:    global_load_dwordx4 a[24:27], v32, s[0:1] offset:96
 ; CHECK-NEXT:    global_load_dwordx4 a[20:23], v32, s[0:1] offset:80
@@ -48,7 +53,7 @@ define amdgpu_kernel void @test_rewrite_mfma_copy_to_agpr_phi(ptr addrspace(1) %
 ; CHECK-NEXT:    s_nop 0
 ; CHECK-NEXT:    v_mfma_f32_32x32x1_2b_f32 a[0:31], v32, v33, a[0:31]
 ; CHECK-NEXT:    ; kill: def $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15_agpr16_agpr17_agpr18_agpr19_agpr20_agpr21_agpr22_agpr23_agpr24_agpr25_agpr26_agpr27_agpr28_agpr29_agpr30_agpr31 killed $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15_agpr16_agpr17_agpr18_agpr19_agpr20_agpr21_agpr22_agpr23_agpr24_agpr25_agpr26_agpr27_agpr28_agpr29_agpr30_agpr31 killed $exec
-; CHECK-NEXT:  .LBB0_4: ; %endif
+; CHECK-NEXT:  .LBB0_5: ; %endif
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use a[0:31]
 ; CHECK-NEXT:    ;;#ASMEND

diff  --git a/llvm/test/CodeGen/AMDGPU/s-cluster-barrier.ll b/llvm/test/CodeGen/AMDGPU/s-cluster-barrier.ll
index 421563903914c..e217c1a629ca2 100644
--- a/llvm/test/CodeGen/AMDGPU/s-cluster-barrier.ll
+++ b/llvm/test/CodeGen/AMDGPU/s-cluster-barrier.ll
@@ -9,10 +9,10 @@ define amdgpu_kernel void @kernel1() #0 {
 ; GFX12-NEXT:    s_cmp_eq_u32 0, 0
 ; GFX12-NEXT:    s_barrier_signal_isfirst -1
 ; GFX12-NEXT:    s_barrier_wait -1
-; GFX12-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX12-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX12-NEXT:    s_and_not1_b32 vcc_lo, exec_lo, s0
-; GFX12-NEXT:    s_cbranch_vccnz .LBB0_2
+; GFX12-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX12-NEXT:    s_cbranch_scc1 .LBB0_2
 ; GFX12-NEXT:  ; %bb.1:
 ; GFX12-NEXT:    s_barrier_signal -3
 ; GFX12-NEXT:  .LBB0_2:

diff  --git a/llvm/test/CodeGen/AMDGPU/s_cmp_0.ll b/llvm/test/CodeGen/AMDGPU/s_cmp_0.ll
index d66b9029dbf99..b55f2ab749345 100644
--- a/llvm/test/CodeGen/AMDGPU/s_cmp_0.ll
+++ b/llvm/test/CodeGen/AMDGPU/s_cmp_0.ll
@@ -14,9 +14,7 @@ define amdgpu_ps i32 @add32(i32 inreg %val0) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s0
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], 0, -1
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 0, 1
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = add i32 %val0, 1
   call void asm "; use $0", "s"(i32 %result)
@@ -29,9 +27,7 @@ define amdgpu_ps i32 @shl32(i32 inreg %val0, i32 inreg %val1) {
 ; CHECK-LABEL: shl32:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_lshl_b32 s0, s0, s1
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = shl i32 %val0, %val1
   %cmp = icmp ne i32 %result, 0
@@ -73,9 +69,7 @@ define amdgpu_ps i32 @shl64(i64 inreg %val0, i64 inreg %val1) {
 ; CHECK-LABEL: shl64:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_lshl_b64 s[0:1], s[0:1], s2
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = shl i64 %val0, %val1
   %cmp = icmp ne i64 %result, 0
@@ -87,9 +81,7 @@ define amdgpu_ps i32 @lshr32(i32 inreg %val0, i32 inreg %val1) {
 ; CHECK-LABEL: lshr32:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_lshr_b32 s0, s0, s1
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = lshr i32 %val0, %val1
   %cmp = icmp ne i32 %result, 0
@@ -101,9 +93,7 @@ define amdgpu_ps i32 @lshr64(i64 inreg %val0, i64 inreg %val1) {
 ; CHECK-LABEL: lshr64:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_lshr_b64 s[0:1], s[0:1], s2
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = lshr i64 %val0, %val1
   %cmp = icmp ne i64 %result, 0
@@ -115,9 +105,7 @@ define amdgpu_ps i32 @ashr32(i32 inreg %val0, i32 inreg %val1) {
 ; CHECK-LABEL: ashr32:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_ashr_i32 s0, s0, s1
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = ashr i32 %val0, %val1
   %cmp = icmp ne i32 %result, 0
@@ -129,9 +117,7 @@ define amdgpu_ps i32 @ashr64(i64 inreg %val0, i64 inreg %val1) {
 ; CHECK-LABEL: ashr64:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_ashr_i64 s[0:1], s[0:1], s2
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = ashr i64 %val0, %val1
   %cmp = icmp ne i64 %result, 0
@@ -146,9 +132,7 @@ define amdgpu_ps i32 @abs32(i32 inreg %val0) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s0
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %neg = sub i32 0, %val0
   %cond = icmp sgt i32 %val0, %neg
@@ -163,9 +147,7 @@ define amdgpu_ps i32 @abs
diff 32(i32 inreg %val0, i32 inreg %val1) {
 ; CHECK-LABEL: abs
diff 32:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_abs
diff _i32 s0, s0, s1
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %
diff  = sub i32 %val0, %val1
   %result = call i32 @llvm.abs.i32(i32 %
diff , i1 false)
@@ -178,9 +160,7 @@ define amdgpu_ps i32 @and32(i32 inreg %val0, i32 inreg %val1) {
 ; CHECK-LABEL: and32:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_and_b32 s0, s0, s1
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = and i32 %val0, %val1
   %cmp = icmp ne i32 %result, 0
@@ -192,9 +172,7 @@ define amdgpu_ps i32 @and64(i64 inreg %val0, i64 inreg %val1) {
 ; CHECK-LABEL: and64:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_and_b64 s[0:1], s[0:1], s[2:3]
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = and i64 %val0, %val1
   %cmp = icmp ne i64 %result, 0
@@ -209,9 +187,7 @@ define amdgpu_ps i32 @and32_clear_one_bit(i32 inreg %val0) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s0
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = and i32 %val0, 2147483647
   call void asm "; use $0", "s"(i32 %result)
@@ -228,9 +204,7 @@ define amdgpu_ps i32 @and64_clear_one_bit(i64 inreg %val0) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s[0:1]
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = and i64 %val0, -2147483649
   call void asm "; use $0", "s"(i64 %result)
@@ -243,9 +217,7 @@ define amdgpu_ps i32 @or32(i32 inreg %val0, i32 inreg %val1) {
 ; CHECK-LABEL: or32:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_or_b32 s0, s0, s1
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = or i32 %val0, %val1
   %cmp = icmp ne i32 %result, 0
@@ -257,9 +229,7 @@ define amdgpu_ps i32 @or64(i64 inreg %val0, i64 inreg %val1) {
 ; CHECK-LABEL: or64:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_or_b64 s[0:1], s[0:1], s[2:3]
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = or i64 %val0, %val1
   %cmp = icmp ne i64 %result, 0
@@ -271,9 +241,7 @@ define amdgpu_ps i32 @xor32(i32 inreg %val0, i32 inreg %val1) {
 ; CHECK-LABEL: xor32:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_xor_b32 s0, s0, s1
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = xor i32 %val0, %val1
   %cmp = icmp ne i32 %result, 0
@@ -285,9 +253,7 @@ define amdgpu_ps i32 @xor64(i64 inreg %val0, i64 inreg %val1) {
 ; CHECK-LABEL: xor64:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_xor_b64 s[0:1], s[0:1], s[2:3]
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = xor i64 %val0, %val1
   %cmp = icmp ne i64 %result, 0
@@ -302,9 +268,7 @@ define amdgpu_ps i32 @nand32(i32 inreg %val0, i32 inreg %val1) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s0
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = and i32 %val0, %val1
   %result2 = xor i32 %result, -1
@@ -321,9 +285,7 @@ define amdgpu_ps i32 @nand64(i64 inreg %val0, i64 inreg %val1) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s[0:1]
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = and i64 %val0, %val1
   %result2 = xor i64 %result, -1
@@ -340,9 +302,7 @@ define amdgpu_ps i32 @nor32(i32 inreg %val0, i32 inreg %val1) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s0
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = or i32 %val0, %val1
   %result2 = xor i32 %result, -1
@@ -359,9 +319,7 @@ define amdgpu_ps i32 @nor64(i64 inreg %val0, i64 inreg %val1) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s[0:1]
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = or i64 %val0, %val1
   %result2 = xor i64 %result, -1
@@ -378,9 +336,7 @@ define amdgpu_ps i32 @xnor32(i32 inreg %val0, i32 inreg %val1) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s0
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = xor i32 %val0, %val1
   %result2 = xor i32 %result, -1
@@ -397,9 +353,7 @@ define amdgpu_ps i32 @xnor64(i64 inreg %val0, i64 inreg %val1) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s[0:1]
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = xor i64 %val0, %val1
   %result2 = xor i64 %result, -1
@@ -413,9 +367,7 @@ define amdgpu_ps i32 @andn232(i32 inreg %val0, i32 inreg %val1) {
 ; CHECK-LABEL: andn232:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_andn2_b32 s0, s0, s1
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %nval1 = xor i32 %val1, -1
   %result = and i32 %val0, %nval1
@@ -428,9 +380,7 @@ define amdgpu_ps i32 @nandn264(i64 inreg %val0, i64 inreg %val1) {
 ; CHECK-LABEL: nandn264:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_andn2_b64 s[0:1], s[0:1], s[2:3]
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %nval1 = xor i64 %val1, -1
   %result = and i64 %val0, %nval1
@@ -443,9 +393,7 @@ define amdgpu_ps i32 @orn232(i32 inreg %val0, i32 inreg %val1) {
 ; CHECK-LABEL: orn232:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_orn2_b32 s0, s0, s1
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %nval1 = xor i32 %val1, -1
   %result = or i32 %val0, %nval1
@@ -458,9 +406,7 @@ define amdgpu_ps i32 @orn264(i64 inreg %val0, i64 inreg %val1) {
 ; CHECK-LABEL: orn264:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_orn2_b64 s[0:1], s[0:1], s[2:3]
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %nval1 = xor i64 %val1, -1
   %result = or i64 %val0, %nval1
@@ -473,9 +419,7 @@ define amdgpu_ps i32 @bfe_i32(i32 inreg %val0) {
 ; CHECK-LABEL: bfe_i32:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_bfe_i32 s0, s0, 0x80010
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %shl = shl i32 %val0, 8
   %result = ashr i32 %shl, 24
@@ -491,9 +435,7 @@ define amdgpu_ps i32 @bfe_i64(i64 inreg %val0) {
 ; CHECK-NEXT:    s_and_b32 s0, s0, 0xff
 ; CHECK-NEXT:    s_mov_b32 s1, 0
 ; CHECK-NEXT:    s_cmp_lg_u64 s[0:1], 0
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s[2:3]
 ; CHECK-NEXT:    ;;#ASMEND
@@ -510,9 +452,7 @@ define amdgpu_ps i32 @bfe_u32(i32 inreg %val0) {
 ; CHECK-LABEL: bfe_u32:
 ; CHECK:       ; %bb.0:
 ; CHECK-NEXT:    s_bfe_u32 s0, s0, 0x80010
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %shl = shl i32 %val0, 8
   %result = lshr i32 %shl, 24
@@ -530,9 +470,7 @@ define amdgpu_ps i32 @bfe_u64(i64 inreg %val0) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s[0:1]
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %shl = shl i64 %val0, 56
   %result = lshr i64 %shl, 56
@@ -551,9 +489,7 @@ define amdgpu_ps i32 @bcnt032(i32 inreg %val0) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s0
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = call i32 @llvm.ctpop.i32(i32 %val0) nounwind readnone
   %result2 = sub i32 32, %result
@@ -573,9 +509,7 @@ define amdgpu_ps i32 @bcnt064(i64 inreg %val0) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s[0:1]
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = call i64 @llvm.ctpop.i64(i64 %val0) nounwind readnone
   %result2 = sub i64 64, %result
@@ -592,9 +526,7 @@ define amdgpu_ps i32 @bcnt132(i32 inreg %val0) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s0
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = call i32 @llvm.ctpop.i32(i32 %val0) nounwind readnone
   call void asm "; use $0", "s"(i32 %result)
@@ -612,9 +544,7 @@ define amdgpu_ps i32 @bcnt164(i64 inreg %val0) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s[0:1]
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = call i64 @llvm.ctpop.i64(i64 %val0) nounwind readnone
   call void asm "; use $0", "s"(i64 %result)
@@ -630,9 +560,7 @@ define amdgpu_ps i32 @quadmask32(i32 inreg %val0) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s0
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = call i32 @llvm.amdgcn.s.quadmask.i32(i32 %val0) nounwind readnone
   call void asm "; use $0", "s"(i32 %result)
@@ -648,9 +576,7 @@ define amdgpu_ps i32 @quadmask64(i64 inreg %val0) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s[0:1]
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = call i64 @llvm.amdgcn.s.quadmask.i64(i64 %val0) nounwind readnone
   call void asm "; use $0", "s"(i64 %result)
@@ -666,9 +592,7 @@ define amdgpu_ps i32 @not32(i32 inreg %val0) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s0
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = xor i32 %val0, -1
   call void asm "; use $0", "s"(i32 %result)
@@ -684,9 +608,7 @@ define amdgpu_ps i32 @not64(i64 inreg %val0) {
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ; use s[0:1]
 ; CHECK-NEXT:    ;;#ASMEND
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    v_readfirstlane_b32 s0, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    ; return to shader part epilog
   %result = xor i64 %val0, -1
   call void asm "; use $0", "s"(i64 %result)

diff  --git a/llvm/test/CodeGen/AMDGPU/saddo.ll b/llvm/test/CodeGen/AMDGPU/saddo.ll
index 0e9ea5430d0ea..b1e2da0accfa5 100644
--- a/llvm/test/CodeGen/AMDGPU/saddo.ll
+++ b/llvm/test/CodeGen/AMDGPU/saddo.ll
@@ -30,10 +30,12 @@ define amdgpu_kernel void @saddo_i64_zext(ptr addrspace(1) %out, i64 %a, i64 %b)
 ; SI-NEXT:    s_cmp_lt_i32 s9, 0
 ; SI-NEXT:    s_cselect_b64 s[2:3], -1, 0
 ; SI-NEXT:    s_xor_b64 s[2:3], s[2:3], vcc
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[2:3]
+; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-NEXT:    s_cselect_b64 s[2:3], 1, 0
+; SI-NEXT:    s_add_u32 s0, s0, s2
+; SI-NEXT:    s_addc_u32 s1, s1, s3
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    v_mov_b32_e32 v1, s1
-; SI-NEXT:    v_add_i32_e32 v0, vcc, s0, v0
-; SI-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -52,10 +54,12 @@ define amdgpu_kernel void @saddo_i64_zext(ptr addrspace(1) %out, i64 %a, i64 %b)
 ; VI-NEXT:    s_cmp_lt_i32 s5, 0
 ; VI-NEXT:    s_cselect_b64 s[2:3], -1, 0
 ; VI-NEXT:    s_xor_b64 s[2:3], s[2:3], vcc
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[2:3]
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b64 s[2:3], 1, 0
+; VI-NEXT:    s_add_u32 s0, s0, s2
+; VI-NEXT:    s_addc_u32 s1, s1, s3
 ; VI-NEXT:    v_mov_b32_e32 v3, s1
-; VI-NEXT:    v_add_u32_e32 v2, vcc, s0, v2
-; VI-NEXT:    v_addc_u32_e32 v3, vcc, 0, v3, vcc
+; VI-NEXT:    v_mov_b32_e32 v2, s0
 ; VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
 ; VI-NEXT:    s_endpgm
 ;
@@ -73,10 +77,12 @@ define amdgpu_kernel void @saddo_i64_zext(ptr addrspace(1) %out, i64 %a, i64 %b)
 ; GFX9-NEXT:    s_cmp_lt_i32 s7, 0
 ; GFX9-NEXT:    s_cselect_b64 s[2:3], -1, 0
 ; GFX9-NEXT:    s_xor_b64 s[2:3], s[2:3], vcc
-; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[2:3]
-; GFX9-NEXT:    v_mov_b32_e32 v1, s5
-; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, s4, v0
-; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b64 s[2:3], 1, 0
+; GFX9-NEXT:    s_add_u32 s2, s4, s2
+; GFX9-NEXT:    s_addc_u32 s3, s5, s3
+; GFX9-NEXT:    v_mov_b32_e32 v0, s2
+; GFX9-NEXT:    v_mov_b32_e32 v1, s3
 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
 ; GFX9-NEXT:    s_endpgm
 ;
@@ -93,9 +99,12 @@ define amdgpu_kernel void @saddo_i64_zext(ptr addrspace(1) %out, i64 %a, i64 %b)
 ; GFX10-NEXT:    v_cmp_lt_i64_e64 s2, s[4:5], s[2:3]
 ; GFX10-NEXT:    s_cselect_b32 s3, -1, 0
 ; GFX10-NEXT:    s_xor_b32 s2, s3, s2
-; GFX10-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s2
-; GFX10-NEXT:    v_add_co_u32 v0, s2, s4, v0
-; GFX10-NEXT:    v_add_co_ci_u32_e64 v1, s2, s5, 0, s2
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b64 s[2:3], 1, 0
+; GFX10-NEXT:    s_add_u32 s2, s4, s2
+; GFX10-NEXT:    s_addc_u32 s3, s5, s3
+; GFX10-NEXT:    v_mov_b32_e32 v0, s2
+; GFX10-NEXT:    v_mov_b32_e32 v1, s3
 ; GFX10-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
 ; GFX10-NEXT:    s_endpgm
 ;
@@ -104,7 +113,6 @@ define amdgpu_kernel void @saddo_i64_zext(ptr addrspace(1) %out, i64 %a, i64 %b)
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
 ; GFX11-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_add_u32 s6, s2, s4
 ; GFX11-NEXT:    s_addc_u32 s7, s3, s5
@@ -113,10 +121,13 @@ define amdgpu_kernel void @saddo_i64_zext(ptr addrspace(1) %out, i64 %a, i64 %b)
 ; GFX11-NEXT:    s_cselect_b32 s3, -1, 0
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    s_xor_b32 s2, s3, s2
-; GFX11-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s2
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX11-NEXT:    v_add_co_u32 v0, s2, s6, v0
-; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, s7, 0, s2
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b64 s[2:3], 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    s_add_u32 s2, s6, s2
+; GFX11-NEXT:    s_addc_u32 s3, s7, s3
+; GFX11-NEXT:    v_mov_b32_e32 v0, s2
+; GFX11-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, s3
 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %sadd = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %a, i64 %b) nounwind
@@ -141,17 +152,19 @@ define amdgpu_kernel void @s_saddo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    s_cmp_lt_i32 s9, 0
 ; SI-NEXT:    s_cselect_b64 s[10:11], -1, 0
 ; SI-NEXT:    s_cmp_lt_i32 s12, s8
-; SI-NEXT:    s_mov_b32 s5, s1
 ; SI-NEXT:    s_cselect_b64 s[8:9], -1, 0
+; SI-NEXT:    s_mov_b32 s5, s1
+; SI-NEXT:    s_xor_b64 s[8:9], s[10:11], s[8:9]
 ; SI-NEXT:    v_mov_b32_e32 v0, s12
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
-; SI-NEXT:    s_xor_b64 s[4:5], s[10:11], s[8:9]
+; SI-NEXT:    s_and_b64 s[4:5], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
 ; SI-NEXT:    s_mov_b32 s0, s2
 ; SI-NEXT:    s_mov_b32 s1, s3
 ; SI-NEXT:    s_mov_b32 s2, s6
 ; SI-NEXT:    s_mov_b32 s3, s7
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -169,10 +182,12 @@ define amdgpu_kernel void @s_saddo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    v_mov_b32_e32 v3, s3
 ; VI-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; VI-NEXT:    v_mov_b32_e32 v4, s6
 ; VI-NEXT:    s_xor_b64 s[0:1], s[0:1], s[2:3]
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    v_mov_b32_e32 v4, s6
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dword v[0:1], v4
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
@@ -258,7 +273,9 @@ define amdgpu_kernel void @v_saddo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    v_cmp_gt_i32_e32 vcc, 0, v1
 ; SI-NEXT:    v_cmp_lt_i32_e64 s[0:1], v2, v0
 ; SI-NEXT:    s_xor_b64 s[0:1], vcc, s[0:1]
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v2, off, s[8:11], 0
 ; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
@@ -282,8 +299,10 @@ define amdgpu_kernel void @v_saddo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 0, v5
 ; VI-NEXT:    v_cmp_lt_i32_e64 s[0:1], v6, v4
 ; VI-NEXT:    s_xor_b64 s[0:1], vcc, s[0:1]
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dword v[0:1], v6
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
@@ -362,18 +381,20 @@ define amdgpu_kernel void @s_saddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    v_cmp_lt_i64_e32 vcc, s[12:13], v[0:1]
 ; SI-NEXT:    s_cmp_lt_i32 s7, 0
 ; SI-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; SI-NEXT:    s_xor_b64 s[4:5], s[4:5], vcc
 ; SI-NEXT:    v_mov_b32_e32 v0, s12
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; SI-NEXT:    s_mov_b32 s8, s0
 ; SI-NEXT:    s_mov_b32 s9, s1
 ; SI-NEXT:    v_mov_b32_e32 v1, s13
-; SI-NEXT:    s_xor_b64 s[4:5], s[4:5], vcc
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
 ; SI-NEXT:    s_mov_b32 s0, s2
 ; SI-NEXT:    s_mov_b32 s1, s3
 ; SI-NEXT:    s_mov_b32 s2, s10
 ; SI-NEXT:    s_mov_b32 s3, s11
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 0
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -392,11 +413,13 @@ define amdgpu_kernel void @s_saddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    v_mov_b32_e32 v3, s3
 ; VI-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; VI-NEXT:    s_xor_b64 s[2:3], s[2:3], vcc
 ; VI-NEXT:    v_mov_b32_e32 v5, s1
 ; VI-NEXT:    v_mov_b32_e32 v4, s0
-; VI-NEXT:    s_xor_b64 s[0:1], s[2:3], vcc
+; VI-NEXT:    s_and_b64 s[0:1], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dwordx2 v[0:1], v[4:5]
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
@@ -415,8 +438,10 @@ define amdgpu_kernel void @s_saddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
 ; GFX9-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GFX9-NEXT:    s_xor_b64 s[0:1], s[0:1], vcc
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]
-; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; GFX9-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX9-NEXT:    global_store_byte v2, v0, s[10:11]
 ; GFX9-NEXT:    s_endpgm
 ;
@@ -432,8 +457,10 @@ define amdgpu_kernel void @s_saddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX10-NEXT:    s_cselect_b32 s3, -1, 0
 ; GFX10-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX10-NEXT:    v_mov_b32_e32 v1, s1
-; GFX10-NEXT:    s_xor_b32 s0, s3, s2
-; GFX10-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s0
+; GFX10-NEXT:    s_xor_b32 s2, s3, s2
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v3, s2
 ; GFX10-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]
 ; GFX10-NEXT:    global_store_byte v2, v3, s[10:11]
 ; GFX10-NEXT:    s_endpgm
@@ -447,11 +474,13 @@ define amdgpu_kernel void @s_saddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX11-NEXT:    s_cmp_lt_i32 s7, 0
 ; GFX11-NEXT:    v_cmp_lt_i64_e64 s4, s[8:9], s[4:5]
 ; GFX11-NEXT:    s_cselect_b32 s5, -1, 0
-; GFX11-NEXT:    v_mov_b32_e32 v0, s8
-; GFX11-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, s9
+; GFX11-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX11-NEXT:    s_xor_b32 s4, s5, s4
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    v_dual_mov_b32 v0, s8 :: v_dual_mov_b32 v3, s4
+; GFX11-NEXT:    v_mov_b32_e32 v1, s9
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
 ; GFX11-NEXT:    global_store_b8 v2, v3, s[2:3]
@@ -488,10 +517,12 @@ define amdgpu_kernel void @v_saddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v4, vcc, v0, v2
 ; SI-NEXT:    v_addc_u32_e32 v5, vcc, v1, v3, vcc
-; SI-NEXT:    v_cmp_lt_i64_e64 s[0:1], v[4:5], v[0:1]
-; SI-NEXT:    v_cmp_gt_i32_e32 vcc, 0, v3
-; SI-NEXT:    s_xor_b64 s[0:1], vcc, s[0:1]
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; SI-NEXT:    v_cmp_lt_i64_e32 vcc, v[4:5], v[0:1]
+; SI-NEXT:    v_cmp_gt_i32_e64 s[0:1], 0, v3
+; SI-NEXT:    s_xor_b64 s[0:1], s[0:1], vcc
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[4:5], off, s[8:11], 0
 ; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
@@ -513,10 +544,12 @@ define amdgpu_kernel void @v_saddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_add_u32_e32 v8, vcc, v0, v2
 ; VI-NEXT:    v_addc_u32_e32 v9, vcc, v1, v3, vcc
-; VI-NEXT:    v_cmp_lt_i64_e64 s[0:1], v[8:9], v[0:1]
-; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 0, v3
-; VI-NEXT:    s_xor_b64 s[0:1], vcc, s[0:1]
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    v_cmp_lt_i64_e32 vcc, v[8:9], v[0:1]
+; VI-NEXT:    v_cmp_gt_i32_e64 s[0:1], 0, v3
+; VI-NEXT:    s_xor_b64 s[0:1], s[0:1], vcc
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_dwordx2 v[4:5], v[8:9]
 ; VI-NEXT:    flat_store_byte v[6:7], v0
 ; VI-NEXT:    s_endpgm
@@ -531,10 +564,12 @@ define amdgpu_kernel void @v_saddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    v_add_co_u32_e32 v4, vcc, v0, v2
 ; GFX9-NEXT:    v_addc_co_u32_e32 v5, vcc, v1, v3, vcc
-; GFX9-NEXT:    v_cmp_lt_i64_e64 s[0:1], v[4:5], v[0:1]
-; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 0, v3
-; GFX9-NEXT:    s_xor_b64 s[0:1], vcc, s[0:1]
-; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; GFX9-NEXT:    v_cmp_lt_i64_e32 vcc, v[4:5], v[0:1]
+; GFX9-NEXT:    v_cmp_gt_i32_e64 s[0:1], 0, v3
+; GFX9-NEXT:    s_xor_b64 s[0:1], s[0:1], vcc
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX9-NEXT:    global_store_dwordx2 v6, v[4:5], s[8:9]
 ; GFX9-NEXT:    global_store_byte v6, v0, s[10:11]
 ; GFX9-NEXT:    s_endpgm
@@ -553,7 +588,9 @@ define amdgpu_kernel void @v_saddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX10-NEXT:    v_cmp_gt_i32_e64 s0, 0, v3
 ; GFX10-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[4:5], v[0:1]
 ; GFX10-NEXT:    s_xor_b32 s0, s0, vcc_lo
-; GFX10-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
+; GFX10-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX10-NEXT:    global_store_dwordx2 v6, v[4:5], s[8:9]
 ; GFX10-NEXT:    global_store_byte v6, v0, s[10:11]
 ; GFX10-NEXT:    s_endpgm
@@ -573,8 +610,10 @@ define amdgpu_kernel void @v_saddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX11-NEXT:    v_cmp_gt_i32_e64 s0, 0, v3
 ; GFX11-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[4:5], v[0:1]
 ; GFX11-NEXT:    s_xor_b32 s0, s0, vcc_lo
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b64 v6, v[4:5], s[4:5]
 ; GFX11-NEXT:    global_store_b8 v6, v0, s[6:7]
@@ -613,14 +652,18 @@ define amdgpu_kernel void @v_saddo_v2i32(ptr addrspace(1) %out, ptr addrspace(1)
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v5, vcc, v1, v3
 ; SI-NEXT:    v_add_i32_e32 v4, vcc, v0, v2
-; SI-NEXT:    v_cmp_gt_i32_e64 s[0:1], 0, v3
-; SI-NEXT:    v_cmp_lt_i32_e64 s[4:5], v5, v1
 ; SI-NEXT:    v_cmp_gt_i32_e32 vcc, 0, v2
+; SI-NEXT:    v_cmp_gt_i32_e64 s[0:1], 0, v3
 ; SI-NEXT:    v_cmp_lt_i32_e64 s[2:3], v4, v0
+; SI-NEXT:    v_cmp_lt_i32_e64 s[4:5], v5, v1
+; SI-NEXT:    s_xor_b64 s[2:3], vcc, s[2:3]
 ; SI-NEXT:    s_xor_b64 s[0:1], s[0:1], s[4:5]
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[0:1]
-; SI-NEXT:    s_xor_b64 s[0:1], vcc, s[2:3]
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[2:3], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
+; SI-NEXT:    v_mov_b32_e32 v1, s4
 ; SI-NEXT:    buffer_store_dwordx2 v[4:5], off, s[8:11], 0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[12:15], 0
 ; SI-NEXT:    s_endpgm
@@ -642,14 +685,18 @@ define amdgpu_kernel void @v_saddo_v2i32(ptr addrspace(1) %out, ptr addrspace(1)
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_add_u32_e32 v9, vcc, v1, v3
 ; VI-NEXT:    v_add_u32_e32 v8, vcc, v0, v2
-; VI-NEXT:    v_cmp_gt_i32_e64 s[0:1], 0, v3
-; VI-NEXT:    v_cmp_lt_i32_e64 s[4:5], v9, v1
 ; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 0, v2
+; VI-NEXT:    v_cmp_gt_i32_e64 s[0:1], 0, v3
 ; VI-NEXT:    v_cmp_lt_i32_e64 s[2:3], v8, v0
+; VI-NEXT:    v_cmp_lt_i32_e64 s[4:5], v9, v1
+; VI-NEXT:    s_xor_b64 s[2:3], vcc, s[2:3]
 ; VI-NEXT:    s_xor_b64 s[0:1], s[0:1], s[4:5]
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[0:1]
-; VI-NEXT:    s_xor_b64 s[0:1], vcc, s[2:3]
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s4, 1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
+; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    flat_store_dwordx2 v[4:5], v[8:9]
 ; VI-NEXT:    flat_store_dwordx2 v[6:7], v[0:1]
 ; VI-NEXT:    s_endpgm

diff  --git a/llvm/test/CodeGen/AMDGPU/sdiv64.ll b/llvm/test/CodeGen/AMDGPU/sdiv64.ll
index a29c21e476363..b6e133c1b9dc7 100644
--- a/llvm/test/CodeGen/AMDGPU/sdiv64.ll
+++ b/llvm/test/CodeGen/AMDGPU/sdiv64.ll
@@ -164,7 +164,6 @@ define amdgpu_kernel void @s_test_sdiv(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GCN-IR:       ; %bb.0: ; %_udiv-special-cases
 ; GCN-IR-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9
 ; GCN-IR-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0xd
-; GCN-IR-NEXT:    s_mov_b32 s15, 0
 ; GCN-IR-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-IR-NEXT:    s_ashr_i32 s4, s3, 31
 ; GCN-IR-NEXT:    s_mov_b32 s5, s4
@@ -190,17 +189,22 @@ define amdgpu_kernel void @s_test_sdiv(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GCN-IR-NEXT:    s_cselect_b32 s11, 0, s13
 ; GCN-IR-NEXT:    s_cselect_b32 s10, 0, s12
 ; GCN-IR-NEXT:    s_or_b64 s[18:19], s[18:19], s[22:23]
+; GCN-IR-NEXT:    s_and_b64 s[18:19], s[18:19], exec
+; GCN-IR-NEXT:    s_cselect_b32 s15, 1, 0
 ; GCN-IR-NEXT:    s_mov_b64 s[8:9], 0
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[18:19]
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB0_5
+; GCN-IR-NEXT:    s_cmp_lg_u32 s15, 1
+; GCN-IR-NEXT:    s_mov_b32 s15, 0
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB0_5
 ; GCN-IR-NEXT:  ; %bb.1: ; %udiv-bb1
 ; GCN-IR-NEXT:    s_add_u32 s18, s16, 1
 ; GCN-IR-NEXT:    s_addc_u32 s10, s17, 0
 ; GCN-IR-NEXT:    s_cselect_b64 s[10:11], -1, 0
-; GCN-IR-NEXT:    s_sub_i32 s16, 63, s16
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[10:11]
-; GCN-IR-NEXT:    s_lshl_b64 s[10:11], s[12:13], s16
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB0_4
+; GCN-IR-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; GCN-IR-NEXT:    s_cselect_b32 s17, 1, 0
+; GCN-IR-NEXT:    s_sub_i32 s10, 63, s16
+; GCN-IR-NEXT:    s_lshl_b64 s[10:11], s[12:13], s10
+; GCN-IR-NEXT:    s_cmp_lg_u32 s17, 1
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB0_4
 ; GCN-IR-NEXT:  ; %bb.2: ; %udiv-preheader
 ; GCN-IR-NEXT:    s_lshr_b64 s[16:17], s[12:13], s18
 ; GCN-IR-NEXT:    s_add_u32 s18, s2, -1
@@ -861,7 +865,6 @@ define amdgpu_kernel void @s_test_sdiv32_64(ptr addrspace(1) %out, i64 %x, i64 %
 ; GCN-IR:       ; %bb.0: ; %_udiv-special-cases
 ; GCN-IR-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9
 ; GCN-IR-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd
-; GCN-IR-NEXT:    s_mov_b32 s15, 0
 ; GCN-IR-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-IR-NEXT:    s_ashr_i32 s9, s3, 31
 ; GCN-IR-NEXT:    s_mov_b32 s8, s3
@@ -891,17 +894,22 @@ define amdgpu_kernel void @s_test_sdiv32_64(ptr addrspace(1) %out, i64 %x, i64 %
 ; GCN-IR-NEXT:    s_cselect_b32 s11, 0, s13
 ; GCN-IR-NEXT:    s_cselect_b32 s10, 0, s12
 ; GCN-IR-NEXT:    s_or_b64 s[18:19], s[18:19], s[22:23]
+; GCN-IR-NEXT:    s_and_b64 s[18:19], s[18:19], exec
+; GCN-IR-NEXT:    s_cselect_b32 s15, 1, 0
 ; GCN-IR-NEXT:    s_mov_b64 s[8:9], 0
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[18:19]
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB5_5
+; GCN-IR-NEXT:    s_cmp_lg_u32 s15, 1
+; GCN-IR-NEXT:    s_mov_b32 s15, 0
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB5_5
 ; GCN-IR-NEXT:  ; %bb.1: ; %udiv-bb1
 ; GCN-IR-NEXT:    s_add_u32 s18, s16, 1
 ; GCN-IR-NEXT:    s_addc_u32 s10, s17, 0
 ; GCN-IR-NEXT:    s_cselect_b64 s[10:11], -1, 0
-; GCN-IR-NEXT:    s_sub_i32 s16, 63, s16
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[10:11]
-; GCN-IR-NEXT:    s_lshl_b64 s[10:11], s[12:13], s16
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB5_4
+; GCN-IR-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; GCN-IR-NEXT:    s_cselect_b32 s17, 1, 0
+; GCN-IR-NEXT:    s_sub_i32 s10, 63, s16
+; GCN-IR-NEXT:    s_lshl_b64 s[10:11], s[12:13], s10
+; GCN-IR-NEXT:    s_cmp_lg_u32 s17, 1
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB5_4
 ; GCN-IR-NEXT:  ; %bb.2: ; %udiv-preheader
 ; GCN-IR-NEXT:    s_lshr_b64 s[16:17], s[12:13], s18
 ; GCN-IR-NEXT:    s_add_u32 s18, s2, -1
@@ -1618,17 +1626,21 @@ define amdgpu_kernel void @s_test_sdiv_k_num_i64(ptr addrspace(1) %out, i64 %x)
 ; GCN-IR-NEXT:    s_and_b64 s[8:9], s[12:13], exec
 ; GCN-IR-NEXT:    s_cselect_b32 s8, 0, 24
 ; GCN-IR-NEXT:    s_or_b64 s[12:13], s[12:13], s[14:15]
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[12:13]
+; GCN-IR-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; GCN-IR-NEXT:    s_cselect_b32 s9, 1, 0
+; GCN-IR-NEXT:    s_cmp_lg_u32 s9, 1
 ; GCN-IR-NEXT:    s_mov_b32 s9, 0
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB11_5
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB11_5
 ; GCN-IR-NEXT:  ; %bb.1: ; %udiv-bb1
 ; GCN-IR-NEXT:    s_add_u32 s12, s10, 1
 ; GCN-IR-NEXT:    s_addc_u32 s8, s11, 0
 ; GCN-IR-NEXT:    s_cselect_b64 s[8:9], -1, 0
-; GCN-IR-NEXT:    s_sub_i32 s10, 63, s10
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
-; GCN-IR-NEXT:    s_lshl_b64 s[8:9], 24, s10
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB11_4
+; GCN-IR-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GCN-IR-NEXT:    s_cselect_b32 s11, 1, 0
+; GCN-IR-NEXT:    s_sub_i32 s8, 63, s10
+; GCN-IR-NEXT:    s_lshl_b64 s[8:9], 24, s8
+; GCN-IR-NEXT:    s_cmp_lg_u32 s11, 1
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB11_4
 ; GCN-IR-NEXT:  ; %bb.2: ; %udiv-preheader
 ; GCN-IR-NEXT:    s_lshr_b64 s[12:13], 24, s12
 ; GCN-IR-NEXT:    s_add_u32 s14, s2, -1

diff  --git a/llvm/test/CodeGen/AMDGPU/select-undef.ll b/llvm/test/CodeGen/AMDGPU/select-undef.ll
index f497752994852..7f70e230c3837 100644
--- a/llvm/test/CodeGen/AMDGPU/select-undef.ll
+++ b/llvm/test/CodeGen/AMDGPU/select-undef.ll
@@ -55,19 +55,19 @@ define amdgpu_kernel void @undef_v6f32(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v6f32:
 ; GCN:       ; %bb.0: ; %entry
 ; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4
+; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:    ; implicit-def: $vgpr4
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_bitcmp1_b32 s0, 0
 ; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:  .LBB4_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_b128 v[6:9], v0
 ; GCN-NEXT:    ds_read_b64 v[10:11], v0
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_and_b64 s[2:3], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(1)
 ; GCN-NEXT:    v_add_f32_e32 v3, v9, v3
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
@@ -76,7 +76,7 @@ define amdgpu_kernel void @undef_v6f32(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-NEXT:    v_add_f32_e32 v2, v8, v2
 ; GCN-NEXT:    v_add_f32_e32 v1, v7, v1
 ; GCN-NEXT:    v_add_f32_e32 v0, v6, v0
-; GCN-NEXT:    s_cbranch_vccnz .LBB4_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB4_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
 ; GCN-NEXT:    ds_write_b64 v0, v[4:5]
 ; GCN-NEXT:    ds_write_b128 v0, v[0:3]
@@ -99,19 +99,19 @@ define amdgpu_kernel void @undef_v6i32(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v6i32:
 ; GCN:       ; %bb.0: ; %entry
 ; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4
+; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:    ; implicit-def: $vgpr4
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_bitcmp1_b32 s0, 0
 ; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:  .LBB5_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_b128 v[6:9], v0
 ; GCN-NEXT:    ds_read_b64 v[10:11], v0
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_and_b64 s[2:3], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(1)
 ; GCN-NEXT:    v_add_u32_e32 v3, v9, v3
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
@@ -120,7 +120,7 @@ define amdgpu_kernel void @undef_v6i32(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-NEXT:    v_add_u32_e32 v2, v8, v2
 ; GCN-NEXT:    v_add_u32_e32 v1, v7, v1
 ; GCN-NEXT:    v_add_u32_e32 v0, v6, v0
-; GCN-NEXT:    s_cbranch_vccnz .LBB5_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB5_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
 ; GCN-NEXT:    ds_write_b64 v0, v[4:5]
 ; GCN-NEXT:    ds_write_b128 v0, v[0:3]
@@ -144,19 +144,19 @@ define amdgpu_kernel void @undef_v5f32(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v5f32:
 ; GCN:       ; %bb.0: ; %entry
 ; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4
+; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:    ; implicit-def: $vgpr4
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_bitcmp1_b32 s0, 0
 ; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:  .LBB6_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_b128 v[5:8], v0
 ; GCN-NEXT:    ds_read_b32 v9, v0
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_and_b64 s[2:3], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(1)
 ; GCN-NEXT:    v_add_f32_e32 v3, v8, v3
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
@@ -164,7 +164,7 @@ define amdgpu_kernel void @undef_v5f32(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-NEXT:    v_add_f32_e32 v2, v7, v2
 ; GCN-NEXT:    v_add_f32_e32 v1, v6, v1
 ; GCN-NEXT:    v_add_f32_e32 v0, v5, v0
-; GCN-NEXT:    s_cbranch_vccnz .LBB6_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB6_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
 ; GCN-NEXT:    ds_write_b32 v0, v4
 ; GCN-NEXT:    ds_write_b128 v0, v[0:3]
@@ -187,19 +187,19 @@ define amdgpu_kernel void @undef_v5i32(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v5i32:
 ; GCN:       ; %bb.0: ; %entry
 ; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4
+; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:    ; implicit-def: $vgpr4
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_bitcmp1_b32 s0, 0
 ; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:  .LBB7_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_b128 v[5:8], v0
 ; GCN-NEXT:    ds_read_b32 v9, v0
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_and_b64 s[2:3], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(1)
 ; GCN-NEXT:    v_add_u32_e32 v3, v8, v3
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
@@ -207,7 +207,7 @@ define amdgpu_kernel void @undef_v5i32(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-NEXT:    v_add_u32_e32 v2, v7, v2
 ; GCN-NEXT:    v_add_u32_e32 v1, v6, v1
 ; GCN-NEXT:    v_add_u32_e32 v0, v5, v0
-; GCN-NEXT:    s_cbranch_vccnz .LBB7_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB7_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
 ; GCN-NEXT:    ds_write_b32 v0, v4
 ; GCN-NEXT:    ds_write_b128 v0, v[0:3]
@@ -230,29 +230,29 @@ ret:
 define amdgpu_kernel void @undef_v3f64(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v3f64:
 ; GCN:       ; %bb.0: ; %entry
-; GCN-NEXT:    s_load_dwordx2 s[2:3], s[8:9], 0x0
+; GCN-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0
+; GCN-NEXT:    ; implicit-def: $vgpr0_vgpr1
 ; GCN-NEXT:    ; implicit-def: $vgpr4_vgpr5
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-NEXT:    s_bitcmp1_b32 s3, 0
-; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_mov_b32_e32 v6, s2
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; GCN-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GCN-NEXT:    s_bitcmp1_b32 s1, 0
+; GCN-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GCN-NEXT:    s_xor_b64 s[2:3], s[2:3], -1
+; GCN-NEXT:    v_mov_b32_e32 v6, s0
 ; GCN-NEXT:  .LBB8_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_b128 v[7:10], v6
 ; GCN-NEXT:    ds_read_b64 v[11:12], v6 offset:16
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_and_b64 s[4:5], s[2:3], exec
+; GCN-NEXT:    s_cselect_b32 s1, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s1, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(1)
 ; GCN-NEXT:    v_add_f64 v[2:3], v[9:10], v[2:3]
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    v_add_f64 v[4:5], v[11:12], v[4:5]
 ; GCN-NEXT:    v_add_f64 v[0:1], v[7:8], v[0:1]
-; GCN-NEXT:    s_cbranch_vccnz .LBB8_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB8_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
-; GCN-NEXT:    v_mov_b32_e32 v6, s2
+; GCN-NEXT:    v_mov_b32_e32 v6, s0
 ; GCN-NEXT:    ds_write_b64 v6, v[4:5] offset:16
 ; GCN-NEXT:    ds_write_b128 v6, v[0:3]
 ; GCN-NEXT:    s_endpgm
@@ -273,32 +273,31 @@ ret:
 define amdgpu_kernel void @undef_v3i64(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v3i64:
 ; GCN:       ; %bb.0: ; %entry
-; GCN-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x0
+; GCN-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0
+; GCN-NEXT:    ; implicit-def: $vgpr0_vgpr1
 ; GCN-NEXT:    ; implicit-def: $vgpr4_vgpr5
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-NEXT:    s_bitcmp1_b32 s5, 0
-; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_mov_b32_e32 v6, s4
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; GCN-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; GCN-NEXT:    s_bitcmp1_b32 s1, 0
+; GCN-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GCN-NEXT:    s_xor_b64 s[2:3], s[2:3], -1
+; GCN-NEXT:    v_mov_b32_e32 v6, s0
 ; GCN-NEXT:  .LBB9_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_b128 v[7:10], v6
 ; GCN-NEXT:    ds_read_b64 v[11:12], v6 offset:16
-; GCN-NEXT:    s_waitcnt lgkmcnt(1)
-; GCN-NEXT:    v_add_co_u32_e64 v0, s[2:3], v7, v0
+; GCN-NEXT:    s_and_b64 s[4:5], s[2:3], exec
+; GCN-NEXT:    s_cselect_b32 s1, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s1, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    v_add_co_u32_e32 v4, vcc, v11, v4
 ; GCN-NEXT:    v_addc_co_u32_e32 v5, vcc, v12, v5, vcc
 ; GCN-NEXT:    v_add_co_u32_e32 v2, vcc, v9, v2
 ; GCN-NEXT:    v_addc_co_u32_e32 v3, vcc, v10, v3, vcc
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
-; GCN-NEXT:    v_addc_co_u32_e64 v1, s[2:3], v8, v1, s[2:3]
-; GCN-NEXT:    s_cbranch_vccnz .LBB9_1
+; GCN-NEXT:    v_add_co_u32_e32 v0, vcc, v7, v0
+; GCN-NEXT:    v_addc_co_u32_e32 v1, vcc, v8, v1, vcc
+; GCN-NEXT:    s_cbranch_scc1 .LBB9_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
-; GCN-NEXT:    v_mov_b32_e32 v6, s4
+; GCN-NEXT:    v_mov_b32_e32 v6, s0
 ; GCN-NEXT:    ds_write_b64 v6, v[4:5] offset:16
 ; GCN-NEXT:    ds_write_b128 v6, v[0:3]
 ; GCN-NEXT:    s_endpgm
@@ -320,25 +319,25 @@ ret:
 define amdgpu_kernel void @undef_v4f16(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v4f16:
 ; GCN:       ; %bb.0: ; %entry
-; GCN-NEXT:    s_load_dwordx2 s[2:3], s[8:9], 0x0
-; GCN-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-NEXT:    s_bitcmp1_b32 s3, 0
-; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_mov_b32_e32 v2, s2
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
+; GCN-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0
 ; GCN-NEXT:    ; implicit-def: $vgpr0
+; GCN-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN-NEXT:    s_bitcmp1_b32 s1, 0
+; GCN-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GCN-NEXT:    s_xor_b64 s[2:3], s[2:3], -1
+; GCN-NEXT:    v_mov_b32_e32 v2, s0
 ; GCN-NEXT:  .LBB10_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_b64 v[3:4], v2
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_and_b64 s[4:5], s[2:3], exec
+; GCN-NEXT:    s_cselect_b32 s1, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s1, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    v_pk_add_f16 v1, v4, v1
 ; GCN-NEXT:    v_pk_add_f16 v0, v3, v0
-; GCN-NEXT:    s_cbranch_vccnz .LBB10_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB10_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
-; GCN-NEXT:    v_mov_b32_e32 v2, s2
+; GCN-NEXT:    v_mov_b32_e32 v2, s0
 ; GCN-NEXT:    ds_write_b64 v2, v[0:1]
 ; GCN-NEXT:    s_endpgm
 entry:
@@ -358,25 +357,25 @@ ret:
 define amdgpu_kernel void @undef_v4i16(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v4i16:
 ; GCN:       ; %bb.0: ; %entry
-; GCN-NEXT:    s_load_dwordx2 s[2:3], s[8:9], 0x0
-; GCN-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-NEXT:    s_bitcmp1_b32 s3, 0
-; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_mov_b32_e32 v2, s2
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
+; GCN-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0
 ; GCN-NEXT:    ; implicit-def: $vgpr0
+; GCN-NEXT:    s_waitcnt lgkmcnt(0)
+; GCN-NEXT:    s_bitcmp1_b32 s1, 0
+; GCN-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GCN-NEXT:    s_xor_b64 s[2:3], s[2:3], -1
+; GCN-NEXT:    v_mov_b32_e32 v2, s0
 ; GCN-NEXT:  .LBB11_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_b64 v[3:4], v2
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_and_b64 s[4:5], s[2:3], exec
+; GCN-NEXT:    s_cselect_b32 s1, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s1, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    v_pk_add_u16 v1, v4, v1
 ; GCN-NEXT:    v_pk_add_u16 v0, v3, v0
-; GCN-NEXT:    s_cbranch_vccnz .LBB11_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB11_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
-; GCN-NEXT:    v_mov_b32_e32 v2, s2
+; GCN-NEXT:    v_mov_b32_e32 v2, s0
 ; GCN-NEXT:    ds_write_b64 v2, v[0:1]
 ; GCN-NEXT:    s_endpgm
 entry:
@@ -397,25 +396,25 @@ ret:
 define amdgpu_kernel void @undef_v2f16(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v2f16:
 ; GCN:       ; %bb.0: ; %entry
-; GCN-NEXT:    s_load_dwordx2 s[2:3], s[8:9], 0x0
+; GCN-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0
+; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-NEXT:    s_bitcmp1_b32 s3, 0
-; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[0:1]
-; GCN-NEXT:    v_mov_b32_e32 v0, s2
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v1
-; GCN-NEXT:    ; implicit-def: $vgpr1
+; GCN-NEXT:    s_bitcmp1_b32 s1, 0
+; GCN-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GCN-NEXT:    s_xor_b64 s[2:3], s[2:3], -1
+; GCN-NEXT:    v_mov_b32_e32 v1, s0
 ; GCN-NEXT:  .LBB12_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GCN-NEXT:    ds_read_b32 v2, v0
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    ds_read_b32 v2, v1
+; GCN-NEXT:    s_and_b64 s[4:5], s[2:3], exec
+; GCN-NEXT:    s_cselect_b32 s1, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s1, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-NEXT:    v_pk_add_f16 v1, v2, v1
-; GCN-NEXT:    s_cbranch_vccnz .LBB12_1
+; GCN-NEXT:    v_pk_add_f16 v0, v2, v0
+; GCN-NEXT:    s_cbranch_scc1 .LBB12_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
-; GCN-NEXT:    v_mov_b32_e32 v0, s2
-; GCN-NEXT:    ds_write_b32 v0, v1
+; GCN-NEXT:    v_mov_b32_e32 v1, s0
+; GCN-NEXT:    ds_write_b32 v1, v0
 ; GCN-NEXT:    s_endpgm
 entry:
   br label %loop
@@ -434,25 +433,25 @@ ret:
 define amdgpu_kernel void @undef_v2i16(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v2i16:
 ; GCN:       ; %bb.0: ; %entry
-; GCN-NEXT:    s_load_dwordx2 s[2:3], s[8:9], 0x0
+; GCN-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0
+; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-NEXT:    s_bitcmp1_b32 s3, 0
-; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[0:1]
-; GCN-NEXT:    v_mov_b32_e32 v0, s2
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v1
-; GCN-NEXT:    ; implicit-def: $vgpr1
+; GCN-NEXT:    s_bitcmp1_b32 s1, 0
+; GCN-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; GCN-NEXT:    s_xor_b64 s[2:3], s[2:3], -1
+; GCN-NEXT:    v_mov_b32_e32 v1, s0
 ; GCN-NEXT:  .LBB13_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
-; GCN-NEXT:    ds_read_b32 v2, v0
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    ds_read_b32 v2, v1
+; GCN-NEXT:    s_and_b64 s[4:5], s[2:3], exec
+; GCN-NEXT:    s_cselect_b32 s1, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s1, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
-; GCN-NEXT:    v_pk_add_u16 v1, v2, v1
-; GCN-NEXT:    s_cbranch_vccnz .LBB13_1
+; GCN-NEXT:    v_pk_add_u16 v0, v2, v0
+; GCN-NEXT:    s_cbranch_scc1 .LBB13_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
-; GCN-NEXT:    v_mov_b32_e32 v0, s2
-; GCN-NEXT:    ds_write_b32 v0, v1
+; GCN-NEXT:    v_mov_b32_e32 v1, s0
+; GCN-NEXT:    ds_write_b32 v1, v0
 ; GCN-NEXT:    s_endpgm
 entry:
   br label %loop
@@ -496,20 +495,20 @@ define amdgpu_kernel void @undef_bf16(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_bf16:
 ; GCN:       ; %bb.0: ; %entry
 ; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4
+; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_bitcmp1_b32 s0, 0
 ; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:  .LBB15_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_u16 v1, v0
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_and_b64 s[2:3], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    v_add_u32_e32 v0, v1, v0
-; GCN-NEXT:    s_cbranch_vccnz .LBB15_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB15_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
 ; GCN-NEXT:    ds_write_b16 v0, v0
 ; GCN-NEXT:    s_endpgm
@@ -534,20 +533,20 @@ define amdgpu_kernel void @undef_v2bf16(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v2bf16:
 ; GCN:       ; %bb.0: ; %entry
 ; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4
+; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_bitcmp1_b32 s0, 0
 ; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:  .LBB16_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_b32 v1, v0
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_and_b64 s[2:3], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    v_pk_add_u16 v0, v1, v0
-; GCN-NEXT:    s_cbranch_vccnz .LBB16_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB16_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
 ; GCN-NEXT:    ds_write_b32 v0, v0
 ; GCN-NEXT:    s_endpgm
@@ -572,24 +571,24 @@ define amdgpu_kernel void @undef_v3bf16(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v3bf16:
 ; GCN:       ; %bb.0: ; %entry
 ; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4
+; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:    ; implicit-def: $vgpr1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_bitcmp1_b32 s0, 0
 ; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:  .LBB17_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_b32 v2, v0
 ; GCN-NEXT:    ds_read_u16 v3, v0
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_and_b64 s[2:3], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(1)
 ; GCN-NEXT:    v_pk_add_u16 v0, v2, v0
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    v_pk_add_u16 v1, v3, v1
-; GCN-NEXT:    s_cbranch_vccnz .LBB17_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB17_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
 ; GCN-NEXT:    ds_write_b16 v0, v1
 ; GCN-NEXT:    ds_write_b32 v0, v0
@@ -615,21 +614,21 @@ define amdgpu_kernel void @undef_v4bf16(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v4bf16:
 ; GCN:       ; %bb.0: ; %entry
 ; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4
+; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_bitcmp1_b32 s0, 0
 ; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:  .LBB18_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_b64 v[2:3], v0
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_and_b64 s[2:3], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    v_pk_add_u16 v1, v3, v1
 ; GCN-NEXT:    v_pk_add_u16 v0, v2, v0
-; GCN-NEXT:    s_cbranch_vccnz .LBB18_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB18_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
 ; GCN-NEXT:    ds_write_b64 v0, v[0:1]
 ; GCN-NEXT:    s_endpgm
@@ -654,25 +653,25 @@ define amdgpu_kernel void @undef_v6bf16(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v6bf16:
 ; GCN:       ; %bb.0: ; %entry
 ; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4
+; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:    ; implicit-def: $vgpr2
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_bitcmp1_b32 s0, 0
 ; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:  .LBB19_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_b64 v[3:4], v0
 ; GCN-NEXT:    ds_read_b32 v5, v0
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_and_b64 s[2:3], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(1)
 ; GCN-NEXT:    v_pk_add_u16 v1, v4, v1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    v_pk_add_u16 v2, v5, v2
 ; GCN-NEXT:    v_pk_add_u16 v0, v3, v0
-; GCN-NEXT:    s_cbranch_vccnz .LBB19_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB19_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
 ; GCN-NEXT:    ds_write_b32 v0, v2
 ; GCN-NEXT:    ds_write_b64 v0, v[0:1]
@@ -698,23 +697,23 @@ define amdgpu_kernel void @undef_v8bf16(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v8bf16:
 ; GCN:       ; %bb.0: ; %entry
 ; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4
+; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_bitcmp1_b32 s0, 0
 ; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:  .LBB20_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_b128 v[4:7], v0
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_and_b64 s[2:3], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    v_pk_add_u16 v3, v7, v3
 ; GCN-NEXT:    v_pk_add_u16 v2, v6, v2
 ; GCN-NEXT:    v_pk_add_u16 v1, v5, v1
 ; GCN-NEXT:    v_pk_add_u16 v0, v4, v0
-; GCN-NEXT:    s_cbranch_vccnz .LBB20_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB20_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
 ; GCN-NEXT:    ds_write_b128 v0, v[0:3]
 ; GCN-NEXT:    s_endpgm
@@ -739,18 +738,18 @@ define amdgpu_kernel void @undef_v16bf16(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v16bf16:
 ; GCN:       ; %bb.0: ; %entry
 ; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4
+; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:    ; implicit-def: $vgpr4
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_bitcmp1_b32 s0, 0
 ; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:  .LBB21_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_b128 v[8:11], v0
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_and_b64 s[2:3], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    v_pk_add_u16 v7, v11, v7
 ; GCN-NEXT:    v_pk_add_u16 v6, v10, v6
@@ -760,7 +759,7 @@ define amdgpu_kernel void @undef_v16bf16(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-NEXT:    v_pk_add_u16 v2, v10, v2
 ; GCN-NEXT:    v_pk_add_u16 v1, v9, v1
 ; GCN-NEXT:    v_pk_add_u16 v0, v8, v0
-; GCN-NEXT:    s_cbranch_vccnz .LBB21_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB21_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
 ; GCN-NEXT:    ds_write_b128 v0, v[4:7]
 ; GCN-NEXT:    ds_write_b128 v0, v[0:3]
@@ -786,6 +785,7 @@ define amdgpu_kernel void @undef_v32bf16(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-LABEL: undef_v32bf16:
 ; GCN:       ; %bb.0: ; %entry
 ; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4
+; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:    ; implicit-def: $vgpr4
 ; GCN-NEXT:    ; implicit-def: $vgpr8
 ; GCN-NEXT:    ; implicit-def: $vgpr12
@@ -793,13 +793,12 @@ define amdgpu_kernel void @undef_v32bf16(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-NEXT:    s_bitcmp1_b32 s0, 0
 ; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0
-; GCN-NEXT:    ; implicit-def: $vgpr0
 ; GCN-NEXT:  .LBB22_1: ; %loop
 ; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GCN-NEXT:    ds_read_b128 v[16:19], v0
-; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; GCN-NEXT:    s_and_b64 s[2:3], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s2, 1
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    v_pk_add_u16 v15, v19, v15
 ; GCN-NEXT:    v_pk_add_u16 v14, v18, v14
@@ -817,7 +816,7 @@ define amdgpu_kernel void @undef_v32bf16(ptr addrspace(3) %ptr, i1 %cond) {
 ; GCN-NEXT:    v_pk_add_u16 v2, v18, v2
 ; GCN-NEXT:    v_pk_add_u16 v1, v17, v1
 ; GCN-NEXT:    v_pk_add_u16 v0, v16, v0
-; GCN-NEXT:    s_cbranch_vccnz .LBB22_1
+; GCN-NEXT:    s_cbranch_scc1 .LBB22_1
 ; GCN-NEXT:  ; %bb.2: ; %ret
 ; GCN-NEXT:    ds_write_b128 v0, v[12:15]
 ; GCN-NEXT:    ds_write_b128 v0, v[8:11]

diff  --git a/llvm/test/CodeGen/AMDGPU/selectcc-opt.ll b/llvm/test/CodeGen/AMDGPU/selectcc-opt.ll
index c0fb521dbb512..f6288e3cceb26 100644
--- a/llvm/test/CodeGen/AMDGPU/selectcc-opt.ll
+++ b/llvm/test/CodeGen/AMDGPU/selectcc-opt.ll
@@ -70,7 +70,7 @@ entry:
 
 ; FUNC-LABEL: {{^}}selectcc_bool:
 ; SI: s_cmp_lg_u32
-; SI: v_cndmask_b32_e64
+; SI: s_cselect_b32 {{s[0-9]+}}, -1, 0
 ; SI-NOT: cmp
 ; SI-NOT: cndmask
 define amdgpu_kernel void @selectcc_bool(ptr addrspace(1) %out, i32 %a, i32 %b) nounwind {

diff  --git a/llvm/test/CodeGen/AMDGPU/setcc-opt.ll b/llvm/test/CodeGen/AMDGPU/setcc-opt.ll
index 1ff095886f42b..531d51ad09cdf 100644
--- a/llvm/test/CodeGen/AMDGPU/setcc-opt.ll
+++ b/llvm/test/CodeGen/AMDGPU/setcc-opt.ll
@@ -5,8 +5,8 @@
 ; FUNC-LABEL: {{^}}sext_bool_icmp_eq_0:
 ; GCN-NOT: v_cmp
 ; GCN: s_cmp_lg_u32
-; GCN: s_cselect_b64 [[CC:[^,]+]], -1, 0
-; GCN: v_cndmask_b32_e64 [[RESULT:v[0-9]+]], 0, 1, [[CC]]
+; GCN: s_cselect_b32 [[CC:s[0-9]+]], 1, 0
+; GCN: v_mov_b32_e32 [[RESULT:v[0-9]+]], [[CC]]
 ; GCN-NEXT:buffer_store_byte [[RESULT]]
 ; GCN-NEXT: s_endpgm
 
@@ -23,8 +23,8 @@ define amdgpu_kernel void @sext_bool_icmp_eq_0(ptr addrspace(1) %out, i32 %a, i3
 ; FUNC-LABEL: {{^}}sext_bool_icmp_ne_0:
 ; GCN-NOT: v_cmp
 ; GCN: s_cmp_lg_u32
-; GCN: s_cselect_b64 [[CC:[^,]+]], -1, 0
-; GCN: v_cndmask_b32_e64 [[RESULT:v[0-9]+]], 0, 1, [[CC]]
+; GCN: s_cselect_b32 [[CC:s[0-9]+]], 1, 0
+; GCN: v_mov_b32_e32 [[RESULT:v[0-9]+]], [[CC]]
 ; GCN-NEXT: buffer_store_byte [[RESULT]]
 ; GCN-NEXT: s_endpgm
 
@@ -41,8 +41,8 @@ define amdgpu_kernel void @sext_bool_icmp_ne_0(ptr addrspace(1) %out, i32 %a, i3
 ; FUNC-LABEL: {{^}}sext_bool_icmp_eq_neg1:
 ; GCN-NOT: v_cmp
 ; GCN: s_cmp_eq_u32
-; GCN: s_cselect_b64 [[CC:[^,]+]], -1, 0
-; GCN: v_cndmask_b32_e64 [[RESULT:v[0-9]+]], 0, 1, [[CC]]
+; GCN: s_cselect_b32 [[CC:s[0-9]+]], 1, 0
+; GCN: v_mov_b32_e32 [[RESULT:v[0-9]+]], [[CC]]
 ; GCN-NEXT: buffer_store_byte [[RESULT]]
 ; GCN-NEXT: s_endpgm
 define amdgpu_kernel void @sext_bool_icmp_eq_neg1(ptr addrspace(1) %out, i32 %a, i32 %b) nounwind {
@@ -56,8 +56,8 @@ define amdgpu_kernel void @sext_bool_icmp_eq_neg1(ptr addrspace(1) %out, i32 %a,
 ; FUNC-LABEL: {{^}}sext_bool_icmp_ne_neg1:
 ; GCN-NOT: v_cmp
 ; GCN: s_cmp_eq_u32
-; GCN: s_cselect_b64 [[CC:[^,]+]], -1, 0
-; GCN: v_cndmask_b32_e64 [[RESULT:v[0-9]+]], 0, 1, [[CC]]
+; GCN: s_cselect_b32 [[CC:s[0-9]+]], 1, 0
+; GCN: v_mov_b32_e32 [[RESULT:v[0-9]+]], [[CC]]
 ; GCN-NEXT: buffer_store_byte [[RESULT]]
 ; GCN-NEXT: s_endpgm
 define amdgpu_kernel void @sext_bool_icmp_ne_neg1(ptr addrspace(1) %out, i32 %a, i32 %b) nounwind {
@@ -71,8 +71,8 @@ define amdgpu_kernel void @sext_bool_icmp_ne_neg1(ptr addrspace(1) %out, i32 %a,
 ; FUNC-LABEL: {{^}}zext_bool_icmp_eq_0:
 ; GCN-NOT: v_cmp
 ; GCN: s_cmp_lg_u32
-; GCN: s_cselect_b64 [[CC:[^,]+]], -1, 0
-; GCN: v_cndmask_b32_e64 [[RESULT:v[0-9]+]], 0, 1, [[CC]]
+; GCN: s_cselect_b32 [[CC:s[0-9]+]], 1, 0
+; GCN: v_mov_b32_e32 [[RESULT:v[0-9]+]], [[CC]]
 ; GCN-NEXT: buffer_store_byte [[RESULT]]
 ; GCN-NEXT: s_endpgm
 define amdgpu_kernel void @zext_bool_icmp_eq_0(ptr addrspace(1) %out, i32 %a, i32 %b) nounwind {
@@ -86,8 +86,8 @@ define amdgpu_kernel void @zext_bool_icmp_eq_0(ptr addrspace(1) %out, i32 %a, i3
 ; FUNC-LABEL: {{^}}zext_bool_icmp_ne_0:
 ; GCN-NOT: v_cmp
 ; GCN: s_cmp_lg_u32
-; GCN: s_cselect_b64 [[CC:[^,]+]], -1, 0
-; GCN: v_cndmask_b32_e64 [[RESULT:v[0-9]+]], 0, 1, [[CC]]
+; GCN: s_cselect_b32 [[CC:s[0-9]+]], 1, 0
+; GCN: v_mov_b32_e32 [[RESULT:v[0-9]+]], [[CC]]
 ; GCN-NEXT: buffer_store_byte [[RESULT]]
 ; GCN-NEXT: s_endpgm
 define amdgpu_kernel void @zext_bool_icmp_ne_0(ptr addrspace(1) %out, i32 %a, i32 %b) nounwind {
@@ -101,8 +101,8 @@ define amdgpu_kernel void @zext_bool_icmp_ne_0(ptr addrspace(1) %out, i32 %a, i3
 ; FUNC-LABEL: {{^}}zext_bool_icmp_eq_1:
 ; GCN-NOT: v_cmp
 ; GCN: s_cmp_eq_u32
-; GCN: s_cselect_b64 [[CC:[^,]+]], -1, 0
-; GCN: v_cndmask_b32_e64 [[RESULT:v[0-9]+]], 0, 1, [[CC]]
+; GCN: s_cselect_b32 [[CC:s[0-9]+]], 1, 0
+; GCN: v_mov_b32_e32 [[RESULT:v[0-9]+]], [[CC]]
 ; GCN-NEXT: buffer_store_byte [[RESULT]]
 ; GCN-NEXT: s_endpgm
 define amdgpu_kernel void @zext_bool_icmp_eq_1(ptr addrspace(1) %out, i32 %a, i32 %b) nounwind {
@@ -116,8 +116,8 @@ define amdgpu_kernel void @zext_bool_icmp_eq_1(ptr addrspace(1) %out, i32 %a, i3
 ; FUNC-LABEL: {{^}}zext_bool_icmp_ne_1:
 ; GCN-NOT: v_cmp
 ; GCN: s_cmp_eq_u32
-; GCN: s_cselect_b64 [[CC:[^,]+]], -1, 0
-; GCN: v_cndmask_b32_e64 [[RESULT:v[0-9]+]], 0, 1, [[CC]]
+; GCN: s_cselect_b32 [[CC:s[0-9]+]], 1, 0
+; GCN: v_mov_b32_e32 [[RESULT:v[0-9]+]], [[CC]]
 ; GCN-NEXT: buffer_store_byte [[RESULT]]
 define amdgpu_kernel void @zext_bool_icmp_ne_1(ptr addrspace(1) %out, i32 %a, i32 %b) nounwind {
   %icmp0 = icmp ne i32 %a, %b
@@ -157,9 +157,9 @@ define amdgpu_kernel void @zext_bool_icmp_ne_neg1(ptr addrspace(1) %out, i32 %a,
 ; GCN: s_load_dword [[VALUE:s[0-9]+]], s{{\[[0-9]+:[0-9]+\]}}
 ; GCN-DAG: s_and_b32 [[B:s[0-9]+]], [[VALUE]], 0xff
 ; GCN: s_cmpk_lg_i32 [[B]], 0xff
-; GCN: s_cselect_b64 [[CC:[^,]+]], -1, 0
+; GCN: s_cselect_b32 [[CC:s[0-9]+]], 1, 0
 
-; GCN: v_cndmask_b32_e64 [[RESULT:v[0-9]+]], 0, 1, [[CC]]
+; GCN: v_mov_b32_e32 [[RESULT:v[0-9]+]], [[CC]]
 ; GCN: buffer_store_byte [[RESULT]]
 ; GCN: s_endpgm
 define amdgpu_kernel void @cmp_zext_k_i8max(ptr addrspace(1) %out, i8 %b) nounwind {
@@ -203,8 +203,8 @@ define void @v_cmp_sext_k_neg1_i8_sext_arg(i8 signext %b) nounwind {
 ; VI: s_load_dword [[VAL:s[0-9]+]], s{{\[[0-9]+:[0-9]+\]}}, 0x2c
 ; GCN-DAG: s_and_b32 [[B:s[0-9]+]], [[VAL]], 0xff
 ; GCN: s_cmpk_lg_i32 [[B]], 0xff{{$}}
-; GCN: s_cselect_b64 [[CC:[^,]+]], -1, 0
-; GCN: v_cndmask_b32_e64 [[RESULT:v[0-9]+]], 0, 1, [[CC]]
+; GCN: s_cselect_b32 [[CC:s[0-9]+]], 1, 0
+; GCN: v_mov_b32_e32 [[RESULT:v[0-9]+]], [[CC]]
 ; GCN: buffer_store_byte [[RESULT]]
 ; GCN: s_endpgm
 define amdgpu_kernel void @cmp_sext_k_neg1_i8_arg(ptr addrspace(1) %out, i8 %b) nounwind {

diff  --git a/llvm/test/CodeGen/AMDGPU/setcc.ll b/llvm/test/CodeGen/AMDGPU/setcc.ll
index 8e115eb7d2881..70cd81aafd261 100644
--- a/llvm/test/CodeGen/AMDGPU/setcc.ll
+++ b/llvm/test/CodeGen/AMDGPU/setcc.ll
@@ -102,7 +102,7 @@ entry:
 ; R600-DAG: SETNE_INT
 
 ; GCN: v_cmp_lg_f32_e32 vcc
-; GCN: v_cndmask_b32_e64 {{v[0-9]+}}, 0, -1, vcc
+; GCN: s_cselect_b32 {{s[0-9]+}}, -1, 0
 define amdgpu_kernel void @f32_one(ptr addrspace(1) %out, float %a, float %b) #0 {
 entry:
   %0 = fcmp one float %a, %b
@@ -132,7 +132,7 @@ entry:
 ; R600-DAG: SETE_INT
 
 ; GCN: v_cmp_nlg_f32_e32 vcc
-; GCN: v_cndmask_b32_e64 {{v[0-9]+}}, 0, -1, vcc
+; GCN: s_cselect_b32 {{s[0-9]+}}, -1, 0
 define amdgpu_kernel void @f32_ueq(ptr addrspace(1) %out, float %a, float %b) #0 {
 entry:
   %0 = fcmp ueq float %a, %b
@@ -145,7 +145,7 @@ entry:
 ; R600: SETGE
 ; R600: SETE_DX10
 ; GCN: v_cmp_nle_f32_e32 vcc
-; GCN: v_cndmask_b32_e64 {{v[0-9]+}}, 0, -1, vcc
+; GCN: s_cselect_b32 {{s[0-9]+}}, -1, 0
 define amdgpu_kernel void @f32_ugt(ptr addrspace(1) %out, float %a, float %b) #0 {
 entry:
   %0 = fcmp ugt float %a, %b
@@ -159,7 +159,7 @@ entry:
 ; R600: SETE_DX10
 
 ; GCN: v_cmp_nlt_f32_e32 vcc
-; GCN: v_cndmask_b32_e64 {{v[0-9]+}}, 0, -1, vcc
+; GCN: s_cselect_b32 {{s[0-9]+}}, -1, 0
 define amdgpu_kernel void @f32_uge(ptr addrspace(1) %out, float %a, float %b) #0 {
 entry:
   %0 = fcmp uge float %a, %b
@@ -173,7 +173,7 @@ entry:
 ; R600: SETE_DX10
 
 ; GCN: v_cmp_nge_f32_e32 vcc
-; GCN: v_cndmask_b32_e64 {{v[0-9]+}}, 0, -1, vcc
+; GCN: s_cselect_b32 {{s[0-9]+}}, -1, 0
 define amdgpu_kernel void @f32_ult(ptr addrspace(1) %out, float %a, float %b) #0 {
 entry:
   %0 = fcmp ult float %a, %b
@@ -187,7 +187,7 @@ entry:
 ; R600: SETE_DX10
 
 ; GCN: v_cmp_ngt_f32_e32 vcc
-; GCN: v_cndmask_b32_e64 {{v[0-9]+}}, 0, -1, vcc
+; GCN: s_cselect_b32 {{s[0-9]+}}, -1, 0
 define amdgpu_kernel void @f32_ule(ptr addrspace(1) %out, float %a, float %b) #0 {
 entry:
   %0 = fcmp ule float %a, %b

diff  --git a/llvm/test/CodeGen/AMDGPU/setcc64.ll b/llvm/test/CodeGen/AMDGPU/setcc64.ll
index c0ecd1827bc73..3ec5834948a17 100644
--- a/llvm/test/CodeGen/AMDGPU/setcc64.ll
+++ b/llvm/test/CodeGen/AMDGPU/setcc64.ll
@@ -59,7 +59,7 @@ entry:
 
 ; GCN-LABEL: {{^}}f64_one:
 ; GCN: v_cmp_lg_f64_e32 vcc
-; GCN: v_cndmask_b32_e64 {{v[0-9]+}}, 0, -1, vcc
+; GCN: s_cselect_b32 {{s[0-9]+}}, -1, 0
 define amdgpu_kernel void @f64_one(ptr addrspace(1) %out, double %a, double %b) #0 {
 entry:
   %tmp0 = fcmp one double %a, %b
@@ -80,7 +80,7 @@ entry:
 
 ; GCN-LABEL: {{^}}f64_ueq:
 ; GCN: v_cmp_nlg_f64_e32 vcc
-; GCN: v_cndmask_b32_e64 {{v[0-9]+}}, 0, -1, vcc
+; GCN: s_cselect_b32 {{s[0-9]+}}, -1, 0
 define amdgpu_kernel void @f64_ueq(ptr addrspace(1) %out, double %a, double %b) #0 {
 entry:
   %tmp0 = fcmp ueq double %a, %b
@@ -92,7 +92,7 @@ entry:
 ; GCN-LABEL: {{^}}f64_ugt:
 
 ; GCN: v_cmp_nle_f64_e32 vcc
-; GCN: v_cndmask_b32_e64 {{v[0-9]+}}, 0, -1, vcc
+; GCN: s_cselect_b32 {{s[0-9]+}}, -1, 0
 define amdgpu_kernel void @f64_ugt(ptr addrspace(1) %out, double %a, double %b) #0 {
 entry:
   %tmp0 = fcmp ugt double %a, %b
@@ -103,7 +103,7 @@ entry:
 
 ; GCN-LABEL: {{^}}f64_uge:
 ; GCN: v_cmp_nlt_f64_e32 vcc
-; GCN: v_cndmask_b32_e64 {{v[0-9]+}}, 0, -1, vcc
+; GCN: s_cselect_b32 {{s[0-9]+}}, -1, 0
 define amdgpu_kernel void @f64_uge(ptr addrspace(1) %out, double %a, double %b) #0 {
 entry:
   %tmp0 = fcmp uge double %a, %b
@@ -114,7 +114,7 @@ entry:
 
 ; GCN-LABEL: {{^}}f64_ult:
 ; GCN: v_cmp_nge_f64_e32 vcc
-; GCN: v_cndmask_b32_e64 {{v[0-9]+}}, 0, -1, vcc
+; GCN: s_cselect_b32 {{s[0-9]+}}, -1, 0
 define amdgpu_kernel void @f64_ult(ptr addrspace(1) %out, double %a, double %b) #0 {
 entry:
   %tmp0 = fcmp ult double %a, %b
@@ -125,7 +125,7 @@ entry:
 
 ; GCN-LABEL: {{^}}f64_ule:
 ; GCN: v_cmp_ngt_f64_e32 vcc
-; GCN: v_cndmask_b32_e64 {{v[0-9]+}}, 0, -1, vcc
+; GCN: s_cselect_b32 {{s[0-9]+}}, -1, 0
 define amdgpu_kernel void @f64_ule(ptr addrspace(1) %out, double %a, double %b) #0 {
 entry:
   %tmp0 = fcmp ule double %a, %b
@@ -261,9 +261,8 @@ entry:
 }
 
 ; GCN-LABEL: {{^}}i128_sle:
-; GCN: v_cmp_le_i64
-; CGV: v_cndmask
-; SI: v_cmp_eq_u64
+; GCN-DAG: v_cmp_le_i64
+; SI-DAG: v_cmp_eq_u64
 ; VI: s_cmp_eq_u64
 define amdgpu_kernel void @i128_sle(ptr addrspace(1) %out, i128 %a, i128 %b) #0 {
 entry:

diff  --git a/llvm/test/CodeGen/AMDGPU/sgpr-control-flow.ll b/llvm/test/CodeGen/AMDGPU/sgpr-control-flow.ll
index 40b6f0262f979..6a74bf5ae5b7a 100644
--- a/llvm/test/CodeGen/AMDGPU/sgpr-control-flow.ll
+++ b/llvm/test/CodeGen/AMDGPU/sgpr-control-flow.ll
@@ -15,13 +15,22 @@ define amdgpu_kernel void @sgpr_if_else_salu_br(ptr addrspace(1) %out, i32 %a, i
 ; SI-NEXT:    s_load_dword s6, s[4:5], 0xf
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s0, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB0_4
+; SI-NEXT:    s_cbranch_scc0 .LBB0_2
 ; SI-NEXT:  ; %bb.1: ; %else
 ; SI-NEXT:    s_add_i32 s3, s3, s6
-; SI-NEXT:    s_cbranch_execnz .LBB0_3
-; SI-NEXT:  .LBB0_2: ; %if
+; SI-NEXT:    s_mov_b64 s[6:7], 0
+; SI-NEXT:    s_branch .LBB0_3
+; SI-NEXT:  .LBB0_2:
+; SI-NEXT:    s_mov_b64 s[6:7], -1
+; SI-NEXT:    ; implicit-def: $sgpr3
+; SI-NEXT:  .LBB0_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; SI-NEXT:    s_cselect_b32 s6, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s6, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB0_5
+; SI-NEXT:  ; %bb.4: ; %if
 ; SI-NEXT:    s_sub_i32 s3, s1, s2
-; SI-NEXT:  .LBB0_3: ; %endif
+; SI-NEXT:  .LBB0_5: ; %endif
 ; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x9
 ; SI-NEXT:    s_add_i32 s0, s3, s0
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
@@ -30,9 +39,6 @@ define amdgpu_kernel void @sgpr_if_else_salu_br(ptr addrspace(1) %out, i32 %a, i
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
-; SI-NEXT:  .LBB0_4:
-; SI-NEXT:    ; implicit-def: $sgpr3
-; SI-NEXT:    s_branch .LBB0_2
 
 entry:
   %0 = icmp eq i32 %a, 0
@@ -59,19 +65,28 @@ define amdgpu_kernel void @sgpr_if_else_salu_br_opt(ptr addrspace(1) %out, [8 x
 ; SI-NEXT:    s_load_dword s2, s[4:5], 0x13
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_cmp_lg_u32 s2, 0
-; SI-NEXT:    s_cbranch_scc0 .LBB1_4
+; SI-NEXT:    s_cbranch_scc0 .LBB1_2
 ; SI-NEXT:  ; %bb.1: ; %else
 ; SI-NEXT:    s_load_dword s0, s[4:5], 0x2e
 ; SI-NEXT:    s_load_dword s1, s[4:5], 0x37
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_add_i32 s3, s0, s1
-; SI-NEXT:    s_cbranch_execnz .LBB1_3
-; SI-NEXT:  .LBB1_2: ; %if
+; SI-NEXT:    s_mov_b64 s[0:1], 0
+; SI-NEXT:    s_branch .LBB1_3
+; SI-NEXT:  .LBB1_2:
+; SI-NEXT:    s_mov_b64 s[0:1], -1
+; SI-NEXT:    ; implicit-def: $sgpr3
+; SI-NEXT:  .LBB1_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s0, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB1_5
+; SI-NEXT:  ; %bb.4: ; %if
 ; SI-NEXT:    s_load_dword s0, s[4:5], 0x1c
 ; SI-NEXT:    s_load_dword s1, s[4:5], 0x25
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_add_i32 s3, s0, s1
-; SI-NEXT:  .LBB1_3: ; %endif
+; SI-NEXT:  .LBB1_5: ; %endif
 ; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x9
 ; SI-NEXT:    s_add_i32 s0, s3, s2
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
@@ -80,9 +95,6 @@ define amdgpu_kernel void @sgpr_if_else_salu_br_opt(ptr addrspace(1) %out, [8 x
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
-; SI-NEXT:  .LBB1_4:
-; SI-NEXT:    ; implicit-def: $sgpr3
-; SI-NEXT:    s_branch .LBB1_2
 
 entry:
   %cmp0 = icmp eq i32 %a, 0

diff  --git a/llvm/test/CodeGen/AMDGPU/sgpr-copy.ll b/llvm/test/CodeGen/AMDGPU/sgpr-copy.ll
index 5bc9cdb5de527..e04657c032d1c 100644
--- a/llvm/test/CodeGen/AMDGPU/sgpr-copy.ll
+++ b/llvm/test/CodeGen/AMDGPU/sgpr-copy.ll
@@ -206,14 +206,13 @@ ENDIF:                                            ; preds = %LOOP
 ; an assertion failure.
 
 ; CHECK-LABEL: {{^}}sample_v3:
-; CHECK: v_mov_b32_e32 v[[SAMPLE_LO:[0-9]+]], 5
-; CHECK: v_mov_b32_e32 v[[SAMPLE_HI:[0-9]+]], 7
+; CHECK-DAG: v_mov_b32_e32 v[[SAMPLE_LO:[0-9]+]], 5
+; CHECK-DAG: v_mov_b32_e32 v[[SAMPLE_HI:[0-9]+]], 7
+; CHECK: image_sample v{{\[[0-9]+:[0-9]+\]}}, v[[[SAMPLE_LO]]:[[SAMPLE_HI]]]
 ; CHECK: s_cbranch
 
-; CHECK: BB{{[0-9]+_[0-9]+}}:
 ; CHECK-DAG: v_mov_b32_e32 v[[SAMPLE_LO:[0-9]+]], 11
 ; CHECK-DAG: v_mov_b32_e32 v[[SAMPLE_HI:[0-9]+]], 13
-
 ; CHECK: image_sample v{{\[[0-9]+:[0-9]+\]}}, v[[[SAMPLE_LO]]:[[SAMPLE_HI]]]
 ; CHECK: exp
 ; CHECK: s_endpgm
@@ -307,15 +306,14 @@ ENDIF69:                                          ; preds = %LOOP68
 ; CHECK-LABEL:{{^}}sample_rsrc
 
 ; CHECK: s_cmp_eq_u32
-; CHECK: s_cbranch_scc1 [[END:.LBB[0-9]+_[0-9]+]]
-
-; CHECK: image_sample v{{\[[0-9]+:[0-9]+\]}}, v{{\[[0-9]+:[0-9]+\]}}
-; CHECK: s_endpgm
+; CHECK: s_cbranch_scc1
 
-; [[END]]:
 ; CHECK: v_add_{{[iu]}}32_e32 v[[ADD:[0-9]+]], vcc, 1, v{{[0-9]+}}
 ; CHECK: image_sample v{{\[[0-9]+:[0-9]+\]}}, v{{\[[0-9]+}}:[[ADD]]]
-; CHECK: s_branch
+; CHECK: s_cbranch_scc1
+
+; CHECK: image_sample v{{\[[0-9]+:[0-9]+\]}}, v{{\[[0-9]+:[0-9]+\]}}
+; CHECK: s_endpgm
 define amdgpu_ps void @sample_rsrc(ptr addrspace(4) inreg %arg, ptr addrspace(4) inreg %arg1, ptr addrspace(4) inreg %arg2, ptr addrspace(4) inreg %arg3, float inreg %arg4, i32 inreg %arg5, <2 x i32> %arg6, <2 x i32> %arg7, <2 x i32> %arg8, <3 x i32> %arg9, <2 x i32> %arg10, <2 x i32> %arg11, <2 x i32> %arg12, float %arg13, float %arg14, float %arg15, float %arg16, float %arg17, float %arg18, i32 %arg19, float %arg20, float %arg21) #0 {
 bb:
   %tmp22 = load <4 x i32>, ptr addrspace(4) %arg1, !tbaa !3

diff  --git a/llvm/test/CodeGen/AMDGPU/sgpr-to-vreg1-copy.ll b/llvm/test/CodeGen/AMDGPU/sgpr-to-vreg1-copy.ll
index ef535b99c6549..9e6e008676c03 100644
--- a/llvm/test/CodeGen/AMDGPU/sgpr-to-vreg1-copy.ll
+++ b/llvm/test/CodeGen/AMDGPU/sgpr-to-vreg1-copy.ll
@@ -8,20 +8,19 @@ define amdgpu_kernel void @copy_to_vreg_1(i32 %0) {
 ; GCN-NEXT:    v_mov_b32_e32 v1, 0
 ; GCN-NEXT:    v_and_b32_e32 v0, 0x3ff, v0
 ; GCN-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]
+; GCN-NEXT:    v_mov_b64_e32 v[2:3], 0
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_sub_i32 s5, 1, s4
 ; GCN-NEXT:    s_cmp_lt_u32 s4, 2
 ; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GCN-NEXT:    s_and_b64 s[2:3], s[0:1], exec
-; GCN-NEXT:    s_cselect_b32 s2, s5, 1
+; GCN-NEXT:    s_cselect_b32 s2, 1, 0
+; GCN-NEXT:    s_cselect_b32 s3, s5, 1
 ; GCN-NEXT:    s_cmp_lg_u64 s[0:1], 0
-; GCN-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[0:1]
 ; GCN-NEXT:    s_addc_u32 s0, 1, 0
-; GCN-NEXT:    s_cmp_ge_u32 s2, s4
-; GCN-NEXT:    v_readfirstlane_b32 s1, v2
-; GCN-NEXT:    s_cselect_b32 s4, s0, s1
+; GCN-NEXT:    s_cmp_ge_u32 s3, s4
+; GCN-NEXT:    s_cselect_b32 s4, s0, s2
 ; GCN-NEXT:    s_mov_b64 s[0:1], 0
-; GCN-NEXT:    v_mov_b64_e32 v[2:3], 0
 ; GCN-NEXT:    s_mov_b64 s[2:3], 0
 ; GCN-NEXT:    s_branch .LBB0_3
 ; GCN-NEXT:  .LBB0_1: ; %Flow

diff  --git a/llvm/test/CodeGen/AMDGPU/si-unify-exit-multiple-unreachables.ll b/llvm/test/CodeGen/AMDGPU/si-unify-exit-multiple-unreachables.ll
index 004c27971131d..3aa60be4b1755 100644
--- a/llvm/test/CodeGen/AMDGPU/si-unify-exit-multiple-unreachables.ll
+++ b/llvm/test/CodeGen/AMDGPU/si-unify-exit-multiple-unreachables.ll
@@ -138,14 +138,12 @@ define amdgpu_kernel void @kernel_callbr(i32 %a, ptr addrspace(1) %x, i32 nounde
 ; CHECK-NEXT:    s_load_dword s0, s[8:9], 0x0
 ; CHECK-NEXT:    s_waitcnt lgkmcnt(0)
 ; CHECK-NEXT:    s_cmpk_eq_i32 s1, 0x100
-; CHECK-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[2:3]
+; CHECK-NEXT:    s_cselect_b32 s1, 1, 0
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ;;#ASMEND
 ; CHECK-NEXT:  ; %bb.1: ; %if.then
 ; CHECK-NEXT:    s_cmp_eq_u32 s0, 0
-; CHECK-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[2:3]
+; CHECK-NEXT:    s_cselect_b32 s1, 1, 0
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ;;#ASMEND
 ; CHECK-NEXT:  .LBB1_2: ; %if.end6.sink.split
@@ -169,8 +167,7 @@ define amdgpu_kernel void @kernel_callbr(i32 %a, ptr addrspace(1) %x, i32 nounde
 ; CHECK-NEXT:    ;;#ASMEND
 ; CHECK-NEXT:  ; %bb.5: ; %if.then3
 ; CHECK-NEXT:    s_cmp_eq_u32 s0, 0
-; CHECK-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[2:3]
+; CHECK-NEXT:    s_cselect_b32 s1, 1, 0
 ; CHECK-NEXT:    ;;#ASMSTART
 ; CHECK-NEXT:    ;;#ASMEND
 ; CHECK-NEXT:    s_branch .LBB1_2
@@ -189,12 +186,12 @@ define amdgpu_kernel void @kernel_callbr(i32 %a, ptr addrspace(1) %x, i32 nounde
 ; UNIFY-NEXT:    [[CMP:%.*]] = icmp eq i32 [[N:%.*]], 256
 ; UNIFY-NEXT:    [[CMP32:%.*]] = zext i1 [[CMP]] to i32
 ; UNIFY-NEXT:    callbr void asm "", "r,!i"(i32 [[CMP32]])
-; UNIFY-NEXT:            to label [[IF_THEN:%.*]] [label %if.else]
+; UNIFY-NEXT:            to label [[IF_THEN:%.*]] [label [[IF_ELSE:%.*]]]
 ; UNIFY:       if.then:
 ; UNIFY-NEXT:    [[CMP1:%.*]] = icmp eq i32 [[A:%.*]], 0
 ; UNIFY-NEXT:    [[CMP1_32:%.*]] = zext i1 [[CMP1]] to i32
 ; UNIFY-NEXT:    callbr void asm "", "r,!i"(i32 [[CMP1_32]])
-; UNIFY-NEXT:            to label [[IF_END6_SINK_SPLIT:%.*]] [label %cond.false]
+; UNIFY-NEXT:            to label [[IF_END6_SINK_SPLIT:%.*]] [label [[COND_FALSE:%.*]]]
 ; UNIFY:       cond.false:
 ; UNIFY-NEXT:    call void @llvm.trap()
 ; UNIFY-NEXT:    unreachable
@@ -202,12 +199,12 @@ define amdgpu_kernel void @kernel_callbr(i32 %a, ptr addrspace(1) %x, i32 nounde
 ; UNIFY-NEXT:    [[CMP2:%.*]] = icmp ult i32 [[TID]], 10
 ; UNIFY-NEXT:    [[CMP2_32:%.*]] = zext i1 [[CMP2]] to i32
 ; UNIFY-NEXT:    callbr void asm "", "r,!i"(i32 [[CMP2_32]])
-; UNIFY-NEXT:            to label [[IF_THEN3:%.*]] [label %if.end6]
+; UNIFY-NEXT:            to label [[IF_THEN3:%.*]] [label [[IF_END6:%.*]]]
 ; UNIFY:       if.then3:
 ; UNIFY-NEXT:    [[CMP1_I7:%.*]] = icmp eq i32 [[A]], 0
 ; UNIFY-NEXT:    [[CMP1_I7_32:%.*]] = zext i1 [[CMP1_I7]] to i32
 ; UNIFY-NEXT:    callbr void asm "", "r,!i"(i32 [[CMP1_I7_32]])
-; UNIFY-NEXT:            to label [[IF_END6_SINK_SPLIT]] [label %cond.false.i8]
+; UNIFY-NEXT:            to label [[IF_END6_SINK_SPLIT]] [label [[COND_FALSE_I8:%.*]]]
 ; UNIFY:       cond.false.i8:
 ; UNIFY-NEXT:    call void @llvm.trap()
 ; UNIFY-NEXT:    unreachable
@@ -215,7 +212,7 @@ define amdgpu_kernel void @kernel_callbr(i32 %a, ptr addrspace(1) %x, i32 nounde
 ; UNIFY-NEXT:    [[X1:%.*]] = getelementptr inbounds i32, ptr addrspace(1) [[X:%.*]], i32 [[TID]]
 ; UNIFY-NEXT:    store i32 [[A]], ptr addrspace(1) [[X1]], align 4
 ; UNIFY-NEXT:    callbr void asm "", ""()
-; UNIFY-NEXT:            to label [[IF_END6:%.*]] []
+; UNIFY-NEXT:            to label [[IF_END6]] []
 ; UNIFY:       if.end6:
 ; UNIFY-NEXT:    ret void
 ;

diff  --git a/llvm/test/CodeGen/AMDGPU/si-unify-exit-return-unreachable.ll b/llvm/test/CodeGen/AMDGPU/si-unify-exit-return-unreachable.ll
index d20fef3c5289a..2d719bc777970 100644
--- a/llvm/test/CodeGen/AMDGPU/si-unify-exit-return-unreachable.ll
+++ b/llvm/test/CodeGen/AMDGPU/si-unify-exit-return-unreachable.ll
@@ -1,5 +1,4 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -mtriple=amdgcn-amd-amdhsa %s -o - | FileCheck -check-prefix=GCN %s
 ; RUN: opt -mtriple=amdgcn-amd-amdhsa -lowerswitch -amdgpu-unify-divergent-exit-nodes -verify -structurizecfg -verify -si-annotate-control-flow -verify -S %s -o - | FileCheck -check-prefix=IR %s
 
@@ -114,52 +113,39 @@ define void @my_func(i32 %0) {
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_cmp_lt_i32 s10, 1
 ; GCN-NEXT:    s_mov_b64 s[6:7], 0
-; GCN-NEXT:    s_cbranch_scc1 .LBB0_7
+; GCN-NEXT:    s_cbranch_scc1 .LBB0_2
 ; GCN-NEXT:  ; %bb.1: ; %LeafBlock1
+; GCN-NEXT:    s_mov_b64 s[8:9], 0
 ; GCN-NEXT:    s_cmp_lg_u32 s10, 1
 ; GCN-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN-NEXT:    s_mov_b64 vcc, exec
-; GCN-NEXT:    s_cbranch_execz .LBB0_8
-; GCN-NEXT:  .LBB0_2: ; %Flow11
-; GCN-NEXT:    s_and_saveexec_b64 s[8:9], s[6:7]
-; GCN-NEXT:    s_cbranch_execz .LBB0_4
-; GCN-NEXT:  .LBB0_3: ; %do.body
-; GCN-NEXT:    s_or_b64 s[4:5], s[4:5], exec
-; GCN-NEXT:  .LBB0_4: ; %Flow17
-; GCN-NEXT:    s_or_b64 exec, exec, s[8:9]
-; GCN-NEXT:    s_and_saveexec_b64 s[6:7], s[4:5]
-; GCN-NEXT:    s_cbranch_execz .LBB0_6
-; GCN-NEXT:  ; %bb.5: ; %UnifiedUnreachableBlock
-; GCN-NEXT:    ; divergent unreachable
-; GCN-NEXT:  .LBB0_6: ; %UnifiedReturnBlock
-; GCN-NEXT:    s_or_b64 exec, exec, s[6:7]
-; GCN-NEXT:    s_setpc_b64 s[30:31]
-; GCN-NEXT:  .LBB0_7: ; %Flow
-; GCN-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
-; GCN-NEXT:    s_cbranch_vccnz .LBB0_2
-; GCN-NEXT:  .LBB0_8: ; %LeafBlock
+; GCN-NEXT:  .LBB0_2: ; %Flow
+; GCN-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GCN-NEXT:    s_cselect_b32 s8, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s8, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB0_13
+; GCN-NEXT:  ; %bb.3: ; %LeafBlock
 ; GCN-NEXT:    s_cmp_eq_u32 s10, 0
-; GCN-NEXT:    s_cbranch_scc1 .LBB0_10
-; GCN-NEXT:  ; %bb.9:
+; GCN-NEXT:    s_cbranch_scc1 .LBB0_5
+; GCN-NEXT:  ; %bb.4:
 ; GCN-NEXT:    s_mov_b64 s[6:7], -1
 ; GCN-NEXT:    s_and_saveexec_b64 s[8:9], s[6:7]
-; GCN-NEXT:    s_cbranch_execnz .LBB0_3
-; GCN-NEXT:    s_branch .LBB0_4
-; GCN-NEXT:  .LBB0_10: ; %NodeBlock7
+; GCN-NEXT:    s_cbranch_execnz .LBB0_14
+; GCN-NEXT:    s_branch .LBB0_15
+; GCN-NEXT:  .LBB0_5: ; %NodeBlock7
 ; GCN-NEXT:    v_cmp_lt_i32_e32 vcc, 1, v0
 ; GCN-NEXT:    s_mov_b64 s[8:9], 0
 ; GCN-NEXT:    s_mov_b64 s[6:7], 0
 ; GCN-NEXT:    s_and_saveexec_b64 s[4:5], vcc
 ; GCN-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]
-; GCN-NEXT:    s_cbranch_execz .LBB0_12
-; GCN-NEXT:  ; %bb.11: ; %LeafBlock5
+; GCN-NEXT:    s_cbranch_execz .LBB0_7
+; GCN-NEXT:  ; %bb.6: ; %LeafBlock5
 ; GCN-NEXT:    s_mov_b64 s[6:7], exec
 ; GCN-NEXT:    v_cmp_eq_u32_e32 vcc, 2, v0
 ; GCN-NEXT:    s_and_b64 s[8:9], vcc, exec
-; GCN-NEXT:  .LBB0_12: ; %Flow13
+; GCN-NEXT:  .LBB0_7: ; %Flow13
 ; GCN-NEXT:    s_andn2_saveexec_b64 s[10:11], s[4:5]
-; GCN-NEXT:    s_cbranch_execz .LBB0_14
-; GCN-NEXT:  ; %bb.13: ; %LeafBlock3
+; GCN-NEXT:    s_cbranch_execz .LBB0_9
+; GCN-NEXT:  ; %bb.8: ; %LeafBlock3
 ; GCN-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v0
 ; GCN-NEXT:    v_cmp_ne_u32_e64 s[4:5], 0, v0
 ; GCN-NEXT:    s_andn2_b64 s[6:7], s[6:7], exec
@@ -168,30 +154,45 @@ define void @my_func(i32 %0) {
 ; GCN-NEXT:    s_and_b64 s[12:13], vcc, exec
 ; GCN-NEXT:    s_or_b64 s[6:7], s[6:7], s[4:5]
 ; GCN-NEXT:    s_or_b64 s[8:9], s[8:9], s[12:13]
-; GCN-NEXT:  .LBB0_14: ; %Flow14
+; GCN-NEXT:  .LBB0_9: ; %Flow14
 ; GCN-NEXT:    s_or_b64 exec, exec, s[10:11]
 ; GCN-NEXT:    s_mov_b64 s[4:5], 0
 ; GCN-NEXT:    s_and_saveexec_b64 s[10:11], s[8:9]
 ; GCN-NEXT:    s_cbranch_execz .LBB0_18
-; GCN-NEXT:  ; %bb.15: ; %LeafBlock9
+; GCN-NEXT:  ; %bb.10: ; %LeafBlock9
 ; GCN-NEXT:    v_cmp_lt_i32_e32 vcc, 1, v0
 ; GCN-NEXT:    s_mov_b64 s[8:9], -1
 ; GCN-NEXT:    s_and_saveexec_b64 s[12:13], vcc
-; GCN-NEXT:    s_cbranch_execz .LBB0_17
-; GCN-NEXT:  ; %bb.16: ; %do.body.i.i.i.i
+; GCN-NEXT:    s_cbranch_execz .LBB0_12
+; GCN-NEXT:  ; %bb.11: ; %do.body.i.i.i.i
 ; GCN-NEXT:    s_mov_b64 s[4:5], exec
 ; GCN-NEXT:    s_xor_b64 s[8:9], exec, -1
-; GCN-NEXT:  .LBB0_17: ; %Flow16
+; GCN-NEXT:  .LBB0_12: ; %Flow16
 ; GCN-NEXT:    s_or_b64 exec, exec, s[12:13]
 ; GCN-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; GCN-NEXT:    s_andn2_b64 s[6:7], s[6:7], exec
 ; GCN-NEXT:    s_and_b64 s[8:9], s[8:9], exec
 ; GCN-NEXT:    s_or_b64 s[6:7], s[6:7], s[8:9]
+; GCN-NEXT:    s_or_b64 exec, exec, s[10:11]
+; GCN-NEXT:  .LBB0_13: ; %Flow11
+; GCN-NEXT:    s_and_saveexec_b64 s[8:9], s[6:7]
+; GCN-NEXT:    s_cbranch_execz .LBB0_15
+; GCN-NEXT:  .LBB0_14: ; %do.body
+; GCN-NEXT:    s_or_b64 s[4:5], s[4:5], exec
+; GCN-NEXT:  .LBB0_15: ; %Flow17
+; GCN-NEXT:    s_or_b64 exec, exec, s[8:9]
+; GCN-NEXT:    s_and_saveexec_b64 s[6:7], s[4:5]
+; GCN-NEXT:    s_cbranch_execz .LBB0_17
+; GCN-NEXT:  ; %bb.16: ; %UnifiedUnreachableBlock
+; GCN-NEXT:    ; divergent unreachable
+; GCN-NEXT:  .LBB0_17: ; %UnifiedReturnBlock
+; GCN-NEXT:    s_or_b64 exec, exec, s[6:7]
+; GCN-NEXT:    s_setpc_b64 s[30:31]
 ; GCN-NEXT:  .LBB0_18: ; %Flow15
 ; GCN-NEXT:    s_or_b64 exec, exec, s[10:11]
 ; GCN-NEXT:    s_and_saveexec_b64 s[8:9], s[6:7]
-; GCN-NEXT:    s_cbranch_execnz .LBB0_3
-; GCN-NEXT:    s_branch .LBB0_4
+; GCN-NEXT:    s_cbranch_execnz .LBB0_14
+; GCN-NEXT:    s_branch .LBB0_15
 entry:
   %1 = load i32, ptr addrspace(4) null, align 8
   switch i32 %1, label %do.body [

diff  --git a/llvm/test/CodeGen/AMDGPU/sign_extend.ll b/llvm/test/CodeGen/AMDGPU/sign_extend.ll
index 373618f3da1b8..0a12a89ddaa01 100644
--- a/llvm/test/CodeGen/AMDGPU/sign_extend.ll
+++ b/llvm/test/CodeGen/AMDGPU/sign_extend.ll
@@ -9,10 +9,10 @@ define amdgpu_kernel void @s_sext_i1_to_i32(ptr addrspace(1) %out, i32 %a, i32 %
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_mov_b64 s[4:5], s[2:3]
 ; SI-NEXT:    s_cmp_eq_u32 s4, s5
-; SI-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; SI-NEXT:    s_cselect_b32 s4, -1, 0
 ; SI-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-NEXT:    s_mov_b32 s2, -1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -22,10 +22,10 @@ define amdgpu_kernel void @s_sext_i1_to_i32(ptr addrspace(1) %out, i32 %a, i32 %
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    s_mov_b64 s[4:5], s[2:3]
 ; VI-NEXT:    s_cmp_eq_u32 s4, s5
-; VI-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; VI-NEXT:    s_cselect_b32 s4, -1, 0
 ; VI-NEXT:    s_mov_b32 s3, 0xf000
 ; VI-NEXT:    s_mov_b32 s2, -1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; VI-NEXT:    s_endpgm
   %cmp = icmp eq i32 %a, %b
@@ -80,10 +80,10 @@ define amdgpu_kernel void @s_sext_i1_to_i64(ptr addrspace(1) %out, i32 %a, i32 %
 ; SI-NEXT:    s_mov_b64 s[4:5], s[2:3]
 ; SI-NEXT:    s_cmp_eq_u32 s4, s5
 ; SI-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-NEXT:    s_mov_b32 s2, -1
-; SI-NEXT:    v_mov_b32_e32 v1, v0
+; SI-NEXT:    v_mov_b32_e32 v1, s5
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -94,10 +94,10 @@ define amdgpu_kernel void @s_sext_i1_to_i64(ptr addrspace(1) %out, i32 %a, i32 %
 ; VI-NEXT:    s_mov_b64 s[4:5], s[2:3]
 ; VI-NEXT:    s_cmp_eq_u32 s4, s5
 ; VI-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    s_mov_b32 s3, 0xf000
 ; VI-NEXT:    s_mov_b32 s2, -1
-; VI-NEXT:    v_mov_b32_e32 v1, v0
+; VI-NEXT:    v_mov_b32_e32 v1, s5
 ; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
 ; VI-NEXT:    s_endpgm
   %cmp = icmp eq i32 %a, %b
@@ -217,10 +217,10 @@ define amdgpu_kernel void @s_sext_i1_to_i16(ptr addrspace(1) %out, i32 %a, i32 %
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_mov_b64 s[4:5], s[2:3]
 ; SI-NEXT:    s_cmp_eq_u32 s4, s5
-; SI-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; SI-NEXT:    s_cselect_b32 s4, -1, 0
 ; SI-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-NEXT:    s_mov_b32 s2, -1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -230,10 +230,10 @@ define amdgpu_kernel void @s_sext_i1_to_i16(ptr addrspace(1) %out, i32 %a, i32 %
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    s_mov_b64 s[4:5], s[2:3]
 ; VI-NEXT:    s_cmp_eq_u32 s4, s5
-; VI-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; VI-NEXT:    s_cselect_b32 s4, -1, 0
 ; VI-NEXT:    s_mov_b32 s3, 0xf000
 ; VI-NEXT:    s_mov_b32 s2, -1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]
+; VI-NEXT:    v_mov_b32_e32 v0, s4
 ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0
 ; VI-NEXT:    s_endpgm
   %cmp = icmp eq i32 %a, %b
@@ -259,7 +259,9 @@ define amdgpu_kernel void @s_sext_i1_to_i16_with_and(ptr addrspace(1) %out, i32
 ; SI-NEXT:    s_cmp_eq_u32 s2, s3
 ; SI-NEXT:    s_cselect_b64 s[2:3], -1, 0
 ; SI-NEXT:    s_and_b64 s[0:1], s[0:1], s[2:3]
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[0:1]
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_short v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -275,7 +277,9 @@ define amdgpu_kernel void @s_sext_i1_to_i16_with_and(ptr addrspace(1) %out, i32
 ; VI-NEXT:    s_cmp_eq_u32 s2, s3
 ; VI-NEXT:    s_cselect_b64 s[2:3], -1, 0
 ; VI-NEXT:    s_and_b64 s[0:1], s[0:1], s[2:3]
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[0:1]
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_short v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
   %cmp0 = icmp eq i32 %a, %b

diff  --git a/llvm/test/CodeGen/AMDGPU/simplifydemandedbits-recursion.ll b/llvm/test/CodeGen/AMDGPU/simplifydemandedbits-recursion.ll
index d55f3644dc875..ab00b42958018 100644
--- a/llvm/test/CodeGen/AMDGPU/simplifydemandedbits-recursion.ll
+++ b/llvm/test/CodeGen/AMDGPU/simplifydemandedbits-recursion.ll
@@ -22,26 +22,24 @@ define amdgpu_kernel void @foo(ptr addrspace(1) noalias nocapture readonly %arg,
 ; CHECK-NEXT:    s_mov_b32 m0, -1
 ; CHECK-NEXT:    s_waitcnt lgkmcnt(0)
 ; CHECK-NEXT:    s_bitcmp1_b32 s0, 8
-; CHECK-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; CHECK-NEXT:    s_cselect_b64 s[8:9], -1, 0
 ; CHECK-NEXT:    s_bitcmp1_b32 s0, 16
+; CHECK-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; CHECK-NEXT:    s_xor_b64 s[2:3], s[2:3], -1
+; CHECK-NEXT:    s_bitcmp1_b32 s0, 24
 ; CHECK-NEXT:    s_cselect_b64 s[4:5], -1, 0
 ; CHECK-NEXT:    s_xor_b64 s[4:5], s[4:5], -1
-; CHECK-NEXT:    s_bitcmp1_b32 s0, 24
-; CHECK-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; CHECK-NEXT:    s_xor_b64 s[6:7], s[6:7], -1
 ; CHECK-NEXT:    s_bitcmp1_b32 s1, 0
-; CHECK-NEXT:    s_cselect_b64 s[8:9], -1, 0
+; CHECK-NEXT:    s_cselect_b64 s[6:7], -1, 0
 ; CHECK-NEXT:    s_bitcmp1_b32 s1, 8
-; CHECK-NEXT:    s_movk_i32 s0, 0x54
 ; CHECK-NEXT:    s_cselect_b64 s[10:11], -1, 0
+; CHECK-NEXT:    s_movk_i32 s0, 0x54
 ; CHECK-NEXT:    v_mad_u32_u24 v0, v1, s0, v0
-; CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[2:3]
-; CHECK-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v1
 ; CHECK-NEXT:    v_mov_b32_e32 v1, 0
-; CHECK-NEXT:    s_and_b64 s[2:3], exec, s[6:7]
-; CHECK-NEXT:    s_and_b64 s[4:5], exec, s[4:5]
-; CHECK-NEXT:    s_and_b64 s[6:7], exec, s[10:11]
-; CHECK-NEXT:    s_and_b64 s[8:9], exec, s[8:9]
+; CHECK-NEXT:    s_and_b64 s[0:1], exec, s[4:5]
+; CHECK-NEXT:    s_and_b64 s[2:3], exec, s[2:3]
+; CHECK-NEXT:    s_and_b64 s[4:5], exec, s[10:11]
+; CHECK-NEXT:    s_and_b64 s[6:7], exec, s[6:7]
 ; CHECK-NEXT:  .LBB0_1: ; %.loopexit145
 ; CHECK-NEXT:    ; =>This Loop Header: Depth=1
 ; CHECK-NEXT:    ; Child Loop BB0_3 Depth 2
@@ -52,32 +50,34 @@ define amdgpu_kernel void @foo(ptr addrspace(1) noalias nocapture readonly %arg,
 ; CHECK-NEXT:  .LBB0_2: ; %.loopexit
 ; CHECK-NEXT:    ; in Loop: Header=BB0_3 Depth=2
 ; CHECK-NEXT:    v_add_i32_e32 v2, vcc, 0x540, v2
-; CHECK-NEXT:    s_mov_b64 vcc, s[4:5]
+; CHECK-NEXT:    s_mov_b64 vcc, s[2:3]
 ; CHECK-NEXT:    s_cbranch_vccnz .LBB0_5
 ; CHECK-NEXT:  .LBB0_3: ; %bb13
 ; CHECK-NEXT:    ; Parent Loop BB0_1 Depth=1
 ; CHECK-NEXT:    ; => This Loop Header: Depth=2
 ; CHECK-NEXT:    ; Child Loop BB0_4 Depth 3
-; CHECK-NEXT:    s_and_b64 vcc, exec, s[0:1]
+; CHECK-NEXT:    s_and_b64 s[10:11], s[8:9], exec
+; CHECK-NEXT:    s_cselect_b32 s10, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s10, 1
 ; CHECK-NEXT:    v_mov_b32_e32 v3, v2
-; CHECK-NEXT:    s_cbranch_vccnz .LBB0_2
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_2
 ; CHECK-NEXT:  .LBB0_4: ; %bb21
 ; CHECK-NEXT:    ; Parent Loop BB0_1 Depth=1
 ; CHECK-NEXT:    ; Parent Loop BB0_3 Depth=2
 ; CHECK-NEXT:    ; => This Inner Loop Header: Depth=3
 ; CHECK-NEXT:    ds_write_b32 v3, v1
 ; CHECK-NEXT:    v_add_i32_e32 v3, vcc, 32, v3
-; CHECK-NEXT:    s_mov_b64 vcc, s[2:3]
+; CHECK-NEXT:    s_mov_b64 vcc, s[0:1]
 ; CHECK-NEXT:    s_cbranch_vccz .LBB0_4
 ; CHECK-NEXT:    s_branch .LBB0_2
 ; CHECK-NEXT:  .LBB0_5: ; %bb31
 ; CHECK-NEXT:    ; Parent Loop BB0_1 Depth=1
 ; CHECK-NEXT:    ; => This Inner Loop Header: Depth=2
-; CHECK-NEXT:    s_mov_b64 vcc, s[6:7]
+; CHECK-NEXT:    s_mov_b64 vcc, s[4:5]
 ; CHECK-NEXT:    s_cbranch_vccz .LBB0_5
 ; CHECK-NEXT:  ; %bb.6: ; %bb30
 ; CHECK-NEXT:    ; in Loop: Header=BB0_1 Depth=1
-; CHECK-NEXT:    s_mov_b64 vcc, s[8:9]
+; CHECK-NEXT:    s_mov_b64 vcc, s[6:7]
 ; CHECK-NEXT:    s_cbranch_vccz .LBB0_1
 ; CHECK-NEXT:  ; %bb.7: ; %bb11
 ; CHECK-NEXT:    s_endpgm

diff  --git a/llvm/test/CodeGen/AMDGPU/sink-addr-memory-intrinsics.ll b/llvm/test/CodeGen/AMDGPU/sink-addr-memory-intrinsics.ll
index 970c98afd2a05..2c1ce4ca341aa 100644
--- a/llvm/test/CodeGen/AMDGPU/sink-addr-memory-intrinsics.ll
+++ b/llvm/test/CodeGen/AMDGPU/sink-addr-memory-intrinsics.ll
@@ -13,14 +13,20 @@ define amdgpu_kernel void @memoryIntrinstic(ptr addrspace(3) %inptr, i1 %cond, p
 ; CHECK-NEXT:    ds_read_b64_tr_b16 v[2:3], v0 offset:8192
 ; CHECK-NEXT:    s_mov_b32 s1, 0x7060302
 ; CHECK-NEXT:    s_mov_b32 s3, 0x5040100
+; CHECK-NEXT:    s_mov_b64 s[4:5], 0
 ; CHECK-NEXT:    s_waitcnt lgkmcnt(0)
 ; CHECK-NEXT:    v_perm_b32 v0, v3, v2, s1
 ; CHECK-NEXT:    v_perm_b32 v1, v3, v2, s3
-; CHECK-NEXT:    s_cbranch_execz .LBB0_3
-; CHECK-NEXT:    s_branch .LBB0_4
+; CHECK-NEXT:    s_branch .LBB0_3
 ; CHECK-NEXT:  .LBB0_2:
+; CHECK-NEXT:    s_mov_b64 s[4:5], -1
 ; CHECK-NEXT:    ; implicit-def: $vgpr1
-; CHECK-NEXT:  .LBB0_3: ; %then
+; CHECK-NEXT:  .LBB0_3: ; %Flow
+; CHECK-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; CHECK-NEXT:    s_cselect_b32 s1, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s1, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_5
+; CHECK-NEXT:  ; %bb.4: ; %then
 ; CHECK-NEXT:    v_mov_b32_e32 v0, s0
 ; CHECK-NEXT:    ds_read_b64_tr_b16 v[2:3], v0 offset:8192
 ; CHECK-NEXT:    s_mov_b32 s0, 0x5040100
@@ -28,7 +34,7 @@ define amdgpu_kernel void @memoryIntrinstic(ptr addrspace(3) %inptr, i1 %cond, p
 ; CHECK-NEXT:    s_waitcnt lgkmcnt(0)
 ; CHECK-NEXT:    v_perm_b32 v0, v3, v2, s0
 ; CHECK-NEXT:    v_perm_b32 v1, v3, v2, s1
-; CHECK-NEXT:  .LBB0_4: ; %end
+; CHECK-NEXT:  .LBB0_5: ; %end
 ; CHECK-NEXT:    v_mov_b32_e32 v2, s2
 ; CHECK-NEXT:    ds_write_b64 v2, v[0:1]
 ; CHECK-NEXT:    s_endpgm
@@ -70,11 +76,17 @@ define amdgpu_kernel void @badIntrinsicUse(ptr addrspace(3) %inptr, i1 %cond, pt
 ; CHECK-NEXT:    v_perm_b32 v0, v3, v2, s0
 ; CHECK-NEXT:    s_mov_b32 s0, 0x5040100
 ; CHECK-NEXT:    v_perm_b32 v1, v3, v2, s0
-; CHECK-NEXT:    s_cbranch_execz .LBB1_3
-; CHECK-NEXT:    s_branch .LBB1_4
+; CHECK-NEXT:    s_mov_b64 s[0:1], 0
+; CHECK-NEXT:    s_branch .LBB1_3
 ; CHECK-NEXT:  .LBB1_2:
+; CHECK-NEXT:    s_mov_b64 s[0:1], -1
 ; CHECK-NEXT:    ; implicit-def: $vgpr1
-; CHECK-NEXT:  .LBB1_3: ; %then
+; CHECK-NEXT:  .LBB1_3: ; %Flow
+; CHECK-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s0, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB1_5
+; CHECK-NEXT:  ; %bb.4: ; %then
 ; CHECK-NEXT:    v_mov_b32_e32 v0, s3
 ; CHECK-NEXT:    ds_read_b64_tr_b16 v[2:3], v0
 ; CHECK-NEXT:    s_mov_b32 s0, 0x5040100
@@ -82,7 +94,7 @@ define amdgpu_kernel void @badIntrinsicUse(ptr addrspace(3) %inptr, i1 %cond, pt
 ; CHECK-NEXT:    s_waitcnt lgkmcnt(0)
 ; CHECK-NEXT:    v_perm_b32 v0, v3, v2, s0
 ; CHECK-NEXT:    v_perm_b32 v1, v3, v2, s1
-; CHECK-NEXT:  .LBB1_4: ; %end
+; CHECK-NEXT:  .LBB1_5: ; %end
 ; CHECK-NEXT:    v_mov_b32_e32 v2, s2
 ; CHECK-NEXT:    ds_write_b64 v2, v[0:1]
 ; CHECK-NEXT:    s_endpgm
@@ -126,11 +138,17 @@ define amdgpu_kernel void @badIntrinsicUse2(ptr addrspace(3) %inptr, i1 %cond, p
 ; CHECK-NEXT:    v_perm_b32 v0, v3, v2, s0
 ; CHECK-NEXT:    s_mov_b32 s0, 0x5040100
 ; CHECK-NEXT:    v_perm_b32 v1, v3, v2, s0
-; CHECK-NEXT:    s_cbranch_execz .LBB2_3
-; CHECK-NEXT:    s_branch .LBB2_4
+; CHECK-NEXT:    s_mov_b64 s[0:1], 0
+; CHECK-NEXT:    s_branch .LBB2_3
 ; CHECK-NEXT:  .LBB2_2:
+; CHECK-NEXT:    s_mov_b64 s[0:1], -1
 ; CHECK-NEXT:    ; implicit-def: $vgpr1
-; CHECK-NEXT:  .LBB2_3: ; %then
+; CHECK-NEXT:  .LBB2_3: ; %Flow
+; CHECK-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s0, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB2_5
+; CHECK-NEXT:  ; %bb.4: ; %then
 ; CHECK-NEXT:    v_mov_b32_e32 v0, s4
 ; CHECK-NEXT:    ds_read_b64_tr_b16 v[2:3], v0
 ; CHECK-NEXT:    s_mov_b32 s0, 0x5040100
@@ -138,7 +156,7 @@ define amdgpu_kernel void @badIntrinsicUse2(ptr addrspace(3) %inptr, i1 %cond, p
 ; CHECK-NEXT:    s_waitcnt lgkmcnt(0)
 ; CHECK-NEXT:    v_perm_b32 v0, v3, v2, s0
 ; CHECK-NEXT:    v_perm_b32 v1, v3, v2, s1
-; CHECK-NEXT:  .LBB2_4: ; %end
+; CHECK-NEXT:  .LBB2_5: ; %end
 ; CHECK-NEXT:    v_mov_b32_e32 v2, s2
 ; CHECK-NEXT:    ds_write_b64 v2, v[0:1]
 ; CHECK-NEXT:    s_endpgm

diff  --git a/llvm/test/CodeGen/AMDGPU/sminmax.v2i16.ll b/llvm/test/CodeGen/AMDGPU/sminmax.v2i16.ll
index 76f8f484fc763..cb9091edb07aa 100644
--- a/llvm/test/CodeGen/AMDGPU/sminmax.v2i16.ll
+++ b/llvm/test/CodeGen/AMDGPU/sminmax.v2i16.ll
@@ -860,22 +860,22 @@ define amdgpu_kernel void @v_min_max_v2i16_user(ptr addrspace(1) %out0, ptr addr
 ; GFX9-NEXT:    global_load_dword v2, v0, s[14:15] glc
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
+; GFX9-NEXT:    v_lshrrev_b32_e32 v4, 16, v2
 ; GFX9-NEXT:    v_cmp_gt_i32_sdwa vcc, sext(v1), sext(v2) src0_sel:WORD_0 src1_sel:WORD_0
 ; GFX9-NEXT:    v_cmp_gt_i32_sdwa s[0:1], sext(v1), sext(v2) src0_sel:WORD_1 src1_sel:WORD_1
-; GFX9-NEXT:    v_lshrrev_b32_e32 v4, 16, v2
 ; GFX9-NEXT:    v_cndmask_b32_e32 v5, v2, v1, vcc
-; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc
-; GFX9-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[0:1]
 ; GFX9-NEXT:    v_cndmask_b32_e64 v6, v4, v3, s[0:1]
 ; GFX9-NEXT:    v_cndmask_b32_e64 v3, v3, v4, s[0:1]
-; GFX9-NEXT:    v_and_b32_e32 v4, 0xffff, v5
-; GFX9-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc
+; GFX9-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[0:1]
+; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc
+; GFX9-NEXT:    v_and_b32_e32 v5, 0xffff, v5
+; GFX9-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
+; GFX9-NEXT:    v_lshlrev_b32_e32 v4, 1, v4
 ; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1
-; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 1, v2
-; GFX9-NEXT:    v_lshl_or_b32 v4, v6, 16, v4
+; GFX9-NEXT:    v_lshl_or_b32 v5, v6, 16, v5
 ; GFX9-NEXT:    v_lshl_or_b32 v1, v3, 16, v1
-; GFX9-NEXT:    v_or_b32_e32 v2, v5, v2
-; GFX9-NEXT:    global_store_dword v0, v4, s[8:9]
+; GFX9-NEXT:    v_or_b32_e32 v2, v2, v4
+; GFX9-NEXT:    global_store_dword v0, v5, s[8:9]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    global_store_dword v0, v1, s[10:11]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
@@ -911,16 +911,16 @@ define amdgpu_kernel void @v_min_max_v2i16_user(ptr addrspace(1) %out0, ptr addr
 ; VI-NEXT:    v_cmp_gt_i32_e64 s[0:1], v6, v7
 ; VI-NEXT:    v_cndmask_b32_e64 v6, v5, v4, s[0:1]
 ; VI-NEXT:    v_cndmask_b32_e32 v7, v8, v9, vcc
-; VI-NEXT:    v_lshlrev_b32_e32 v8, 16, v10
+; VI-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc
+; VI-NEXT:    v_lshlrev_b32_e32 v9, 16, v10
 ; VI-NEXT:    v_cndmask_b32_e64 v4, v4, v5, s[0:1]
-; VI-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc
-; VI-NEXT:    v_cndmask_b32_e64 v9, 0, 1, s[0:1]
-; VI-NEXT:    v_or_b32_sdwa v6, v6, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
-; VI-NEXT:    v_lshlrev_b32_e32 v5, 1, v5
+; VI-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[0:1]
+; VI-NEXT:    v_or_b32_sdwa v6, v6, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
+; VI-NEXT:    v_lshlrev_b32_e32 v8, 1, v8
 ; VI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
 ; VI-NEXT:    flat_store_dword v[0:1], v6
 ; VI-NEXT:    s_waitcnt vmcnt(0)
-; VI-NEXT:    v_or_b32_e32 v0, v9, v5
+; VI-NEXT:    v_or_b32_e32 v0, v5, v8
 ; VI-NEXT:    v_or_b32_sdwa v4, v4, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
 ; VI-NEXT:    v_and_b32_e32 v0, 3, v0
 ; VI-NEXT:    flat_store_dword v[2:3], v4
@@ -955,24 +955,24 @@ define amdgpu_kernel void @v_min_max_v2i16_user(ptr addrspace(1) %out0, ptr addr
 ; CI-NEXT:    s_mov_b32 s5, s9
 ; CI-NEXT:    s_mov_b32 s12, s10
 ; CI-NEXT:    s_mov_b32 s13, s11
-; CI-NEXT:    v_cmp_gt_i32_e32 vcc, v0, v2
-; CI-NEXT:    v_cmp_gt_i32_e64 s[0:1], v1, v3
-; CI-NEXT:    v_cndmask_b32_e32 v4, v2, v0, vcc
-; CI-NEXT:    v_cndmask_b32_e64 v5, v3, v1, s[0:1]
-; CI-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc
-; CI-NEXT:    v_cndmask_b32_e64 v1, v1, v3, s[0:1]
-; CI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[0:1]
-; CI-NEXT:    buffer_store_short v5, off, s[4:7], 0 offset:2
+; CI-NEXT:    v_cmp_gt_i32_e64 s[0:1], v0, v2
+; CI-NEXT:    v_cmp_gt_i32_e32 vcc, v1, v3
+; CI-NEXT:    v_cndmask_b32_e32 v4, v3, v1, vcc
+; CI-NEXT:    v_cndmask_b32_e64 v5, v2, v0, s[0:1]
+; CI-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc
+; CI-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc
+; CI-NEXT:    v_cndmask_b32_e64 v0, v0, v2, s[0:1]
+; CI-NEXT:    buffer_store_short v4, off, s[4:7], 0 offset:2
 ; CI-NEXT:    s_waitcnt vmcnt(0)
-; CI-NEXT:    buffer_store_short v4, off, s[4:7], 0
+; CI-NEXT:    buffer_store_short v5, off, s[4:7], 0
 ; CI-NEXT:    s_waitcnt vmcnt(0)
+; CI-NEXT:    v_lshlrev_b32_e32 v2, 1, v3
 ; CI-NEXT:    buffer_store_short v1, off, s[12:15], 0 offset:2
 ; CI-NEXT:    s_waitcnt vmcnt(0)
 ; CI-NEXT:    buffer_store_short v0, off, s[12:15], 0
 ; CI-NEXT:    s_waitcnt vmcnt(0)
-; CI-NEXT:    v_lshlrev_b32_e32 v0, 1, v2
-; CI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
-; CI-NEXT:    v_or_b32_e32 v0, v1, v0
+; CI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; CI-NEXT:    v_or_b32_e32 v0, v0, v2
 ; CI-NEXT:    v_and_b32_e32 v0, 3, v0
 ; CI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; CI-NEXT:    s_waitcnt vmcnt(0)

diff  --git a/llvm/test/CodeGen/AMDGPU/srem.ll b/llvm/test/CodeGen/AMDGPU/srem.ll
index 966042692c194..fa0a2b61652ed 100644
--- a/llvm/test/CodeGen/AMDGPU/srem.ll
+++ b/llvm/test/CodeGen/AMDGPU/srem.ll
@@ -1502,7 +1502,7 @@ define amdgpu_kernel void @srem_i64(ptr addrspace(1) %out, ptr addrspace(1) %in)
 ; GCN-NEXT:    v_readfirstlane_b32 s2, v2
 ; GCN-NEXT:    s_or_b64 s[6:7], s[4:5], s[2:3]
 ; GCN-NEXT:    s_cmp_lg_u32 s7, 0
-; GCN-NEXT:    s_cbranch_scc0 .LBB8_4
+; GCN-NEXT:    s_cbranch_scc0 .LBB8_2
 ; GCN-NEXT:  ; %bb.1:
 ; GCN-NEXT:    s_ashr_i32 s6, s3, 31
 ; GCN-NEXT:    s_add_u32 s8, s2, s6
@@ -1513,6 +1513,7 @@ define amdgpu_kernel void @srem_i64(ptr addrspace(1) %out, ptr addrspace(1) %in)
 ; GCN-NEXT:    v_cvt_f32_u32_e32 v1, s9
 ; GCN-NEXT:    s_sub_u32 s3, 0, s8
 ; GCN-NEXT:    s_subb_u32 s10, 0, s9
+; GCN-NEXT:    s_mov_b64 s[6:7], 0
 ; GCN-NEXT:    v_madmk_f32 v0, v1, 0x4f800000, v0
 ; GCN-NEXT:    v_rcp_f32_e32 v0, v0
 ; GCN-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v0
@@ -1626,8 +1627,16 @@ define amdgpu_kernel void @srem_i64(ptr addrspace(1) %out, ptr addrspace(1) %in)
 ; GCN-NEXT:    s_xor_b64 s[8:9], s[8:9], s[10:11]
 ; GCN-NEXT:    s_sub_u32 s8, s8, s10
 ; GCN-NEXT:    s_subb_u32 s9, s9, s10
-; GCN-NEXT:    s_cbranch_execnz .LBB8_3
+; GCN-NEXT:    s_branch .LBB8_3
 ; GCN-NEXT:  .LBB8_2:
+; GCN-NEXT:    s_mov_b64 s[6:7], -1
+; GCN-NEXT:    ; implicit-def: $sgpr8_sgpr9
+; GCN-NEXT:  .LBB8_3: ; %Flow
+; GCN-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN-NEXT:    s_cselect_b32 s3, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s3, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB8_5
+; GCN-NEXT:  ; %bb.4:
 ; GCN-NEXT:    v_cvt_f32_u32_e32 v0, s2
 ; GCN-NEXT:    s_sub_i32 s3, 0, s2
 ; GCN-NEXT:    s_mov_b32 s9, 0
@@ -1647,15 +1656,12 @@ define amdgpu_kernel void @srem_i64(ptr addrspace(1) %out, ptr addrspace(1) %in)
 ; GCN-NEXT:    s_sub_i32 s4, s3, s2
 ; GCN-NEXT:    s_cmp_ge_u32 s3, s2
 ; GCN-NEXT:    s_cselect_b32 s8, s4, s3
-; GCN-NEXT:  .LBB8_3: ; %.split
+; GCN-NEXT:  .LBB8_5: ; %.split
 ; GCN-NEXT:    v_mov_b32_e32 v0, s8
 ; GCN-NEXT:    v_mov_b32_e32 v2, 0
 ; GCN-NEXT:    v_mov_b32_e32 v1, s9
 ; GCN-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
 ; GCN-NEXT:    s_endpgm
-; GCN-NEXT:  .LBB8_4:
-; GCN-NEXT:    ; implicit-def: $sgpr8_sgpr9
-; GCN-NEXT:    s_branch .LBB8_2
 ;
 ; TAHITI-LABEL: srem_i64:
 ; TAHITI:       ; %bb.0:
@@ -1669,7 +1675,7 @@ define amdgpu_kernel void @srem_i64(ptr addrspace(1) %out, ptr addrspace(1) %in)
 ; TAHITI-NEXT:    s_waitcnt vmcnt(0)
 ; TAHITI-NEXT:    v_or_b32_e32 v4, v1, v3
 ; TAHITI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v4
-; TAHITI-NEXT:    s_cbranch_vccz .LBB8_4
+; TAHITI-NEXT:    s_cbranch_vccz .LBB8_2
 ; TAHITI-NEXT:  ; %bb.1:
 ; TAHITI-NEXT:    v_ashrrev_i32_e32 v5, 31, v3
 ; TAHITI-NEXT:    v_add_i32_e32 v4, vcc, v2, v5
@@ -1682,6 +1688,7 @@ define amdgpu_kernel void @srem_i64(ptr addrspace(1) %out, ptr addrspace(1) %in)
 ; TAHITI-NEXT:    v_subb_u32_e32 v8, vcc, 0, v3, vcc
 ; TAHITI-NEXT:    v_madmk_f32 v5, v6, 0x4f800000, v5
 ; TAHITI-NEXT:    v_rcp_f32_e32 v5, v5
+; TAHITI-NEXT:    s_mov_b64 s[6:7], 0
 ; TAHITI-NEXT:    v_mul_f32_e32 v5, 0x5f7ffffc, v5
 ; TAHITI-NEXT:    v_mul_f32_e32 v6, 0x2f800000, v5
 ; TAHITI-NEXT:    v_trunc_f32_e32 v6, v6
@@ -1788,8 +1795,16 @@ define amdgpu_kernel void @srem_i64(ptr addrspace(1) %out, ptr addrspace(1) %in)
 ; TAHITI-NEXT:    v_xor_b32_e32 v1, v1, v7
 ; TAHITI-NEXT:    v_sub_i32_e32 v3, vcc, v3, v7
 ; TAHITI-NEXT:    v_subb_u32_e32 v4, vcc, v1, v7, vcc
-; TAHITI-NEXT:    s_cbranch_execnz .LBB8_3
+; TAHITI-NEXT:    s_branch .LBB8_3
 ; TAHITI-NEXT:  .LBB8_2:
+; TAHITI-NEXT:    s_mov_b64 s[6:7], -1
+; TAHITI-NEXT:    ; implicit-def: $vgpr3_vgpr4
+; TAHITI-NEXT:  .LBB8_3: ; %Flow
+; TAHITI-NEXT:    s_and_b64 s[0:1], s[6:7], exec
+; TAHITI-NEXT:    s_cselect_b32 s0, 1, 0
+; TAHITI-NEXT:    s_cmp_lg_u32 s0, 1
+; TAHITI-NEXT:    s_cbranch_scc1 .LBB8_5
+; TAHITI-NEXT:  ; %bb.4:
 ; TAHITI-NEXT:    v_cvt_f32_u32_e32 v1, v2
 ; TAHITI-NEXT:    v_sub_i32_e32 v3, vcc, 0, v2
 ; TAHITI-NEXT:    v_mov_b32_e32 v4, 0
@@ -1808,14 +1823,11 @@ define amdgpu_kernel void @srem_i64(ptr addrspace(1) %out, ptr addrspace(1) %in)
 ; TAHITI-NEXT:    v_sub_i32_e32 v1, vcc, v0, v2
 ; TAHITI-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v2
 ; TAHITI-NEXT:    v_cndmask_b32_e32 v3, v0, v1, vcc
-; TAHITI-NEXT:  .LBB8_3: ; %.split
+; TAHITI-NEXT:  .LBB8_5: ; %.split
 ; TAHITI-NEXT:    s_mov_b32 s7, 0xf000
 ; TAHITI-NEXT:    s_mov_b32 s6, -1
 ; TAHITI-NEXT:    buffer_store_dwordx2 v[3:4], off, s[4:7], 0
 ; TAHITI-NEXT:    s_endpgm
-; TAHITI-NEXT:  .LBB8_4:
-; TAHITI-NEXT:    ; implicit-def: $vgpr3_vgpr4
-; TAHITI-NEXT:    s_branch .LBB8_2
 ;
 ; TONGA-LABEL: srem_i64:
 ; TONGA:       ; %bb.0:
@@ -1831,7 +1843,7 @@ define amdgpu_kernel void @srem_i64(ptr addrspace(1) %out, ptr addrspace(1) %in)
 ; TONGA-NEXT:    v_readfirstlane_b32 s2, v2
 ; TONGA-NEXT:    s_or_b64 s[6:7], s[4:5], s[2:3]
 ; TONGA-NEXT:    s_cmp_lg_u32 s7, 0
-; TONGA-NEXT:    s_cbranch_scc0 .LBB8_3
+; TONGA-NEXT:    s_cbranch_scc0 .LBB8_2
 ; TONGA-NEXT:  ; %bb.1:
 ; TONGA-NEXT:    s_ashr_i32 s6, s3, 31
 ; TONGA-NEXT:    s_add_u32 s8, s2, s6
@@ -1950,9 +1962,18 @@ define amdgpu_kernel void @srem_i64(ptr addrspace(1) %out, ptr addrspace(1) %in)
 ; TONGA-NEXT:    s_cselect_b32 s6, s16, s12
 ; TONGA-NEXT:    s_xor_b64 s[6:7], s[6:7], s[10:11]
 ; TONGA-NEXT:    s_sub_u32 s6, s6, s10
+; TONGA-NEXT:    s_mov_b64 s[8:9], 0
 ; TONGA-NEXT:    s_subb_u32 s7, s7, s10
-; TONGA-NEXT:    s_cbranch_execnz .LBB8_4
+; TONGA-NEXT:    s_branch .LBB8_3
 ; TONGA-NEXT:  .LBB8_2:
+; TONGA-NEXT:    s_mov_b64 s[8:9], -1
+; TONGA-NEXT:    ; implicit-def: $sgpr6_sgpr7
+; TONGA-NEXT:  .LBB8_3: ; %Flow
+; TONGA-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; TONGA-NEXT:    s_cselect_b32 s3, 1, 0
+; TONGA-NEXT:    s_cmp_lg_u32 s3, 1
+; TONGA-NEXT:    s_cbranch_scc1 .LBB8_5
+; TONGA-NEXT:  ; %bb.4:
 ; TONGA-NEXT:    v_cvt_f32_u32_e32 v0, s2
 ; TONGA-NEXT:    s_sub_i32 s3, 0, s2
 ; TONGA-NEXT:    v_rcp_iflag_f32_e32 v0, v0
@@ -1971,14 +1992,11 @@ define amdgpu_kernel void @srem_i64(ptr addrspace(1) %out, ptr addrspace(1) %in)
 ; TONGA-NEXT:    v_cmp_le_u32_e32 vcc, s2, v0
 ; TONGA-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc
 ; TONGA-NEXT:    v_mov_b32_e32 v1, 0
-; TONGA-NEXT:    s_branch .LBB8_5
-; TONGA-NEXT:  .LBB8_3:
-; TONGA-NEXT:    ; implicit-def: $sgpr6_sgpr7
-; TONGA-NEXT:    s_branch .LBB8_2
-; TONGA-NEXT:  .LBB8_4:
+; TONGA-NEXT:    s_branch .LBB8_6
+; TONGA-NEXT:  .LBB8_5:
 ; TONGA-NEXT:    v_mov_b32_e32 v0, s6
 ; TONGA-NEXT:    v_mov_b32_e32 v1, s7
-; TONGA-NEXT:  .LBB8_5: ; %.split
+; TONGA-NEXT:  .LBB8_6: ; %.split
 ; TONGA-NEXT:    v_mov_b32_e32 v2, s0
 ; TONGA-NEXT:    v_mov_b32_e32 v3, s1
 ; TONGA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
@@ -2704,7 +2722,7 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    v_readfirstlane_b32 s5, v7
 ; GCN-NEXT:    s_cmp_lg_u32 s7, 0
 ; GCN-NEXT:    v_readfirstlane_b32 s4, v6
-; GCN-NEXT:    s_cbranch_scc0 .LBB10_6
+; GCN-NEXT:    s_cbranch_scc0 .LBB10_2
 ; GCN-NEXT:  ; %bb.1:
 ; GCN-NEXT:    s_ashr_i32 s6, s9, 31
 ; GCN-NEXT:    s_add_u32 s12, s8, s6
@@ -2715,6 +2733,7 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    v_cvt_f32_u32_e32 v1, s7
 ; GCN-NEXT:    s_sub_u32 s9, 0, s6
 ; GCN-NEXT:    s_subb_u32 s14, 0, s7
+; GCN-NEXT:    s_mov_b64 s[12:13], 0
 ; GCN-NEXT:    v_madmk_f32 v0, v1, 0x4f800000, v0
 ; GCN-NEXT:    v_rcp_f32_e32 v0, v0
 ; GCN-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v0
@@ -2828,8 +2847,16 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    s_xor_b64 s[6:7], s[6:7], s[14:15]
 ; GCN-NEXT:    s_sub_u32 s6, s6, s14
 ; GCN-NEXT:    s_subb_u32 s7, s7, s14
-; GCN-NEXT:    s_cbranch_execnz .LBB10_3
+; GCN-NEXT:    s_branch .LBB10_3
 ; GCN-NEXT:  .LBB10_2:
+; GCN-NEXT:    s_mov_b64 s[12:13], -1
+; GCN-NEXT:    ; implicit-def: $sgpr6_sgpr7
+; GCN-NEXT:  .LBB10_3: ; %Flow5
+; GCN-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; GCN-NEXT:    s_cselect_b32 s9, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s9, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB10_5
+; GCN-NEXT:  ; %bb.4:
 ; GCN-NEXT:    v_cvt_f32_u32_e32 v0, s8
 ; GCN-NEXT:    s_sub_i32 s6, 0, s8
 ; GCN-NEXT:    s_mov_b32 s7, 0
@@ -2849,11 +2876,11 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    s_sub_i32 s9, s6, s8
 ; GCN-NEXT:    s_cmp_ge_u32 s6, s8
 ; GCN-NEXT:    s_cselect_b32 s6, s9, s6
-; GCN-NEXT:  .LBB10_3: ; %.split
+; GCN-NEXT:  .LBB10_5: ; %.split
 ; GCN-NEXT:    s_or_b64 s[8:9], s[4:5], s[2:3]
 ; GCN-NEXT:    s_cmp_lg_u32 s9, 0
 ; GCN-NEXT:    s_cbranch_scc0 .LBB10_7
-; GCN-NEXT:  ; %bb.4:
+; GCN-NEXT:  ; %bb.6:
 ; GCN-NEXT:    s_ashr_i32 s8, s3, 31
 ; GCN-NEXT:    s_add_u32 s10, s2, s8
 ; GCN-NEXT:    s_mov_b32 s9, s8
@@ -2863,6 +2890,7 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    v_cvt_f32_u32_e32 v1, s11
 ; GCN-NEXT:    s_sub_u32 s3, 0, s10
 ; GCN-NEXT:    s_subb_u32 s12, 0, s11
+; GCN-NEXT:    s_mov_b64 s[8:9], 0
 ; GCN-NEXT:    v_madmk_f32 v0, v1, 0x4f800000, v0
 ; GCN-NEXT:    v_rcp_f32_e32 v0, v0
 ; GCN-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v0
@@ -2976,8 +3004,16 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    s_xor_b64 s[10:11], s[10:11], s[12:13]
 ; GCN-NEXT:    s_sub_u32 s10, s10, s12
 ; GCN-NEXT:    s_subb_u32 s11, s11, s12
-; GCN-NEXT:    s_cbranch_execnz .LBB10_8
-; GCN-NEXT:  .LBB10_5:
+; GCN-NEXT:    s_branch .LBB10_8
+; GCN-NEXT:  .LBB10_7:
+; GCN-NEXT:    s_mov_b64 s[8:9], -1
+; GCN-NEXT:    ; implicit-def: $sgpr10_sgpr11
+; GCN-NEXT:  .LBB10_8: ; %Flow
+; GCN-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GCN-NEXT:    s_cselect_b32 s3, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s3, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB10_10
+; GCN-NEXT:  ; %bb.9:
 ; GCN-NEXT:    v_cvt_f32_u32_e32 v0, s2
 ; GCN-NEXT:    s_sub_i32 s3, 0, s2
 ; GCN-NEXT:    v_mov_b32_e32 v3, 0
@@ -2996,17 +3032,11 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    v_subrev_u32_e32 v1, s2, v0
 ; GCN-NEXT:    v_cmp_le_u32_e32 vcc, s2, v0
 ; GCN-NEXT:    v_cndmask_b32_e32 v2, v0, v1, vcc
-; GCN-NEXT:    s_branch .LBB10_9
-; GCN-NEXT:  .LBB10_6:
-; GCN-NEXT:    ; implicit-def: $sgpr6_sgpr7
-; GCN-NEXT:    s_branch .LBB10_2
-; GCN-NEXT:  .LBB10_7:
-; GCN-NEXT:    ; implicit-def: $sgpr10_sgpr11
-; GCN-NEXT:    s_branch .LBB10_5
-; GCN-NEXT:  .LBB10_8:
+; GCN-NEXT:    s_branch .LBB10_11
+; GCN-NEXT:  .LBB10_10:
 ; GCN-NEXT:    v_mov_b32_e32 v2, s10
 ; GCN-NEXT:    v_mov_b32_e32 v3, s11
-; GCN-NEXT:  .LBB10_9: ; %.split.split
+; GCN-NEXT:  .LBB10_11: ; %.split.split
 ; GCN-NEXT:    v_mov_b32_e32 v4, 0
 ; GCN-NEXT:    v_mov_b32_e32 v0, s6
 ; GCN-NEXT:    v_mov_b32_e32 v1, s7
@@ -3026,7 +3056,7 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    s_waitcnt vmcnt(0)
 ; TAHITI-NEXT:    v_or_b32_e32 v8, v5, v1
 ; TAHITI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v8
-; TAHITI-NEXT:    s_cbranch_vccz .LBB10_7
+; TAHITI-NEXT:    s_cbranch_vccz .LBB10_2
 ; TAHITI-NEXT:  ; %bb.1:
 ; TAHITI-NEXT:    v_ashrrev_i32_e32 v9, 31, v1
 ; TAHITI-NEXT:    v_add_i32_e32 v8, vcc, v0, v9
@@ -3039,6 +3069,7 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_subb_u32_e32 v12, vcc, 0, v1, vcc
 ; TAHITI-NEXT:    v_madmk_f32 v9, v10, 0x4f800000, v9
 ; TAHITI-NEXT:    v_rcp_f32_e32 v9, v9
+; TAHITI-NEXT:    s_mov_b64 s[6:7], 0
 ; TAHITI-NEXT:    v_mul_f32_e32 v9, 0x5f7ffffc, v9
 ; TAHITI-NEXT:    v_mul_f32_e32 v10, 0x2f800000, v9
 ; TAHITI-NEXT:    v_trunc_f32_e32 v10, v10
@@ -3145,8 +3176,16 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_xor_b32_e32 v1, v1, v11
 ; TAHITI-NEXT:    v_sub_i32_e32 v8, vcc, v5, v11
 ; TAHITI-NEXT:    v_subb_u32_e32 v9, vcc, v1, v11, vcc
-; TAHITI-NEXT:    s_cbranch_execnz .LBB10_3
+; TAHITI-NEXT:    s_branch .LBB10_3
 ; TAHITI-NEXT:  .LBB10_2:
+; TAHITI-NEXT:    s_mov_b64 s[6:7], -1
+; TAHITI-NEXT:    ; implicit-def: $vgpr8_vgpr9
+; TAHITI-NEXT:  .LBB10_3: ; %Flow5
+; TAHITI-NEXT:    s_and_b64 s[0:1], s[6:7], exec
+; TAHITI-NEXT:    s_cselect_b32 s0, 1, 0
+; TAHITI-NEXT:    s_cmp_lg_u32 s0, 1
+; TAHITI-NEXT:    s_cbranch_scc1 .LBB10_5
+; TAHITI-NEXT:  ; %bb.4:
 ; TAHITI-NEXT:    v_cvt_f32_u32_e32 v1, v0
 ; TAHITI-NEXT:    v_sub_i32_e32 v5, vcc, 0, v0
 ; TAHITI-NEXT:    v_mov_b32_e32 v9, 0
@@ -3165,11 +3204,11 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_sub_i32_e32 v4, vcc, v1, v0
 ; TAHITI-NEXT:    v_cmp_ge_u32_e32 vcc, v1, v0
 ; TAHITI-NEXT:    v_cndmask_b32_e32 v8, v1, v4, vcc
-; TAHITI-NEXT:  .LBB10_3: ; %.split
+; TAHITI-NEXT:  .LBB10_5: ; %.split
 ; TAHITI-NEXT:    v_or_b32_e32 v0, v7, v3
 ; TAHITI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; TAHITI-NEXT:    s_cbranch_vccz .LBB10_8
-; TAHITI-NEXT:  ; %bb.4:
+; TAHITI-NEXT:    s_cbranch_vccz .LBB10_7
+; TAHITI-NEXT:  ; %bb.6:
 ; TAHITI-NEXT:    v_ashrrev_i32_e32 v0, 31, v3
 ; TAHITI-NEXT:    v_add_i32_e32 v1, vcc, v2, v0
 ; TAHITI-NEXT:    v_addc_u32_e32 v3, vcc, v3, v0, vcc
@@ -3181,6 +3220,7 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_subb_u32_e32 v10, vcc, 0, v0, vcc
 ; TAHITI-NEXT:    v_madmk_f32 v3, v4, 0x4f800000, v3
 ; TAHITI-NEXT:    v_rcp_f32_e32 v3, v3
+; TAHITI-NEXT:    s_mov_b64 s[6:7], 0
 ; TAHITI-NEXT:    v_mul_f32_e32 v3, 0x5f7ffffc, v3
 ; TAHITI-NEXT:    v_mul_f32_e32 v4, 0x2f800000, v3
 ; TAHITI-NEXT:    v_trunc_f32_e32 v4, v4
@@ -3287,8 +3327,15 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_xor_b32_e32 v0, v0, v5
 ; TAHITI-NEXT:    v_sub_i32_e32 v10, vcc, v1, v5
 ; TAHITI-NEXT:    v_subb_u32_e32 v11, vcc, v0, v5, vcc
-; TAHITI-NEXT:    s_cbranch_execnz .LBB10_6
-; TAHITI-NEXT:  .LBB10_5:
+; TAHITI-NEXT:    s_branch .LBB10_8
+; TAHITI-NEXT:  .LBB10_7:
+; TAHITI-NEXT:    s_mov_b64 s[6:7], -1
+; TAHITI-NEXT:  .LBB10_8: ; %Flow
+; TAHITI-NEXT:    s_and_b64 s[0:1], s[6:7], exec
+; TAHITI-NEXT:    s_cselect_b32 s0, 1, 0
+; TAHITI-NEXT:    s_cmp_lg_u32 s0, 1
+; TAHITI-NEXT:    s_cbranch_scc1 .LBB10_10
+; TAHITI-NEXT:  ; %bb.9:
 ; TAHITI-NEXT:    v_cvt_f32_u32_e32 v0, v2
 ; TAHITI-NEXT:    v_sub_i32_e32 v1, vcc, 0, v2
 ; TAHITI-NEXT:    v_mov_b32_e32 v11, 0
@@ -3307,16 +3354,11 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_subrev_i32_e32 v1, vcc, v2, v0
 ; TAHITI-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v2
 ; TAHITI-NEXT:    v_cndmask_b32_e32 v10, v0, v1, vcc
-; TAHITI-NEXT:  .LBB10_6: ; %.split.split
+; TAHITI-NEXT:  .LBB10_10: ; %.split.split
 ; TAHITI-NEXT:    s_mov_b32 s7, 0xf000
 ; TAHITI-NEXT:    s_mov_b32 s6, -1
 ; TAHITI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
 ; TAHITI-NEXT:    s_endpgm
-; TAHITI-NEXT:  .LBB10_7:
-; TAHITI-NEXT:    ; implicit-def: $vgpr8_vgpr9
-; TAHITI-NEXT:    s_branch .LBB10_2
-; TAHITI-NEXT:  .LBB10_8:
-; TAHITI-NEXT:    s_branch .LBB10_5
 ;
 ; TONGA-LABEL: srem_v2i64:
 ; TONGA:       ; %bb.0:
@@ -3338,7 +3380,7 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_readfirstlane_b32 s2, v4
 ; TONGA-NEXT:    s_or_b64 s[6:7], s[2:3], s[0:1]
 ; TONGA-NEXT:    s_cmp_lg_u32 s7, 0
-; TONGA-NEXT:    s_cbranch_scc0 .LBB10_3
+; TONGA-NEXT:    s_cbranch_scc0 .LBB10_2
 ; TONGA-NEXT:  ; %bb.1:
 ; TONGA-NEXT:    s_ashr_i32 s6, s1, 31
 ; TONGA-NEXT:    s_add_u32 s8, s0, s6
@@ -3457,9 +3499,18 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    s_cselect_b32 s6, s16, s12
 ; TONGA-NEXT:    s_xor_b64 s[6:7], s[6:7], s[10:11]
 ; TONGA-NEXT:    s_sub_u32 s6, s6, s10
+; TONGA-NEXT:    s_mov_b64 s[8:9], 0
 ; TONGA-NEXT:    s_subb_u32 s7, s7, s10
-; TONGA-NEXT:    s_cbranch_execnz .LBB10_4
+; TONGA-NEXT:    s_branch .LBB10_3
 ; TONGA-NEXT:  .LBB10_2:
+; TONGA-NEXT:    s_mov_b64 s[8:9], -1
+; TONGA-NEXT:    ; implicit-def: $sgpr6_sgpr7
+; TONGA-NEXT:  .LBB10_3: ; %Flow5
+; TONGA-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; TONGA-NEXT:    s_cselect_b32 s1, 1, 0
+; TONGA-NEXT:    s_cmp_lg_u32 s1, 1
+; TONGA-NEXT:    s_cbranch_scc1 .LBB10_5
+; TONGA-NEXT:  ; %bb.4:
 ; TONGA-NEXT:    v_cvt_f32_u32_e32 v0, s0
 ; TONGA-NEXT:    s_sub_i32 s1, 0, s0
 ; TONGA-NEXT:    v_mov_b32_e32 v9, 0
@@ -3478,18 +3529,15 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_subrev_u32_e32 v1, vcc, s0, v0
 ; TONGA-NEXT:    v_cmp_le_u32_e32 vcc, s0, v0
 ; TONGA-NEXT:    v_cndmask_b32_e32 v8, v0, v1, vcc
-; TONGA-NEXT:    s_branch .LBB10_5
-; TONGA-NEXT:  .LBB10_3:
-; TONGA-NEXT:    ; implicit-def: $sgpr6_sgpr7
-; TONGA-NEXT:    s_branch .LBB10_2
-; TONGA-NEXT:  .LBB10_4:
+; TONGA-NEXT:    s_branch .LBB10_6
+; TONGA-NEXT:  .LBB10_5:
 ; TONGA-NEXT:    v_mov_b32_e32 v9, s7
 ; TONGA-NEXT:    v_mov_b32_e32 v8, s6
-; TONGA-NEXT:  .LBB10_5: ; %.split
+; TONGA-NEXT:  .LBB10_6: ; %.split
 ; TONGA-NEXT:    v_or_b32_e32 v0, v7, v3
 ; TONGA-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; TONGA-NEXT:    s_cbranch_vccz .LBB10_9
-; TONGA-NEXT:  ; %bb.6:
+; TONGA-NEXT:    s_cbranch_vccz .LBB10_8
+; TONGA-NEXT:  ; %bb.7:
 ; TONGA-NEXT:    v_ashrrev_i32_e32 v0, 31, v3
 ; TONGA-NEXT:    v_add_u32_e32 v1, vcc, v2, v0
 ; TONGA-NEXT:    v_addc_u32_e32 v3, vcc, v3, v0, vcc
@@ -3501,6 +3549,7 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_subb_u32_e32 v14, vcc, 0, v10, vcc
 ; TONGA-NEXT:    v_madmk_f32 v0, v1, 0x4f800000, v0
 ; TONGA-NEXT:    v_rcp_f32_e32 v0, v0
+; TONGA-NEXT:    s_mov_b64 s[6:7], 0
 ; TONGA-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v0
 ; TONGA-NEXT:    v_mul_f32_e32 v1, 0x2f800000, v0
 ; TONGA-NEXT:    v_trunc_f32_e32 v1, v1
@@ -3595,8 +3644,15 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_xor_b32_e32 v1, v1, v12
 ; TONGA-NEXT:    v_sub_u32_e32 v10, vcc, v0, v12
 ; TONGA-NEXT:    v_subb_u32_e32 v11, vcc, v1, v12, vcc
-; TONGA-NEXT:    s_cbranch_execnz .LBB10_8
-; TONGA-NEXT:  .LBB10_7:
+; TONGA-NEXT:    s_branch .LBB10_9
+; TONGA-NEXT:  .LBB10_8:
+; TONGA-NEXT:    s_mov_b64 s[6:7], -1
+; TONGA-NEXT:  .LBB10_9: ; %Flow
+; TONGA-NEXT:    s_and_b64 s[0:1], s[6:7], exec
+; TONGA-NEXT:    s_cselect_b32 s0, 1, 0
+; TONGA-NEXT:    s_cmp_lg_u32 s0, 1
+; TONGA-NEXT:    s_cbranch_scc1 .LBB10_11
+; TONGA-NEXT:  ; %bb.10:
 ; TONGA-NEXT:    v_cvt_f32_u32_e32 v0, v2
 ; TONGA-NEXT:    v_sub_u32_e32 v1, vcc, 0, v2
 ; TONGA-NEXT:    v_mov_b32_e32 v11, 0
@@ -3615,13 +3671,11 @@ define amdgpu_kernel void @srem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_subrev_u32_e32 v1, vcc, v2, v0
 ; TONGA-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v2
 ; TONGA-NEXT:    v_cndmask_b32_e32 v10, v0, v1, vcc
-; TONGA-NEXT:  .LBB10_8: ; %.split.split
+; TONGA-NEXT:  .LBB10_11: ; %.split.split
 ; TONGA-NEXT:    v_mov_b32_e32 v0, s4
 ; TONGA-NEXT:    v_mov_b32_e32 v1, s5
 ; TONGA-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]
 ; TONGA-NEXT:    s_endpgm
-; TONGA-NEXT:  .LBB10_9:
-; TONGA-NEXT:    s_branch .LBB10_7
 ;
 ; EG-LABEL: srem_v2i64:
 ; EG:       ; %bb.0:
@@ -4882,7 +4936,7 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    v_readfirstlane_b32 s15, v15
 ; GCN-NEXT:    s_cmp_lg_u32 s7, 0
 ; GCN-NEXT:    v_readfirstlane_b32 s14, v14
-; GCN-NEXT:    s_cbranch_scc0 .LBB12_6
+; GCN-NEXT:    s_cbranch_scc0 .LBB12_2
 ; GCN-NEXT:  ; %bb.1:
 ; GCN-NEXT:    s_ashr_i32 s6, s17, 31
 ; GCN-NEXT:    s_add_u32 s20, s16, s6
@@ -4893,6 +4947,7 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    v_cvt_f32_u32_e32 v1, s7
 ; GCN-NEXT:    s_sub_u32 s17, 0, s6
 ; GCN-NEXT:    s_subb_u32 s22, 0, s7
+; GCN-NEXT:    s_mov_b64 s[20:21], 0
 ; GCN-NEXT:    v_madmk_f32 v0, v1, 0x4f800000, v0
 ; GCN-NEXT:    v_rcp_f32_e32 v0, v0
 ; GCN-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v0
@@ -5006,8 +5061,16 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    s_xor_b64 s[6:7], s[6:7], s[22:23]
 ; GCN-NEXT:    s_sub_u32 s6, s6, s22
 ; GCN-NEXT:    s_subb_u32 s7, s7, s22
-; GCN-NEXT:    s_cbranch_execnz .LBB12_3
+; GCN-NEXT:    s_branch .LBB12_3
 ; GCN-NEXT:  .LBB12_2:
+; GCN-NEXT:    s_mov_b64 s[20:21], -1
+; GCN-NEXT:    ; implicit-def: $sgpr6_sgpr7
+; GCN-NEXT:  .LBB12_3: ; %Flow7
+; GCN-NEXT:    s_and_b64 s[20:21], s[20:21], exec
+; GCN-NEXT:    s_cselect_b32 s17, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s17, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB12_5
+; GCN-NEXT:  ; %bb.4:
 ; GCN-NEXT:    v_cvt_f32_u32_e32 v0, s16
 ; GCN-NEXT:    s_sub_i32 s6, 0, s16
 ; GCN-NEXT:    s_mov_b32 s7, 0
@@ -5027,11 +5090,11 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    s_sub_i32 s17, s6, s16
 ; GCN-NEXT:    s_cmp_ge_u32 s6, s16
 ; GCN-NEXT:    s_cselect_b32 s6, s17, s6
-; GCN-NEXT:  .LBB12_3: ; %.split
+; GCN-NEXT:  .LBB12_5: ; %.split
 ; GCN-NEXT:    s_or_b64 s[16:17], s[14:15], s[12:13]
 ; GCN-NEXT:    s_cmp_lg_u32 s17, 0
 ; GCN-NEXT:    s_cbranch_scc0 .LBB12_7
-; GCN-NEXT:  ; %bb.4:
+; GCN-NEXT:  ; %bb.6:
 ; GCN-NEXT:    s_ashr_i32 s16, s13, 31
 ; GCN-NEXT:    s_add_u32 s18, s12, s16
 ; GCN-NEXT:    s_mov_b32 s17, s16
@@ -5041,6 +5104,7 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    v_cvt_f32_u32_e32 v1, s19
 ; GCN-NEXT:    s_sub_u32 s13, 0, s18
 ; GCN-NEXT:    s_subb_u32 s20, 0, s19
+; GCN-NEXT:    s_mov_b64 s[16:17], 0
 ; GCN-NEXT:    v_madmk_f32 v0, v1, 0x4f800000, v0
 ; GCN-NEXT:    v_rcp_f32_e32 v0, v0
 ; GCN-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v0
@@ -5154,8 +5218,16 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    s_xor_b64 s[18:19], s[18:19], s[20:21]
 ; GCN-NEXT:    s_sub_u32 s18, s18, s20
 ; GCN-NEXT:    s_subb_u32 s19, s19, s20
-; GCN-NEXT:    s_cbranch_execnz .LBB12_8
-; GCN-NEXT:  .LBB12_5:
+; GCN-NEXT:    s_branch .LBB12_8
+; GCN-NEXT:  .LBB12_7:
+; GCN-NEXT:    s_mov_b64 s[16:17], -1
+; GCN-NEXT:    ; implicit-def: $sgpr18_sgpr19
+; GCN-NEXT:  .LBB12_8: ; %Flow6
+; GCN-NEXT:    s_and_b64 s[16:17], s[16:17], exec
+; GCN-NEXT:    s_cselect_b32 s13, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s13, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB12_10
+; GCN-NEXT:  ; %bb.9:
 ; GCN-NEXT:    v_cvt_f32_u32_e32 v0, s12
 ; GCN-NEXT:    s_sub_i32 s13, 0, s12
 ; GCN-NEXT:    v_mov_b32_e32 v3, 0
@@ -5174,21 +5246,15 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    v_subrev_u32_e32 v1, s12, v0
 ; GCN-NEXT:    v_cmp_le_u32_e32 vcc, s12, v0
 ; GCN-NEXT:    v_cndmask_b32_e32 v2, v0, v1, vcc
-; GCN-NEXT:    s_branch .LBB12_9
-; GCN-NEXT:  .LBB12_6:
-; GCN-NEXT:    ; implicit-def: $sgpr6_sgpr7
-; GCN-NEXT:    s_branch .LBB12_2
-; GCN-NEXT:  .LBB12_7:
-; GCN-NEXT:    ; implicit-def: $sgpr18_sgpr19
-; GCN-NEXT:    s_branch .LBB12_5
-; GCN-NEXT:  .LBB12_8:
+; GCN-NEXT:    s_branch .LBB12_11
+; GCN-NEXT:  .LBB12_10:
 ; GCN-NEXT:    v_mov_b32_e32 v2, s18
 ; GCN-NEXT:    v_mov_b32_e32 v3, s19
-; GCN-NEXT:  .LBB12_9: ; %.split.split
+; GCN-NEXT:  .LBB12_11: ; %.split.split
 ; GCN-NEXT:    s_or_b64 s[12:13], s[10:11], s[8:9]
 ; GCN-NEXT:    s_cmp_lg_u32 s13, 0
-; GCN-NEXT:    s_cbranch_scc0 .LBB12_12
-; GCN-NEXT:  ; %bb.10:
+; GCN-NEXT:    s_cbranch_scc0 .LBB12_13
+; GCN-NEXT:  ; %bb.12:
 ; GCN-NEXT:    s_ashr_i32 s12, s9, 31
 ; GCN-NEXT:    s_add_u32 s14, s8, s12
 ; GCN-NEXT:    s_mov_b32 s13, s12
@@ -5198,6 +5264,7 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    v_cvt_f32_u32_e32 v1, s15
 ; GCN-NEXT:    s_sub_u32 s9, 0, s14
 ; GCN-NEXT:    s_subb_u32 s16, 0, s15
+; GCN-NEXT:    s_mov_b64 s[12:13], 0
 ; GCN-NEXT:    v_madmk_f32 v0, v1, 0x4f800000, v0
 ; GCN-NEXT:    v_rcp_f32_e32 v0, v0
 ; GCN-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v0
@@ -5311,8 +5378,16 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    s_xor_b64 s[14:15], s[14:15], s[16:17]
 ; GCN-NEXT:    s_sub_u32 s14, s14, s16
 ; GCN-NEXT:    s_subb_u32 s15, s15, s16
-; GCN-NEXT:    s_cbranch_execnz .LBB12_13
-; GCN-NEXT:  .LBB12_11:
+; GCN-NEXT:    s_branch .LBB12_14
+; GCN-NEXT:  .LBB12_13:
+; GCN-NEXT:    s_mov_b64 s[12:13], -1
+; GCN-NEXT:    ; implicit-def: $sgpr14_sgpr15
+; GCN-NEXT:  .LBB12_14: ; %Flow5
+; GCN-NEXT:    s_and_b64 s[12:13], s[12:13], exec
+; GCN-NEXT:    s_cselect_b32 s9, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s9, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB12_16
+; GCN-NEXT:  ; %bb.15:
 ; GCN-NEXT:    v_cvt_f32_u32_e32 v0, s8
 ; GCN-NEXT:    s_sub_i32 s9, 0, s8
 ; GCN-NEXT:    v_mov_b32_e32 v5, 0
@@ -5331,18 +5406,15 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    v_subrev_u32_e32 v1, s8, v0
 ; GCN-NEXT:    v_cmp_le_u32_e32 vcc, s8, v0
 ; GCN-NEXT:    v_cndmask_b32_e32 v4, v0, v1, vcc
-; GCN-NEXT:    s_branch .LBB12_14
-; GCN-NEXT:  .LBB12_12:
-; GCN-NEXT:    ; implicit-def: $sgpr14_sgpr15
-; GCN-NEXT:    s_branch .LBB12_11
-; GCN-NEXT:  .LBB12_13:
+; GCN-NEXT:    s_branch .LBB12_17
+; GCN-NEXT:  .LBB12_16:
 ; GCN-NEXT:    v_mov_b32_e32 v4, s14
 ; GCN-NEXT:    v_mov_b32_e32 v5, s15
-; GCN-NEXT:  .LBB12_14: ; %.split.split.split
+; GCN-NEXT:  .LBB12_17: ; %.split.split.split
 ; GCN-NEXT:    s_or_b64 s[8:9], s[4:5], s[2:3]
 ; GCN-NEXT:    s_cmp_lg_u32 s9, 0
-; GCN-NEXT:    s_cbranch_scc0 .LBB12_17
-; GCN-NEXT:  ; %bb.15:
+; GCN-NEXT:    s_cbranch_scc0 .LBB12_19
+; GCN-NEXT:  ; %bb.18:
 ; GCN-NEXT:    s_ashr_i32 s8, s3, 31
 ; GCN-NEXT:    s_add_u32 s10, s2, s8
 ; GCN-NEXT:    s_mov_b32 s9, s8
@@ -5352,6 +5424,7 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    v_cvt_f32_u32_e32 v1, s11
 ; GCN-NEXT:    s_sub_u32 s3, 0, s10
 ; GCN-NEXT:    s_subb_u32 s12, 0, s11
+; GCN-NEXT:    s_mov_b64 s[8:9], 0
 ; GCN-NEXT:    v_madmk_f32 v0, v1, 0x4f800000, v0
 ; GCN-NEXT:    v_rcp_f32_e32 v0, v0
 ; GCN-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v0
@@ -5465,8 +5538,16 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    s_xor_b64 s[10:11], s[10:11], s[12:13]
 ; GCN-NEXT:    s_sub_u32 s10, s10, s12
 ; GCN-NEXT:    s_subb_u32 s11, s11, s12
-; GCN-NEXT:    s_cbranch_execnz .LBB12_18
-; GCN-NEXT:  .LBB12_16:
+; GCN-NEXT:    s_branch .LBB12_20
+; GCN-NEXT:  .LBB12_19:
+; GCN-NEXT:    s_mov_b64 s[8:9], -1
+; GCN-NEXT:    ; implicit-def: $sgpr10_sgpr11
+; GCN-NEXT:  .LBB12_20: ; %Flow
+; GCN-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GCN-NEXT:    s_cselect_b32 s3, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s3, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB12_22
+; GCN-NEXT:  ; %bb.21:
 ; GCN-NEXT:    v_cvt_f32_u32_e32 v0, s2
 ; GCN-NEXT:    s_sub_i32 s3, 0, s2
 ; GCN-NEXT:    v_mov_b32_e32 v7, 0
@@ -5485,14 +5566,11 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; GCN-NEXT:    v_subrev_u32_e32 v1, s2, v0
 ; GCN-NEXT:    v_cmp_le_u32_e32 vcc, s2, v0
 ; GCN-NEXT:    v_cndmask_b32_e32 v6, v0, v1, vcc
-; GCN-NEXT:    s_branch .LBB12_19
-; GCN-NEXT:  .LBB12_17:
-; GCN-NEXT:    ; implicit-def: $sgpr10_sgpr11
-; GCN-NEXT:    s_branch .LBB12_16
-; GCN-NEXT:  .LBB12_18:
+; GCN-NEXT:    s_branch .LBB12_23
+; GCN-NEXT:  .LBB12_22:
 ; GCN-NEXT:    v_mov_b32_e32 v6, s10
 ; GCN-NEXT:    v_mov_b32_e32 v7, s11
-; GCN-NEXT:  .LBB12_19: ; %.split.split.split.split
+; GCN-NEXT:  .LBB12_23: ; %.split.split.split.split
 ; GCN-NEXT:    v_mov_b32_e32 v8, 0
 ; GCN-NEXT:    v_mov_b32_e32 v0, s6
 ; GCN-NEXT:    v_mov_b32_e32 v1, s7
@@ -5515,7 +5593,7 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    s_waitcnt vmcnt(2)
 ; TAHITI-NEXT:    v_or_b32_e32 v8, v15, v11
 ; TAHITI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v8
-; TAHITI-NEXT:    s_cbranch_vccz .LBB12_13
+; TAHITI-NEXT:    s_cbranch_vccz .LBB12_2
 ; TAHITI-NEXT:  ; %bb.1:
 ; TAHITI-NEXT:    v_ashrrev_i32_e32 v8, 31, v11
 ; TAHITI-NEXT:    v_add_i32_e32 v9, vcc, v10, v8
@@ -5528,6 +5606,7 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_subb_u32_e32 v20, vcc, 0, v8, vcc
 ; TAHITI-NEXT:    v_madmk_f32 v11, v18, 0x4f800000, v11
 ; TAHITI-NEXT:    v_rcp_f32_e32 v11, v11
+; TAHITI-NEXT:    s_mov_b64 s[6:7], 0
 ; TAHITI-NEXT:    v_mul_f32_e32 v11, 0x5f7ffffc, v11
 ; TAHITI-NEXT:    v_mul_f32_e32 v18, 0x2f800000, v11
 ; TAHITI-NEXT:    v_trunc_f32_e32 v18, v18
@@ -5634,8 +5713,16 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_xor_b32_e32 v11, v8, v19
 ; TAHITI-NEXT:    v_sub_i32_e32 v8, vcc, v9, v19
 ; TAHITI-NEXT:    v_subb_u32_e32 v9, vcc, v11, v19, vcc
-; TAHITI-NEXT:    s_cbranch_execnz .LBB12_3
+; TAHITI-NEXT:    s_branch .LBB12_3
 ; TAHITI-NEXT:  .LBB12_2:
+; TAHITI-NEXT:    s_mov_b64 s[6:7], -1
+; TAHITI-NEXT:    ; implicit-def: $vgpr8_vgpr9
+; TAHITI-NEXT:  .LBB12_3: ; %Flow7
+; TAHITI-NEXT:    s_and_b64 s[0:1], s[6:7], exec
+; TAHITI-NEXT:    s_cselect_b32 s0, 1, 0
+; TAHITI-NEXT:    s_cmp_lg_u32 s0, 1
+; TAHITI-NEXT:    s_cbranch_scc1 .LBB12_5
+; TAHITI-NEXT:  ; %bb.4:
 ; TAHITI-NEXT:    v_cvt_f32_u32_e32 v8, v10
 ; TAHITI-NEXT:    v_sub_i32_e32 v9, vcc, 0, v10
 ; TAHITI-NEXT:    v_rcp_iflag_f32_e32 v8, v8
@@ -5654,11 +5741,11 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_cmp_ge_u32_e32 vcc, v8, v10
 ; TAHITI-NEXT:    v_cndmask_b32_e32 v8, v8, v9, vcc
 ; TAHITI-NEXT:    v_mov_b32_e32 v9, 0
-; TAHITI-NEXT:  .LBB12_3: ; %.split
+; TAHITI-NEXT:  .LBB12_5: ; %.split
 ; TAHITI-NEXT:    v_or_b32_e32 v10, v17, v13
 ; TAHITI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v10
-; TAHITI-NEXT:    s_cbranch_vccz .LBB12_14
-; TAHITI-NEXT:  ; %bb.4:
+; TAHITI-NEXT:    s_cbranch_vccz .LBB12_7
+; TAHITI-NEXT:  ; %bb.6:
 ; TAHITI-NEXT:    v_ashrrev_i32_e32 v10, 31, v13
 ; TAHITI-NEXT:    v_add_i32_e32 v11, vcc, v12, v10
 ; TAHITI-NEXT:    v_addc_u32_e32 v13, vcc, v13, v10, vcc
@@ -5670,6 +5757,7 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_subb_u32_e32 v18, vcc, 0, v10, vcc
 ; TAHITI-NEXT:    v_madmk_f32 v13, v14, 0x4f800000, v13
 ; TAHITI-NEXT:    v_rcp_f32_e32 v13, v13
+; TAHITI-NEXT:    s_mov_b64 s[6:7], 0
 ; TAHITI-NEXT:    v_mul_f32_e32 v13, 0x5f7ffffc, v13
 ; TAHITI-NEXT:    v_mul_f32_e32 v14, 0x2f800000, v13
 ; TAHITI-NEXT:    v_trunc_f32_e32 v14, v14
@@ -5776,8 +5864,15 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_xor_b32_e32 v13, v10, v15
 ; TAHITI-NEXT:    v_sub_i32_e32 v10, vcc, v11, v15
 ; TAHITI-NEXT:    v_subb_u32_e32 v11, vcc, v13, v15, vcc
-; TAHITI-NEXT:    s_cbranch_execnz .LBB12_6
-; TAHITI-NEXT:  .LBB12_5:
+; TAHITI-NEXT:    s_branch .LBB12_8
+; TAHITI-NEXT:  .LBB12_7:
+; TAHITI-NEXT:    s_mov_b64 s[6:7], -1
+; TAHITI-NEXT:  .LBB12_8: ; %Flow6
+; TAHITI-NEXT:    s_and_b64 s[0:1], s[6:7], exec
+; TAHITI-NEXT:    s_cselect_b32 s0, 1, 0
+; TAHITI-NEXT:    s_cmp_lg_u32 s0, 1
+; TAHITI-NEXT:    s_cbranch_scc1 .LBB12_10
+; TAHITI-NEXT:  ; %bb.9:
 ; TAHITI-NEXT:    v_cvt_f32_u32_e32 v10, v12
 ; TAHITI-NEXT:    v_sub_i32_e32 v11, vcc, 0, v12
 ; TAHITI-NEXT:    v_rcp_iflag_f32_e32 v10, v10
@@ -5796,12 +5891,12 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_cmp_ge_u32_e32 vcc, v10, v12
 ; TAHITI-NEXT:    v_cndmask_b32_e32 v10, v10, v11, vcc
 ; TAHITI-NEXT:    v_mov_b32_e32 v11, 0
-; TAHITI-NEXT:  .LBB12_6: ; %.split.split
+; TAHITI-NEXT:  .LBB12_10: ; %.split.split
 ; TAHITI-NEXT:    s_waitcnt vmcnt(0)
 ; TAHITI-NEXT:    v_or_b32_e32 v12, v5, v1
 ; TAHITI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v12
-; TAHITI-NEXT:    s_cbranch_vccz .LBB12_15
-; TAHITI-NEXT:  ; %bb.7:
+; TAHITI-NEXT:    s_cbranch_vccz .LBB12_12
+; TAHITI-NEXT:  ; %bb.11:
 ; TAHITI-NEXT:    v_ashrrev_i32_e32 v13, 31, v1
 ; TAHITI-NEXT:    v_add_i32_e32 v12, vcc, v0, v13
 ; TAHITI-NEXT:    v_addc_u32_e32 v1, vcc, v1, v13, vcc
@@ -5813,6 +5908,7 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_subb_u32_e32 v16, vcc, 0, v1, vcc
 ; TAHITI-NEXT:    v_madmk_f32 v13, v14, 0x4f800000, v13
 ; TAHITI-NEXT:    v_rcp_f32_e32 v13, v13
+; TAHITI-NEXT:    s_mov_b64 s[6:7], 0
 ; TAHITI-NEXT:    v_mul_f32_e32 v13, 0x5f7ffffc, v13
 ; TAHITI-NEXT:    v_mul_f32_e32 v14, 0x2f800000, v13
 ; TAHITI-NEXT:    v_trunc_f32_e32 v14, v14
@@ -5919,8 +6015,16 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_xor_b32_e32 v1, v1, v15
 ; TAHITI-NEXT:    v_sub_i32_e32 v12, vcc, v5, v15
 ; TAHITI-NEXT:    v_subb_u32_e32 v13, vcc, v1, v15, vcc
-; TAHITI-NEXT:    s_cbranch_execnz .LBB12_9
-; TAHITI-NEXT:  .LBB12_8:
+; TAHITI-NEXT:    s_branch .LBB12_13
+; TAHITI-NEXT:  .LBB12_12:
+; TAHITI-NEXT:    s_mov_b64 s[6:7], -1
+; TAHITI-NEXT:    ; implicit-def: $vgpr12_vgpr13
+; TAHITI-NEXT:  .LBB12_13: ; %Flow5
+; TAHITI-NEXT:    s_and_b64 s[0:1], s[6:7], exec
+; TAHITI-NEXT:    s_cselect_b32 s0, 1, 0
+; TAHITI-NEXT:    s_cmp_lg_u32 s0, 1
+; TAHITI-NEXT:    s_cbranch_scc1 .LBB12_15
+; TAHITI-NEXT:  ; %bb.14:
 ; TAHITI-NEXT:    v_cvt_f32_u32_e32 v1, v0
 ; TAHITI-NEXT:    v_sub_i32_e32 v5, vcc, 0, v0
 ; TAHITI-NEXT:    v_mov_b32_e32 v13, 0
@@ -5939,11 +6043,11 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_subrev_i32_e32 v4, vcc, v0, v1
 ; TAHITI-NEXT:    v_cmp_ge_u32_e32 vcc, v1, v0
 ; TAHITI-NEXT:    v_cndmask_b32_e32 v12, v1, v4, vcc
-; TAHITI-NEXT:  .LBB12_9: ; %.split.split.split
+; TAHITI-NEXT:  .LBB12_15: ; %.split.split.split
 ; TAHITI-NEXT:    v_or_b32_e32 v0, v7, v3
 ; TAHITI-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; TAHITI-NEXT:    s_cbranch_vccz .LBB12_16
-; TAHITI-NEXT:  ; %bb.10:
+; TAHITI-NEXT:    s_cbranch_vccz .LBB12_17
+; TAHITI-NEXT:  ; %bb.16:
 ; TAHITI-NEXT:    v_ashrrev_i32_e32 v0, 31, v3
 ; TAHITI-NEXT:    v_add_i32_e32 v1, vcc, v2, v0
 ; TAHITI-NEXT:    v_addc_u32_e32 v3, vcc, v3, v0, vcc
@@ -5955,6 +6059,7 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_subb_u32_e32 v14, vcc, 0, v0, vcc
 ; TAHITI-NEXT:    v_madmk_f32 v3, v4, 0x4f800000, v3
 ; TAHITI-NEXT:    v_rcp_f32_e32 v3, v3
+; TAHITI-NEXT:    s_mov_b64 s[6:7], 0
 ; TAHITI-NEXT:    v_mul_f32_e32 v3, 0x5f7ffffc, v3
 ; TAHITI-NEXT:    v_mul_f32_e32 v4, 0x2f800000, v3
 ; TAHITI-NEXT:    v_trunc_f32_e32 v4, v4
@@ -6061,8 +6166,15 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_xor_b32_e32 v0, v0, v5
 ; TAHITI-NEXT:    v_sub_i32_e32 v14, vcc, v1, v5
 ; TAHITI-NEXT:    v_subb_u32_e32 v15, vcc, v0, v5, vcc
-; TAHITI-NEXT:    s_cbranch_execnz .LBB12_12
-; TAHITI-NEXT:  .LBB12_11:
+; TAHITI-NEXT:    s_branch .LBB12_18
+; TAHITI-NEXT:  .LBB12_17:
+; TAHITI-NEXT:    s_mov_b64 s[6:7], -1
+; TAHITI-NEXT:  .LBB12_18: ; %Flow
+; TAHITI-NEXT:    s_and_b64 s[0:1], s[6:7], exec
+; TAHITI-NEXT:    s_cselect_b32 s0, 1, 0
+; TAHITI-NEXT:    s_cmp_lg_u32 s0, 1
+; TAHITI-NEXT:    s_cbranch_scc1 .LBB12_20
+; TAHITI-NEXT:  ; %bb.19:
 ; TAHITI-NEXT:    v_cvt_f32_u32_e32 v0, v2
 ; TAHITI-NEXT:    v_sub_i32_e32 v1, vcc, 0, v2
 ; TAHITI-NEXT:    v_mov_b32_e32 v15, 0
@@ -6081,22 +6193,12 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TAHITI-NEXT:    v_subrev_i32_e32 v1, vcc, v2, v0
 ; TAHITI-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v2
 ; TAHITI-NEXT:    v_cndmask_b32_e32 v14, v0, v1, vcc
-; TAHITI-NEXT:  .LBB12_12: ; %.split.split.split.split
+; TAHITI-NEXT:  .LBB12_20: ; %.split.split.split.split
 ; TAHITI-NEXT:    s_mov_b32 s7, 0xf000
 ; TAHITI-NEXT:    s_mov_b32 s6, -1
 ; TAHITI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[4:7], 0 offset:16
 ; TAHITI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0
 ; TAHITI-NEXT:    s_endpgm
-; TAHITI-NEXT:  .LBB12_13:
-; TAHITI-NEXT:    ; implicit-def: $vgpr8_vgpr9
-; TAHITI-NEXT:    s_branch .LBB12_2
-; TAHITI-NEXT:  .LBB12_14:
-; TAHITI-NEXT:    s_branch .LBB12_5
-; TAHITI-NEXT:  .LBB12_15:
-; TAHITI-NEXT:    ; implicit-def: $vgpr12_vgpr13
-; TAHITI-NEXT:    s_branch .LBB12_8
-; TAHITI-NEXT:  .LBB12_16:
-; TAHITI-NEXT:    s_branch .LBB12_11
 ;
 ; TONGA-LABEL: srem_v4i64:
 ; TONGA:       ; %bb.0:
@@ -6128,7 +6230,7 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_readfirstlane_b32 s0, v10
 ; TONGA-NEXT:    s_or_b64 s[6:7], s[2:3], s[0:1]
 ; TONGA-NEXT:    s_cmp_lg_u32 s7, 0
-; TONGA-NEXT:    s_cbranch_scc0 .LBB12_3
+; TONGA-NEXT:    s_cbranch_scc0 .LBB12_2
 ; TONGA-NEXT:  ; %bb.1:
 ; TONGA-NEXT:    s_ashr_i32 s6, s1, 31
 ; TONGA-NEXT:    s_add_u32 s8, s0, s6
@@ -6247,9 +6349,18 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    s_cselect_b32 s6, s16, s12
 ; TONGA-NEXT:    s_xor_b64 s[6:7], s[6:7], s[10:11]
 ; TONGA-NEXT:    s_sub_u32 s6, s6, s10
+; TONGA-NEXT:    s_mov_b64 s[8:9], 0
 ; TONGA-NEXT:    s_subb_u32 s7, s7, s10
-; TONGA-NEXT:    s_cbranch_execnz .LBB12_4
+; TONGA-NEXT:    s_branch .LBB12_3
 ; TONGA-NEXT:  .LBB12_2:
+; TONGA-NEXT:    s_mov_b64 s[8:9], -1
+; TONGA-NEXT:    ; implicit-def: $sgpr6_sgpr7
+; TONGA-NEXT:  .LBB12_3: ; %Flow7
+; TONGA-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; TONGA-NEXT:    s_cselect_b32 s1, 1, 0
+; TONGA-NEXT:    s_cmp_lg_u32 s1, 1
+; TONGA-NEXT:    s_cbranch_scc1 .LBB12_5
+; TONGA-NEXT:  ; %bb.4:
 ; TONGA-NEXT:    v_cvt_f32_u32_e32 v8, s0
 ; TONGA-NEXT:    s_sub_i32 s1, 0, s0
 ; TONGA-NEXT:    v_rcp_iflag_f32_e32 v8, v8
@@ -6268,18 +6379,15 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_cmp_le_u32_e32 vcc, s0, v8
 ; TONGA-NEXT:    v_cndmask_b32_e32 v8, v8, v9, vcc
 ; TONGA-NEXT:    v_mov_b32_e32 v9, 0
-; TONGA-NEXT:    s_branch .LBB12_5
-; TONGA-NEXT:  .LBB12_3:
-; TONGA-NEXT:    ; implicit-def: $sgpr6_sgpr7
-; TONGA-NEXT:    s_branch .LBB12_2
-; TONGA-NEXT:  .LBB12_4:
+; TONGA-NEXT:    s_branch .LBB12_6
+; TONGA-NEXT:  .LBB12_5:
 ; TONGA-NEXT:    v_mov_b32_e32 v9, s7
 ; TONGA-NEXT:    v_mov_b32_e32 v8, s6
-; TONGA-NEXT:  .LBB12_5: ; %.split
+; TONGA-NEXT:  .LBB12_6: ; %.split
 ; TONGA-NEXT:    v_or_b32_e32 v10, v17, v13
 ; TONGA-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v10
-; TONGA-NEXT:    s_cbranch_vccz .LBB12_15
-; TONGA-NEXT:  ; %bb.6:
+; TONGA-NEXT:    s_cbranch_vccz .LBB12_8
+; TONGA-NEXT:  ; %bb.7:
 ; TONGA-NEXT:    v_ashrrev_i32_e32 v10, 31, v13
 ; TONGA-NEXT:    v_add_u32_e32 v11, vcc, v12, v10
 ; TONGA-NEXT:    v_addc_u32_e32 v13, vcc, v13, v10, vcc
@@ -6291,6 +6399,7 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_subb_u32_e32 v23, vcc, 0, v10, vcc
 ; TONGA-NEXT:    v_madmk_f32 v13, v14, 0x4f800000, v13
 ; TONGA-NEXT:    v_rcp_f32_e32 v13, v13
+; TONGA-NEXT:    s_mov_b64 s[6:7], 0
 ; TONGA-NEXT:    v_mul_f32_e32 v13, 0x5f7ffffc, v13
 ; TONGA-NEXT:    v_mul_f32_e32 v14, 0x2f800000, v13
 ; TONGA-NEXT:    v_trunc_f32_e32 v14, v14
@@ -6385,8 +6494,15 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_xor_b32_e32 v13, v10, v20
 ; TONGA-NEXT:    v_sub_u32_e32 v10, vcc, v11, v20
 ; TONGA-NEXT:    v_subb_u32_e32 v11, vcc, v13, v20, vcc
-; TONGA-NEXT:    s_cbranch_execnz .LBB12_8
-; TONGA-NEXT:  .LBB12_7:
+; TONGA-NEXT:    s_branch .LBB12_9
+; TONGA-NEXT:  .LBB12_8:
+; TONGA-NEXT:    s_mov_b64 s[6:7], -1
+; TONGA-NEXT:  .LBB12_9: ; %Flow6
+; TONGA-NEXT:    s_and_b64 s[0:1], s[6:7], exec
+; TONGA-NEXT:    s_cselect_b32 s0, 1, 0
+; TONGA-NEXT:    s_cmp_lg_u32 s0, 1
+; TONGA-NEXT:    s_cbranch_scc1 .LBB12_11
+; TONGA-NEXT:  ; %bb.10:
 ; TONGA-NEXT:    v_cvt_f32_u32_e32 v10, v12
 ; TONGA-NEXT:    v_sub_u32_e32 v11, vcc, 0, v12
 ; TONGA-NEXT:    v_rcp_iflag_f32_e32 v10, v10
@@ -6405,12 +6521,12 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_cmp_ge_u32_e32 vcc, v10, v12
 ; TONGA-NEXT:    v_cndmask_b32_e32 v10, v10, v11, vcc
 ; TONGA-NEXT:    v_mov_b32_e32 v11, 0
-; TONGA-NEXT:  .LBB12_8: ; %.split.split
+; TONGA-NEXT:  .LBB12_11: ; %.split.split
 ; TONGA-NEXT:    s_waitcnt vmcnt(0)
 ; TONGA-NEXT:    v_or_b32_e32 v12, v5, v1
 ; TONGA-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v12
-; TONGA-NEXT:    s_cbranch_vccz .LBB12_16
-; TONGA-NEXT:  ; %bb.9:
+; TONGA-NEXT:    s_cbranch_vccz .LBB12_13
+; TONGA-NEXT:  ; %bb.12:
 ; TONGA-NEXT:    v_ashrrev_i32_e32 v12, 31, v1
 ; TONGA-NEXT:    v_add_u32_e32 v13, vcc, v0, v12
 ; TONGA-NEXT:    v_addc_u32_e32 v1, vcc, v1, v12, vcc
@@ -6422,6 +6538,7 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_subb_u32_e32 v21, vcc, 0, v1, vcc
 ; TONGA-NEXT:    v_madmk_f32 v12, v13, 0x4f800000, v12
 ; TONGA-NEXT:    v_rcp_f32_e32 v12, v12
+; TONGA-NEXT:    s_mov_b64 s[6:7], 0
 ; TONGA-NEXT:    v_mul_f32_e32 v12, 0x5f7ffffc, v12
 ; TONGA-NEXT:    v_mul_f32_e32 v13, 0x2f800000, v12
 ; TONGA-NEXT:    v_trunc_f32_e32 v13, v13
@@ -6516,8 +6633,16 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_xor_b32_e32 v1, v1, v18
 ; TONGA-NEXT:    v_sub_u32_e32 v12, vcc, v5, v18
 ; TONGA-NEXT:    v_subb_u32_e32 v13, vcc, v1, v18, vcc
-; TONGA-NEXT:    s_cbranch_execnz .LBB12_11
-; TONGA-NEXT:  .LBB12_10:
+; TONGA-NEXT:    s_branch .LBB12_14
+; TONGA-NEXT:  .LBB12_13:
+; TONGA-NEXT:    s_mov_b64 s[6:7], -1
+; TONGA-NEXT:    ; implicit-def: $vgpr12_vgpr13
+; TONGA-NEXT:  .LBB12_14: ; %Flow5
+; TONGA-NEXT:    s_and_b64 s[0:1], s[6:7], exec
+; TONGA-NEXT:    s_cselect_b32 s0, 1, 0
+; TONGA-NEXT:    s_cmp_lg_u32 s0, 1
+; TONGA-NEXT:    s_cbranch_scc1 .LBB12_16
+; TONGA-NEXT:  ; %bb.15:
 ; TONGA-NEXT:    v_cvt_f32_u32_e32 v1, v0
 ; TONGA-NEXT:    v_sub_u32_e32 v5, vcc, 0, v0
 ; TONGA-NEXT:    v_mov_b32_e32 v13, 0
@@ -6536,11 +6661,11 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_subrev_u32_e32 v4, vcc, v0, v1
 ; TONGA-NEXT:    v_cmp_ge_u32_e32 vcc, v1, v0
 ; TONGA-NEXT:    v_cndmask_b32_e32 v12, v1, v4, vcc
-; TONGA-NEXT:  .LBB12_11: ; %.split.split.split
+; TONGA-NEXT:  .LBB12_16: ; %.split.split.split
 ; TONGA-NEXT:    v_or_b32_e32 v0, v7, v3
 ; TONGA-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0
-; TONGA-NEXT:    s_cbranch_vccz .LBB12_17
-; TONGA-NEXT:  ; %bb.12:
+; TONGA-NEXT:    s_cbranch_vccz .LBB12_18
+; TONGA-NEXT:  ; %bb.17:
 ; TONGA-NEXT:    v_ashrrev_i32_e32 v0, 31, v3
 ; TONGA-NEXT:    v_add_u32_e32 v1, vcc, v2, v0
 ; TONGA-NEXT:    v_addc_u32_e32 v3, vcc, v3, v0, vcc
@@ -6552,6 +6677,7 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_subb_u32_e32 v18, vcc, 0, v14, vcc
 ; TONGA-NEXT:    v_madmk_f32 v0, v1, 0x4f800000, v0
 ; TONGA-NEXT:    v_rcp_f32_e32 v0, v0
+; TONGA-NEXT:    s_mov_b64 s[6:7], 0
 ; TONGA-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v0
 ; TONGA-NEXT:    v_mul_f32_e32 v1, 0x2f800000, v0
 ; TONGA-NEXT:    v_trunc_f32_e32 v1, v1
@@ -6646,8 +6772,15 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_xor_b32_e32 v1, v1, v16
 ; TONGA-NEXT:    v_sub_u32_e32 v14, vcc, v0, v16
 ; TONGA-NEXT:    v_subb_u32_e32 v15, vcc, v1, v16, vcc
-; TONGA-NEXT:    s_cbranch_execnz .LBB12_14
-; TONGA-NEXT:  .LBB12_13:
+; TONGA-NEXT:    s_branch .LBB12_19
+; TONGA-NEXT:  .LBB12_18:
+; TONGA-NEXT:    s_mov_b64 s[6:7], -1
+; TONGA-NEXT:  .LBB12_19: ; %Flow
+; TONGA-NEXT:    s_and_b64 s[0:1], s[6:7], exec
+; TONGA-NEXT:    s_cselect_b32 s0, 1, 0
+; TONGA-NEXT:    s_cmp_lg_u32 s0, 1
+; TONGA-NEXT:    s_cbranch_scc1 .LBB12_21
+; TONGA-NEXT:  ; %bb.20:
 ; TONGA-NEXT:    v_cvt_f32_u32_e32 v0, v2
 ; TONGA-NEXT:    v_sub_u32_e32 v1, vcc, 0, v2
 ; TONGA-NEXT:    v_mov_b32_e32 v15, 0
@@ -6666,7 +6799,7 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_subrev_u32_e32 v1, vcc, v2, v0
 ; TONGA-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v2
 ; TONGA-NEXT:    v_cndmask_b32_e32 v14, v0, v1, vcc
-; TONGA-NEXT:  .LBB12_14: ; %.split.split.split.split
+; TONGA-NEXT:  .LBB12_21: ; %.split.split.split.split
 ; TONGA-NEXT:    v_mov_b32_e32 v0, s4
 ; TONGA-NEXT:    v_mov_b32_e32 v1, s5
 ; TONGA-NEXT:    s_add_u32 s0, s4, 16
@@ -6676,13 +6809,6 @@ define amdgpu_kernel void @srem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %i
 ; TONGA-NEXT:    v_mov_b32_e32 v1, s1
 ; TONGA-NEXT:    flat_store_dwordx4 v[0:1], v[12:15]
 ; TONGA-NEXT:    s_endpgm
-; TONGA-NEXT:  .LBB12_15:
-; TONGA-NEXT:    s_branch .LBB12_7
-; TONGA-NEXT:  .LBB12_16:
-; TONGA-NEXT:    ; implicit-def: $vgpr12_vgpr13
-; TONGA-NEXT:    s_branch .LBB12_10
-; TONGA-NEXT:  .LBB12_17:
-; TONGA-NEXT:    s_branch .LBB12_13
 ;
 ; EG-LABEL: srem_v4i64:
 ; EG:       ; %bb.0:

diff  --git a/llvm/test/CodeGen/AMDGPU/srem64.ll b/llvm/test/CodeGen/AMDGPU/srem64.ll
index c7b2f0d31e0d1..e2f7534ce838a 100644
--- a/llvm/test/CodeGen/AMDGPU/srem64.ll
+++ b/llvm/test/CodeGen/AMDGPU/srem64.ll
@@ -152,7 +152,6 @@ define amdgpu_kernel void @s_test_srem(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GCN-IR-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0xd
 ; GCN-IR-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9
 ; GCN-IR-NEXT:    s_mov_b64 s[4:5], 0
-; GCN-IR-NEXT:    s_mov_b32 s11, 0
 ; GCN-IR-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-IR-NEXT:    v_cmp_eq_u64_e64 s[8:9], s[6:7], 0
 ; GCN-IR-NEXT:    v_cmp_eq_u64_e64 s[12:13], s[2:3], 0
@@ -168,16 +167,21 @@ define amdgpu_kernel void @s_test_srem(ptr addrspace(1) %out, i64 %x, i64 %y) {
 ; GCN-IR-NEXT:    s_cselect_b32 s9, 0, s3
 ; GCN-IR-NEXT:    s_cselect_b32 s8, 0, s2
 ; GCN-IR-NEXT:    s_or_b64 s[14:15], s[14:15], s[18:19]
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[14:15]
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB0_5
+; GCN-IR-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; GCN-IR-NEXT:    s_cselect_b32 s11, 1, 0
+; GCN-IR-NEXT:    s_cmp_lg_u32 s11, 1
+; GCN-IR-NEXT:    s_mov_b32 s11, 0
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB0_5
 ; GCN-IR-NEXT:  ; %bb.1: ; %udiv-bb1
 ; GCN-IR-NEXT:    s_add_u32 s14, s12, 1
 ; GCN-IR-NEXT:    s_addc_u32 s8, s13, 0
 ; GCN-IR-NEXT:    s_cselect_b64 s[8:9], -1, 0
-; GCN-IR-NEXT:    s_sub_i32 s12, 63, s12
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
-; GCN-IR-NEXT:    s_lshl_b64 s[8:9], s[2:3], s12
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB0_4
+; GCN-IR-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GCN-IR-NEXT:    s_cselect_b32 s13, 1, 0
+; GCN-IR-NEXT:    s_sub_i32 s8, 63, s12
+; GCN-IR-NEXT:    s_lshl_b64 s[8:9], s[2:3], s8
+; GCN-IR-NEXT:    s_cmp_lg_u32 s13, 1
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB0_4
 ; GCN-IR-NEXT:  ; %bb.2: ; %udiv-preheader
 ; GCN-IR-NEXT:    s_lshr_b64 s[12:13], s[2:3], s14
 ; GCN-IR-NEXT:    s_add_u32 s14, s6, -1
@@ -1033,7 +1037,6 @@ define amdgpu_kernel void @s_test_srem32_64(ptr addrspace(1) %out, i64 %x, i64 %
 ; GCN-IR:       ; %bb.0: ; %_udiv-special-cases
 ; GCN-IR-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9
 ; GCN-IR-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd
-; GCN-IR-NEXT:    s_mov_b32 s13, 0
 ; GCN-IR-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-IR-NEXT:    s_ashr_i32 s7, s3, 31
 ; GCN-IR-NEXT:    s_mov_b32 s6, s3
@@ -1063,17 +1066,22 @@ define amdgpu_kernel void @s_test_srem32_64(ptr addrspace(1) %out, i64 %x, i64 %
 ; GCN-IR-NEXT:    s_cselect_b32 s11, 0, s7
 ; GCN-IR-NEXT:    s_cselect_b32 s10, 0, s6
 ; GCN-IR-NEXT:    s_or_b64 s[16:17], s[16:17], s[20:21]
+; GCN-IR-NEXT:    s_and_b64 s[16:17], s[16:17], exec
+; GCN-IR-NEXT:    s_cselect_b32 s13, 1, 0
 ; GCN-IR-NEXT:    s_mov_b64 s[2:3], 0
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[16:17]
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB7_5
+; GCN-IR-NEXT:    s_cmp_lg_u32 s13, 1
+; GCN-IR-NEXT:    s_mov_b32 s13, 0
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB7_5
 ; GCN-IR-NEXT:  ; %bb.1: ; %udiv-bb1
 ; GCN-IR-NEXT:    s_add_u32 s16, s14, 1
 ; GCN-IR-NEXT:    s_addc_u32 s10, s15, 0
 ; GCN-IR-NEXT:    s_cselect_b64 s[10:11], -1, 0
-; GCN-IR-NEXT:    s_sub_i32 s14, 63, s14
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[10:11]
-; GCN-IR-NEXT:    s_lshl_b64 s[10:11], s[6:7], s14
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB7_4
+; GCN-IR-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; GCN-IR-NEXT:    s_cselect_b32 s15, 1, 0
+; GCN-IR-NEXT:    s_sub_i32 s10, 63, s14
+; GCN-IR-NEXT:    s_lshl_b64 s[10:11], s[6:7], s10
+; GCN-IR-NEXT:    s_cmp_lg_u32 s15, 1
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB7_4
 ; GCN-IR-NEXT:  ; %bb.2: ; %udiv-preheader
 ; GCN-IR-NEXT:    s_lshr_b64 s[14:15], s[6:7], s16
 ; GCN-IR-NEXT:    s_add_u32 s16, s8, -1
@@ -1297,7 +1305,6 @@ define amdgpu_kernel void @s_test_srem33_64(ptr addrspace(1) %out, i64 %x, i64 %
 ; GCN-IR:       ; %bb.0: ; %_udiv-special-cases
 ; GCN-IR-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9
 ; GCN-IR-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd
-; GCN-IR-NEXT:    s_mov_b32 s13, 0
 ; GCN-IR-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-IR-NEXT:    s_ashr_i64 s[2:3], s[2:3], 31
 ; GCN-IR-NEXT:    s_ashr_i64 s[8:9], s[4:5], 31
@@ -1325,17 +1332,22 @@ define amdgpu_kernel void @s_test_srem33_64(ptr addrspace(1) %out, i64 %x, i64 %
 ; GCN-IR-NEXT:    s_cselect_b32 s11, 0, s7
 ; GCN-IR-NEXT:    s_cselect_b32 s10, 0, s6
 ; GCN-IR-NEXT:    s_or_b64 s[16:17], s[16:17], s[20:21]
+; GCN-IR-NEXT:    s_and_b64 s[16:17], s[16:17], exec
+; GCN-IR-NEXT:    s_cselect_b32 s13, 1, 0
 ; GCN-IR-NEXT:    s_mov_b64 s[2:3], 0
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[16:17]
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB8_5
+; GCN-IR-NEXT:    s_cmp_lg_u32 s13, 1
+; GCN-IR-NEXT:    s_mov_b32 s13, 0
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB8_5
 ; GCN-IR-NEXT:  ; %bb.1: ; %udiv-bb1
 ; GCN-IR-NEXT:    s_add_u32 s16, s14, 1
 ; GCN-IR-NEXT:    s_addc_u32 s10, s15, 0
 ; GCN-IR-NEXT:    s_cselect_b64 s[10:11], -1, 0
-; GCN-IR-NEXT:    s_sub_i32 s14, 63, s14
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[10:11]
-; GCN-IR-NEXT:    s_lshl_b64 s[10:11], s[6:7], s14
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB8_4
+; GCN-IR-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; GCN-IR-NEXT:    s_cselect_b32 s15, 1, 0
+; GCN-IR-NEXT:    s_sub_i32 s10, 63, s14
+; GCN-IR-NEXT:    s_lshl_b64 s[10:11], s[6:7], s10
+; GCN-IR-NEXT:    s_cmp_lg_u32 s15, 1
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB8_4
 ; GCN-IR-NEXT:  ; %bb.2: ; %udiv-preheader
 ; GCN-IR-NEXT:    s_lshr_b64 s[14:15], s[6:7], s16
 ; GCN-IR-NEXT:    s_add_u32 s16, s8, -1
@@ -1645,17 +1657,21 @@ define amdgpu_kernel void @s_test_srem_k_num_i64(ptr addrspace(1) %out, i64 %x)
 ; GCN-IR-NEXT:    s_and_b64 s[8:9], s[10:11], exec
 ; GCN-IR-NEXT:    s_cselect_b32 s8, 0, 24
 ; GCN-IR-NEXT:    s_or_b64 s[10:11], s[10:11], s[12:13]
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[10:11]
+; GCN-IR-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; GCN-IR-NEXT:    s_cselect_b32 s9, 1, 0
+; GCN-IR-NEXT:    s_cmp_lg_u32 s9, 1
 ; GCN-IR-NEXT:    s_mov_b32 s9, 0
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB10_5
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB10_5
 ; GCN-IR-NEXT:  ; %bb.1: ; %udiv-bb1
 ; GCN-IR-NEXT:    s_add_u32 s8, s2, 1
 ; GCN-IR-NEXT:    s_addc_u32 s3, s3, 0
 ; GCN-IR-NEXT:    s_cselect_b64 s[10:11], -1, 0
+; GCN-IR-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; GCN-IR-NEXT:    s_cselect_b32 s9, 1, 0
 ; GCN-IR-NEXT:    s_sub_i32 s2, 63, s2
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[10:11]
 ; GCN-IR-NEXT:    s_lshl_b64 s[2:3], 24, s2
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB10_4
+; GCN-IR-NEXT:    s_cmp_lg_u32 s9, 1
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB10_4
 ; GCN-IR-NEXT:  ; %bb.2: ; %udiv-preheader
 ; GCN-IR-NEXT:    s_lshr_b64 s[10:11], 24, s8
 ; GCN-IR-NEXT:    s_add_u32 s12, s4, -1

diff  --git a/llvm/test/CodeGen/AMDGPU/ssubo.ll b/llvm/test/CodeGen/AMDGPU/ssubo.ll
index 1891857cd7a0c..ccb21c960e3f3 100644
--- a/llvm/test/CodeGen/AMDGPU/ssubo.ll
+++ b/llvm/test/CodeGen/AMDGPU/ssubo.ll
@@ -27,10 +27,12 @@ define amdgpu_kernel void @ssubo_i64_zext(ptr addrspace(1) %out, i64 %a, i64 %b)
 ; SI-NEXT:    s_mov_b32 s5, s1
 ; SI-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; SI-NEXT:    s_xor_b64 s[0:1], vcc, s[0:1]
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; SI-NEXT:    v_mov_b32_e32 v1, s3
-; SI-NEXT:    v_add_i32_e32 v0, vcc, s2, v0
-; SI-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b64 s[0:1], 1, 0
+; SI-NEXT:    s_add_u32 s0, s2, s0
+; SI-NEXT:    s_addc_u32 s1, s3, s1
+; SI-NEXT:    v_mov_b32_e32 v0, s0
+; SI-NEXT:    v_mov_b32_e32 v1, s1
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -49,10 +51,12 @@ define amdgpu_kernel void @ssubo_i64_zext(ptr addrspace(1) %out, i64 %a, i64 %b)
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
 ; VI-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; VI-NEXT:    s_xor_b64 s[0:1], vcc, s[0:1]
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[0:1]
-; VI-NEXT:    v_mov_b32_e32 v3, s2
-; VI-NEXT:    v_add_u32_e32 v2, vcc, s4, v2
-; VI-NEXT:    v_addc_u32_e32 v3, vcc, 0, v3, vcc
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b64 s[0:1], 1, 0
+; VI-NEXT:    s_add_u32 s0, s4, s0
+; VI-NEXT:    s_addc_u32 s1, s2, s1
+; VI-NEXT:    v_mov_b32_e32 v3, s1
+; VI-NEXT:    v_mov_b32_e32 v2, s0
 ; VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
 ; VI-NEXT:    s_endpgm
 ;
@@ -70,10 +74,12 @@ define amdgpu_kernel void @ssubo_i64_zext(ptr addrspace(1) %out, i64 %a, i64 %b)
 ; GFX9-NEXT:    s_cmp_lt_i32 s5, 0
 ; GFX9-NEXT:    s_cselect_b64 s[2:3], -1, 0
 ; GFX9-NEXT:    s_xor_b64 s[2:3], vcc, s[2:3]
-; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[2:3]
-; GFX9-NEXT:    v_mov_b32_e32 v1, s5
-; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, s4, v0
-; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b64 s[2:3], 1, 0
+; GFX9-NEXT:    s_add_u32 s2, s4, s2
+; GFX9-NEXT:    s_addc_u32 s3, s5, s3
+; GFX9-NEXT:    v_mov_b32_e32 v0, s2
+; GFX9-NEXT:    v_mov_b32_e32 v1, s3
 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
 ; GFX9-NEXT:    s_endpgm
 ;
@@ -84,15 +90,18 @@ define amdgpu_kernel void @ssubo_i64_zext(ptr addrspace(1) %out, i64 %a, i64 %b)
 ; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GFX10-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX10-NEXT:    s_sub_u32 s5, s2, s6
 ; GFX10-NEXT:    v_cmp_lt_i64_e64 s4, s[2:3], s[6:7]
-; GFX10-NEXT:    s_sub_u32 s2, s2, s6
-; GFX10-NEXT:    s_subb_u32 s3, s3, s7
-; GFX10-NEXT:    s_cmp_lt_i32 s3, 0
-; GFX10-NEXT:    s_cselect_b32 s5, -1, 0
-; GFX10-NEXT:    s_xor_b32 s4, s4, s5
-; GFX10-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4
-; GFX10-NEXT:    v_add_co_u32 v0, s2, s2, v0
-; GFX10-NEXT:    v_add_co_ci_u32_e64 v1, s2, s3, 0, s2
+; GFX10-NEXT:    s_subb_u32 s6, s3, s7
+; GFX10-NEXT:    s_cmp_lt_i32 s6, 0
+; GFX10-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX10-NEXT:    s_xor_b32 s2, s4, s2
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b64 s[2:3], 1, 0
+; GFX10-NEXT:    s_add_u32 s2, s5, s2
+; GFX10-NEXT:    s_addc_u32 s3, s6, s3
+; GFX10-NEXT:    v_mov_b32_e32 v0, s2
+; GFX10-NEXT:    v_mov_b32_e32 v1, s3
 ; GFX10-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
 ; GFX10-NEXT:    s_endpgm
 ;
@@ -101,20 +110,21 @@ define amdgpu_kernel void @ssubo_i64_zext(ptr addrspace(1) %out, i64 %a, i64 %b)
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
 ; GFX11-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
-; GFX11-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_cmp_lt_i64_e64 s6, s[2:3], s[4:5]
-; GFX11-NEXT:    s_sub_u32 s2, s2, s4
-; GFX11-NEXT:    s_subb_u32 s3, s3, s5
+; GFX11-NEXT:    s_sub_u32 s4, s2, s4
+; GFX11-NEXT:    s_subb_u32 s5, s3, s5
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    s_cmp_lt_i32 s3, 0
-; GFX11-NEXT:    s_cselect_b32 s4, -1, 0
-; GFX11-NEXT:    s_xor_b32 s4, s6, s4
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4
-; GFX11-NEXT:    v_add_co_u32 v0, s2, s2, v0
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, s3, 0, s2
+; GFX11-NEXT:    s_cmp_lt_i32 s5, 0
+; GFX11-NEXT:    s_cselect_b32 s2, -1, 0
+; GFX11-NEXT:    s_xor_b32 s2, s6, s2
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b64 s[2:3], 1, 0
+; GFX11-NEXT:    s_add_u32 s2, s4, s2
+; GFX11-NEXT:    s_addc_u32 s3, s5, s3
+; GFX11-NEXT:    v_mov_b32_e32 v0, s2
+; GFX11-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, s3
 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %ssub = call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %a, i64 %b) nounwind
@@ -139,17 +149,19 @@ define amdgpu_kernel void @s_ssubo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    s_cmp_lt_i32 s8, s9
 ; SI-NEXT:    s_cselect_b64 s[8:9], -1, 0
 ; SI-NEXT:    s_cmp_lt_i32 s12, 0
-; SI-NEXT:    s_mov_b32 s5, s1
 ; SI-NEXT:    s_cselect_b64 s[10:11], -1, 0
+; SI-NEXT:    s_mov_b32 s5, s1
+; SI-NEXT:    s_xor_b64 s[8:9], s[8:9], s[10:11]
 ; SI-NEXT:    v_mov_b32_e32 v0, s12
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
-; SI-NEXT:    s_xor_b64 s[4:5], s[8:9], s[10:11]
+; SI-NEXT:    s_and_b64 s[4:5], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
 ; SI-NEXT:    s_mov_b32 s0, s2
 ; SI-NEXT:    s_mov_b32 s1, s3
 ; SI-NEXT:    s_mov_b32 s2, s6
 ; SI-NEXT:    s_mov_b32 s3, s7
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -167,10 +179,12 @@ define amdgpu_kernel void @s_ssubo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    v_mov_b32_e32 v3, s3
 ; VI-NEXT:    s_cselect_b64 s[2:3], -1, 0
-; VI-NEXT:    v_mov_b32_e32 v4, s6
 ; VI-NEXT:    s_xor_b64 s[0:1], s[0:1], s[2:3]
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    v_mov_b32_e32 v4, s6
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dword v[0:1], v4
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
@@ -256,7 +270,9 @@ define amdgpu_kernel void @v_ssubo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    v_cmp_lt_i32_e32 vcc, v0, v1
 ; SI-NEXT:    v_cmp_gt_i32_e64 s[0:1], 0, v2
 ; SI-NEXT:    s_xor_b64 s[0:1], vcc, s[0:1]
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_dword v2, off, s[8:11], 0
 ; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
@@ -280,8 +296,10 @@ define amdgpu_kernel void @v_ssubo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, v4, v5
 ; VI-NEXT:    v_cmp_gt_i32_e64 s[0:1], 0, v6
 ; VI-NEXT:    s_xor_b64 s[0:1], vcc, s[0:1]
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dword v[0:1], v6
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
@@ -360,18 +378,20 @@ define amdgpu_kernel void @s_ssubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    s_subb_u32 s5, s5, s7
 ; SI-NEXT:    s_cmp_lt_i32 s5, 0
 ; SI-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; SI-NEXT:    s_xor_b64 s[6:7], vcc, s[6:7]
 ; SI-NEXT:    v_mov_b32_e32 v0, s4
+; SI-NEXT:    v_mov_b32_e32 v1, s5
+; SI-NEXT:    s_and_b64 s[4:5], s[6:7], exec
 ; SI-NEXT:    s_mov_b32 s8, s0
 ; SI-NEXT:    s_mov_b32 s9, s1
-; SI-NEXT:    v_mov_b32_e32 v1, s5
-; SI-NEXT:    s_xor_b64 s[4:5], vcc, s[6:7]
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
 ; SI-NEXT:    s_mov_b32 s0, s2
 ; SI-NEXT:    s_mov_b32 s1, s3
 ; SI-NEXT:    s_mov_b32 s2, s10
 ; SI-NEXT:    s_mov_b32 s3, s11
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 0
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -390,11 +410,13 @@ define amdgpu_kernel void @s_ssubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    v_mov_b32_e32 v3, s3
 ; VI-NEXT:    s_cselect_b64 s[2:3], -1, 0
+; VI-NEXT:    s_xor_b64 s[2:3], vcc, s[2:3]
 ; VI-NEXT:    v_mov_b32_e32 v5, s1
 ; VI-NEXT:    v_mov_b32_e32 v4, s0
-; VI-NEXT:    s_xor_b64 s[0:1], vcc, s[2:3]
+; VI-NEXT:    s_and_b64 s[0:1], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dwordx2 v[0:1], v[4:5]
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
@@ -413,8 +435,10 @@ define amdgpu_kernel void @s_ssubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
 ; GFX9-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; GFX9-NEXT:    s_xor_b64 s[0:1], vcc, s[0:1]
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]
-; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; GFX9-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX9-NEXT:    global_store_byte v2, v0, s[10:11]
 ; GFX9-NEXT:    s_endpgm
 ;
@@ -430,8 +454,10 @@ define amdgpu_kernel void @s_ssubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX10-NEXT:    s_cmp_lt_i32 s1, 0
 ; GFX10-NEXT:    v_mov_b32_e32 v1, s1
 ; GFX10-NEXT:    s_cselect_b32 s3, -1, 0
-; GFX10-NEXT:    s_xor_b32 s0, s2, s3
-; GFX10-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s0
+; GFX10-NEXT:    s_xor_b32 s2, s2, s3
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v3, s2
 ; GFX10-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]
 ; GFX10-NEXT:    global_store_byte v2, v3, s[10:11]
 ; GFX10-NEXT:    s_endpgm
@@ -443,13 +469,16 @@ define amdgpu_kernel void @s_ssubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX11-NEXT:    v_cmp_lt_i64_e64 s8, s[4:5], s[6:7]
 ; GFX11-NEXT:    s_sub_u32 s4, s4, s6
 ; GFX11-NEXT:    s_subb_u32 s5, s5, s7
-; GFX11-NEXT:    v_mov_b32_e32 v0, s4
+; GFX11-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX11-NEXT:    s_cmp_lt_i32 s5, 0
-; GFX11-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, s5
 ; GFX11-NEXT:    s_cselect_b32 s6, -1, 0
 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    s_xor_b32 s4, s8, s6
-; GFX11-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4
+; GFX11-NEXT:    s_xor_b32 s6, s8, s6
+; GFX11-NEXT:    s_and_b32 s6, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v3, s6
+; GFX11-NEXT:    v_mov_b32_e32 v1, s5
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
 ; GFX11-NEXT:    global_store_b8 v2, v3, s[2:3]
@@ -489,9 +518,11 @@ define amdgpu_kernel void @v_ssubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    v_subb_u32_e64 v1, s[0:1], v1, v3, s[0:1]
 ; SI-NEXT:    v_cmp_gt_i32_e64 s[0:1], 0, v1
 ; SI-NEXT:    s_xor_b64 s[0:1], vcc, s[0:1]
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 0
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -515,8 +546,10 @@ define amdgpu_kernel void @v_ssubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI-NEXT:    v_subb_u32_e64 v1, s[0:1], v1, v3, s[0:1]
 ; VI-NEXT:    v_cmp_gt_i32_e64 s[0:1], 0, v1
 ; VI-NEXT:    s_xor_b64 s[0:1], vcc, s[0:1]
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dwordx2 v[4:5], v[0:1]
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_byte v[6:7], v0
 ; VI-NEXT:    s_endpgm
 ;
@@ -533,8 +566,10 @@ define amdgpu_kernel void @v_ssubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX9-NEXT:    v_subb_co_u32_e64 v1, s[0:1], v1, v3, s[0:1]
 ; GFX9-NEXT:    v_cmp_gt_i32_e64 s[0:1], 0, v1
 ; GFX9-NEXT:    s_xor_b64 s[0:1], vcc, s[0:1]
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dwordx2 v4, v[0:1], s[8:9]
-; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; GFX9-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX9-NEXT:    global_store_byte v4, v0, s[10:11]
 ; GFX9-NEXT:    s_endpgm
 ;
@@ -552,7 +587,9 @@ define amdgpu_kernel void @v_ssubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX10-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]
 ; GFX10-NEXT:    v_cmp_gt_i32_e64 s0, 0, v5
 ; GFX10-NEXT:    s_xor_b32 s0, vcc_lo, s0
-; GFX10-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
+; GFX10-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX10-NEXT:    global_store_dwordx2 v6, v[4:5], s[8:9]
 ; GFX10-NEXT:    global_store_byte v6, v0, s[10:11]
 ; GFX10-NEXT:    s_endpgm
@@ -572,8 +609,10 @@ define amdgpu_kernel void @v_ssubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX11-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]
 ; GFX11-NEXT:    v_cmp_gt_i32_e64 s0, 0, v5
 ; GFX11-NEXT:    s_xor_b32 s0, vcc_lo, s0
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b64 v6, v[4:5], s[4:5]
 ; GFX11-NEXT:    global_store_b8 v6, v0, s[6:7]
@@ -616,10 +655,14 @@ define amdgpu_kernel void @v_ssubo_v2i32(ptr addrspace(1) %out, ptr addrspace(1)
 ; SI-NEXT:    v_cmp_lt_i32_e32 vcc, v1, v3
 ; SI-NEXT:    v_cmp_gt_i32_e64 s[2:3], 0, v4
 ; SI-NEXT:    v_cmp_gt_i32_e64 s[4:5], 0, v5
-; SI-NEXT:    s_xor_b64 s[4:5], vcc, s[4:5]
 ; SI-NEXT:    s_xor_b64 s[0:1], s[0:1], s[2:3]
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; SI-NEXT:    s_xor_b64 s[2:3], vcc, s[4:5]
+; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
+; SI-NEXT:    v_mov_b32_e32 v1, s2
 ; SI-NEXT:    buffer_store_dwordx2 v[4:5], off, s[8:11], 0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[12:15], 0
 ; SI-NEXT:    s_endpgm
@@ -645,10 +688,14 @@ define amdgpu_kernel void @v_ssubo_v2i32(ptr addrspace(1) %out, ptr addrspace(1)
 ; VI-NEXT:    v_cmp_lt_i32_e32 vcc, v1, v3
 ; VI-NEXT:    v_cmp_gt_i32_e64 s[2:3], 0, v8
 ; VI-NEXT:    v_cmp_gt_i32_e64 s[4:5], 0, v9
-; VI-NEXT:    s_xor_b64 s[4:5], vcc, s[4:5]
 ; VI-NEXT:    s_xor_b64 s[0:1], s[0:1], s[2:3]
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    s_xor_b64 s[2:3], vcc, s[4:5]
+; VI-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
+; VI-NEXT:    v_mov_b32_e32 v1, s2
 ; VI-NEXT:    flat_store_dwordx2 v[4:5], v[8:9]
 ; VI-NEXT:    flat_store_dwordx2 v[6:7], v[0:1]
 ; VI-NEXT:    s_endpgm

diff  --git a/llvm/test/CodeGen/AMDGPU/structurize-hoist.ll b/llvm/test/CodeGen/AMDGPU/structurize-hoist.ll
index ade922e8af166..e52df23c29e9c 100644
--- a/llvm/test/CodeGen/AMDGPU/structurize-hoist.ll
+++ b/llvm/test/CodeGen/AMDGPU/structurize-hoist.ll
@@ -85,57 +85,58 @@ merge:
 define amdgpu_kernel void @test_loop_with_if( ptr %ptr, i1 %cond) #0 {
 ; GFX900-LABEL: test_loop_with_if:
 ; GFX900:       ; %bb.0: ; %entry
-; GFX900-NEXT:    s_load_dword s0, s[4:5], 0x2c
+; GFX900-NEXT:    s_load_dword s2, s[4:5], 0x2c
 ; GFX900-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x24
-; GFX900-NEXT:    v_mov_b32_e32 v6, 0
-; GFX900-NEXT:    s_mov_b64 s[2:3], 0
-; GFX900-NEXT:    s_movk_i32 s8, 0xfe
+; GFX900-NEXT:    v_mov_b32_e32 v5, 0
+; GFX900-NEXT:    s_mov_b64 s[0:1], 0
+; GFX900-NEXT:    s_movk_i32 s10, 0xfe
 ; GFX900-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX900-NEXT:    s_bitcmp1_b32 s0, 0
-; GFX900-NEXT:    s_cselect_b64 s[0:1], -1, 0
+; GFX900-NEXT:    s_bitcmp1_b32 s2, 0
+; GFX900-NEXT:    s_cselect_b64 s[2:3], -1, 0
 ; GFX900-NEXT:    v_mov_b32_e32 v1, s6
-; GFX900-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[0:1]
-; GFX900-NEXT:    s_xor_b64 s[0:1], s[0:1], -1
+; GFX900-NEXT:    s_xor_b64 s[4:5], s[2:3], -1
 ; GFX900-NEXT:    v_mov_b32_e32 v2, s7
 ; GFX900-NEXT:    s_branch .LBB2_2
 ; GFX900-NEXT:  .LBB2_1: ; %latch
 ; GFX900-NEXT:    ; in Loop: Header=BB2_2 Depth=1
-; GFX900-NEXT:    s_or_b64 exec, exec, s[6:7]
+; GFX900-NEXT:    s_or_b64 exec, exec, s[8:9]
 ; GFX900-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
-; GFX900-NEXT:    v_add_u32_e32 v6, 20, v3
-; GFX900-NEXT:    v_cmp_lt_i32_e32 vcc, s8, v6
-; GFX900-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]
+; GFX900-NEXT:    v_add_u32_e32 v5, 20, v3
+; GFX900-NEXT:    v_cmp_lt_i32_e32 vcc, s10, v5
+; GFX900-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]
 ; GFX900-NEXT:    flat_store_dword v[1:2], v3
-; GFX900-NEXT:    s_andn2_b64 exec, exec, s[2:3]
+; GFX900-NEXT:    s_andn2_b64 exec, exec, s[0:1]
 ; GFX900-NEXT:    s_cbranch_execz .LBB2_8
 ; GFX900-NEXT:  .LBB2_2: ; %loop
 ; GFX900-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX900-NEXT:    flat_load_dwordx2 v[3:4], v[1:2]
-; GFX900-NEXT:    v_cmp_ne_u32_e32 vcc, 1, v5
-; GFX900-NEXT:    s_mov_b64 s[6:7], s[0:1]
-; GFX900-NEXT:    s_mov_b64 s[4:5], 0
-; GFX900-NEXT:    s_cbranch_vccnz .LBB2_4
+; GFX900-NEXT:    s_and_b64 s[6:7], s[2:3], exec
+; GFX900-NEXT:    s_cselect_b32 s6, 1, 0
+; GFX900-NEXT:    s_cmp_lg_u32 s6, 1
+; GFX900-NEXT:    s_mov_b64 s[8:9], s[4:5]
+; GFX900-NEXT:    s_mov_b64 s[6:7], 0
+; GFX900-NEXT:    s_cbranch_scc1 .LBB2_4
 ; GFX900-NEXT:  ; %bb.3: ; %if
 ; GFX900-NEXT:    ; in Loop: Header=BB2_2 Depth=1
-; GFX900-NEXT:    v_cmp_gt_i32_e32 vcc, 11, v6
-; GFX900-NEXT:    s_andn2_b64 s[6:7], s[0:1], exec
-; GFX900-NEXT:    s_and_b64 s[10:11], vcc, exec
-; GFX900-NEXT:    s_mov_b64 s[4:5], -1
-; GFX900-NEXT:    s_or_b64 s[6:7], s[6:7], s[10:11]
+; GFX900-NEXT:    v_cmp_gt_i32_e32 vcc, 11, v5
+; GFX900-NEXT:    s_andn2_b64 s[8:9], s[4:5], exec
+; GFX900-NEXT:    s_and_b64 s[12:13], vcc, exec
+; GFX900-NEXT:    s_mov_b64 s[6:7], -1
+; GFX900-NEXT:    s_or_b64 s[8:9], s[8:9], s[12:13]
 ; GFX900-NEXT:  .LBB2_4: ; %Flow
 ; GFX900-NEXT:    ; in Loop: Header=BB2_2 Depth=1
-; GFX900-NEXT:    s_and_saveexec_b64 s[10:11], s[6:7]
-; GFX900-NEXT:    s_xor_b64 s[6:7], exec, s[10:11]
+; GFX900-NEXT:    s_and_saveexec_b64 s[12:13], s[8:9]
+; GFX900-NEXT:    s_xor_b64 s[8:9], exec, s[12:13]
 ; GFX900-NEXT:    s_cbranch_execz .LBB2_6
 ; GFX900-NEXT:  ; %bb.5: ; %else
 ; GFX900-NEXT:    ; in Loop: Header=BB2_2 Depth=1
 ; GFX900-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
 ; GFX900-NEXT:    v_add_u32_e32 v3, v3, v4
-; GFX900-NEXT:    s_andn2_b64 s[4:5], s[4:5], exec
+; GFX900-NEXT:    s_andn2_b64 s[6:7], s[6:7], exec
 ; GFX900-NEXT:  .LBB2_6: ; %Flow1
 ; GFX900-NEXT:    ; in Loop: Header=BB2_2 Depth=1
-; GFX900-NEXT:    s_or_b64 exec, exec, s[6:7]
-; GFX900-NEXT:    s_and_saveexec_b64 s[6:7], s[4:5]
+; GFX900-NEXT:    s_or_b64 exec, exec, s[8:9]
+; GFX900-NEXT:    s_and_saveexec_b64 s[8:9], s[6:7]
 ; GFX900-NEXT:    s_cbranch_execz .LBB2_1
 ; GFX900-NEXT:  ; %bb.7: ; %then
 ; GFX900-NEXT:    ; in Loop: Header=BB2_2 Depth=1

diff  --git a/llvm/test/CodeGen/AMDGPU/sub-zext-cc-zext-cc.ll b/llvm/test/CodeGen/AMDGPU/sub-zext-cc-zext-cc.ll
index 51dc253535a62..e4244bc8f1678 100644
--- a/llvm/test/CodeGen/AMDGPU/sub-zext-cc-zext-cc.ll
+++ b/llvm/test/CodeGen/AMDGPU/sub-zext-cc-zext-cc.ll
@@ -5,9 +5,9 @@
 ; GCN-LABEL: sub_zext_zext:
 ; GCN: ds_read_b32 [[VAL:v[0-9]+]],
 ; GCN: v_cmp_lt_f32{{.*}} vcc, 0, [[VAL]]
-; GCN: v_cndmask_{{.*}} [[ZEXTCC1:v[0-9]+]], 0, 1, vcc
-; GCN: v_cmp_gt_f32{{.*}} vcc, 0, [[VAL]]
-; GCN: v_subbrev{{.*}} {{v[0-9]+}}, vcc, 0, [[ZEXTCC1]], vcc
+; GCN: v_cmp_gt_f32{{.*}} s[{{[0-9:]+}}], 0, [[VAL]]
+; GCN: s_cselect_b32 [[ZEXTCC1:s[0-9]+]], 1, 0
+; GCN: s_subb_u32 {{s[0-9]+}}, [[ZEXTCC1]], 0
 ;
 ; Before the reversion that this test is attached to, the compiler commuted
 ; the operands to the sub and used 
diff erent logic to select the addc/subc

diff  --git a/llvm/test/CodeGen/AMDGPU/sub_i1.ll b/llvm/test/CodeGen/AMDGPU/sub_i1.ll
index 3ef1cece538ed..4dc602a12e605 100644
--- a/llvm/test/CodeGen/AMDGPU/sub_i1.ll
+++ b/llvm/test/CodeGen/AMDGPU/sub_i1.ll
@@ -69,7 +69,9 @@ define amdgpu_kernel void @sub_var_imm_i1(ptr addrspace(1) %out, ptr addrspace(1
 ; GFX9-NEXT:    v_and_b32_e32 v1, 1, v1
 ; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v1
 ; GFX9-NEXT:    s_xor_b64 s[2:3], vcc, -1
-; GFX9-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[2:3]
+; GFX9-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX9-NEXT:    global_store_byte v0, v1, s[0:1]
 ; GFX9-NEXT:    s_endpgm
 ;
@@ -83,7 +85,9 @@ define amdgpu_kernel void @sub_var_imm_i1(ptr addrspace(1) %out, ptr addrspace(1
 ; GFX10-NEXT:    v_and_b32_e32 v1, 1, v1
 ; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v1
 ; GFX10-NEXT:    s_xor_b32 s2, vcc_lo, -1
-; GFX10-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX10-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX10-NEXT:    global_store_byte v0, v1, s[0:1]
 ; GFX10-NEXT:    s_endpgm
 ;
@@ -98,7 +102,10 @@ define amdgpu_kernel void @sub_var_imm_i1(ptr addrspace(1) %out, ptr addrspace(1
 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v1
 ; GFX11-NEXT:    s_xor_b32 s2, vcc_lo, -1
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX11-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX11-NEXT:    global_store_b8 v0, v1, s[0:1]
 ; GFX11-NEXT:    s_endpgm
   %a = load volatile i1, ptr addrspace(1) %in

diff  --git a/llvm/test/CodeGen/AMDGPU/trunc-cmp-constant.ll b/llvm/test/CodeGen/AMDGPU/trunc-cmp-constant.ll
index fe1017a6add04..bace81b4c157f 100644
--- a/llvm/test/CodeGen/AMDGPU/trunc-cmp-constant.ll
+++ b/llvm/test/CodeGen/AMDGPU/trunc-cmp-constant.ll
@@ -70,7 +70,9 @@ define amdgpu_kernel void @zextload_i1_to_i32_trunc_cmp_eq_0(ptr addrspace(1) %o
 ; SI-NEXT:    v_and_b32_e32 v0, 1, v0
 ; SI-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v0
 ; SI-NEXT:    s_xor_b64 s[0:1], vcc, -1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -91,7 +93,9 @@ define amdgpu_kernel void @zextload_i1_to_i32_trunc_cmp_eq_0(ptr addrspace(1) %o
 ; VI-NEXT:    v_and_b32_e32 v0, 1, v0
 ; VI-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v0
 ; VI-NEXT:    s_xor_b64 s[0:1], vcc, -1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
   %load = load i1, ptr addrspace(1) %in
@@ -373,7 +377,9 @@ define amdgpu_kernel void @zextload_i1_to_i32_trunc_cmp_ne_1(ptr addrspace(1) %o
 ; SI-NEXT:    v_and_b32_e32 v0, 1, v0
 ; SI-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v0
 ; SI-NEXT:    s_xor_b64 s[0:1], vcc, -1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -394,7 +400,9 @@ define amdgpu_kernel void @zextload_i1_to_i32_trunc_cmp_ne_1(ptr addrspace(1) %o
 ; VI-NEXT:    v_and_b32_e32 v0, 1, v0
 ; VI-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v0
 ; VI-NEXT:    s_xor_b64 s[0:1], vcc, -1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; VI-NEXT:    s_endpgm
   %load = load i1, ptr addrspace(1) %in

diff  --git a/llvm/test/CodeGen/AMDGPU/tuple-allocation-failure.ll b/llvm/test/CodeGen/AMDGPU/tuple-allocation-failure.ll
index 24b4b79101ea0..69ae768484750 100644
--- a/llvm/test/CodeGen/AMDGPU/tuple-allocation-failure.ll
+++ b/llvm/test/CodeGen/AMDGPU/tuple-allocation-failure.ll
@@ -32,43 +32,42 @@ define amdgpu_kernel void @kernel(ptr addrspace(1) %arg1.global, i1 %tmp3.i.i, i
 ; GLOBALNESS1-LABEL: kernel:
 ; GLOBALNESS1:       ; %bb.0: ; %bb
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[36:37], s[6:7]
-; GLOBALNESS1-NEXT:    s_load_dwordx4 s[68:71], s[8:9], 0x0
+; GLOBALNESS1-NEXT:    s_load_dwordx4 s[52:55], s[8:9], 0x0
 ; GLOBALNESS1-NEXT:    s_load_dword s6, s[8:9], 0x14
 ; GLOBALNESS1-NEXT:    v_mov_b32_e32 v42, 0
 ; GLOBALNESS1-NEXT:    v_pk_mov_b32 v[44:45], 0, 0
 ; GLOBALNESS1-NEXT:    global_store_dword v[44:45], v42, off
 ; GLOBALNESS1-NEXT:    s_waitcnt lgkmcnt(0)
-; GLOBALNESS1-NEXT:    global_load_dword v2, v42, s[68:69]
+; GLOBALNESS1-NEXT:    global_load_dword v2, v42, s[52:53]
+; GLOBALNESS1-NEXT:    s_add_u32 flat_scratch_lo, s12, s17
+; GLOBALNESS1-NEXT:    s_addc_u32 flat_scratch_hi, s13, 0
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[38:39], s[4:5]
 ; GLOBALNESS1-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x18
 ; GLOBALNESS1-NEXT:    s_load_dword s7, s[8:9], 0x20
-; GLOBALNESS1-NEXT:    s_add_u32 flat_scratch_lo, s12, s17
-; GLOBALNESS1-NEXT:    s_addc_u32 flat_scratch_hi, s13, 0
 ; GLOBALNESS1-NEXT:    s_add_u32 s0, s0, s17
+; GLOBALNESS1-NEXT:    s_addc_u32 s1, s1, 0
+; GLOBALNESS1-NEXT:    s_bitcmp1_b32 s54, 0
 ; GLOBALNESS1-NEXT:    v_mov_b32_e32 v41, v0
 ; GLOBALNESS1-NEXT:    v_mov_b32_e32 v0, 0
 ; GLOBALNESS1-NEXT:    v_mov_b32_e32 v1, 0x40994400
-; GLOBALNESS1-NEXT:    s_addc_u32 s1, s1, 0
+; GLOBALNESS1-NEXT:    s_cselect_b64 s[64:65], -1, 0
 ; GLOBALNESS1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GLOBALNESS1-NEXT:    v_cmp_ngt_f64_e64 s[50:51], s[4:5], v[0:1]
 ; GLOBALNESS1-NEXT:    v_cmp_ngt_f64_e64 s[4:5], s[4:5], 0
-; GLOBALNESS1-NEXT:    ; implicit-def: $vgpr60 : SGPR spill to VGPR lane
-; GLOBALNESS1-NEXT:    s_bitcmp1_b32 s70, 0
-; GLOBALNESS1-NEXT:    v_writelane_b32 v60, s4, 0
-; GLOBALNESS1-NEXT:    v_writelane_b32 v60, s5, 1
-; GLOBALNESS1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GLOBALNESS1-NEXT:    s_xor_b64 s[52:53], s[4:5], -1
+; GLOBALNESS1-NEXT:    ; implicit-def: $vgpr57 : SGPR spill to VGPR lane
+; GLOBALNESS1-NEXT:    s_xor_b64 s[86:87], s[64:65], -1
+; GLOBALNESS1-NEXT:    v_writelane_b32 v57, s4, 0
 ; GLOBALNESS1-NEXT:    s_bitcmp1_b32 s6, 0
-; GLOBALNESS1-NEXT:    v_cndmask_b32_e64 v40, 0, 1, s[4:5]
+; GLOBALNESS1-NEXT:    v_writelane_b32 v57, s5, 1
 ; GLOBALNESS1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GLOBALNESS1-NEXT:    s_xor_b64 s[64:65], s[4:5], -1
+; GLOBALNESS1-NEXT:    s_xor_b64 s[96:97], s[4:5], -1
 ; GLOBALNESS1-NEXT:    s_bitcmp1_b32 s7, 0
 ; GLOBALNESS1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GLOBALNESS1-NEXT:    s_xor_b64 s[66:67], s[4:5], -1
-; GLOBALNESS1-NEXT:    s_mov_b32 s84, s16
+; GLOBALNESS1-NEXT:    s_xor_b64 s[98:99], s[4:5], -1
+; GLOBALNESS1-NEXT:    s_mov_b32 s68, s16
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[48:49], s[8:9]
-; GLOBALNESS1-NEXT:    s_mov_b32 s85, s15
-; GLOBALNESS1-NEXT:    s_mov_b32 s86, s14
+; GLOBALNESS1-NEXT:    s_mov_b32 s69, s15
+; GLOBALNESS1-NEXT:    s_mov_b32 s70, s14
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[34:35], s[10:11]
 ; GLOBALNESS1-NEXT:    v_mov_b32_e32 v46, 0x80
 ; GLOBALNESS1-NEXT:    v_mov_b32_e32 v47, 0
@@ -76,23 +75,32 @@ define amdgpu_kernel void @kernel(ptr addrspace(1) %arg1.global, i1 %tmp3.i.i, i
 ; GLOBALNESS1-NEXT:    s_mov_b32 s32, 0
 ; GLOBALNESS1-NEXT:    ; implicit-def: $vgpr58_vgpr59
 ; GLOBALNESS1-NEXT:    s_waitcnt vmcnt(0)
-; GLOBALNESS1-NEXT:    v_cmp_gt_i32_e64 s[4:5], 0, v2
-; GLOBALNESS1-NEXT:    v_writelane_b32 v60, s4, 2
-; GLOBALNESS1-NEXT:    v_writelane_b32 v60, s5, 3
-; GLOBALNESS1-NEXT:    v_cmp_eq_u32_e64 s[4:5], 1, v2
-; GLOBALNESS1-NEXT:    v_writelane_b32 v60, s4, 4
-; GLOBALNESS1-NEXT:    v_writelane_b32 v60, s5, 5
-; GLOBALNESS1-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v2
-; GLOBALNESS1-NEXT:    v_cmp_gt_i32_e64 s[54:55], 1, v2
-; GLOBALNESS1-NEXT:    v_writelane_b32 v60, s4, 6
-; GLOBALNESS1-NEXT:    v_writelane_b32 v60, s5, 7
+; GLOBALNESS1-NEXT:    v_readfirstlane_b32 s4, v2
+; GLOBALNESS1-NEXT:    s_cmp_lt_i32 s4, 0
+; GLOBALNESS1-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GLOBALNESS1-NEXT:    s_cmp_lt_i32 s4, 1
+; GLOBALNESS1-NEXT:    v_writelane_b32 v57, s6, 2
+; GLOBALNESS1-NEXT:    s_cselect_b64 s[82:83], -1, 0
+; GLOBALNESS1-NEXT:    s_cmp_eq_u32 s4, 1
+; GLOBALNESS1-NEXT:    v_writelane_b32 v57, s7, 3
+; GLOBALNESS1-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GLOBALNESS1-NEXT:    v_writelane_b32 v57, s6, 4
+; GLOBALNESS1-NEXT:    s_cmp_eq_u32 s4, 0
+; GLOBALNESS1-NEXT:    v_writelane_b32 v57, s7, 5
+; GLOBALNESS1-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; GLOBALNESS1-NEXT:    v_writelane_b32 v57, s4, 6
+; GLOBALNESS1-NEXT:    v_writelane_b32 v57, s5, 7
+; GLOBALNESS1-NEXT:    v_writelane_b32 v57, s64, 8
+; GLOBALNESS1-NEXT:    v_writelane_b32 v57, s65, 9
 ; GLOBALNESS1-NEXT:    s_branch .LBB1_4
 ; GLOBALNESS1-NEXT:  .LBB1_1: ; %bb70.i
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS1-NEXT:    v_readlane_b32 s6, v60, 6
-; GLOBALNESS1-NEXT:    v_readlane_b32 s7, v60, 7
-; GLOBALNESS1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GLOBALNESS1-NEXT:    s_cbranch_vccz .LBB1_28
+; GLOBALNESS1-NEXT:    v_readlane_b32 s6, v57, 6
+; GLOBALNESS1-NEXT:    v_readlane_b32 s7, v57, 7
+; GLOBALNESS1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GLOBALNESS1-NEXT:    s_cselect_b32 s6, 1, 0
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s6, 1
+; GLOBALNESS1-NEXT:    s_cbranch_scc0 .LBB1_29
 ; GLOBALNESS1-NEXT:  .LBB1_2: ; %Flow15
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS1-NEXT:    s_or_b64 exec, exec, s[4:5]
@@ -101,14 +109,14 @@ define amdgpu_kernel void @kernel(ptr addrspace(1) %arg1.global, i1 %tmp3.i.i, i
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS1-NEXT:    s_and_b64 vcc, exec, s[6:7]
 ; GLOBALNESS1-NEXT:    v_pk_mov_b32 v[58:59], v[0:1], v[0:1] op_sel:[0,1]
-; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_29
+; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_30
 ; GLOBALNESS1-NEXT:  .LBB1_4: ; %bb5
 ; GLOBALNESS1-NEXT:    ; =>This Loop Header: Depth=1
-; GLOBALNESS1-NEXT:    ; Child Loop BB1_16 Depth 2
-; GLOBALNESS1-NEXT:    flat_load_dword v56, v[46:47]
+; GLOBALNESS1-NEXT:    ; Child Loop BB1_17 Depth 2
+; GLOBALNESS1-NEXT:    flat_load_dword v40, v[46:47]
 ; GLOBALNESS1-NEXT:    s_add_u32 s8, s48, 40
 ; GLOBALNESS1-NEXT:    buffer_store_dword v42, off, s[0:3], 0
-; GLOBALNESS1-NEXT:    flat_load_dword v57, v[46:47]
+; GLOBALNESS1-NEXT:    flat_load_dword v56, v[46:47]
 ; GLOBALNESS1-NEXT:    s_addc_u32 s9, s49, 0
 ; GLOBALNESS1-NEXT:    s_getpc_b64 s[4:5]
 ; GLOBALNESS1-NEXT:    s_add_u32 s4, s4, wobble at gotpcrel32@lo+4
@@ -117,172 +125,201 @@ define amdgpu_kernel void @kernel(ptr addrspace(1) %arg1.global, i1 %tmp3.i.i, i
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], s[38:39]
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], s[36:37]
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[10:11], s[34:35]
-; GLOBALNESS1-NEXT:    s_mov_b32 s12, s86
-; GLOBALNESS1-NEXT:    s_mov_b32 s13, s85
-; GLOBALNESS1-NEXT:    s_mov_b32 s14, s84
+; GLOBALNESS1-NEXT:    s_mov_b32 s12, s70
+; GLOBALNESS1-NEXT:    s_mov_b32 s13, s69
+; GLOBALNESS1-NEXT:    s_mov_b32 s14, s68
 ; GLOBALNESS1-NEXT:    v_mov_b32_e32 v31, v41
 ; GLOBALNESS1-NEXT:    ; implicit-def: $sgpr15
 ; GLOBALNESS1-NEXT:    s_waitcnt lgkmcnt(0)
 ; GLOBALNESS1-NEXT:    s_swappc_b64 s[30:31], s[16:17]
-; GLOBALNESS1-NEXT:    v_cmp_ne_u32_e32 vcc, 1, v40
+; GLOBALNESS1-NEXT:    s_and_b64 s[4:5], s[64:65], exec
+; GLOBALNESS1-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS1-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; GLOBALNESS1-NEXT:    ; kill: killed $sgpr4_sgpr5
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], -1
-; GLOBALNESS1-NEXT:    ; implicit-def: $sgpr8_sgpr9
-; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_9
+; GLOBALNESS1-NEXT:    s_cbranch_scc1 .LBB1_10
 ; GLOBALNESS1-NEXT:  ; %bb.5: ; %NodeBlock
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[8:9], -1
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], 0
-; GLOBALNESS1-NEXT:    s_cmp_lt_i32 s71, 1
+; GLOBALNESS1-NEXT:    s_cmp_lt_i32 s55, 1
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], -1
 ; GLOBALNESS1-NEXT:    s_cbranch_scc1 .LBB1_7
 ; GLOBALNESS1-NEXT:  ; %bb.6: ; %LeafBlock12
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s71, 1
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s55, 1
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], 0
 ; GLOBALNESS1-NEXT:    s_cselect_b64 s[4:5], -1, 0
 ; GLOBALNESS1-NEXT:  .LBB1_7: ; %Flow26
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_9
+; GLOBALNESS1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GLOBALNESS1-NEXT:    s_cselect_b32 s6, 1, 0
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s6, 1
+; GLOBALNESS1-NEXT:    s_cbranch_scc1 .LBB1_9
 ; GLOBALNESS1-NEXT:  ; %bb.8: ; %LeafBlock
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s71, 0
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s55, 0
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[8:9], 0
 ; GLOBALNESS1-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GLOBALNESS1-NEXT:  .LBB1_9: ; %Flow25
+; GLOBALNESS1-NEXT:  .LBB1_9: ; %Flow27
+; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
+; GLOBALNESS1-NEXT:    v_writelane_b32 v57, s8, 10
+; GLOBALNESS1-NEXT:    v_writelane_b32 v57, s9, 11
+; GLOBALNESS1-NEXT:  .LBB1_10: ; %Flow25
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], -1
 ; GLOBALNESS1-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GLOBALNESS1-NEXT:    ; implicit-def: $vgpr0_vgpr1
 ; GLOBALNESS1-NEXT:    s_cbranch_vccz .LBB1_3
-; GLOBALNESS1-NEXT:  ; %bb.10: ; %baz.exit.i
+; GLOBALNESS1-NEXT:  ; %bb.11: ; %baz.exit.i
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS1-NEXT:    flat_load_dword v0, v[44:45]
 ; GLOBALNESS1-NEXT:    v_mov_b32_e32 v1, 0x3ff00000
 ; GLOBALNESS1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
-; GLOBALNESS1-NEXT:    v_cmp_gt_i32_e64 s[68:69], 0, v0
+; GLOBALNESS1-NEXT:    v_cmp_gt_i32_e64 s[52:53], 0, v0
 ; GLOBALNESS1-NEXT:    v_mov_b32_e32 v0, 0
-; GLOBALNESS1-NEXT:    s_and_saveexec_b64 s[98:99], s[68:69]
-; GLOBALNESS1-NEXT:    s_cbranch_execz .LBB1_25
-; GLOBALNESS1-NEXT:  ; %bb.11: ; %bb33.i
+; GLOBALNESS1-NEXT:    s_and_saveexec_b64 s[80:81], s[52:53]
+; GLOBALNESS1-NEXT:    s_cbranch_execz .LBB1_26
+; GLOBALNESS1-NEXT:  ; %bb.12: ; %bb33.i
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS1-NEXT:    global_load_dwordx2 v[0:1], v[44:45], off
-; GLOBALNESS1-NEXT:    v_writelane_b32 v60, s8, 8
-; GLOBALNESS1-NEXT:    v_writelane_b32 v60, s9, 9
-; GLOBALNESS1-NEXT:    v_readlane_b32 s4, v60, 2
-; GLOBALNESS1-NEXT:    v_readlane_b32 s5, v60, 3
-; GLOBALNESS1-NEXT:    s_mov_b32 s87, s71
-; GLOBALNESS1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_13
-; GLOBALNESS1-NEXT:  ; %bb.12: ; %bb39.i
+; GLOBALNESS1-NEXT:    v_readlane_b32 s4, v57, 2
+; GLOBALNESS1-NEXT:    v_readlane_b32 s5, v57, 3
+; GLOBALNESS1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GLOBALNESS1-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS1-NEXT:    s_mov_b32 s71, s55
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS1-NEXT:    s_cbranch_scc1 .LBB1_14
+; GLOBALNESS1-NEXT:  ; %bb.13: ; %bb39.i
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS1-NEXT:    global_store_dwordx2 v[44:45], v[42:43], off
-; GLOBALNESS1-NEXT:  .LBB1_13: ; %bb44.lr.ph.i
+; GLOBALNESS1-NEXT:  .LBB1_14: ; %bb44.lr.ph.i
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS1-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v57
-; GLOBALNESS1-NEXT:    v_cndmask_b32_e32 v2, 0, v56, vcc
-; GLOBALNESS1-NEXT:    v_cmp_eq_u32_e64 s[70:71], 0, v2
+; GLOBALNESS1-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v56
+; GLOBALNESS1-NEXT:    v_cndmask_b32_e32 v2, 0, v40, vcc
 ; GLOBALNESS1-NEXT:    s_waitcnt vmcnt(0)
-; GLOBALNESS1-NEXT:    v_cmp_nlt_f64_e64 s[80:81], 0, v[0:1]
-; GLOBALNESS1-NEXT:    s_branch .LBB1_16
-; GLOBALNESS1-NEXT:  .LBB1_14: ; %Flow16
-; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
+; GLOBALNESS1-NEXT:    v_cmp_nlt_f64_e64 s[54:55], 0, v[0:1]
+; GLOBALNESS1-NEXT:    v_cmp_eq_u32_e64 s[64:65], 0, v2
+; GLOBALNESS1-NEXT:    s_branch .LBB1_17
+; GLOBALNESS1-NEXT:  .LBB1_15: ; %Flow16
+; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_17 Depth=2
 ; GLOBALNESS1-NEXT:    s_or_b64 exec, exec, s[4:5]
-; GLOBALNESS1-NEXT:  .LBB1_15: ; %bb63.i
-; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
-; GLOBALNESS1-NEXT:    s_andn2_b64 vcc, exec, s[66:67]
-; GLOBALNESS1-NEXT:    s_cbranch_vccz .LBB1_24
-; GLOBALNESS1-NEXT:  .LBB1_16: ; %bb44.i
+; GLOBALNESS1-NEXT:  .LBB1_16: ; %bb63.i
+; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_17 Depth=2
+; GLOBALNESS1-NEXT:    s_and_b64 s[4:5], s[98:99], exec
+; GLOBALNESS1-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS1-NEXT:    s_cbranch_scc0 .LBB1_25
+; GLOBALNESS1-NEXT:  .LBB1_17: ; %bb44.i
 ; GLOBALNESS1-NEXT:    ; Parent Loop BB1_4 Depth=1
 ; GLOBALNESS1-NEXT:    ; => This Inner Loop Header: Depth=2
-; GLOBALNESS1-NEXT:    s_andn2_b64 vcc, exec, s[52:53]
-; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_15
-; GLOBALNESS1-NEXT:  ; %bb.17: ; %bb46.i
-; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
-; GLOBALNESS1-NEXT:    s_andn2_b64 vcc, exec, s[64:65]
-; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_15
-; GLOBALNESS1-NEXT:  ; %bb.18: ; %bb50.i
-; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
-; GLOBALNESS1-NEXT:    s_andn2_b64 vcc, exec, s[50:51]
-; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_21
-; GLOBALNESS1-NEXT:  ; %bb.19: ; %bb3.i.i
-; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
-; GLOBALNESS1-NEXT:    v_readlane_b32 s4, v60, 0
-; GLOBALNESS1-NEXT:    v_readlane_b32 s5, v60, 1
-; GLOBALNESS1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_21
-; GLOBALNESS1-NEXT:  ; %bb.20: ; %bb6.i.i
-; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
-; GLOBALNESS1-NEXT:    s_andn2_b64 vcc, exec, s[80:81]
-; GLOBALNESS1-NEXT:  .LBB1_21: ; %spam.exit.i
-; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
-; GLOBALNESS1-NEXT:    s_andn2_b64 vcc, exec, s[54:55]
-; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_15
-; GLOBALNESS1-NEXT:  ; %bb.22: ; %bb55.i
-; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
-; GLOBALNESS1-NEXT:    s_add_u32 s82, s48, 40
-; GLOBALNESS1-NEXT:    s_addc_u32 s83, s49, 0
+; GLOBALNESS1-NEXT:    s_and_b64 s[4:5], s[86:87], exec
+; GLOBALNESS1-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS1-NEXT:    s_cbranch_scc1 .LBB1_16
+; GLOBALNESS1-NEXT:  ; %bb.18: ; %bb46.i
+; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_17 Depth=2
+; GLOBALNESS1-NEXT:    s_and_b64 s[4:5], s[96:97], exec
+; GLOBALNESS1-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS1-NEXT:    s_cbranch_scc1 .LBB1_16
+; GLOBALNESS1-NEXT:  ; %bb.19: ; %bb50.i
+; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_17 Depth=2
+; GLOBALNESS1-NEXT:    s_and_b64 s[4:5], s[50:51], exec
+; GLOBALNESS1-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS1-NEXT:    s_cbranch_scc1 .LBB1_22
+; GLOBALNESS1-NEXT:  ; %bb.20: ; %bb3.i.i
+; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_17 Depth=2
+; GLOBALNESS1-NEXT:    v_readlane_b32 s4, v57, 0
+; GLOBALNESS1-NEXT:    v_readlane_b32 s5, v57, 1
+; GLOBALNESS1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GLOBALNESS1-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS1-NEXT:    s_cbranch_scc1 .LBB1_22
+; GLOBALNESS1-NEXT:  ; %bb.21: ; %bb6.i.i
+; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_17 Depth=2
+; GLOBALNESS1-NEXT:    s_and_b64 s[4:5], s[54:55], exec
+; GLOBALNESS1-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS1-NEXT:  .LBB1_22: ; %spam.exit.i
+; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_17 Depth=2
+; GLOBALNESS1-NEXT:    s_and_b64 s[4:5], s[82:83], exec
+; GLOBALNESS1-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS1-NEXT:    s_cbranch_scc1 .LBB1_16
+; GLOBALNESS1-NEXT:  ; %bb.23: ; %bb55.i
+; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_17 Depth=2
+; GLOBALNESS1-NEXT:    s_add_u32 s66, s48, 40
+; GLOBALNESS1-NEXT:    s_addc_u32 s67, s49, 0
 ; GLOBALNESS1-NEXT:    s_getpc_b64 s[4:5]
 ; GLOBALNESS1-NEXT:    s_add_u32 s4, s4, wobble at gotpcrel32@lo+4
 ; GLOBALNESS1-NEXT:    s_addc_u32 s5, s5, wobble at gotpcrel32@hi+12
-; GLOBALNESS1-NEXT:    s_load_dwordx2 s[96:97], s[4:5], 0x0
+; GLOBALNESS1-NEXT:    s_load_dwordx2 s[84:85], s[4:5], 0x0
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], s[38:39]
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], s[36:37]
-; GLOBALNESS1-NEXT:    s_mov_b64 s[8:9], s[82:83]
+; GLOBALNESS1-NEXT:    s_mov_b64 s[8:9], s[66:67]
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[10:11], s[34:35]
-; GLOBALNESS1-NEXT:    s_mov_b32 s12, s86
-; GLOBALNESS1-NEXT:    s_mov_b32 s13, s85
-; GLOBALNESS1-NEXT:    s_mov_b32 s14, s84
+; GLOBALNESS1-NEXT:    s_mov_b32 s12, s70
+; GLOBALNESS1-NEXT:    s_mov_b32 s13, s69
+; GLOBALNESS1-NEXT:    s_mov_b32 s14, s68
 ; GLOBALNESS1-NEXT:    v_mov_b32_e32 v31, v41
 ; GLOBALNESS1-NEXT:    s_waitcnt lgkmcnt(0)
-; GLOBALNESS1-NEXT:    s_swappc_b64 s[30:31], s[96:97]
+; GLOBALNESS1-NEXT:    s_swappc_b64 s[30:31], s[84:85]
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], s[38:39]
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], s[36:37]
-; GLOBALNESS1-NEXT:    s_mov_b64 s[8:9], s[82:83]
+; GLOBALNESS1-NEXT:    s_mov_b64 s[8:9], s[66:67]
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[10:11], s[34:35]
-; GLOBALNESS1-NEXT:    s_mov_b32 s12, s86
-; GLOBALNESS1-NEXT:    s_mov_b32 s13, s85
-; GLOBALNESS1-NEXT:    s_mov_b32 s14, s84
+; GLOBALNESS1-NEXT:    s_mov_b32 s12, s70
+; GLOBALNESS1-NEXT:    s_mov_b32 s13, s69
+; GLOBALNESS1-NEXT:    s_mov_b32 s14, s68
 ; GLOBALNESS1-NEXT:    v_mov_b32_e32 v31, v41
 ; GLOBALNESS1-NEXT:    global_store_dwordx2 v[44:45], v[58:59], off
 ; GLOBALNESS1-NEXT:    ; implicit-def: $sgpr15
-; GLOBALNESS1-NEXT:    s_swappc_b64 s[30:31], s[96:97]
-; GLOBALNESS1-NEXT:    s_and_saveexec_b64 s[4:5], s[70:71]
-; GLOBALNESS1-NEXT:    s_cbranch_execz .LBB1_14
-; GLOBALNESS1-NEXT:  ; %bb.23: ; %bb62.i
-; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
+; GLOBALNESS1-NEXT:    s_swappc_b64 s[30:31], s[84:85]
+; GLOBALNESS1-NEXT:    s_and_saveexec_b64 s[4:5], s[64:65]
+; GLOBALNESS1-NEXT:    s_cbranch_execz .LBB1_15
+; GLOBALNESS1-NEXT:  ; %bb.24: ; %bb62.i
+; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_17 Depth=2
 ; GLOBALNESS1-NEXT:    global_store_dwordx2 v[44:45], v[42:43], off
-; GLOBALNESS1-NEXT:    s_branch .LBB1_14
-; GLOBALNESS1-NEXT:  .LBB1_24: ; %Flow23
+; GLOBALNESS1-NEXT:    s_branch .LBB1_15
+; GLOBALNESS1-NEXT:  .LBB1_25: ; %Flow23
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS1-NEXT:    v_readlane_b32 s8, v60, 8
+; GLOBALNESS1-NEXT:    v_readlane_b32 s64, v57, 8
 ; GLOBALNESS1-NEXT:    v_pk_mov_b32 v[0:1], 0, 0
-; GLOBALNESS1-NEXT:    s_mov_b32 s71, s87
-; GLOBALNESS1-NEXT:    v_readlane_b32 s9, v60, 9
-; GLOBALNESS1-NEXT:  .LBB1_25: ; %Flow24
+; GLOBALNESS1-NEXT:    s_mov_b32 s55, s71
+; GLOBALNESS1-NEXT:    v_readlane_b32 s65, v57, 9
+; GLOBALNESS1-NEXT:  .LBB1_26: ; %Flow24
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS1-NEXT:    s_or_b64 exec, exec, s[98:99]
-; GLOBALNESS1-NEXT:    s_and_saveexec_b64 s[4:5], s[68:69]
+; GLOBALNESS1-NEXT:    s_or_b64 exec, exec, s[80:81]
+; GLOBALNESS1-NEXT:    s_and_saveexec_b64 s[4:5], s[52:53]
 ; GLOBALNESS1-NEXT:    s_cbranch_execz .LBB1_2
-; GLOBALNESS1-NEXT:  ; %bb.26: ; %bb67.i
+; GLOBALNESS1-NEXT:  ; %bb.27: ; %bb67.i
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS1-NEXT:    v_readlane_b32 s6, v60, 4
-; GLOBALNESS1-NEXT:    v_readlane_b32 s7, v60, 5
-; GLOBALNESS1-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_1
-; GLOBALNESS1-NEXT:  ; %bb.27: ; %bb69.i
+; GLOBALNESS1-NEXT:    v_readlane_b32 s6, v57, 4
+; GLOBALNESS1-NEXT:    v_readlane_b32 s7, v57, 5
+; GLOBALNESS1-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GLOBALNESS1-NEXT:    s_cselect_b32 s6, 1, 0
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s6, 1
+; GLOBALNESS1-NEXT:    s_cbranch_scc1 .LBB1_1
+; GLOBALNESS1-NEXT:  ; %bb.28: ; %bb69.i
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS1-NEXT:    global_store_dwordx2 v[44:45], v[42:43], off
 ; GLOBALNESS1-NEXT:    s_branch .LBB1_1
-; GLOBALNESS1-NEXT:  .LBB1_28: ; %bb73.i
+; GLOBALNESS1-NEXT:  .LBB1_29: ; %bb73.i
 ; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS1-NEXT:    global_store_dwordx2 v[44:45], v[42:43], off
 ; GLOBALNESS1-NEXT:    s_branch .LBB1_2
-; GLOBALNESS1-NEXT:  .LBB1_29: ; %loop.exit.guard
-; GLOBALNESS1-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
+; GLOBALNESS1-NEXT:  .LBB1_30: ; %loop.exit.guard
+; GLOBALNESS1-NEXT:    v_readlane_b32 s4, v57, 10
+; GLOBALNESS1-NEXT:    v_readlane_b32 s5, v57, 11
+; GLOBALNESS1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GLOBALNESS1-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s4, 1
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], -1
-; GLOBALNESS1-NEXT:    s_cbranch_vccz .LBB1_31
-; GLOBALNESS1-NEXT:  ; %bb.30: ; %bb7.i.i
+; GLOBALNESS1-NEXT:    s_cbranch_scc0 .LBB1_32
+; GLOBALNESS1-NEXT:  ; %bb.31: ; %bb7.i.i
 ; GLOBALNESS1-NEXT:    s_add_u32 s8, s48, 40
 ; GLOBALNESS1-NEXT:    s_addc_u32 s9, s49, 0
 ; GLOBALNESS1-NEXT:    s_getpc_b64 s[16:17]
@@ -291,17 +328,19 @@ define amdgpu_kernel void @kernel(ptr addrspace(1) %arg1.global, i1 %tmp3.i.i, i
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], s[38:39]
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], s[36:37]
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[10:11], s[34:35]
-; GLOBALNESS1-NEXT:    s_mov_b32 s12, s86
-; GLOBALNESS1-NEXT:    s_mov_b32 s13, s85
-; GLOBALNESS1-NEXT:    s_mov_b32 s14, s84
+; GLOBALNESS1-NEXT:    s_mov_b32 s12, s70
+; GLOBALNESS1-NEXT:    s_mov_b32 s13, s69
+; GLOBALNESS1-NEXT:    s_mov_b32 s14, s68
 ; GLOBALNESS1-NEXT:    v_mov_b32_e32 v31, v41
 ; GLOBALNESS1-NEXT:    ; implicit-def: $sgpr15
 ; GLOBALNESS1-NEXT:    s_swappc_b64 s[30:31], s[16:17]
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], 0
-; GLOBALNESS1-NEXT:  .LBB1_31: ; %Flow
-; GLOBALNESS1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_33
-; GLOBALNESS1-NEXT:  ; %bb.32: ; %bb11.i.i
+; GLOBALNESS1-NEXT:  .LBB1_32: ; %Flow
+; GLOBALNESS1-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GLOBALNESS1-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS1-NEXT:    s_cbranch_scc1 .LBB1_34
+; GLOBALNESS1-NEXT:  ; %bb.33: ; %bb11.i.i
 ; GLOBALNESS1-NEXT:    s_add_u32 s8, s48, 40
 ; GLOBALNESS1-NEXT:    s_addc_u32 s9, s49, 0
 ; GLOBALNESS1-NEXT:    s_getpc_b64 s[16:17]
@@ -310,54 +349,53 @@ define amdgpu_kernel void @kernel(ptr addrspace(1) %arg1.global, i1 %tmp3.i.i, i
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], s[38:39]
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], s[36:37]
 ; GLOBALNESS1-NEXT:    s_mov_b64 s[10:11], s[34:35]
-; GLOBALNESS1-NEXT:    s_mov_b32 s12, s86
-; GLOBALNESS1-NEXT:    s_mov_b32 s13, s85
-; GLOBALNESS1-NEXT:    s_mov_b32 s14, s84
+; GLOBALNESS1-NEXT:    s_mov_b32 s12, s70
+; GLOBALNESS1-NEXT:    s_mov_b32 s13, s69
+; GLOBALNESS1-NEXT:    s_mov_b32 s14, s68
 ; GLOBALNESS1-NEXT:    v_mov_b32_e32 v31, v41
 ; GLOBALNESS1-NEXT:    ; implicit-def: $sgpr15
 ; GLOBALNESS1-NEXT:    s_swappc_b64 s[30:31], s[16:17]
-; GLOBALNESS1-NEXT:  .LBB1_33: ; %UnifiedUnreachableBlock
+; GLOBALNESS1-NEXT:  .LBB1_34: ; %UnifiedUnreachableBlock
 ;
 ; GLOBALNESS0-LABEL: kernel:
 ; GLOBALNESS0:       ; %bb.0: ; %bb
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[36:37], s[6:7]
-; GLOBALNESS0-NEXT:    s_load_dwordx4 s[68:71], s[8:9], 0x0
+; GLOBALNESS0-NEXT:    s_load_dwordx4 s[52:55], s[8:9], 0x0
 ; GLOBALNESS0-NEXT:    s_load_dword s6, s[8:9], 0x14
 ; GLOBALNESS0-NEXT:    v_mov_b32_e32 v42, 0
 ; GLOBALNESS0-NEXT:    v_pk_mov_b32 v[44:45], 0, 0
 ; GLOBALNESS0-NEXT:    global_store_dword v[44:45], v42, off
 ; GLOBALNESS0-NEXT:    s_waitcnt lgkmcnt(0)
-; GLOBALNESS0-NEXT:    global_load_dword v2, v42, s[68:69]
+; GLOBALNESS0-NEXT:    global_load_dword v2, v42, s[52:53]
+; GLOBALNESS0-NEXT:    s_add_u32 flat_scratch_lo, s12, s17
+; GLOBALNESS0-NEXT:    s_addc_u32 flat_scratch_hi, s13, 0
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[38:39], s[4:5]
 ; GLOBALNESS0-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x18
 ; GLOBALNESS0-NEXT:    s_load_dword s7, s[8:9], 0x20
-; GLOBALNESS0-NEXT:    s_add_u32 flat_scratch_lo, s12, s17
-; GLOBALNESS0-NEXT:    s_addc_u32 flat_scratch_hi, s13, 0
 ; GLOBALNESS0-NEXT:    s_add_u32 s0, s0, s17
+; GLOBALNESS0-NEXT:    s_addc_u32 s1, s1, 0
+; GLOBALNESS0-NEXT:    s_bitcmp1_b32 s54, 0
 ; GLOBALNESS0-NEXT:    v_mov_b32_e32 v41, v0
 ; GLOBALNESS0-NEXT:    v_mov_b32_e32 v0, 0
 ; GLOBALNESS0-NEXT:    v_mov_b32_e32 v1, 0x40994400
-; GLOBALNESS0-NEXT:    s_addc_u32 s1, s1, 0
+; GLOBALNESS0-NEXT:    s_cselect_b64 s[64:65], -1, 0
 ; GLOBALNESS0-NEXT:    s_waitcnt lgkmcnt(0)
 ; GLOBALNESS0-NEXT:    v_cmp_ngt_f64_e64 s[50:51], s[4:5], v[0:1]
 ; GLOBALNESS0-NEXT:    v_cmp_ngt_f64_e64 s[4:5], s[4:5], 0
-; GLOBALNESS0-NEXT:    ; implicit-def: $vgpr60 : SGPR spill to VGPR lane
-; GLOBALNESS0-NEXT:    s_bitcmp1_b32 s70, 0
-; GLOBALNESS0-NEXT:    v_writelane_b32 v60, s4, 0
-; GLOBALNESS0-NEXT:    v_writelane_b32 v60, s5, 1
-; GLOBALNESS0-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GLOBALNESS0-NEXT:    s_xor_b64 s[52:53], s[4:5], -1
+; GLOBALNESS0-NEXT:    ; implicit-def: $vgpr57 : SGPR spill to VGPR lane
+; GLOBALNESS0-NEXT:    s_xor_b64 s[86:87], s[64:65], -1
+; GLOBALNESS0-NEXT:    v_writelane_b32 v57, s4, 0
 ; GLOBALNESS0-NEXT:    s_bitcmp1_b32 s6, 0
-; GLOBALNESS0-NEXT:    v_cndmask_b32_e64 v40, 0, 1, s[4:5]
+; GLOBALNESS0-NEXT:    v_writelane_b32 v57, s5, 1
 ; GLOBALNESS0-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GLOBALNESS0-NEXT:    s_xor_b64 s[64:65], s[4:5], -1
+; GLOBALNESS0-NEXT:    s_xor_b64 s[96:97], s[4:5], -1
 ; GLOBALNESS0-NEXT:    s_bitcmp1_b32 s7, 0
 ; GLOBALNESS0-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GLOBALNESS0-NEXT:    s_xor_b64 s[66:67], s[4:5], -1
-; GLOBALNESS0-NEXT:    s_mov_b32 s82, s16
+; GLOBALNESS0-NEXT:    s_xor_b64 s[98:99], s[4:5], -1
+; GLOBALNESS0-NEXT:    s_mov_b32 s66, s16
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[48:49], s[8:9]
-; GLOBALNESS0-NEXT:    s_mov_b32 s83, s15
-; GLOBALNESS0-NEXT:    s_mov_b32 s84, s14
+; GLOBALNESS0-NEXT:    s_mov_b32 s67, s15
+; GLOBALNESS0-NEXT:    s_mov_b32 s68, s14
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[34:35], s[10:11]
 ; GLOBALNESS0-NEXT:    v_mov_b32_e32 v46, 0x80
 ; GLOBALNESS0-NEXT:    v_mov_b32_e32 v47, 0
@@ -365,23 +403,32 @@ define amdgpu_kernel void @kernel(ptr addrspace(1) %arg1.global, i1 %tmp3.i.i, i
 ; GLOBALNESS0-NEXT:    s_mov_b32 s32, 0
 ; GLOBALNESS0-NEXT:    ; implicit-def: $vgpr58_vgpr59
 ; GLOBALNESS0-NEXT:    s_waitcnt vmcnt(0)
-; GLOBALNESS0-NEXT:    v_cmp_gt_i32_e64 s[4:5], 0, v2
-; GLOBALNESS0-NEXT:    v_writelane_b32 v60, s4, 2
-; GLOBALNESS0-NEXT:    v_writelane_b32 v60, s5, 3
-; GLOBALNESS0-NEXT:    v_cmp_eq_u32_e64 s[4:5], 1, v2
-; GLOBALNESS0-NEXT:    v_writelane_b32 v60, s4, 4
-; GLOBALNESS0-NEXT:    v_writelane_b32 v60, s5, 5
-; GLOBALNESS0-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v2
-; GLOBALNESS0-NEXT:    v_cmp_gt_i32_e64 s[54:55], 1, v2
-; GLOBALNESS0-NEXT:    v_writelane_b32 v60, s4, 6
-; GLOBALNESS0-NEXT:    v_writelane_b32 v60, s5, 7
+; GLOBALNESS0-NEXT:    v_readfirstlane_b32 s4, v2
+; GLOBALNESS0-NEXT:    s_cmp_lt_i32 s4, 0
+; GLOBALNESS0-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GLOBALNESS0-NEXT:    s_cmp_lt_i32 s4, 1
+; GLOBALNESS0-NEXT:    v_writelane_b32 v57, s6, 2
+; GLOBALNESS0-NEXT:    s_cselect_b64 s[82:83], -1, 0
+; GLOBALNESS0-NEXT:    s_cmp_eq_u32 s4, 1
+; GLOBALNESS0-NEXT:    v_writelane_b32 v57, s7, 3
+; GLOBALNESS0-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GLOBALNESS0-NEXT:    v_writelane_b32 v57, s6, 4
+; GLOBALNESS0-NEXT:    s_cmp_eq_u32 s4, 0
+; GLOBALNESS0-NEXT:    v_writelane_b32 v57, s7, 5
+; GLOBALNESS0-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; GLOBALNESS0-NEXT:    v_writelane_b32 v57, s4, 6
+; GLOBALNESS0-NEXT:    v_writelane_b32 v57, s5, 7
+; GLOBALNESS0-NEXT:    v_writelane_b32 v57, s64, 8
+; GLOBALNESS0-NEXT:    v_writelane_b32 v57, s65, 9
 ; GLOBALNESS0-NEXT:    s_branch .LBB1_4
 ; GLOBALNESS0-NEXT:  .LBB1_1: ; %bb70.i
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS0-NEXT:    v_readlane_b32 s6, v60, 6
-; GLOBALNESS0-NEXT:    v_readlane_b32 s7, v60, 7
-; GLOBALNESS0-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GLOBALNESS0-NEXT:    s_cbranch_vccz .LBB1_28
+; GLOBALNESS0-NEXT:    v_readlane_b32 s6, v57, 6
+; GLOBALNESS0-NEXT:    v_readlane_b32 s7, v57, 7
+; GLOBALNESS0-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GLOBALNESS0-NEXT:    s_cselect_b32 s6, 1, 0
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s6, 1
+; GLOBALNESS0-NEXT:    s_cbranch_scc0 .LBB1_29
 ; GLOBALNESS0-NEXT:  .LBB1_2: ; %Flow15
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS0-NEXT:    s_or_b64 exec, exec, s[4:5]
@@ -390,14 +437,14 @@ define amdgpu_kernel void @kernel(ptr addrspace(1) %arg1.global, i1 %tmp3.i.i, i
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS0-NEXT:    s_and_b64 vcc, exec, s[6:7]
 ; GLOBALNESS0-NEXT:    v_pk_mov_b32 v[58:59], v[0:1], v[0:1] op_sel:[0,1]
-; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_29
+; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_30
 ; GLOBALNESS0-NEXT:  .LBB1_4: ; %bb5
 ; GLOBALNESS0-NEXT:    ; =>This Loop Header: Depth=1
-; GLOBALNESS0-NEXT:    ; Child Loop BB1_16 Depth 2
-; GLOBALNESS0-NEXT:    flat_load_dword v56, v[46:47]
+; GLOBALNESS0-NEXT:    ; Child Loop BB1_17 Depth 2
+; GLOBALNESS0-NEXT:    flat_load_dword v40, v[46:47]
 ; GLOBALNESS0-NEXT:    s_add_u32 s8, s48, 40
 ; GLOBALNESS0-NEXT:    buffer_store_dword v42, off, s[0:3], 0
-; GLOBALNESS0-NEXT:    flat_load_dword v57, v[46:47]
+; GLOBALNESS0-NEXT:    flat_load_dword v56, v[46:47]
 ; GLOBALNESS0-NEXT:    s_addc_u32 s9, s49, 0
 ; GLOBALNESS0-NEXT:    s_getpc_b64 s[4:5]
 ; GLOBALNESS0-NEXT:    s_add_u32 s4, s4, wobble at gotpcrel32@lo+4
@@ -406,171 +453,200 @@ define amdgpu_kernel void @kernel(ptr addrspace(1) %arg1.global, i1 %tmp3.i.i, i
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], s[38:39]
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], s[36:37]
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[10:11], s[34:35]
-; GLOBALNESS0-NEXT:    s_mov_b32 s12, s84
-; GLOBALNESS0-NEXT:    s_mov_b32 s13, s83
-; GLOBALNESS0-NEXT:    s_mov_b32 s14, s82
+; GLOBALNESS0-NEXT:    s_mov_b32 s12, s68
+; GLOBALNESS0-NEXT:    s_mov_b32 s13, s67
+; GLOBALNESS0-NEXT:    s_mov_b32 s14, s66
 ; GLOBALNESS0-NEXT:    v_mov_b32_e32 v31, v41
 ; GLOBALNESS0-NEXT:    ; implicit-def: $sgpr15
 ; GLOBALNESS0-NEXT:    s_waitcnt lgkmcnt(0)
 ; GLOBALNESS0-NEXT:    s_swappc_b64 s[30:31], s[16:17]
-; GLOBALNESS0-NEXT:    v_cmp_ne_u32_e32 vcc, 1, v40
+; GLOBALNESS0-NEXT:    s_and_b64 s[4:5], s[64:65], exec
+; GLOBALNESS0-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS0-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; GLOBALNESS0-NEXT:    ; kill: killed $sgpr4_sgpr5
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], -1
-; GLOBALNESS0-NEXT:    ; implicit-def: $sgpr8_sgpr9
-; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_9
+; GLOBALNESS0-NEXT:    s_cbranch_scc1 .LBB1_10
 ; GLOBALNESS0-NEXT:  ; %bb.5: ; %NodeBlock
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[8:9], -1
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], 0
-; GLOBALNESS0-NEXT:    s_cmp_lt_i32 s71, 1
+; GLOBALNESS0-NEXT:    s_cmp_lt_i32 s55, 1
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], -1
 ; GLOBALNESS0-NEXT:    s_cbranch_scc1 .LBB1_7
 ; GLOBALNESS0-NEXT:  ; %bb.6: ; %LeafBlock12
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s71, 1
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s55, 1
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], 0
 ; GLOBALNESS0-NEXT:    s_cselect_b64 s[4:5], -1, 0
 ; GLOBALNESS0-NEXT:  .LBB1_7: ; %Flow26
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS0-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_9
+; GLOBALNESS0-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GLOBALNESS0-NEXT:    s_cselect_b32 s6, 1, 0
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s6, 1
+; GLOBALNESS0-NEXT:    s_cbranch_scc1 .LBB1_9
 ; GLOBALNESS0-NEXT:  ; %bb.8: ; %LeafBlock
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s71, 0
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s55, 0
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[8:9], 0
 ; GLOBALNESS0-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; GLOBALNESS0-NEXT:  .LBB1_9: ; %Flow25
+; GLOBALNESS0-NEXT:  .LBB1_9: ; %Flow27
+; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
+; GLOBALNESS0-NEXT:    v_writelane_b32 v57, s8, 10
+; GLOBALNESS0-NEXT:    v_writelane_b32 v57, s9, 11
+; GLOBALNESS0-NEXT:  .LBB1_10: ; %Flow25
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], -1
 ; GLOBALNESS0-NEXT:    s_and_b64 vcc, exec, s[4:5]
 ; GLOBALNESS0-NEXT:    ; implicit-def: $vgpr0_vgpr1
 ; GLOBALNESS0-NEXT:    s_cbranch_vccz .LBB1_3
-; GLOBALNESS0-NEXT:  ; %bb.10: ; %baz.exit.i
+; GLOBALNESS0-NEXT:  ; %bb.11: ; %baz.exit.i
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS0-NEXT:    flat_load_dword v0, v[44:45]
 ; GLOBALNESS0-NEXT:    v_mov_b32_e32 v1, 0x3ff00000
 ; GLOBALNESS0-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
-; GLOBALNESS0-NEXT:    v_cmp_gt_i32_e64 s[68:69], 0, v0
+; GLOBALNESS0-NEXT:    v_cmp_gt_i32_e64 s[52:53], 0, v0
 ; GLOBALNESS0-NEXT:    v_mov_b32_e32 v0, 0
-; GLOBALNESS0-NEXT:    s_and_saveexec_b64 s[98:99], s[68:69]
-; GLOBALNESS0-NEXT:    s_cbranch_execz .LBB1_25
-; GLOBALNESS0-NEXT:  ; %bb.11: ; %bb33.i
+; GLOBALNESS0-NEXT:    s_and_saveexec_b64 s[80:81], s[52:53]
+; GLOBALNESS0-NEXT:    s_cbranch_execz .LBB1_26
+; GLOBALNESS0-NEXT:  ; %bb.12: ; %bb33.i
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS0-NEXT:    global_load_dwordx2 v[0:1], v[44:45], off
-; GLOBALNESS0-NEXT:    v_writelane_b32 v60, s8, 8
-; GLOBALNESS0-NEXT:    v_writelane_b32 v60, s9, 9
-; GLOBALNESS0-NEXT:    v_readlane_b32 s4, v60, 2
-; GLOBALNESS0-NEXT:    v_readlane_b32 s5, v60, 3
-; GLOBALNESS0-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_13
-; GLOBALNESS0-NEXT:  ; %bb.12: ; %bb39.i
+; GLOBALNESS0-NEXT:    v_readlane_b32 s4, v57, 2
+; GLOBALNESS0-NEXT:    v_readlane_b32 s5, v57, 3
+; GLOBALNESS0-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GLOBALNESS0-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS0-NEXT:    s_cbranch_scc1 .LBB1_14
+; GLOBALNESS0-NEXT:  ; %bb.13: ; %bb39.i
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS0-NEXT:    global_store_dwordx2 v[44:45], v[42:43], off
-; GLOBALNESS0-NEXT:  .LBB1_13: ; %bb44.lr.ph.i
+; GLOBALNESS0-NEXT:  .LBB1_14: ; %bb44.lr.ph.i
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS0-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v57
-; GLOBALNESS0-NEXT:    v_cndmask_b32_e32 v2, 0, v56, vcc
-; GLOBALNESS0-NEXT:    v_cmp_eq_u32_e64 s[70:71], 0, v2
+; GLOBALNESS0-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v56
+; GLOBALNESS0-NEXT:    v_cndmask_b32_e32 v2, 0, v40, vcc
 ; GLOBALNESS0-NEXT:    s_waitcnt vmcnt(0)
-; GLOBALNESS0-NEXT:    v_cmp_nlt_f64_e64 s[80:81], 0, v[0:1]
-; GLOBALNESS0-NEXT:    s_branch .LBB1_16
-; GLOBALNESS0-NEXT:  .LBB1_14: ; %Flow16
-; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
+; GLOBALNESS0-NEXT:    v_cmp_nlt_f64_e64 s[54:55], 0, v[0:1]
+; GLOBALNESS0-NEXT:    v_cmp_eq_u32_e64 s[64:65], 0, v2
+; GLOBALNESS0-NEXT:    s_branch .LBB1_17
+; GLOBALNESS0-NEXT:  .LBB1_15: ; %Flow16
+; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_17 Depth=2
 ; GLOBALNESS0-NEXT:    s_or_b64 exec, exec, s[4:5]
-; GLOBALNESS0-NEXT:  .LBB1_15: ; %bb63.i
-; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
-; GLOBALNESS0-NEXT:    s_andn2_b64 vcc, exec, s[66:67]
-; GLOBALNESS0-NEXT:    s_cbranch_vccz .LBB1_24
-; GLOBALNESS0-NEXT:  .LBB1_16: ; %bb44.i
+; GLOBALNESS0-NEXT:  .LBB1_16: ; %bb63.i
+; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_17 Depth=2
+; GLOBALNESS0-NEXT:    s_and_b64 s[4:5], s[98:99], exec
+; GLOBALNESS0-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS0-NEXT:    s_cbranch_scc0 .LBB1_25
+; GLOBALNESS0-NEXT:  .LBB1_17: ; %bb44.i
 ; GLOBALNESS0-NEXT:    ; Parent Loop BB1_4 Depth=1
 ; GLOBALNESS0-NEXT:    ; => This Inner Loop Header: Depth=2
-; GLOBALNESS0-NEXT:    s_andn2_b64 vcc, exec, s[52:53]
-; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_15
-; GLOBALNESS0-NEXT:  ; %bb.17: ; %bb46.i
-; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
-; GLOBALNESS0-NEXT:    s_andn2_b64 vcc, exec, s[64:65]
-; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_15
-; GLOBALNESS0-NEXT:  ; %bb.18: ; %bb50.i
-; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
-; GLOBALNESS0-NEXT:    s_andn2_b64 vcc, exec, s[50:51]
-; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_21
-; GLOBALNESS0-NEXT:  ; %bb.19: ; %bb3.i.i
-; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
-; GLOBALNESS0-NEXT:    v_readlane_b32 s4, v60, 0
-; GLOBALNESS0-NEXT:    v_readlane_b32 s5, v60, 1
-; GLOBALNESS0-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_21
-; GLOBALNESS0-NEXT:  ; %bb.20: ; %bb6.i.i
-; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
-; GLOBALNESS0-NEXT:    s_andn2_b64 vcc, exec, s[80:81]
-; GLOBALNESS0-NEXT:  .LBB1_21: ; %spam.exit.i
-; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
-; GLOBALNESS0-NEXT:    s_andn2_b64 vcc, exec, s[54:55]
-; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_15
-; GLOBALNESS0-NEXT:  ; %bb.22: ; %bb55.i
-; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
-; GLOBALNESS0-NEXT:    s_add_u32 s86, s48, 40
-; GLOBALNESS0-NEXT:    s_addc_u32 s87, s49, 0
+; GLOBALNESS0-NEXT:    s_and_b64 s[4:5], s[86:87], exec
+; GLOBALNESS0-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS0-NEXT:    s_cbranch_scc1 .LBB1_16
+; GLOBALNESS0-NEXT:  ; %bb.18: ; %bb46.i
+; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_17 Depth=2
+; GLOBALNESS0-NEXT:    s_and_b64 s[4:5], s[96:97], exec
+; GLOBALNESS0-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS0-NEXT:    s_cbranch_scc1 .LBB1_16
+; GLOBALNESS0-NEXT:  ; %bb.19: ; %bb50.i
+; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_17 Depth=2
+; GLOBALNESS0-NEXT:    s_and_b64 s[4:5], s[50:51], exec
+; GLOBALNESS0-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS0-NEXT:    s_cbranch_scc1 .LBB1_22
+; GLOBALNESS0-NEXT:  ; %bb.20: ; %bb3.i.i
+; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_17 Depth=2
+; GLOBALNESS0-NEXT:    v_readlane_b32 s4, v57, 0
+; GLOBALNESS0-NEXT:    v_readlane_b32 s5, v57, 1
+; GLOBALNESS0-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GLOBALNESS0-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS0-NEXT:    s_cbranch_scc1 .LBB1_22
+; GLOBALNESS0-NEXT:  ; %bb.21: ; %bb6.i.i
+; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_17 Depth=2
+; GLOBALNESS0-NEXT:    s_and_b64 s[4:5], s[54:55], exec
+; GLOBALNESS0-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS0-NEXT:  .LBB1_22: ; %spam.exit.i
+; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_17 Depth=2
+; GLOBALNESS0-NEXT:    s_and_b64 s[4:5], s[82:83], exec
+; GLOBALNESS0-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS0-NEXT:    s_cbranch_scc1 .LBB1_16
+; GLOBALNESS0-NEXT:  ; %bb.23: ; %bb55.i
+; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_17 Depth=2
+; GLOBALNESS0-NEXT:    s_add_u32 s70, s48, 40
+; GLOBALNESS0-NEXT:    s_addc_u32 s71, s49, 0
 ; GLOBALNESS0-NEXT:    s_getpc_b64 s[4:5]
 ; GLOBALNESS0-NEXT:    s_add_u32 s4, s4, wobble at gotpcrel32@lo+4
 ; GLOBALNESS0-NEXT:    s_addc_u32 s5, s5, wobble at gotpcrel32@hi+12
-; GLOBALNESS0-NEXT:    s_load_dwordx2 s[96:97], s[4:5], 0x0
+; GLOBALNESS0-NEXT:    s_load_dwordx2 s[84:85], s[4:5], 0x0
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], s[38:39]
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], s[36:37]
-; GLOBALNESS0-NEXT:    s_mov_b64 s[8:9], s[86:87]
+; GLOBALNESS0-NEXT:    s_mov_b64 s[8:9], s[70:71]
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[10:11], s[34:35]
-; GLOBALNESS0-NEXT:    s_mov_b32 s12, s84
-; GLOBALNESS0-NEXT:    s_mov_b32 s13, s83
-; GLOBALNESS0-NEXT:    s_mov_b32 s14, s82
+; GLOBALNESS0-NEXT:    s_mov_b32 s12, s68
+; GLOBALNESS0-NEXT:    s_mov_b32 s13, s67
+; GLOBALNESS0-NEXT:    s_mov_b32 s14, s66
 ; GLOBALNESS0-NEXT:    v_mov_b32_e32 v31, v41
 ; GLOBALNESS0-NEXT:    s_waitcnt lgkmcnt(0)
-; GLOBALNESS0-NEXT:    s_swappc_b64 s[30:31], s[96:97]
+; GLOBALNESS0-NEXT:    s_swappc_b64 s[30:31], s[84:85]
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], s[38:39]
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], s[36:37]
-; GLOBALNESS0-NEXT:    s_mov_b64 s[8:9], s[86:87]
+; GLOBALNESS0-NEXT:    s_mov_b64 s[8:9], s[70:71]
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[10:11], s[34:35]
-; GLOBALNESS0-NEXT:    s_mov_b32 s12, s84
-; GLOBALNESS0-NEXT:    s_mov_b32 s13, s83
-; GLOBALNESS0-NEXT:    s_mov_b32 s14, s82
+; GLOBALNESS0-NEXT:    s_mov_b32 s12, s68
+; GLOBALNESS0-NEXT:    s_mov_b32 s13, s67
+; GLOBALNESS0-NEXT:    s_mov_b32 s14, s66
 ; GLOBALNESS0-NEXT:    v_mov_b32_e32 v31, v41
 ; GLOBALNESS0-NEXT:    global_store_dwordx2 v[44:45], v[58:59], off
 ; GLOBALNESS0-NEXT:    ; implicit-def: $sgpr15
-; GLOBALNESS0-NEXT:    s_swappc_b64 s[30:31], s[96:97]
-; GLOBALNESS0-NEXT:    s_and_saveexec_b64 s[4:5], s[70:71]
-; GLOBALNESS0-NEXT:    s_cbranch_execz .LBB1_14
-; GLOBALNESS0-NEXT:  ; %bb.23: ; %bb62.i
-; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
+; GLOBALNESS0-NEXT:    s_swappc_b64 s[30:31], s[84:85]
+; GLOBALNESS0-NEXT:    s_and_saveexec_b64 s[4:5], s[64:65]
+; GLOBALNESS0-NEXT:    s_cbranch_execz .LBB1_15
+; GLOBALNESS0-NEXT:  ; %bb.24: ; %bb62.i
+; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_17 Depth=2
 ; GLOBALNESS0-NEXT:    global_store_dwordx2 v[44:45], v[42:43], off
-; GLOBALNESS0-NEXT:    s_branch .LBB1_14
-; GLOBALNESS0-NEXT:  .LBB1_24: ; %Flow23
+; GLOBALNESS0-NEXT:    s_branch .LBB1_15
+; GLOBALNESS0-NEXT:  .LBB1_25: ; %Flow23
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS0-NEXT:    v_readlane_b32 s8, v60, 8
+; GLOBALNESS0-NEXT:    v_readlane_b32 s64, v57, 8
 ; GLOBALNESS0-NEXT:    v_pk_mov_b32 v[0:1], 0, 0
-; GLOBALNESS0-NEXT:    v_readlane_b32 s9, v60, 9
-; GLOBALNESS0-NEXT:  .LBB1_25: ; %Flow24
+; GLOBALNESS0-NEXT:    v_readlane_b32 s65, v57, 9
+; GLOBALNESS0-NEXT:  .LBB1_26: ; %Flow24
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS0-NEXT:    s_or_b64 exec, exec, s[98:99]
-; GLOBALNESS0-NEXT:    s_and_saveexec_b64 s[4:5], s[68:69]
-; GLOBALNESS0-NEXT:    s_load_dwordx4 s[68:71], s[48:49], 0x0
+; GLOBALNESS0-NEXT:    s_or_b64 exec, exec, s[80:81]
+; GLOBALNESS0-NEXT:    s_and_saveexec_b64 s[4:5], s[52:53]
+; GLOBALNESS0-NEXT:    s_load_dwordx4 s[52:55], s[48:49], 0x0
 ; GLOBALNESS0-NEXT:    s_cbranch_execz .LBB1_2
-; GLOBALNESS0-NEXT:  ; %bb.26: ; %bb67.i
+; GLOBALNESS0-NEXT:  ; %bb.27: ; %bb67.i
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
-; GLOBALNESS0-NEXT:    v_readlane_b32 s6, v60, 4
-; GLOBALNESS0-NEXT:    v_readlane_b32 s7, v60, 5
-; GLOBALNESS0-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_1
-; GLOBALNESS0-NEXT:  ; %bb.27: ; %bb69.i
+; GLOBALNESS0-NEXT:    v_readlane_b32 s6, v57, 4
+; GLOBALNESS0-NEXT:    v_readlane_b32 s7, v57, 5
+; GLOBALNESS0-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GLOBALNESS0-NEXT:    s_cselect_b32 s6, 1, 0
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s6, 1
+; GLOBALNESS0-NEXT:    s_cbranch_scc1 .LBB1_1
+; GLOBALNESS0-NEXT:  ; %bb.28: ; %bb69.i
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS0-NEXT:    global_store_dwordx2 v[44:45], v[42:43], off
 ; GLOBALNESS0-NEXT:    s_branch .LBB1_1
-; GLOBALNESS0-NEXT:  .LBB1_28: ; %bb73.i
+; GLOBALNESS0-NEXT:  .LBB1_29: ; %bb73.i
 ; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
 ; GLOBALNESS0-NEXT:    global_store_dwordx2 v[44:45], v[42:43], off
 ; GLOBALNESS0-NEXT:    s_branch .LBB1_2
-; GLOBALNESS0-NEXT:  .LBB1_29: ; %loop.exit.guard
-; GLOBALNESS0-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
+; GLOBALNESS0-NEXT:  .LBB1_30: ; %loop.exit.guard
+; GLOBALNESS0-NEXT:    v_readlane_b32 s4, v57, 10
+; GLOBALNESS0-NEXT:    v_readlane_b32 s5, v57, 11
+; GLOBALNESS0-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GLOBALNESS0-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s4, 1
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], -1
-; GLOBALNESS0-NEXT:    s_cbranch_vccz .LBB1_31
-; GLOBALNESS0-NEXT:  ; %bb.30: ; %bb7.i.i
+; GLOBALNESS0-NEXT:    s_cbranch_scc0 .LBB1_32
+; GLOBALNESS0-NEXT:  ; %bb.31: ; %bb7.i.i
 ; GLOBALNESS0-NEXT:    s_add_u32 s8, s48, 40
 ; GLOBALNESS0-NEXT:    s_addc_u32 s9, s49, 0
 ; GLOBALNESS0-NEXT:    s_getpc_b64 s[16:17]
@@ -579,17 +655,19 @@ define amdgpu_kernel void @kernel(ptr addrspace(1) %arg1.global, i1 %tmp3.i.i, i
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], s[38:39]
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], s[36:37]
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[10:11], s[34:35]
-; GLOBALNESS0-NEXT:    s_mov_b32 s12, s84
-; GLOBALNESS0-NEXT:    s_mov_b32 s13, s83
-; GLOBALNESS0-NEXT:    s_mov_b32 s14, s82
+; GLOBALNESS0-NEXT:    s_mov_b32 s12, s68
+; GLOBALNESS0-NEXT:    s_mov_b32 s13, s67
+; GLOBALNESS0-NEXT:    s_mov_b32 s14, s66
 ; GLOBALNESS0-NEXT:    v_mov_b32_e32 v31, v41
 ; GLOBALNESS0-NEXT:    ; implicit-def: $sgpr15
 ; GLOBALNESS0-NEXT:    s_swappc_b64 s[30:31], s[16:17]
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], 0
-; GLOBALNESS0-NEXT:  .LBB1_31: ; %Flow
-; GLOBALNESS0-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
-; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_33
-; GLOBALNESS0-NEXT:  ; %bb.32: ; %bb11.i.i
+; GLOBALNESS0-NEXT:  .LBB1_32: ; %Flow
+; GLOBALNESS0-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GLOBALNESS0-NEXT:    s_cselect_b32 s4, 1, 0
+; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s4, 1
+; GLOBALNESS0-NEXT:    s_cbranch_scc1 .LBB1_34
+; GLOBALNESS0-NEXT:  ; %bb.33: ; %bb11.i.i
 ; GLOBALNESS0-NEXT:    s_add_u32 s8, s48, 40
 ; GLOBALNESS0-NEXT:    s_addc_u32 s9, s49, 0
 ; GLOBALNESS0-NEXT:    s_getpc_b64 s[16:17]
@@ -598,13 +676,13 @@ define amdgpu_kernel void @kernel(ptr addrspace(1) %arg1.global, i1 %tmp3.i.i, i
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], s[38:39]
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], s[36:37]
 ; GLOBALNESS0-NEXT:    s_mov_b64 s[10:11], s[34:35]
-; GLOBALNESS0-NEXT:    s_mov_b32 s12, s84
-; GLOBALNESS0-NEXT:    s_mov_b32 s13, s83
-; GLOBALNESS0-NEXT:    s_mov_b32 s14, s82
+; GLOBALNESS0-NEXT:    s_mov_b32 s12, s68
+; GLOBALNESS0-NEXT:    s_mov_b32 s13, s67
+; GLOBALNESS0-NEXT:    s_mov_b32 s14, s66
 ; GLOBALNESS0-NEXT:    v_mov_b32_e32 v31, v41
 ; GLOBALNESS0-NEXT:    ; implicit-def: $sgpr15
 ; GLOBALNESS0-NEXT:    s_swappc_b64 s[30:31], s[16:17]
-; GLOBALNESS0-NEXT:  .LBB1_33: ; %UnifiedUnreachableBlock
+; GLOBALNESS0-NEXT:  .LBB1_34: ; %UnifiedUnreachableBlock
 bb:
   store i32 0, ptr addrspace(1) null, align 4
   %tmp4 = load i32, ptr addrspace(1) %arg1.global, align 4

diff  --git a/llvm/test/CodeGen/AMDGPU/uaddo.ll b/llvm/test/CodeGen/AMDGPU/uaddo.ll
index d9a88b2ba2867..4ef1782323563 100644
--- a/llvm/test/CodeGen/AMDGPU/uaddo.ll
+++ b/llvm/test/CodeGen/AMDGPU/uaddo.ll
@@ -109,13 +109,16 @@ define amdgpu_kernel void @s_uaddo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    v_mov_b32_e32 v0, s9
 ; SI-NEXT:    s_mov_b32 s5, s1
 ; SI-NEXT:    v_add_i32_e32 v0, vcc, s8, v0
+; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
+; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
 ; SI-NEXT:    s_mov_b32 s0, s2
 ; SI-NEXT:    s_mov_b32 s1, s3
 ; SI-NEXT:    s_mov_b32 s2, s6
 ; SI-NEXT:    s_mov_b32 s3, s7
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
-; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
-; SI-NEXT:    buffer_store_byte v1, off, s[0:3], 0
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_mov_b32_e32 v0, s4
+; SI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
 ; VI-LABEL: s_uaddo_i32:
@@ -125,13 +128,15 @@ define amdgpu_kernel void @s_uaddo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    v_mov_b32_e32 v4, s5
-; VI-NEXT:    v_mov_b32_e32 v1, s1
 ; VI-NEXT:    v_add_u32_e32 v4, vcc, s4, v4
+; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    v_mov_b32_e32 v3, s3
-; VI-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc
 ; VI-NEXT:    flat_store_dword v[0:1], v4
-; VI-NEXT:    flat_store_byte v[2:3], v5
+; VI-NEXT:    v_mov_b32_e32 v0, s0
+; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX9-LABEL: s_uaddo_i32:
@@ -142,9 +147,11 @@ define amdgpu_kernel void @s_uaddo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s7
 ; GFX9-NEXT:    v_add_co_u32_e32 v1, vcc, s6, v1
-; GFX9-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
 ; GFX9-NEXT:    global_store_dword v0, v1, s[0:1]
-; GFX9-NEXT:    global_store_byte v0, v2, s[2:3]
+; GFX9-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    v_mov_b32_e32 v1, s0
+; GFX9-NEXT:    global_store_byte v0, v1, s[2:3]
 ; GFX9-NEXT:    s_endpgm
 ;
 ; GFX10-LABEL: s_uaddo_i32:
@@ -152,12 +159,14 @@ define amdgpu_kernel void @s_uaddo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX10-NEXT:    s_clause 0x1
 ; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GFX10-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX10-NEXT:    v_add_co_u32 v1, s4, s6, s7
-; GFX10-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
-; GFX10-NEXT:    global_store_dword v0, v1, s[0:1]
-; GFX10-NEXT:    global_store_byte v0, v2, s[2:3]
+; GFX10-NEXT:    v_add_co_u32 v0, s4, s6, s7
+; GFX10-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v2, s4
+; GFX10-NEXT:    global_store_dword v1, v0, s[0:1]
+; GFX10-NEXT:    global_store_byte v1, v2, s[2:3]
 ; GFX10-NEXT:    s_endpgm
 ;
 ; GFX11-LABEL: s_uaddo_i32:
@@ -165,14 +174,15 @@ define amdgpu_kernel void @s_uaddo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b64 s[6:7], s[4:5], 0x34
 ; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-NEXT:    v_add_co_u32 v1, s4, s6, s7
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX11-NEXT:    v_add_co_u32 v0, s4, s6, s7
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s4
 ; GFX11-NEXT:    s_clause 0x1
-; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
-; GFX11-NEXT:    global_store_b8 v0, v2, s[2:3]
+; GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]
+; GFX11-NEXT:    global_store_b8 v1, v2, s[2:3]
 ; GFX11-NEXT:    s_endpgm
   %uadd = call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 %a, i32 %b)
   %val = extractvalue { i32, i1 } %uadd, 0
@@ -205,9 +215,12 @@ define amdgpu_kernel void @v_uaddo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    s_mov_b32 s5, s3
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v0, vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
 ; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 0
-; SI-NEXT:    buffer_store_byte v1, off, s[4:7], 0
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_mov_b32_e32 v0, s0
+; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
 ; VI-LABEL: v_uaddo_i32:
@@ -226,9 +239,11 @@ define amdgpu_kernel void @v_uaddo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI-NEXT:    v_mov_b32_e32 v3, s3
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_add_u32_e32 v4, vcc, v4, v5
-; VI-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dword v[0:1], v4
-; VI-NEXT:    flat_store_byte v[2:3], v5
+; VI-NEXT:    v_mov_b32_e32 v0, s0
+; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX9-LABEL: v_uaddo_i32:
@@ -240,9 +255,11 @@ define amdgpu_kernel void @v_uaddo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX9-NEXT:    global_load_dword v2, v0, s[14:15]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    v_add_co_u32_e32 v1, vcc, v1, v2
-; GFX9-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
+; GFX9-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dword v0, v1, s[8:9]
-; GFX9-NEXT:    global_store_byte v0, v2, s[10:11]
+; GFX9-NEXT:    v_mov_b32_e32 v1, s0
+; GFX9-NEXT:    global_store_byte v0, v1, s[10:11]
 ; GFX9-NEXT:    s_endpgm
 ;
 ; GFX10-LABEL: v_uaddo_i32:
@@ -255,7 +272,9 @@ define amdgpu_kernel void @v_uaddo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX10-NEXT:    global_load_dword v2, v0, s[14:15]
 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
 ; GFX10-NEXT:    v_add_co_u32 v1, s0, v1, v2
-; GFX10-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GFX10-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX10-NEXT:    global_store_dword v0, v1, s[8:9]
 ; GFX10-NEXT:    global_store_byte v0, v2, s[10:11]
 ; GFX10-NEXT:    s_endpgm
@@ -270,8 +289,10 @@ define amdgpu_kernel void @v_uaddo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX11-NEXT:    global_load_b32 v2, v0, s[6:7]
 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-NEXT:    v_add_co_u32 v1, s4, v1, v2
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_mov_b32_e32 v2, s4
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    global_store_b8 v0, v2, s[2:3]
@@ -312,13 +333,15 @@ define amdgpu_kernel void @v_uaddo_i32_novcc(ptr addrspace(1) %out, ptr addrspac
 ; SI-NEXT:    s_mov_b32 s4, s2
 ; SI-NEXT:    s_mov_b32 s5, s3
 ; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_add_i32_e32 v0, vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
+; SI-NEXT:    v_add_i32_e64 v0, s[0:1], v0, v1
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
 ; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 0
-; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0)
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    ;;#ASMSTART
 ; SI-NEXT:    ;;#ASMEND
-; SI-NEXT:    buffer_store_byte v1, off, s[4:7], 0
+; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_endpgm
 ;
@@ -337,13 +360,15 @@ define amdgpu_kernel void @v_uaddo_i32_novcc(ptr addrspace(1) %out, ptr addrspac
 ; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    v_mov_b32_e32 v3, s3
 ; VI-NEXT:    s_waitcnt vmcnt(0)
-; VI-NEXT:    v_add_u32_e32 v4, vcc, v4, v5
-; VI-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc
+; VI-NEXT:    v_add_u32_e64 v4, s[0:1], v4, v5
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dword v[0:1], v4
 ; VI-NEXT:    s_waitcnt vmcnt(0)
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    ;;#ASMSTART
 ; VI-NEXT:    ;;#ASMEND
-; VI-NEXT:    flat_store_byte v[2:3], v5
+; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_endpgm
 ;
@@ -355,13 +380,15 @@ define amdgpu_kernel void @v_uaddo_i32_novcc(ptr addrspace(1) %out, ptr addrspac
 ; GFX9-NEXT:    global_load_dword v1, v0, s[12:13]
 ; GFX9-NEXT:    global_load_dword v2, v0, s[14:15]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
-; GFX9-NEXT:    v_add_co_u32_e32 v1, vcc, v1, v2
-; GFX9-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
+; GFX9-NEXT:    v_add_co_u32_e64 v1, s[0:1], v1, v2
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dword v0, v1, s[8:9]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-NEXT:    v_mov_b32_e32 v1, s0
 ; GFX9-NEXT:    ;;#ASMSTART
 ; GFX9-NEXT:    ;;#ASMEND
-; GFX9-NEXT:    global_store_byte v0, v2, s[10:11]
+; GFX9-NEXT:    global_store_byte v0, v1, s[10:11]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_endpgm
 ;
@@ -375,7 +402,9 @@ define amdgpu_kernel void @v_uaddo_i32_novcc(ptr addrspace(1) %out, ptr addrspac
 ; GFX10-NEXT:    global_load_dword v2, v0, s[14:15]
 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
 ; GFX10-NEXT:    v_add_co_u32 v1, s0, v1, v2
-; GFX10-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GFX10-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX10-NEXT:    global_store_dword v0, v1, s[8:9]
 ; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0
 ; GFX10-NEXT:    ;;#ASMSTART
@@ -394,8 +423,10 @@ define amdgpu_kernel void @v_uaddo_i32_novcc(ptr addrspace(1) %out, ptr addrspac
 ; GFX11-NEXT:    global_load_b32 v2, v0, s[6:7]
 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-NEXT:    v_add_co_u32 v1, s4, v1, v2
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_mov_b32_e32 v2, s4
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1] dlc
 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
 ; GFX11-NEXT:    ;;#ASMSTART
@@ -425,20 +456,22 @@ define amdgpu_kernel void @s_uaddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    s_mov_b32 s11, 0xf000
 ; SI-NEXT:    s_mov_b32 s10, -1
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
-; SI-NEXT:    s_add_u32 s4, s4, s6
-; SI-NEXT:    s_addc_u32 s5, s5, s7
+; SI-NEXT:    s_add_u32 s6, s4, s6
+; SI-NEXT:    s_addc_u32 s7, s5, s7
+; SI-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; SI-NEXT:    s_mov_b32 s8, s0
 ; SI-NEXT:    s_mov_b32 s9, s1
-; SI-NEXT:    v_mov_b32_e32 v0, s4
-; SI-NEXT:    v_mov_b32_e32 v1, s5
-; SI-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s6
+; SI-NEXT:    v_mov_b32_e32 v1, s7
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
 ; SI-NEXT:    s_mov_b32 s0, s2
 ; SI-NEXT:    s_mov_b32 s1, s3
 ; SI-NEXT:    s_mov_b32 s2, s10
 ; SI-NEXT:    s_mov_b32 s3, s11
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 0
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -446,17 +479,19 @@ define amdgpu_kernel void @s_uaddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_load_dwordx8 s[0:7], s[4:5], 0x24
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
+; VI-NEXT:    v_mov_b32_e32 v2, s2
+; VI-NEXT:    s_add_u32 s2, s4, s6
+; VI-NEXT:    v_mov_b32_e32 v3, s3
+; VI-NEXT:    s_addc_u32 s3, s5, s7
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    s_add_u32 s0, s4, s6
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
-; VI-NEXT:    s_addc_u32 s1, s5, s7
-; VI-NEXT:    v_mov_b32_e32 v4, s0
-; VI-NEXT:    v_mov_b32_e32 v5, s1
 ; VI-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; VI-NEXT:    v_mov_b32_e32 v2, s2
-; VI-NEXT:    v_mov_b32_e32 v3, s3
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    v_mov_b32_e32 v4, s2
+; VI-NEXT:    v_mov_b32_e32 v5, s3
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dwordx2 v[0:1], v[4:5]
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
@@ -466,13 +501,15 @@ define amdgpu_kernel void @s_uaddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    s_add_u32 s0, s12, s14
-; GFX9-NEXT:    s_addc_u32 s1, s13, s15
+; GFX9-NEXT:    s_addc_u32 s2, s13, s15
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
-; GFX9-NEXT:    v_mov_b32_e32 v1, s1
 ; GFX9-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX9-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[0:1]
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-NEXT:    v_mov_b32_e32 v1, s2
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]
-; GFX9-NEXT:    global_store_byte v2, v3, s[10:11]
+; GFX9-NEXT:    v_mov_b32_e32 v0, s0
+; GFX9-NEXT:    global_store_byte v2, v0, s[10:11]
 ; GFX9-NEXT:    s_endpgm
 ;
 ; GFX10-LABEL: s_uaddo_i64:
@@ -482,10 +519,12 @@ define amdgpu_kernel void @s_uaddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX10-NEXT:    s_add_u32 s0, s12, s14
 ; GFX10-NEXT:    s_addc_u32 s1, s13, s15
+; GFX10-NEXT:    s_cselect_b32 s2, -1, 0
 ; GFX10-NEXT:    v_mov_b32_e32 v0, s0
-; GFX10-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX10-NEXT:    s_and_b32 s0, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX10-NEXT:    v_mov_b32_e32 v1, s1
-; GFX10-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s0
+; GFX10-NEXT:    v_mov_b32_e32 v3, s0
 ; GFX10-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]
 ; GFX10-NEXT:    global_store_byte v2, v3, s[10:11]
 ; GFX10-NEXT:    s_endpgm
@@ -496,10 +535,12 @@ define amdgpu_kernel void @s_uaddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_add_u32 s4, s4, s6
 ; GFX11-NEXT:    s_addc_u32 s5, s5, s7
+; GFX11-NEXT:    s_cselect_b32 s6, -1, 0
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s4
-; GFX11-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX11-NEXT:    s_and_b32 s4, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX11-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, s5
-; GFX11-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4
+; GFX11-NEXT:    v_mov_b32_e32 v3, s4
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
 ; GFX11-NEXT:    global_store_b8 v2, v3, s[2:3]
@@ -536,9 +577,11 @@ define amdgpu_kernel void @v_uaddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v0, vcc, v0, v2
 ; SI-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 0
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -559,8 +602,10 @@ define amdgpu_kernel void @v_uaddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, v0, v2
 ; VI-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dwordx2 v[4:5], v[0:1]
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_byte v[6:7], v0
 ; VI-NEXT:    s_endpgm
 ;
@@ -574,8 +619,10 @@ define amdgpu_kernel void @v_uaddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
 ; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX9-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dwordx2 v4, v[0:1], s[8:9]
-; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; GFX9-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX9-NEXT:    global_store_byte v4, v0, s[10:11]
 ; GFX9-NEXT:    s_endpgm
 ;
@@ -590,7 +637,9 @@ define amdgpu_kernel void @v_uaddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
 ; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
-; GFX10-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
+; GFX10-NEXT:    s_and_b32 s0, vcc_lo, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX10-NEXT:    global_store_dwordx2 v4, v[0:1], s[8:9]
 ; GFX10-NEXT:    global_store_byte v4, v2, s[10:11]
 ; GFX10-NEXT:    s_endpgm
@@ -606,7 +655,10 @@ define amdgpu_kernel void @v_uaddo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
+; GFX11-NEXT:    s_and_b32 s4, vcc_lo, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_mov_b32_e32 v2, s4
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b64 v4, v[0:1], s[0:1]
 ; GFX11-NEXT:    global_store_b8 v4, v2, s[2:3]
@@ -767,11 +819,16 @@ define amdgpu_kernel void @v_uaddo_v2i32(ptr addrspace(1) %out, ptr addrspace(1)
 ; SI-NEXT:    s_mov_b32 s5, s3
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_add_i32_e32 v1, vcc, v1, v3
-; SI-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc
-; SI-NEXT:    v_add_i32_e32 v0, vcc, v0, v2
-; SI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
+; SI-NEXT:    v_add_i32_e64 v0, s[0:1], v0, v2
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 0
-; SI-NEXT:    buffer_store_dwordx2 v[2:3], off, s[4:7], 0
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_mov_b32_e32 v0, s0
+; SI-NEXT:    v_mov_b32_e32 v1, s2
+; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
 ; VI-LABEL: v_uaddo_v2i32:
@@ -790,11 +847,15 @@ define amdgpu_kernel void @v_uaddo_v2i32(ptr addrspace(1) %out, ptr addrspace(1)
 ; VI-NEXT:    v_mov_b32_e32 v7, s3
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_add_u32_e32 v1, vcc, v1, v3
-; VI-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc
-; VI-NEXT:    v_add_u32_e32 v0, vcc, v0, v2
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
+; VI-NEXT:    v_add_u32_e64 v0, s[0:1], v0, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dwordx2 v[4:5], v[0:1]
-; VI-NEXT:    flat_store_dwordx2 v[6:7], v[2:3]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
+; VI-NEXT:    v_mov_b32_e32 v1, s2
+; VI-NEXT:    flat_store_dwordx2 v[6:7], v[0:1]
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX9-LABEL: v_uaddo_v2i32:
@@ -806,11 +867,15 @@ define amdgpu_kernel void @v_uaddo_v2i32(ptr addrspace(1) %out, ptr addrspace(1)
 ; GFX9-NEXT:    global_load_dwordx2 v[2:3], v4, s[14:15]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    v_add_co_u32_e32 v1, vcc, v1, v3
-; GFX9-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc
-; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
-; GFX9-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
+; GFX9-NEXT:    v_add_co_u32_e64 v0, s[0:1], v0, v2
+; GFX9-NEXT:    s_and_b64 s[2:3], vcc, exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dwordx2 v4, v[0:1], s[8:9]
-; GFX9-NEXT:    global_store_dwordx2 v4, v[2:3], s[10:11]
+; GFX9-NEXT:    v_mov_b32_e32 v0, s0
+; GFX9-NEXT:    v_mov_b32_e32 v1, s2
+; GFX9-NEXT:    global_store_dwordx2 v4, v[0:1], s[10:11]
 ; GFX9-NEXT:    s_endpgm
 ;
 ; GFX10-LABEL: v_uaddo_v2i32:
@@ -823,9 +888,13 @@ define amdgpu_kernel void @v_uaddo_v2i32(ptr addrspace(1) %out, ptr addrspace(1)
 ; GFX10-NEXT:    global_load_dwordx2 v[2:3], v4, s[14:15]
 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
 ; GFX10-NEXT:    v_add_co_u32 v1, s0, v1, v3
-; GFX10-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s0
-; GFX10-NEXT:    v_add_co_u32 v0, s0, v0, v2
-; GFX10-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GFX10-NEXT:    v_add_co_u32 v0, s1, v0, v2
+; GFX10-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v3, s0
+; GFX10-NEXT:    v_mov_b32_e32 v2, s1
 ; GFX10-NEXT:    global_store_dwordx2 v4, v[0:1], s[8:9]
 ; GFX10-NEXT:    global_store_dwordx2 v4, v[2:3], s[10:11]
 ; GFX10-NEXT:    s_endpgm
@@ -840,10 +909,13 @@ define amdgpu_kernel void @v_uaddo_v2i32(ptr addrspace(1) %out, ptr addrspace(1)
 ; GFX11-NEXT:    global_load_b64 v[2:3], v4, s[6:7]
 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-NEXT:    v_add_co_u32 v1, s4, v1, v3
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4
-; GFX11-NEXT:    v_add_co_u32 v0, s4, v0, v2
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX11-NEXT:    v_add_co_u32 v0, s5, v0, v2
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_and_b32 s5, s5, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v3, s4 :: v_dual_mov_b32 v2, s5
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b64 v4, v[0:1], s[0:1]
 ; GFX11-NEXT:    global_store_b64 v4, v[2:3], s[2:3]
@@ -873,8 +945,10 @@ define amdgpu_kernel void @s_uaddo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; SI-NEXT:    s_xor_b64 s[0:1], vcc, -1
 ; SI-NEXT:  .LBB8_2: ; %exit
 ; SI-NEXT:    s_load_dwordx4 s[4:7], s[4:5], 0x9
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
 ; SI-NEXT:    s_mov_b32 s11, 0xf000
 ; SI-NEXT:    s_mov_b32 s10, -1
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_mov_b32 s8, s4
 ; SI-NEXT:    s_mov_b32 s9, s5
@@ -884,7 +958,7 @@ define amdgpu_kernel void @s_uaddo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; SI-NEXT:    s_mov_b32 s7, s11
 ; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 0
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -901,14 +975,16 @@ define amdgpu_kernel void @s_uaddo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; VI-NEXT:    s_xor_b64 s[0:1], vcc, -1
 ; VI-NEXT:  .LBB8_2: ; %exit
 ; VI-NEXT:    s_load_dwordx4 s[4:7], s[4:5], 0x24
-; VI-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[0:1]
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    v_mov_b32_e32 v2, s5
 ; VI-NEXT:    v_mov_b32_e32 v3, s6
 ; VI-NEXT:    v_mov_b32_e32 v4, s7
 ; VI-NEXT:    flat_store_dword v[1:2], v0
-; VI-NEXT:    flat_store_byte v[3:4], v5
+; VI-NEXT:    v_mov_b32_e32 v0, s0
+; VI-NEXT:    flat_store_byte v[3:4], v0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX9-LABEL: s_uaddo_clamp_bit:
@@ -924,8 +1000,10 @@ define amdgpu_kernel void @s_uaddo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; GFX9-NEXT:    s_xor_b64 s[0:1], vcc, -1
 ; GFX9-NEXT:  .LBB8_2: ; %exit
 ; GFX9-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x24
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0
-; GFX9-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[0:1]
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    global_store_dword v1, v0, s[8:9]
 ; GFX9-NEXT:    global_store_byte v1, v2, s[10:11]
@@ -943,8 +1021,10 @@ define amdgpu_kernel void @s_uaddo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; GFX10-NEXT:    s_xor_b32 s0, s1, -1
 ; GFX10-NEXT:  .LBB8_2: ; %exit
 ; GFX10-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x24
+; GFX10-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX10-NEXT:    v_mov_b32_e32 v1, 0
-; GFX10-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GFX10-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX10-NEXT:    global_store_dword v1, v0, s[8:9]
 ; GFX10-NEXT:    global_store_byte v1, v2, s[10:11]
@@ -962,8 +1042,10 @@ define amdgpu_kernel void @s_uaddo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; GFX11-NEXT:    s_xor_b32 s0, s1, -1
 ; GFX11-NEXT:  .LBB8_2: ; %exit
 ; GFX11-NEXT:    s_load_b128 s[4:7], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v1, 0
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b32 v1, v0, s[4:5]
@@ -1012,13 +1094,15 @@ define amdgpu_kernel void @v_uaddo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; SI-NEXT:  .LBB9_2: ; %exit
 ; SI-NEXT:    s_mov_b32 s0, s4
 ; SI-NEXT:    s_mov_b32 s1, s5
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
+; SI-NEXT:    s_and_b64 s[0:1], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
 ; SI-NEXT:    s_mov_b32 s4, s6
 ; SI-NEXT:    s_mov_b32 s5, s7
 ; SI-NEXT:    s_mov_b32 s6, s2
 ; SI-NEXT:    s_mov_b32 s7, s3
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[8:9]
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -1040,12 +1124,14 @@ define amdgpu_kernel void @v_uaddo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; VI-NEXT:  ; %bb.1: ; %if
 ; VI-NEXT:    s_xor_b64 s[2:3], s[0:1], -1
 ; VI-NEXT:  .LBB9_2: ; %exit
+; VI-NEXT:    s_and_b64 s[0:1], s[2:3], exec
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    v_mov_b32_e32 v2, s5
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v3, s6
 ; VI-NEXT:    v_mov_b32_e32 v4, s7
 ; VI-NEXT:    flat_store_dword v[1:2], v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[2:3]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_byte v[3:4], v0
 ; VI-NEXT:    s_endpgm
 ;
@@ -1064,8 +1150,10 @@ define amdgpu_kernel void @v_uaddo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; GFX9-NEXT:  ; %bb.1: ; %if
 ; GFX9-NEXT:    s_xor_b64 s[2:3], s[0:1], -1
 ; GFX9-NEXT:  .LBB9_2: ; %exit
+; GFX9-NEXT:    s_and_b64 s[0:1], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dword v0, v1, s[8:9]
-; GFX9-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[2:3]
+; GFX9-NEXT:    v_mov_b32_e32 v1, s0
 ; GFX9-NEXT:    global_store_byte v0, v1, s[10:11]
 ; GFX9-NEXT:    s_endpgm
 ;
@@ -1085,7 +1173,9 @@ define amdgpu_kernel void @v_uaddo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; GFX10-NEXT:  ; %bb.1: ; %if
 ; GFX10-NEXT:    s_xor_b32 s0, s1, -1
 ; GFX10-NEXT:  .LBB9_2: ; %exit
-; GFX10-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GFX10-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX10-NEXT:    global_store_dword v0, v1, s[8:9]
 ; GFX10-NEXT:    global_store_byte v0, v2, s[10:11]
 ; GFX10-NEXT:    s_endpgm
@@ -1106,8 +1196,10 @@ define amdgpu_kernel void @v_uaddo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; GFX11-NEXT:  ; %bb.1: ; %if
 ; GFX11-NEXT:    s_xor_b32 s4, s5, -1
 ; GFX11-NEXT:  .LBB9_2: ; %exit
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    v_mov_b32_e32 v2, s4
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    global_store_b8 v0, v2, s[2:3]
@@ -1219,7 +1311,9 @@ define amdgpu_kernel void @uaddo_carry_of_add_carryout_used(ptr addrspace(1) %ou
 ; SI-NEXT:    s_and_b32 s1, s2, 1
 ; SI-NEXT:    v_mov_b32_e32 v0, s1
 ; SI-NEXT:    v_add_i32_e32 v0, vcc, s0, v0
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v1, s0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -1232,8 +1326,10 @@ define amdgpu_kernel void @uaddo_carry_of_add_carryout_used(ptr addrspace(1) %ou
 ; VI-NEXT:    s_and_b32 s1, s2, 1
 ; VI-NEXT:    v_mov_b32_e32 v0, s1
 ; VI-NEXT:    v_add_u32_e32 v0, vcc, s0, v0
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v2, s4
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
+; VI-NEXT:    v_mov_b32_e32 v1, s0
 ; VI-NEXT:    v_mov_b32_e32 v3, s5
 ; VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
 ; VI-NEXT:    s_endpgm
@@ -1248,7 +1344,9 @@ define amdgpu_kernel void @uaddo_carry_of_add_carryout_used(ptr addrspace(1) %ou
 ; GFX9-NEXT:    s_and_b32 s1, s2, 1
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s1
 ; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, s0, v0
-; GFX9-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
+; GFX9-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    v_mov_b32_e32 v1, s0
 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[6:7]
 ; GFX9-NEXT:    s_endpgm
 ;
@@ -1262,7 +1360,9 @@ define amdgpu_kernel void @uaddo_carry_of_add_carryout_used(ptr addrspace(1) %ou
 ; GFX10-NEXT:    s_add_i32 s0, s0, s1
 ; GFX10-NEXT:    s_and_b32 s1, s2, 1
 ; GFX10-NEXT:    v_add_co_u32 v0, s0, s0, s1
-; GFX10-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s0
+; GFX10-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v1, s0
 ; GFX10-NEXT:    global_store_dwordx2 v2, v[0:1], s[6:7]
 ; GFX10-NEXT:    s_endpgm
 ;
@@ -1271,13 +1371,14 @@ define amdgpu_kernel void @uaddo_carry_of_add_carryout_used(ptr addrspace(1) %ou
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2c
 ; GFX11-NEXT:    s_load_b64 s[4:5], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_add_i32 s0, s0, s1
 ; GFX11-NEXT:    s_and_b32 s1, s2, 1
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
 ; GFX11-NEXT:    v_add_co_u32 v0, s0, s0, s1
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s0
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, s0
 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[4:5]
 ; GFX11-NEXT:    s_endpgm
   %xy     = add i32 %x, %y

diff  --git a/llvm/test/CodeGen/AMDGPU/udiv64.ll b/llvm/test/CodeGen/AMDGPU/udiv64.ll
index c4f4962ea7bce..2443d511cf199 100644
--- a/llvm/test/CodeGen/AMDGPU/udiv64.ll
+++ b/llvm/test/CodeGen/AMDGPU/udiv64.ll
@@ -126,7 +126,6 @@ define amdgpu_kernel void @s_test_udiv_i64(ptr addrspace(1) %out, i64 %x, i64 %y
 ; GCN-IR-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0xd
 ; GCN-IR-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9
 ; GCN-IR-NEXT:    s_mov_b64 s[4:5], 0
-; GCN-IR-NEXT:    s_mov_b32 s11, 0
 ; GCN-IR-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-IR-NEXT:    v_cmp_eq_u64_e64 s[8:9], s[6:7], 0
 ; GCN-IR-NEXT:    v_cmp_eq_u64_e64 s[12:13], s[2:3], 0
@@ -142,16 +141,21 @@ define amdgpu_kernel void @s_test_udiv_i64(ptr addrspace(1) %out, i64 %x, i64 %y
 ; GCN-IR-NEXT:    s_cselect_b32 s9, 0, s3
 ; GCN-IR-NEXT:    s_cselect_b32 s8, 0, s2
 ; GCN-IR-NEXT:    s_or_b64 s[14:15], s[14:15], s[18:19]
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[14:15]
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB0_5
+; GCN-IR-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; GCN-IR-NEXT:    s_cselect_b32 s11, 1, 0
+; GCN-IR-NEXT:    s_cmp_lg_u32 s11, 1
+; GCN-IR-NEXT:    s_mov_b32 s11, 0
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB0_5
 ; GCN-IR-NEXT:  ; %bb.1: ; %udiv-bb1
 ; GCN-IR-NEXT:    s_add_u32 s14, s12, 1
 ; GCN-IR-NEXT:    s_addc_u32 s8, s13, 0
 ; GCN-IR-NEXT:    s_cselect_b64 s[8:9], -1, 0
-; GCN-IR-NEXT:    s_sub_i32 s12, 63, s12
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
-; GCN-IR-NEXT:    s_lshl_b64 s[8:9], s[2:3], s12
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB0_4
+; GCN-IR-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GCN-IR-NEXT:    s_cselect_b32 s13, 1, 0
+; GCN-IR-NEXT:    s_sub_i32 s8, 63, s12
+; GCN-IR-NEXT:    s_lshl_b64 s[8:9], s[2:3], s8
+; GCN-IR-NEXT:    s_cmp_lg_u32 s13, 1
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB0_4
 ; GCN-IR-NEXT:  ; %bb.2: ; %udiv-preheader
 ; GCN-IR-NEXT:    s_lshr_b64 s[12:13], s[2:3], s14
 ; GCN-IR-NEXT:    s_add_u32 s14, s6, -1
@@ -1013,17 +1017,21 @@ define amdgpu_kernel void @s_test_udiv_k_num_i64(ptr addrspace(1) %out, i64 %x)
 ; GCN-IR-NEXT:    s_and_b64 s[6:7], s[10:11], exec
 ; GCN-IR-NEXT:    s_cselect_b32 s6, 0, 24
 ; GCN-IR-NEXT:    s_or_b64 s[10:11], s[10:11], s[12:13]
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[10:11]
+; GCN-IR-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; GCN-IR-NEXT:    s_cselect_b32 s7, 1, 0
+; GCN-IR-NEXT:    s_cmp_lg_u32 s7, 1
 ; GCN-IR-NEXT:    s_mov_b32 s7, 0
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB8_5
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB8_5
 ; GCN-IR-NEXT:  ; %bb.1: ; %udiv-bb1
 ; GCN-IR-NEXT:    s_add_u32 s10, s8, 1
 ; GCN-IR-NEXT:    s_addc_u32 s6, s9, 0
 ; GCN-IR-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN-IR-NEXT:    s_sub_i32 s8, 63, s8
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN-IR-NEXT:    s_lshl_b64 s[6:7], 24, s8
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB8_4
+; GCN-IR-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN-IR-NEXT:    s_cselect_b32 s9, 1, 0
+; GCN-IR-NEXT:    s_sub_i32 s6, 63, s8
+; GCN-IR-NEXT:    s_lshl_b64 s[6:7], 24, s6
+; GCN-IR-NEXT:    s_cmp_lg_u32 s9, 1
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB8_4
 ; GCN-IR-NEXT:  ; %bb.2: ; %udiv-preheader
 ; GCN-IR-NEXT:    s_lshr_b64 s[10:11], 24, s10
 ; GCN-IR-NEXT:    s_add_u32 s12, s2, -1
@@ -1380,17 +1388,21 @@ define amdgpu_kernel void @s_test_udiv_k_den_i64(ptr addrspace(1) %out, i64 %x)
 ; GCN-IR-NEXT:    s_cselect_b32 s7, 0, s3
 ; GCN-IR-NEXT:    s_cselect_b32 s6, 0, s2
 ; GCN-IR-NEXT:    s_or_b64 s[4:5], s[4:5], s[12:13]
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN-IR-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN-IR-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN-IR-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN-IR-NEXT:    s_mov_b64 s[4:5], 0
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB11_5
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB11_5
 ; GCN-IR-NEXT:  ; %bb.1: ; %udiv-bb1
 ; GCN-IR-NEXT:    s_add_u32 s11, s8, 1
 ; GCN-IR-NEXT:    s_addc_u32 s6, s9, 0
 ; GCN-IR-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN-IR-NEXT:    s_sub_i32 s8, 63, s8
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN-IR-NEXT:    s_lshl_b64 s[6:7], s[2:3], s8
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB11_4
+; GCN-IR-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN-IR-NEXT:    s_cselect_b32 s9, 1, 0
+; GCN-IR-NEXT:    s_sub_i32 s6, 63, s8
+; GCN-IR-NEXT:    s_lshl_b64 s[6:7], s[2:3], s6
+; GCN-IR-NEXT:    s_cmp_lg_u32 s9, 1
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB11_4
 ; GCN-IR-NEXT:  ; %bb.2: ; %udiv-preheader
 ; GCN-IR-NEXT:    s_lshr_b64 s[2:3], s[2:3], s11
 ; GCN-IR-NEXT:    s_add_u32 s10, s10, 0xffffffc4

diff  --git a/llvm/test/CodeGen/AMDGPU/undefined-subreg-liverange.ll b/llvm/test/CodeGen/AMDGPU/undefined-subreg-liverange.ll
index 237ff114b50ab..a66db0456ea17 100644
--- a/llvm/test/CodeGen/AMDGPU/undefined-subreg-liverange.ll
+++ b/llvm/test/CodeGen/AMDGPU/undefined-subreg-liverange.ll
@@ -55,14 +55,15 @@ define amdgpu_ps float @valley_partially_undef_copy() #0 {
 ; CHECK-NEXT:    v_mov_b32_e32 v2, 0x7fc00000
 ; CHECK-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
 ; CHECK-NEXT:    buffer_store_dword v2, off, s[0:3], 0
-; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v1
-; CHECK-NEXT:    s_waitcnt expcnt(1)
-; CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
-; CHECK-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v1
+; CHECK-NEXT:    v_readfirstlane_b32 s0, v1
+; CHECK-NEXT:    s_cmp_lg_u32 s0, 0
+; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
 ; CHECK-NEXT:  .LBB1_1: ; %bb9
 ; CHECK-NEXT:    ; =>This Inner Loop Header: Depth=1
-; CHECK-NEXT:    s_and_b64 vcc, exec, s[0:1]
-; CHECK-NEXT:    s_cbranch_vccnz .LBB1_1
+; CHECK-NEXT:    s_and_b64 s[2:3], s[0:1], exec
+; CHECK-NEXT:    s_cselect_b32 s2, 1, 0
+; CHECK-NEXT:    s_cmp_lg_u32 s2, 1
+; CHECK-NEXT:    s_cbranch_scc1 .LBB1_1
 ; CHECK-NEXT:  ; %bb.2: ; %bb11
 ; CHECK-NEXT:    s_mov_b32 s3, 0xf000
 ; CHECK-NEXT:    s_mov_b32 s2, -1

diff  --git a/llvm/test/CodeGen/AMDGPU/uniform-cfg.ll b/llvm/test/CodeGen/AMDGPU/uniform-cfg.ll
index d6495648a594f..486662a25d169 100644
--- a/llvm/test/CodeGen/AMDGPU/uniform-cfg.ll
+++ b/llvm/test/CodeGen/AMDGPU/uniform-cfg.ll
@@ -456,9 +456,11 @@ define amdgpu_kernel void @icmp_2_users(ptr addrspace(1) %out, i32 %cond) {
 ; SI-NEXT:    s_cbranch_scc1 .LBB8_2
 ; SI-NEXT:  ; %bb.1: ; %IF
 ; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x9
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, -1, 0
 ; SI-NEXT:    s_mov_b32 s7, 0xf000
 ; SI-NEXT:    s_mov_b32 s6, -1
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[0:1]
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; SI-NEXT:  .LBB8_2: ; %ENDIF
@@ -474,9 +476,11 @@ define amdgpu_kernel void @icmp_2_users(ptr addrspace(1) %out, i32 %cond) {
 ; VI-NEXT:    s_cbranch_scc1 .LBB8_2
 ; VI-NEXT:  ; %bb.1: ; %IF
 ; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x24
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, -1, 0
 ; VI-NEXT:    s_mov_b32 s7, 0xf000
 ; VI-NEXT:    s_mov_b32 s6, -1
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[0:1]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
 ; VI-NEXT:  .LBB8_2: ; %ENDIF
@@ -509,9 +513,9 @@ define amdgpu_kernel void @icmp_users_
diff erent_blocks(i32 %cond0, i32 %cond1, p
 ; SI-NEXT:  .LBB9_2: ; %bb9
 ; SI-NEXT:    s_endpgm
 ; SI-NEXT:  .LBB9_3: ; %bb7
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[0:1]
 ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0xb
-; SI-NEXT:    v_sub_i32_e32 v0, vcc, v0, v1
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    v_subrev_i32_e32 v0, vcc, s2, v0
 ; SI-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
@@ -532,9 +536,9 @@ define amdgpu_kernel void @icmp_users_
diff erent_blocks(i32 %cond0, i32 %cond1, p
 ; VI-NEXT:  .LBB9_2: ; %bb9
 ; VI-NEXT:    s_endpgm
 ; VI-NEXT:  .LBB9_3: ; %bb7
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[0:1]
 ; VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2c
-; VI-NEXT:    v_sub_u32_e32 v0, vcc, v0, v1
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    v_subrev_u32_e32 v0, vcc, s2, v0
 ; VI-NEXT:    s_mov_b32 s3, 0xf000
 ; VI-NEXT:    s_mov_b32 s2, -1
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)

diff  --git a/llvm/test/CodeGen/AMDGPU/unstructured-cfg-def-use-issue.ll b/llvm/test/CodeGen/AMDGPU/unstructured-cfg-def-use-issue.ll
index e12028f674d73..fa0bdd8ad9ac9 100644
--- a/llvm/test/CodeGen/AMDGPU/unstructured-cfg-def-use-issue.ll
+++ b/llvm/test/CodeGen/AMDGPU/unstructured-cfg-def-use-issue.ll
@@ -39,14 +39,29 @@ define hidden void @widget() #0 {
 ; GCN-NEXT:    s_mov_b64 s[18:19], 0
 ; GCN-NEXT:    s_waitcnt vmcnt(0)
 ; GCN-NEXT:    v_cmp_gt_i32_e32 vcc, 21, v0
-; GCN-NEXT:    s_cbranch_vccz .LBB0_9
-; GCN-NEXT:  ; %bb.1: ; %Flow
-; GCN-NEXT:    s_andn2_b64 vcc, exec, s[20:21]
-; GCN-NEXT:    s_cbranch_vccz .LBB0_10
-; GCN-NEXT:  .LBB0_2: ; %Flow1
-; GCN-NEXT:    s_andn2_b64 vcc, exec, s[18:19]
-; GCN-NEXT:    s_cbranch_vccnz .LBB0_4
-; GCN-NEXT:  .LBB0_3: ; %bb9
+; GCN-NEXT:    v_readfirstlane_b32 s22, v0
+; GCN-NEXT:    s_cbranch_vccnz .LBB0_2
+; GCN-NEXT:  ; %bb.1: ; %bb2
+; GCN-NEXT:    s_cmp_eq_u32 s22, 21
+; GCN-NEXT:    s_cselect_b64 s[54:55], -1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s22, 21
+; GCN-NEXT:    s_cselect_b64 s[18:19], -1, 0
+; GCN-NEXT:    s_mov_b64 s[20:21], 0
+; GCN-NEXT:  .LBB0_2: ; %Flow
+; GCN-NEXT:    s_and_b64 s[20:21], s[20:21], exec
+; GCN-NEXT:    s_cselect_b32 s20, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s20, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB0_4
+; GCN-NEXT:  ; %bb.3: ; %bb4
+; GCN-NEXT:    s_cmp_lg_u32 s22, 9
+; GCN-NEXT:    s_mov_b64 s[16:17], -1
+; GCN-NEXT:    s_cselect_b64 s[18:19], -1, 0
+; GCN-NEXT:  .LBB0_4: ; %Flow1
+; GCN-NEXT:    s_and_b64 s[18:19], s[18:19], exec
+; GCN-NEXT:    s_cselect_b32 s18, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s18, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB0_6
+; GCN-NEXT:  ; %bb.5: ; %bb9
 ; GCN-NEXT:    s_getpc_b64 s[16:17]
 ; GCN-NEXT:    s_add_u32 s16, s16, wibble at rel32@lo+4
 ; GCN-NEXT:    s_addc_u32 s17, s17, wibble at rel32@hi+12
@@ -74,25 +89,27 @@ define hidden void @widget() #0 {
 ; GCN-NEXT:    s_mov_b64 s[10:11], s[48:49]
 ; GCN-NEXT:    s_mov_b64 s[16:17], 0
 ; GCN-NEXT:    s_or_b64 s[54:55], s[18:19], s[20:21]
-; GCN-NEXT:  .LBB0_4: ; %Flow2
+; GCN-NEXT:  .LBB0_6: ; %Flow2
 ; GCN-NEXT:    s_and_saveexec_b64 s[18:19], s[54:55]
 ; GCN-NEXT:    s_xor_b64 s[18:19], exec, s[18:19]
-; GCN-NEXT:    s_cbranch_execz .LBB0_6
-; GCN-NEXT:  ; %bb.5: ; %bb12
+; GCN-NEXT:    s_cbranch_execz .LBB0_8
+; GCN-NEXT:  ; %bb.7: ; %bb12
 ; GCN-NEXT:    v_mov_b32_e32 v0, 0
 ; GCN-NEXT:    v_mov_b32_e32 v1, 0
 ; GCN-NEXT:    v_mov_b32_e32 v2, 0
 ; GCN-NEXT:    flat_store_dword v[0:1], v2
-; GCN-NEXT:  .LBB0_6: ; %Flow3
+; GCN-NEXT:  .LBB0_8: ; %Flow3
 ; GCN-NEXT:    s_or_b64 exec, exec, s[18:19]
-; GCN-NEXT:    s_andn2_b64 vcc, exec, s[16:17]
-; GCN-NEXT:    s_cbranch_vccnz .LBB0_8
-; GCN-NEXT:  ; %bb.7: ; %bb7
+; GCN-NEXT:    s_and_b64 s[16:17], s[16:17], exec
+; GCN-NEXT:    s_cselect_b32 s16, 1, 0
+; GCN-NEXT:    s_cmp_lg_u32 s16, 1
+; GCN-NEXT:    s_cbranch_scc1 .LBB0_10
+; GCN-NEXT:  ; %bb.9: ; %bb7
 ; GCN-NEXT:    s_getpc_b64 s[16:17]
 ; GCN-NEXT:    s_add_u32 s16, s16, wibble at rel32@lo+4
 ; GCN-NEXT:    s_addc_u32 s17, s17, wibble at rel32@hi+12
 ; GCN-NEXT:    s_swappc_b64 s[30:31], s[16:17]
-; GCN-NEXT:  .LBB0_8: ; %UnifiedReturnBlock
+; GCN-NEXT:  .LBB0_10: ; %UnifiedReturnBlock
 ; GCN-NEXT:    buffer_load_dword v40, off, s[0:3], s33 ; 4-byte Folded Reload
 ; GCN-NEXT:    v_readlane_b32 s30, v41, 14
 ; GCN-NEXT:    v_readlane_b32 s31, v41, 15
@@ -118,16 +135,6 @@ define hidden void @widget() #0 {
 ; GCN-NEXT:    s_mov_b32 s33, s4
 ; GCN-NEXT:    s_waitcnt vmcnt(0)
 ; GCN-NEXT:    s_setpc_b64 s[30:31]
-; GCN-NEXT:  .LBB0_9: ; %bb2
-; GCN-NEXT:    v_cmp_eq_u32_e64 s[54:55], 21, v0
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[18:19], 21, v0
-; GCN-NEXT:    s_cbranch_execnz .LBB0_2
-; GCN-NEXT:  .LBB0_10: ; %bb4
-; GCN-NEXT:    s_mov_b64 s[16:17], -1
-; GCN-NEXT:    v_cmp_ne_u32_e64 s[18:19], 9, v0
-; GCN-NEXT:    s_andn2_b64 vcc, exec, s[18:19]
-; GCN-NEXT:    s_cbranch_vccz .LBB0_3
-; GCN-NEXT:    s_branch .LBB0_4
 ; SI-OPT-LABEL: @widget(
 ; SI-OPT-NEXT:  bb:
 ; SI-OPT-NEXT:    [[TMP:%.*]] = load i32, ptr addrspace(1) null, align 16

diff  --git a/llvm/test/CodeGen/AMDGPU/urem64.ll b/llvm/test/CodeGen/AMDGPU/urem64.ll
index d87b021d1b9d6..048a87034f048 100644
--- a/llvm/test/CodeGen/AMDGPU/urem64.ll
+++ b/llvm/test/CodeGen/AMDGPU/urem64.ll
@@ -152,7 +152,6 @@ define amdgpu_kernel void @s_test_urem_i64(ptr addrspace(1) %out, i64 %x, i64 %y
 ; GCN-IR-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0xd
 ; GCN-IR-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9
 ; GCN-IR-NEXT:    s_mov_b64 s[4:5], 0
-; GCN-IR-NEXT:    s_mov_b32 s11, 0
 ; GCN-IR-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-IR-NEXT:    v_cmp_eq_u64_e64 s[8:9], s[6:7], 0
 ; GCN-IR-NEXT:    v_cmp_eq_u64_e64 s[12:13], s[2:3], 0
@@ -168,16 +167,21 @@ define amdgpu_kernel void @s_test_urem_i64(ptr addrspace(1) %out, i64 %x, i64 %y
 ; GCN-IR-NEXT:    s_cselect_b32 s9, 0, s3
 ; GCN-IR-NEXT:    s_cselect_b32 s8, 0, s2
 ; GCN-IR-NEXT:    s_or_b64 s[14:15], s[14:15], s[18:19]
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[14:15]
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB0_5
+; GCN-IR-NEXT:    s_and_b64 s[14:15], s[14:15], exec
+; GCN-IR-NEXT:    s_cselect_b32 s11, 1, 0
+; GCN-IR-NEXT:    s_cmp_lg_u32 s11, 1
+; GCN-IR-NEXT:    s_mov_b32 s11, 0
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB0_5
 ; GCN-IR-NEXT:  ; %bb.1: ; %udiv-bb1
 ; GCN-IR-NEXT:    s_add_u32 s14, s12, 1
 ; GCN-IR-NEXT:    s_addc_u32 s8, s13, 0
 ; GCN-IR-NEXT:    s_cselect_b64 s[8:9], -1, 0
-; GCN-IR-NEXT:    s_sub_i32 s12, 63, s12
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
-; GCN-IR-NEXT:    s_lshl_b64 s[8:9], s[2:3], s12
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB0_4
+; GCN-IR-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GCN-IR-NEXT:    s_cselect_b32 s13, 1, 0
+; GCN-IR-NEXT:    s_sub_i32 s8, 63, s12
+; GCN-IR-NEXT:    s_lshl_b64 s[8:9], s[2:3], s8
+; GCN-IR-NEXT:    s_cmp_lg_u32 s13, 1
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB0_4
 ; GCN-IR-NEXT:  ; %bb.2: ; %udiv-preheader
 ; GCN-IR-NEXT:    s_lshr_b64 s[12:13], s[2:3], s14
 ; GCN-IR-NEXT:    s_add_u32 s14, s6, -1
@@ -967,17 +971,21 @@ define amdgpu_kernel void @s_test_urem_k_num_i64(ptr addrspace(1) %out, i64 %x)
 ; GCN-IR-NEXT:    s_and_b64 s[6:7], s[10:11], exec
 ; GCN-IR-NEXT:    s_cselect_b32 s6, 0, 24
 ; GCN-IR-NEXT:    s_or_b64 s[10:11], s[10:11], s[12:13]
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[10:11]
+; GCN-IR-NEXT:    s_and_b64 s[10:11], s[10:11], exec
+; GCN-IR-NEXT:    s_cselect_b32 s7, 1, 0
+; GCN-IR-NEXT:    s_cmp_lg_u32 s7, 1
 ; GCN-IR-NEXT:    s_mov_b32 s7, 0
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB6_5
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB6_5
 ; GCN-IR-NEXT:  ; %bb.1: ; %udiv-bb1
 ; GCN-IR-NEXT:    s_add_u32 s10, s8, 1
 ; GCN-IR-NEXT:    s_addc_u32 s6, s9, 0
 ; GCN-IR-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN-IR-NEXT:    s_sub_i32 s8, 63, s8
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN-IR-NEXT:    s_lshl_b64 s[6:7], 24, s8
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB6_4
+; GCN-IR-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN-IR-NEXT:    s_cselect_b32 s9, 1, 0
+; GCN-IR-NEXT:    s_sub_i32 s6, 63, s8
+; GCN-IR-NEXT:    s_lshl_b64 s[6:7], 24, s6
+; GCN-IR-NEXT:    s_cmp_lg_u32 s9, 1
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB6_4
 ; GCN-IR-NEXT:  ; %bb.2: ; %udiv-preheader
 ; GCN-IR-NEXT:    s_lshr_b64 s[10:11], 24, s10
 ; GCN-IR-NEXT:    s_add_u32 s12, s2, -1
@@ -1084,17 +1092,21 @@ define amdgpu_kernel void @s_test_urem_k_den_i64(ptr addrspace(1) %out, i64 %x)
 ; GCN-IR-NEXT:    s_cselect_b32 s7, 0, s3
 ; GCN-IR-NEXT:    s_cselect_b32 s6, 0, s2
 ; GCN-IR-NEXT:    s_or_b64 s[4:5], s[4:5], s[12:13]
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
+; GCN-IR-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN-IR-NEXT:    s_cselect_b32 s4, 1, 0
+; GCN-IR-NEXT:    s_cmp_lg_u32 s4, 1
 ; GCN-IR-NEXT:    s_mov_b64 s[4:5], 0
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB7_5
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB7_5
 ; GCN-IR-NEXT:  ; %bb.1: ; %udiv-bb1
 ; GCN-IR-NEXT:    s_add_u32 s11, s8, 1
 ; GCN-IR-NEXT:    s_addc_u32 s6, s9, 0
 ; GCN-IR-NEXT:    s_cselect_b64 s[6:7], -1, 0
-; GCN-IR-NEXT:    s_sub_i32 s8, 63, s8
-; GCN-IR-NEXT:    s_andn2_b64 vcc, exec, s[6:7]
-; GCN-IR-NEXT:    s_lshl_b64 s[6:7], s[2:3], s8
-; GCN-IR-NEXT:    s_cbranch_vccz .LBB7_4
+; GCN-IR-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN-IR-NEXT:    s_cselect_b32 s9, 1, 0
+; GCN-IR-NEXT:    s_sub_i32 s6, 63, s8
+; GCN-IR-NEXT:    s_lshl_b64 s[6:7], s[2:3], s6
+; GCN-IR-NEXT:    s_cmp_lg_u32 s9, 1
+; GCN-IR-NEXT:    s_cbranch_scc0 .LBB7_4
 ; GCN-IR-NEXT:  ; %bb.2: ; %udiv-preheader
 ; GCN-IR-NEXT:    s_lshr_b64 s[8:9], s[2:3], s11
 ; GCN-IR-NEXT:    s_add_u32 s12, s10, 0xffffffc4

diff  --git a/llvm/test/CodeGen/AMDGPU/usubo.ll b/llvm/test/CodeGen/AMDGPU/usubo.ll
index 9286095352fe2..3e50534ef12a5 100644
--- a/llvm/test/CodeGen/AMDGPU/usubo.ll
+++ b/llvm/test/CodeGen/AMDGPU/usubo.ll
@@ -108,13 +108,16 @@ define amdgpu_kernel void @s_usubo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    v_mov_b32_e32 v0, s9
 ; SI-NEXT:    s_mov_b32 s5, s1
 ; SI-NEXT:    v_sub_i32_e32 v0, vcc, s8, v0
+; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
+; SI-NEXT:    s_and_b64 s[4:5], vcc, exec
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
 ; SI-NEXT:    s_mov_b32 s0, s2
 ; SI-NEXT:    s_mov_b32 s1, s3
 ; SI-NEXT:    s_mov_b32 s2, s6
 ; SI-NEXT:    s_mov_b32 s3, s7
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
-; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
-; SI-NEXT:    buffer_store_byte v1, off, s[0:3], 0
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_mov_b32_e32 v0, s4
+; SI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
 ; VI-LABEL: s_usubo_i32:
@@ -124,13 +127,15 @@ define amdgpu_kernel void @s_usubo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    v_mov_b32_e32 v4, s5
-; VI-NEXT:    v_mov_b32_e32 v1, s1
 ; VI-NEXT:    v_sub_u32_e32 v4, vcc, s4, v4
+; VI-NEXT:    v_mov_b32_e32 v1, s1
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    v_mov_b32_e32 v3, s3
-; VI-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc
 ; VI-NEXT:    flat_store_dword v[0:1], v4
-; VI-NEXT:    flat_store_byte v[2:3], v5
+; VI-NEXT:    v_mov_b32_e32 v0, s0
+; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX9-LABEL: s_usubo_i32:
@@ -141,9 +146,11 @@ define amdgpu_kernel void @s_usubo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    v_mov_b32_e32 v1, s7
 ; GFX9-NEXT:    v_sub_co_u32_e32 v1, vcc, s6, v1
-; GFX9-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
 ; GFX9-NEXT:    global_store_dword v0, v1, s[0:1]
-; GFX9-NEXT:    global_store_byte v0, v2, s[2:3]
+; GFX9-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    v_mov_b32_e32 v1, s0
+; GFX9-NEXT:    global_store_byte v0, v1, s[2:3]
 ; GFX9-NEXT:    s_endpgm
 ;
 ; GFX10-LABEL: s_usubo_i32:
@@ -151,12 +158,14 @@ define amdgpu_kernel void @s_usubo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX10-NEXT:    s_clause 0x1
 ; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
 ; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
-; GFX10-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX10-NEXT:    v_sub_co_u32 v1, s4, s6, s7
-; GFX10-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
-; GFX10-NEXT:    global_store_dword v0, v1, s[0:1]
-; GFX10-NEXT:    global_store_byte v0, v2, s[2:3]
+; GFX10-NEXT:    v_sub_co_u32 v0, s4, s6, s7
+; GFX10-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v2, s4
+; GFX10-NEXT:    global_store_dword v1, v0, s[0:1]
+; GFX10-NEXT:    global_store_byte v1, v2, s[2:3]
 ; GFX10-NEXT:    s_endpgm
 ;
 ; GFX11-LABEL: s_usubo_i32:
@@ -164,14 +173,15 @@ define amdgpu_kernel void @s_usubo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b64 s[6:7], s[4:5], 0x34
 ; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
-; GFX11-NEXT:    v_sub_co_u32 v1, s4, s6, s7
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX11-NEXT:    v_sub_co_u32 v0, s4, s6, s7
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s4
 ; GFX11-NEXT:    s_clause 0x1
-; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
-; GFX11-NEXT:    global_store_b8 v0, v2, s[2:3]
+; GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]
+; GFX11-NEXT:    global_store_b8 v1, v2, s[2:3]
 ; GFX11-NEXT:    s_endpgm
   %usub = call { i32, i1 } @llvm.usub.with.overflow.i32(i32 %a, i32 %b)
   %val = extractvalue { i32, i1 } %usub, 0
@@ -204,9 +214,12 @@ define amdgpu_kernel void @v_usubo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    s_mov_b32 s5, s3
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_sub_i32_e32 v0, vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
 ; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 0
-; SI-NEXT:    buffer_store_byte v1, off, s[4:7], 0
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_mov_b32_e32 v0, s0
+; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
 ; VI-LABEL: v_usubo_i32:
@@ -225,9 +238,11 @@ define amdgpu_kernel void @v_usubo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI-NEXT:    v_mov_b32_e32 v3, s3
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_sub_u32_e32 v4, vcc, v4, v5
-; VI-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dword v[0:1], v4
-; VI-NEXT:    flat_store_byte v[2:3], v5
+; VI-NEXT:    v_mov_b32_e32 v0, s0
+; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX9-LABEL: v_usubo_i32:
@@ -239,9 +254,11 @@ define amdgpu_kernel void @v_usubo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX9-NEXT:    global_load_dword v2, v0, s[14:15]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    v_sub_co_u32_e32 v1, vcc, v1, v2
-; GFX9-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
+; GFX9-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dword v0, v1, s[8:9]
-; GFX9-NEXT:    global_store_byte v0, v2, s[10:11]
+; GFX9-NEXT:    v_mov_b32_e32 v1, s0
+; GFX9-NEXT:    global_store_byte v0, v1, s[10:11]
 ; GFX9-NEXT:    s_endpgm
 ;
 ; GFX10-LABEL: v_usubo_i32:
@@ -254,7 +271,9 @@ define amdgpu_kernel void @v_usubo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX10-NEXT:    global_load_dword v2, v0, s[14:15]
 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
 ; GFX10-NEXT:    v_sub_co_u32 v1, s0, v1, v2
-; GFX10-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GFX10-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX10-NEXT:    global_store_dword v0, v1, s[8:9]
 ; GFX10-NEXT:    global_store_byte v0, v2, s[10:11]
 ; GFX10-NEXT:    s_endpgm
@@ -269,8 +288,10 @@ define amdgpu_kernel void @v_usubo_i32(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX11-NEXT:    global_load_b32 v2, v0, s[6:7]
 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-NEXT:    v_sub_co_u32 v1, s4, v1, v2
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_mov_b32_e32 v2, s4
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    global_store_b8 v0, v2, s[2:3]
@@ -311,13 +332,15 @@ define amdgpu_kernel void @v_usubo_i32_novcc(ptr addrspace(1) %out, ptr addrspac
 ; SI-NEXT:    s_mov_b32 s4, s2
 ; SI-NEXT:    s_mov_b32 s5, s3
 ; SI-NEXT:    s_waitcnt vmcnt(0)
-; SI-NEXT:    v_sub_i32_e32 v0, vcc, v0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
+; SI-NEXT:    v_sub_i32_e64 v0, s[0:1], v0, v1
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
 ; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 0
-; SI-NEXT:    s_waitcnt vmcnt(0)
+; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0)
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    ;;#ASMSTART
 ; SI-NEXT:    ;;#ASMEND
-; SI-NEXT:    buffer_store_byte v1, off, s[4:7], 0
+; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    s_endpgm
 ;
@@ -336,13 +359,15 @@ define amdgpu_kernel void @v_usubo_i32_novcc(ptr addrspace(1) %out, ptr addrspac
 ; VI-NEXT:    v_mov_b32_e32 v2, s2
 ; VI-NEXT:    v_mov_b32_e32 v3, s3
 ; VI-NEXT:    s_waitcnt vmcnt(0)
-; VI-NEXT:    v_sub_u32_e32 v4, vcc, v4, v5
-; VI-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc
+; VI-NEXT:    v_sub_u32_e64 v4, s[0:1], v4, v5
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dword v[0:1], v4
 ; VI-NEXT:    s_waitcnt vmcnt(0)
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    ;;#ASMSTART
 ; VI-NEXT:    ;;#ASMEND
-; VI-NEXT:    flat_store_byte v[2:3], v5
+; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    s_endpgm
 ;
@@ -354,13 +379,15 @@ define amdgpu_kernel void @v_usubo_i32_novcc(ptr addrspace(1) %out, ptr addrspac
 ; GFX9-NEXT:    global_load_dword v1, v0, s[12:13]
 ; GFX9-NEXT:    global_load_dword v2, v0, s[14:15]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
-; GFX9-NEXT:    v_sub_co_u32_e32 v1, vcc, v1, v2
-; GFX9-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
+; GFX9-NEXT:    v_sub_co_u32_e64 v1, s[0:1], v1, v2
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dword v0, v1, s[8:9]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-NEXT:    v_mov_b32_e32 v1, s0
 ; GFX9-NEXT:    ;;#ASMSTART
 ; GFX9-NEXT:    ;;#ASMEND
-; GFX9-NEXT:    global_store_byte v0, v2, s[10:11]
+; GFX9-NEXT:    global_store_byte v0, v1, s[10:11]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    s_endpgm
 ;
@@ -374,7 +401,9 @@ define amdgpu_kernel void @v_usubo_i32_novcc(ptr addrspace(1) %out, ptr addrspac
 ; GFX10-NEXT:    global_load_dword v2, v0, s[14:15]
 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
 ; GFX10-NEXT:    v_sub_co_u32 v1, s0, v1, v2
-; GFX10-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GFX10-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX10-NEXT:    global_store_dword v0, v1, s[8:9]
 ; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0
 ; GFX10-NEXT:    ;;#ASMSTART
@@ -393,8 +422,10 @@ define amdgpu_kernel void @v_usubo_i32_novcc(ptr addrspace(1) %out, ptr addrspac
 ; GFX11-NEXT:    global_load_b32 v2, v0, s[6:7]
 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-NEXT:    v_sub_co_u32 v1, s4, v1, v2
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_mov_b32_e32 v2, s4
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1] dlc
 ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0
 ; GFX11-NEXT:    ;;#ASMSTART
@@ -424,20 +455,22 @@ define amdgpu_kernel void @s_usubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    s_mov_b32 s11, 0xf000
 ; SI-NEXT:    s_mov_b32 s10, -1
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
-; SI-NEXT:    s_sub_u32 s4, s4, s6
-; SI-NEXT:    s_subb_u32 s5, s5, s7
+; SI-NEXT:    s_sub_u32 s6, s4, s6
+; SI-NEXT:    s_subb_u32 s7, s5, s7
+; SI-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; SI-NEXT:    s_and_b64 s[4:5], s[4:5], exec
 ; SI-NEXT:    s_mov_b32 s8, s0
 ; SI-NEXT:    s_mov_b32 s9, s1
-; SI-NEXT:    v_mov_b32_e32 v0, s4
-; SI-NEXT:    v_mov_b32_e32 v1, s5
-; SI-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; SI-NEXT:    v_mov_b32_e32 v0, s6
+; SI-NEXT:    v_mov_b32_e32 v1, s7
+; SI-NEXT:    s_cselect_b32 s4, 1, 0
 ; SI-NEXT:    s_mov_b32 s0, s2
 ; SI-NEXT:    s_mov_b32 s1, s3
 ; SI-NEXT:    s_mov_b32 s2, s10
 ; SI-NEXT:    s_mov_b32 s3, s11
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 0
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; SI-NEXT:    v_mov_b32_e32 v0, s4
 ; SI-NEXT:    buffer_store_byte v0, off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -445,17 +478,19 @@ define amdgpu_kernel void @s_usubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI:       ; %bb.0:
 ; VI-NEXT:    s_load_dwordx8 s[0:7], s[4:5], 0x24
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
+; VI-NEXT:    v_mov_b32_e32 v2, s2
+; VI-NEXT:    s_sub_u32 s2, s4, s6
+; VI-NEXT:    v_mov_b32_e32 v3, s3
+; VI-NEXT:    s_subb_u32 s3, s5, s7
 ; VI-NEXT:    v_mov_b32_e32 v0, s0
-; VI-NEXT:    s_sub_u32 s0, s4, s6
 ; VI-NEXT:    v_mov_b32_e32 v1, s1
-; VI-NEXT:    s_subb_u32 s1, s5, s7
-; VI-NEXT:    v_mov_b32_e32 v4, s0
-; VI-NEXT:    v_mov_b32_e32 v5, s1
 ; VI-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; VI-NEXT:    v_mov_b32_e32 v2, s2
-; VI-NEXT:    v_mov_b32_e32 v3, s3
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    v_mov_b32_e32 v4, s2
+; VI-NEXT:    v_mov_b32_e32 v5, s3
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dwordx2 v[0:1], v[4:5]
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_byte v[2:3], v0
 ; VI-NEXT:    s_endpgm
 ;
@@ -465,13 +500,15 @@ define amdgpu_kernel void @s_usubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    s_sub_u32 s0, s12, s14
-; GFX9-NEXT:    s_subb_u32 s1, s13, s15
+; GFX9-NEXT:    s_subb_u32 s2, s13, s15
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
-; GFX9-NEXT:    v_mov_b32_e32 v1, s1
 ; GFX9-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; GFX9-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[0:1]
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-NEXT:    v_mov_b32_e32 v1, s2
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]
-; GFX9-NEXT:    global_store_byte v2, v3, s[10:11]
+; GFX9-NEXT:    v_mov_b32_e32 v0, s0
+; GFX9-NEXT:    global_store_byte v2, v0, s[10:11]
 ; GFX9-NEXT:    s_endpgm
 ;
 ; GFX10-LABEL: s_usubo_i64:
@@ -481,10 +518,12 @@ define amdgpu_kernel void @s_usubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX10-NEXT:    s_sub_u32 s0, s12, s14
 ; GFX10-NEXT:    s_subb_u32 s1, s13, s15
+; GFX10-NEXT:    s_cselect_b32 s2, -1, 0
 ; GFX10-NEXT:    v_mov_b32_e32 v0, s0
-; GFX10-NEXT:    s_cselect_b32 s0, -1, 0
+; GFX10-NEXT:    s_and_b32 s0, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX10-NEXT:    v_mov_b32_e32 v1, s1
-; GFX10-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s0
+; GFX10-NEXT:    v_mov_b32_e32 v3, s0
 ; GFX10-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]
 ; GFX10-NEXT:    global_store_byte v2, v3, s[10:11]
 ; GFX10-NEXT:    s_endpgm
@@ -495,10 +534,12 @@ define amdgpu_kernel void @s_usubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_sub_u32 s4, s4, s6
 ; GFX11-NEXT:    s_subb_u32 s5, s5, s7
+; GFX11-NEXT:    s_cselect_b32 s6, -1, 0
 ; GFX11-NEXT:    v_mov_b32_e32 v0, s4
-; GFX11-NEXT:    s_cselect_b32 s4, -1, 0
+; GFX11-NEXT:    s_and_b32 s4, s6, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
 ; GFX11-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, s5
-; GFX11-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4
+; GFX11-NEXT:    v_mov_b32_e32 v3, s4
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
 ; GFX11-NEXT:    global_store_b8 v2, v3, s[2:3]
@@ -535,9 +576,11 @@ define amdgpu_kernel void @v_usubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_sub_i32_e32 v0, vcc, v0, v2
 ; SI-NEXT:    v_subb_u32_e32 v1, vcc, v1, v3, vcc
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 0
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -558,8 +601,10 @@ define amdgpu_kernel void @v_usubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_sub_u32_e32 v0, vcc, v0, v2
 ; VI-NEXT:    v_subb_u32_e32 v1, vcc, v1, v3, vcc
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dwordx2 v[4:5], v[0:1]
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_byte v[6:7], v0
 ; VI-NEXT:    s_endpgm
 ;
@@ -573,8 +618,10 @@ define amdgpu_kernel void @v_usubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    v_sub_co_u32_e32 v0, vcc, v0, v2
 ; GFX9-NEXT:    v_subb_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX9-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dwordx2 v4, v[0:1], s[8:9]
-; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
+; GFX9-NEXT:    v_mov_b32_e32 v0, s0
 ; GFX9-NEXT:    global_store_byte v4, v0, s[10:11]
 ; GFX9-NEXT:    s_endpgm
 ;
@@ -589,7 +636,9 @@ define amdgpu_kernel void @v_usubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
 ; GFX10-NEXT:    v_sub_co_u32 v0, vcc_lo, v0, v2
 ; GFX10-NEXT:    v_sub_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
-; GFX10-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
+; GFX10-NEXT:    s_and_b32 s0, vcc_lo, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX10-NEXT:    global_store_dwordx2 v4, v[0:1], s[8:9]
 ; GFX10-NEXT:    global_store_byte v4, v2, s[10:11]
 ; GFX10-NEXT:    s_endpgm
@@ -605,7 +654,10 @@ define amdgpu_kernel void @v_usubo_i64(ptr addrspace(1) %out, ptr addrspace(1) %
 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-NEXT:    v_sub_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-NEXT:    v_sub_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc_lo
+; GFX11-NEXT:    s_and_b32 s4, vcc_lo, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_mov_b32_e32 v2, s4
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b64 v4, v[0:1], s[0:1]
 ; GFX11-NEXT:    global_store_b8 v4, v2, s[2:3]
@@ -766,11 +818,16 @@ define amdgpu_kernel void @v_usubo_v2i32(ptr addrspace(1) %out, ptr addrspace(1)
 ; SI-NEXT:    s_mov_b32 s5, s3
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_sub_i32_e32 v1, vcc, v1, v3
-; SI-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc
-; SI-NEXT:    v_sub_i32_e32 v0, vcc, v0, v2
-; SI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
+; SI-NEXT:    v_sub_i32_e64 v0, s[0:1], v0, v2
+; SI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 0
-; SI-NEXT:    buffer_store_dwordx2 v[2:3], off, s[4:7], 0
+; SI-NEXT:    s_waitcnt expcnt(0)
+; SI-NEXT:    v_mov_b32_e32 v0, s0
+; SI-NEXT:    v_mov_b32_e32 v1, s2
+; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
 ; VI-LABEL: v_usubo_v2i32:
@@ -789,11 +846,15 @@ define amdgpu_kernel void @v_usubo_v2i32(ptr addrspace(1) %out, ptr addrspace(1)
 ; VI-NEXT:    v_mov_b32_e32 v7, s3
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_sub_u32_e32 v1, vcc, v1, v3
-; VI-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc
-; VI-NEXT:    v_sub_u32_e32 v0, vcc, v0, v2
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
+; VI-NEXT:    v_sub_u32_e64 v0, s[0:1], v0, v2
+; VI-NEXT:    s_and_b64 s[2:3], vcc, exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    flat_store_dwordx2 v[4:5], v[0:1]
-; VI-NEXT:    flat_store_dwordx2 v[6:7], v[2:3]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
+; VI-NEXT:    v_mov_b32_e32 v1, s2
+; VI-NEXT:    flat_store_dwordx2 v[6:7], v[0:1]
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX9-LABEL: v_usubo_v2i32:
@@ -805,11 +866,15 @@ define amdgpu_kernel void @v_usubo_v2i32(ptr addrspace(1) %out, ptr addrspace(1)
 ; GFX9-NEXT:    global_load_dwordx2 v[2:3], v4, s[14:15]
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-NEXT:    v_sub_co_u32_e32 v1, vcc, v1, v3
-; GFX9-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc
-; GFX9-NEXT:    v_sub_co_u32_e32 v0, vcc, v0, v2
-; GFX9-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
+; GFX9-NEXT:    v_sub_co_u32_e64 v0, s[0:1], v0, v2
+; GFX9-NEXT:    s_and_b64 s[2:3], vcc, exec
+; GFX9-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dwordx2 v4, v[0:1], s[8:9]
-; GFX9-NEXT:    global_store_dwordx2 v4, v[2:3], s[10:11]
+; GFX9-NEXT:    v_mov_b32_e32 v0, s0
+; GFX9-NEXT:    v_mov_b32_e32 v1, s2
+; GFX9-NEXT:    global_store_dwordx2 v4, v[0:1], s[10:11]
 ; GFX9-NEXT:    s_endpgm
 ;
 ; GFX10-LABEL: v_usubo_v2i32:
@@ -822,9 +887,13 @@ define amdgpu_kernel void @v_usubo_v2i32(ptr addrspace(1) %out, ptr addrspace(1)
 ; GFX10-NEXT:    global_load_dwordx2 v[2:3], v4, s[14:15]
 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
 ; GFX10-NEXT:    v_sub_co_u32 v1, s0, v1, v3
-; GFX10-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s0
-; GFX10-NEXT:    v_sub_co_u32 v0, s0, v0, v2
-; GFX10-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GFX10-NEXT:    v_sub_co_u32 v0, s1, v0, v2
+; GFX10-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v3, s0
+; GFX10-NEXT:    v_mov_b32_e32 v2, s1
 ; GFX10-NEXT:    global_store_dwordx2 v4, v[0:1], s[8:9]
 ; GFX10-NEXT:    global_store_dwordx2 v4, v[2:3], s[10:11]
 ; GFX10-NEXT:    s_endpgm
@@ -839,10 +908,13 @@ define amdgpu_kernel void @v_usubo_v2i32(ptr addrspace(1) %out, ptr addrspace(1)
 ; GFX11-NEXT:    global_load_b64 v[2:3], v4, s[6:7]
 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-NEXT:    v_sub_co_u32 v1, s4, v1, v3
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4
-; GFX11-NEXT:    v_sub_co_u32 v0, s4, v0, v2
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX11-NEXT:    v_sub_co_u32 v0, s5, v0, v2
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    s_and_b32 s5, s5, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s5, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v3, s4 :: v_dual_mov_b32 v2, s5
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b64 v4, v[0:1], s[0:1]
 ; GFX11-NEXT:    global_store_b64 v4, v[2:3], s[2:3]
@@ -872,8 +944,10 @@ define amdgpu_kernel void @s_usubo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; SI-NEXT:    s_xor_b64 s[0:1], vcc, -1
 ; SI-NEXT:  .LBB8_2: ; %exit
 ; SI-NEXT:    s_load_dwordx4 s[4:7], s[4:5], 0x9
+; SI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
 ; SI-NEXT:    s_mov_b32 s11, 0xf000
 ; SI-NEXT:    s_mov_b32 s10, -1
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    s_mov_b32 s8, s4
 ; SI-NEXT:    s_mov_b32 s9, s5
@@ -883,7 +957,7 @@ define amdgpu_kernel void @s_usubo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; SI-NEXT:    s_mov_b32 s7, s11
 ; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 0
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -900,14 +974,16 @@ define amdgpu_kernel void @s_usubo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; VI-NEXT:    s_xor_b64 s[0:1], vcc, -1
 ; VI-NEXT:  .LBB8_2: ; %exit
 ; VI-NEXT:    s_load_dwordx4 s[4:7], s[4:5], 0x24
-; VI-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[0:1]
+; VI-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    v_mov_b32_e32 v2, s5
 ; VI-NEXT:    v_mov_b32_e32 v3, s6
 ; VI-NEXT:    v_mov_b32_e32 v4, s7
 ; VI-NEXT:    flat_store_dword v[1:2], v0
-; VI-NEXT:    flat_store_byte v[3:4], v5
+; VI-NEXT:    v_mov_b32_e32 v0, s0
+; VI-NEXT:    flat_store_byte v[3:4], v0
 ; VI-NEXT:    s_endpgm
 ;
 ; GFX9-LABEL: s_usubo_clamp_bit:
@@ -923,8 +999,10 @@ define amdgpu_kernel void @s_usubo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; GFX9-NEXT:    s_xor_b64 s[0:1], vcc, -1
 ; GFX9-NEXT:  .LBB8_2: ; %exit
 ; GFX9-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x24
+; GFX9-NEXT:    s_and_b64 s[0:1], s[0:1], exec
 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0
-; GFX9-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[0:1]
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    global_store_dword v1, v0, s[8:9]
 ; GFX9-NEXT:    global_store_byte v1, v2, s[10:11]
@@ -942,8 +1020,10 @@ define amdgpu_kernel void @s_usubo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; GFX10-NEXT:    s_xor_b32 s0, s1, -1
 ; GFX10-NEXT:  .LBB8_2: ; %exit
 ; GFX10-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x24
+; GFX10-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX10-NEXT:    v_mov_b32_e32 v1, 0
-; GFX10-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GFX10-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX10-NEXT:    global_store_dword v1, v0, s[8:9]
 ; GFX10-NEXT:    global_store_byte v1, v2, s[10:11]
@@ -961,8 +1041,10 @@ define amdgpu_kernel void @s_usubo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; GFX11-NEXT:    s_xor_b32 s0, s1, -1
 ; GFX11-NEXT:  .LBB8_2: ; %exit
 ; GFX11-NEXT:    s_load_b128 s[4:7], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v1, 0
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b32 v1, v0, s[4:5]
@@ -1012,13 +1094,15 @@ define amdgpu_kernel void @v_usubo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; SI-NEXT:  .LBB9_2: ; %exit
 ; SI-NEXT:    s_mov_b32 s0, s4
 ; SI-NEXT:    s_mov_b32 s1, s5
+; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
+; SI-NEXT:    s_and_b64 s[0:1], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
 ; SI-NEXT:    s_mov_b32 s4, s6
 ; SI-NEXT:    s_mov_b32 s5, s7
 ; SI-NEXT:    s_mov_b32 s6, s2
 ; SI-NEXT:    s_mov_b32 s7, s3
-; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
 ; SI-NEXT:    s_waitcnt expcnt(0)
-; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[8:9]
+; SI-NEXT:    v_mov_b32_e32 v0, s0
 ; SI-NEXT:    buffer_store_byte v0, off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
 ;
@@ -1040,12 +1124,14 @@ define amdgpu_kernel void @v_usubo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; VI-NEXT:  ; %bb.1: ; %if
 ; VI-NEXT:    s_xor_b64 s[2:3], s[0:1], -1
 ; VI-NEXT:  .LBB9_2: ; %exit
+; VI-NEXT:    s_and_b64 s[0:1], s[2:3], exec
 ; VI-NEXT:    v_mov_b32_e32 v1, s4
 ; VI-NEXT:    v_mov_b32_e32 v2, s5
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v3, s6
 ; VI-NEXT:    v_mov_b32_e32 v4, s7
 ; VI-NEXT:    flat_store_dword v[1:2], v0
-; VI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[2:3]
+; VI-NEXT:    v_mov_b32_e32 v0, s0
 ; VI-NEXT:    flat_store_byte v[3:4], v0
 ; VI-NEXT:    s_endpgm
 ;
@@ -1064,8 +1150,10 @@ define amdgpu_kernel void @v_usubo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; GFX9-NEXT:  ; %bb.1: ; %if
 ; GFX9-NEXT:    s_xor_b64 s[2:3], s[0:1], -1
 ; GFX9-NEXT:  .LBB9_2: ; %exit
+; GFX9-NEXT:    s_and_b64 s[0:1], s[2:3], exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
 ; GFX9-NEXT:    global_store_dword v0, v1, s[8:9]
-; GFX9-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[2:3]
+; GFX9-NEXT:    v_mov_b32_e32 v1, s0
 ; GFX9-NEXT:    global_store_byte v0, v1, s[10:11]
 ; GFX9-NEXT:    s_endpgm
 ;
@@ -1085,7 +1173,9 @@ define amdgpu_kernel void @v_usubo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; GFX10-NEXT:  ; %bb.1: ; %if
 ; GFX10-NEXT:    s_xor_b32 s0, s1, -1
 ; GFX10-NEXT:  .LBB9_2: ; %exit
-; GFX10-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GFX10-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX10-NEXT:    global_store_dword v0, v1, s[8:9]
 ; GFX10-NEXT:    global_store_byte v0, v2, s[10:11]
 ; GFX10-NEXT:    s_endpgm
@@ -1106,8 +1196,10 @@ define amdgpu_kernel void @v_usubo_clamp_bit(ptr addrspace(1) %out, ptr addrspac
 ; GFX11-NEXT:  ; %bb.1: ; %if
 ; GFX11-NEXT:    s_xor_b32 s4, s5, -1
 ; GFX11-NEXT:  .LBB9_2: ; %exit
-; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    s_and_b32 s4, s4, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX11-NEXT:    v_mov_b32_e32 v2, s4
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]
 ; GFX11-NEXT:    global_store_b8 v0, v2, s[2:3]
@@ -1147,10 +1239,14 @@ define amdgpu_kernel void @usubo_carry_of_sub_borrowout_used(ptr addrspace(1) %o
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v0, s3
 ; SI-NEXT:    v_sub_i32_e32 v0, vcc, s2, v0
-; SI-NEXT:    s_sub_i32 s0, s0, s1
-; SI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
-; SI-NEXT:    v_sub_i32_e32 v1, vcc, s0, v1
-; SI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
+; SI-NEXT:    s_sub_i32 s2, s0, s1
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v1, s0
+; SI-NEXT:    v_sub_i32_e32 v1, vcc, s2, v1
+; SI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; SI-NEXT:    s_cselect_b32 s0, 1, 0
+; SI-NEXT:    v_mov_b32_e32 v2, s0
 ; SI-NEXT:    buffer_store_dword v2, off, s[4:7], 0 offset:8
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
 ; SI-NEXT:    s_endpgm
@@ -1161,12 +1257,16 @@ define amdgpu_kernel void @usubo_carry_of_sub_borrowout_used(ptr addrspace(1) %o
 ; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x24
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    v_mov_b32_e32 v0, s3
+; VI-NEXT:    s_sub_i32 s3, s0, s1
 ; VI-NEXT:    v_sub_u32_e32 v0, vcc, s2, v0
-; VI-NEXT:    s_sub_i32 s0, s0, s1
-; VI-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
-; VI-NEXT:    v_sub_u32_e32 v1, vcc, s0, v1
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
+; VI-NEXT:    v_mov_b32_e32 v1, s0
+; VI-NEXT:    v_sub_u32_e32 v1, vcc, s3, v1
+; VI-NEXT:    s_and_b64 s[0:1], vcc, exec
+; VI-NEXT:    s_cselect_b32 s0, 1, 0
 ; VI-NEXT:    v_mov_b32_e32 v3, s4
-; VI-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
+; VI-NEXT:    v_mov_b32_e32 v2, s0
 ; VI-NEXT:    v_mov_b32_e32 v4, s5
 ; VI-NEXT:    flat_store_dwordx3 v[3:4], v[0:2]
 ; VI-NEXT:    s_endpgm
@@ -1178,11 +1278,15 @@ define amdgpu_kernel void @usubo_carry_of_sub_borrowout_used(ptr addrspace(1) %o
 ; GFX9-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX9-NEXT:    v_mov_b32_e32 v0, s3
+; GFX9-NEXT:    s_sub_i32 s3, s0, s1
 ; GFX9-NEXT:    v_sub_co_u32_e32 v0, vcc, s2, v0
-; GFX9-NEXT:    s_sub_i32 s0, s0, s1
-; GFX9-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
-; GFX9-NEXT:    v_sub_co_u32_e32 v1, vcc, s0, v1
-; GFX9-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
+; GFX9-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    v_mov_b32_e32 v1, s0
+; GFX9-NEXT:    v_sub_co_u32_e32 v1, vcc, s3, v1
+; GFX9-NEXT:    s_and_b64 s[0:1], vcc, exec
+; GFX9-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX9-NEXT:    global_store_dwordx3 v3, v[0:2], s[6:7]
 ; GFX9-NEXT:    s_endpgm
 ;
@@ -1194,10 +1298,13 @@ define amdgpu_kernel void @usubo_carry_of_sub_borrowout_used(ptr addrspace(1) %o
 ; GFX10-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX10-NEXT:    v_sub_co_u32 v0, s2, s2, s3
-; GFX10-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
 ; GFX10-NEXT:    s_sub_i32 s0, s0, s1
-; GFX10-NEXT:    v_sub_co_u32 v1, s0, s0, v1
-; GFX10-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GFX10-NEXT:    s_and_b32 s1, s2, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX10-NEXT:    v_sub_co_u32 v1, s0, s0, s1
+; GFX10-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-NEXT:    v_mov_b32_e32 v2, s0
 ; GFX10-NEXT:    global_store_dwordx3 v3, v[0:2], s[6:7]
 ; GFX10-NEXT:    s_endpgm
 ;
@@ -1206,16 +1313,16 @@ define amdgpu_kernel void @usubo_carry_of_sub_borrowout_used(ptr addrspace(1) %o
 ; GFX11-NEXT:    s_clause 0x1
 ; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2c
 ; GFX11-NEXT:    s_load_b64 s[4:5], s[4:5], 0x24
-; GFX11-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX11-NEXT:    v_sub_co_u32 v0, s2, s2, s3
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
 ; GFX11-NEXT:    s_sub_i32 s0, s0, s1
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
-; GFX11-NEXT:    v_sub_co_u32 v1, s0, s0, v1
-; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
-; GFX11-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0
+; GFX11-NEXT:    s_and_b32 s1, s2, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX11-NEXT:    v_sub_co_u32 v1, s0, s0, s1
+; GFX11-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX11-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX11-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_mov_b32 v2, s0
 ; GFX11-NEXT:    global_store_b96 v3, v[0:2], s[4:5]
 ; GFX11-NEXT:    s_endpgm
   %zwo    = call {i32, i1} @llvm.usub.with.overflow.i32(i32 %z, i32 %w)

diff  --git a/llvm/test/CodeGen/AMDGPU/v_cmp_gfx11.ll b/llvm/test/CodeGen/AMDGPU/v_cmp_gfx11.ll
index 05bcb9e920158..de401c02bf605 100644
--- a/llvm/test/CodeGen/AMDGPU/v_cmp_gfx11.ll
+++ b/llvm/test/CodeGen/AMDGPU/v_cmp_gfx11.ll
@@ -5,12 +5,12 @@ define amdgpu_kernel void @icmp_test() {
 ; CHECK-LABEL: icmp_test:
 ; CHECK:       ; %bb.0: ; %entry
 ; CHECK-NEXT:    v_cmp_eq_u16_e64 s[0:1], 0, 0
-; CHECK-NEXT:    v_mov_b32_e32 v1, 0
+; CHECK-NEXT:    v_mov_b32_e32 v0, 0
 ; CHECK-NEXT:    s_cmp_eq_u64 s[0:1], 0
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
 ; CHECK-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    ds_store_b32 v1, v0
+; CHECK-NEXT:    v_mov_b32_e32 v1, s0
+; CHECK-NEXT:    ds_store_b32 v0, v1
 ; CHECK-NEXT:    s_endpgm
 entry:
   %icmp.intr = tail call i64 @llvm.amdgcn.icmp.i64.i16(i16 0, i16 0, i32 32)
@@ -24,15 +24,15 @@ define amdgpu_kernel void @fcmp_test(half %x, half %y) {
 ; CHECK-LABEL: fcmp_test:
 ; CHECK:       ; %bb.0: ; %entry
 ; CHECK-NEXT:    s_load_b32 s0, s[4:5], 0x0
-; CHECK-NEXT:    v_mov_b32_e32 v1, 0
+; CHECK-NEXT:    v_mov_b32_e32 v0, 0
 ; CHECK-NEXT:    s_waitcnt lgkmcnt(0)
 ; CHECK-NEXT:    s_lshr_b32 s1, s0, 16
 ; CHECK-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
 ; CHECK-NEXT:    v_cmp_le_f16_e64 s[0:1], s0, s1
 ; CHECK-NEXT:    s_cmp_eq_u64 s[0:1], 0
-; CHECK-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; CHECK-NEXT:    ds_store_b32 v1, v0
+; CHECK-NEXT:    s_cselect_b32 s0, 1, 0
+; CHECK-NEXT:    v_mov_b32_e32 v1, s0
+; CHECK-NEXT:    ds_store_b32 v0, v1
 ; CHECK-NEXT:    s_endpgm
 entry:
   %fcmp.intr = tail call i64 @llvm.amdgcn.fcmp.i64.f16(half %x, half %y, i32 5)

diff  --git a/llvm/test/CodeGen/AMDGPU/wave32.ll b/llvm/test/CodeGen/AMDGPU/wave32.ll
index c165cc7d547ca..3c6714a2bea68 100644
--- a/llvm/test/CodeGen/AMDGPU/wave32.ll
+++ b/llvm/test/CodeGen/AMDGPU/wave32.ll
@@ -143,7 +143,9 @@ define amdgpu_kernel void @test_vopc_class(ptr addrspace(1) %out, float %x) #0 {
 ; GFX1032-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX1032-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX1032-NEXT:    v_cmp_class_f32_e64 s2, s2, 0x204
-; GFX1032-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s2
+; GFX1032-NEXT:    s_and_b32 s2, s2, exec_lo
+; GFX1032-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1032-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX1032-NEXT:    global_store_dword v0, v1, s[0:1]
 ; GFX1032-NEXT:    s_endpgm
 ;
@@ -155,7 +157,9 @@ define amdgpu_kernel void @test_vopc_class(ptr addrspace(1) %out, float %x) #0 {
 ; GFX1064-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX1064-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX1064-NEXT:    v_cmp_class_f32_e64 s[2:3], s2, 0x204
-; GFX1064-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[2:3]
+; GFX1064-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX1064-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1064-NEXT:    v_mov_b32_e32 v1, s2
 ; GFX1064-NEXT:    global_store_dword v0, v1, s[0:1]
 ; GFX1064-NEXT:    s_endpgm
   %fabs = tail call float @llvm.fabs.f32(float %x)
@@ -737,7 +741,7 @@ define amdgpu_kernel void @test_udiv64(ptr addrspace(1) %arg) #0 {
 ; GFX1032-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX1032-NEXT:    s_or_b64 s[4:5], s[2:3], s[0:1]
 ; GFX1032-NEXT:    s_cmp_lg_u32 s5, 0
-; GFX1032-NEXT:    s_cbranch_scc0 .LBB15_4
+; GFX1032-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX1032-NEXT:  ; %bb.1:
 ; GFX1032-NEXT:    v_cvt_f32_u32_e32 v0, s0
 ; GFX1032-NEXT:    v_cvt_f32_u32_e32 v1, s1
@@ -847,9 +851,16 @@ define amdgpu_kernel void @test_udiv64(ptr addrspace(1) %arg) #0 {
 ; GFX1032-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX1032-NEXT:    s_cselect_b32 s5, s13, s5
 ; GFX1032-NEXT:    s_cselect_b32 s4, s11, s4
-; GFX1032-NEXT:    s_andn2_b32 vcc_lo, exec_lo, s8
-; GFX1032-NEXT:    s_cbranch_vccnz .LBB15_3
+; GFX1032-NEXT:    s_branch .LBB15_3
 ; GFX1032-NEXT:  .LBB15_2:
+; GFX1032-NEXT:    s_mov_b32 s8, -1
+; GFX1032-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; GFX1032-NEXT:  .LBB15_3: ; %Flow
+; GFX1032-NEXT:    s_and_b32 s1, s8, exec_lo
+; GFX1032-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX1032-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX1032-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX1032-NEXT:  ; %bb.4:
 ; GFX1032-NEXT:    v_cvt_f32_u32_e32 v0, s0
 ; GFX1032-NEXT:    s_sub_i32 s3, 0, s0
 ; GFX1032-NEXT:    s_mov_b32 s5, 0
@@ -871,15 +882,12 @@ define amdgpu_kernel void @test_udiv64(ptr addrspace(1) %arg) #0 {
 ; GFX1032-NEXT:    s_add_i32 s3, s1, 1
 ; GFX1032-NEXT:    s_cmp_ge_u32 s2, s0
 ; GFX1032-NEXT:    s_cselect_b32 s4, s3, s1
-; GFX1032-NEXT:  .LBB15_3: ; %bb.split
+; GFX1032-NEXT:  .LBB15_5: ; %bb.split
 ; GFX1032-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX1032-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX1032-NEXT:    v_mov_b32_e32 v1, s5
 ; GFX1032-NEXT:    global_store_dwordx2 v2, v[0:1], s[6:7] offset:16
 ; GFX1032-NEXT:    s_endpgm
-; GFX1032-NEXT:  .LBB15_4:
-; GFX1032-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; GFX1032-NEXT:    s_branch .LBB15_2
 ;
 ; GFX1064-LABEL: test_udiv64:
 ; GFX1064:       ; %bb.0: ; %bb
@@ -889,7 +897,7 @@ define amdgpu_kernel void @test_udiv64(ptr addrspace(1) %arg) #0 {
 ; GFX1064-NEXT:    s_waitcnt lgkmcnt(0)
 ; GFX1064-NEXT:    s_or_b64 s[4:5], s[2:3], s[0:1]
 ; GFX1064-NEXT:    s_cmp_lg_u32 s5, 0
-; GFX1064-NEXT:    s_cbranch_scc0 .LBB15_4
+; GFX1064-NEXT:    s_cbranch_scc0 .LBB15_2
 ; GFX1064-NEXT:  ; %bb.1:
 ; GFX1064-NEXT:    v_cvt_f32_u32_e32 v0, s0
 ; GFX1064-NEXT:    v_cvt_f32_u32_e32 v1, s1
@@ -990,6 +998,7 @@ define amdgpu_kernel void @test_udiv64(ptr addrspace(1) %arg) #0 {
 ; GFX1064-NEXT:    s_cselect_b32 s14, s16, s14
 ; GFX1064-NEXT:    s_cmp_lg_u64 s[4:5], 0
 ; GFX1064-NEXT:    s_subb_u32 s3, s3, s8
+; GFX1064-NEXT:    s_mov_b64 s[8:9], 0
 ; GFX1064-NEXT:    s_cmp_ge_u32 s3, s1
 ; GFX1064-NEXT:    s_cselect_b32 s4, -1, 0
 ; GFX1064-NEXT:    s_cmp_ge_u32 s12, s0
@@ -999,8 +1008,16 @@ define amdgpu_kernel void @test_udiv64(ptr addrspace(1) %arg) #0 {
 ; GFX1064-NEXT:    s_cmp_lg_u32 s1, 0
 ; GFX1064-NEXT:    s_cselect_b32 s5, s14, s11
 ; GFX1064-NEXT:    s_cselect_b32 s4, s13, s10
-; GFX1064-NEXT:    s_cbranch_execnz .LBB15_3
+; GFX1064-NEXT:    s_branch .LBB15_3
 ; GFX1064-NEXT:  .LBB15_2:
+; GFX1064-NEXT:    s_mov_b64 s[8:9], -1
+; GFX1064-NEXT:    ; implicit-def: $sgpr4_sgpr5
+; GFX1064-NEXT:  .LBB15_3: ; %Flow
+; GFX1064-NEXT:    s_and_b64 s[8:9], s[8:9], exec
+; GFX1064-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX1064-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX1064-NEXT:    s_cbranch_scc1 .LBB15_5
+; GFX1064-NEXT:  ; %bb.4:
 ; GFX1064-NEXT:    v_cvt_f32_u32_e32 v0, s0
 ; GFX1064-NEXT:    s_sub_i32 s3, 0, s0
 ; GFX1064-NEXT:    s_mov_b32 s5, 0
@@ -1022,15 +1039,12 @@ define amdgpu_kernel void @test_udiv64(ptr addrspace(1) %arg) #0 {
 ; GFX1064-NEXT:    s_add_i32 s3, s1, 1
 ; GFX1064-NEXT:    s_cmp_ge_u32 s2, s0
 ; GFX1064-NEXT:    s_cselect_b32 s4, s3, s1
-; GFX1064-NEXT:  .LBB15_3: ; %bb.split
+; GFX1064-NEXT:  .LBB15_5: ; %bb.split
 ; GFX1064-NEXT:    v_mov_b32_e32 v0, s4
 ; GFX1064-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX1064-NEXT:    v_mov_b32_e32 v1, s5
 ; GFX1064-NEXT:    global_store_dwordx2 v2, v[0:1], s[6:7] offset:16
 ; GFX1064-NEXT:    s_endpgm
-; GFX1064-NEXT:  .LBB15_4:
-; GFX1064-NEXT:    ; implicit-def: $sgpr4_sgpr5
-; GFX1064-NEXT:    s_branch .LBB15_2
 bb:
   %tmp = getelementptr inbounds i64, ptr addrspace(1) %arg, i64 1
   %tmp1 = load i64, ptr addrspace(1) %tmp, align 8
@@ -1791,13 +1805,19 @@ define amdgpu_ps <4 x float> @test_loop_vcc(<4 x float> %in) #0 {
 ; GFX1032-NEXT:    v_mov_b32_e32 v5, v1
 ; GFX1032-NEXT:    v_mov_b32_e32 v4, v0
 ; GFX1032-NEXT:    v_mov_b32_e32 v8, 0
-; GFX1032-NEXT:    s_branch .LBB33_2
+; GFX1032-NEXT:    s_branch .LBB33_3
 ; GFX1032-NEXT:  .LBB33_1: ; %body
-; GFX1032-NEXT:    ; in Loop: Header=BB33_2 Depth=1
+; GFX1032-NEXT:    ; in Loop: Header=BB33_3 Depth=1
 ; GFX1032-NEXT:    image_sample v[4:7], v0, s[0:7], s[0:3] dmask:0xf dim:SQ_RSRC_IMG_1D
 ; GFX1032-NEXT:    v_add_f32_e32 v8, 2.0, v8
-; GFX1032-NEXT:    s_cbranch_execz .LBB33_4
-; GFX1032-NEXT:  .LBB33_2: ; %loop
+; GFX1032-NEXT:    s_mov_b32 s1, 0
+; GFX1032-NEXT:  .LBB33_2: ; %Flow
+; GFX1032-NEXT:    ; in Loop: Header=BB33_3 Depth=1
+; GFX1032-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX1032-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX1032-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX1032-NEXT:    s_cbranch_scc0 .LBB33_5
+; GFX1032-NEXT:  .LBB33_3: ; %loop
 ; GFX1032-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1032-NEXT:    v_cmp_lt_f32_e32 vcc_lo, 0x40e00000, v8
 ; GFX1032-NEXT:    s_waitcnt vmcnt(0)
@@ -1806,10 +1826,12 @@ define amdgpu_ps <4 x float> @test_loop_vcc(<4 x float> %in) #0 {
 ; GFX1032-NEXT:    v_mov_b32_e32 v2, v6
 ; GFX1032-NEXT:    v_mov_b32_e32 v3, v7
 ; GFX1032-NEXT:    s_cbranch_vccz .LBB33_1
-; GFX1032-NEXT:  ; %bb.3:
+; GFX1032-NEXT:  ; %bb.4: ; in Loop: Header=BB33_3 Depth=1
+; GFX1032-NEXT:    s_mov_b32 s1, -1
 ; GFX1032-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7
 ; GFX1032-NEXT:    ; implicit-def: $vgpr8
-; GFX1032-NEXT:  .LBB33_4: ; %break
+; GFX1032-NEXT:    s_branch .LBB33_2
+; GFX1032-NEXT:  .LBB33_5: ; %break
 ; GFX1032-NEXT:    s_and_b32 exec_lo, exec_lo, s0
 ; GFX1032-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1032-NEXT:    ; return to shader part epilog
@@ -1823,13 +1845,19 @@ define amdgpu_ps <4 x float> @test_loop_vcc(<4 x float> %in) #0 {
 ; GFX1064-NEXT:    v_mov_b32_e32 v5, v1
 ; GFX1064-NEXT:    v_mov_b32_e32 v4, v0
 ; GFX1064-NEXT:    v_mov_b32_e32 v8, 0
-; GFX1064-NEXT:    s_branch .LBB33_2
+; GFX1064-NEXT:    s_branch .LBB33_3
 ; GFX1064-NEXT:  .LBB33_1: ; %body
-; GFX1064-NEXT:    ; in Loop: Header=BB33_2 Depth=1
+; GFX1064-NEXT:    ; in Loop: Header=BB33_3 Depth=1
 ; GFX1064-NEXT:    image_sample v[4:7], v0, s[0:7], s[0:3] dmask:0xf dim:SQ_RSRC_IMG_1D
 ; GFX1064-NEXT:    v_add_f32_e32 v8, 2.0, v8
-; GFX1064-NEXT:    s_cbranch_execz .LBB33_4
-; GFX1064-NEXT:  .LBB33_2: ; %loop
+; GFX1064-NEXT:    s_mov_b64 s[2:3], 0
+; GFX1064-NEXT:  .LBB33_2: ; %Flow
+; GFX1064-NEXT:    ; in Loop: Header=BB33_3 Depth=1
+; GFX1064-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX1064-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX1064-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX1064-NEXT:    s_cbranch_scc0 .LBB33_5
+; GFX1064-NEXT:  .LBB33_3: ; %loop
 ; GFX1064-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX1064-NEXT:    v_cmp_lt_f32_e32 vcc, 0x40e00000, v8
 ; GFX1064-NEXT:    s_waitcnt vmcnt(0)
@@ -1838,10 +1866,12 @@ define amdgpu_ps <4 x float> @test_loop_vcc(<4 x float> %in) #0 {
 ; GFX1064-NEXT:    v_mov_b32_e32 v2, v6
 ; GFX1064-NEXT:    v_mov_b32_e32 v3, v7
 ; GFX1064-NEXT:    s_cbranch_vccz .LBB33_1
-; GFX1064-NEXT:  ; %bb.3:
+; GFX1064-NEXT:  ; %bb.4: ; in Loop: Header=BB33_3 Depth=1
+; GFX1064-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX1064-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7
 ; GFX1064-NEXT:    ; implicit-def: $vgpr8
-; GFX1064-NEXT:  .LBB33_4: ; %break
+; GFX1064-NEXT:    s_branch .LBB33_2
+; GFX1064-NEXT:  .LBB33_5: ; %break
 ; GFX1064-NEXT:    s_and_b64 exec, exec, s[0:1]
 ; GFX1064-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1064-NEXT:    ; return to shader part epilog

diff  --git a/llvm/test/CodeGen/AMDGPU/widen-vselect-and-mask.ll b/llvm/test/CodeGen/AMDGPU/widen-vselect-and-mask.ll
index e00e9c42ea63d..35ddb7e30a2d8 100644
--- a/llvm/test/CodeGen/AMDGPU/widen-vselect-and-mask.ll
+++ b/llvm/test/CodeGen/AMDGPU/widen-vselect-and-mask.ll
@@ -12,16 +12,18 @@ define amdgpu_kernel void @widen_vselect_and_mask_v4f64(<4 x double> %arg) #0 {
 ; GCN-NEXT:    v_mov_b32_e32 v0, 0
 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
 ; GCN-NEXT:    s_mov_b32 s2, -1
+; GCN-NEXT:    v_mov_b32_e32 v1, v0
 ; GCN-NEXT:    v_mov_b32_e32 v2, v0
-; GCN-NEXT:    v_mov_b32_e32 v3, v0
 ; GCN-NEXT:    v_cmp_u_f64_e64 s[4:5], s[0:1], s[0:1]
 ; GCN-NEXT:    v_cmp_neq_f64_e64 s[0:1], s[0:1], 0
-; GCN-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s[4:5]
-; GCN-NEXT:    v_cmp_lt_i32_e32 vcc, -1, v1
-; GCN-NEXT:    s_and_b64 s[0:1], vcc, s[0:1]
+; GCN-NEXT:    s_and_b64 s[4:5], s[4:5], exec
+; GCN-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; GCN-NEXT:    s_cmp_gt_i32 s5, -1
+; GCN-NEXT:    s_cselect_b64 s[4:5], -1, 0
+; GCN-NEXT:    s_and_b64 s[0:1], s[4:5], s[0:1]
 ; GCN-NEXT:    s_and_b64 s[0:1], s[0:1], exec
 ; GCN-NEXT:    s_cselect_b32 s4, 0x3ff00000, 0
-; GCN-NEXT:    v_mov_b32_e32 v1, v0
+; GCN-NEXT:    v_mov_b32_e32 v3, v0
 ; GCN-NEXT:    s_mov_b64 s[0:1], 16
 ; GCN-NEXT:    s_mov_b32 s3, 0xf000
 ; GCN-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
@@ -57,14 +59,18 @@ define amdgpu_kernel void @widen_vselect_and_mask_v4i64(<4 x i64> %arg) #0 {
 ; GCN-NEXT:    s_mov_b64 s[4:5], 0
 ; GCN-NEXT:    v_cmp_eq_u64_e64 s[6:7], s[0:1], 0
 ; GCN-NEXT:    v_cmp_ne_u64_e64 s[0:1], s[0:1], 0
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[6:7]
-; GCN-NEXT:    v_cmp_lt_i32_e32 vcc, -1, v0
-; GCN-NEXT:    s_and_b64 s[0:1], vcc, s[0:1]
-; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; GCN-NEXT:    s_and_b64 s[6:7], s[6:7], exec
+; GCN-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GCN-NEXT:    s_cmp_gt_i32 s7, -1
+; GCN-NEXT:    s_cselect_b64 s[6:7], -1, 0
+; GCN-NEXT:    s_and_b64 s[0:1], s[6:7], s[0:1]
+; GCN-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GCN-NEXT:    s_cselect_b32 s6, 1, 0
 ; GCN-NEXT:    v_mov_b32_e32 v2, v1
 ; GCN-NEXT:    v_mov_b32_e32 v3, v1
 ; GCN-NEXT:    v_mov_b32_e32 v4, v1
 ; GCN-NEXT:    s_mov_b64 s[0:1], 16
+; GCN-NEXT:    v_mov_b32_e32 v0, s6
 ; GCN-NEXT:    s_mov_b32 s6, s2
 ; GCN-NEXT:    s_mov_b32 s7, s3
 ; GCN-NEXT:    buffer_store_dwordx4 v[1:4], off, s[0:3], 0

diff  --git a/llvm/test/CodeGen/AMDGPU/workitem-intrinsic-opts.ll b/llvm/test/CodeGen/AMDGPU/workitem-intrinsic-opts.ll
index 84ccb6366013b..c234bb6d681f1 100644
--- a/llvm/test/CodeGen/AMDGPU/workitem-intrinsic-opts.ll
+++ b/llvm/test/CodeGen/AMDGPU/workitem-intrinsic-opts.ll
@@ -180,8 +180,8 @@ define i1 @workgroup_zero() {
 ; DAGISEL-GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; DAGISEL-GFX8-NEXT:    s_or_b32 s4, s12, s13
 ; DAGISEL-GFX8-NEXT:    s_or_b32 s4, s4, s14
-; DAGISEL-GFX8-NEXT:    s_cselect_b64 s[4:5], 0, -1
-; DAGISEL-GFX8-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
+; DAGISEL-GFX8-NEXT:    s_cselect_b32 s4, 0, 1
+; DAGISEL-GFX8-NEXT:    v_mov_b32_e32 v0, s4
 ; DAGISEL-GFX8-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; DAGISEL-GFX942-LABEL: workgroup_zero:
@@ -189,8 +189,8 @@ define i1 @workgroup_zero() {
 ; DAGISEL-GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; DAGISEL-GFX942-NEXT:    s_or_b32 s0, s12, s13
 ; DAGISEL-GFX942-NEXT:    s_or_b32 s0, s0, s14
-; DAGISEL-GFX942-NEXT:    s_cselect_b64 s[0:1], 0, -1
-; DAGISEL-GFX942-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
+; DAGISEL-GFX942-NEXT:    s_cselect_b32 s0, 0, 1
+; DAGISEL-GFX942-NEXT:    v_mov_b32_e32 v0, s0
 ; DAGISEL-GFX942-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; DAGISEL-GFX12-LABEL: workgroup_zero:
@@ -206,9 +206,9 @@ define i1 @workgroup_zero() {
 ; DAGISEL-GFX12-NEXT:    s_or_b32 s0, ttmp9, s0
 ; DAGISEL-GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; DAGISEL-GFX12-NEXT:    s_or_b32 s0, s0, s1
-; DAGISEL-GFX12-NEXT:    s_cselect_b32 s0, 0, -1
+; DAGISEL-GFX12-NEXT:    s_cselect_b32 s0, 0, 1
 ; DAGISEL-GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; DAGISEL-GFX12-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
+; DAGISEL-GFX12-NEXT:    v_mov_b32_e32 v0, s0
 ; DAGISEL-GFX12-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GISEL-GFX8-LABEL: workgroup_zero:
@@ -262,77 +262,41 @@ entry:
 
 ; (workgroup_id_x | workgroup_id_y | workgroup_id_z) != 0
 define i1 @workgroup_nonzero() {
-; DAGISEL-GFX8-LABEL: workgroup_nonzero:
-; DAGISEL-GFX8:       ; %bb.0: ; %entry
-; DAGISEL-GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; DAGISEL-GFX8-NEXT:    s_or_b32 s4, s12, s13
-; DAGISEL-GFX8-NEXT:    s_or_b32 s4, s4, s14
-; DAGISEL-GFX8-NEXT:    s_cselect_b64 s[4:5], -1, 0
-; DAGISEL-GFX8-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
-; DAGISEL-GFX8-NEXT:    s_setpc_b64 s[30:31]
-;
-; DAGISEL-GFX942-LABEL: workgroup_nonzero:
-; DAGISEL-GFX942:       ; %bb.0: ; %entry
-; DAGISEL-GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; DAGISEL-GFX942-NEXT:    s_or_b32 s0, s12, s13
-; DAGISEL-GFX942-NEXT:    s_or_b32 s0, s0, s14
-; DAGISEL-GFX942-NEXT:    s_cselect_b64 s[0:1], -1, 0
-; DAGISEL-GFX942-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]
-; DAGISEL-GFX942-NEXT:    s_setpc_b64 s[30:31]
-;
-; DAGISEL-GFX12-LABEL: workgroup_nonzero:
-; DAGISEL-GFX12:       ; %bb.0: ; %entry
-; DAGISEL-GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
-; DAGISEL-GFX12-NEXT:    s_wait_expcnt 0x0
-; DAGISEL-GFX12-NEXT:    s_wait_samplecnt 0x0
-; DAGISEL-GFX12-NEXT:    s_wait_bvhcnt 0x0
-; DAGISEL-GFX12-NEXT:    s_wait_kmcnt 0x0
-; DAGISEL-GFX12-NEXT:    s_and_b32 s0, ttmp7, 0xffff
-; DAGISEL-GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; DAGISEL-GFX12-NEXT:    s_lshr_b32 s1, ttmp7, 16
-; DAGISEL-GFX12-NEXT:    s_or_b32 s0, ttmp9, s0
-; DAGISEL-GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; DAGISEL-GFX12-NEXT:    s_or_b32 s0, s0, s1
-; DAGISEL-GFX12-NEXT:    s_cselect_b32 s0, -1, 0
-; DAGISEL-GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; DAGISEL-GFX12-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0
-; DAGISEL-GFX12-NEXT:    s_setpc_b64 s[30:31]
-;
-; GISEL-GFX8-LABEL: workgroup_nonzero:
-; GISEL-GFX8:       ; %bb.0: ; %entry
-; GISEL-GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GISEL-GFX8-NEXT:    s_or_b32 s4, s12, s13
-; GISEL-GFX8-NEXT:    s_or_b32 s4, s4, s14
-; GISEL-GFX8-NEXT:    s_cselect_b32 s4, 1, 0
-; GISEL-GFX8-NEXT:    v_mov_b32_e32 v0, s4
-; GISEL-GFX8-NEXT:    s_setpc_b64 s[30:31]
+; GFX8-LABEL: workgroup_nonzero:
+; GFX8:       ; %bb.0: ; %entry
+; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX8-NEXT:    s_or_b32 s4, s12, s13
+; GFX8-NEXT:    s_or_b32 s4, s4, s14
+; GFX8-NEXT:    s_cselect_b32 s4, 1, 0
+; GFX8-NEXT:    v_mov_b32_e32 v0, s4
+; GFX8-NEXT:    s_setpc_b64 s[30:31]
 ;
-; GISEL-GFX942-LABEL: workgroup_nonzero:
-; GISEL-GFX942:       ; %bb.0: ; %entry
-; GISEL-GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GISEL-GFX942-NEXT:    s_or_b32 s0, s12, s13
-; GISEL-GFX942-NEXT:    s_or_b32 s0, s0, s14
-; GISEL-GFX942-NEXT:    s_cselect_b32 s0, 1, 0
-; GISEL-GFX942-NEXT:    v_mov_b32_e32 v0, s0
-; GISEL-GFX942-NEXT:    s_setpc_b64 s[30:31]
+; GFX942-LABEL: workgroup_nonzero:
+; GFX942:       ; %bb.0: ; %entry
+; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-NEXT:    s_or_b32 s0, s12, s13
+; GFX942-NEXT:    s_or_b32 s0, s0, s14
+; GFX942-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX942-NEXT:    v_mov_b32_e32 v0, s0
+; GFX942-NEXT:    s_setpc_b64 s[30:31]
 ;
-; GISEL-GFX12-LABEL: workgroup_nonzero:
-; GISEL-GFX12:       ; %bb.0: ; %entry
-; GISEL-GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
-; GISEL-GFX12-NEXT:    s_wait_expcnt 0x0
-; GISEL-GFX12-NEXT:    s_wait_samplecnt 0x0
-; GISEL-GFX12-NEXT:    s_wait_bvhcnt 0x0
-; GISEL-GFX12-NEXT:    s_wait_kmcnt 0x0
-; GISEL-GFX12-NEXT:    s_and_b32 s0, ttmp7, 0xffff
-; GISEL-GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GISEL-GFX12-NEXT:    s_lshr_b32 s1, ttmp7, 16
-; GISEL-GFX12-NEXT:    s_or_b32 s0, ttmp9, s0
-; GISEL-GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GISEL-GFX12-NEXT:    s_or_b32 s0, s0, s1
-; GISEL-GFX12-NEXT:    s_cselect_b32 s0, 1, 0
-; GISEL-GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
-; GISEL-GFX12-NEXT:    v_mov_b32_e32 v0, s0
-; GISEL-GFX12-NEXT:    s_setpc_b64 s[30:31]
+; GFX12-LABEL: workgroup_nonzero:
+; GFX12:       ; %bb.0: ; %entry
+; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-NEXT:    s_wait_expcnt 0x0
+; GFX12-NEXT:    s_wait_samplecnt 0x0
+; GFX12-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-NEXT:    s_wait_kmcnt 0x0
+; GFX12-NEXT:    s_and_b32 s0, ttmp7, 0xffff
+; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-NEXT:    s_lshr_b32 s1, ttmp7, 16
+; GFX12-NEXT:    s_or_b32 s0, ttmp9, s0
+; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-NEXT:    s_or_b32 s0, s0, s1
+; GFX12-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-NEXT:    v_mov_b32_e32 v0, s0
+; GFX12-NEXT:    s_setpc_b64 s[30:31]
 entry:
   %0 = tail call i32 @llvm.amdgcn.workgroup.id.x()
   %1 = tail call i32 @llvm.amdgcn.workgroup.id.y()

diff  --git a/llvm/test/CodeGen/AMDGPU/wqm.ll b/llvm/test/CodeGen/AMDGPU/wqm.ll
index 219a46f37f415..10ec1adee4001 100644
--- a/llvm/test/CodeGen/AMDGPU/wqm.ll
+++ b/llvm/test/CodeGen/AMDGPU/wqm.ll
@@ -1935,13 +1935,19 @@ define amdgpu_ps <4 x float> @test_loop_vcc(<4 x float> %in) nounwind {
 ; GFX9-W64-NEXT:    s_wqm_b64 exec, exec
 ; GFX9-W64-NEXT:    v_mov_b32_e32 v8, 0
 ; GFX9-W64-NEXT:    s_mov_b32 s4, 0x40e00000
-; GFX9-W64-NEXT:    s_branch .LBB35_2
+; GFX9-W64-NEXT:    s_branch .LBB35_3
 ; GFX9-W64-NEXT:  .LBB35_1: ; %body
-; GFX9-W64-NEXT:    ; in Loop: Header=BB35_2 Depth=1
+; GFX9-W64-NEXT:    ; in Loop: Header=BB35_3 Depth=1
 ; GFX9-W64-NEXT:    image_sample v[4:7], v0, s[0:7], s[0:3] dmask:0xf
 ; GFX9-W64-NEXT:    v_add_f32_e32 v8, 2.0, v8
-; GFX9-W64-NEXT:    s_cbranch_execz .LBB35_4
-; GFX9-W64-NEXT:  .LBB35_2: ; %loop
+; GFX9-W64-NEXT:    s_mov_b64 s[2:3], 0
+; GFX9-W64-NEXT:  .LBB35_2: ; %Flow
+; GFX9-W64-NEXT:    ; in Loop: Header=BB35_3 Depth=1
+; GFX9-W64-NEXT:    s_and_b64 s[2:3], s[2:3], exec
+; GFX9-W64-NEXT:    s_cselect_b32 s2, 1, 0
+; GFX9-W64-NEXT:    s_cmp_lg_u32 s2, 1
+; GFX9-W64-NEXT:    s_cbranch_scc0 .LBB35_5
+; GFX9-W64-NEXT:  .LBB35_3: ; %loop
 ; GFX9-W64-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX9-W64-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-W64-NEXT:    v_mov_b32_e32 v0, v4
@@ -1950,10 +1956,12 @@ define amdgpu_ps <4 x float> @test_loop_vcc(<4 x float> %in) nounwind {
 ; GFX9-W64-NEXT:    v_mov_b32_e32 v2, v6
 ; GFX9-W64-NEXT:    v_mov_b32_e32 v3, v7
 ; GFX9-W64-NEXT:    s_cbranch_vccz .LBB35_1
-; GFX9-W64-NEXT:  ; %bb.3:
+; GFX9-W64-NEXT:  ; %bb.4: ; in Loop: Header=BB35_3 Depth=1
+; GFX9-W64-NEXT:    s_mov_b64 s[2:3], -1
 ; GFX9-W64-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7
 ; GFX9-W64-NEXT:    ; implicit-def: $vgpr8
-; GFX9-W64-NEXT:  .LBB35_4: ; %break
+; GFX9-W64-NEXT:    s_branch .LBB35_2
+; GFX9-W64-NEXT:  .LBB35_5: ; %break
 ; GFX9-W64-NEXT:    s_and_b64 exec, exec, s[0:1]
 ; GFX9-W64-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-W64-NEXT:    ; return to shader part epilog
@@ -1966,14 +1974,20 @@ define amdgpu_ps <4 x float> @test_loop_vcc(<4 x float> %in) nounwind {
 ; GFX10-W32-NEXT:    s_and_b32 exec_lo, exec_lo, s0
 ; GFX10-W32-NEXT:    image_store v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm
 ; GFX10-W32-NEXT:    s_wqm_b32 exec_lo, exec_lo
-; GFX10-W32-NEXT:    s_branch .LBB35_2
+; GFX10-W32-NEXT:    s_branch .LBB35_3
 ; GFX10-W32-NEXT:    .p2align 6
 ; GFX10-W32-NEXT:  .LBB35_1: ; %body
-; GFX10-W32-NEXT:    ; in Loop: Header=BB35_2 Depth=1
+; GFX10-W32-NEXT:    ; in Loop: Header=BB35_3 Depth=1
 ; GFX10-W32-NEXT:    image_sample v[0:3], v4, s[0:7], s[0:3] dmask:0xf dim:SQ_RSRC_IMG_1D
 ; GFX10-W32-NEXT:    v_add_f32_e32 v8, 2.0, v8
-; GFX10-W32-NEXT:    s_cbranch_execz .LBB35_4
-; GFX10-W32-NEXT:  .LBB35_2: ; %loop
+; GFX10-W32-NEXT:    s_mov_b32 s1, 0
+; GFX10-W32-NEXT:  .LBB35_2: ; %Flow
+; GFX10-W32-NEXT:    ; in Loop: Header=BB35_3 Depth=1
+; GFX10-W32-NEXT:    s_and_b32 s1, s1, exec_lo
+; GFX10-W32-NEXT:    s_cselect_b32 s1, 1, 0
+; GFX10-W32-NEXT:    s_cmp_lg_u32 s1, 1
+; GFX10-W32-NEXT:    s_cbranch_scc0 .LBB35_5
+; GFX10-W32-NEXT:  .LBB35_3: ; %loop
 ; GFX10-W32-NEXT:    ; =>This Inner Loop Header: Depth=1
 ; GFX10-W32-NEXT:    v_cmp_lt_f32_e32 vcc_lo, 0x40e00000, v8
 ; GFX10-W32-NEXT:    s_waitcnt vmcnt(0)
@@ -1982,10 +1996,12 @@ define amdgpu_ps <4 x float> @test_loop_vcc(<4 x float> %in) nounwind {
 ; GFX10-W32-NEXT:    v_mov_b32_e32 v5, v1
 ; GFX10-W32-NEXT:    v_mov_b32_e32 v4, v0
 ; GFX10-W32-NEXT:    s_cbranch_vccz .LBB35_1
-; GFX10-W32-NEXT:  ; %bb.3:
+; GFX10-W32-NEXT:  ; %bb.4: ; in Loop: Header=BB35_3 Depth=1
+; GFX10-W32-NEXT:    s_mov_b32 s1, -1
 ; GFX10-W32-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
 ; GFX10-W32-NEXT:    ; implicit-def: $vgpr8
-; GFX10-W32-NEXT:  .LBB35_4: ; %break
+; GFX10-W32-NEXT:    s_branch .LBB35_2
+; GFX10-W32-NEXT:  .LBB35_5: ; %break
 ; GFX10-W32-NEXT:    s_and_b32 exec_lo, exec_lo, s0
 ; GFX10-W32-NEXT:    s_waitcnt vmcnt(0)
 ; GFX10-W32-NEXT:    v_mov_b32_e32 v0, v4
@@ -2182,15 +2198,21 @@ define amdgpu_ps <4 x float> @test_scc(i32 inreg %sel, i32 %idx) #1 {
 ; GFX9-W64-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX9-W64-NEXT:    v_mov_b32_e32 v1, 1
 ; GFX9-W64-NEXT:    image_sample v[0:3], v[0:1], s[0:7], s[0:3] dmask:0xf
-; GFX9-W64-NEXT:    s_cbranch_execz .LBB39_3
-; GFX9-W64-NEXT:    s_branch .LBB39_4
+; GFX9-W64-NEXT:    s_mov_b64 s[0:1], 0
+; GFX9-W64-NEXT:    s_branch .LBB39_3
 ; GFX9-W64-NEXT:  .LBB39_2:
+; GFX9-W64-NEXT:    s_mov_b64 s[0:1], -1
 ; GFX9-W64-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX9-W64-NEXT:  .LBB39_3: ; %if
+; GFX9-W64-NEXT:  .LBB39_3: ; %Flow
+; GFX9-W64-NEXT:    s_and_b64 s[0:1], s[0:1], exec
+; GFX9-W64-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX9-W64-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX9-W64-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX9-W64-NEXT:  ; %bb.4: ; %if
 ; GFX9-W64-NEXT:    s_waitcnt vmcnt(0)
 ; GFX9-W64-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX9-W64-NEXT:    image_sample v[0:3], v0, s[0:7], s[0:3] dmask:0xf
-; GFX9-W64-NEXT:  .LBB39_4: ; %end
+; GFX9-W64-NEXT:  .LBB39_5: ; %end
 ; GFX9-W64-NEXT:    s_and_b64 exec, exec, s[2:3]
 ; GFX9-W64-NEXT:    v_mov_b32_e32 v5, 1.0
 ; GFX9-W64-NEXT:    buffer_store_dword v5, v4, s[0:3], 0 idxen
@@ -2208,15 +2230,21 @@ define amdgpu_ps <4 x float> @test_scc(i32 inreg %sel, i32 %idx) #1 {
 ; GFX10-W32-NEXT:    v_mov_b32_e32 v1, 1
 ; GFX10-W32-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX10-W32-NEXT:    image_sample v[0:3], v[0:1], s[0:7], s[0:3] dmask:0xf dim:SQ_RSRC_IMG_2D
-; GFX10-W32-NEXT:    s_cbranch_execz .LBB39_3
-; GFX10-W32-NEXT:    s_branch .LBB39_4
+; GFX10-W32-NEXT:    s_mov_b32 s0, 0
+; GFX10-W32-NEXT:    s_branch .LBB39_3
 ; GFX10-W32-NEXT:  .LBB39_2:
+; GFX10-W32-NEXT:    s_mov_b32 s0, -1
 ; GFX10-W32-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
-; GFX10-W32-NEXT:  .LBB39_3: ; %if
+; GFX10-W32-NEXT:  .LBB39_3: ; %Flow
+; GFX10-W32-NEXT:    s_and_b32 s0, s0, exec_lo
+; GFX10-W32-NEXT:    s_cselect_b32 s0, 1, 0
+; GFX10-W32-NEXT:    s_cmp_lg_u32 s0, 1
+; GFX10-W32-NEXT:    s_cbranch_scc1 .LBB39_5
+; GFX10-W32-NEXT:  ; %bb.4: ; %if
 ; GFX10-W32-NEXT:    s_waitcnt vmcnt(0)
 ; GFX10-W32-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX10-W32-NEXT:    image_sample v[0:3], v0, s[0:7], s[0:3] dmask:0xf dim:SQ_RSRC_IMG_1D
-; GFX10-W32-NEXT:  .LBB39_4: ; %end
+; GFX10-W32-NEXT:  .LBB39_5: ; %end
 ; GFX10-W32-NEXT:    s_and_b32 exec_lo, exec_lo, s1
 ; GFX10-W32-NEXT:    v_mov_b32_e32 v5, 1.0
 ; GFX10-W32-NEXT:    buffer_store_dword v5, v4, s[0:3], 0 idxen

diff  --git a/llvm/test/CodeGen/AMDGPU/xor.ll b/llvm/test/CodeGen/AMDGPU/xor.ll
index 92280b9ad8acf..fb05b3c77932c 100644
--- a/llvm/test/CodeGen/AMDGPU/xor.ll
+++ b/llvm/test/CodeGen/AMDGPU/xor.ll
@@ -552,29 +552,33 @@ define amdgpu_kernel void @xor_cf(ptr addrspace(1) %out, ptr addrspace(1) %in, i
 ; SI-NEXT:    s_waitcnt lgkmcnt(0)
 ; SI-NEXT:    v_cmp_ne_u64_e64 s[10:11], s[4:5], 0
 ; SI-NEXT:    s_and_b64 vcc, exec, s[10:11]
-; SI-NEXT:    s_cbranch_vccz .LBB14_4
+; SI-NEXT:    s_cbranch_vccz .LBB14_2
 ; SI-NEXT:  ; %bb.1: ; %else
 ; SI-NEXT:    s_mov_b32 s15, 0xf000
 ; SI-NEXT:    s_mov_b32 s14, -1
 ; SI-NEXT:    s_mov_b32 s12, s2
 ; SI-NEXT:    s_mov_b32 s13, s3
 ; SI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[12:15], 0
-; SI-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
-; SI-NEXT:    s_cbranch_vccnz .LBB14_3
-; SI-NEXT:  .LBB14_2: ; %if
+; SI-NEXT:    s_branch .LBB14_3
+; SI-NEXT:  .LBB14_2:
+; SI-NEXT:    s_mov_b64 s[8:9], -1
+; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; SI-NEXT:  .LBB14_3: ; %Flow
+; SI-NEXT:    s_and_b64 s[2:3], s[8:9], exec
+; SI-NEXT:    s_cselect_b32 s2, 1, 0
+; SI-NEXT:    s_cmp_lg_u32 s2, 1
+; SI-NEXT:    s_cbranch_scc1 .LBB14_5
+; SI-NEXT:  ; %bb.4: ; %if
 ; SI-NEXT:    s_xor_b64 s[2:3], s[4:5], s[6:7]
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    v_mov_b32_e32 v0, s2
 ; SI-NEXT:    v_mov_b32_e32 v1, s3
-; SI-NEXT:  .LBB14_3: ; %endif
+; SI-NEXT:  .LBB14_5: ; %endif
 ; SI-NEXT:    s_mov_b32 s3, 0xf000
 ; SI-NEXT:    s_mov_b32 s2, -1
 ; SI-NEXT:    s_waitcnt vmcnt(0)
 ; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
 ; SI-NEXT:    s_endpgm
-; SI-NEXT:  .LBB14_4:
-; SI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; SI-NEXT:    s_branch .LBB14_2
 ;
 ; VI-LABEL: xor_cf:
 ; VI:       ; %bb.0: ; %entry
@@ -582,27 +586,31 @@ define amdgpu_kernel void @xor_cf(ptr addrspace(1) %out, ptr addrspace(1) %in, i
 ; VI-NEXT:    s_mov_b64 s[8:9], 0
 ; VI-NEXT:    s_waitcnt lgkmcnt(0)
 ; VI-NEXT:    s_cmp_lg_u64 s[4:5], 0
-; VI-NEXT:    s_cbranch_scc0 .LBB14_4
+; VI-NEXT:    s_cbranch_scc0 .LBB14_2
 ; VI-NEXT:  ; %bb.1: ; %else
 ; VI-NEXT:    v_mov_b32_e32 v0, s2
 ; VI-NEXT:    v_mov_b32_e32 v1, s3
 ; VI-NEXT:    flat_load_dwordx2 v[0:1], v[0:1]
-; VI-NEXT:    s_andn2_b64 vcc, exec, s[8:9]
-; VI-NEXT:    s_cbranch_vccnz .LBB14_3
-; VI-NEXT:  .LBB14_2: ; %if
+; VI-NEXT:    s_branch .LBB14_3
+; VI-NEXT:  .LBB14_2:
+; VI-NEXT:    s_mov_b64 s[8:9], -1
+; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
+; VI-NEXT:  .LBB14_3: ; %Flow
+; VI-NEXT:    s_and_b64 s[2:3], s[8:9], exec
+; VI-NEXT:    s_cselect_b32 s2, 1, 0
+; VI-NEXT:    s_cmp_lg_u32 s2, 1
+; VI-NEXT:    s_cbranch_scc1 .LBB14_5
+; VI-NEXT:  ; %bb.4: ; %if
 ; VI-NEXT:    s_xor_b64 s[2:3], s[4:5], s[6:7]
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    v_mov_b32_e32 v0, s2
 ; VI-NEXT:    v_mov_b32_e32 v1, s3
-; VI-NEXT:  .LBB14_3: ; %endif
+; VI-NEXT:  .LBB14_5: ; %endif
 ; VI-NEXT:    v_mov_b32_e32 v2, s0
 ; VI-NEXT:    v_mov_b32_e32 v3, s1
 ; VI-NEXT:    s_waitcnt vmcnt(0)
 ; VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
 ; VI-NEXT:    s_endpgm
-; VI-NEXT:  .LBB14_4:
-; VI-NEXT:    ; implicit-def: $vgpr0_vgpr1
-; VI-NEXT:    s_branch .LBB14_2
 entry:
   %0 = icmp eq i64 %a, 0
   br i1 %0, label %if, label %else

diff  --git a/llvm/test/CodeGen/AMDGPU/zero_extend.ll b/llvm/test/CodeGen/AMDGPU/zero_extend.ll
index f0f8eaa7ab0de..41142b5aba023 100644
--- a/llvm/test/CodeGen/AMDGPU/zero_extend.ll
+++ b/llvm/test/CodeGen/AMDGPU/zero_extend.ll
@@ -19,7 +19,7 @@ entry:
 }
 
 ; GCN-LABEL: {{^}}s_cmp_zext_i1_to_i32
-; GCN: v_cndmask_b32
+; GCN: s_cselect_b32 s{{[0-9]+}}, 1, 0
 define amdgpu_kernel void @s_cmp_zext_i1_to_i32(ptr addrspace(1) %out, i32 %a, i32 %b) #0 {
 entry:
   %tmp0 = icmp eq i32 %a, %b
@@ -36,9 +36,8 @@ define amdgpu_kernel void @s_arg_zext_i1_to_i64(ptr addrspace(1) %out, i1 zeroex
 }
 
 ; GCN-LABEL: {{^}}s_cmp_zext_i1_to_i64:
-; GCN-DAG: s_mov_b32 s{{[0-9]+}}, 0
 ; GCN-DAG: s_cmp_eq_u32
-; GCN:     v_cndmask_b32
+; GCN:     s_cselect_b64 s[{{[0-9:]+}}], 1, 0
 define amdgpu_kernel void @s_cmp_zext_i1_to_i64(ptr addrspace(1) %out, i32 %a, i32 %b) #0 {
   %cmp = icmp eq i32 %a, %b
   %ext = zext i1 %cmp to i64
@@ -55,8 +54,8 @@ define amdgpu_kernel void @s_cmp_zext_i1_to_i64(ptr addrspace(1) %out, i32 %a, i
 ; GCN-DAG: s_and_b32 [[MASK_B:s[0-9]+]], [[B]], 0xffff{{$}}
 ; VI: s_cmp_eq_u32 [[MASK_B]], [[MASK_A]]
 ; SI: s_cmp_eq_u32 [[MASK_A]], [[MASK_B]]
-; GCN: s_cselect_b64 [[CC:s\[[0-9:]+\]]], -1, 0
-; GCN: v_cndmask_b32_e64 [[RESULT:v[0-9]+]], 0, 1, [[CC]]
+; GCN: s_cselect_b32 [[SRESULT:s[0-9]+]], 1, 0
+; GCN: v_mov_b32_e32 [[RESULT:v[0-9]+]], [[SRESULT]]
 ; GCN: buffer_store_short [[RESULT]]
 define amdgpu_kernel void @s_cmp_zext_i1_to_i16(ptr addrspace(1) %out, [8 x i32], i16 zeroext %a, [8 x i32], i16 zeroext %b) #0 {
   %tmp0 = icmp eq i16 %a, %b


        


More information about the llvm-commits mailing list